diff --git a/.codeclimate.yml b/.codeclimate.yml deleted file mode 100644 index 8e9f399..0000000 --- a/.codeclimate.yml +++ /dev/null @@ -1,4 +0,0 @@ -exclude_patterns: - - doc/** - - dist/** - - test/** diff --git a/.commitlintrc.js b/.commitlintrc.js deleted file mode 100644 index df70888..0000000 --- a/.commitlintrc.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - extends: ['@js-library'] -}; diff --git a/.esdoc.json b/.esdoc.json deleted file mode 100644 index 3b27817..0000000 --- a/.esdoc.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "source": "./src", - "destination": "./gh-pages", - "debug": false, - "index": "./README.md", - "package": "./package.json", - "plugins": [ - { - "name": "esdoc-standard-plugin", - "option": { - "accessor": { - "access": [ - "public", - "protected", - "private" - ], - "autoPrivate": true - }, - "brand": { - "title": "@aureooms/js-integer" - }, - "test": { - "type": "ava", - "source": "./test/src" - }, - "manual": { - "files": [ - "./doc/manual/overview.md", - "./doc/manual/installation.md", - "./doc/manual/usage.md", - "./doc/manual/example.md" - ] - } - } - }, - { - "name": "esdoc-inject-style-plugin", - "option": { - "enable": true, - "styles": [ - "./doc/css/style.css" - ] - } - }, - { - "name": "esdoc-inject-script-plugin", - "option": { - "enable": true, - "scripts": [ - "./doc/scripts/header.js" - ] - } - } - ] -} diff --git a/.fixpackrc b/.fixpackrc deleted file mode 100644 index 7fcc422..0000000 --- a/.fixpackrc +++ /dev/null @@ -1,72 +0,0 @@ -{ - "files": [ - "package.json" - ], - "quiet": false, - "required": [ - "name", - "version" - ], - "requiredOnPrivate": [], - "sortToTop": [ - "name", - "description", - "version", - "license", - "author", - "homepage", - "repository", - "bugs", - "keywords", - "sideEffects", - "type", - "source", - "main", - "module", - "umd:main", - "unpkg", - "exports", - "files", - "scripts", - "bundledDependencies", - "dependencies", - "optionalDependencies", - "peerDependencies", - "peerDependenciesMeta", - "devDependencies" - ], - "sortedSubItems": [ - "keywords", - "exports", - "files", - "scripts", - "bundledDependencies", - "dependencies", - "optionalDependencies", - "peerDependencies", - "peerDependenciesMeta", - "devDependencies" - ], - "warn": [ - "description", - "author", - "repository", - "keywords", - "main", - "bugs", - "homepage", - "license", - "files" - ], - "warnOnPrivate": [ - "name", - "version", - "description", - "main" - ], - "dryRun": false, - "wipe": false, - "indent": null, - "newLine": null, - "finalNewLine": null -} diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml deleted file mode 100644 index a111ed9..0000000 --- a/.github/workflows/gh-pages.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Build and Deploy GitHub pages -on: - release: - types: - - created -jobs: - build-and-deploy: - runs-on: ubuntu-latest - steps: - - name: Checkout 🛎️ - uses: actions/checkout@v2.3.4 - - - name: Install 🔧 - run: npm install - - - name: Build 🏗️ - run: npm run build-gh-pages - - - name: Deploy 🚀 - uses: JamesIves/github-pages-deploy-action@4.1.0 - with: - branch: gh-pages - folder: gh-pages diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 11b4d0c..0000000 --- a/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -# lock file -!yarn.lock - -# Generated files -/dist - -# Dependency directory -node_modules -jspm_packages - -# Coverage directory used by nyc -/coverage -/.nyc_output - -# Documentation -/gh-pages diff --git a/.husky/.gitignore b/.husky/.gitignore deleted file mode 100644 index 31354ec..0000000 --- a/.husky/.gitignore +++ /dev/null @@ -1 +0,0 @@ -_ diff --git a/.husky/commit-msg b/.husky/commit-msg deleted file mode 100755 index 600e372..0000000 --- a/.husky/commit-msg +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - -function ask () { - - # This is a general-purpose function to ask Yes/No questions in Bash, either - # with or without a default answer. It keeps repeating the question until it - # gets a valid answer. - - # http://djm.me/ask - - if [ "${2:-}" = "Y" ]; then - prompt="Y/n" - default=Y - elif [ "${2:-}" = "N" ]; then - prompt="y/N" - default=N - else - prompt="y/n" - default= - fi - - while true; do - - # Ask the question (not using "read -p" as it uses stderr not stdout) - echo -n "$1 [$prompt] " - - # Read the answer (use /dev/tty in case stdin is redirected from somewhere else) - read REPLY ./cc-test-reporter - - chmod +x ./cc-test-reporter - - ./cc-test-reporter before-build - -script: - - npm run travis - -after_script: - - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT - -after_success: - - bash <(curl -s https://codecov.io/bash) || true - - coveralls < coverage/lcov.info || true diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 58777e3..0000000 --- a/LICENSE +++ /dev/null @@ -1,661 +0,0 @@ -GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU Affero General Public License is a free, copyleft license for -software and other kinds of works, specifically designed to ensure -cooperation with the community in the case of network server software. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -our General Public Licenses are intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - Developers that use our General Public Licenses protect your rights -with two steps: (1) assert copyright on the software, and (2) offer -you this License which gives you legal permission to copy, distribute -and/or modify the software. - - A secondary benefit of defending all users' freedom is that -improvements made in alternate versions of the program, if they -receive widespread use, become available for other developers to -incorporate. Many developers of free software are heartened and -encouraged by the resulting cooperation. However, in the case of -software used on network servers, this result may fail to come about. -The GNU General Public License permits making a modified version and -letting the public access it on a server without ever releasing its -source code to the public. - - The GNU Affero General Public License is designed specifically to -ensure that, in such cases, the modified source code becomes available -to the community. It requires the operator of a network server to -provide the source code of the modified version running there to the -users of that server. Therefore, public use of a modified version, on -a publicly accessible server, gives the public access to the source -code of the modified version. - - An older license, called the Affero General Public License and -published by Affero, was designed to accomplish similar goals. This is -a different license, not a version of the Affero GPL, but Affero has -released a new version of the Affero GPL which permits relicensing under -this license. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU Affero General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Remote Network Interaction; Use with the GNU General Public License. - - Notwithstanding any other provision of this License, if you modify the -Program, your modified version must prominently offer all users -interacting with it remotely through a computer network (if your version -supports such interaction) an opportunity to receive the Corresponding -Source of your version by providing access to the Corresponding Source -from a network server at no charge, through some standard or customary -means of facilitating copying of software. This Corresponding Source -shall include the Corresponding Source for any work covered by version 3 -of the GNU General Public License that is incorporated pursuant to the -following paragraph. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the work with which it is combined will remain governed by version -3 of the GNU General Public License. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU Affero General Public License from time to time. Such new versions -will be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU Affero General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU Affero General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU Affero General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If your software can interact with users remotely through a computer -network, you should also make sure that it provides a way for users to -get its source. For example, if your program is a web application, its -interface could display a "Source" link that leads users to an archive -of the code. There are many ways you could offer source, and different -solutions will be better for different programs; see section 13 for the -specific requirements. - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU AGPL, see -. diff --git a/README.md b/README.md deleted file mode 100644 index 709ac2c..0000000 --- a/README.md +++ /dev/null @@ -1,57 +0,0 @@ -:zzz: [@aureooms/js-integer](https://make-github-pseudonymous-again.github.io/js-integer) -== - -

- -The Zahlen symbol -
- -User:Alejo2083 - -/ -CC BY-SA 3.0 -

- -Integers for JavaScript. -See [docs](https://make-github-pseudonymous-again.github.io/js-integer). -Parent is [@aureooms/js-algorithms](https://github.com/make-github-pseudonymous-again/js-algorithms). - -```js -import { ZZ } from '@aureooms/js-integer' ; -const a = ZZ.from( '2983928392839289387' ) ; -const b = ZZ.from( '-302940923028393' ) ; -a.mul( b ).toString( ) ; // '-903954021577363596419770144565091' -``` - -[![License](https://img.shields.io/github/license/make-github-pseudonymous-again/js-integer.svg)](https://raw.githubusercontent.com/make-github-pseudonymous-again/js-integer/main/LICENSE) -[![Version](https://img.shields.io/npm/v/@aureooms/js-integer.svg)](https://www.npmjs.org/package/@aureooms/js-integer) -[![Build](https://img.shields.io/travis/make-github-pseudonymous-again/js-integer/main.svg)](https://travis-ci.com/make-github-pseudonymous-again/js-integer/branches) -[![Dependencies](https://img.shields.io/david/make-github-pseudonymous-again/js-integer.svg)](https://david-dm.org/make-github-pseudonymous-again/js-integer) -[![Dev dependencies](https://img.shields.io/david/dev/make-github-pseudonymous-again/js-integer.svg)](https://david-dm.org/make-github-pseudonymous-again/js-integer?type=dev) -[![GitHub issues](https://img.shields.io/github/issues/make-github-pseudonymous-again/js-integer.svg)](https://github.com/make-github-pseudonymous-again/js-integer/issues) -[![Downloads](https://img.shields.io/npm/dm/@aureooms/js-integer.svg)](https://www.npmjs.org/package/@aureooms/js-integer) - -[![Code issues](https://img.shields.io/codeclimate/issues/make-github-pseudonymous-again/js-integer.svg)](https://codeclimate.com/github/make-github-pseudonymous-again/js-integer/issues) -[![Code maintainability](https://img.shields.io/codeclimate/maintainability/make-github-pseudonymous-again/js-integer.svg)](https://codeclimate.com/github/make-github-pseudonymous-again/js-integer/trends/churn) -[![Code coverage (cov)](https://img.shields.io/codecov/c/gh/make-github-pseudonymous-again/js-integer/main.svg)](https://codecov.io/gh/make-github-pseudonymous-again/js-integer) -[![Code technical debt](https://img.shields.io/codeclimate/tech-debt/make-github-pseudonymous-again/js-integer.svg)](https://codeclimate.com/github/make-github-pseudonymous-again/js-integer/trends/technical_debt) -[![Documentation](https://make-github-pseudonymous-again.github.io/js-integer/badge.svg)](https://make-github-pseudonymous-again.github.io/js-integer/source.html) -[![Package size](https://img.shields.io/bundlephobia/minzip/@aureooms/js-integer)](https://bundlephobia.com/result?p=@aureooms/js-integer) - -## :baby: Children - -The current underlying implementation uses big endian order. There is no -alternative for the moment. - - - [ ] [BigInt](https://developer.mozilla.org/en-US/docs/Glossary/BigInt) - - [x] [@aureooms/js-integer-big-endian](https://github.com/make-github-pseudonymous-again/js-integer-big-endian) - - [ ] [@aureooms/js-integer-little-endian](https://github.com/make-github-pseudonymous-again/js-integer-little-endian) - -## :scroll: Reference - - - [The GNU Multiple Precision Arithmetic Library](https://gmplib.org/) - - https://gmplib.org/gmp-man-6.0.0a.pdf - - https://en.wikipedia.org/wiki/Sch%C3%B6nhage%E2%80%93Strassen_algorithm - -## :link: Links - - [Similar work on GitHub](https://github.com/search?l=JavaScript&o=desc&q=bigint&s=stars&type=Repositories) diff --git a/_benchmark/.gitignore b/_benchmark/.gitignore deleted file mode 100644 index 5f0a3a7..0000000 --- a/_benchmark/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/yarn.lock diff --git a/_benchmark/index.js b/_benchmark/index.js deleted file mode 100644 index bd59650..0000000 --- a/_benchmark/index.js +++ /dev/null @@ -1,497 +0,0 @@ -/* eslint-disable new-cap */ - -const ArgumentParser = require('argparse').ArgumentParser; -const benchmark = require('benchmark'); -const crypto = require('crypto'); -const XorShift128Plus = require('xorshift.js').XorShift128Plus; - -const {ZZ, DEFAULT_DISPLAY_BASE, DEFAULT_REPRESENTATION_BASE} = require('..'); -const bn = require('bn.js'); -let bignum; -try { - bignum = require('bignum'); -} catch (error) { - console.log('Load bignum error: ' + error.message.split('\n')[0]); -} - -const sjcl = require('eccjs').sjcl.bn; -const bigi = require('bigi'); -const BigInteger = require('js-big-integer').BigInteger; -const JSBI = require('jsbi'); -const SilentMattBigInteger = require('biginteger').BigInteger; - -const parser = new ArgumentParser(); -parser.addArgument(['-s', '--seed'], { - defaultValue: process.env.SEED || crypto.randomBytes(16).toString('hex'), -}); -parser.addArgument(['-l', '--libs'], {defaultValue: '.'}); -parser.addArgument(['-b', '--benches'], {defaultValue: '.'}); -parser.addArgument(['-f', '--fast'], {action: 'storeTrue'}); -const args = parser.parseArgs(); -const seed = args.seed; -const filter = new RegExp(args.libs, 'i'); -const re = new RegExp(args.benches, 'i'); -const fast = args.fast; - -const benchmarks = []; - -console.log('args:', args); -console.log('DEFAULT_DISPLAY_BASE:', DEFAULT_DISPLAY_BASE); -console.log('DEFAULT_REPRESENTATION_BASE:', DEFAULT_REPRESENTATION_BASE); - -const prng = new XorShift128Plus(seed); - -const NFIXTURES = 25; -const fixtures = []; -let findex = 0; -function findexRefresh() { - if (++findex === fixtures.length) findex = 0; -} - -const k256 = 'fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f'; - -function add(op, ...args) { - const key = op + '-' + args.join('-'); - benchmarks.push({ - name: key, - start() { - const suite = new benchmark.Suite(); - - console.log('Benchmarking: ' + key); - - for (const name of Object.keys(fns)) { - if (!filter.test(name)) continue; - if (name === 'BigInt' && typeof BigInt === 'undefined') continue; - if (name === 'bignum' && bignum === undefined) continue; - - const opFn = fns[name][op]; - if (!opFn) continue; - if (!(opFn instanceof Function)) - throw new Error(`opFN is not a function: ${opFn}`); - const fixture = fixtures[findex][name]; - - if (args.length === 1) { - const x = fixture.args[args[0]]; - const outs = fixture.outs; - const testFn = () => { - outs[key] = opFn(x); - }; - - suite.add(name + '#' + key, testFn, { - onStart: findexRefresh, - onCycle: findexRefresh, - }); - } else if (args.length === 2) { - const a = fixture.args[args[0]]; - const b = fixture.args[args[1]]; - const outs = fixture.outs; - const testFn = () => { - outs[key] = opFn(a, b); - }; - - suite.add(name + '#' + key, testFn, { - onStart: findexRefresh, - onCycle: findexRefresh, - }); - } else throw new Error('Too many args.'); - } - - suite - .on('cycle', (event) => { - console.log(String(event.target)); - }) - .on('complete', function () { - console.log('------------------------'); - console.log('Fastest is ' + this.find('fastest').name); - }) - .run(); - - console.log('========================'); - }, - }); -} - -function start() { - for (const b of benchmarks.filter((b) => { - return re.test(b.name); - })) { - b.start(); - } -} - -if (fast) { - console.log('Running in fast mode...'); - benchmark.options.minTime = 0.3; - benchmark.options.maxTime = 1; - benchmark.options.minSamples = 3; -} else { - benchmark.options.minTime = 3; - benchmark.options.minSamples = 10; -} - -const fns = { - BigInt: { - from10: (s) => BigInt(s), - from16: (s) => BigInt('0x' + s), - to10: (x) => x.toString(10), - to16: (x) => x.toString(16), - add: (a, b) => a + b, - sub: (a, b) => a - b, - mul: (a, b) => a * b, - sqr: (x) => x ** 2n, - pow: (a, b) => a ** b, - div: (a, b) => a / b, - mod: (a, b) => { - const remainder = a % b; - return remainder < 0 ? remainder + b : remainder; - }, - - toRed: (x) => x % k256_BigInt, - fromRed: (x) => x, - sqrm: (x) => x ** 2 % k256_BigInt, - powm: (a, b) => a ** b % k256_BigInt, - }, - 'bn.js': { - from10: (s) => new bn(s, 10), - from16: (s) => new bn(s, 16), - to10: (x) => x.toString(10), - to16: (x) => x.toString(16), - add: (a, b) => a.add(b), - sub: (a, b) => a.sub(b), - mul: (a, b) => a.mul(b), - sqr: (x) => x.mul(x), - pow: (a, b) => a.pow(b), - div: (a, b) => a.div(b), - mod: (a, b) => a.mod(b), - - toRed: (x) => x.toRed(bn.red('k256')), - fromRed: (x) => x.fromRed(), - sqrm: (x) => x.redSqr(), - powm: (a, b) => a.redPow(b), - invm: (x) => x.redInvm(), - - gcd: (a, b) => a.gcd(b), - egcd: (a, b) => a.egcd(b), - }, - '@aureooms/js-integer': { - from10: (s) => ZZ.from(s, 10), - from16: (s) => ZZ.from(s, 16), - to10: (x) => x.toString(10), - to16: (x) => x.toString(16), - add: (a, b) => a.add(b), - sub: (a, b) => a.sub(b), - mul: (a, b) => a.mul(b), - sqr: (x) => x.square(), - pow: (a, b) => a.pow(b), - div: (a, b) => a.div(b), - mod: (a, b) => a.mod(b), - - gcd: (a, b) => a.gcd(b), - egcd: (a, b) => a.egcd(b), - }, - - jsbi: { - from10: (s) => JSBI.BigInt(s), - from16: (s) => JSBI.BigInt('0x' + s), - to10: (x) => x.toString(10), - to16: (x) => x.toString(16), - add: (a, b) => JSBI.add(a, b), - sub: (a, b) => JSBI.subtract(a, b), - mul: (a, b) => JSBI.multiply(a, b), - sqr: (x) => JSBI.multiply(x, x), - pow: (a, b) => JSBI.exponentiate(a, b), - div: (a, b) => JSBI.divide(a, b), - mod: (a, b) => { - const remainder = JSBI.remainder(a, b); - return JSBI.lessThan(remainder, JSBI.BigInt(0)) - ? JSBI.add(remainder, b) - : remainder; - }, - }, - yaffle: { - from10: (s) => BigInteger.BigInt(s), - from16: (s) => BigInteger.BigInt('0x' + s), - to10: (x) => x.toString(10), - to16: (x) => x.toString(16), - add: (a, b) => BigInteger.add(a, b), - sub: (a, b) => BigInteger.subtract(a, b), - mul: (a, b) => BigInteger.multiply(a, b), - sqr: (x) => BigInteger.multiply(x, x), - pow: (a, b) => BigInteger.exponentiate(a, b), - div: (a, b) => BigInteger.divide(a, b), - mod: (a, b) => { - const remainder = BigInteger.remainder(a, b); - return BigInteger.lessThan(remainder, BigInteger.BigInt(0)) - ? BigInteger.add(remainder, b) - : remainder; - }, - }, - bigi: { - from10: (s) => new bigi(s, 10), - from16: (s) => new bigi(s, 16), - to10: (x) => x.toString(10), - to16: (x) => x.toString(16), - add: (a, b) => a.add(b), - sub: (a, b) => a.subtract(b), - mul: (a, b) => a.multiply(b), - sqr: (x) => x.square(), - pow: (a, b) => a.pow(b), - div: (a, b) => a.divide(b), - mod: (a, b) => a.remainder(b), - - gcd: (a, b) => a.gcd(b), - }, - 'silentmatt-biginteger': { - from10: (s) => SilentMattBigInteger.parse(s, 10), - from16: (s) => SilentMattBigInteger.parse(s, 16), - to10: (x) => x.toString(10), - to16: (x) => x.toString(16).toLowerCase(), - add: (a, b) => a.add(b), - sub: (a, b) => a.subtract(b), - mul: (a, b) => a.multiply(b), - sqr: (x) => x.square(x), - pow: (a, b) => a.pow(b), - div: (a, b) => a.quotient(b), - mod: (a, b) => { - const remainder = a.remainder(b); - return remainder.isNegative() ? remainder.add(b) : remainder; - }, - }, - bignum: { - from10: (s) => new bignum(s, 10), - from16: (s) => new bignum(s, 16), - to10: (x) => x.toString(10), - to16: (x) => x.toString(16).replace(/^0+/, ''), - add: (a, b) => a.add(b), - sub: (a, b) => a.sub(b), - mul: (a, b) => a.mul(b), - sqr: (x) => x.mul(x), - pow: (a, b) => a.pow(b), - div: (a, b) => a.div(b), - mod: (a, b) => a.mod(b), - fromRed: (x) => x, - toRed: (x) => x.mod(k256_bignum), - powm: (a, b) => a.powm(b, k256_bignum), - sqrm: (x) => x.pown(2, k256_bignum), - invm: (x) => x.invertm(k256_bignum), - }, - sjcl: { - from10: undefined, - from16: (s) => new sjcl(s), - to10: undefined, - to16: (x) => x.toString().slice(2), - add: (a, b) => a.add(b), - sub: (a, b) => a.sub(b), - mul: (a, b) => a.mul(b), - sqr: (x) => x.mul(x), - pow: (a, b) => a.power(b), - fromRed: (x) => x, - toRed: (x) => new sjcl.prime.p256k(x), - invm: (x) => x.inverseMod(k256_sjcl), - sqrm: (x) => x.square().fullReduce(), - }, -}; - -const k256_BigInt = fns.BigInt.from16(k256); -const k256_bignum = fns.bignum.from16(k256); -const k256_sjcl = fns.sjcl.from16(k256); - -fns.BigInt.k256 = k256_BigInt; -fns.bignum.k256 = k256_bignum; -fns.sjcl.k256 = k256_sjcl; -fns['bn.js'].k256 = 'k256'; - -function newFixture() { - const fixture = {}; - - const _a32 = prng.randomBytes(32).toString('hex'); - const _b32 = prng.randomBytes(32).toString('hex'); - const _a64 = prng.randomBytes(64).toString('hex'); - const _b64 = prng.randomBytes(64).toString('hex'); - const _a128 = prng.randomBytes(128).toString('hex'); - const _b128 = prng.randomBytes(128).toString('hex'); - const _a256 = prng.randomBytes(256).toString('hex'); - const _b256 = prng.randomBytes(256).toString('hex'); - const _a512 = prng.randomBytes(512).toString('hex'); - const _b512 = prng.randomBytes(512).toString('hex'); - const _a768 = prng.randomBytes(768).toString('hex'); - const _b768 = prng.randomBytes(768).toString('hex'); - const _a1024 = prng.randomBytes(1024).toString('hex'); - const _b1024 = prng.randomBytes(1024).toString('hex'); - const _a2048 = prng.randomBytes(2048).toString('hex'); - const _b2048 = prng.randomBytes(2048).toString('hex'); - const _a4096 = prng.randomBytes(4096).toString('hex'); - const _b4096 = prng.randomBytes(4096).toString('hex'); - const _a8192 = prng.randomBytes(8192).toString('hex'); - const _b8192 = prng.randomBytes(8192).toString('hex'); - - const a10base = new bn(_a32, 16).toString(10); - const a16base = new bn(_b32, 16).toString(16); - - const init = (fn) => { - const a32 = fn.from16(_a32); - const b32 = fn.from16(_b32); - const a64 = fn.from16(_a64); - const b64 = fn.from16(_b64); - const a128 = fn.from16(_a128); - const b128 = fn.from16(_b128); - const a256 = fn.from16(_a256); - const b256 = fn.from16(_b256); - const a512 = fn.from16(_a512); - const b512 = fn.from16(_b512); - const a768 = fn.from16(_a768); - const b768 = fn.from16(_b768); - const a1024 = fn.from16(_a1024); - const b1024 = fn.from16(_b1024); - const a2048 = fn.from16(_a2048); - const b2048 = fn.from16(_b2048); - const a4096 = fn.from16(_a4096); - const b4096 = fn.from16(_b4096); - const a8192 = fn.from16(_a8192); - const b8192 = fn.from16(_b8192); - const x = fn.from16('2adbeef'); - const as1 = fn.add(fn.sqr(a32), x); - const am1 = fn.toRed && fn.toRed(a32); - const pow1 = fn.fromRed && fn.fromRed(am1); - return { - a32, - b32, - a64, - b64, - a128, - b128, - a256, - b256, - a512, - b512, - a768, - b768, - _a32, - _b32, - _a64, - _b64, - _a128, - _b128, - _a256, - _b256, - _a512, - _b512, - _a768, - _b768, - a1024, - b1024, - a2048, - b2048, - a4096, - b4096, - a8192, - b8192, - _a1024, - _b1024, - _a2048, - _b2048, - _a4096, - _b4096, - _a8192, - _b8192, - as1, - am1, - pow1, - a10base, - a16base, - }; - }; - - for (const name of Object.keys(fns)) { - if (!filter.test(name)) continue; - fixture[name] = {}; - fixture[name].args = init(fns[name]); - fixture[name].outs = {}; - } - - return fixture; -} - -while (fixtures.length < NFIXTURES) fixtures.push(newFixture()); - -add('from10', 'a10base'); -add('from16', 'a16base'); - -const ALL = [ - 'a32', - 'a64', - 'a128', - 'a256', - 'a512', - 'a768', - 'a1024', - 'a2048', - 'a4096', - 'a8192', -]; - -for (const x of ALL) add('from16', '_' + x); -for (const x of ALL) add('to16', x); - -const ALL_OPS = [ - ['a32', 'b32'], - ['a64', 'b64'], - ['a128', 'b128'], - ['a256', 'b256'], - ['a512', 'b512'], - ['a768', 'b768'], - ['a1024', 'b1024'], - ['a2048', 'b2048'], - ['a4096', 'b4096'], - ['a8192', 'b8192'], -]; - -for (const [a, b] of ALL_OPS) add('add', a, b); -for (const [a, b] of ALL_OPS) add('sub', a, b); -for (const [a, b] of ALL_OPS) add('mul', a, b); -for (const [a, b] of ALL_OPS) add('div', a, b); - -add('sqr', 'a32'); -add('div', 'as1', 'a32'); -add('mod', 'as1', 'a32'); -add('sqrm', 'am1'); -add('powm', 'am1', 'pow1'); -add('invm', 'am1'); -add('gcd', 'a32', 'b32'); -add('egcd', 'a32', 'b32'); - -start(); - -// Forces ALL computations ? -const results = new Array(NFIXTURES); -for (let i = 0; i < NFIXTURES; ++i) { - results[i] = {}; - for (const name of Object.keys(fns)) { - if (!filter.test(name)) continue; - const fn = fns[name]; - const fixture = fixtures[i][name]; - for (const key of Object.keys(fixture.outs)) { - results[i][key] = results[i][key] || {}; - - const result = fixture.outs[key]; - const str = - result.constructor.prototype === String.prototype - ? result - : fn.to16(result).toLowerCase(); - results[i][key][name] = str; - } - } - - for (const key of Object.keys(results[i])) { - const theseResults = results[i][key]; - const distinctResults = new Set(Object.values(theseResults)); - if (distinctResults.size === 1) { - console.error(i, key, JSON.stringify(Object.keys(theseResults)), 'OK'); - } else { - console.error('DIFFERENT OUTPUTS for', i, key); - console.error(distinctResults); - console.error(i, key, theseResults); - console.error(fixtures[i]); - } - } -} diff --git a/_benchmark/package.json b/_benchmark/package.json deleted file mode 100644 index 4cbb706..0000000 --- a/_benchmark/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "_benchmark", - "version": "1.0.0", - "description": "", - "license": "MIT", - "author": "", - "main": "index.js", - "scripts": { - "bench": "node index.js" - }, - "dependencies": { - "benchmark": "^2.1.4", - "bigi": "1.4.2", - "biginteger": "1.0.3", - "bn.js": "^5.1.1", - "eccjs": "0.3.1", - "js-big-integer": "3.0.7", - "jsbi": "^3.1.2", - "xorshift.js": "^1.0.5" - }, - "optionalDependencies": { - "bignum": "0.13.1" - } -} diff --git a/_profile/.gitignore b/_profile/.gitignore deleted file mode 100644 index ae0e7b5..0000000 --- a/_profile/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.0x/ -/yarn.lock diff --git a/_profile/add.js b/_profile/add.js deleted file mode 100644 index 4565dae..0000000 --- a/_profile/add.js +++ /dev/null @@ -1,66 +0,0 @@ -console.time('prepare'); -require('@babel/polyfill'); -const crypto = require('crypto'); -const ArgumentParser = require('argparse').ArgumentParser; -// Const itertools = require('@aureooms/js-itertools'); -const XorShift128Plus = require('xorshift.js').XorShift128Plus; -const {ZZ, DEFAULT_DISPLAY_BASE, DEFAULT_REPRESENTATION_BASE} = require('..'); -// Const BN = require('bn.js'); - -const parser = new ArgumentParser(); -parser.addArgument(['M'], {defaultValue: 1000, nargs: '?'}); -parser.addArgument(['-N'], {defaultValue: 1000}); -parser.addArgument(['-s'], { - defaultValue: process.env.SEED || crypto.randomBytes(16).toString('hex'), -}); -const args = parser.parseArgs(); -const M = args.M; -const N = args.N; -const seed = args.s; - -console.log('operand size (bytes):', M); -console.log('number of operations:', N); -console.log('seed:', seed); - -const MAX_PRINT_DIGITS = 79; -const _show = (_x) => - _x.length <= MAX_PRINT_DIGITS - ? _x - : _x.slice(0, (MAX_PRINT_DIGITS - 3) / 2) + - '...' + - _x.slice(_x.length - (MAX_PRINT_DIGITS - 3) / 2); - -const prng = new XorShift128Plus(seed); -const _x = prng.randomBytes(M).toString('hex'); -console.log('_x:', _show(_x)); -const _y = prng.randomBytes(M).toString('hex'); -console.log('_y:', _show(_y)); - -const x = ZZ.from(_x, 16); -const y = ZZ.from(_y, 16); -// Let x = BigInt('0x'+_x) ; -// const y = BigInt('0x'+_y) ; -// let x = new BN(_x,16) ; -// const y = new BN(_y,16) ; -let z = x; - -console.log('limbs x:', x.limbs.length); -console.log('limbs y:', y.limbs.length); -console.log('DEFAULT_DISPLAY_BASE:', DEFAULT_DISPLAY_BASE); -console.log('DEFAULT_REPRESENTATION_BASE:', DEFAULT_REPRESENTATION_BASE); - -console.timeEnd('prepare'); - -console.time('loop'); -for (let k = 0; k < N; ++k) { - // X *= y; - z = z.add(y); - z = z.sub(y); - // X = x + y; - // x = x - y; -} - -console.timeEnd('loop'); - -// eslint-disable-next-line no-self-compare -console.log(z.toString(16) === z.toString(16) ? 'OK' : 'ERROR: NOT OK'); diff --git a/_profile/iadd.js b/_profile/iadd.js deleted file mode 100644 index 6e37080..0000000 --- a/_profile/iadd.js +++ /dev/null @@ -1,51 +0,0 @@ -console.time('prepare'); -require('@babel/polyfill'); -const crypto = require('crypto'); -const ArgumentParser = require('argparse').ArgumentParser; -// Const itertools = require('@aureooms/js-itertools'); -const XorShift128Plus = require('xorshift.js').XorShift128Plus; -const {ZZ} = require('..'); -// Const BN = require('bn.js'); - -const parser = new ArgumentParser(); -parser.addArgument(['M'], {defaultValue: 1000, nargs: '?'}); -parser.addArgument(['-N'], {defaultValue: 1000}); -parser.addArgument(['-s'], { - defaultValue: process.env.SEED || crypto.randomBytes(16).toString('hex'), -}); -const args = parser.parseArgs(); -const M = args.M; -const N = args.N; -const seed = args.s; - -console.log('operand size (bytes):', M); -console.log('number of operations:', N); -console.log('seed:', seed); - -const prng = new XorShift128Plus(seed); -const _x = prng.randomBytes(M).toString('hex'); -console.log('_x:', _x); -const _y = prng.randomBytes(M).toString('hex'); -console.log('_y:', _y); - -const x = ZZ.from(_x, 16); -const y = ZZ.from(_y, 16); -// Let x = BigInt('0x'+_x) ; -// const y = BigInt('0x'+_y) ; -// let x = new BN(_x,16) ; -// const y = new BN(_y,16) ; - -console.timeEnd('prepare'); - -console.time('loop'); -for (let k = 0; k < N; ++k) { - // X *= y; - x.iadd(y); - x.isub(y); - // X = x + y; - // x = x - y; -} - -console.timeEnd('loop'); - -if (Math.random() < 0.0001) console.log(x); diff --git a/_profile/mod.js b/_profile/mod.js deleted file mode 100644 index 2e8e073..0000000 --- a/_profile/mod.js +++ /dev/null @@ -1,56 +0,0 @@ -console.time('prepare'); -require('@babel/polyfill'); -const crypto = require('crypto'); -const ArgumentParser = require('argparse').ArgumentParser; -// Const itertools = require('@aureooms/js-itertools'); -const XorShift128Plus = require('xorshift.js').XorShift128Plus; -const { - THRESHOLD_MUL_TOOM22, - THRESHOLD_DIV_DC, -} = require('@aureooms/js-integer-big-endian'); -const {ZZ, DEFAULT_DISPLAY_BASE, DEFAULT_REPRESENTATION_BASE} = require('..'); - -const parser = new ArgumentParser(); -parser.addArgument(['M'], {defaultValue: 1000, nargs: '?'}); -parser.addArgument(['-N'], {defaultValue: 1000}); -parser.addArgument(['-s'], { - defaultValue: process.env.SEED || crypto.randomBytes(16).toString('hex'), -}); -const args = parser.parseArgs(); -const M = args.M; -const N = args.N; -const seed = args.s; - -console.log('operand size (bytes):', M); -console.log('number of operations:', N); -console.log('seed:', seed); - -const prng = new XorShift128Plus(seed); -const _x = prng.randomBytes(M).toString('hex'); -console.log('_x:', _x); -const _y = prng.randomBytes(M).toString('hex'); -console.log('_y:', _y); - -const x = ZZ.from(_x, 16); -const y = ZZ.from(_y, 16); -x.iadd(y.square()); - -console.log('limbs x:', x.limbs.length); -console.log('limbs y:', y.limbs.length); -console.log('DEFAULT_DISPLAY_BASE:', DEFAULT_DISPLAY_BASE); -console.log('DEFAULT_REPRESENTATION_BASE:', DEFAULT_REPRESENTATION_BASE); -console.log('THRESHOLD_MUL_TOOM22:', THRESHOLD_MUL_TOOM22); -console.log('THRESHOLD_DIV_DC:', THRESHOLD_DIV_DC); - -console.timeEnd('prepare'); - -console.time('loop'); -let z; -for (let k = 0; k < N; ++k) { - z = x.mod(y); -} - -console.timeEnd('loop'); - -// eslint-disable-next-line no-self-compare -console.log(z.toString(16) === z.toString(16) ? 'OK' : 'ERROR: NOT OK'); diff --git a/_profile/mul.js b/_profile/mul.js deleted file mode 100644 index f26af51..0000000 --- a/_profile/mul.js +++ /dev/null @@ -1,48 +0,0 @@ -console.time('prepare'); -require('@babel/polyfill'); -const crypto = require('crypto'); -const ArgumentParser = require('argparse').ArgumentParser; -// Const itertools = require('@aureooms/js-itertools'); -const XorShift128Plus = require('xorshift.js').XorShift128Plus; -const {THRESHOLD_MUL_TOOM22} = require('@aureooms/js-integer-big-endian'); -const {ZZ} = require('..'); - -const parser = new ArgumentParser(); -parser.addArgument(['M'], {defaultValue: 1000, nargs: '?'}); -parser.addArgument(['-N'], {defaultValue: 1000}); -parser.addArgument(['-s'], { - defaultValue: process.env.SEED || crypto.randomBytes(16).toString('hex'), -}); -const args = parser.parseArgs(); -const M = args.M; -const N = args.N; -const seed = args.s; - -console.log('operand size (bytes):', M); -console.log('number of operations:', N); -console.log('seed:', seed); - -const prng = new XorShift128Plus(seed); -const _x = prng.randomBytes(M).toString('hex'); -console.log('_x:', _x); -const _y = prng.randomBytes(M).toString('hex'); -console.log('_y:', _y); - -const x = ZZ.from(_x, 16); -const y = ZZ.from(_y, 16); - -console.log('limbs x:', x.limbs.length); -console.log('limbs y:', y.limbs.length); -console.log('THRESHOLD_MUL_TOOM22:', THRESHOLD_MUL_TOOM22); - -console.timeEnd('prepare'); - -console.time('loop'); -let z; -for (let k = 0; k < N; ++k) { - z = x.mul(y); -} - -console.timeEnd('loop'); - -if (Math.random() < 0.0001) console.log(z); diff --git a/_profile/package.json b/_profile/package.json deleted file mode 100644 index 3a52225..0000000 --- a/_profile/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "_profile", - "version": "1.0.0", - "main": "index.js", - "license": "MIT", - "scripts": { - "profile": "0x" - }, - "dependencies": { - "0x": "^4.9.1", - "@babel/polyfill": "^7.8.7", - "argparse": "^2.0.0", - "bn.js": "^5.1.1", - "crypto": "^1.0.1", - "xorshift.js": "^1.0.5" - } -} diff --git a/ast/source/.external-ecmascript.js.json b/ast/source/.external-ecmascript.js.json new file mode 100644 index 0000000..21893b9 --- /dev/null +++ b/ast/source/.external-ecmascript.js.json @@ -0,0 +1,2802 @@ +{ + "type": "File", + "start": 0, + "end": 6058, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 193, + "column": 0 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 6058, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 193, + "column": 0 + } + }, + "sourceType": "module", + "body": [], + "directives": [], + "leadingComments": null, + "innerComments": [ + { + "type": "CommentLine", + "value": " https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects", + "start": 0, + "end": 83, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 83 + } + } + }, + { + "type": "CommentLine", + "value": " Value properties", + "start": 85, + "end": 104, + "loc": { + "start": { + "line": 3, + "column": 0 + }, + "end": { + "line": 3, + "column": 19 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Infinity} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Infinity\n ", + "start": 105, + "end": 226, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 6, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {NaN} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN\n ", + "start": 228, + "end": 339, + "loc": { + "start": { + "line": 8, + "column": 0 + }, + "end": { + "line": 10, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {undefined} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined\n ", + "start": 341, + "end": 464, + "loc": { + "start": { + "line": 12, + "column": 0 + }, + "end": { + "line": 14, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {null} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null\n ", + "start": 466, + "end": 579, + "loc": { + "start": { + "line": 16, + "column": 0 + }, + "end": { + "line": 18, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Fundamental objects", + "start": 581, + "end": 603, + "loc": { + "start": { + "line": 20, + "column": 0 + }, + "end": { + "line": 20, + "column": 22 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Object} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object\n ", + "start": 604, + "end": 721, + "loc": { + "start": { + "line": 21, + "column": 0 + }, + "end": { + "line": 23, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {object} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object\n ", + "start": 722, + "end": 839, + "loc": { + "start": { + "line": 24, + "column": 0 + }, + "end": { + "line": 26, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Function} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function\n ", + "start": 841, + "end": 962, + "loc": { + "start": { + "line": 28, + "column": 0 + }, + "end": { + "line": 30, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {function} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function\n ", + "start": 963, + "end": 1084, + "loc": { + "start": { + "line": 31, + "column": 0 + }, + "end": { + "line": 33, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Boolean} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean\n ", + "start": 1086, + "end": 1205, + "loc": { + "start": { + "line": 35, + "column": 0 + }, + "end": { + "line": 37, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {boolean} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean\n ", + "start": 1206, + "end": 1325, + "loc": { + "start": { + "line": 38, + "column": 0 + }, + "end": { + "line": 40, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Symbol} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol\n ", + "start": 1327, + "end": 1444, + "loc": { + "start": { + "line": 42, + "column": 0 + }, + "end": { + "line": 44, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Error} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error\n ", + "start": 1446, + "end": 1561, + "loc": { + "start": { + "line": 46, + "column": 0 + }, + "end": { + "line": 48, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {EvalError} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError\n ", + "start": 1563, + "end": 1686, + "loc": { + "start": { + "line": 50, + "column": 0 + }, + "end": { + "line": 52, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {InternalError} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/InternalError\n ", + "start": 1688, + "end": 1819, + "loc": { + "start": { + "line": 54, + "column": 0 + }, + "end": { + "line": 56, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {RangeError} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError\n ", + "start": 1821, + "end": 1946, + "loc": { + "start": { + "line": 58, + "column": 0 + }, + "end": { + "line": 60, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {ReferenceError} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError\n ", + "start": 1948, + "end": 2081, + "loc": { + "start": { + "line": 62, + "column": 0 + }, + "end": { + "line": 64, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {SyntaxError} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError\n ", + "start": 2083, + "end": 2210, + "loc": { + "start": { + "line": 66, + "column": 0 + }, + "end": { + "line": 68, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {TypeError} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError\n ", + "start": 2212, + "end": 2335, + "loc": { + "start": { + "line": 70, + "column": 0 + }, + "end": { + "line": 72, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {URIError} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError\n ", + "start": 2337, + "end": 2458, + "loc": { + "start": { + "line": 74, + "column": 0 + }, + "end": { + "line": 76, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Numbers and dates", + "start": 2460, + "end": 2480, + "loc": { + "start": { + "line": 78, + "column": 0 + }, + "end": { + "line": 78, + "column": 20 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Number} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number\n ", + "start": 2481, + "end": 2598, + "loc": { + "start": { + "line": 79, + "column": 0 + }, + "end": { + "line": 81, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {number} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number\n ", + "start": 2599, + "end": 2716, + "loc": { + "start": { + "line": 82, + "column": 0 + }, + "end": { + "line": 84, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Date} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date\n ", + "start": 2718, + "end": 2831, + "loc": { + "start": { + "line": 86, + "column": 0 + }, + "end": { + "line": 88, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Text processing", + "start": 2833, + "end": 2851, + "loc": { + "start": { + "line": 90, + "column": 0 + }, + "end": { + "line": 90, + "column": 18 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {String} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String\n ", + "start": 2852, + "end": 2969, + "loc": { + "start": { + "line": 91, + "column": 0 + }, + "end": { + "line": 93, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {string} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String\n ", + "start": 2970, + "end": 3087, + "loc": { + "start": { + "line": 94, + "column": 0 + }, + "end": { + "line": 96, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {RegExp} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp\n ", + "start": 3089, + "end": 3206, + "loc": { + "start": { + "line": 98, + "column": 0 + }, + "end": { + "line": 100, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Indexed collections", + "start": 3208, + "end": 3230, + "loc": { + "start": { + "line": 102, + "column": 0 + }, + "end": { + "line": 102, + "column": 22 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array\n ", + "start": 3231, + "end": 3346, + "loc": { + "start": { + "line": 103, + "column": 0 + }, + "end": { + "line": 105, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Int8Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array\n ", + "start": 3348, + "end": 3471, + "loc": { + "start": { + "line": 107, + "column": 0 + }, + "end": { + "line": 109, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Uint8Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array\n ", + "start": 3472, + "end": 3597, + "loc": { + "start": { + "line": 110, + "column": 0 + }, + "end": { + "line": 112, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Uint8ClampedArray} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray\n ", + "start": 3599, + "end": 3738, + "loc": { + "start": { + "line": 114, + "column": 0 + }, + "end": { + "line": 116, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Int16Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array\n ", + "start": 3740, + "end": 3865, + "loc": { + "start": { + "line": 118, + "column": 0 + }, + "end": { + "line": 120, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Uint16Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array\n ", + "start": 3867, + "end": 3994, + "loc": { + "start": { + "line": 122, + "column": 0 + }, + "end": { + "line": 124, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Int32Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array\n ", + "start": 3996, + "end": 4121, + "loc": { + "start": { + "line": 126, + "column": 0 + }, + "end": { + "line": 128, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Uint32Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array\n ", + "start": 4123, + "end": 4250, + "loc": { + "start": { + "line": 130, + "column": 0 + }, + "end": { + "line": 132, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Float32Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array\n ", + "start": 4252, + "end": 4381, + "loc": { + "start": { + "line": 134, + "column": 0 + }, + "end": { + "line": 136, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Float64Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float64Array\n ", + "start": 4383, + "end": 4512, + "loc": { + "start": { + "line": 138, + "column": 0 + }, + "end": { + "line": 140, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Keyed collections", + "start": 4514, + "end": 4534, + "loc": { + "start": { + "line": 142, + "column": 0 + }, + "end": { + "line": 142, + "column": 20 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Map} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map\n ", + "start": 4535, + "end": 4646, + "loc": { + "start": { + "line": 143, + "column": 0 + }, + "end": { + "line": 145, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Set} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set\n ", + "start": 4648, + "end": 4759, + "loc": { + "start": { + "line": 147, + "column": 0 + }, + "end": { + "line": 149, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {WeakMap} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap\n ", + "start": 4761, + "end": 4880, + "loc": { + "start": { + "line": 151, + "column": 0 + }, + "end": { + "line": 153, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {WeakSet} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet\n ", + "start": 4882, + "end": 5001, + "loc": { + "start": { + "line": 155, + "column": 0 + }, + "end": { + "line": 157, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Structured data", + "start": 5003, + "end": 5021, + "loc": { + "start": { + "line": 159, + "column": 0 + }, + "end": { + "line": 159, + "column": 18 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {ArrayBuffer} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer\n ", + "start": 5022, + "end": 5149, + "loc": { + "start": { + "line": 160, + "column": 0 + }, + "end": { + "line": 162, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {DataView} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView\n ", + "start": 5151, + "end": 5272, + "loc": { + "start": { + "line": 164, + "column": 0 + }, + "end": { + "line": 166, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {JSON} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON\n ", + "start": 5274, + "end": 5387, + "loc": { + "start": { + "line": 168, + "column": 0 + }, + "end": { + "line": 170, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Control abstraction objects", + "start": 5389, + "end": 5419, + "loc": { + "start": { + "line": 172, + "column": 0 + }, + "end": { + "line": 172, + "column": 30 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Promise} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise\n ", + "start": 5420, + "end": 5539, + "loc": { + "start": { + "line": 173, + "column": 0 + }, + "end": { + "line": 175, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Generator} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator\n ", + "start": 5541, + "end": 5664, + "loc": { + "start": { + "line": 177, + "column": 0 + }, + "end": { + "line": 179, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {GeneratorFunction} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction\n ", + "start": 5666, + "end": 5805, + "loc": { + "start": { + "line": 181, + "column": 0 + }, + "end": { + "line": 183, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Reflection", + "start": 5807, + "end": 5820, + "loc": { + "start": { + "line": 185, + "column": 0 + }, + "end": { + "line": 185, + "column": 13 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Reflect} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect\n ", + "start": 5821, + "end": 5940, + "loc": { + "start": { + "line": 186, + "column": 0 + }, + "end": { + "line": 188, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Proxy} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy\n ", + "start": 5942, + "end": 6057, + "loc": { + "start": { + "line": 190, + "column": 0 + }, + "end": { + "line": 192, + "column": 3 + } + } + } + ] + }, + "comments": [ + { + "type": "CommentLine", + "value": " https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects", + "start": 0, + "end": 83, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 83 + } + } + }, + { + "type": "CommentLine", + "value": " Value properties", + "start": 85, + "end": 104, + "loc": { + "start": { + "line": 3, + "column": 0 + }, + "end": { + "line": 3, + "column": 19 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Infinity} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Infinity\n ", + "start": 105, + "end": 226, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 6, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {NaN} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN\n ", + "start": 228, + "end": 339, + "loc": { + "start": { + "line": 8, + "column": 0 + }, + "end": { + "line": 10, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {undefined} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined\n ", + "start": 341, + "end": 464, + "loc": { + "start": { + "line": 12, + "column": 0 + }, + "end": { + "line": 14, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {null} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null\n ", + "start": 466, + "end": 579, + "loc": { + "start": { + "line": 16, + "column": 0 + }, + "end": { + "line": 18, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Fundamental objects", + "start": 581, + "end": 603, + "loc": { + "start": { + "line": 20, + "column": 0 + }, + "end": { + "line": 20, + "column": 22 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Object} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object\n ", + "start": 604, + "end": 721, + "loc": { + "start": { + "line": 21, + "column": 0 + }, + "end": { + "line": 23, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {object} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object\n ", + "start": 722, + "end": 839, + "loc": { + "start": { + "line": 24, + "column": 0 + }, + "end": { + "line": 26, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Function} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function\n ", + "start": 841, + "end": 962, + "loc": { + "start": { + "line": 28, + "column": 0 + }, + "end": { + "line": 30, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {function} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function\n ", + "start": 963, + "end": 1084, + "loc": { + "start": { + "line": 31, + "column": 0 + }, + "end": { + "line": 33, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Boolean} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean\n ", + "start": 1086, + "end": 1205, + "loc": { + "start": { + "line": 35, + "column": 0 + }, + "end": { + "line": 37, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {boolean} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean\n ", + "start": 1206, + "end": 1325, + "loc": { + "start": { + "line": 38, + "column": 0 + }, + "end": { + "line": 40, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Symbol} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol\n ", + "start": 1327, + "end": 1444, + "loc": { + "start": { + "line": 42, + "column": 0 + }, + "end": { + "line": 44, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Error} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error\n ", + "start": 1446, + "end": 1561, + "loc": { + "start": { + "line": 46, + "column": 0 + }, + "end": { + "line": 48, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {EvalError} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError\n ", + "start": 1563, + "end": 1686, + "loc": { + "start": { + "line": 50, + "column": 0 + }, + "end": { + "line": 52, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {InternalError} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/InternalError\n ", + "start": 1688, + "end": 1819, + "loc": { + "start": { + "line": 54, + "column": 0 + }, + "end": { + "line": 56, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {RangeError} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError\n ", + "start": 1821, + "end": 1946, + "loc": { + "start": { + "line": 58, + "column": 0 + }, + "end": { + "line": 60, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {ReferenceError} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError\n ", + "start": 1948, + "end": 2081, + "loc": { + "start": { + "line": 62, + "column": 0 + }, + "end": { + "line": 64, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {SyntaxError} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError\n ", + "start": 2083, + "end": 2210, + "loc": { + "start": { + "line": 66, + "column": 0 + }, + "end": { + "line": 68, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {TypeError} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError\n ", + "start": 2212, + "end": 2335, + "loc": { + "start": { + "line": 70, + "column": 0 + }, + "end": { + "line": 72, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {URIError} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError\n ", + "start": 2337, + "end": 2458, + "loc": { + "start": { + "line": 74, + "column": 0 + }, + "end": { + "line": 76, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Numbers and dates", + "start": 2460, + "end": 2480, + "loc": { + "start": { + "line": 78, + "column": 0 + }, + "end": { + "line": 78, + "column": 20 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Number} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number\n ", + "start": 2481, + "end": 2598, + "loc": { + "start": { + "line": 79, + "column": 0 + }, + "end": { + "line": 81, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {number} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number\n ", + "start": 2599, + "end": 2716, + "loc": { + "start": { + "line": 82, + "column": 0 + }, + "end": { + "line": 84, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Date} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date\n ", + "start": 2718, + "end": 2831, + "loc": { + "start": { + "line": 86, + "column": 0 + }, + "end": { + "line": 88, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Text processing", + "start": 2833, + "end": 2851, + "loc": { + "start": { + "line": 90, + "column": 0 + }, + "end": { + "line": 90, + "column": 18 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {String} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String\n ", + "start": 2852, + "end": 2969, + "loc": { + "start": { + "line": 91, + "column": 0 + }, + "end": { + "line": 93, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {string} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String\n ", + "start": 2970, + "end": 3087, + "loc": { + "start": { + "line": 94, + "column": 0 + }, + "end": { + "line": 96, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {RegExp} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp\n ", + "start": 3089, + "end": 3206, + "loc": { + "start": { + "line": 98, + "column": 0 + }, + "end": { + "line": 100, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Indexed collections", + "start": 3208, + "end": 3230, + "loc": { + "start": { + "line": 102, + "column": 0 + }, + "end": { + "line": 102, + "column": 22 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array\n ", + "start": 3231, + "end": 3346, + "loc": { + "start": { + "line": 103, + "column": 0 + }, + "end": { + "line": 105, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Int8Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array\n ", + "start": 3348, + "end": 3471, + "loc": { + "start": { + "line": 107, + "column": 0 + }, + "end": { + "line": 109, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Uint8Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array\n ", + "start": 3472, + "end": 3597, + "loc": { + "start": { + "line": 110, + "column": 0 + }, + "end": { + "line": 112, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Uint8ClampedArray} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray\n ", + "start": 3599, + "end": 3738, + "loc": { + "start": { + "line": 114, + "column": 0 + }, + "end": { + "line": 116, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Int16Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array\n ", + "start": 3740, + "end": 3865, + "loc": { + "start": { + "line": 118, + "column": 0 + }, + "end": { + "line": 120, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Uint16Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array\n ", + "start": 3867, + "end": 3994, + "loc": { + "start": { + "line": 122, + "column": 0 + }, + "end": { + "line": 124, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Int32Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array\n ", + "start": 3996, + "end": 4121, + "loc": { + "start": { + "line": 126, + "column": 0 + }, + "end": { + "line": 128, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Uint32Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array\n ", + "start": 4123, + "end": 4250, + "loc": { + "start": { + "line": 130, + "column": 0 + }, + "end": { + "line": 132, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Float32Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array\n ", + "start": 4252, + "end": 4381, + "loc": { + "start": { + "line": 134, + "column": 0 + }, + "end": { + "line": 136, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Float64Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float64Array\n ", + "start": 4383, + "end": 4512, + "loc": { + "start": { + "line": 138, + "column": 0 + }, + "end": { + "line": 140, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Keyed collections", + "start": 4514, + "end": 4534, + "loc": { + "start": { + "line": 142, + "column": 0 + }, + "end": { + "line": 142, + "column": 20 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Map} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map\n ", + "start": 4535, + "end": 4646, + "loc": { + "start": { + "line": 143, + "column": 0 + }, + "end": { + "line": 145, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Set} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set\n ", + "start": 4648, + "end": 4759, + "loc": { + "start": { + "line": 147, + "column": 0 + }, + "end": { + "line": 149, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {WeakMap} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap\n ", + "start": 4761, + "end": 4880, + "loc": { + "start": { + "line": 151, + "column": 0 + }, + "end": { + "line": 153, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {WeakSet} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet\n ", + "start": 4882, + "end": 5001, + "loc": { + "start": { + "line": 155, + "column": 0 + }, + "end": { + "line": 157, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Structured data", + "start": 5003, + "end": 5021, + "loc": { + "start": { + "line": 159, + "column": 0 + }, + "end": { + "line": 159, + "column": 18 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {ArrayBuffer} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer\n ", + "start": 5022, + "end": 5149, + "loc": { + "start": { + "line": 160, + "column": 0 + }, + "end": { + "line": 162, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {DataView} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView\n ", + "start": 5151, + "end": 5272, + "loc": { + "start": { + "line": 164, + "column": 0 + }, + "end": { + "line": 166, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {JSON} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON\n ", + "start": 5274, + "end": 5387, + "loc": { + "start": { + "line": 168, + "column": 0 + }, + "end": { + "line": 170, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Control abstraction objects", + "start": 5389, + "end": 5419, + "loc": { + "start": { + "line": 172, + "column": 0 + }, + "end": { + "line": 172, + "column": 30 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Promise} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise\n ", + "start": 5420, + "end": 5539, + "loc": { + "start": { + "line": 173, + "column": 0 + }, + "end": { + "line": 175, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Generator} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator\n ", + "start": 5541, + "end": 5664, + "loc": { + "start": { + "line": 177, + "column": 0 + }, + "end": { + "line": 179, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {GeneratorFunction} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction\n ", + "start": 5666, + "end": 5805, + "loc": { + "start": { + "line": 181, + "column": 0 + }, + "end": { + "line": 183, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Reflection", + "start": 5807, + "end": 5820, + "loc": { + "start": { + "line": 185, + "column": 0 + }, + "end": { + "line": 185, + "column": 13 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Reflect} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect\n ", + "start": 5821, + "end": 5940, + "loc": { + "start": { + "line": 186, + "column": 0 + }, + "end": { + "line": 188, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Proxy} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy\n ", + "start": 5942, + "end": 6057, + "loc": { + "start": { + "line": 190, + "column": 0 + }, + "end": { + "line": 192, + "column": 3 + } + } + } + ], + "tokens": [ + { + "type": "CommentLine", + "value": " https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects", + "start": 0, + "end": 83, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 83 + } + } + }, + { + "type": "CommentLine", + "value": " Value properties", + "start": 85, + "end": 104, + "loc": { + "start": { + "line": 3, + "column": 0 + }, + "end": { + "line": 3, + "column": 19 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Infinity} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Infinity\n ", + "start": 105, + "end": 226, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 6, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {NaN} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN\n ", + "start": 228, + "end": 339, + "loc": { + "start": { + "line": 8, + "column": 0 + }, + "end": { + "line": 10, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {undefined} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined\n ", + "start": 341, + "end": 464, + "loc": { + "start": { + "line": 12, + "column": 0 + }, + "end": { + "line": 14, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {null} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null\n ", + "start": 466, + "end": 579, + "loc": { + "start": { + "line": 16, + "column": 0 + }, + "end": { + "line": 18, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Fundamental objects", + "start": 581, + "end": 603, + "loc": { + "start": { + "line": 20, + "column": 0 + }, + "end": { + "line": 20, + "column": 22 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Object} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object\n ", + "start": 604, + "end": 721, + "loc": { + "start": { + "line": 21, + "column": 0 + }, + "end": { + "line": 23, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {object} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object\n ", + "start": 722, + "end": 839, + "loc": { + "start": { + "line": 24, + "column": 0 + }, + "end": { + "line": 26, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Function} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function\n ", + "start": 841, + "end": 962, + "loc": { + "start": { + "line": 28, + "column": 0 + }, + "end": { + "line": 30, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {function} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function\n ", + "start": 963, + "end": 1084, + "loc": { + "start": { + "line": 31, + "column": 0 + }, + "end": { + "line": 33, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Boolean} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean\n ", + "start": 1086, + "end": 1205, + "loc": { + "start": { + "line": 35, + "column": 0 + }, + "end": { + "line": 37, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {boolean} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean\n ", + "start": 1206, + "end": 1325, + "loc": { + "start": { + "line": 38, + "column": 0 + }, + "end": { + "line": 40, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Symbol} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol\n ", + "start": 1327, + "end": 1444, + "loc": { + "start": { + "line": 42, + "column": 0 + }, + "end": { + "line": 44, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Error} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error\n ", + "start": 1446, + "end": 1561, + "loc": { + "start": { + "line": 46, + "column": 0 + }, + "end": { + "line": 48, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {EvalError} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError\n ", + "start": 1563, + "end": 1686, + "loc": { + "start": { + "line": 50, + "column": 0 + }, + "end": { + "line": 52, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {InternalError} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/InternalError\n ", + "start": 1688, + "end": 1819, + "loc": { + "start": { + "line": 54, + "column": 0 + }, + "end": { + "line": 56, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {RangeError} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError\n ", + "start": 1821, + "end": 1946, + "loc": { + "start": { + "line": 58, + "column": 0 + }, + "end": { + "line": 60, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {ReferenceError} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError\n ", + "start": 1948, + "end": 2081, + "loc": { + "start": { + "line": 62, + "column": 0 + }, + "end": { + "line": 64, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {SyntaxError} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError\n ", + "start": 2083, + "end": 2210, + "loc": { + "start": { + "line": 66, + "column": 0 + }, + "end": { + "line": 68, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {TypeError} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError\n ", + "start": 2212, + "end": 2335, + "loc": { + "start": { + "line": 70, + "column": 0 + }, + "end": { + "line": 72, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {URIError} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError\n ", + "start": 2337, + "end": 2458, + "loc": { + "start": { + "line": 74, + "column": 0 + }, + "end": { + "line": 76, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Numbers and dates", + "start": 2460, + "end": 2480, + "loc": { + "start": { + "line": 78, + "column": 0 + }, + "end": { + "line": 78, + "column": 20 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Number} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number\n ", + "start": 2481, + "end": 2598, + "loc": { + "start": { + "line": 79, + "column": 0 + }, + "end": { + "line": 81, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {number} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number\n ", + "start": 2599, + "end": 2716, + "loc": { + "start": { + "line": 82, + "column": 0 + }, + "end": { + "line": 84, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Date} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date\n ", + "start": 2718, + "end": 2831, + "loc": { + "start": { + "line": 86, + "column": 0 + }, + "end": { + "line": 88, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Text processing", + "start": 2833, + "end": 2851, + "loc": { + "start": { + "line": 90, + "column": 0 + }, + "end": { + "line": 90, + "column": 18 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {String} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String\n ", + "start": 2852, + "end": 2969, + "loc": { + "start": { + "line": 91, + "column": 0 + }, + "end": { + "line": 93, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {string} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String\n ", + "start": 2970, + "end": 3087, + "loc": { + "start": { + "line": 94, + "column": 0 + }, + "end": { + "line": 96, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {RegExp} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp\n ", + "start": 3089, + "end": 3206, + "loc": { + "start": { + "line": 98, + "column": 0 + }, + "end": { + "line": 100, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Indexed collections", + "start": 3208, + "end": 3230, + "loc": { + "start": { + "line": 102, + "column": 0 + }, + "end": { + "line": 102, + "column": 22 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array\n ", + "start": 3231, + "end": 3346, + "loc": { + "start": { + "line": 103, + "column": 0 + }, + "end": { + "line": 105, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Int8Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array\n ", + "start": 3348, + "end": 3471, + "loc": { + "start": { + "line": 107, + "column": 0 + }, + "end": { + "line": 109, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Uint8Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array\n ", + "start": 3472, + "end": 3597, + "loc": { + "start": { + "line": 110, + "column": 0 + }, + "end": { + "line": 112, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Uint8ClampedArray} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray\n ", + "start": 3599, + "end": 3738, + "loc": { + "start": { + "line": 114, + "column": 0 + }, + "end": { + "line": 116, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Int16Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array\n ", + "start": 3740, + "end": 3865, + "loc": { + "start": { + "line": 118, + "column": 0 + }, + "end": { + "line": 120, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Uint16Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array\n ", + "start": 3867, + "end": 3994, + "loc": { + "start": { + "line": 122, + "column": 0 + }, + "end": { + "line": 124, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Int32Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array\n ", + "start": 3996, + "end": 4121, + "loc": { + "start": { + "line": 126, + "column": 0 + }, + "end": { + "line": 128, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Uint32Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array\n ", + "start": 4123, + "end": 4250, + "loc": { + "start": { + "line": 130, + "column": 0 + }, + "end": { + "line": 132, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Float32Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array\n ", + "start": 4252, + "end": 4381, + "loc": { + "start": { + "line": 134, + "column": 0 + }, + "end": { + "line": 136, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Float64Array} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float64Array\n ", + "start": 4383, + "end": 4512, + "loc": { + "start": { + "line": 138, + "column": 0 + }, + "end": { + "line": 140, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Keyed collections", + "start": 4514, + "end": 4534, + "loc": { + "start": { + "line": 142, + "column": 0 + }, + "end": { + "line": 142, + "column": 20 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Map} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map\n ", + "start": 4535, + "end": 4646, + "loc": { + "start": { + "line": 143, + "column": 0 + }, + "end": { + "line": 145, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Set} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set\n ", + "start": 4648, + "end": 4759, + "loc": { + "start": { + "line": 147, + "column": 0 + }, + "end": { + "line": 149, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {WeakMap} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap\n ", + "start": 4761, + "end": 4880, + "loc": { + "start": { + "line": 151, + "column": 0 + }, + "end": { + "line": 153, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {WeakSet} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet\n ", + "start": 4882, + "end": 5001, + "loc": { + "start": { + "line": 155, + "column": 0 + }, + "end": { + "line": 157, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Structured data", + "start": 5003, + "end": 5021, + "loc": { + "start": { + "line": 159, + "column": 0 + }, + "end": { + "line": 159, + "column": 18 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {ArrayBuffer} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer\n ", + "start": 5022, + "end": 5149, + "loc": { + "start": { + "line": 160, + "column": 0 + }, + "end": { + "line": 162, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {DataView} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView\n ", + "start": 5151, + "end": 5272, + "loc": { + "start": { + "line": 164, + "column": 0 + }, + "end": { + "line": 166, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {JSON} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON\n ", + "start": 5274, + "end": 5387, + "loc": { + "start": { + "line": 168, + "column": 0 + }, + "end": { + "line": 170, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Control abstraction objects", + "start": 5389, + "end": 5419, + "loc": { + "start": { + "line": 172, + "column": 0 + }, + "end": { + "line": 172, + "column": 30 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Promise} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise\n ", + "start": 5420, + "end": 5539, + "loc": { + "start": { + "line": 173, + "column": 0 + }, + "end": { + "line": 175, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Generator} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator\n ", + "start": 5541, + "end": 5664, + "loc": { + "start": { + "line": 177, + "column": 0 + }, + "end": { + "line": 179, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {GeneratorFunction} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction\n ", + "start": 5666, + "end": 5805, + "loc": { + "start": { + "line": 181, + "column": 0 + }, + "end": { + "line": 183, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " Reflection", + "start": 5807, + "end": 5820, + "loc": { + "start": { + "line": 185, + "column": 0 + }, + "end": { + "line": 185, + "column": 13 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Reflect} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect\n ", + "start": 5821, + "end": 5940, + "loc": { + "start": { + "line": 186, + "column": 0 + }, + "end": { + "line": 188, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @external {Proxy} https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy\n ", + "start": 5942, + "end": 6057, + "loc": { + "start": { + "line": 190, + "column": 0 + }, + "end": { + "line": 192, + "column": 3 + } + } + }, + { + "type": { + "label": "eof", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6058, + "end": 6058, + "loc": { + "start": { + "line": 193, + "column": 0 + }, + "end": { + "line": 193, + "column": 0 + } + } + } + ] +} \ No newline at end of file diff --git a/ast/source/DEFAULT_DISPLAY_BASE.js.json b/ast/source/DEFAULT_DISPLAY_BASE.js.json new file mode 100644 index 0000000..36e681f --- /dev/null +++ b/ast/source/DEFAULT_DISPLAY_BASE.js.json @@ -0,0 +1,314 @@ +{ + "type": "File", + "start": 0, + "end": 40, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 2, + "column": 0 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 40, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 2, + "column": 0 + } + }, + "sourceType": "module", + "body": [ + { + "type": "ExportNamedDeclaration", + "start": 0, + "end": 39, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 39 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "VariableDeclaration", + "start": 7, + "end": 39, + "loc": { + "start": { + "line": 1, + "column": 7 + }, + "end": { + "line": 1, + "column": 39 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 13, + "end": 38, + "loc": { + "start": { + "line": 1, + "column": 13 + }, + "end": { + "line": 1, + "column": 38 + } + }, + "id": { + "type": "Identifier", + "start": 13, + "end": 33, + "loc": { + "start": { + "line": 1, + "column": 13 + }, + "end": { + "line": 1, + "column": 33 + }, + "identifierName": "DEFAULT_DISPLAY_BASE" + }, + "name": "DEFAULT_DISPLAY_BASE" + }, + "init": { + "type": "NumericLiteral", + "start": 36, + "end": 38, + "loc": { + "start": { + "line": 1, + "column": 36 + }, + "end": { + "line": 1, + "column": 38 + } + }, + "extra": { + "rawValue": 10, + "raw": "10" + }, + "value": 10 + } + } + ], + "kind": "const", + "leadingComments": [], + "trailingComments": [] + } + } + ], + "directives": [] + }, + "comments": [], + "tokens": [ + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 0, + "end": 6, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 6 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 7, + "end": 12, + "loc": { + "start": { + "line": 1, + "column": 7 + }, + "end": { + "line": 1, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "DEFAULT_DISPLAY_BASE", + "start": 13, + "end": 33, + "loc": { + "start": { + "line": 1, + "column": 13 + }, + "end": { + "line": 1, + "column": 33 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 34, + "end": 35, + "loc": { + "start": { + "line": 1, + "column": 34 + }, + "end": { + "line": 1, + "column": 35 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 10, + "start": 36, + "end": 38, + "loc": { + "start": { + "line": 1, + "column": 36 + }, + "end": { + "line": 1, + "column": 38 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 38, + "end": 39, + "loc": { + "start": { + "line": 1, + "column": 38 + }, + "end": { + "line": 1, + "column": 39 + } + } + }, + { + "type": { + "label": "eof", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 40, + "end": 40, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 0 + } + } + } + ] +} \ No newline at end of file diff --git a/ast/source/DEFAULT_REPRESENTATION_BASE.js.json b/ast/source/DEFAULT_REPRESENTATION_BASE.js.json new file mode 100644 index 0000000..bff3ddd --- /dev/null +++ b/ast/source/DEFAULT_REPRESENTATION_BASE.js.json @@ -0,0 +1,959 @@ +{ + "type": "File", + "start": 0, + "end": 782, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 14, + "column": 0 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 782, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 14, + "column": 0 + } + }, + "sourceType": "module", + "body": [ + { + "type": "ImportDeclaration", + "start": 47, + "end": 85, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 38 + } + }, + "specifiers": [ + { + "type": "ImportSpecifier", + "start": 55, + "end": 63, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 16 + } + }, + "imported": { + "type": "Identifier", + "start": 55, + "end": 63, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 16 + }, + "identifierName": "MAX_BASE" + }, + "name": "MAX_BASE", + "leadingComments": null + }, + "local": { + "type": "Identifier", + "start": 55, + "end": 63, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 16 + }, + "identifierName": "MAX_BASE" + }, + "name": "MAX_BASE" + }, + "leadingComments": null + } + ], + "source": { + "type": "StringLiteral", + "start": 70, + "end": 84, + "loc": { + "start": { + "line": 2, + "column": 23 + }, + "end": { + "line": 2, + "column": 37 + } + }, + "extra": { + "rawValue": "./_limits.js", + "raw": "'./_limits.js'" + }, + "value": "./_limits.js" + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " Import { DEFAULT_DISPLAY_BASE } from './' ;", + "start": 0, + "end": 46, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 46 + } + } + } + ], + "trailingComments": [ + { + "type": "CommentBlock", + "value": "\n * Biggest power of DEFAULT_DISPLAY_BASE whose square holds in a single double\n * with full precision. For working correctly with multiplication algorithms\n * and for fast base DEFAULT_DISPLAY_BASE printing. On older machines with no\n * native doubles, it might be worth to only use ints.\n ", + "start": 87, + "end": 382, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 9, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " export const DEFAULT_REPRESENTATION_BASE = Math.pow(DEFAULT_DISPLAY_BASE,Math.floor(Math.log(Math.sqrt(Math.pow(2,53)))/Math.log(DEFAULT_DISPLAY_BASE))) ;", + "start": 383, + "end": 540, + "loc": { + "start": { + "line": 10, + "column": 0 + }, + "end": { + "line": 10, + "column": 157 + } + } + }, + { + "type": "CommentLine", + "value": " export const DEFAULT_REPRESENTATION_BASE = Math.pow(16,Math.floor(Math.log(Math.sqrt(Math.pow(2,53)))/Math.log(16))) ;", + "start": 541, + "end": 662, + "loc": { + "start": { + "line": 11, + "column": 0 + }, + "end": { + "line": 11, + "column": 121 + } + } + }, + { + "type": "CommentLine", + "value": " export const DEFAULT_REPRESENTATION_BASE = Math.pow(2,26) | 0;", + "start": 663, + "end": 728, + "loc": { + "start": { + "line": 12, + "column": 0 + }, + "end": { + "line": 12, + "column": 65 + } + } + } + ] + }, + { + "type": "ExportNamedDeclaration", + "start": 729, + "end": 781, + "loc": { + "start": { + "line": 13, + "column": 0 + }, + "end": { + "line": 13, + "column": 52 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "VariableDeclaration", + "start": 736, + "end": 781, + "loc": { + "start": { + "line": 13, + "column": 7 + }, + "end": { + "line": 13, + "column": 52 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 742, + "end": 780, + "loc": { + "start": { + "line": 13, + "column": 13 + }, + "end": { + "line": 13, + "column": 51 + } + }, + "id": { + "type": "Identifier", + "start": 742, + "end": 769, + "loc": { + "start": { + "line": 13, + "column": 13 + }, + "end": { + "line": 13, + "column": 40 + }, + "identifierName": "DEFAULT_REPRESENTATION_BASE" + }, + "name": "DEFAULT_REPRESENTATION_BASE", + "leadingComments": null + }, + "init": { + "type": "Identifier", + "start": 772, + "end": 780, + "loc": { + "start": { + "line": 13, + "column": 43 + }, + "end": { + "line": 13, + "column": 51 + }, + "identifierName": "MAX_BASE" + }, + "name": "MAX_BASE" + }, + "leadingComments": null + } + ], + "kind": "const", + "leadingComments": [ + { + "type": "CommentBlock", + "value": "\n * Biggest power of DEFAULT_DISPLAY_BASE whose square holds in a single double\n * with full precision. For working correctly with multiplication algorithms\n * and for fast base DEFAULT_DISPLAY_BASE printing. On older machines with no\n * native doubles, it might be worth to only use ints.\n ", + "start": 87, + "end": 382, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 9, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " export const DEFAULT_REPRESENTATION_BASE = Math.pow(DEFAULT_DISPLAY_BASE,Math.floor(Math.log(Math.sqrt(Math.pow(2,53)))/Math.log(DEFAULT_DISPLAY_BASE))) ;", + "start": 383, + "end": 540, + "loc": { + "start": { + "line": 10, + "column": 0 + }, + "end": { + "line": 10, + "column": 157 + } + } + }, + { + "type": "CommentLine", + "value": " export const DEFAULT_REPRESENTATION_BASE = Math.pow(16,Math.floor(Math.log(Math.sqrt(Math.pow(2,53)))/Math.log(16))) ;", + "start": 541, + "end": 662, + "loc": { + "start": { + "line": 11, + "column": 0 + }, + "end": { + "line": 11, + "column": 121 + } + } + }, + { + "type": "CommentLine", + "value": " export const DEFAULT_REPRESENTATION_BASE = Math.pow(2,26) | 0;", + "start": 663, + "end": 728, + "loc": { + "start": { + "line": 12, + "column": 0 + }, + "end": { + "line": 12, + "column": 65 + } + } + } + ], + "trailingComments": [] + }, + "leadingComments": [ + { + "type": "CommentBlock", + "value": "\n * Biggest power of DEFAULT_DISPLAY_BASE whose square holds in a single double\n * with full precision. For working correctly with multiplication algorithms\n * and for fast base DEFAULT_DISPLAY_BASE printing. On older machines with no\n * native doubles, it might be worth to only use ints.\n ", + "start": 87, + "end": 382, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 9, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " export const DEFAULT_REPRESENTATION_BASE = Math.pow(DEFAULT_DISPLAY_BASE,Math.floor(Math.log(Math.sqrt(Math.pow(2,53)))/Math.log(DEFAULT_DISPLAY_BASE))) ;", + "start": 383, + "end": 540, + "loc": { + "start": { + "line": 10, + "column": 0 + }, + "end": { + "line": 10, + "column": 157 + } + } + }, + { + "type": "CommentLine", + "value": " export const DEFAULT_REPRESENTATION_BASE = Math.pow(16,Math.floor(Math.log(Math.sqrt(Math.pow(2,53)))/Math.log(16))) ;", + "start": 541, + "end": 662, + "loc": { + "start": { + "line": 11, + "column": 0 + }, + "end": { + "line": 11, + "column": 121 + } + } + }, + { + "type": "CommentLine", + "value": " export const DEFAULT_REPRESENTATION_BASE = Math.pow(2,26) | 0;", + "start": 663, + "end": 728, + "loc": { + "start": { + "line": 12, + "column": 0 + }, + "end": { + "line": 12, + "column": 65 + } + } + } + ] + } + ], + "directives": [] + }, + "comments": [ + { + "type": "CommentLine", + "value": " Import { DEFAULT_DISPLAY_BASE } from './' ;", + "start": 0, + "end": 46, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 46 + } + } + }, + { + "type": "CommentBlock", + "value": "\n * Biggest power of DEFAULT_DISPLAY_BASE whose square holds in a single double\n * with full precision. For working correctly with multiplication algorithms\n * and for fast base DEFAULT_DISPLAY_BASE printing. On older machines with no\n * native doubles, it might be worth to only use ints.\n ", + "start": 87, + "end": 382, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 9, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " export const DEFAULT_REPRESENTATION_BASE = Math.pow(DEFAULT_DISPLAY_BASE,Math.floor(Math.log(Math.sqrt(Math.pow(2,53)))/Math.log(DEFAULT_DISPLAY_BASE))) ;", + "start": 383, + "end": 540, + "loc": { + "start": { + "line": 10, + "column": 0 + }, + "end": { + "line": 10, + "column": 157 + } + } + }, + { + "type": "CommentLine", + "value": " export const DEFAULT_REPRESENTATION_BASE = Math.pow(16,Math.floor(Math.log(Math.sqrt(Math.pow(2,53)))/Math.log(16))) ;", + "start": 541, + "end": 662, + "loc": { + "start": { + "line": 11, + "column": 0 + }, + "end": { + "line": 11, + "column": 121 + } + } + }, + { + "type": "CommentLine", + "value": " export const DEFAULT_REPRESENTATION_BASE = Math.pow(2,26) | 0;", + "start": 663, + "end": 728, + "loc": { + "start": { + "line": 12, + "column": 0 + }, + "end": { + "line": 12, + "column": 65 + } + } + } + ], + "tokens": [ + { + "type": "CommentLine", + "value": " Import { DEFAULT_DISPLAY_BASE } from './' ;", + "start": 0, + "end": 46, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 46 + } + } + }, + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 47, + "end": 53, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 54, + "end": 55, + "loc": { + "start": { + "line": 2, + "column": 7 + }, + "end": { + "line": 2, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MAX_BASE", + "start": 55, + "end": 63, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 16 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 63, + "end": 64, + "loc": { + "start": { + "line": 2, + "column": 16 + }, + "end": { + "line": 2, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 65, + "end": 69, + "loc": { + "start": { + "line": 2, + "column": 18 + }, + "end": { + "line": 2, + "column": 22 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./_limits.js", + "start": 70, + "end": 84, + "loc": { + "start": { + "line": 2, + "column": 23 + }, + "end": { + "line": 2, + "column": 37 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 84, + "end": 85, + "loc": { + "start": { + "line": 2, + "column": 37 + }, + "end": { + "line": 2, + "column": 38 + } + } + }, + { + "type": "CommentBlock", + "value": "\n * Biggest power of DEFAULT_DISPLAY_BASE whose square holds in a single double\n * with full precision. For working correctly with multiplication algorithms\n * and for fast base DEFAULT_DISPLAY_BASE printing. On older machines with no\n * native doubles, it might be worth to only use ints.\n ", + "start": 87, + "end": 382, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 9, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " export const DEFAULT_REPRESENTATION_BASE = Math.pow(DEFAULT_DISPLAY_BASE,Math.floor(Math.log(Math.sqrt(Math.pow(2,53)))/Math.log(DEFAULT_DISPLAY_BASE))) ;", + "start": 383, + "end": 540, + "loc": { + "start": { + "line": 10, + "column": 0 + }, + "end": { + "line": 10, + "column": 157 + } + } + }, + { + "type": "CommentLine", + "value": " export const DEFAULT_REPRESENTATION_BASE = Math.pow(16,Math.floor(Math.log(Math.sqrt(Math.pow(2,53)))/Math.log(16))) ;", + "start": 541, + "end": 662, + "loc": { + "start": { + "line": 11, + "column": 0 + }, + "end": { + "line": 11, + "column": 121 + } + } + }, + { + "type": "CommentLine", + "value": " export const DEFAULT_REPRESENTATION_BASE = Math.pow(2,26) | 0;", + "start": 663, + "end": 728, + "loc": { + "start": { + "line": 12, + "column": 0 + }, + "end": { + "line": 12, + "column": 65 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 729, + "end": 735, + "loc": { + "start": { + "line": 13, + "column": 0 + }, + "end": { + "line": 13, + "column": 6 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 736, + "end": 741, + "loc": { + "start": { + "line": 13, + "column": 7 + }, + "end": { + "line": 13, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "DEFAULT_REPRESENTATION_BASE", + "start": 742, + "end": 769, + "loc": { + "start": { + "line": 13, + "column": 13 + }, + "end": { + "line": 13, + "column": 40 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 770, + "end": 771, + "loc": { + "start": { + "line": 13, + "column": 41 + }, + "end": { + "line": 13, + "column": 42 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MAX_BASE", + "start": 772, + "end": 780, + "loc": { + "start": { + "line": 13, + "column": 43 + }, + "end": { + "line": 13, + "column": 51 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 780, + "end": 781, + "loc": { + "start": { + "line": 13, + "column": 51 + }, + "end": { + "line": 13, + "column": 52 + } + } + }, + { + "type": { + "label": "eof", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 782, + "end": 782, + "loc": { + "start": { + "line": 14, + "column": 0 + }, + "end": { + "line": 14, + "column": 0 + } + } + } + ] +} \ No newline at end of file diff --git a/ast/source/Integer.js.json b/ast/source/Integer.js.json new file mode 100644 index 0000000..8cf3e5b --- /dev/null +++ b/ast/source/Integer.js.json @@ -0,0 +1,119925 @@ +{ + "type": "File", + "start": 0, + "end": 11906, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 596, + "column": 0 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 11906, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 596, + "column": 0 + } + }, + "sourceType": "module", + "body": [ + { + "type": "ImportDeclaration", + "start": 0, + "end": 63, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 63 + } + }, + "specifiers": [ + { + "type": "ImportSpecifier", + "start": 8, + "end": 28, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 28 + } + }, + "imported": { + "type": "Identifier", + "start": 8, + "end": 28, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 28 + }, + "identifierName": "DEFAULT_DISPLAY_BASE" + }, + "name": "DEFAULT_DISPLAY_BASE" + }, + "local": { + "type": "Identifier", + "start": 8, + "end": 28, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 28 + }, + "identifierName": "DEFAULT_DISPLAY_BASE" + }, + "name": "DEFAULT_DISPLAY_BASE" + } + } + ], + "source": { + "type": "StringLiteral", + "start": 35, + "end": 62, + "loc": { + "start": { + "line": 1, + "column": 35 + }, + "end": { + "line": 1, + "column": 62 + } + }, + "extra": { + "rawValue": "./DEFAULT_DISPLAY_BASE.js", + "raw": "'./DEFAULT_DISPLAY_BASE.js'" + }, + "value": "./DEFAULT_DISPLAY_BASE.js" + } + }, + { + "type": "ImportDeclaration", + "start": 64, + "end": 121, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 57 + } + }, + "specifiers": [ + { + "type": "ImportSpecifier", + "start": 72, + "end": 89, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 25 + } + }, + "imported": { + "type": "Identifier", + "start": 72, + "end": 89, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 25 + }, + "identifierName": "ZeroDivisionError" + }, + "name": "ZeroDivisionError" + }, + "local": { + "type": "Identifier", + "start": 72, + "end": 89, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 25 + }, + "identifierName": "ZeroDivisionError" + }, + "name": "ZeroDivisionError" + } + } + ], + "source": { + "type": "StringLiteral", + "start": 96, + "end": 120, + "loc": { + "start": { + "line": 2, + "column": 32 + }, + "end": { + "line": 2, + "column": 56 + } + }, + "extra": { + "rawValue": "./ZeroDivisionError.js", + "raw": "'./ZeroDivisionError.js'" + }, + "value": "./ZeroDivisionError.js" + } + }, + { + "type": "ImportDeclaration", + "start": 123, + "end": 169, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 4, + "column": 46 + } + }, + "specifiers": [ + { + "type": "ImportSpecifier", + "start": 131, + "end": 141, + "loc": { + "start": { + "line": 4, + "column": 8 + }, + "end": { + "line": 4, + "column": 18 + } + }, + "imported": { + "type": "Identifier", + "start": 131, + "end": 141, + "loc": { + "start": { + "line": 4, + "column": 8 + }, + "end": { + "line": 4, + "column": 18 + }, + "identifierName": "ValueError" + }, + "name": "ValueError" + }, + "local": { + "type": "Identifier", + "start": 131, + "end": 141, + "loc": { + "start": { + "line": 4, + "column": 8 + }, + "end": { + "line": 4, + "column": 18 + }, + "identifierName": "ValueError" + }, + "name": "ValueError" + } + } + ], + "source": { + "type": "StringLiteral", + "start": 148, + "end": 168, + "loc": { + "start": { + "line": 4, + "column": 25 + }, + "end": { + "line": 4, + "column": 45 + } + }, + "extra": { + "rawValue": "@aureooms/js-error", + "raw": "'@aureooms/js-error'" + }, + "value": "@aureooms/js-error" + } + }, + { + "type": "ImportDeclaration", + "start": 171, + "end": 218, + "loc": { + "start": { + "line": 6, + "column": 0 + }, + "end": { + "line": 6, + "column": 47 + } + }, + "specifiers": [ + { + "type": "ImportSpecifier", + "start": 179, + "end": 191, + "loc": { + "start": { + "line": 6, + "column": 8 + }, + "end": { + "line": 6, + "column": 20 + } + }, + "imported": { + "type": "Identifier", + "start": 179, + "end": 191, + "loc": { + "start": { + "line": 6, + "column": 8 + }, + "end": { + "line": 6, + "column": 20 + }, + "identifierName": "_from_number" + }, + "name": "_from_number" + }, + "local": { + "type": "Identifier", + "start": 179, + "end": 191, + "loc": { + "start": { + "line": 6, + "column": 8 + }, + "end": { + "line": 6, + "column": 20 + }, + "identifierName": "_from_number" + }, + "name": "_from_number" + } + } + ], + "source": { + "type": "StringLiteral", + "start": 198, + "end": 217, + "loc": { + "start": { + "line": 6, + "column": 27 + }, + "end": { + "line": 6, + "column": 46 + } + }, + "extra": { + "rawValue": "./_from_number.js", + "raw": "'./_from_number.js'" + }, + "value": "./_from_number.js" + } + }, + { + "type": "ImportDeclaration", + "start": 220, + "end": 460, + "loc": { + "start": { + "line": 8, + "column": 0 + }, + "end": { + "line": 26, + "column": 41 + } + }, + "specifiers": [ + { + "type": "ImportSpecifier", + "start": 230, + "end": 239, + "loc": { + "start": { + "line": 9, + "column": 1 + }, + "end": { + "line": 9, + "column": 10 + } + }, + "imported": { + "type": "Identifier", + "start": 230, + "end": 239, + "loc": { + "start": { + "line": 9, + "column": 1 + }, + "end": { + "line": 9, + "column": 10 + }, + "identifierName": "stringify" + }, + "name": "stringify" + }, + "local": { + "type": "Identifier", + "start": 230, + "end": 239, + "loc": { + "start": { + "line": 9, + "column": 1 + }, + "end": { + "line": 9, + "column": 10 + }, + "identifierName": "stringify" + }, + "name": "stringify" + } + }, + { + "type": "ImportSpecifier", + "start": 242, + "end": 249, + "loc": { + "start": { + "line": 10, + "column": 1 + }, + "end": { + "line": 10, + "column": 8 + } + }, + "imported": { + "type": "Identifier", + "start": 242, + "end": 249, + "loc": { + "start": { + "line": 10, + "column": 1 + }, + "end": { + "line": 10, + "column": 8 + }, + "identifierName": "convert" + }, + "name": "convert" + }, + "local": { + "type": "Identifier", + "start": 242, + "end": 249, + "loc": { + "start": { + "line": 10, + "column": 1 + }, + "end": { + "line": 10, + "column": 8 + }, + "identifierName": "convert" + }, + "name": "convert" + } + }, + { + "type": "ImportSpecifier", + "start": 252, + "end": 266, + "loc": { + "start": { + "line": 11, + "column": 1 + }, + "end": { + "line": 11, + "column": 15 + } + }, + "imported": { + "type": "Identifier", + "start": 252, + "end": 266, + "loc": { + "start": { + "line": 11, + "column": 1 + }, + "end": { + "line": 11, + "column": 15 + }, + "identifierName": "_trim_positive" + }, + "name": "_trim_positive" + }, + "local": { + "type": "Identifier", + "start": 252, + "end": 266, + "loc": { + "start": { + "line": 11, + "column": 1 + }, + "end": { + "line": 11, + "column": 15 + }, + "identifierName": "_trim_positive" + }, + "name": "_trim_positive" + } + }, + { + "type": "ImportSpecifier", + "start": 269, + "end": 275, + "loc": { + "start": { + "line": 12, + "column": 1 + }, + "end": { + "line": 12, + "column": 7 + } + }, + "imported": { + "type": "Identifier", + "start": 269, + "end": 275, + "loc": { + "start": { + "line": 12, + "column": 1 + }, + "end": { + "line": 12, + "column": 7 + }, + "identifierName": "_alloc" + }, + "name": "_alloc" + }, + "local": { + "type": "Identifier", + "start": 269, + "end": 275, + "loc": { + "start": { + "line": 12, + "column": 1 + }, + "end": { + "line": 12, + "column": 7 + }, + "identifierName": "_alloc" + }, + "name": "_alloc" + } + }, + { + "type": "ImportSpecifier", + "start": 278, + "end": 283, + "loc": { + "start": { + "line": 13, + "column": 1 + }, + "end": { + "line": 13, + "column": 6 + } + }, + "imported": { + "type": "Identifier", + "start": 278, + "end": 283, + "loc": { + "start": { + "line": 13, + "column": 1 + }, + "end": { + "line": 13, + "column": 6 + }, + "identifierName": "_copy" + }, + "name": "_copy" + }, + "local": { + "type": "Identifier", + "start": 278, + "end": 283, + "loc": { + "start": { + "line": 13, + "column": 1 + }, + "end": { + "line": 13, + "column": 6 + }, + "identifierName": "_copy" + }, + "name": "_copy" + } + }, + { + "type": "ImportSpecifier", + "start": 286, + "end": 292, + "loc": { + "start": { + "line": 14, + "column": 1 + }, + "end": { + "line": 14, + "column": 7 + } + }, + "imported": { + "type": "Identifier", + "start": 286, + "end": 292, + "loc": { + "start": { + "line": 14, + "column": 1 + }, + "end": { + "line": 14, + "column": 7 + }, + "identifierName": "_zeros" + }, + "name": "_zeros" + }, + "local": { + "type": "Identifier", + "start": 286, + "end": 292, + "loc": { + "start": { + "line": 14, + "column": 1 + }, + "end": { + "line": 14, + "column": 7 + }, + "identifierName": "_zeros" + }, + "name": "_zeros" + } + }, + { + "type": "ImportSpecifier", + "start": 295, + "end": 297, + "loc": { + "start": { + "line": 15, + "column": 1 + }, + "end": { + "line": 15, + "column": 3 + } + }, + "imported": { + "type": "Identifier", + "start": 295, + "end": 297, + "loc": { + "start": { + "line": 15, + "column": 1 + }, + "end": { + "line": 15, + "column": 3 + }, + "identifierName": "jz" + }, + "name": "jz" + }, + "local": { + "type": "Identifier", + "start": 295, + "end": 297, + "loc": { + "start": { + "line": 15, + "column": 1 + }, + "end": { + "line": 15, + "column": 3 + }, + "identifierName": "jz" + }, + "name": "jz" + } + }, + { + "type": "ImportSpecifier", + "start": 300, + "end": 303, + "loc": { + "start": { + "line": 16, + "column": 1 + }, + "end": { + "line": 16, + "column": 4 + } + }, + "imported": { + "type": "Identifier", + "start": 300, + "end": 303, + "loc": { + "start": { + "line": 16, + "column": 1 + }, + "end": { + "line": 16, + "column": 4 + }, + "identifierName": "cmp" + }, + "name": "cmp" + }, + "local": { + "type": "Identifier", + "start": 300, + "end": 303, + "loc": { + "start": { + "line": 16, + "column": 1 + }, + "end": { + "line": 16, + "column": 4 + }, + "identifierName": "cmp" + }, + "name": "cmp" + } + }, + { + "type": "ImportSpecifier", + "start": 306, + "end": 308, + "loc": { + "start": { + "line": 17, + "column": 1 + }, + "end": { + "line": 17, + "column": 3 + } + }, + "imported": { + "type": "Identifier", + "start": 306, + "end": 308, + "loc": { + "start": { + "line": 17, + "column": 1 + }, + "end": { + "line": 17, + "column": 3 + }, + "identifierName": "eq" + }, + "name": "eq" + }, + "local": { + "type": "Identifier", + "start": 306, + "end": 308, + "loc": { + "start": { + "line": 17, + "column": 1 + }, + "end": { + "line": 17, + "column": 3 + }, + "identifierName": "eq" + }, + "name": "eq" + } + }, + { + "type": "ImportSpecifier", + "start": 311, + "end": 314, + "loc": { + "start": { + "line": 18, + "column": 1 + }, + "end": { + "line": 18, + "column": 4 + } + }, + "imported": { + "type": "Identifier", + "start": 311, + "end": 314, + "loc": { + "start": { + "line": 18, + "column": 1 + }, + "end": { + "line": 18, + "column": 4 + }, + "identifierName": "add" + }, + "name": "add" + }, + "local": { + "type": "Identifier", + "start": 311, + "end": 314, + "loc": { + "start": { + "line": 18, + "column": 1 + }, + "end": { + "line": 18, + "column": 4 + }, + "identifierName": "add" + }, + "name": "add" + } + }, + { + "type": "ImportSpecifier", + "start": 317, + "end": 321, + "loc": { + "start": { + "line": 19, + "column": 1 + }, + "end": { + "line": 19, + "column": 5 + } + }, + "imported": { + "type": "Identifier", + "start": 317, + "end": 321, + "loc": { + "start": { + "line": 19, + "column": 1 + }, + "end": { + "line": 19, + "column": 5 + }, + "identifierName": "_sub" + }, + "name": "_sub" + }, + "local": { + "type": "Identifier", + "start": 317, + "end": 321, + "loc": { + "start": { + "line": 19, + "column": 1 + }, + "end": { + "line": 19, + "column": 5 + }, + "identifierName": "_sub" + }, + "name": "_sub" + } + }, + { + "type": "ImportSpecifier", + "start": 324, + "end": 327, + "loc": { + "start": { + "line": 20, + "column": 1 + }, + "end": { + "line": 20, + "column": 4 + } + }, + "imported": { + "type": "Identifier", + "start": 324, + "end": 327, + "loc": { + "start": { + "line": 20, + "column": 1 + }, + "end": { + "line": 20, + "column": 4 + }, + "identifierName": "mul" + }, + "name": "mul" + }, + "local": { + "type": "Identifier", + "start": 324, + "end": 327, + "loc": { + "start": { + "line": 20, + "column": 1 + }, + "end": { + "line": 20, + "column": 4 + }, + "identifierName": "mul" + }, + "name": "mul" + } + }, + { + "type": "ImportSpecifier", + "start": 330, + "end": 338, + "loc": { + "start": { + "line": 21, + "column": 1 + }, + "end": { + "line": 21, + "column": 9 + } + }, + "imported": { + "type": "Identifier", + "start": 330, + "end": 338, + "loc": { + "start": { + "line": 21, + "column": 1 + }, + "end": { + "line": 21, + "column": 9 + }, + "identifierName": "_idivmod" + }, + "name": "_idivmod" + }, + "local": { + "type": "Identifier", + "start": 330, + "end": 338, + "loc": { + "start": { + "line": 21, + "column": 1 + }, + "end": { + "line": 21, + "column": 9 + }, + "identifierName": "_idivmod" + }, + "name": "_idivmod" + } + }, + { + "type": "ImportSpecifier", + "start": 341, + "end": 352, + "loc": { + "start": { + "line": 22, + "column": 1 + }, + "end": { + "line": 22, + "column": 12 + } + }, + "imported": { + "type": "Identifier", + "start": 341, + "end": 352, + "loc": { + "start": { + "line": 22, + "column": 1 + }, + "end": { + "line": 22, + "column": 12 + }, + "identifierName": "_pow_double" + }, + "name": "_pow_double" + }, + "local": { + "type": "Identifier", + "start": 341, + "end": 352, + "loc": { + "start": { + "line": 22, + "column": 1 + }, + "end": { + "line": 22, + "column": 12 + }, + "identifierName": "_pow_double" + }, + "name": "_pow_double" + } + }, + { + "type": "ImportSpecifier", + "start": 355, + "end": 364, + "loc": { + "start": { + "line": 23, + "column": 1 + }, + "end": { + "line": 23, + "column": 10 + } + }, + "imported": { + "type": "Identifier", + "start": 355, + "end": 364, + "loc": { + "start": { + "line": 23, + "column": 1 + }, + "end": { + "line": 23, + "column": 10 + }, + "identifierName": "increment" + }, + "name": "increment" + }, + "local": { + "type": "Identifier", + "start": 355, + "end": 364, + "loc": { + "start": { + "line": 23, + "column": 1 + }, + "end": { + "line": 23, + "column": 10 + }, + "identifierName": "increment" + }, + "name": "increment" + } + }, + { + "type": "ImportSpecifier", + "start": 367, + "end": 386, + "loc": { + "start": { + "line": 24, + "column": 1 + }, + "end": { + "line": 24, + "column": 20 + } + }, + "imported": { + "type": "Identifier", + "start": 367, + "end": 386, + "loc": { + "start": { + "line": 24, + "column": 1 + }, + "end": { + "line": 24, + "column": 20 + }, + "identifierName": "euclidean_algorithm" + }, + "name": "euclidean_algorithm" + }, + "local": { + "type": "Identifier", + "start": 367, + "end": 386, + "loc": { + "start": { + "line": 24, + "column": 1 + }, + "end": { + "line": 24, + "column": 20 + }, + "identifierName": "euclidean_algorithm" + }, + "name": "euclidean_algorithm" + } + }, + { + "type": "ImportSpecifier", + "start": 389, + "end": 417, + "loc": { + "start": { + "line": 25, + "column": 1 + }, + "end": { + "line": 25, + "column": 29 + } + }, + "imported": { + "type": "Identifier", + "start": 389, + "end": 417, + "loc": { + "start": { + "line": 25, + "column": 1 + }, + "end": { + "line": 25, + "column": 29 + }, + "identifierName": "extended_euclidean_algorithm" + }, + "name": "extended_euclidean_algorithm" + }, + "local": { + "type": "Identifier", + "start": 389, + "end": 417, + "loc": { + "start": { + "line": 25, + "column": 1 + }, + "end": { + "line": 25, + "column": 29 + }, + "identifierName": "extended_euclidean_algorithm" + }, + "name": "extended_euclidean_algorithm" + } + } + ], + "source": { + "type": "StringLiteral", + "start": 426, + "end": 459, + "loc": { + "start": { + "line": 26, + "column": 7 + }, + "end": { + "line": 26, + "column": 40 + } + }, + "extra": { + "rawValue": "@aureooms/js-integer-big-endian", + "raw": "'@aureooms/js-integer-big-endian'" + }, + "value": "@aureooms/js-integer-big-endian" + } + }, + { + "type": "ImportDeclaration", + "start": 462, + "end": 524, + "loc": { + "start": { + "line": 28, + "column": 0 + }, + "end": { + "line": 28, + "column": 62 + } + }, + "specifiers": [ + { + "type": "ImportSpecifier", + "start": 470, + "end": 480, + "loc": { + "start": { + "line": 28, + "column": 8 + }, + "end": { + "line": 28, + "column": 18 + } + }, + "imported": { + "type": "Identifier", + "start": 470, + "end": 480, + "loc": { + "start": { + "line": 28, + "column": 8 + }, + "end": { + "line": 28, + "column": 18 + }, + "identifierName": "MIN_NUMBER" + }, + "name": "MIN_NUMBER" + }, + "local": { + "type": "Identifier", + "start": 470, + "end": 480, + "loc": { + "start": { + "line": 28, + "column": 8 + }, + "end": { + "line": 28, + "column": 18 + }, + "identifierName": "MIN_NUMBER" + }, + "name": "MIN_NUMBER" + } + }, + { + "type": "ImportSpecifier", + "start": 482, + "end": 492, + "loc": { + "start": { + "line": 28, + "column": 20 + }, + "end": { + "line": 28, + "column": 30 + } + }, + "imported": { + "type": "Identifier", + "start": 482, + "end": 492, + "loc": { + "start": { + "line": 28, + "column": 20 + }, + "end": { + "line": 28, + "column": 30 + }, + "identifierName": "MAX_NUMBER" + }, + "name": "MAX_NUMBER" + }, + "local": { + "type": "Identifier", + "start": 482, + "end": 492, + "loc": { + "start": { + "line": 28, + "column": 20 + }, + "end": { + "line": 28, + "column": 30 + }, + "identifierName": "MAX_NUMBER" + }, + "name": "MAX_NUMBER" + } + }, + { + "type": "ImportSpecifier", + "start": 494, + "end": 502, + "loc": { + "start": { + "line": 28, + "column": 32 + }, + "end": { + "line": 28, + "column": 40 + } + }, + "imported": { + "type": "Identifier", + "start": 494, + "end": 502, + "loc": { + "start": { + "line": 28, + "column": 32 + }, + "end": { + "line": 28, + "column": 40 + }, + "identifierName": "MAX_BASE" + }, + "name": "MAX_BASE" + }, + "local": { + "type": "Identifier", + "start": 494, + "end": 502, + "loc": { + "start": { + "line": 28, + "column": 32 + }, + "end": { + "line": 28, + "column": 40 + }, + "identifierName": "MAX_BASE" + }, + "name": "MAX_BASE" + } + } + ], + "source": { + "type": "StringLiteral", + "start": 509, + "end": 523, + "loc": { + "start": { + "line": 28, + "column": 47 + }, + "end": { + "line": 28, + "column": 61 + } + }, + "extra": { + "rawValue": "./_limits.js", + "raw": "'./_limits.js'" + }, + "value": "./_limits.js" + } + }, + { + "type": "ExportNamedDeclaration", + "start": 526, + "end": 11905, + "loc": { + "start": { + "line": 30, + "column": 0 + }, + "end": { + "line": 595, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "ClassDeclaration", + "start": 533, + "end": 11905, + "loc": { + "start": { + "line": 30, + "column": 7 + }, + "end": { + "line": 595, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 539, + "end": 546, + "loc": { + "start": { + "line": 30, + "column": 13 + }, + "end": { + "line": 30, + "column": 20 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "superClass": null, + "body": { + "type": "ClassBody", + "start": 547, + "end": 11905, + "loc": { + "start": { + "line": 30, + "column": 21 + }, + "end": { + "line": 595, + "column": 1 + } + }, + "body": [ + { + "type": "ClassMethod", + "start": 550, + "end": 671, + "loc": { + "start": { + "line": 31, + "column": 1 + }, + "end": { + "line": 35, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 550, + "end": 561, + "loc": { + "start": { + "line": 31, + "column": 1 + }, + "end": { + "line": 31, + "column": 12 + }, + "identifierName": "constructor" + }, + "name": "constructor" + }, + "kind": "constructor", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 562, + "end": 566, + "loc": { + "start": { + "line": 31, + "column": 13 + }, + "end": { + "line": 31, + "column": 17 + }, + "identifierName": "base" + }, + "name": "base" + }, + { + "type": "Identifier", + "start": 568, + "end": 579, + "loc": { + "start": { + "line": 31, + "column": 19 + }, + "end": { + "line": 31, + "column": 30 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + }, + { + "type": "Identifier", + "start": 581, + "end": 586, + "loc": { + "start": { + "line": 31, + "column": 32 + }, + "end": { + "line": 31, + "column": 37 + }, + "identifierName": "limbs" + }, + "name": "limbs" + } + ], + "body": { + "type": "BlockStatement", + "start": 588, + "end": 671, + "loc": { + "start": { + "line": 31, + "column": 39 + }, + "end": { + "line": 35, + "column": 2 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 592, + "end": 610, + "loc": { + "start": { + "line": 32, + "column": 2 + }, + "end": { + "line": 32, + "column": 20 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 592, + "end": 609, + "loc": { + "start": { + "line": 32, + "column": 2 + }, + "end": { + "line": 32, + "column": 19 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 592, + "end": 602, + "loc": { + "start": { + "line": 32, + "column": 2 + }, + "end": { + "line": 32, + "column": 12 + } + }, + "object": { + "type": "ThisExpression", + "start": 592, + "end": 596, + "loc": { + "start": { + "line": 32, + "column": 2 + }, + "end": { + "line": 32, + "column": 6 + } + } + }, + "property": { + "type": "Identifier", + "start": 597, + "end": 602, + "loc": { + "start": { + "line": 32, + "column": 7 + }, + "end": { + "line": 32, + "column": 12 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + "right": { + "type": "Identifier", + "start": 605, + "end": 609, + "loc": { + "start": { + "line": 32, + "column": 15 + }, + "end": { + "line": 32, + "column": 19 + }, + "identifierName": "base" + }, + "name": "base" + } + } + }, + { + "type": "ExpressionStatement", + "start": 613, + "end": 645, + "loc": { + "start": { + "line": 33, + "column": 2 + }, + "end": { + "line": 33, + "column": 34 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 613, + "end": 644, + "loc": { + "start": { + "line": 33, + "column": 2 + }, + "end": { + "line": 33, + "column": 33 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 613, + "end": 630, + "loc": { + "start": { + "line": 33, + "column": 2 + }, + "end": { + "line": 33, + "column": 19 + } + }, + "object": { + "type": "ThisExpression", + "start": 613, + "end": 617, + "loc": { + "start": { + "line": 33, + "column": 2 + }, + "end": { + "line": 33, + "column": 6 + } + } + }, + "property": { + "type": "Identifier", + "start": 618, + "end": 630, + "loc": { + "start": { + "line": 33, + "column": 7 + }, + "end": { + "line": 33, + "column": 19 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "right": { + "type": "Identifier", + "start": 633, + "end": 644, + "loc": { + "start": { + "line": 33, + "column": 22 + }, + "end": { + "line": 33, + "column": 33 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + } + } + }, + { + "type": "ExpressionStatement", + "start": 648, + "end": 668, + "loc": { + "start": { + "line": 34, + "column": 2 + }, + "end": { + "line": 34, + "column": 22 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 648, + "end": 667, + "loc": { + "start": { + "line": 34, + "column": 2 + }, + "end": { + "line": 34, + "column": 21 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 648, + "end": 659, + "loc": { + "start": { + "line": 34, + "column": 2 + }, + "end": { + "line": 34, + "column": 13 + } + }, + "object": { + "type": "ThisExpression", + "start": 648, + "end": 652, + "loc": { + "start": { + "line": 34, + "column": 2 + }, + "end": { + "line": 34, + "column": 6 + } + } + }, + "property": { + "type": "Identifier", + "start": 653, + "end": 659, + "loc": { + "start": { + "line": 34, + "column": 7 + }, + "end": { + "line": 34, + "column": 13 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + }, + "right": { + "type": "Identifier", + "start": 662, + "end": 667, + "loc": { + "start": { + "line": 34, + "column": 16 + }, + "end": { + "line": 34, + "column": 21 + }, + "identifierName": "limbs" + }, + "name": "limbs" + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 674, + "end": 806, + "loc": { + "start": { + "line": 37, + "column": 1 + }, + "end": { + "line": 42, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 674, + "end": 678, + "loc": { + "start": { + "line": 37, + "column": 1 + }, + "end": { + "line": 37, + "column": 5 + }, + "identifierName": "move" + }, + "name": "move" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 679, + "end": 684, + "loc": { + "start": { + "line": 37, + "column": 6 + }, + "end": { + "line": 37, + "column": 11 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 686, + "end": 806, + "loc": { + "start": { + "line": 37, + "column": 13 + }, + "end": { + "line": 42, + "column": 2 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 690, + "end": 715, + "loc": { + "start": { + "line": 38, + "column": 2 + }, + "end": { + "line": 38, + "column": 27 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 690, + "end": 714, + "loc": { + "start": { + "line": 38, + "column": 2 + }, + "end": { + "line": 38, + "column": 26 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 690, + "end": 701, + "loc": { + "start": { + "line": 38, + "column": 2 + }, + "end": { + "line": 38, + "column": 13 + } + }, + "object": { + "type": "Identifier", + "start": 690, + "end": 695, + "loc": { + "start": { + "line": 38, + "column": 2 + }, + "end": { + "line": 38, + "column": 7 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 696, + "end": 701, + "loc": { + "start": { + "line": 38, + "column": 8 + }, + "end": { + "line": 38, + "column": 13 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + "right": { + "type": "MemberExpression", + "start": 704, + "end": 714, + "loc": { + "start": { + "line": 38, + "column": 16 + }, + "end": { + "line": 38, + "column": 26 + } + }, + "object": { + "type": "ThisExpression", + "start": 704, + "end": 708, + "loc": { + "start": { + "line": 38, + "column": 16 + }, + "end": { + "line": 38, + "column": 20 + } + } + }, + "property": { + "type": "Identifier", + "start": 709, + "end": 714, + "loc": { + "start": { + "line": 38, + "column": 21 + }, + "end": { + "line": 38, + "column": 26 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 718, + "end": 757, + "loc": { + "start": { + "line": 39, + "column": 2 + }, + "end": { + "line": 39, + "column": 41 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 718, + "end": 756, + "loc": { + "start": { + "line": 39, + "column": 2 + }, + "end": { + "line": 39, + "column": 40 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 718, + "end": 736, + "loc": { + "start": { + "line": 39, + "column": 2 + }, + "end": { + "line": 39, + "column": 20 + } + }, + "object": { + "type": "Identifier", + "start": 718, + "end": 723, + "loc": { + "start": { + "line": 39, + "column": 2 + }, + "end": { + "line": 39, + "column": 7 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 724, + "end": 736, + "loc": { + "start": { + "line": 39, + "column": 8 + }, + "end": { + "line": 39, + "column": 20 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "right": { + "type": "MemberExpression", + "start": 739, + "end": 756, + "loc": { + "start": { + "line": 39, + "column": 23 + }, + "end": { + "line": 39, + "column": 40 + } + }, + "object": { + "type": "ThisExpression", + "start": 739, + "end": 743, + "loc": { + "start": { + "line": 39, + "column": 23 + }, + "end": { + "line": 39, + "column": 27 + } + } + }, + "property": { + "type": "Identifier", + "start": 744, + "end": 756, + "loc": { + "start": { + "line": 39, + "column": 28 + }, + "end": { + "line": 39, + "column": 40 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 760, + "end": 787, + "loc": { + "start": { + "line": 40, + "column": 2 + }, + "end": { + "line": 40, + "column": 29 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 760, + "end": 786, + "loc": { + "start": { + "line": 40, + "column": 2 + }, + "end": { + "line": 40, + "column": 28 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 760, + "end": 772, + "loc": { + "start": { + "line": 40, + "column": 2 + }, + "end": { + "line": 40, + "column": 14 + } + }, + "object": { + "type": "Identifier", + "start": 760, + "end": 765, + "loc": { + "start": { + "line": 40, + "column": 2 + }, + "end": { + "line": 40, + "column": 7 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 766, + "end": 772, + "loc": { + "start": { + "line": 40, + "column": 8 + }, + "end": { + "line": 40, + "column": 14 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + }, + "right": { + "type": "MemberExpression", + "start": 775, + "end": 786, + "loc": { + "start": { + "line": 40, + "column": 17 + }, + "end": { + "line": 40, + "column": 28 + } + }, + "object": { + "type": "ThisExpression", + "start": 775, + "end": 779, + "loc": { + "start": { + "line": 40, + "column": 17 + }, + "end": { + "line": 40, + "column": 21 + } + } + }, + "property": { + "type": "Identifier", + "start": 780, + "end": 786, + "loc": { + "start": { + "line": 40, + "column": 22 + }, + "end": { + "line": 40, + "column": 28 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + } + } + }, + { + "type": "ReturnStatement", + "start": 790, + "end": 803, + "loc": { + "start": { + "line": 41, + "column": 2 + }, + "end": { + "line": 41, + "column": 15 + } + }, + "argument": { + "type": "Identifier", + "start": 797, + "end": 802, + "loc": { + "start": { + "line": 41, + "column": 9 + }, + "end": { + "line": 41, + "column": 14 + }, + "identifierName": "other" + }, + "name": "other" + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 809, + "end": 887, + "loc": { + "start": { + "line": 44, + "column": 1 + }, + "end": { + "line": 46, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 809, + "end": 814, + "loc": { + "start": { + "line": 44, + "column": 1 + }, + "end": { + "line": 44, + "column": 6 + }, + "identifierName": "clone" + }, + "name": "clone" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 817, + "end": 887, + "loc": { + "start": { + "line": 44, + "column": 9 + }, + "end": { + "line": 46, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 821, + "end": 884, + "loc": { + "start": { + "line": 45, + "column": 2 + }, + "end": { + "line": 45, + "column": 65 + } + }, + "argument": { + "type": "NewExpression", + "start": 828, + "end": 883, + "loc": { + "start": { + "line": 45, + "column": 9 + }, + "end": { + "line": 45, + "column": 64 + } + }, + "callee": { + "type": "Identifier", + "start": 832, + "end": 839, + "loc": { + "start": { + "line": 45, + "column": 13 + }, + "end": { + "line": 45, + "column": 20 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 840, + "end": 850, + "loc": { + "start": { + "line": 45, + "column": 21 + }, + "end": { + "line": 45, + "column": 31 + } + }, + "object": { + "type": "ThisExpression", + "start": 840, + "end": 844, + "loc": { + "start": { + "line": 45, + "column": 21 + }, + "end": { + "line": 45, + "column": 25 + } + } + }, + "property": { + "type": "Identifier", + "start": 845, + "end": 850, + "loc": { + "start": { + "line": 45, + "column": 26 + }, + "end": { + "line": 45, + "column": 31 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + { + "type": "MemberExpression", + "start": 852, + "end": 869, + "loc": { + "start": { + "line": 45, + "column": 33 + }, + "end": { + "line": 45, + "column": 50 + } + }, + "object": { + "type": "ThisExpression", + "start": 852, + "end": 856, + "loc": { + "start": { + "line": 45, + "column": 33 + }, + "end": { + "line": 45, + "column": 37 + } + } + }, + "property": { + "type": "Identifier", + "start": 857, + "end": 869, + "loc": { + "start": { + "line": 45, + "column": 38 + }, + "end": { + "line": 45, + "column": 50 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + { + "type": "MemberExpression", + "start": 871, + "end": 882, + "loc": { + "start": { + "line": 45, + "column": 52 + }, + "end": { + "line": 45, + "column": 63 + } + }, + "object": { + "type": "ThisExpression", + "start": 871, + "end": 875, + "loc": { + "start": { + "line": 45, + "column": 52 + }, + "end": { + "line": 45, + "column": 56 + } + } + }, + "property": { + "type": "Identifier", + "start": 876, + "end": 882, + "loc": { + "start": { + "line": 45, + "column": 57 + }, + "end": { + "line": 45, + "column": 63 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 890, + "end": 1084, + "loc": { + "start": { + "line": 48, + "column": 1 + }, + "end": { + "line": 53, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 890, + "end": 904, + "loc": { + "start": { + "line": 48, + "column": 1 + }, + "end": { + "line": 48, + "column": 15 + }, + "identifierName": "_limbs_in_base" + }, + "name": "_limbs_in_base" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 905, + "end": 909, + "loc": { + "start": { + "line": 48, + "column": 16 + }, + "end": { + "line": 48, + "column": 20 + }, + "identifierName": "base" + }, + "name": "base" + } + ], + "body": { + "type": "BlockStatement", + "start": 911, + "end": 1084, + "loc": { + "start": { + "line": 48, + "column": 22 + }, + "end": { + "line": 53, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 970, + "end": 1081, + "loc": { + "start": { + "line": 50, + "column": 2 + }, + "end": { + "line": 52, + "column": 67 + } + }, + "argument": { + "type": "ConditionalExpression", + "start": 977, + "end": 1080, + "loc": { + "start": { + "line": 50, + "column": 9 + }, + "end": { + "line": 52, + "column": 66 + } + }, + "test": { + "type": "BinaryExpression", + "start": 977, + "end": 996, + "loc": { + "start": { + "line": 50, + "column": 9 + }, + "end": { + "line": 50, + "column": 28 + } + }, + "left": { + "type": "MemberExpression", + "start": 977, + "end": 987, + "loc": { + "start": { + "line": 50, + "column": 9 + }, + "end": { + "line": 50, + "column": 19 + } + }, + "object": { + "type": "ThisExpression", + "start": 977, + "end": 981, + "loc": { + "start": { + "line": 50, + "column": 9 + }, + "end": { + "line": 50, + "column": 13 + } + }, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 982, + "end": 987, + "loc": { + "start": { + "line": 50, + "column": 14 + }, + "end": { + "line": 50, + "column": 19 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false, + "leadingComments": null + }, + "operator": "===", + "right": { + "type": "Identifier", + "start": 992, + "end": 996, + "loc": { + "start": { + "line": 50, + "column": 24 + }, + "end": { + "line": 50, + "column": 28 + }, + "identifierName": "base" + }, + "name": "base" + }, + "leadingComments": null + }, + "consequent": { + "type": "MemberExpression", + "start": 1002, + "end": 1013, + "loc": { + "start": { + "line": 51, + "column": 5 + }, + "end": { + "line": 51, + "column": 16 + } + }, + "object": { + "type": "ThisExpression", + "start": 1002, + "end": 1006, + "loc": { + "start": { + "line": 51, + "column": 5 + }, + "end": { + "line": 51, + "column": 9 + } + } + }, + "property": { + "type": "Identifier", + "start": 1007, + "end": 1013, + "loc": { + "start": { + "line": 51, + "column": 10 + }, + "end": { + "line": 51, + "column": 16 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + }, + "alternate": { + "type": "CallExpression", + "start": 1019, + "end": 1080, + "loc": { + "start": { + "line": 52, + "column": 5 + }, + "end": { + "line": 52, + "column": 66 + } + }, + "callee": { + "type": "Identifier", + "start": 1019, + "end": 1026, + "loc": { + "start": { + "line": 52, + "column": 5 + }, + "end": { + "line": 52, + "column": 12 + }, + "identifierName": "convert" + }, + "name": "convert" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 1027, + "end": 1037, + "loc": { + "start": { + "line": 52, + "column": 13 + }, + "end": { + "line": 52, + "column": 23 + } + }, + "object": { + "type": "ThisExpression", + "start": 1027, + "end": 1031, + "loc": { + "start": { + "line": 52, + "column": 13 + }, + "end": { + "line": 52, + "column": 17 + } + } + }, + "property": { + "type": "Identifier", + "start": 1032, + "end": 1037, + "loc": { + "start": { + "line": 52, + "column": 18 + }, + "end": { + "line": 52, + "column": 23 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 1039, + "end": 1043, + "loc": { + "start": { + "line": 52, + "column": 25 + }, + "end": { + "line": 52, + "column": 29 + }, + "identifierName": "base" + }, + "name": "base" + }, + { + "type": "MemberExpression", + "start": 1045, + "end": 1056, + "loc": { + "start": { + "line": 52, + "column": 31 + }, + "end": { + "line": 52, + "column": 42 + } + }, + "object": { + "type": "ThisExpression", + "start": 1045, + "end": 1049, + "loc": { + "start": { + "line": 52, + "column": 31 + }, + "end": { + "line": 52, + "column": 35 + } + } + }, + "property": { + "type": "Identifier", + "start": 1050, + "end": 1056, + "loc": { + "start": { + "line": 52, + "column": 36 + }, + "end": { + "line": 52, + "column": 42 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + }, + { + "type": "NumericLiteral", + "start": 1058, + "end": 1059, + "loc": { + "start": { + "line": 52, + "column": 44 + }, + "end": { + "line": 52, + "column": 45 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 1061, + "end": 1079, + "loc": { + "start": { + "line": 52, + "column": 47 + }, + "end": { + "line": 52, + "column": 65 + } + }, + "object": { + "type": "MemberExpression", + "start": 1061, + "end": 1072, + "loc": { + "start": { + "line": 52, + "column": 47 + }, + "end": { + "line": 52, + "column": 58 + } + }, + "object": { + "type": "ThisExpression", + "start": 1061, + "end": 1065, + "loc": { + "start": { + "line": 52, + "column": 47 + }, + "end": { + "line": 52, + "column": 51 + } + } + }, + "property": { + "type": "Identifier", + "start": 1066, + "end": 1072, + "loc": { + "start": { + "line": 52, + "column": 52 + }, + "end": { + "line": 52, + "column": 58 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 1073, + "end": 1079, + "loc": { + "start": { + "line": 52, + "column": 59 + }, + "end": { + "line": 52, + "column": 65 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ] + }, + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " TODO save result for later ? Maybe replace base ?", + "start": 915, + "end": 967, + "loc": { + "start": { + "line": 49, + "column": 2 + }, + "end": { + "line": 49, + "column": 54 + } + } + } + ] + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 1087, + "end": 1318, + "loc": { + "start": { + "line": 55, + "column": 1 + }, + "end": { + "line": 67, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 1087, + "end": 1095, + "loc": { + "start": { + "line": 55, + "column": 1 + }, + "end": { + "line": 55, + "column": 9 + }, + "identifierName": "toString" + }, + "name": "toString" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "AssignmentPattern", + "start": 1096, + "end": 1123, + "loc": { + "start": { + "line": 55, + "column": 10 + }, + "end": { + "line": 55, + "column": 37 + } + }, + "left": { + "type": "Identifier", + "start": 1096, + "end": 1100, + "loc": { + "start": { + "line": 55, + "column": 10 + }, + "end": { + "line": 55, + "column": 14 + }, + "identifierName": "base" + }, + "name": "base" + }, + "right": { + "type": "Identifier", + "start": 1103, + "end": 1123, + "loc": { + "start": { + "line": 55, + "column": 17 + }, + "end": { + "line": 55, + "column": 37 + }, + "identifierName": "DEFAULT_DISPLAY_BASE" + }, + "name": "DEFAULT_DISPLAY_BASE" + } + } + ], + "body": { + "type": "BlockStatement", + "start": 1125, + "end": 1318, + "loc": { + "start": { + "line": 55, + "column": 39 + }, + "end": { + "line": 67, + "column": 2 + } + }, + "body": [ + { + "type": "IfStatement", + "start": 1129, + "end": 1159, + "loc": { + "start": { + "line": 56, + "column": 2 + }, + "end": { + "line": 56, + "column": 32 + } + }, + "test": { + "type": "CallExpression", + "start": 1133, + "end": 1146, + "loc": { + "start": { + "line": 56, + "column": 6 + }, + "end": { + "line": 56, + "column": 19 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1133, + "end": 1144, + "loc": { + "start": { + "line": 56, + "column": 6 + }, + "end": { + "line": 56, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 1133, + "end": 1137, + "loc": { + "start": { + "line": 56, + "column": 6 + }, + "end": { + "line": 56, + "column": 10 + } + } + }, + "property": { + "type": "Identifier", + "start": 1138, + "end": 1144, + "loc": { + "start": { + "line": 56, + "column": 11 + }, + "end": { + "line": 56, + "column": 17 + }, + "identifierName": "iszero" + }, + "name": "iszero" + }, + "computed": false + }, + "arguments": [] + }, + "consequent": { + "type": "ReturnStatement", + "start": 1148, + "end": 1159, + "loc": { + "start": { + "line": 56, + "column": 21 + }, + "end": { + "line": 56, + "column": 32 + } + }, + "argument": { + "type": "StringLiteral", + "start": 1155, + "end": 1158, + "loc": { + "start": { + "line": 56, + "column": 28 + }, + "end": { + "line": 56, + "column": 31 + } + }, + "extra": { + "rawValue": "0", + "raw": "'0'" + }, + "value": "0" + } + }, + "alternate": null + }, + { + "type": "VariableDeclaration", + "start": 1163, + "end": 1262, + "loc": { + "start": { + "line": 58, + "column": 2 + }, + "end": { + "line": 64, + "column": 4 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 1169, + "end": 1261, + "loc": { + "start": { + "line": 58, + "column": 8 + }, + "end": { + "line": 64, + "column": 3 + } + }, + "id": { + "type": "Identifier", + "start": 1169, + "end": 1175, + "loc": { + "start": { + "line": 58, + "column": 8 + }, + "end": { + "line": 58, + "column": 14 + }, + "identifierName": "digits" + }, + "name": "digits" + }, + "init": { + "type": "CallExpression", + "start": 1178, + "end": 1261, + "loc": { + "start": { + "line": 58, + "column": 17 + }, + "end": { + "line": 64, + "column": 3 + } + }, + "callee": { + "type": "Identifier", + "start": 1178, + "end": 1187, + "loc": { + "start": { + "line": 58, + "column": 17 + }, + "end": { + "line": 58, + "column": 26 + }, + "identifierName": "stringify" + }, + "name": "stringify" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 1192, + "end": 1202, + "loc": { + "start": { + "line": 59, + "column": 3 + }, + "end": { + "line": 59, + "column": 13 + } + }, + "object": { + "type": "ThisExpression", + "start": 1192, + "end": 1196, + "loc": { + "start": { + "line": 59, + "column": 3 + }, + "end": { + "line": 59, + "column": 7 + } + } + }, + "property": { + "type": "Identifier", + "start": 1197, + "end": 1202, + "loc": { + "start": { + "line": 59, + "column": 8 + }, + "end": { + "line": 59, + "column": 13 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 1207, + "end": 1211, + "loc": { + "start": { + "line": 60, + "column": 3 + }, + "end": { + "line": 60, + "column": 7 + }, + "identifierName": "base" + }, + "name": "base" + }, + { + "type": "MemberExpression", + "start": 1216, + "end": 1227, + "loc": { + "start": { + "line": 61, + "column": 3 + }, + "end": { + "line": 61, + "column": 14 + } + }, + "object": { + "type": "ThisExpression", + "start": 1216, + "end": 1220, + "loc": { + "start": { + "line": 61, + "column": 3 + }, + "end": { + "line": 61, + "column": 7 + } + } + }, + "property": { + "type": "Identifier", + "start": 1221, + "end": 1227, + "loc": { + "start": { + "line": 61, + "column": 8 + }, + "end": { + "line": 61, + "column": 14 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + }, + { + "type": "NumericLiteral", + "start": 1232, + "end": 1233, + "loc": { + "start": { + "line": 62, + "column": 3 + }, + "end": { + "line": 62, + "column": 4 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 1238, + "end": 1256, + "loc": { + "start": { + "line": 63, + "column": 3 + }, + "end": { + "line": 63, + "column": 21 + } + }, + "object": { + "type": "MemberExpression", + "start": 1238, + "end": 1249, + "loc": { + "start": { + "line": 63, + "column": 3 + }, + "end": { + "line": 63, + "column": 14 + } + }, + "object": { + "type": "ThisExpression", + "start": 1238, + "end": 1242, + "loc": { + "start": { + "line": 63, + "column": 3 + }, + "end": { + "line": 63, + "column": 7 + } + } + }, + "property": { + "type": "Identifier", + "start": 1243, + "end": 1249, + "loc": { + "start": { + "line": 63, + "column": 8 + }, + "end": { + "line": 63, + "column": 14 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 1250, + "end": 1256, + "loc": { + "start": { + "line": 63, + "column": 15 + }, + "end": { + "line": 63, + "column": 21 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "ReturnStatement", + "start": 1266, + "end": 1315, + "loc": { + "start": { + "line": 66, + "column": 2 + }, + "end": { + "line": 66, + "column": 51 + } + }, + "argument": { + "type": "ConditionalExpression", + "start": 1273, + "end": 1314, + "loc": { + "start": { + "line": 66, + "column": 9 + }, + "end": { + "line": 66, + "column": 50 + } + }, + "test": { + "type": "MemberExpression", + "start": 1273, + "end": 1290, + "loc": { + "start": { + "line": 66, + "column": 9 + }, + "end": { + "line": 66, + "column": 26 + } + }, + "object": { + "type": "ThisExpression", + "start": 1273, + "end": 1277, + "loc": { + "start": { + "line": 66, + "column": 9 + }, + "end": { + "line": 66, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 1278, + "end": 1290, + "loc": { + "start": { + "line": 66, + "column": 14 + }, + "end": { + "line": 66, + "column": 26 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "consequent": { + "type": "BinaryExpression", + "start": 1293, + "end": 1305, + "loc": { + "start": { + "line": 66, + "column": 29 + }, + "end": { + "line": 66, + "column": 41 + } + }, + "left": { + "type": "StringLiteral", + "start": 1293, + "end": 1296, + "loc": { + "start": { + "line": 66, + "column": 29 + }, + "end": { + "line": 66, + "column": 32 + } + }, + "extra": { + "rawValue": "-", + "raw": "'-'" + }, + "value": "-" + }, + "operator": "+", + "right": { + "type": "Identifier", + "start": 1299, + "end": 1305, + "loc": { + "start": { + "line": 66, + "column": 35 + }, + "end": { + "line": 66, + "column": 41 + }, + "identifierName": "digits" + }, + "name": "digits" + } + }, + "alternate": { + "type": "Identifier", + "start": 1308, + "end": 1314, + "loc": { + "start": { + "line": 66, + "column": 44 + }, + "end": { + "line": 66, + "column": 50 + }, + "identifierName": "digits" + }, + "name": "digits" + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 1321, + "end": 1786, + "loc": { + "start": { + "line": 69, + "column": 1 + }, + "end": { + "line": 88, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 1321, + "end": 1324, + "loc": { + "start": { + "line": 69, + "column": 1 + }, + "end": { + "line": 69, + "column": 4 + }, + "identifierName": "add" + }, + "name": "add" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 1325, + "end": 1330, + "loc": { + "start": { + "line": 69, + "column": 5 + }, + "end": { + "line": 69, + "column": 10 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 1332, + "end": 1786, + "loc": { + "start": { + "line": 69, + "column": 12 + }, + "end": { + "line": 88, + "column": 2 + } + }, + "body": [ + { + "type": "IfStatement", + "start": 1336, + "end": 1483, + "loc": { + "start": { + "line": 70, + "column": 2 + }, + "end": { + "line": 74, + "column": 3 + } + }, + "test": { + "type": "BinaryExpression", + "start": 1340, + "end": 1380, + "loc": { + "start": { + "line": 70, + "column": 6 + }, + "end": { + "line": 70, + "column": 46 + } + }, + "left": { + "type": "MemberExpression", + "start": 1340, + "end": 1357, + "loc": { + "start": { + "line": 70, + "column": 6 + }, + "end": { + "line": 70, + "column": 23 + } + }, + "object": { + "type": "ThisExpression", + "start": 1340, + "end": 1344, + "loc": { + "start": { + "line": 70, + "column": 6 + }, + "end": { + "line": 70, + "column": 10 + } + } + }, + "property": { + "type": "Identifier", + "start": 1345, + "end": 1357, + "loc": { + "start": { + "line": 70, + "column": 11 + }, + "end": { + "line": 70, + "column": 23 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "operator": "!==", + "right": { + "type": "MemberExpression", + "start": 1362, + "end": 1380, + "loc": { + "start": { + "line": 70, + "column": 28 + }, + "end": { + "line": 70, + "column": 46 + } + }, + "object": { + "type": "Identifier", + "start": 1362, + "end": 1367, + "loc": { + "start": { + "line": 70, + "column": 28 + }, + "end": { + "line": 70, + "column": 33 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 1368, + "end": 1380, + "loc": { + "start": { + "line": 70, + "column": 34 + }, + "end": { + "line": 70, + "column": 46 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + } + }, + "consequent": { + "type": "BlockStatement", + "start": 1382, + "end": 1483, + "loc": { + "start": { + "line": 70, + "column": 48 + }, + "end": { + "line": 74, + "column": 3 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 1387, + "end": 1479, + "loc": { + "start": { + "line": 71, + "column": 3 + }, + "end": { + "line": 73, + "column": 33 + } + }, + "argument": { + "type": "ConditionalExpression", + "start": 1394, + "end": 1478, + "loc": { + "start": { + "line": 71, + "column": 10 + }, + "end": { + "line": 73, + "column": 32 + } + }, + "test": { + "type": "MemberExpression", + "start": 1394, + "end": 1412, + "loc": { + "start": { + "line": 71, + "column": 10 + }, + "end": { + "line": 71, + "column": 28 + } + }, + "object": { + "type": "Identifier", + "start": 1394, + "end": 1399, + "loc": { + "start": { + "line": 71, + "column": 10 + }, + "end": { + "line": 71, + "column": 15 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 1400, + "end": 1412, + "loc": { + "start": { + "line": 71, + "column": 16 + }, + "end": { + "line": 71, + "column": 28 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "consequent": { + "type": "CallExpression", + "start": 1419, + "end": 1445, + "loc": { + "start": { + "line": 72, + "column": 6 + }, + "end": { + "line": 72, + "column": 32 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1419, + "end": 1427, + "loc": { + "start": { + "line": 72, + "column": 6 + }, + "end": { + "line": 72, + "column": 14 + } + }, + "object": { + "type": "ThisExpression", + "start": 1419, + "end": 1423, + "loc": { + "start": { + "line": 72, + "column": 6 + }, + "end": { + "line": 72, + "column": 10 + } + } + }, + "property": { + "type": "Identifier", + "start": 1424, + "end": 1427, + "loc": { + "start": { + "line": 72, + "column": 11 + }, + "end": { + "line": 72, + "column": 14 + }, + "identifierName": "sub" + }, + "name": "sub" + }, + "computed": false + }, + "arguments": [ + { + "type": "CallExpression", + "start": 1428, + "end": 1444, + "loc": { + "start": { + "line": 72, + "column": 15 + }, + "end": { + "line": 72, + "column": 31 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1428, + "end": 1442, + "loc": { + "start": { + "line": 72, + "column": 15 + }, + "end": { + "line": 72, + "column": 29 + } + }, + "object": { + "type": "Identifier", + "start": 1428, + "end": 1433, + "loc": { + "start": { + "line": 72, + "column": 15 + }, + "end": { + "line": 72, + "column": 20 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 1434, + "end": 1442, + "loc": { + "start": { + "line": 72, + "column": 21 + }, + "end": { + "line": 72, + "column": 29 + }, + "identifierName": "opposite" + }, + "name": "opposite" + }, + "computed": false + }, + "arguments": [] + } + ] + }, + "alternate": { + "type": "CallExpression", + "start": 1452, + "end": 1478, + "loc": { + "start": { + "line": 73, + "column": 6 + }, + "end": { + "line": 73, + "column": 32 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1452, + "end": 1461, + "loc": { + "start": { + "line": 73, + "column": 6 + }, + "end": { + "line": 73, + "column": 15 + } + }, + "object": { + "type": "Identifier", + "start": 1452, + "end": 1457, + "loc": { + "start": { + "line": 73, + "column": 6 + }, + "end": { + "line": 73, + "column": 11 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 1458, + "end": 1461, + "loc": { + "start": { + "line": 73, + "column": 12 + }, + "end": { + "line": 73, + "column": 15 + }, + "identifierName": "sub" + }, + "name": "sub" + }, + "computed": false + }, + "arguments": [ + { + "type": "CallExpression", + "start": 1462, + "end": 1477, + "loc": { + "start": { + "line": 73, + "column": 16 + }, + "end": { + "line": 73, + "column": 31 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1462, + "end": 1475, + "loc": { + "start": { + "line": 73, + "column": 16 + }, + "end": { + "line": 73, + "column": 29 + } + }, + "object": { + "type": "ThisExpression", + "start": 1462, + "end": 1466, + "loc": { + "start": { + "line": 73, + "column": 16 + }, + "end": { + "line": 73, + "column": 20 + } + } + }, + "property": { + "type": "Identifier", + "start": 1467, + "end": 1475, + "loc": { + "start": { + "line": 73, + "column": 21 + }, + "end": { + "line": 73, + "column": 29 + }, + "identifierName": "opposite" + }, + "name": "opposite" + }, + "computed": false + }, + "arguments": [] + } + ] + } + } + } + ], + "directives": [] + }, + "alternate": null + }, + { + "type": "VariableDeclaration", + "start": 1487, + "end": 1532, + "loc": { + "start": { + "line": 76, + "column": 2 + }, + "end": { + "line": 76, + "column": 47 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 1493, + "end": 1531, + "loc": { + "start": { + "line": 76, + "column": 8 + }, + "end": { + "line": 76, + "column": 46 + } + }, + "id": { + "type": "Identifier", + "start": 1493, + "end": 1511, + "loc": { + "start": { + "line": 76, + "column": 8 + }, + "end": { + "line": 76, + "column": 26 + }, + "identifierName": "result_is_negative" + }, + "name": "result_is_negative" + }, + "init": { + "type": "MemberExpression", + "start": 1514, + "end": 1531, + "loc": { + "start": { + "line": 76, + "column": 29 + }, + "end": { + "line": 76, + "column": 46 + } + }, + "object": { + "type": "ThisExpression", + "start": 1514, + "end": 1518, + "loc": { + "start": { + "line": 76, + "column": 29 + }, + "end": { + "line": 76, + "column": 33 + } + } + }, + "property": { + "type": "Identifier", + "start": 1519, + "end": 1531, + "loc": { + "start": { + "line": 76, + "column": 34 + }, + "end": { + "line": 76, + "column": 46 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 1535, + "end": 1556, + "loc": { + "start": { + "line": 77, + "column": 2 + }, + "end": { + "line": 77, + "column": 23 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 1541, + "end": 1555, + "loc": { + "start": { + "line": 77, + "column": 8 + }, + "end": { + "line": 77, + "column": 22 + } + }, + "id": { + "type": "Identifier", + "start": 1541, + "end": 1542, + "loc": { + "start": { + "line": 77, + "column": 8 + }, + "end": { + "line": 77, + "column": 9 + }, + "identifierName": "r" + }, + "name": "r" + }, + "init": { + "type": "MemberExpression", + "start": 1545, + "end": 1555, + "loc": { + "start": { + "line": 77, + "column": 12 + }, + "end": { + "line": 77, + "column": 22 + } + }, + "object": { + "type": "ThisExpression", + "start": 1545, + "end": 1549, + "loc": { + "start": { + "line": 77, + "column": 12 + }, + "end": { + "line": 77, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 1550, + "end": 1555, + "loc": { + "start": { + "line": 77, + "column": 17 + }, + "end": { + "line": 77, + "column": 22 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 1560, + "end": 1582, + "loc": { + "start": { + "line": 79, + "column": 2 + }, + "end": { + "line": 79, + "column": 24 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 1566, + "end": 1581, + "loc": { + "start": { + "line": 79, + "column": 8 + }, + "end": { + "line": 79, + "column": 23 + } + }, + "id": { + "type": "Identifier", + "start": 1566, + "end": 1567, + "loc": { + "start": { + "line": 79, + "column": 8 + }, + "end": { + "line": 79, + "column": 9 + }, + "identifierName": "a" + }, + "name": "a" + }, + "init": { + "type": "MemberExpression", + "start": 1570, + "end": 1581, + "loc": { + "start": { + "line": 79, + "column": 12 + }, + "end": { + "line": 79, + "column": 23 + } + }, + "object": { + "type": "ThisExpression", + "start": 1570, + "end": 1574, + "loc": { + "start": { + "line": 79, + "column": 12 + }, + "end": { + "line": 79, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 1575, + "end": 1581, + "loc": { + "start": { + "line": 79, + "column": 17 + }, + "end": { + "line": 79, + "column": 23 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 1586, + "end": 1620, + "loc": { + "start": { + "line": 81, + "column": 2 + }, + "end": { + "line": 81, + "column": 36 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 1592, + "end": 1619, + "loc": { + "start": { + "line": 81, + "column": 8 + }, + "end": { + "line": 81, + "column": 35 + } + }, + "id": { + "type": "Identifier", + "start": 1592, + "end": 1593, + "loc": { + "start": { + "line": 81, + "column": 8 + }, + "end": { + "line": 81, + "column": 9 + }, + "identifierName": "b" + }, + "name": "b" + }, + "init": { + "type": "CallExpression", + "start": 1596, + "end": 1619, + "loc": { + "start": { + "line": 81, + "column": 12 + }, + "end": { + "line": 81, + "column": 35 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1596, + "end": 1616, + "loc": { + "start": { + "line": 81, + "column": 12 + }, + "end": { + "line": 81, + "column": 32 + } + }, + "object": { + "type": "Identifier", + "start": 1596, + "end": 1601, + "loc": { + "start": { + "line": 81, + "column": 12 + }, + "end": { + "line": 81, + "column": 17 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 1602, + "end": 1616, + "loc": { + "start": { + "line": 81, + "column": 18 + }, + "end": { + "line": 81, + "column": 32 + }, + "identifierName": "_limbs_in_base" + }, + "name": "_limbs_in_base" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 1617, + "end": 1618, + "loc": { + "start": { + "line": 81, + "column": 33 + }, + "end": { + "line": 81, + "column": 34 + }, + "identifierName": "r" + }, + "name": "r" + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 1624, + "end": 1675, + "loc": { + "start": { + "line": 83, + "column": 2 + }, + "end": { + "line": 83, + "column": 53 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 1630, + "end": 1674, + "loc": { + "start": { + "line": 83, + "column": 8 + }, + "end": { + "line": 83, + "column": 52 + } + }, + "id": { + "type": "Identifier", + "start": 1630, + "end": 1631, + "loc": { + "start": { + "line": 83, + "column": 8 + }, + "end": { + "line": 83, + "column": 9 + }, + "identifierName": "c" + }, + "name": "c" + }, + "init": { + "type": "CallExpression", + "start": 1634, + "end": 1674, + "loc": { + "start": { + "line": 83, + "column": 12 + }, + "end": { + "line": 83, + "column": 52 + } + }, + "callee": { + "type": "Identifier", + "start": 1634, + "end": 1640, + "loc": { + "start": { + "line": 83, + "column": 12 + }, + "end": { + "line": 83, + "column": 18 + }, + "identifierName": "_zeros" + }, + "name": "_zeros" + }, + "arguments": [ + { + "type": "BinaryExpression", + "start": 1641, + "end": 1673, + "loc": { + "start": { + "line": 83, + "column": 19 + }, + "end": { + "line": 83, + "column": 51 + } + }, + "left": { + "type": "CallExpression", + "start": 1641, + "end": 1669, + "loc": { + "start": { + "line": 83, + "column": 19 + }, + "end": { + "line": 83, + "column": 47 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1641, + "end": 1649, + "loc": { + "start": { + "line": 83, + "column": 19 + }, + "end": { + "line": 83, + "column": 27 + } + }, + "object": { + "type": "Identifier", + "start": 1641, + "end": 1645, + "loc": { + "start": { + "line": 83, + "column": 19 + }, + "end": { + "line": 83, + "column": 23 + }, + "identifierName": "Math" + }, + "name": "Math" + }, + "property": { + "type": "Identifier", + "start": 1646, + "end": 1649, + "loc": { + "start": { + "line": 83, + "column": 24 + }, + "end": { + "line": 83, + "column": 27 + }, + "identifierName": "max" + }, + "name": "max" + }, + "computed": false + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 1650, + "end": 1658, + "loc": { + "start": { + "line": 83, + "column": 28 + }, + "end": { + "line": 83, + "column": 36 + } + }, + "object": { + "type": "Identifier", + "start": 1650, + "end": 1651, + "loc": { + "start": { + "line": 83, + "column": 28 + }, + "end": { + "line": 83, + "column": 29 + }, + "identifierName": "a" + }, + "name": "a" + }, + "property": { + "type": "Identifier", + "start": 1652, + "end": 1658, + "loc": { + "start": { + "line": 83, + "column": 30 + }, + "end": { + "line": 83, + "column": 36 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + { + "type": "MemberExpression", + "start": 1660, + "end": 1668, + "loc": { + "start": { + "line": 83, + "column": 38 + }, + "end": { + "line": 83, + "column": 46 + } + }, + "object": { + "type": "Identifier", + "start": 1660, + "end": 1661, + "loc": { + "start": { + "line": 83, + "column": 38 + }, + "end": { + "line": 83, + "column": 39 + }, + "identifierName": "b" + }, + "name": "b" + }, + "property": { + "type": "Identifier", + "start": 1662, + "end": 1668, + "loc": { + "start": { + "line": 83, + "column": 40 + }, + "end": { + "line": 83, + "column": 46 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ] + }, + "operator": "+", + "right": { + "type": "NumericLiteral", + "start": 1672, + "end": 1673, + "loc": { + "start": { + "line": 83, + "column": 50 + }, + "end": { + "line": 83, + "column": 51 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + } + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "ExpressionStatement", + "start": 1679, + "end": 1734, + "loc": { + "start": { + "line": 85, + "column": 2 + }, + "end": { + "line": 85, + "column": 57 + } + }, + "expression": { + "type": "CallExpression", + "start": 1679, + "end": 1733, + "loc": { + "start": { + "line": 85, + "column": 2 + }, + "end": { + "line": 85, + "column": 56 + } + }, + "callee": { + "type": "Identifier", + "start": 1679, + "end": 1682, + "loc": { + "start": { + "line": 85, + "column": 2 + }, + "end": { + "line": 85, + "column": 5 + }, + "identifierName": "add" + }, + "name": "add" + }, + "arguments": [ + { + "type": "Identifier", + "start": 1683, + "end": 1684, + "loc": { + "start": { + "line": 85, + "column": 6 + }, + "end": { + "line": 85, + "column": 7 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "Identifier", + "start": 1686, + "end": 1687, + "loc": { + "start": { + "line": 85, + "column": 9 + }, + "end": { + "line": 85, + "column": 10 + }, + "identifierName": "a" + }, + "name": "a" + }, + { + "type": "NumericLiteral", + "start": 1689, + "end": 1690, + "loc": { + "start": { + "line": 85, + "column": 12 + }, + "end": { + "line": 85, + "column": 13 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 1692, + "end": 1700, + "loc": { + "start": { + "line": 85, + "column": 15 + }, + "end": { + "line": 85, + "column": 23 + } + }, + "object": { + "type": "Identifier", + "start": 1692, + "end": 1693, + "loc": { + "start": { + "line": 85, + "column": 15 + }, + "end": { + "line": 85, + "column": 16 + }, + "identifierName": "a" + }, + "name": "a" + }, + "property": { + "type": "Identifier", + "start": 1694, + "end": 1700, + "loc": { + "start": { + "line": 85, + "column": 17 + }, + "end": { + "line": 85, + "column": 23 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 1702, + "end": 1703, + "loc": { + "start": { + "line": 85, + "column": 25 + }, + "end": { + "line": 85, + "column": 26 + }, + "identifierName": "b" + }, + "name": "b" + }, + { + "type": "NumericLiteral", + "start": 1705, + "end": 1706, + "loc": { + "start": { + "line": 85, + "column": 28 + }, + "end": { + "line": 85, + "column": 29 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 1708, + "end": 1716, + "loc": { + "start": { + "line": 85, + "column": 31 + }, + "end": { + "line": 85, + "column": 39 + } + }, + "object": { + "type": "Identifier", + "start": 1708, + "end": 1709, + "loc": { + "start": { + "line": 85, + "column": 31 + }, + "end": { + "line": 85, + "column": 32 + }, + "identifierName": "b" + }, + "name": "b" + }, + "property": { + "type": "Identifier", + "start": 1710, + "end": 1716, + "loc": { + "start": { + "line": 85, + "column": 33 + }, + "end": { + "line": 85, + "column": 39 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 1718, + "end": 1719, + "loc": { + "start": { + "line": 85, + "column": 41 + }, + "end": { + "line": 85, + "column": 42 + }, + "identifierName": "c" + }, + "name": "c" + }, + { + "type": "NumericLiteral", + "start": 1721, + "end": 1722, + "loc": { + "start": { + "line": 85, + "column": 44 + }, + "end": { + "line": 85, + "column": 45 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 1724, + "end": 1732, + "loc": { + "start": { + "line": 85, + "column": 47 + }, + "end": { + "line": 85, + "column": 55 + } + }, + "object": { + "type": "Identifier", + "start": 1724, + "end": 1725, + "loc": { + "start": { + "line": 85, + "column": 47 + }, + "end": { + "line": 85, + "column": 48 + }, + "identifierName": "c" + }, + "name": "c" + }, + "property": { + "type": "Identifier", + "start": 1726, + "end": 1732, + "loc": { + "start": { + "line": 85, + "column": 49 + }, + "end": { + "line": 85, + "column": 55 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ] + } + }, + { + "type": "ReturnStatement", + "start": 1738, + "end": 1783, + "loc": { + "start": { + "line": 87, + "column": 2 + }, + "end": { + "line": 87, + "column": 47 + } + }, + "argument": { + "type": "NewExpression", + "start": 1745, + "end": 1782, + "loc": { + "start": { + "line": 87, + "column": 9 + }, + "end": { + "line": 87, + "column": 46 + } + }, + "callee": { + "type": "Identifier", + "start": 1749, + "end": 1756, + "loc": { + "start": { + "line": 87, + "column": 13 + }, + "end": { + "line": 87, + "column": 20 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "Identifier", + "start": 1757, + "end": 1758, + "loc": { + "start": { + "line": 87, + "column": 21 + }, + "end": { + "line": 87, + "column": 22 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "Identifier", + "start": 1760, + "end": 1778, + "loc": { + "start": { + "line": 87, + "column": 24 + }, + "end": { + "line": 87, + "column": 42 + }, + "identifierName": "result_is_negative" + }, + "name": "result_is_negative" + }, + { + "type": "Identifier", + "start": 1780, + "end": 1781, + "loc": { + "start": { + "line": 87, + "column": 44 + }, + "end": { + "line": 87, + "column": 45 + }, + "identifierName": "c" + }, + "name": "c" + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 1789, + "end": 1894, + "loc": { + "start": { + "line": 90, + "column": 1 + }, + "end": { + "line": 93, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 1789, + "end": 1793, + "loc": { + "start": { + "line": 90, + "column": 1 + }, + "end": { + "line": 90, + "column": 5 + }, + "identifierName": "iadd" + }, + "name": "iadd" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 1794, + "end": 1799, + "loc": { + "start": { + "line": 90, + "column": 6 + }, + "end": { + "line": 90, + "column": 11 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 1801, + "end": 1894, + "loc": { + "start": { + "line": 90, + "column": 13 + }, + "end": { + "line": 93, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 1857, + "end": 1891, + "loc": { + "start": { + "line": 92, + "column": 2 + }, + "end": { + "line": 92, + "column": 36 + } + }, + "argument": { + "type": "CallExpression", + "start": 1864, + "end": 1890, + "loc": { + "start": { + "line": 92, + "column": 9 + }, + "end": { + "line": 92, + "column": 35 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1864, + "end": 1884, + "loc": { + "start": { + "line": 92, + "column": 9 + }, + "end": { + "line": 92, + "column": 29 + } + }, + "object": { + "type": "CallExpression", + "start": 1864, + "end": 1879, + "loc": { + "start": { + "line": 92, + "column": 9 + }, + "end": { + "line": 92, + "column": 24 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1864, + "end": 1872, + "loc": { + "start": { + "line": 92, + "column": 9 + }, + "end": { + "line": 92, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 1864, + "end": 1868, + "loc": { + "start": { + "line": 92, + "column": 9 + }, + "end": { + "line": 92, + "column": 13 + } + }, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 1869, + "end": 1872, + "loc": { + "start": { + "line": 92, + "column": 14 + }, + "end": { + "line": 92, + "column": 17 + }, + "identifierName": "add" + }, + "name": "add" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "Identifier", + "start": 1873, + "end": 1878, + "loc": { + "start": { + "line": 92, + "column": 18 + }, + "end": { + "line": 92, + "column": 23 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 1880, + "end": 1884, + "loc": { + "start": { + "line": 92, + "column": 25 + }, + "end": { + "line": 92, + "column": 29 + }, + "identifierName": "move" + }, + "name": "move" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "ThisExpression", + "start": 1885, + "end": 1889, + "loc": { + "start": { + "line": 92, + "column": 30 + }, + "end": { + "line": 92, + "column": 34 + } + } + } + ], + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 1805, + "end": 1854, + "loc": { + "start": { + "line": 91, + "column": 2 + }, + "end": { + "line": 91, + "column": 51 + } + } + } + ] + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 1897, + "end": 1974, + "loc": { + "start": { + "line": 95, + "column": 1 + }, + "end": { + "line": 98, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 1897, + "end": 1901, + "loc": { + "start": { + "line": 95, + "column": 1 + }, + "end": { + "line": 95, + "column": 5 + }, + "identifierName": "addn" + }, + "name": "addn" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 1902, + "end": 1908, + "loc": { + "start": { + "line": 95, + "column": 6 + }, + "end": { + "line": 95, + "column": 12 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "body": { + "type": "BlockStatement", + "start": 1910, + "end": 1974, + "loc": { + "start": { + "line": 95, + "column": 14 + }, + "end": { + "line": 98, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 1933, + "end": 1971, + "loc": { + "start": { + "line": 97, + "column": 2 + }, + "end": { + "line": 97, + "column": 40 + } + }, + "argument": { + "type": "CallExpression", + "start": 1940, + "end": 1970, + "loc": { + "start": { + "line": 97, + "column": 9 + }, + "end": { + "line": 97, + "column": 39 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1940, + "end": 1948, + "loc": { + "start": { + "line": 97, + "column": 9 + }, + "end": { + "line": 97, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 1940, + "end": 1944, + "loc": { + "start": { + "line": 97, + "column": 9 + }, + "end": { + "line": 97, + "column": 13 + } + }, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 1945, + "end": 1948, + "loc": { + "start": { + "line": 97, + "column": 14 + }, + "end": { + "line": 97, + "column": 17 + }, + "identifierName": "add" + }, + "name": "add" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "CallExpression", + "start": 1949, + "end": 1969, + "loc": { + "start": { + "line": 97, + "column": 18 + }, + "end": { + "line": 97, + "column": 38 + } + }, + "callee": { + "type": "Identifier", + "start": 1949, + "end": 1961, + "loc": { + "start": { + "line": 97, + "column": 18 + }, + "end": { + "line": 97, + "column": 30 + }, + "identifierName": "_from_number" + }, + "name": "_from_number" + }, + "arguments": [ + { + "type": "Identifier", + "start": 1962, + "end": 1968, + "loc": { + "start": { + "line": 97, + "column": 31 + }, + "end": { + "line": 97, + "column": 37 + }, + "identifierName": "number" + }, + "name": "number" + } + ] + } + ], + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " TODO optimize", + "start": 1914, + "end": 1930, + "loc": { + "start": { + "line": 96, + "column": 2 + }, + "end": { + "line": 96, + "column": 18 + } + } + } + ] + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 1977, + "end": 2086, + "loc": { + "start": { + "line": 100, + "column": 1 + }, + "end": { + "line": 103, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 1977, + "end": 1982, + "loc": { + "start": { + "line": 100, + "column": 1 + }, + "end": { + "line": 100, + "column": 6 + }, + "identifierName": "iaddn" + }, + "name": "iaddn" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 1983, + "end": 1989, + "loc": { + "start": { + "line": 100, + "column": 7 + }, + "end": { + "line": 100, + "column": 13 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "body": { + "type": "BlockStatement", + "start": 1991, + "end": 2086, + "loc": { + "start": { + "line": 100, + "column": 15 + }, + "end": { + "line": 103, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 2047, + "end": 2083, + "loc": { + "start": { + "line": 102, + "column": 2 + }, + "end": { + "line": 102, + "column": 38 + } + }, + "argument": { + "type": "CallExpression", + "start": 2054, + "end": 2082, + "loc": { + "start": { + "line": 102, + "column": 9 + }, + "end": { + "line": 102, + "column": 37 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2054, + "end": 2076, + "loc": { + "start": { + "line": 102, + "column": 9 + }, + "end": { + "line": 102, + "column": 31 + } + }, + "object": { + "type": "CallExpression", + "start": 2054, + "end": 2071, + "loc": { + "start": { + "line": 102, + "column": 9 + }, + "end": { + "line": 102, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2054, + "end": 2063, + "loc": { + "start": { + "line": 102, + "column": 9 + }, + "end": { + "line": 102, + "column": 18 + } + }, + "object": { + "type": "ThisExpression", + "start": 2054, + "end": 2058, + "loc": { + "start": { + "line": 102, + "column": 9 + }, + "end": { + "line": 102, + "column": 13 + } + }, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 2059, + "end": 2063, + "loc": { + "start": { + "line": 102, + "column": 14 + }, + "end": { + "line": 102, + "column": 18 + }, + "identifierName": "addn" + }, + "name": "addn" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "Identifier", + "start": 2064, + "end": 2070, + "loc": { + "start": { + "line": 102, + "column": 19 + }, + "end": { + "line": 102, + "column": 25 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 2072, + "end": 2076, + "loc": { + "start": { + "line": 102, + "column": 27 + }, + "end": { + "line": 102, + "column": 31 + }, + "identifierName": "move" + }, + "name": "move" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "ThisExpression", + "start": 2077, + "end": 2081, + "loc": { + "start": { + "line": 102, + "column": 32 + }, + "end": { + "line": 102, + "column": 36 + } + } + } + ], + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 1995, + "end": 2044, + "loc": { + "start": { + "line": 101, + "column": 2 + }, + "end": { + "line": 101, + "column": 51 + } + } + } + ] + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 2089, + "end": 2898, + "loc": { + "start": { + "line": 105, + "column": 1 + }, + "end": { + "line": 139, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 2089, + "end": 2092, + "loc": { + "start": { + "line": 105, + "column": 1 + }, + "end": { + "line": 105, + "column": 4 + }, + "identifierName": "sub" + }, + "name": "sub" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 2093, + "end": 2098, + "loc": { + "start": { + "line": 105, + "column": 5 + }, + "end": { + "line": 105, + "column": 10 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 2100, + "end": 2898, + "loc": { + "start": { + "line": 105, + "column": 12 + }, + "end": { + "line": 139, + "column": 2 + } + }, + "body": [ + { + "type": "IfStatement", + "start": 2104, + "end": 2262, + "loc": { + "start": { + "line": 106, + "column": 2 + }, + "end": { + "line": 110, + "column": 3 + } + }, + "test": { + "type": "BinaryExpression", + "start": 2108, + "end": 2148, + "loc": { + "start": { + "line": 106, + "column": 6 + }, + "end": { + "line": 106, + "column": 46 + } + }, + "left": { + "type": "MemberExpression", + "start": 2108, + "end": 2125, + "loc": { + "start": { + "line": 106, + "column": 6 + }, + "end": { + "line": 106, + "column": 23 + } + }, + "object": { + "type": "ThisExpression", + "start": 2108, + "end": 2112, + "loc": { + "start": { + "line": 106, + "column": 6 + }, + "end": { + "line": 106, + "column": 10 + } + } + }, + "property": { + "type": "Identifier", + "start": 2113, + "end": 2125, + "loc": { + "start": { + "line": 106, + "column": 11 + }, + "end": { + "line": 106, + "column": 23 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "operator": "!==", + "right": { + "type": "MemberExpression", + "start": 2130, + "end": 2148, + "loc": { + "start": { + "line": 106, + "column": 28 + }, + "end": { + "line": 106, + "column": 46 + } + }, + "object": { + "type": "Identifier", + "start": 2130, + "end": 2135, + "loc": { + "start": { + "line": 106, + "column": 28 + }, + "end": { + "line": 106, + "column": 33 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 2136, + "end": 2148, + "loc": { + "start": { + "line": 106, + "column": 34 + }, + "end": { + "line": 106, + "column": 46 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + } + }, + "consequent": { + "type": "BlockStatement", + "start": 2150, + "end": 2262, + "loc": { + "start": { + "line": 106, + "column": 48 + }, + "end": { + "line": 110, + "column": 3 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 2155, + "end": 2258, + "loc": { + "start": { + "line": 107, + "column": 3 + }, + "end": { + "line": 109, + "column": 44 + } + }, + "argument": { + "type": "ConditionalExpression", + "start": 2162, + "end": 2257, + "loc": { + "start": { + "line": 107, + "column": 10 + }, + "end": { + "line": 109, + "column": 43 + } + }, + "test": { + "type": "MemberExpression", + "start": 2162, + "end": 2180, + "loc": { + "start": { + "line": 107, + "column": 10 + }, + "end": { + "line": 107, + "column": 28 + } + }, + "object": { + "type": "Identifier", + "start": 2162, + "end": 2167, + "loc": { + "start": { + "line": 107, + "column": 10 + }, + "end": { + "line": 107, + "column": 15 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 2168, + "end": 2180, + "loc": { + "start": { + "line": 107, + "column": 16 + }, + "end": { + "line": 107, + "column": 28 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "consequent": { + "type": "CallExpression", + "start": 2187, + "end": 2213, + "loc": { + "start": { + "line": 108, + "column": 6 + }, + "end": { + "line": 108, + "column": 32 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2187, + "end": 2195, + "loc": { + "start": { + "line": 108, + "column": 6 + }, + "end": { + "line": 108, + "column": 14 + } + }, + "object": { + "type": "ThisExpression", + "start": 2187, + "end": 2191, + "loc": { + "start": { + "line": 108, + "column": 6 + }, + "end": { + "line": 108, + "column": 10 + } + } + }, + "property": { + "type": "Identifier", + "start": 2192, + "end": 2195, + "loc": { + "start": { + "line": 108, + "column": 11 + }, + "end": { + "line": 108, + "column": 14 + }, + "identifierName": "add" + }, + "name": "add" + }, + "computed": false + }, + "arguments": [ + { + "type": "CallExpression", + "start": 2196, + "end": 2212, + "loc": { + "start": { + "line": 108, + "column": 15 + }, + "end": { + "line": 108, + "column": 31 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2196, + "end": 2210, + "loc": { + "start": { + "line": 108, + "column": 15 + }, + "end": { + "line": 108, + "column": 29 + } + }, + "object": { + "type": "Identifier", + "start": 2196, + "end": 2201, + "loc": { + "start": { + "line": 108, + "column": 15 + }, + "end": { + "line": 108, + "column": 20 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 2202, + "end": 2210, + "loc": { + "start": { + "line": 108, + "column": 21 + }, + "end": { + "line": 108, + "column": 29 + }, + "identifierName": "opposite" + }, + "name": "opposite" + }, + "computed": false + }, + "arguments": [] + } + ] + }, + "alternate": { + "type": "CallExpression", + "start": 2220, + "end": 2257, + "loc": { + "start": { + "line": 109, + "column": 6 + }, + "end": { + "line": 109, + "column": 43 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2220, + "end": 2255, + "loc": { + "start": { + "line": 109, + "column": 6 + }, + "end": { + "line": 109, + "column": 41 + } + }, + "object": { + "type": "CallExpression", + "start": 2220, + "end": 2246, + "loc": { + "start": { + "line": 109, + "column": 6 + }, + "end": { + "line": 109, + "column": 32 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2220, + "end": 2239, + "loc": { + "start": { + "line": 109, + "column": 6 + }, + "end": { + "line": 109, + "column": 25 + } + }, + "object": { + "type": "CallExpression", + "start": 2220, + "end": 2235, + "loc": { + "start": { + "line": 109, + "column": 6 + }, + "end": { + "line": 109, + "column": 21 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2220, + "end": 2233, + "loc": { + "start": { + "line": 109, + "column": 6 + }, + "end": { + "line": 109, + "column": 19 + } + }, + "object": { + "type": "ThisExpression", + "start": 2220, + "end": 2224, + "loc": { + "start": { + "line": 109, + "column": 6 + }, + "end": { + "line": 109, + "column": 10 + } + } + }, + "property": { + "type": "Identifier", + "start": 2225, + "end": 2233, + "loc": { + "start": { + "line": 109, + "column": 11 + }, + "end": { + "line": 109, + "column": 19 + }, + "identifierName": "opposite" + }, + "name": "opposite" + }, + "computed": false + }, + "arguments": [] + }, + "property": { + "type": "Identifier", + "start": 2236, + "end": 2239, + "loc": { + "start": { + "line": 109, + "column": 22 + }, + "end": { + "line": 109, + "column": 25 + }, + "identifierName": "add" + }, + "name": "add" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 2240, + "end": 2245, + "loc": { + "start": { + "line": 109, + "column": 26 + }, + "end": { + "line": 109, + "column": 31 + }, + "identifierName": "other" + }, + "name": "other" + } + ] + }, + "property": { + "type": "Identifier", + "start": 2247, + "end": 2255, + "loc": { + "start": { + "line": 109, + "column": 33 + }, + "end": { + "line": 109, + "column": 41 + }, + "identifierName": "opposite" + }, + "name": "opposite" + }, + "computed": false + }, + "arguments": [] + } + } + } + ], + "directives": [], + "trailingComments": null + }, + "alternate": null, + "trailingComments": [ + { + "type": "CommentLine", + "value": " /!\\ _sub needs |c| >= |a| >= |b|", + "start": 2265, + "end": 2300, + "loc": { + "start": { + "line": 111, + "column": 2 + }, + "end": { + "line": 111, + "column": 37 + } + } + } + ] + }, + { + "type": "VariableDeclaration", + "start": 2304, + "end": 2325, + "loc": { + "start": { + "line": 113, + "column": 2 + }, + "end": { + "line": 113, + "column": 23 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 2310, + "end": 2324, + "loc": { + "start": { + "line": 113, + "column": 8 + }, + "end": { + "line": 113, + "column": 22 + } + }, + "id": { + "type": "Identifier", + "start": 2310, + "end": 2311, + "loc": { + "start": { + "line": 113, + "column": 8 + }, + "end": { + "line": 113, + "column": 9 + }, + "identifierName": "r" + }, + "name": "r", + "leadingComments": null + }, + "init": { + "type": "MemberExpression", + "start": 2314, + "end": 2324, + "loc": { + "start": { + "line": 113, + "column": 12 + }, + "end": { + "line": 113, + "column": 22 + } + }, + "object": { + "type": "ThisExpression", + "start": 2314, + "end": 2318, + "loc": { + "start": { + "line": 113, + "column": 12 + }, + "end": { + "line": 113, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 2319, + "end": 2324, + "loc": { + "start": { + "line": 113, + "column": 17 + }, + "end": { + "line": 113, + "column": 22 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + "leadingComments": null + } + ], + "kind": "const", + "leadingComments": [ + { + "type": "CommentLine", + "value": " /!\\ _sub needs |c| >= |a| >= |b|", + "start": 2265, + "end": 2300, + "loc": { + "start": { + "line": 111, + "column": 2 + }, + "end": { + "line": 111, + "column": 37 + } + } + } + ] + }, + { + "type": "VariableDeclaration", + "start": 2328, + "end": 2350, + "loc": { + "start": { + "line": 114, + "column": 2 + }, + "end": { + "line": 114, + "column": 24 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 2334, + "end": 2349, + "loc": { + "start": { + "line": 114, + "column": 8 + }, + "end": { + "line": 114, + "column": 23 + } + }, + "id": { + "type": "Identifier", + "start": 2334, + "end": 2335, + "loc": { + "start": { + "line": 114, + "column": 8 + }, + "end": { + "line": 114, + "column": 9 + }, + "identifierName": "a" + }, + "name": "a" + }, + "init": { + "type": "MemberExpression", + "start": 2338, + "end": 2349, + "loc": { + "start": { + "line": 114, + "column": 12 + }, + "end": { + "line": 114, + "column": 23 + } + }, + "object": { + "type": "ThisExpression", + "start": 2338, + "end": 2342, + "loc": { + "start": { + "line": 114, + "column": 12 + }, + "end": { + "line": 114, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 2343, + "end": 2349, + "loc": { + "start": { + "line": 114, + "column": 17 + }, + "end": { + "line": 114, + "column": 23 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 2353, + "end": 2373, + "loc": { + "start": { + "line": 115, + "column": 2 + }, + "end": { + "line": 115, + "column": 22 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 2359, + "end": 2372, + "loc": { + "start": { + "line": 115, + "column": 8 + }, + "end": { + "line": 115, + "column": 21 + } + }, + "id": { + "type": "Identifier", + "start": 2359, + "end": 2361, + "loc": { + "start": { + "line": 115, + "column": 8 + }, + "end": { + "line": 115, + "column": 10 + }, + "identifierName": "aj" + }, + "name": "aj" + }, + "init": { + "type": "MemberExpression", + "start": 2364, + "end": 2372, + "loc": { + "start": { + "line": 115, + "column": 13 + }, + "end": { + "line": 115, + "column": 21 + } + }, + "object": { + "type": "Identifier", + "start": 2364, + "end": 2365, + "loc": { + "start": { + "line": 115, + "column": 13 + }, + "end": { + "line": 115, + "column": 14 + }, + "identifierName": "a" + }, + "name": "a" + }, + "property": { + "type": "Identifier", + "start": 2366, + "end": 2372, + "loc": { + "start": { + "line": 115, + "column": 15 + }, + "end": { + "line": 115, + "column": 21 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 2376, + "end": 2412, + "loc": { + "start": { + "line": 116, + "column": 2 + }, + "end": { + "line": 116, + "column": 38 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 2382, + "end": 2411, + "loc": { + "start": { + "line": 116, + "column": 8 + }, + "end": { + "line": 116, + "column": 37 + } + }, + "id": { + "type": "Identifier", + "start": 2382, + "end": 2384, + "loc": { + "start": { + "line": 116, + "column": 8 + }, + "end": { + "line": 116, + "column": 10 + }, + "identifierName": "ai" + }, + "name": "ai" + }, + "init": { + "type": "CallExpression", + "start": 2387, + "end": 2411, + "loc": { + "start": { + "line": 116, + "column": 13 + }, + "end": { + "line": 116, + "column": 37 + } + }, + "callee": { + "type": "Identifier", + "start": 2387, + "end": 2401, + "loc": { + "start": { + "line": 116, + "column": 13 + }, + "end": { + "line": 116, + "column": 27 + }, + "identifierName": "_trim_positive" + }, + "name": "_trim_positive" + }, + "arguments": [ + { + "type": "Identifier", + "start": 2402, + "end": 2403, + "loc": { + "start": { + "line": 116, + "column": 28 + }, + "end": { + "line": 116, + "column": 29 + }, + "identifierName": "a" + }, + "name": "a" + }, + { + "type": "NumericLiteral", + "start": 2405, + "end": 2406, + "loc": { + "start": { + "line": 116, + "column": 31 + }, + "end": { + "line": 116, + "column": 32 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "Identifier", + "start": 2408, + "end": 2410, + "loc": { + "start": { + "line": 116, + "column": 34 + }, + "end": { + "line": 116, + "column": 36 + }, + "identifierName": "aj" + }, + "name": "aj" + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "IfStatement", + "start": 2416, + "end": 2454, + "loc": { + "start": { + "line": 118, + "column": 2 + }, + "end": { + "line": 118, + "column": 40 + } + }, + "test": { + "type": "BinaryExpression", + "start": 2420, + "end": 2428, + "loc": { + "start": { + "line": 118, + "column": 6 + }, + "end": { + "line": 118, + "column": 14 + } + }, + "left": { + "type": "Identifier", + "start": 2420, + "end": 2422, + "loc": { + "start": { + "line": 118, + "column": 6 + }, + "end": { + "line": 118, + "column": 8 + }, + "identifierName": "ai" + }, + "name": "ai" + }, + "operator": ">=", + "right": { + "type": "Identifier", + "start": 2426, + "end": 2428, + "loc": { + "start": { + "line": 118, + "column": 12 + }, + "end": { + "line": 118, + "column": 14 + }, + "identifierName": "aj" + }, + "name": "aj" + } + }, + "consequent": { + "type": "ReturnStatement", + "start": 2430, + "end": 2454, + "loc": { + "start": { + "line": 118, + "column": 16 + }, + "end": { + "line": 118, + "column": 40 + } + }, + "argument": { + "type": "CallExpression", + "start": 2437, + "end": 2453, + "loc": { + "start": { + "line": 118, + "column": 23 + }, + "end": { + "line": 118, + "column": 39 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2437, + "end": 2451, + "loc": { + "start": { + "line": 118, + "column": 23 + }, + "end": { + "line": 118, + "column": 37 + } + }, + "object": { + "type": "Identifier", + "start": 2437, + "end": 2442, + "loc": { + "start": { + "line": 118, + "column": 23 + }, + "end": { + "line": 118, + "column": 28 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 2443, + "end": 2451, + "loc": { + "start": { + "line": 118, + "column": 29 + }, + "end": { + "line": 118, + "column": 37 + }, + "identifierName": "opposite" + }, + "name": "opposite" + }, + "computed": false + }, + "arguments": [] + } + }, + "alternate": null + }, + { + "type": "VariableDeclaration", + "start": 2458, + "end": 2492, + "loc": { + "start": { + "line": 120, + "column": 2 + }, + "end": { + "line": 120, + "column": 36 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 2464, + "end": 2491, + "loc": { + "start": { + "line": 120, + "column": 8 + }, + "end": { + "line": 120, + "column": 35 + } + }, + "id": { + "type": "Identifier", + "start": 2464, + "end": 2465, + "loc": { + "start": { + "line": 120, + "column": 8 + }, + "end": { + "line": 120, + "column": 9 + }, + "identifierName": "b" + }, + "name": "b" + }, + "init": { + "type": "CallExpression", + "start": 2468, + "end": 2491, + "loc": { + "start": { + "line": 120, + "column": 12 + }, + "end": { + "line": 120, + "column": 35 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2468, + "end": 2488, + "loc": { + "start": { + "line": 120, + "column": 12 + }, + "end": { + "line": 120, + "column": 32 + } + }, + "object": { + "type": "Identifier", + "start": 2468, + "end": 2473, + "loc": { + "start": { + "line": 120, + "column": 12 + }, + "end": { + "line": 120, + "column": 17 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 2474, + "end": 2488, + "loc": { + "start": { + "line": 120, + "column": 18 + }, + "end": { + "line": 120, + "column": 32 + }, + "identifierName": "_limbs_in_base" + }, + "name": "_limbs_in_base" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 2489, + "end": 2490, + "loc": { + "start": { + "line": 120, + "column": 33 + }, + "end": { + "line": 120, + "column": 34 + }, + "identifierName": "r" + }, + "name": "r" + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 2495, + "end": 2515, + "loc": { + "start": { + "line": 121, + "column": 2 + }, + "end": { + "line": 121, + "column": 22 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 2501, + "end": 2514, + "loc": { + "start": { + "line": 121, + "column": 8 + }, + "end": { + "line": 121, + "column": 21 + } + }, + "id": { + "type": "Identifier", + "start": 2501, + "end": 2503, + "loc": { + "start": { + "line": 121, + "column": 8 + }, + "end": { + "line": 121, + "column": 10 + }, + "identifierName": "bj" + }, + "name": "bj" + }, + "init": { + "type": "MemberExpression", + "start": 2506, + "end": 2514, + "loc": { + "start": { + "line": 121, + "column": 13 + }, + "end": { + "line": 121, + "column": 21 + } + }, + "object": { + "type": "Identifier", + "start": 2506, + "end": 2507, + "loc": { + "start": { + "line": 121, + "column": 13 + }, + "end": { + "line": 121, + "column": 14 + }, + "identifierName": "b" + }, + "name": "b" + }, + "property": { + "type": "Identifier", + "start": 2508, + "end": 2514, + "loc": { + "start": { + "line": 121, + "column": 15 + }, + "end": { + "line": 121, + "column": 21 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 2518, + "end": 2554, + "loc": { + "start": { + "line": 122, + "column": 2 + }, + "end": { + "line": 122, + "column": 38 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 2524, + "end": 2553, + "loc": { + "start": { + "line": 122, + "column": 8 + }, + "end": { + "line": 122, + "column": 37 + } + }, + "id": { + "type": "Identifier", + "start": 2524, + "end": 2526, + "loc": { + "start": { + "line": 122, + "column": 8 + }, + "end": { + "line": 122, + "column": 10 + }, + "identifierName": "bi" + }, + "name": "bi" + }, + "init": { + "type": "CallExpression", + "start": 2529, + "end": 2553, + "loc": { + "start": { + "line": 122, + "column": 13 + }, + "end": { + "line": 122, + "column": 37 + } + }, + "callee": { + "type": "Identifier", + "start": 2529, + "end": 2543, + "loc": { + "start": { + "line": 122, + "column": 13 + }, + "end": { + "line": 122, + "column": 27 + }, + "identifierName": "_trim_positive" + }, + "name": "_trim_positive" + }, + "arguments": [ + { + "type": "Identifier", + "start": 2544, + "end": 2545, + "loc": { + "start": { + "line": 122, + "column": 28 + }, + "end": { + "line": 122, + "column": 29 + }, + "identifierName": "b" + }, + "name": "b" + }, + { + "type": "NumericLiteral", + "start": 2547, + "end": 2548, + "loc": { + "start": { + "line": 122, + "column": 31 + }, + "end": { + "line": 122, + "column": 32 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "Identifier", + "start": 2550, + "end": 2552, + "loc": { + "start": { + "line": 122, + "column": 34 + }, + "end": { + "line": 122, + "column": 36 + }, + "identifierName": "bj" + }, + "name": "bj" + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "IfStatement", + "start": 2558, + "end": 2592, + "loc": { + "start": { + "line": 124, + "column": 2 + }, + "end": { + "line": 124, + "column": 36 + } + }, + "test": { + "type": "BinaryExpression", + "start": 2562, + "end": 2570, + "loc": { + "start": { + "line": 124, + "column": 6 + }, + "end": { + "line": 124, + "column": 14 + } + }, + "left": { + "type": "Identifier", + "start": 2562, + "end": 2564, + "loc": { + "start": { + "line": 124, + "column": 6 + }, + "end": { + "line": 124, + "column": 8 + }, + "identifierName": "bi" + }, + "name": "bi" + }, + "operator": ">=", + "right": { + "type": "Identifier", + "start": 2568, + "end": 2570, + "loc": { + "start": { + "line": 124, + "column": 12 + }, + "end": { + "line": 124, + "column": 14 + }, + "identifierName": "bj" + }, + "name": "bj" + } + }, + "consequent": { + "type": "ReturnStatement", + "start": 2572, + "end": 2592, + "loc": { + "start": { + "line": 124, + "column": 16 + }, + "end": { + "line": 124, + "column": 36 + } + }, + "argument": { + "type": "CallExpression", + "start": 2579, + "end": 2591, + "loc": { + "start": { + "line": 124, + "column": 23 + }, + "end": { + "line": 124, + "column": 35 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2579, + "end": 2589, + "loc": { + "start": { + "line": 124, + "column": 23 + }, + "end": { + "line": 124, + "column": 33 + } + }, + "object": { + "type": "ThisExpression", + "start": 2579, + "end": 2583, + "loc": { + "start": { + "line": 124, + "column": 23 + }, + "end": { + "line": 124, + "column": 27 + } + } + }, + "property": { + "type": "Identifier", + "start": 2584, + "end": 2589, + "loc": { + "start": { + "line": 124, + "column": 28 + }, + "end": { + "line": 124, + "column": 33 + }, + "identifierName": "clone" + }, + "name": "clone" + }, + "computed": false + }, + "arguments": [] + } + }, + "alternate": null + }, + { + "type": "IfStatement", + "start": 2596, + "end": 2767, + "loc": { + "start": { + "line": 126, + "column": 2 + }, + "end": { + "line": 132, + "column": 3 + } + }, + "test": { + "type": "BinaryExpression", + "start": 2600, + "end": 2629, + "loc": { + "start": { + "line": 126, + "column": 6 + }, + "end": { + "line": 126, + "column": 35 + } + }, + "left": { + "type": "CallExpression", + "start": 2600, + "end": 2625, + "loc": { + "start": { + "line": 126, + "column": 6 + }, + "end": { + "line": 126, + "column": 31 + } + }, + "callee": { + "type": "Identifier", + "start": 2600, + "end": 2603, + "loc": { + "start": { + "line": 126, + "column": 6 + }, + "end": { + "line": 126, + "column": 9 + }, + "identifierName": "cmp" + }, + "name": "cmp" + }, + "arguments": [ + { + "type": "Identifier", + "start": 2604, + "end": 2605, + "loc": { + "start": { + "line": 126, + "column": 10 + }, + "end": { + "line": 126, + "column": 11 + }, + "identifierName": "a" + }, + "name": "a" + }, + { + "type": "Identifier", + "start": 2607, + "end": 2609, + "loc": { + "start": { + "line": 126, + "column": 13 + }, + "end": { + "line": 126, + "column": 15 + }, + "identifierName": "ai" + }, + "name": "ai" + }, + { + "type": "Identifier", + "start": 2611, + "end": 2613, + "loc": { + "start": { + "line": 126, + "column": 17 + }, + "end": { + "line": 126, + "column": 19 + }, + "identifierName": "aj" + }, + "name": "aj" + }, + { + "type": "Identifier", + "start": 2615, + "end": 2616, + "loc": { + "start": { + "line": 126, + "column": 21 + }, + "end": { + "line": 126, + "column": 22 + }, + "identifierName": "b" + }, + "name": "b" + }, + { + "type": "Identifier", + "start": 2618, + "end": 2620, + "loc": { + "start": { + "line": 126, + "column": 24 + }, + "end": { + "line": 126, + "column": 26 + }, + "identifierName": "bi" + }, + "name": "bi" + }, + { + "type": "Identifier", + "start": 2622, + "end": 2624, + "loc": { + "start": { + "line": 126, + "column": 28 + }, + "end": { + "line": 126, + "column": 30 + }, + "identifierName": "bj" + }, + "name": "bj" + } + ] + }, + "operator": "<", + "right": { + "type": "NumericLiteral", + "start": 2628, + "end": 2629, + "loc": { + "start": { + "line": 126, + "column": 34 + }, + "end": { + "line": 126, + "column": 35 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + }, + "consequent": { + "type": "BlockStatement", + "start": 2631, + "end": 2767, + "loc": { + "start": { + "line": 126, + "column": 37 + }, + "end": { + "line": 132, + "column": 3 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 2636, + "end": 2662, + "loc": { + "start": { + "line": 127, + "column": 3 + }, + "end": { + "line": 127, + "column": 29 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 2642, + "end": 2661, + "loc": { + "start": { + "line": 127, + "column": 9 + }, + "end": { + "line": 127, + "column": 28 + } + }, + "id": { + "type": "Identifier", + "start": 2642, + "end": 2643, + "loc": { + "start": { + "line": 127, + "column": 9 + }, + "end": { + "line": 127, + "column": 10 + }, + "identifierName": "c" + }, + "name": "c" + }, + "init": { + "type": "CallExpression", + "start": 2646, + "end": 2661, + "loc": { + "start": { + "line": 127, + "column": 13 + }, + "end": { + "line": 127, + "column": 28 + } + }, + "callee": { + "type": "Identifier", + "start": 2646, + "end": 2652, + "loc": { + "start": { + "line": 127, + "column": 13 + }, + "end": { + "line": 127, + "column": 19 + }, + "identifierName": "_zeros" + }, + "name": "_zeros" + }, + "arguments": [ + { + "type": "BinaryExpression", + "start": 2653, + "end": 2660, + "loc": { + "start": { + "line": 127, + "column": 20 + }, + "end": { + "line": 127, + "column": 27 + } + }, + "left": { + "type": "Identifier", + "start": 2653, + "end": 2655, + "loc": { + "start": { + "line": 127, + "column": 20 + }, + "end": { + "line": 127, + "column": 22 + }, + "identifierName": "bj" + }, + "name": "bj" + }, + "operator": "-", + "right": { + "type": "Identifier", + "start": 2658, + "end": 2660, + "loc": { + "start": { + "line": 127, + "column": 25 + }, + "end": { + "line": 127, + "column": 27 + }, + "identifierName": "bi" + }, + "name": "bi" + } + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "ExpressionStatement", + "start": 2667, + "end": 2713, + "loc": { + "start": { + "line": 129, + "column": 3 + }, + "end": { + "line": 129, + "column": 49 + } + }, + "expression": { + "type": "CallExpression", + "start": 2667, + "end": 2712, + "loc": { + "start": { + "line": 129, + "column": 3 + }, + "end": { + "line": 129, + "column": 48 + } + }, + "callee": { + "type": "Identifier", + "start": 2667, + "end": 2671, + "loc": { + "start": { + "line": 129, + "column": 3 + }, + "end": { + "line": 129, + "column": 7 + }, + "identifierName": "_sub" + }, + "name": "_sub" + }, + "arguments": [ + { + "type": "Identifier", + "start": 2672, + "end": 2673, + "loc": { + "start": { + "line": 129, + "column": 8 + }, + "end": { + "line": 129, + "column": 9 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "Identifier", + "start": 2675, + "end": 2676, + "loc": { + "start": { + "line": 129, + "column": 11 + }, + "end": { + "line": 129, + "column": 12 + }, + "identifierName": "b" + }, + "name": "b" + }, + { + "type": "Identifier", + "start": 2678, + "end": 2680, + "loc": { + "start": { + "line": 129, + "column": 14 + }, + "end": { + "line": 129, + "column": 16 + }, + "identifierName": "bi" + }, + "name": "bi" + }, + { + "type": "Identifier", + "start": 2682, + "end": 2684, + "loc": { + "start": { + "line": 129, + "column": 18 + }, + "end": { + "line": 129, + "column": 20 + }, + "identifierName": "bj" + }, + "name": "bj" + }, + { + "type": "Identifier", + "start": 2686, + "end": 2687, + "loc": { + "start": { + "line": 129, + "column": 22 + }, + "end": { + "line": 129, + "column": 23 + }, + "identifierName": "a" + }, + "name": "a" + }, + { + "type": "Identifier", + "start": 2689, + "end": 2691, + "loc": { + "start": { + "line": 129, + "column": 25 + }, + "end": { + "line": 129, + "column": 27 + }, + "identifierName": "ai" + }, + "name": "ai" + }, + { + "type": "Identifier", + "start": 2693, + "end": 2695, + "loc": { + "start": { + "line": 129, + "column": 29 + }, + "end": { + "line": 129, + "column": 31 + }, + "identifierName": "aj" + }, + "name": "aj" + }, + { + "type": "Identifier", + "start": 2697, + "end": 2698, + "loc": { + "start": { + "line": 129, + "column": 33 + }, + "end": { + "line": 129, + "column": 34 + }, + "identifierName": "c" + }, + "name": "c" + }, + { + "type": "NumericLiteral", + "start": 2700, + "end": 2701, + "loc": { + "start": { + "line": 129, + "column": 36 + }, + "end": { + "line": 129, + "column": 37 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 2703, + "end": 2711, + "loc": { + "start": { + "line": 129, + "column": 39 + }, + "end": { + "line": 129, + "column": 47 + } + }, + "object": { + "type": "Identifier", + "start": 2703, + "end": 2704, + "loc": { + "start": { + "line": 129, + "column": 39 + }, + "end": { + "line": 129, + "column": 40 + }, + "identifierName": "c" + }, + "name": "c" + }, + "property": { + "type": "Identifier", + "start": 2705, + "end": 2711, + "loc": { + "start": { + "line": 129, + "column": 41 + }, + "end": { + "line": 129, + "column": 47 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ] + } + }, + { + "type": "ReturnStatement", + "start": 2718, + "end": 2763, + "loc": { + "start": { + "line": 131, + "column": 3 + }, + "end": { + "line": 131, + "column": 48 + } + }, + "argument": { + "type": "NewExpression", + "start": 2725, + "end": 2762, + "loc": { + "start": { + "line": 131, + "column": 10 + }, + "end": { + "line": 131, + "column": 47 + } + }, + "callee": { + "type": "Identifier", + "start": 2729, + "end": 2736, + "loc": { + "start": { + "line": 131, + "column": 14 + }, + "end": { + "line": 131, + "column": 21 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "Identifier", + "start": 2737, + "end": 2738, + "loc": { + "start": { + "line": 131, + "column": 22 + }, + "end": { + "line": 131, + "column": 23 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "UnaryExpression", + "start": 2740, + "end": 2758, + "loc": { + "start": { + "line": 131, + "column": 25 + }, + "end": { + "line": 131, + "column": 43 + } + }, + "operator": "~", + "prefix": true, + "argument": { + "type": "MemberExpression", + "start": 2741, + "end": 2758, + "loc": { + "start": { + "line": 131, + "column": 26 + }, + "end": { + "line": 131, + "column": 43 + } + }, + "object": { + "type": "ThisExpression", + "start": 2741, + "end": 2745, + "loc": { + "start": { + "line": 131, + "column": 26 + }, + "end": { + "line": 131, + "column": 30 + } + } + }, + "property": { + "type": "Identifier", + "start": 2746, + "end": 2758, + "loc": { + "start": { + "line": 131, + "column": 31 + }, + "end": { + "line": 131, + "column": 43 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "extra": { + "parenthesizedArgument": false + } + }, + { + "type": "Identifier", + "start": 2760, + "end": 2761, + "loc": { + "start": { + "line": 131, + "column": 45 + }, + "end": { + "line": 131, + "column": 46 + }, + "identifierName": "c" + }, + "name": "c" + } + ] + } + } + ], + "directives": [] + }, + "alternate": null + }, + { + "type": "VariableDeclaration", + "start": 2771, + "end": 2797, + "loc": { + "start": { + "line": 134, + "column": 2 + }, + "end": { + "line": 134, + "column": 28 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 2777, + "end": 2796, + "loc": { + "start": { + "line": 134, + "column": 8 + }, + "end": { + "line": 134, + "column": 27 + } + }, + "id": { + "type": "Identifier", + "start": 2777, + "end": 2778, + "loc": { + "start": { + "line": 134, + "column": 8 + }, + "end": { + "line": 134, + "column": 9 + }, + "identifierName": "c" + }, + "name": "c" + }, + "init": { + "type": "CallExpression", + "start": 2781, + "end": 2796, + "loc": { + "start": { + "line": 134, + "column": 12 + }, + "end": { + "line": 134, + "column": 27 + } + }, + "callee": { + "type": "Identifier", + "start": 2781, + "end": 2787, + "loc": { + "start": { + "line": 134, + "column": 12 + }, + "end": { + "line": 134, + "column": 18 + }, + "identifierName": "_zeros" + }, + "name": "_zeros" + }, + "arguments": [ + { + "type": "BinaryExpression", + "start": 2788, + "end": 2795, + "loc": { + "start": { + "line": 134, + "column": 19 + }, + "end": { + "line": 134, + "column": 26 + } + }, + "left": { + "type": "Identifier", + "start": 2788, + "end": 2790, + "loc": { + "start": { + "line": 134, + "column": 19 + }, + "end": { + "line": 134, + "column": 21 + }, + "identifierName": "aj" + }, + "name": "aj" + }, + "operator": "-", + "right": { + "type": "Identifier", + "start": 2793, + "end": 2795, + "loc": { + "start": { + "line": 134, + "column": 24 + }, + "end": { + "line": 134, + "column": 26 + }, + "identifierName": "ai" + }, + "name": "ai" + } + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "ExpressionStatement", + "start": 2801, + "end": 2847, + "loc": { + "start": { + "line": 136, + "column": 2 + }, + "end": { + "line": 136, + "column": 48 + } + }, + "expression": { + "type": "CallExpression", + "start": 2801, + "end": 2846, + "loc": { + "start": { + "line": 136, + "column": 2 + }, + "end": { + "line": 136, + "column": 47 + } + }, + "callee": { + "type": "Identifier", + "start": 2801, + "end": 2805, + "loc": { + "start": { + "line": 136, + "column": 2 + }, + "end": { + "line": 136, + "column": 6 + }, + "identifierName": "_sub" + }, + "name": "_sub" + }, + "arguments": [ + { + "type": "Identifier", + "start": 2806, + "end": 2807, + "loc": { + "start": { + "line": 136, + "column": 7 + }, + "end": { + "line": 136, + "column": 8 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "Identifier", + "start": 2809, + "end": 2810, + "loc": { + "start": { + "line": 136, + "column": 10 + }, + "end": { + "line": 136, + "column": 11 + }, + "identifierName": "a" + }, + "name": "a" + }, + { + "type": "Identifier", + "start": 2812, + "end": 2814, + "loc": { + "start": { + "line": 136, + "column": 13 + }, + "end": { + "line": 136, + "column": 15 + }, + "identifierName": "ai" + }, + "name": "ai" + }, + { + "type": "Identifier", + "start": 2816, + "end": 2818, + "loc": { + "start": { + "line": 136, + "column": 17 + }, + "end": { + "line": 136, + "column": 19 + }, + "identifierName": "aj" + }, + "name": "aj" + }, + { + "type": "Identifier", + "start": 2820, + "end": 2821, + "loc": { + "start": { + "line": 136, + "column": 21 + }, + "end": { + "line": 136, + "column": 22 + }, + "identifierName": "b" + }, + "name": "b" + }, + { + "type": "Identifier", + "start": 2823, + "end": 2825, + "loc": { + "start": { + "line": 136, + "column": 24 + }, + "end": { + "line": 136, + "column": 26 + }, + "identifierName": "bi" + }, + "name": "bi" + }, + { + "type": "Identifier", + "start": 2827, + "end": 2829, + "loc": { + "start": { + "line": 136, + "column": 28 + }, + "end": { + "line": 136, + "column": 30 + }, + "identifierName": "bj" + }, + "name": "bj" + }, + { + "type": "Identifier", + "start": 2831, + "end": 2832, + "loc": { + "start": { + "line": 136, + "column": 32 + }, + "end": { + "line": 136, + "column": 33 + }, + "identifierName": "c" + }, + "name": "c" + }, + { + "type": "NumericLiteral", + "start": 2834, + "end": 2835, + "loc": { + "start": { + "line": 136, + "column": 35 + }, + "end": { + "line": 136, + "column": 36 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 2837, + "end": 2845, + "loc": { + "start": { + "line": 136, + "column": 38 + }, + "end": { + "line": 136, + "column": 46 + } + }, + "object": { + "type": "Identifier", + "start": 2837, + "end": 2838, + "loc": { + "start": { + "line": 136, + "column": 38 + }, + "end": { + "line": 136, + "column": 39 + }, + "identifierName": "c" + }, + "name": "c" + }, + "property": { + "type": "Identifier", + "start": 2839, + "end": 2845, + "loc": { + "start": { + "line": 136, + "column": 40 + }, + "end": { + "line": 136, + "column": 46 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ] + } + }, + { + "type": "ReturnStatement", + "start": 2851, + "end": 2895, + "loc": { + "start": { + "line": 138, + "column": 2 + }, + "end": { + "line": 138, + "column": 46 + } + }, + "argument": { + "type": "NewExpression", + "start": 2858, + "end": 2894, + "loc": { + "start": { + "line": 138, + "column": 9 + }, + "end": { + "line": 138, + "column": 45 + } + }, + "callee": { + "type": "Identifier", + "start": 2862, + "end": 2869, + "loc": { + "start": { + "line": 138, + "column": 13 + }, + "end": { + "line": 138, + "column": 20 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "Identifier", + "start": 2870, + "end": 2871, + "loc": { + "start": { + "line": 138, + "column": 21 + }, + "end": { + "line": 138, + "column": 22 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "MemberExpression", + "start": 2873, + "end": 2890, + "loc": { + "start": { + "line": 138, + "column": 24 + }, + "end": { + "line": 138, + "column": 41 + } + }, + "object": { + "type": "ThisExpression", + "start": 2873, + "end": 2877, + "loc": { + "start": { + "line": 138, + "column": 24 + }, + "end": { + "line": 138, + "column": 28 + } + } + }, + "property": { + "type": "Identifier", + "start": 2878, + "end": 2890, + "loc": { + "start": { + "line": 138, + "column": 29 + }, + "end": { + "line": 138, + "column": 41 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 2892, + "end": 2893, + "loc": { + "start": { + "line": 138, + "column": 43 + }, + "end": { + "line": 138, + "column": 44 + }, + "identifierName": "c" + }, + "name": "c" + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 2901, + "end": 3006, + "loc": { + "start": { + "line": 141, + "column": 1 + }, + "end": { + "line": 144, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 2901, + "end": 2905, + "loc": { + "start": { + "line": 141, + "column": 1 + }, + "end": { + "line": 141, + "column": 5 + }, + "identifierName": "isub" + }, + "name": "isub" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 2906, + "end": 2911, + "loc": { + "start": { + "line": 141, + "column": 6 + }, + "end": { + "line": 141, + "column": 11 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 2913, + "end": 3006, + "loc": { + "start": { + "line": 141, + "column": 13 + }, + "end": { + "line": 144, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 2969, + "end": 3003, + "loc": { + "start": { + "line": 143, + "column": 2 + }, + "end": { + "line": 143, + "column": 36 + } + }, + "argument": { + "type": "CallExpression", + "start": 2976, + "end": 3002, + "loc": { + "start": { + "line": 143, + "column": 9 + }, + "end": { + "line": 143, + "column": 35 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2976, + "end": 2996, + "loc": { + "start": { + "line": 143, + "column": 9 + }, + "end": { + "line": 143, + "column": 29 + } + }, + "object": { + "type": "CallExpression", + "start": 2976, + "end": 2991, + "loc": { + "start": { + "line": 143, + "column": 9 + }, + "end": { + "line": 143, + "column": 24 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2976, + "end": 2984, + "loc": { + "start": { + "line": 143, + "column": 9 + }, + "end": { + "line": 143, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 2976, + "end": 2980, + "loc": { + "start": { + "line": 143, + "column": 9 + }, + "end": { + "line": 143, + "column": 13 + } + }, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 2981, + "end": 2984, + "loc": { + "start": { + "line": 143, + "column": 14 + }, + "end": { + "line": 143, + "column": 17 + }, + "identifierName": "sub" + }, + "name": "sub" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "Identifier", + "start": 2985, + "end": 2990, + "loc": { + "start": { + "line": 143, + "column": 18 + }, + "end": { + "line": 143, + "column": 23 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 2992, + "end": 2996, + "loc": { + "start": { + "line": 143, + "column": 25 + }, + "end": { + "line": 143, + "column": 29 + }, + "identifierName": "move" + }, + "name": "move" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "ThisExpression", + "start": 2997, + "end": 3001, + "loc": { + "start": { + "line": 143, + "column": 30 + }, + "end": { + "line": 143, + "column": 34 + } + } + } + ], + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 2917, + "end": 2966, + "loc": { + "start": { + "line": 142, + "column": 2 + }, + "end": { + "line": 142, + "column": 51 + } + } + } + ] + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 3009, + "end": 3067, + "loc": { + "start": { + "line": 146, + "column": 1 + }, + "end": { + "line": 148, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 3009, + "end": 3013, + "loc": { + "start": { + "line": 146, + "column": 1 + }, + "end": { + "line": 146, + "column": 5 + }, + "identifierName": "subn" + }, + "name": "subn" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 3014, + "end": 3020, + "loc": { + "start": { + "line": 146, + "column": 6 + }, + "end": { + "line": 146, + "column": 12 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "body": { + "type": "BlockStatement", + "start": 3022, + "end": 3067, + "loc": { + "start": { + "line": 146, + "column": 14 + }, + "end": { + "line": 148, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 3026, + "end": 3064, + "loc": { + "start": { + "line": 147, + "column": 2 + }, + "end": { + "line": 147, + "column": 40 + } + }, + "argument": { + "type": "CallExpression", + "start": 3033, + "end": 3063, + "loc": { + "start": { + "line": 147, + "column": 9 + }, + "end": { + "line": 147, + "column": 39 + } + }, + "callee": { + "type": "MemberExpression", + "start": 3033, + "end": 3041, + "loc": { + "start": { + "line": 147, + "column": 9 + }, + "end": { + "line": 147, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 3033, + "end": 3037, + "loc": { + "start": { + "line": 147, + "column": 9 + }, + "end": { + "line": 147, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 3038, + "end": 3041, + "loc": { + "start": { + "line": 147, + "column": 14 + }, + "end": { + "line": 147, + "column": 17 + }, + "identifierName": "sub" + }, + "name": "sub" + }, + "computed": false + }, + "arguments": [ + { + "type": "CallExpression", + "start": 3042, + "end": 3062, + "loc": { + "start": { + "line": 147, + "column": 18 + }, + "end": { + "line": 147, + "column": 38 + } + }, + "callee": { + "type": "Identifier", + "start": 3042, + "end": 3054, + "loc": { + "start": { + "line": 147, + "column": 18 + }, + "end": { + "line": 147, + "column": 30 + }, + "identifierName": "_from_number" + }, + "name": "_from_number" + }, + "arguments": [ + { + "type": "Identifier", + "start": 3055, + "end": 3061, + "loc": { + "start": { + "line": 147, + "column": 31 + }, + "end": { + "line": 147, + "column": 37 + }, + "identifierName": "number" + }, + "name": "number" + } + ] + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 3070, + "end": 3127, + "loc": { + "start": { + "line": 150, + "column": 1 + }, + "end": { + "line": 152, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 3070, + "end": 3075, + "loc": { + "start": { + "line": 150, + "column": 1 + }, + "end": { + "line": 150, + "column": 6 + }, + "identifierName": "isubn" + }, + "name": "isubn" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 3076, + "end": 3082, + "loc": { + "start": { + "line": 150, + "column": 7 + }, + "end": { + "line": 150, + "column": 13 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "body": { + "type": "BlockStatement", + "start": 3084, + "end": 3127, + "loc": { + "start": { + "line": 150, + "column": 15 + }, + "end": { + "line": 152, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 3088, + "end": 3124, + "loc": { + "start": { + "line": 151, + "column": 2 + }, + "end": { + "line": 151, + "column": 38 + } + }, + "argument": { + "type": "CallExpression", + "start": 3095, + "end": 3123, + "loc": { + "start": { + "line": 151, + "column": 9 + }, + "end": { + "line": 151, + "column": 37 + } + }, + "callee": { + "type": "MemberExpression", + "start": 3095, + "end": 3117, + "loc": { + "start": { + "line": 151, + "column": 9 + }, + "end": { + "line": 151, + "column": 31 + } + }, + "object": { + "type": "CallExpression", + "start": 3095, + "end": 3112, + "loc": { + "start": { + "line": 151, + "column": 9 + }, + "end": { + "line": 151, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 3095, + "end": 3104, + "loc": { + "start": { + "line": 151, + "column": 9 + }, + "end": { + "line": 151, + "column": 18 + } + }, + "object": { + "type": "ThisExpression", + "start": 3095, + "end": 3099, + "loc": { + "start": { + "line": 151, + "column": 9 + }, + "end": { + "line": 151, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 3100, + "end": 3104, + "loc": { + "start": { + "line": 151, + "column": 14 + }, + "end": { + "line": 151, + "column": 18 + }, + "identifierName": "subn" + }, + "name": "subn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 3105, + "end": 3111, + "loc": { + "start": { + "line": 151, + "column": 19 + }, + "end": { + "line": 151, + "column": 25 + }, + "identifierName": "number" + }, + "name": "number" + } + ] + }, + "property": { + "type": "Identifier", + "start": 3113, + "end": 3117, + "loc": { + "start": { + "line": 151, + "column": 27 + }, + "end": { + "line": 151, + "column": 31 + }, + "identifierName": "move" + }, + "name": "move" + }, + "computed": false + }, + "arguments": [ + { + "type": "ThisExpression", + "start": 3118, + "end": 3122, + "loc": { + "start": { + "line": 151, + "column": 32 + }, + "end": { + "line": 151, + "column": 36 + } + } + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 3130, + "end": 3452, + "loc": { + "start": { + "line": 154, + "column": 1 + }, + "end": { + "line": 167, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 3130, + "end": 3133, + "loc": { + "start": { + "line": 154, + "column": 1 + }, + "end": { + "line": 154, + "column": 4 + }, + "identifierName": "mul" + }, + "name": "mul" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 3134, + "end": 3139, + "loc": { + "start": { + "line": 154, + "column": 5 + }, + "end": { + "line": 154, + "column": 10 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 3141, + "end": 3452, + "loc": { + "start": { + "line": 154, + "column": 12 + }, + "end": { + "line": 167, + "column": 2 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 3145, + "end": 3211, + "loc": { + "start": { + "line": 155, + "column": 2 + }, + "end": { + "line": 155, + "column": 68 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 3151, + "end": 3210, + "loc": { + "start": { + "line": 155, + "column": 8 + }, + "end": { + "line": 155, + "column": 67 + } + }, + "id": { + "type": "Identifier", + "start": 3151, + "end": 3169, + "loc": { + "start": { + "line": 155, + "column": 8 + }, + "end": { + "line": 155, + "column": 26 + }, + "identifierName": "result_is_negative" + }, + "name": "result_is_negative" + }, + "init": { + "type": "BinaryExpression", + "start": 3172, + "end": 3210, + "loc": { + "start": { + "line": 155, + "column": 29 + }, + "end": { + "line": 155, + "column": 67 + } + }, + "left": { + "type": "MemberExpression", + "start": 3172, + "end": 3189, + "loc": { + "start": { + "line": 155, + "column": 29 + }, + "end": { + "line": 155, + "column": 46 + } + }, + "object": { + "type": "ThisExpression", + "start": 3172, + "end": 3176, + "loc": { + "start": { + "line": 155, + "column": 29 + }, + "end": { + "line": 155, + "column": 33 + } + } + }, + "property": { + "type": "Identifier", + "start": 3177, + "end": 3189, + "loc": { + "start": { + "line": 155, + "column": 34 + }, + "end": { + "line": 155, + "column": 46 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "operator": "^", + "right": { + "type": "MemberExpression", + "start": 3192, + "end": 3210, + "loc": { + "start": { + "line": 155, + "column": 49 + }, + "end": { + "line": 155, + "column": 67 + } + }, + "object": { + "type": "Identifier", + "start": 3192, + "end": 3197, + "loc": { + "start": { + "line": 155, + "column": 49 + }, + "end": { + "line": 155, + "column": 54 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 3198, + "end": 3210, + "loc": { + "start": { + "line": 155, + "column": 55 + }, + "end": { + "line": 155, + "column": 67 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + } + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 3214, + "end": 3235, + "loc": { + "start": { + "line": 156, + "column": 2 + }, + "end": { + "line": 156, + "column": 23 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 3220, + "end": 3234, + "loc": { + "start": { + "line": 156, + "column": 8 + }, + "end": { + "line": 156, + "column": 22 + } + }, + "id": { + "type": "Identifier", + "start": 3220, + "end": 3221, + "loc": { + "start": { + "line": 156, + "column": 8 + }, + "end": { + "line": 156, + "column": 9 + }, + "identifierName": "r" + }, + "name": "r" + }, + "init": { + "type": "MemberExpression", + "start": 3224, + "end": 3234, + "loc": { + "start": { + "line": 156, + "column": 12 + }, + "end": { + "line": 156, + "column": 22 + } + }, + "object": { + "type": "ThisExpression", + "start": 3224, + "end": 3228, + "loc": { + "start": { + "line": 156, + "column": 12 + }, + "end": { + "line": 156, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 3229, + "end": 3234, + "loc": { + "start": { + "line": 156, + "column": 17 + }, + "end": { + "line": 156, + "column": 22 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 3239, + "end": 3261, + "loc": { + "start": { + "line": 158, + "column": 2 + }, + "end": { + "line": 158, + "column": 24 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 3245, + "end": 3260, + "loc": { + "start": { + "line": 158, + "column": 8 + }, + "end": { + "line": 158, + "column": 23 + } + }, + "id": { + "type": "Identifier", + "start": 3245, + "end": 3246, + "loc": { + "start": { + "line": 158, + "column": 8 + }, + "end": { + "line": 158, + "column": 9 + }, + "identifierName": "a" + }, + "name": "a" + }, + "init": { + "type": "MemberExpression", + "start": 3249, + "end": 3260, + "loc": { + "start": { + "line": 158, + "column": 12 + }, + "end": { + "line": 158, + "column": 23 + } + }, + "object": { + "type": "ThisExpression", + "start": 3249, + "end": 3253, + "loc": { + "start": { + "line": 158, + "column": 12 + }, + "end": { + "line": 158, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 3254, + "end": 3260, + "loc": { + "start": { + "line": 158, + "column": 17 + }, + "end": { + "line": 158, + "column": 23 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 3265, + "end": 3299, + "loc": { + "start": { + "line": 160, + "column": 2 + }, + "end": { + "line": 160, + "column": 36 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 3271, + "end": 3298, + "loc": { + "start": { + "line": 160, + "column": 8 + }, + "end": { + "line": 160, + "column": 35 + } + }, + "id": { + "type": "Identifier", + "start": 3271, + "end": 3272, + "loc": { + "start": { + "line": 160, + "column": 8 + }, + "end": { + "line": 160, + "column": 9 + }, + "identifierName": "b" + }, + "name": "b" + }, + "init": { + "type": "CallExpression", + "start": 3275, + "end": 3298, + "loc": { + "start": { + "line": 160, + "column": 12 + }, + "end": { + "line": 160, + "column": 35 + } + }, + "callee": { + "type": "MemberExpression", + "start": 3275, + "end": 3295, + "loc": { + "start": { + "line": 160, + "column": 12 + }, + "end": { + "line": 160, + "column": 32 + } + }, + "object": { + "type": "Identifier", + "start": 3275, + "end": 3280, + "loc": { + "start": { + "line": 160, + "column": 12 + }, + "end": { + "line": 160, + "column": 17 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 3281, + "end": 3295, + "loc": { + "start": { + "line": 160, + "column": 18 + }, + "end": { + "line": 160, + "column": 32 + }, + "identifierName": "_limbs_in_base" + }, + "name": "_limbs_in_base" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 3296, + "end": 3297, + "loc": { + "start": { + "line": 160, + "column": 33 + }, + "end": { + "line": 160, + "column": 34 + }, + "identifierName": "r" + }, + "name": "r" + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 3303, + "end": 3341, + "loc": { + "start": { + "line": 162, + "column": 2 + }, + "end": { + "line": 162, + "column": 40 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 3309, + "end": 3340, + "loc": { + "start": { + "line": 162, + "column": 8 + }, + "end": { + "line": 162, + "column": 39 + } + }, + "id": { + "type": "Identifier", + "start": 3309, + "end": 3310, + "loc": { + "start": { + "line": 162, + "column": 8 + }, + "end": { + "line": 162, + "column": 9 + }, + "identifierName": "c" + }, + "name": "c" + }, + "init": { + "type": "CallExpression", + "start": 3313, + "end": 3340, + "loc": { + "start": { + "line": 162, + "column": 12 + }, + "end": { + "line": 162, + "column": 39 + } + }, + "callee": { + "type": "Identifier", + "start": 3313, + "end": 3319, + "loc": { + "start": { + "line": 162, + "column": 12 + }, + "end": { + "line": 162, + "column": 18 + }, + "identifierName": "_zeros" + }, + "name": "_zeros" + }, + "arguments": [ + { + "type": "BinaryExpression", + "start": 3320, + "end": 3339, + "loc": { + "start": { + "line": 162, + "column": 19 + }, + "end": { + "line": 162, + "column": 38 + } + }, + "left": { + "type": "MemberExpression", + "start": 3320, + "end": 3328, + "loc": { + "start": { + "line": 162, + "column": 19 + }, + "end": { + "line": 162, + "column": 27 + } + }, + "object": { + "type": "Identifier", + "start": 3320, + "end": 3321, + "loc": { + "start": { + "line": 162, + "column": 19 + }, + "end": { + "line": 162, + "column": 20 + }, + "identifierName": "a" + }, + "name": "a" + }, + "property": { + "type": "Identifier", + "start": 3322, + "end": 3328, + "loc": { + "start": { + "line": 162, + "column": 21 + }, + "end": { + "line": 162, + "column": 27 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + "operator": "+", + "right": { + "type": "MemberExpression", + "start": 3331, + "end": 3339, + "loc": { + "start": { + "line": 162, + "column": 30 + }, + "end": { + "line": 162, + "column": 38 + } + }, + "object": { + "type": "Identifier", + "start": 3331, + "end": 3332, + "loc": { + "start": { + "line": 162, + "column": 30 + }, + "end": { + "line": 162, + "column": 31 + }, + "identifierName": "b" + }, + "name": "b" + }, + "property": { + "type": "Identifier", + "start": 3333, + "end": 3339, + "loc": { + "start": { + "line": 162, + "column": 32 + }, + "end": { + "line": 162, + "column": 38 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "ExpressionStatement", + "start": 3345, + "end": 3400, + "loc": { + "start": { + "line": 164, + "column": 2 + }, + "end": { + "line": 164, + "column": 57 + } + }, + "expression": { + "type": "CallExpression", + "start": 3345, + "end": 3399, + "loc": { + "start": { + "line": 164, + "column": 2 + }, + "end": { + "line": 164, + "column": 56 + } + }, + "callee": { + "type": "Identifier", + "start": 3345, + "end": 3348, + "loc": { + "start": { + "line": 164, + "column": 2 + }, + "end": { + "line": 164, + "column": 5 + }, + "identifierName": "mul" + }, + "name": "mul" + }, + "arguments": [ + { + "type": "Identifier", + "start": 3349, + "end": 3350, + "loc": { + "start": { + "line": 164, + "column": 6 + }, + "end": { + "line": 164, + "column": 7 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "Identifier", + "start": 3352, + "end": 3353, + "loc": { + "start": { + "line": 164, + "column": 9 + }, + "end": { + "line": 164, + "column": 10 + }, + "identifierName": "a" + }, + "name": "a" + }, + { + "type": "NumericLiteral", + "start": 3355, + "end": 3356, + "loc": { + "start": { + "line": 164, + "column": 12 + }, + "end": { + "line": 164, + "column": 13 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 3358, + "end": 3366, + "loc": { + "start": { + "line": 164, + "column": 15 + }, + "end": { + "line": 164, + "column": 23 + } + }, + "object": { + "type": "Identifier", + "start": 3358, + "end": 3359, + "loc": { + "start": { + "line": 164, + "column": 15 + }, + "end": { + "line": 164, + "column": 16 + }, + "identifierName": "a" + }, + "name": "a" + }, + "property": { + "type": "Identifier", + "start": 3360, + "end": 3366, + "loc": { + "start": { + "line": 164, + "column": 17 + }, + "end": { + "line": 164, + "column": 23 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 3368, + "end": 3369, + "loc": { + "start": { + "line": 164, + "column": 25 + }, + "end": { + "line": 164, + "column": 26 + }, + "identifierName": "b" + }, + "name": "b" + }, + { + "type": "NumericLiteral", + "start": 3371, + "end": 3372, + "loc": { + "start": { + "line": 164, + "column": 28 + }, + "end": { + "line": 164, + "column": 29 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 3374, + "end": 3382, + "loc": { + "start": { + "line": 164, + "column": 31 + }, + "end": { + "line": 164, + "column": 39 + } + }, + "object": { + "type": "Identifier", + "start": 3374, + "end": 3375, + "loc": { + "start": { + "line": 164, + "column": 31 + }, + "end": { + "line": 164, + "column": 32 + }, + "identifierName": "b" + }, + "name": "b" + }, + "property": { + "type": "Identifier", + "start": 3376, + "end": 3382, + "loc": { + "start": { + "line": 164, + "column": 33 + }, + "end": { + "line": 164, + "column": 39 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 3384, + "end": 3385, + "loc": { + "start": { + "line": 164, + "column": 41 + }, + "end": { + "line": 164, + "column": 42 + }, + "identifierName": "c" + }, + "name": "c" + }, + { + "type": "NumericLiteral", + "start": 3387, + "end": 3388, + "loc": { + "start": { + "line": 164, + "column": 44 + }, + "end": { + "line": 164, + "column": 45 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 3390, + "end": 3398, + "loc": { + "start": { + "line": 164, + "column": 47 + }, + "end": { + "line": 164, + "column": 55 + } + }, + "object": { + "type": "Identifier", + "start": 3390, + "end": 3391, + "loc": { + "start": { + "line": 164, + "column": 47 + }, + "end": { + "line": 164, + "column": 48 + }, + "identifierName": "c" + }, + "name": "c" + }, + "property": { + "type": "Identifier", + "start": 3392, + "end": 3398, + "loc": { + "start": { + "line": 164, + "column": 49 + }, + "end": { + "line": 164, + "column": 55 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ] + } + }, + { + "type": "ReturnStatement", + "start": 3404, + "end": 3449, + "loc": { + "start": { + "line": 166, + "column": 2 + }, + "end": { + "line": 166, + "column": 47 + } + }, + "argument": { + "type": "NewExpression", + "start": 3411, + "end": 3448, + "loc": { + "start": { + "line": 166, + "column": 9 + }, + "end": { + "line": 166, + "column": 46 + } + }, + "callee": { + "type": "Identifier", + "start": 3415, + "end": 3422, + "loc": { + "start": { + "line": 166, + "column": 13 + }, + "end": { + "line": 166, + "column": 20 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "Identifier", + "start": 3423, + "end": 3424, + "loc": { + "start": { + "line": 166, + "column": 21 + }, + "end": { + "line": 166, + "column": 22 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "Identifier", + "start": 3426, + "end": 3444, + "loc": { + "start": { + "line": 166, + "column": 24 + }, + "end": { + "line": 166, + "column": 42 + }, + "identifierName": "result_is_negative" + }, + "name": "result_is_negative" + }, + { + "type": "Identifier", + "start": 3446, + "end": 3447, + "loc": { + "start": { + "line": 166, + "column": 44 + }, + "end": { + "line": 166, + "column": 45 + }, + "identifierName": "c" + }, + "name": "c" + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 3455, + "end": 3560, + "loc": { + "start": { + "line": 169, + "column": 1 + }, + "end": { + "line": 172, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 3455, + "end": 3459, + "loc": { + "start": { + "line": 169, + "column": 1 + }, + "end": { + "line": 169, + "column": 5 + }, + "identifierName": "imul" + }, + "name": "imul" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 3460, + "end": 3465, + "loc": { + "start": { + "line": 169, + "column": 6 + }, + "end": { + "line": 169, + "column": 11 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 3467, + "end": 3560, + "loc": { + "start": { + "line": 169, + "column": 13 + }, + "end": { + "line": 172, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 3523, + "end": 3557, + "loc": { + "start": { + "line": 171, + "column": 2 + }, + "end": { + "line": 171, + "column": 36 + } + }, + "argument": { + "type": "CallExpression", + "start": 3530, + "end": 3556, + "loc": { + "start": { + "line": 171, + "column": 9 + }, + "end": { + "line": 171, + "column": 35 + } + }, + "callee": { + "type": "MemberExpression", + "start": 3530, + "end": 3550, + "loc": { + "start": { + "line": 171, + "column": 9 + }, + "end": { + "line": 171, + "column": 29 + } + }, + "object": { + "type": "CallExpression", + "start": 3530, + "end": 3545, + "loc": { + "start": { + "line": 171, + "column": 9 + }, + "end": { + "line": 171, + "column": 24 + } + }, + "callee": { + "type": "MemberExpression", + "start": 3530, + "end": 3538, + "loc": { + "start": { + "line": 171, + "column": 9 + }, + "end": { + "line": 171, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 3530, + "end": 3534, + "loc": { + "start": { + "line": 171, + "column": 9 + }, + "end": { + "line": 171, + "column": 13 + } + }, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 3535, + "end": 3538, + "loc": { + "start": { + "line": 171, + "column": 14 + }, + "end": { + "line": 171, + "column": 17 + }, + "identifierName": "mul" + }, + "name": "mul" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "Identifier", + "start": 3539, + "end": 3544, + "loc": { + "start": { + "line": 171, + "column": 18 + }, + "end": { + "line": 171, + "column": 23 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 3546, + "end": 3550, + "loc": { + "start": { + "line": 171, + "column": 25 + }, + "end": { + "line": 171, + "column": 29 + }, + "identifierName": "move" + }, + "name": "move" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "ThisExpression", + "start": 3551, + "end": 3555, + "loc": { + "start": { + "line": 171, + "column": 30 + }, + "end": { + "line": 171, + "column": 34 + } + } + } + ], + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 3471, + "end": 3520, + "loc": { + "start": { + "line": 170, + "column": 2 + }, + "end": { + "line": 170, + "column": 51 + } + } + } + ] + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 3563, + "end": 3621, + "loc": { + "start": { + "line": 174, + "column": 1 + }, + "end": { + "line": 176, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 3563, + "end": 3567, + "loc": { + "start": { + "line": 174, + "column": 1 + }, + "end": { + "line": 174, + "column": 5 + }, + "identifierName": "muln" + }, + "name": "muln" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 3568, + "end": 3574, + "loc": { + "start": { + "line": 174, + "column": 6 + }, + "end": { + "line": 174, + "column": 12 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "body": { + "type": "BlockStatement", + "start": 3576, + "end": 3621, + "loc": { + "start": { + "line": 174, + "column": 14 + }, + "end": { + "line": 176, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 3580, + "end": 3618, + "loc": { + "start": { + "line": 175, + "column": 2 + }, + "end": { + "line": 175, + "column": 40 + } + }, + "argument": { + "type": "CallExpression", + "start": 3587, + "end": 3617, + "loc": { + "start": { + "line": 175, + "column": 9 + }, + "end": { + "line": 175, + "column": 39 + } + }, + "callee": { + "type": "MemberExpression", + "start": 3587, + "end": 3595, + "loc": { + "start": { + "line": 175, + "column": 9 + }, + "end": { + "line": 175, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 3587, + "end": 3591, + "loc": { + "start": { + "line": 175, + "column": 9 + }, + "end": { + "line": 175, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 3592, + "end": 3595, + "loc": { + "start": { + "line": 175, + "column": 14 + }, + "end": { + "line": 175, + "column": 17 + }, + "identifierName": "mul" + }, + "name": "mul" + }, + "computed": false + }, + "arguments": [ + { + "type": "CallExpression", + "start": 3596, + "end": 3616, + "loc": { + "start": { + "line": 175, + "column": 18 + }, + "end": { + "line": 175, + "column": 38 + } + }, + "callee": { + "type": "Identifier", + "start": 3596, + "end": 3608, + "loc": { + "start": { + "line": 175, + "column": 18 + }, + "end": { + "line": 175, + "column": 30 + }, + "identifierName": "_from_number" + }, + "name": "_from_number" + }, + "arguments": [ + { + "type": "Identifier", + "start": 3609, + "end": 3615, + "loc": { + "start": { + "line": 175, + "column": 31 + }, + "end": { + "line": 175, + "column": 37 + }, + "identifierName": "number" + }, + "name": "number" + } + ] + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 3624, + "end": 3681, + "loc": { + "start": { + "line": 178, + "column": 1 + }, + "end": { + "line": 180, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 3624, + "end": 3629, + "loc": { + "start": { + "line": 178, + "column": 1 + }, + "end": { + "line": 178, + "column": 6 + }, + "identifierName": "imuln" + }, + "name": "imuln" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 3630, + "end": 3636, + "loc": { + "start": { + "line": 178, + "column": 7 + }, + "end": { + "line": 178, + "column": 13 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "body": { + "type": "BlockStatement", + "start": 3638, + "end": 3681, + "loc": { + "start": { + "line": 178, + "column": 15 + }, + "end": { + "line": 180, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 3642, + "end": 3678, + "loc": { + "start": { + "line": 179, + "column": 2 + }, + "end": { + "line": 179, + "column": 38 + } + }, + "argument": { + "type": "CallExpression", + "start": 3649, + "end": 3677, + "loc": { + "start": { + "line": 179, + "column": 9 + }, + "end": { + "line": 179, + "column": 37 + } + }, + "callee": { + "type": "MemberExpression", + "start": 3649, + "end": 3671, + "loc": { + "start": { + "line": 179, + "column": 9 + }, + "end": { + "line": 179, + "column": 31 + } + }, + "object": { + "type": "CallExpression", + "start": 3649, + "end": 3666, + "loc": { + "start": { + "line": 179, + "column": 9 + }, + "end": { + "line": 179, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 3649, + "end": 3658, + "loc": { + "start": { + "line": 179, + "column": 9 + }, + "end": { + "line": 179, + "column": 18 + } + }, + "object": { + "type": "ThisExpression", + "start": 3649, + "end": 3653, + "loc": { + "start": { + "line": 179, + "column": 9 + }, + "end": { + "line": 179, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 3654, + "end": 3658, + "loc": { + "start": { + "line": 179, + "column": 14 + }, + "end": { + "line": 179, + "column": 18 + }, + "identifierName": "muln" + }, + "name": "muln" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 3659, + "end": 3665, + "loc": { + "start": { + "line": 179, + "column": 19 + }, + "end": { + "line": 179, + "column": 25 + }, + "identifierName": "number" + }, + "name": "number" + } + ] + }, + "property": { + "type": "Identifier", + "start": 3667, + "end": 3671, + "loc": { + "start": { + "line": 179, + "column": 27 + }, + "end": { + "line": 179, + "column": 31 + }, + "identifierName": "move" + }, + "name": "move" + }, + "computed": false + }, + "arguments": [ + { + "type": "ThisExpression", + "start": 3672, + "end": 3676, + "loc": { + "start": { + "line": 179, + "column": 32 + }, + "end": { + "line": 179, + "column": 36 + } + } + } + ] + } + } + ], + "directives": [], + "trailingComments": null + }, + "trailingComments": [ + { + "type": "CommentBlock", + "value": "*\n\t * Computes this raised to the xth power.\n\t * x is a double smaller or equal to 2^53.\n\t *\n\t * @param {Number} x The power to raise this to.\n\t * @return {Integer} this ^ x\n\t ", + "start": 3684, + "end": 3929, + "loc": { + "start": { + "line": 182, + "column": 1 + }, + "end": { + "line": 188, + "column": 4 + } + } + } + ] + }, + { + "type": "ClassMethod", + "start": 3931, + "end": 4188, + "loc": { + "start": { + "line": 189, + "column": 1 + }, + "end": { + "line": 198, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 3931, + "end": 3935, + "loc": { + "start": { + "line": 189, + "column": 1 + }, + "end": { + "line": 189, + "column": 5 + }, + "identifierName": "pown" + }, + "name": "pown", + "leadingComments": null + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 3936, + "end": 3937, + "loc": { + "start": { + "line": 189, + "column": 6 + }, + "end": { + "line": 189, + "column": 7 + }, + "identifierName": "x" + }, + "name": "x" + } + ], + "body": { + "type": "BlockStatement", + "start": 3939, + "end": 4188, + "loc": { + "start": { + "line": 189, + "column": 9 + }, + "end": { + "line": 198, + "column": 2 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 3943, + "end": 3998, + "loc": { + "start": { + "line": 190, + "column": 2 + }, + "end": { + "line": 190, + "column": 57 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 3949, + "end": 3997, + "loc": { + "start": { + "line": 190, + "column": 8 + }, + "end": { + "line": 190, + "column": 56 + } + }, + "id": { + "type": "Identifier", + "start": 3949, + "end": 3960, + "loc": { + "start": { + "line": 190, + "column": 8 + }, + "end": { + "line": 190, + "column": 19 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + }, + "init": { + "type": "ConditionalExpression", + "start": 3963, + "end": 3997, + "loc": { + "start": { + "line": 190, + "column": 22 + }, + "end": { + "line": 190, + "column": 56 + } + }, + "test": { + "type": "BinaryExpression", + "start": 3963, + "end": 3988, + "loc": { + "start": { + "line": 190, + "column": 22 + }, + "end": { + "line": 190, + "column": 47 + } + }, + "left": { + "type": "BinaryExpression", + "start": 3963, + "end": 3984, + "loc": { + "start": { + "line": 190, + "column": 22 + }, + "end": { + "line": 190, + "column": 43 + } + }, + "left": { + "type": "MemberExpression", + "start": 3963, + "end": 3980, + "loc": { + "start": { + "line": 190, + "column": 22 + }, + "end": { + "line": 190, + "column": 39 + } + }, + "object": { + "type": "ThisExpression", + "start": 3963, + "end": 3967, + "loc": { + "start": { + "line": 190, + "column": 22 + }, + "end": { + "line": 190, + "column": 26 + } + } + }, + "property": { + "type": "Identifier", + "start": 3968, + "end": 3980, + "loc": { + "start": { + "line": 190, + "column": 27 + }, + "end": { + "line": 190, + "column": 39 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "operator": "&", + "right": { + "type": "Identifier", + "start": 3983, + "end": 3984, + "loc": { + "start": { + "line": 190, + "column": 42 + }, + "end": { + "line": 190, + "column": 43 + }, + "identifierName": "x" + }, + "name": "x" + } + }, + "operator": "&", + "right": { + "type": "NumericLiteral", + "start": 3987, + "end": 3988, + "loc": { + "start": { + "line": 190, + "column": 46 + }, + "end": { + "line": 190, + "column": 47 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + } + }, + "consequent": { + "type": "UnaryExpression", + "start": 3991, + "end": 3993, + "loc": { + "start": { + "line": 190, + "column": 50 + }, + "end": { + "line": 190, + "column": 52 + } + }, + "operator": "-", + "prefix": true, + "argument": { + "type": "NumericLiteral", + "start": 3992, + "end": 3993, + "loc": { + "start": { + "line": 190, + "column": 51 + }, + "end": { + "line": 190, + "column": 52 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + "extra": { + "parenthesizedArgument": false + } + }, + "alternate": { + "type": "NumericLiteral", + "start": 3996, + "end": 3997, + "loc": { + "start": { + "line": 190, + "column": 55 + }, + "end": { + "line": 190, + "column": 56 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 4002, + "end": 4024, + "loc": { + "start": { + "line": 192, + "column": 2 + }, + "end": { + "line": 192, + "column": 24 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 4008, + "end": 4023, + "loc": { + "start": { + "line": 192, + "column": 8 + }, + "end": { + "line": 192, + "column": 23 + } + }, + "id": { + "type": "Identifier", + "start": 4008, + "end": 4009, + "loc": { + "start": { + "line": 192, + "column": 8 + }, + "end": { + "line": 192, + "column": 9 + }, + "identifierName": "a" + }, + "name": "a" + }, + "init": { + "type": "MemberExpression", + "start": 4012, + "end": 4023, + "loc": { + "start": { + "line": 192, + "column": 12 + }, + "end": { + "line": 192, + "column": 23 + } + }, + "object": { + "type": "ThisExpression", + "start": 4012, + "end": 4016, + "loc": { + "start": { + "line": 192, + "column": 12 + }, + "end": { + "line": 192, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 4017, + "end": 4023, + "loc": { + "start": { + "line": 192, + "column": 17 + }, + "end": { + "line": 192, + "column": 23 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 4027, + "end": 4071, + "loc": { + "start": { + "line": 193, + "column": 2 + }, + "end": { + "line": 193, + "column": 46 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 4033, + "end": 4070, + "loc": { + "start": { + "line": 193, + "column": 8 + }, + "end": { + "line": 193, + "column": 45 + } + }, + "id": { + "type": "Identifier", + "start": 4033, + "end": 4034, + "loc": { + "start": { + "line": 193, + "column": 8 + }, + "end": { + "line": 193, + "column": 9 + }, + "identifierName": "c" + }, + "name": "c" + }, + "init": { + "type": "CallExpression", + "start": 4037, + "end": 4070, + "loc": { + "start": { + "line": 193, + "column": 12 + }, + "end": { + "line": 193, + "column": 45 + } + }, + "callee": { + "type": "Identifier", + "start": 4037, + "end": 4043, + "loc": { + "start": { + "line": 193, + "column": 12 + }, + "end": { + "line": 193, + "column": 18 + }, + "identifierName": "_zeros" + }, + "name": "_zeros" + }, + "arguments": [ + { + "type": "CallExpression", + "start": 4044, + "end": 4069, + "loc": { + "start": { + "line": 193, + "column": 19 + }, + "end": { + "line": 193, + "column": 44 + } + }, + "callee": { + "type": "MemberExpression", + "start": 4044, + "end": 4052, + "loc": { + "start": { + "line": 193, + "column": 19 + }, + "end": { + "line": 193, + "column": 27 + } + }, + "object": { + "type": "Identifier", + "start": 4044, + "end": 4048, + "loc": { + "start": { + "line": 193, + "column": 19 + }, + "end": { + "line": 193, + "column": 23 + }, + "identifierName": "Math" + }, + "name": "Math" + }, + "property": { + "type": "Identifier", + "start": 4049, + "end": 4052, + "loc": { + "start": { + "line": 193, + "column": 24 + }, + "end": { + "line": 193, + "column": 27 + }, + "identifierName": "max" + }, + "name": "max" + }, + "computed": false + }, + "arguments": [ + { + "type": "NumericLiteral", + "start": 4053, + "end": 4054, + "loc": { + "start": { + "line": 193, + "column": 28 + }, + "end": { + "line": 193, + "column": 29 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + { + "type": "BinaryExpression", + "start": 4056, + "end": 4068, + "loc": { + "start": { + "line": 193, + "column": 31 + }, + "end": { + "line": 193, + "column": 43 + } + }, + "left": { + "type": "MemberExpression", + "start": 4056, + "end": 4064, + "loc": { + "start": { + "line": 193, + "column": 31 + }, + "end": { + "line": 193, + "column": 39 + } + }, + "object": { + "type": "Identifier", + "start": 4056, + "end": 4057, + "loc": { + "start": { + "line": 193, + "column": 31 + }, + "end": { + "line": 193, + "column": 32 + }, + "identifierName": "a" + }, + "name": "a" + }, + "property": { + "type": "Identifier", + "start": 4058, + "end": 4064, + "loc": { + "start": { + "line": 193, + "column": 33 + }, + "end": { + "line": 193, + "column": 39 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + "operator": "*", + "right": { + "type": "Identifier", + "start": 4067, + "end": 4068, + "loc": { + "start": { + "line": 193, + "column": 42 + }, + "end": { + "line": 193, + "column": 43 + }, + "identifierName": "x" + }, + "name": "x" + } + } + ] + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "ExpressionStatement", + "start": 4075, + "end": 4134, + "loc": { + "start": { + "line": 195, + "column": 2 + }, + "end": { + "line": 195, + "column": 61 + } + }, + "expression": { + "type": "CallExpression", + "start": 4075, + "end": 4133, + "loc": { + "start": { + "line": 195, + "column": 2 + }, + "end": { + "line": 195, + "column": 60 + } + }, + "callee": { + "type": "Identifier", + "start": 4075, + "end": 4086, + "loc": { + "start": { + "line": 195, + "column": 2 + }, + "end": { + "line": 195, + "column": 13 + }, + "identifierName": "_pow_double" + }, + "name": "_pow_double" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 4087, + "end": 4097, + "loc": { + "start": { + "line": 195, + "column": 14 + }, + "end": { + "line": 195, + "column": 24 + } + }, + "object": { + "type": "ThisExpression", + "start": 4087, + "end": 4091, + "loc": { + "start": { + "line": 195, + "column": 14 + }, + "end": { + "line": 195, + "column": 18 + } + } + }, + "property": { + "type": "Identifier", + "start": 4092, + "end": 4097, + "loc": { + "start": { + "line": 195, + "column": 19 + }, + "end": { + "line": 195, + "column": 24 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 4099, + "end": 4100, + "loc": { + "start": { + "line": 195, + "column": 26 + }, + "end": { + "line": 195, + "column": 27 + }, + "identifierName": "x" + }, + "name": "x" + }, + { + "type": "Identifier", + "start": 4102, + "end": 4103, + "loc": { + "start": { + "line": 195, + "column": 29 + }, + "end": { + "line": 195, + "column": 30 + }, + "identifierName": "a" + }, + "name": "a" + }, + { + "type": "NumericLiteral", + "start": 4105, + "end": 4106, + "loc": { + "start": { + "line": 195, + "column": 32 + }, + "end": { + "line": 195, + "column": 33 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 4108, + "end": 4116, + "loc": { + "start": { + "line": 195, + "column": 35 + }, + "end": { + "line": 195, + "column": 43 + } + }, + "object": { + "type": "Identifier", + "start": 4108, + "end": 4109, + "loc": { + "start": { + "line": 195, + "column": 35 + }, + "end": { + "line": 195, + "column": 36 + }, + "identifierName": "a" + }, + "name": "a" + }, + "property": { + "type": "Identifier", + "start": 4110, + "end": 4116, + "loc": { + "start": { + "line": 195, + "column": 37 + }, + "end": { + "line": 195, + "column": 43 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 4118, + "end": 4119, + "loc": { + "start": { + "line": 195, + "column": 45 + }, + "end": { + "line": 195, + "column": 46 + }, + "identifierName": "c" + }, + "name": "c" + }, + { + "type": "NumericLiteral", + "start": 4121, + "end": 4122, + "loc": { + "start": { + "line": 195, + "column": 48 + }, + "end": { + "line": 195, + "column": 49 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 4124, + "end": 4132, + "loc": { + "start": { + "line": 195, + "column": 51 + }, + "end": { + "line": 195, + "column": 59 + } + }, + "object": { + "type": "Identifier", + "start": 4124, + "end": 4125, + "loc": { + "start": { + "line": 195, + "column": 51 + }, + "end": { + "line": 195, + "column": 52 + }, + "identifierName": "c" + }, + "name": "c" + }, + "property": { + "type": "Identifier", + "start": 4126, + "end": 4132, + "loc": { + "start": { + "line": 195, + "column": 53 + }, + "end": { + "line": 195, + "column": 59 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ] + } + }, + { + "type": "ReturnStatement", + "start": 4138, + "end": 4185, + "loc": { + "start": { + "line": 197, + "column": 2 + }, + "end": { + "line": 197, + "column": 49 + } + }, + "argument": { + "type": "NewExpression", + "start": 4145, + "end": 4184, + "loc": { + "start": { + "line": 197, + "column": 9 + }, + "end": { + "line": 197, + "column": 48 + } + }, + "callee": { + "type": "Identifier", + "start": 4149, + "end": 4156, + "loc": { + "start": { + "line": 197, + "column": 13 + }, + "end": { + "line": 197, + "column": 20 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 4157, + "end": 4167, + "loc": { + "start": { + "line": 197, + "column": 21 + }, + "end": { + "line": 197, + "column": 31 + } + }, + "object": { + "type": "ThisExpression", + "start": 4157, + "end": 4161, + "loc": { + "start": { + "line": 197, + "column": 21 + }, + "end": { + "line": 197, + "column": 25 + } + } + }, + "property": { + "type": "Identifier", + "start": 4162, + "end": 4167, + "loc": { + "start": { + "line": 197, + "column": 26 + }, + "end": { + "line": 197, + "column": 31 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 4169, + "end": 4180, + "loc": { + "start": { + "line": 197, + "column": 33 + }, + "end": { + "line": 197, + "column": 44 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + }, + { + "type": "Identifier", + "start": 4182, + "end": 4183, + "loc": { + "start": { + "line": 197, + "column": 46 + }, + "end": { + "line": 197, + "column": 47 + }, + "identifierName": "c" + }, + "name": "c" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [ + { + "type": "CommentBlock", + "value": "*\n\t * Computes this raised to the xth power.\n\t * x is a double smaller or equal to 2^53.\n\t *\n\t * @param {Number} x The power to raise this to.\n\t * @return {Integer} this ^ x\n\t ", + "start": 3684, + "end": 3929, + "loc": { + "start": { + "line": 182, + "column": 1 + }, + "end": { + "line": 188, + "column": 4 + } + } + } + ] + }, + { + "type": "ClassMethod", + "start": 4191, + "end": 4243, + "loc": { + "start": { + "line": 200, + "column": 1 + }, + "end": { + "line": 202, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 4191, + "end": 4194, + "loc": { + "start": { + "line": 200, + "column": 1 + }, + "end": { + "line": 200, + "column": 4 + }, + "identifierName": "pow" + }, + "name": "pow" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 4195, + "end": 4200, + "loc": { + "start": { + "line": 200, + "column": 5 + }, + "end": { + "line": 200, + "column": 10 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 4202, + "end": 4243, + "loc": { + "start": { + "line": 200, + "column": 12 + }, + "end": { + "line": 202, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 4206, + "end": 4240, + "loc": { + "start": { + "line": 201, + "column": 2 + }, + "end": { + "line": 201, + "column": 36 + } + }, + "argument": { + "type": "CallExpression", + "start": 4213, + "end": 4239, + "loc": { + "start": { + "line": 201, + "column": 9 + }, + "end": { + "line": 201, + "column": 35 + } + }, + "callee": { + "type": "MemberExpression", + "start": 4213, + "end": 4222, + "loc": { + "start": { + "line": 201, + "column": 9 + }, + "end": { + "line": 201, + "column": 18 + } + }, + "object": { + "type": "ThisExpression", + "start": 4213, + "end": 4217, + "loc": { + "start": { + "line": 201, + "column": 9 + }, + "end": { + "line": 201, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 4218, + "end": 4222, + "loc": { + "start": { + "line": 201, + "column": 14 + }, + "end": { + "line": 201, + "column": 18 + }, + "identifierName": "pown" + }, + "name": "pown" + }, + "computed": false + }, + "arguments": [ + { + "type": "CallExpression", + "start": 4223, + "end": 4238, + "loc": { + "start": { + "line": 201, + "column": 19 + }, + "end": { + "line": 201, + "column": 34 + } + }, + "callee": { + "type": "MemberExpression", + "start": 4223, + "end": 4236, + "loc": { + "start": { + "line": 201, + "column": 19 + }, + "end": { + "line": 201, + "column": 32 + } + }, + "object": { + "type": "Identifier", + "start": 4223, + "end": 4228, + "loc": { + "start": { + "line": 201, + "column": 19 + }, + "end": { + "line": 201, + "column": 24 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 4229, + "end": 4236, + "loc": { + "start": { + "line": 201, + "column": 25 + }, + "end": { + "line": 201, + "column": 32 + }, + "identifierName": "valueOf" + }, + "name": "valueOf" + }, + "computed": false + }, + "arguments": [] + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 4246, + "end": 4351, + "loc": { + "start": { + "line": 204, + "column": 1 + }, + "end": { + "line": 207, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 4246, + "end": 4250, + "loc": { + "start": { + "line": 204, + "column": 1 + }, + "end": { + "line": 204, + "column": 5 + }, + "identifierName": "ipow" + }, + "name": "ipow" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 4251, + "end": 4256, + "loc": { + "start": { + "line": 204, + "column": 6 + }, + "end": { + "line": 204, + "column": 11 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 4258, + "end": 4351, + "loc": { + "start": { + "line": 204, + "column": 13 + }, + "end": { + "line": 207, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 4314, + "end": 4348, + "loc": { + "start": { + "line": 206, + "column": 2 + }, + "end": { + "line": 206, + "column": 36 + } + }, + "argument": { + "type": "CallExpression", + "start": 4321, + "end": 4347, + "loc": { + "start": { + "line": 206, + "column": 9 + }, + "end": { + "line": 206, + "column": 35 + } + }, + "callee": { + "type": "MemberExpression", + "start": 4321, + "end": 4341, + "loc": { + "start": { + "line": 206, + "column": 9 + }, + "end": { + "line": 206, + "column": 29 + } + }, + "object": { + "type": "CallExpression", + "start": 4321, + "end": 4336, + "loc": { + "start": { + "line": 206, + "column": 9 + }, + "end": { + "line": 206, + "column": 24 + } + }, + "callee": { + "type": "MemberExpression", + "start": 4321, + "end": 4329, + "loc": { + "start": { + "line": 206, + "column": 9 + }, + "end": { + "line": 206, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 4321, + "end": 4325, + "loc": { + "start": { + "line": 206, + "column": 9 + }, + "end": { + "line": 206, + "column": 13 + } + }, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 4326, + "end": 4329, + "loc": { + "start": { + "line": 206, + "column": 14 + }, + "end": { + "line": 206, + "column": 17 + }, + "identifierName": "pow" + }, + "name": "pow" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "Identifier", + "start": 4330, + "end": 4335, + "loc": { + "start": { + "line": 206, + "column": 18 + }, + "end": { + "line": 206, + "column": 23 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 4337, + "end": 4341, + "loc": { + "start": { + "line": 206, + "column": 25 + }, + "end": { + "line": 206, + "column": 29 + }, + "identifierName": "move" + }, + "name": "move" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "ThisExpression", + "start": 4342, + "end": 4346, + "loc": { + "start": { + "line": 206, + "column": 30 + }, + "end": { + "line": 206, + "column": 34 + } + } + } + ], + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 4262, + "end": 4311, + "loc": { + "start": { + "line": 205, + "column": 2 + }, + "end": { + "line": 205, + "column": 51 + } + } + } + ] + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 4354, + "end": 4463, + "loc": { + "start": { + "line": 209, + "column": 1 + }, + "end": { + "line": 212, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 4354, + "end": 4359, + "loc": { + "start": { + "line": 209, + "column": 1 + }, + "end": { + "line": 209, + "column": 6 + }, + "identifierName": "ipown" + }, + "name": "ipown" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 4360, + "end": 4366, + "loc": { + "start": { + "line": 209, + "column": 7 + }, + "end": { + "line": 209, + "column": 13 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "body": { + "type": "BlockStatement", + "start": 4368, + "end": 4463, + "loc": { + "start": { + "line": 209, + "column": 15 + }, + "end": { + "line": 212, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 4424, + "end": 4460, + "loc": { + "start": { + "line": 211, + "column": 2 + }, + "end": { + "line": 211, + "column": 38 + } + }, + "argument": { + "type": "CallExpression", + "start": 4431, + "end": 4459, + "loc": { + "start": { + "line": 211, + "column": 9 + }, + "end": { + "line": 211, + "column": 37 + } + }, + "callee": { + "type": "MemberExpression", + "start": 4431, + "end": 4453, + "loc": { + "start": { + "line": 211, + "column": 9 + }, + "end": { + "line": 211, + "column": 31 + } + }, + "object": { + "type": "CallExpression", + "start": 4431, + "end": 4448, + "loc": { + "start": { + "line": 211, + "column": 9 + }, + "end": { + "line": 211, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 4431, + "end": 4440, + "loc": { + "start": { + "line": 211, + "column": 9 + }, + "end": { + "line": 211, + "column": 18 + } + }, + "object": { + "type": "ThisExpression", + "start": 4431, + "end": 4435, + "loc": { + "start": { + "line": 211, + "column": 9 + }, + "end": { + "line": 211, + "column": 13 + } + }, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 4436, + "end": 4440, + "loc": { + "start": { + "line": 211, + "column": 14 + }, + "end": { + "line": 211, + "column": 18 + }, + "identifierName": "pown" + }, + "name": "pown" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "Identifier", + "start": 4441, + "end": 4447, + "loc": { + "start": { + "line": 211, + "column": 19 + }, + "end": { + "line": 211, + "column": 25 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 4449, + "end": 4453, + "loc": { + "start": { + "line": 211, + "column": 27 + }, + "end": { + "line": 211, + "column": 31 + }, + "identifierName": "move" + }, + "name": "move" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "ThisExpression", + "start": 4454, + "end": 4458, + "loc": { + "start": { + "line": 211, + "column": 32 + }, + "end": { + "line": 211, + "column": 36 + } + } + } + ], + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 4372, + "end": 4421, + "loc": { + "start": { + "line": 210, + "column": 2 + }, + "end": { + "line": 210, + "column": 51 + } + } + } + ] + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 4466, + "end": 4592, + "loc": { + "start": { + "line": 214, + "column": 1 + }, + "end": { + "line": 218, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 4466, + "end": 4472, + "loc": { + "start": { + "line": 214, + "column": 1 + }, + "end": { + "line": 214, + "column": 7 + }, + "identifierName": "square" + }, + "name": "square" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 4475, + "end": 4592, + "loc": { + "start": { + "line": 214, + "column": 10 + }, + "end": { + "line": 218, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 4569, + "end": 4589, + "loc": { + "start": { + "line": 217, + "column": 2 + }, + "end": { + "line": 217, + "column": 22 + } + }, + "argument": { + "type": "CallExpression", + "start": 4576, + "end": 4588, + "loc": { + "start": { + "line": 217, + "column": 9 + }, + "end": { + "line": 217, + "column": 21 + } + }, + "callee": { + "type": "MemberExpression", + "start": 4576, + "end": 4585, + "loc": { + "start": { + "line": 217, + "column": 9 + }, + "end": { + "line": 217, + "column": 18 + } + }, + "object": { + "type": "ThisExpression", + "start": 4576, + "end": 4580, + "loc": { + "start": { + "line": 217, + "column": 9 + }, + "end": { + "line": 217, + "column": 13 + } + }, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 4581, + "end": 4585, + "loc": { + "start": { + "line": 217, + "column": 14 + }, + "end": { + "line": 217, + "column": 18 + }, + "identifierName": "pown" + }, + "name": "pown" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "NumericLiteral", + "start": 4586, + "end": 4587, + "loc": { + "start": { + "line": 217, + "column": 19 + }, + "end": { + "line": 217, + "column": 20 + } + }, + "extra": { + "rawValue": 2, + "raw": "2" + }, + "value": 2 + } + ], + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 4479, + "end": 4528, + "loc": { + "start": { + "line": 215, + "column": 2 + }, + "end": { + "line": 215, + "column": 51 + } + } + }, + { + "type": "CommentLine", + "value": " TODO use this.mul(this) instead?", + "start": 4531, + "end": 4566, + "loc": { + "start": { + "line": 216, + "column": 2 + }, + "end": { + "line": 216, + "column": 37 + } + } + } + ] + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 4595, + "end": 4735, + "loc": { + "start": { + "line": 220, + "column": 1 + }, + "end": { + "line": 224, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 4595, + "end": 4602, + "loc": { + "start": { + "line": 220, + "column": 1 + }, + "end": { + "line": 220, + "column": 8 + }, + "identifierName": "isquare" + }, + "name": "isquare" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 4605, + "end": 4735, + "loc": { + "start": { + "line": 220, + "column": 11 + }, + "end": { + "line": 224, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 4700, + "end": 4732, + "loc": { + "start": { + "line": 223, + "column": 2 + }, + "end": { + "line": 223, + "column": 34 + } + }, + "argument": { + "type": "CallExpression", + "start": 4707, + "end": 4731, + "loc": { + "start": { + "line": 223, + "column": 9 + }, + "end": { + "line": 223, + "column": 33 + } + }, + "callee": { + "type": "MemberExpression", + "start": 4707, + "end": 4725, + "loc": { + "start": { + "line": 223, + "column": 9 + }, + "end": { + "line": 223, + "column": 27 + } + }, + "object": { + "type": "CallExpression", + "start": 4707, + "end": 4720, + "loc": { + "start": { + "line": 223, + "column": 9 + }, + "end": { + "line": 223, + "column": 22 + } + }, + "callee": { + "type": "MemberExpression", + "start": 4707, + "end": 4718, + "loc": { + "start": { + "line": 223, + "column": 9 + }, + "end": { + "line": 223, + "column": 20 + } + }, + "object": { + "type": "ThisExpression", + "start": 4707, + "end": 4711, + "loc": { + "start": { + "line": 223, + "column": 9 + }, + "end": { + "line": 223, + "column": 13 + } + }, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 4712, + "end": 4718, + "loc": { + "start": { + "line": 223, + "column": 14 + }, + "end": { + "line": 223, + "column": 20 + }, + "identifierName": "square" + }, + "name": "square" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [], + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 4721, + "end": 4725, + "loc": { + "start": { + "line": 223, + "column": 23 + }, + "end": { + "line": 223, + "column": 27 + }, + "identifierName": "move" + }, + "name": "move" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "ThisExpression", + "start": 4726, + "end": 4730, + "loc": { + "start": { + "line": 223, + "column": 28 + }, + "end": { + "line": 223, + "column": 32 + } + } + } + ], + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 4609, + "end": 4658, + "loc": { + "start": { + "line": 221, + "column": 2 + }, + "end": { + "line": 221, + "column": 51 + } + } + }, + { + "type": "CommentLine", + "value": " TODO use this.imul(this) instead?", + "start": 4661, + "end": 4697, + "loc": { + "start": { + "line": 222, + "column": 2 + }, + "end": { + "line": 222, + "column": 38 + } + } + } + ] + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 4738, + "end": 4785, + "loc": { + "start": { + "line": 226, + "column": 1 + }, + "end": { + "line": 228, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 4738, + "end": 4741, + "loc": { + "start": { + "line": 226, + "column": 1 + }, + "end": { + "line": 226, + "column": 4 + }, + "identifierName": "div" + }, + "name": "div" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 4742, + "end": 4747, + "loc": { + "start": { + "line": 226, + "column": 5 + }, + "end": { + "line": 226, + "column": 10 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 4749, + "end": 4785, + "loc": { + "start": { + "line": 226, + "column": 12 + }, + "end": { + "line": 228, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 4753, + "end": 4782, + "loc": { + "start": { + "line": 227, + "column": 2 + }, + "end": { + "line": 227, + "column": 31 + } + }, + "argument": { + "type": "MemberExpression", + "start": 4760, + "end": 4781, + "loc": { + "start": { + "line": 227, + "column": 9 + }, + "end": { + "line": 227, + "column": 30 + } + }, + "object": { + "type": "CallExpression", + "start": 4760, + "end": 4778, + "loc": { + "start": { + "line": 227, + "column": 9 + }, + "end": { + "line": 227, + "column": 27 + } + }, + "callee": { + "type": "MemberExpression", + "start": 4760, + "end": 4771, + "loc": { + "start": { + "line": 227, + "column": 9 + }, + "end": { + "line": 227, + "column": 20 + } + }, + "object": { + "type": "ThisExpression", + "start": 4760, + "end": 4764, + "loc": { + "start": { + "line": 227, + "column": 9 + }, + "end": { + "line": 227, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 4765, + "end": 4771, + "loc": { + "start": { + "line": 227, + "column": 14 + }, + "end": { + "line": 227, + "column": 20 + }, + "identifierName": "divmod" + }, + "name": "divmod" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 4772, + "end": 4777, + "loc": { + "start": { + "line": 227, + "column": 21 + }, + "end": { + "line": 227, + "column": 26 + }, + "identifierName": "other" + }, + "name": "other" + } + ] + }, + "property": { + "type": "NumericLiteral", + "start": 4779, + "end": 4780, + "loc": { + "start": { + "line": 227, + "column": 28 + }, + "end": { + "line": 227, + "column": 29 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + "computed": true + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 4788, + "end": 4846, + "loc": { + "start": { + "line": 230, + "column": 1 + }, + "end": { + "line": 232, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 4788, + "end": 4792, + "loc": { + "start": { + "line": 230, + "column": 1 + }, + "end": { + "line": 230, + "column": 5 + }, + "identifierName": "divn" + }, + "name": "divn" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 4793, + "end": 4799, + "loc": { + "start": { + "line": 230, + "column": 6 + }, + "end": { + "line": 230, + "column": 12 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "body": { + "type": "BlockStatement", + "start": 4801, + "end": 4846, + "loc": { + "start": { + "line": 230, + "column": 14 + }, + "end": { + "line": 232, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 4805, + "end": 4843, + "loc": { + "start": { + "line": 231, + "column": 2 + }, + "end": { + "line": 231, + "column": 40 + } + }, + "argument": { + "type": "CallExpression", + "start": 4812, + "end": 4842, + "loc": { + "start": { + "line": 231, + "column": 9 + }, + "end": { + "line": 231, + "column": 39 + } + }, + "callee": { + "type": "MemberExpression", + "start": 4812, + "end": 4820, + "loc": { + "start": { + "line": 231, + "column": 9 + }, + "end": { + "line": 231, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 4812, + "end": 4816, + "loc": { + "start": { + "line": 231, + "column": 9 + }, + "end": { + "line": 231, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 4817, + "end": 4820, + "loc": { + "start": { + "line": 231, + "column": 14 + }, + "end": { + "line": 231, + "column": 17 + }, + "identifierName": "div" + }, + "name": "div" + }, + "computed": false + }, + "arguments": [ + { + "type": "CallExpression", + "start": 4821, + "end": 4841, + "loc": { + "start": { + "line": 231, + "column": 18 + }, + "end": { + "line": 231, + "column": 38 + } + }, + "callee": { + "type": "Identifier", + "start": 4821, + "end": 4833, + "loc": { + "start": { + "line": 231, + "column": 18 + }, + "end": { + "line": 231, + "column": 30 + }, + "identifierName": "_from_number" + }, + "name": "_from_number" + }, + "arguments": [ + { + "type": "Identifier", + "start": 4834, + "end": 4840, + "loc": { + "start": { + "line": 231, + "column": 31 + }, + "end": { + "line": 231, + "column": 37 + }, + "identifierName": "number" + }, + "name": "number" + } + ] + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 4849, + "end": 4954, + "loc": { + "start": { + "line": 234, + "column": 1 + }, + "end": { + "line": 237, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 4849, + "end": 4853, + "loc": { + "start": { + "line": 234, + "column": 1 + }, + "end": { + "line": 234, + "column": 5 + }, + "identifierName": "idiv" + }, + "name": "idiv" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 4854, + "end": 4859, + "loc": { + "start": { + "line": 234, + "column": 6 + }, + "end": { + "line": 234, + "column": 11 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 4861, + "end": 4954, + "loc": { + "start": { + "line": 234, + "column": 13 + }, + "end": { + "line": 237, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 4917, + "end": 4951, + "loc": { + "start": { + "line": 236, + "column": 2 + }, + "end": { + "line": 236, + "column": 36 + } + }, + "argument": { + "type": "CallExpression", + "start": 4924, + "end": 4950, + "loc": { + "start": { + "line": 236, + "column": 9 + }, + "end": { + "line": 236, + "column": 35 + } + }, + "callee": { + "type": "MemberExpression", + "start": 4924, + "end": 4944, + "loc": { + "start": { + "line": 236, + "column": 9 + }, + "end": { + "line": 236, + "column": 29 + } + }, + "object": { + "type": "CallExpression", + "start": 4924, + "end": 4939, + "loc": { + "start": { + "line": 236, + "column": 9 + }, + "end": { + "line": 236, + "column": 24 + } + }, + "callee": { + "type": "MemberExpression", + "start": 4924, + "end": 4932, + "loc": { + "start": { + "line": 236, + "column": 9 + }, + "end": { + "line": 236, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 4924, + "end": 4928, + "loc": { + "start": { + "line": 236, + "column": 9 + }, + "end": { + "line": 236, + "column": 13 + } + }, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 4929, + "end": 4932, + "loc": { + "start": { + "line": 236, + "column": 14 + }, + "end": { + "line": 236, + "column": 17 + }, + "identifierName": "div" + }, + "name": "div" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "Identifier", + "start": 4933, + "end": 4938, + "loc": { + "start": { + "line": 236, + "column": 18 + }, + "end": { + "line": 236, + "column": 23 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 4940, + "end": 4944, + "loc": { + "start": { + "line": 236, + "column": 25 + }, + "end": { + "line": 236, + "column": 29 + }, + "identifierName": "move" + }, + "name": "move" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "ThisExpression", + "start": 4945, + "end": 4949, + "loc": { + "start": { + "line": 236, + "column": 30 + }, + "end": { + "line": 236, + "column": 34 + } + } + } + ], + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 4865, + "end": 4914, + "loc": { + "start": { + "line": 235, + "column": 2 + }, + "end": { + "line": 235, + "column": 51 + } + } + } + ] + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 4957, + "end": 5014, + "loc": { + "start": { + "line": 239, + "column": 1 + }, + "end": { + "line": 241, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 4957, + "end": 4962, + "loc": { + "start": { + "line": 239, + "column": 1 + }, + "end": { + "line": 239, + "column": 6 + }, + "identifierName": "idivn" + }, + "name": "idivn" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 4963, + "end": 4969, + "loc": { + "start": { + "line": 239, + "column": 7 + }, + "end": { + "line": 239, + "column": 13 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "body": { + "type": "BlockStatement", + "start": 4971, + "end": 5014, + "loc": { + "start": { + "line": 239, + "column": 15 + }, + "end": { + "line": 241, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 4975, + "end": 5011, + "loc": { + "start": { + "line": 240, + "column": 2 + }, + "end": { + "line": 240, + "column": 38 + } + }, + "argument": { + "type": "CallExpression", + "start": 4982, + "end": 5010, + "loc": { + "start": { + "line": 240, + "column": 9 + }, + "end": { + "line": 240, + "column": 37 + } + }, + "callee": { + "type": "MemberExpression", + "start": 4982, + "end": 5004, + "loc": { + "start": { + "line": 240, + "column": 9 + }, + "end": { + "line": 240, + "column": 31 + } + }, + "object": { + "type": "CallExpression", + "start": 4982, + "end": 4999, + "loc": { + "start": { + "line": 240, + "column": 9 + }, + "end": { + "line": 240, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 4982, + "end": 4991, + "loc": { + "start": { + "line": 240, + "column": 9 + }, + "end": { + "line": 240, + "column": 18 + } + }, + "object": { + "type": "ThisExpression", + "start": 4982, + "end": 4986, + "loc": { + "start": { + "line": 240, + "column": 9 + }, + "end": { + "line": 240, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 4987, + "end": 4991, + "loc": { + "start": { + "line": 240, + "column": 14 + }, + "end": { + "line": 240, + "column": 18 + }, + "identifierName": "divn" + }, + "name": "divn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 4992, + "end": 4998, + "loc": { + "start": { + "line": 240, + "column": 19 + }, + "end": { + "line": 240, + "column": 25 + }, + "identifierName": "number" + }, + "name": "number" + } + ] + }, + "property": { + "type": "Identifier", + "start": 5000, + "end": 5004, + "loc": { + "start": { + "line": 240, + "column": 27 + }, + "end": { + "line": 240, + "column": 31 + }, + "identifierName": "move" + }, + "name": "move" + }, + "computed": false + }, + "arguments": [ + { + "type": "ThisExpression", + "start": 5005, + "end": 5009, + "loc": { + "start": { + "line": 240, + "column": 32 + }, + "end": { + "line": 240, + "column": 36 + } + } + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 5017, + "end": 5064, + "loc": { + "start": { + "line": 243, + "column": 1 + }, + "end": { + "line": 245, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 5017, + "end": 5020, + "loc": { + "start": { + "line": 243, + "column": 1 + }, + "end": { + "line": 243, + "column": 4 + }, + "identifierName": "mod" + }, + "name": "mod" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 5021, + "end": 5026, + "loc": { + "start": { + "line": 243, + "column": 5 + }, + "end": { + "line": 243, + "column": 10 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 5028, + "end": 5064, + "loc": { + "start": { + "line": 243, + "column": 12 + }, + "end": { + "line": 245, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 5032, + "end": 5061, + "loc": { + "start": { + "line": 244, + "column": 2 + }, + "end": { + "line": 244, + "column": 31 + } + }, + "argument": { + "type": "MemberExpression", + "start": 5039, + "end": 5060, + "loc": { + "start": { + "line": 244, + "column": 9 + }, + "end": { + "line": 244, + "column": 30 + } + }, + "object": { + "type": "CallExpression", + "start": 5039, + "end": 5057, + "loc": { + "start": { + "line": 244, + "column": 9 + }, + "end": { + "line": 244, + "column": 27 + } + }, + "callee": { + "type": "MemberExpression", + "start": 5039, + "end": 5050, + "loc": { + "start": { + "line": 244, + "column": 9 + }, + "end": { + "line": 244, + "column": 20 + } + }, + "object": { + "type": "ThisExpression", + "start": 5039, + "end": 5043, + "loc": { + "start": { + "line": 244, + "column": 9 + }, + "end": { + "line": 244, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 5044, + "end": 5050, + "loc": { + "start": { + "line": 244, + "column": 14 + }, + "end": { + "line": 244, + "column": 20 + }, + "identifierName": "divmod" + }, + "name": "divmod" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 5051, + "end": 5056, + "loc": { + "start": { + "line": 244, + "column": 21 + }, + "end": { + "line": 244, + "column": 26 + }, + "identifierName": "other" + }, + "name": "other" + } + ] + }, + "property": { + "type": "NumericLiteral", + "start": 5058, + "end": 5059, + "loc": { + "start": { + "line": 244, + "column": 28 + }, + "end": { + "line": 244, + "column": 29 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + "computed": true + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 5067, + "end": 5125, + "loc": { + "start": { + "line": 247, + "column": 1 + }, + "end": { + "line": 249, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 5067, + "end": 5071, + "loc": { + "start": { + "line": 247, + "column": 1 + }, + "end": { + "line": 247, + "column": 5 + }, + "identifierName": "modn" + }, + "name": "modn" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 5072, + "end": 5078, + "loc": { + "start": { + "line": 247, + "column": 6 + }, + "end": { + "line": 247, + "column": 12 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "body": { + "type": "BlockStatement", + "start": 5080, + "end": 5125, + "loc": { + "start": { + "line": 247, + "column": 14 + }, + "end": { + "line": 249, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 5084, + "end": 5122, + "loc": { + "start": { + "line": 248, + "column": 2 + }, + "end": { + "line": 248, + "column": 40 + } + }, + "argument": { + "type": "CallExpression", + "start": 5091, + "end": 5121, + "loc": { + "start": { + "line": 248, + "column": 9 + }, + "end": { + "line": 248, + "column": 39 + } + }, + "callee": { + "type": "MemberExpression", + "start": 5091, + "end": 5099, + "loc": { + "start": { + "line": 248, + "column": 9 + }, + "end": { + "line": 248, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 5091, + "end": 5095, + "loc": { + "start": { + "line": 248, + "column": 9 + }, + "end": { + "line": 248, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 5096, + "end": 5099, + "loc": { + "start": { + "line": 248, + "column": 14 + }, + "end": { + "line": 248, + "column": 17 + }, + "identifierName": "mod" + }, + "name": "mod" + }, + "computed": false + }, + "arguments": [ + { + "type": "CallExpression", + "start": 5100, + "end": 5120, + "loc": { + "start": { + "line": 248, + "column": 18 + }, + "end": { + "line": 248, + "column": 38 + } + }, + "callee": { + "type": "Identifier", + "start": 5100, + "end": 5112, + "loc": { + "start": { + "line": 248, + "column": 18 + }, + "end": { + "line": 248, + "column": 30 + }, + "identifierName": "_from_number" + }, + "name": "_from_number" + }, + "arguments": [ + { + "type": "Identifier", + "start": 5113, + "end": 5119, + "loc": { + "start": { + "line": 248, + "column": 31 + }, + "end": { + "line": 248, + "column": 37 + }, + "identifierName": "number" + }, + "name": "number" + } + ] + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 5128, + "end": 5233, + "loc": { + "start": { + "line": 251, + "column": 1 + }, + "end": { + "line": 254, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 5128, + "end": 5132, + "loc": { + "start": { + "line": 251, + "column": 1 + }, + "end": { + "line": 251, + "column": 5 + }, + "identifierName": "imod" + }, + "name": "imod" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 5133, + "end": 5138, + "loc": { + "start": { + "line": 251, + "column": 6 + }, + "end": { + "line": 251, + "column": 11 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 5140, + "end": 5233, + "loc": { + "start": { + "line": 251, + "column": 13 + }, + "end": { + "line": 254, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 5196, + "end": 5230, + "loc": { + "start": { + "line": 253, + "column": 2 + }, + "end": { + "line": 253, + "column": 36 + } + }, + "argument": { + "type": "CallExpression", + "start": 5203, + "end": 5229, + "loc": { + "start": { + "line": 253, + "column": 9 + }, + "end": { + "line": 253, + "column": 35 + } + }, + "callee": { + "type": "MemberExpression", + "start": 5203, + "end": 5223, + "loc": { + "start": { + "line": 253, + "column": 9 + }, + "end": { + "line": 253, + "column": 29 + } + }, + "object": { + "type": "CallExpression", + "start": 5203, + "end": 5218, + "loc": { + "start": { + "line": 253, + "column": 9 + }, + "end": { + "line": 253, + "column": 24 + } + }, + "callee": { + "type": "MemberExpression", + "start": 5203, + "end": 5211, + "loc": { + "start": { + "line": 253, + "column": 9 + }, + "end": { + "line": 253, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 5203, + "end": 5207, + "loc": { + "start": { + "line": 253, + "column": 9 + }, + "end": { + "line": 253, + "column": 13 + } + }, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 5208, + "end": 5211, + "loc": { + "start": { + "line": 253, + "column": 14 + }, + "end": { + "line": 253, + "column": 17 + }, + "identifierName": "mod" + }, + "name": "mod" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "Identifier", + "start": 5212, + "end": 5217, + "loc": { + "start": { + "line": 253, + "column": 18 + }, + "end": { + "line": 253, + "column": 23 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 5219, + "end": 5223, + "loc": { + "start": { + "line": 253, + "column": 25 + }, + "end": { + "line": 253, + "column": 29 + }, + "identifierName": "move" + }, + "name": "move" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "ThisExpression", + "start": 5224, + "end": 5228, + "loc": { + "start": { + "line": 253, + "column": 30 + }, + "end": { + "line": 253, + "column": 34 + } + } + } + ], + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 5144, + "end": 5193, + "loc": { + "start": { + "line": 252, + "column": 2 + }, + "end": { + "line": 252, + "column": 51 + } + } + } + ] + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 5236, + "end": 5293, + "loc": { + "start": { + "line": 256, + "column": 1 + }, + "end": { + "line": 258, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 5236, + "end": 5241, + "loc": { + "start": { + "line": 256, + "column": 1 + }, + "end": { + "line": 256, + "column": 6 + }, + "identifierName": "imodn" + }, + "name": "imodn" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 5242, + "end": 5248, + "loc": { + "start": { + "line": 256, + "column": 7 + }, + "end": { + "line": 256, + "column": 13 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "body": { + "type": "BlockStatement", + "start": 5250, + "end": 5293, + "loc": { + "start": { + "line": 256, + "column": 15 + }, + "end": { + "line": 258, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 5254, + "end": 5290, + "loc": { + "start": { + "line": 257, + "column": 2 + }, + "end": { + "line": 257, + "column": 38 + } + }, + "argument": { + "type": "CallExpression", + "start": 5261, + "end": 5289, + "loc": { + "start": { + "line": 257, + "column": 9 + }, + "end": { + "line": 257, + "column": 37 + } + }, + "callee": { + "type": "MemberExpression", + "start": 5261, + "end": 5283, + "loc": { + "start": { + "line": 257, + "column": 9 + }, + "end": { + "line": 257, + "column": 31 + } + }, + "object": { + "type": "CallExpression", + "start": 5261, + "end": 5278, + "loc": { + "start": { + "line": 257, + "column": 9 + }, + "end": { + "line": 257, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 5261, + "end": 5270, + "loc": { + "start": { + "line": 257, + "column": 9 + }, + "end": { + "line": 257, + "column": 18 + } + }, + "object": { + "type": "ThisExpression", + "start": 5261, + "end": 5265, + "loc": { + "start": { + "line": 257, + "column": 9 + }, + "end": { + "line": 257, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 5266, + "end": 5270, + "loc": { + "start": { + "line": 257, + "column": 14 + }, + "end": { + "line": 257, + "column": 18 + }, + "identifierName": "modn" + }, + "name": "modn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 5271, + "end": 5277, + "loc": { + "start": { + "line": 257, + "column": 19 + }, + "end": { + "line": 257, + "column": 25 + }, + "identifierName": "number" + }, + "name": "number" + } + ] + }, + "property": { + "type": "Identifier", + "start": 5279, + "end": 5283, + "loc": { + "start": { + "line": 257, + "column": 27 + }, + "end": { + "line": 257, + "column": 31 + }, + "identifierName": "move" + }, + "name": "move" + }, + "computed": false + }, + "arguments": [ + { + "type": "ThisExpression", + "start": 5284, + "end": 5288, + "loc": { + "start": { + "line": 257, + "column": 32 + }, + "end": { + "line": 257, + "column": 36 + } + } + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 5296, + "end": 5474, + "loc": { + "start": { + "line": 260, + "column": 1 + }, + "end": { + "line": 265, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 5296, + "end": 5304, + "loc": { + "start": { + "line": 260, + "column": 1 + }, + "end": { + "line": 260, + "column": 9 + }, + "identifierName": "divround" + }, + "name": "divround" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 5305, + "end": 5310, + "loc": { + "start": { + "line": 260, + "column": 10 + }, + "end": { + "line": 260, + "column": 15 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 5312, + "end": 5474, + "loc": { + "start": { + "line": 260, + "column": 17 + }, + "end": { + "line": 265, + "column": 2 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 5316, + "end": 5350, + "loc": { + "start": { + "line": 261, + "column": 2 + }, + "end": { + "line": 261, + "column": 36 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 5322, + "end": 5349, + "loc": { + "start": { + "line": 261, + "column": 8 + }, + "end": { + "line": 261, + "column": 35 + } + }, + "id": { + "type": "ArrayPattern", + "start": 5322, + "end": 5328, + "loc": { + "start": { + "line": 261, + "column": 8 + }, + "end": { + "line": 261, + "column": 14 + } + }, + "elements": [ + { + "type": "Identifier", + "start": 5323, + "end": 5324, + "loc": { + "start": { + "line": 261, + "column": 9 + }, + "end": { + "line": 261, + "column": 10 + }, + "identifierName": "q" + }, + "name": "q" + }, + { + "type": "Identifier", + "start": 5326, + "end": 5327, + "loc": { + "start": { + "line": 261, + "column": 12 + }, + "end": { + "line": 261, + "column": 13 + }, + "identifierName": "r" + }, + "name": "r" + } + ] + }, + "init": { + "type": "CallExpression", + "start": 5331, + "end": 5349, + "loc": { + "start": { + "line": 261, + "column": 17 + }, + "end": { + "line": 261, + "column": 35 + } + }, + "callee": { + "type": "MemberExpression", + "start": 5331, + "end": 5342, + "loc": { + "start": { + "line": 261, + "column": 17 + }, + "end": { + "line": 261, + "column": 28 + } + }, + "object": { + "type": "ThisExpression", + "start": 5331, + "end": 5335, + "loc": { + "start": { + "line": 261, + "column": 17 + }, + "end": { + "line": 261, + "column": 21 + } + } + }, + "property": { + "type": "Identifier", + "start": 5336, + "end": 5342, + "loc": { + "start": { + "line": 261, + "column": 22 + }, + "end": { + "line": 261, + "column": 28 + }, + "identifierName": "divmod" + }, + "name": "divmod" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 5343, + "end": 5348, + "loc": { + "start": { + "line": 261, + "column": 29 + }, + "end": { + "line": 261, + "column": 34 + }, + "identifierName": "other" + }, + "name": "other" + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "IfStatement", + "start": 5353, + "end": 5459, + "loc": { + "start": { + "line": 262, + "column": 2 + }, + "end": { + "line": 263, + "column": 52 + } + }, + "test": { + "type": "CallExpression", + "start": 5357, + "end": 5405, + "loc": { + "start": { + "line": 262, + "column": 6 + }, + "end": { + "line": 262, + "column": 54 + } + }, + "callee": { + "type": "MemberExpression", + "start": 5357, + "end": 5361, + "loc": { + "start": { + "line": 262, + "column": 6 + }, + "end": { + "line": 262, + "column": 10 + } + }, + "object": { + "type": "Identifier", + "start": 5357, + "end": 5358, + "loc": { + "start": { + "line": 262, + "column": 6 + }, + "end": { + "line": 262, + "column": 7 + }, + "identifierName": "r" + }, + "name": "r" + }, + "property": { + "type": "Identifier", + "start": 5359, + "end": 5361, + "loc": { + "start": { + "line": 262, + "column": 8 + }, + "end": { + "line": 262, + "column": 10 + }, + "identifierName": "ge" + }, + "name": "ge" + }, + "computed": false + }, + "arguments": [ + { + "type": "CallExpression", + "start": 5362, + "end": 5404, + "loc": { + "start": { + "line": 262, + "column": 11 + }, + "end": { + "line": 262, + "column": 53 + } + }, + "callee": { + "type": "MemberExpression", + "start": 5362, + "end": 5380, + "loc": { + "start": { + "line": 262, + "column": 11 + }, + "end": { + "line": 262, + "column": 29 + } + }, + "object": { + "type": "CallExpression", + "start": 5362, + "end": 5375, + "loc": { + "start": { + "line": 262, + "column": 11 + }, + "end": { + "line": 262, + "column": 24 + } + }, + "callee": { + "type": "MemberExpression", + "start": 5362, + "end": 5372, + "loc": { + "start": { + "line": 262, + "column": 11 + }, + "end": { + "line": 262, + "column": 21 + } + }, + "object": { + "type": "Identifier", + "start": 5362, + "end": 5367, + "loc": { + "start": { + "line": 262, + "column": 11 + }, + "end": { + "line": 262, + "column": 16 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 5368, + "end": 5372, + "loc": { + "start": { + "line": 262, + "column": 17 + }, + "end": { + "line": 262, + "column": 21 + }, + "identifierName": "divn" + }, + "name": "divn" + }, + "computed": false + }, + "arguments": [ + { + "type": "NumericLiteral", + "start": 5373, + "end": 5374, + "loc": { + "start": { + "line": 262, + "column": 22 + }, + "end": { + "line": 262, + "column": 23 + } + }, + "extra": { + "rawValue": 2, + "raw": "2" + }, + "value": 2 + } + ] + }, + "property": { + "type": "Identifier", + "start": 5376, + "end": 5380, + "loc": { + "start": { + "line": 262, + "column": 25 + }, + "end": { + "line": 262, + "column": 29 + }, + "identifierName": "addn" + }, + "name": "addn" + }, + "computed": false + }, + "arguments": [ + { + "type": "ConditionalExpression", + "start": 5381, + "end": 5403, + "loc": { + "start": { + "line": 262, + "column": 30 + }, + "end": { + "line": 262, + "column": 52 + } + }, + "test": { + "type": "CallExpression", + "start": 5381, + "end": 5395, + "loc": { + "start": { + "line": 262, + "column": 30 + }, + "end": { + "line": 262, + "column": 44 + } + }, + "callee": { + "type": "MemberExpression", + "start": 5381, + "end": 5393, + "loc": { + "start": { + "line": 262, + "column": 30 + }, + "end": { + "line": 262, + "column": 42 + } + }, + "object": { + "type": "Identifier", + "start": 5381, + "end": 5386, + "loc": { + "start": { + "line": 262, + "column": 30 + }, + "end": { + "line": 262, + "column": 35 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 5387, + "end": 5393, + "loc": { + "start": { + "line": 262, + "column": 36 + }, + "end": { + "line": 262, + "column": 42 + }, + "identifierName": "iseven" + }, + "name": "iseven" + }, + "computed": false + }, + "arguments": [] + }, + "consequent": { + "type": "NumericLiteral", + "start": 5398, + "end": 5399, + "loc": { + "start": { + "line": 262, + "column": 47 + }, + "end": { + "line": 262, + "column": 48 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + "alternate": { + "type": "NumericLiteral", + "start": 5402, + "end": 5403, + "loc": { + "start": { + "line": 262, + "column": 51 + }, + "end": { + "line": 262, + "column": 52 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + } + } + ] + } + ] + }, + "consequent": { + "type": "ExpressionStatement", + "start": 5410, + "end": 5459, + "loc": { + "start": { + "line": 263, + "column": 3 + }, + "end": { + "line": 263, + "column": 52 + } + }, + "expression": { + "type": "CallExpression", + "start": 5410, + "end": 5458, + "loc": { + "start": { + "line": 263, + "column": 3 + }, + "end": { + "line": 263, + "column": 51 + } + }, + "callee": { + "type": "Identifier", + "start": 5410, + "end": 5419, + "loc": { + "start": { + "line": 263, + "column": 3 + }, + "end": { + "line": 263, + "column": 12 + }, + "identifierName": "increment" + }, + "name": "increment" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 5420, + "end": 5427, + "loc": { + "start": { + "line": 263, + "column": 13 + }, + "end": { + "line": 263, + "column": 20 + } + }, + "object": { + "type": "Identifier", + "start": 5420, + "end": 5421, + "loc": { + "start": { + "line": 263, + "column": 13 + }, + "end": { + "line": 263, + "column": 14 + }, + "identifierName": "q" + }, + "name": "q" + }, + "property": { + "type": "Identifier", + "start": 5422, + "end": 5427, + "loc": { + "start": { + "line": 263, + "column": 15 + }, + "end": { + "line": 263, + "column": 20 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + { + "type": "MemberExpression", + "start": 5429, + "end": 5437, + "loc": { + "start": { + "line": 263, + "column": 22 + }, + "end": { + "line": 263, + "column": 30 + } + }, + "object": { + "type": "Identifier", + "start": 5429, + "end": 5430, + "loc": { + "start": { + "line": 263, + "column": 22 + }, + "end": { + "line": 263, + "column": 23 + }, + "identifierName": "q" + }, + "name": "q" + }, + "property": { + "type": "Identifier", + "start": 5431, + "end": 5437, + "loc": { + "start": { + "line": 263, + "column": 24 + }, + "end": { + "line": 263, + "column": 30 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + }, + { + "type": "NumericLiteral", + "start": 5439, + "end": 5440, + "loc": { + "start": { + "line": 263, + "column": 32 + }, + "end": { + "line": 263, + "column": 33 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 5442, + "end": 5457, + "loc": { + "start": { + "line": 263, + "column": 35 + }, + "end": { + "line": 263, + "column": 50 + } + }, + "object": { + "type": "MemberExpression", + "start": 5442, + "end": 5450, + "loc": { + "start": { + "line": 263, + "column": 35 + }, + "end": { + "line": 263, + "column": 43 + } + }, + "object": { + "type": "Identifier", + "start": 5442, + "end": 5443, + "loc": { + "start": { + "line": 263, + "column": 35 + }, + "end": { + "line": 263, + "column": 36 + }, + "identifierName": "q" + }, + "name": "q" + }, + "property": { + "type": "Identifier", + "start": 5444, + "end": 5450, + "loc": { + "start": { + "line": 263, + "column": 37 + }, + "end": { + "line": 263, + "column": 43 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5451, + "end": 5457, + "loc": { + "start": { + "line": 263, + "column": 44 + }, + "end": { + "line": 263, + "column": 50 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ] + } + }, + "alternate": null + }, + { + "type": "ReturnStatement", + "start": 5462, + "end": 5471, + "loc": { + "start": { + "line": 264, + "column": 2 + }, + "end": { + "line": 264, + "column": 11 + } + }, + "argument": { + "type": "Identifier", + "start": 5469, + "end": 5470, + "loc": { + "start": { + "line": 264, + "column": 9 + }, + "end": { + "line": 264, + "column": 10 + }, + "identifierName": "q" + }, + "name": "q" + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 5477, + "end": 6779, + "loc": { + "start": { + "line": 267, + "column": 1 + }, + "end": { + "line": 313, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 5477, + "end": 5483, + "loc": { + "start": { + "line": 267, + "column": 1 + }, + "end": { + "line": 267, + "column": 7 + }, + "identifierName": "divmod" + }, + "name": "divmod" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 5484, + "end": 5489, + "loc": { + "start": { + "line": 267, + "column": 8 + }, + "end": { + "line": 267, + "column": 13 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 5491, + "end": 6779, + "loc": { + "start": { + "line": 267, + "column": 15 + }, + "end": { + "line": 313, + "column": 2 + } + }, + "body": [ + { + "type": "IfStatement", + "start": 5495, + "end": 5571, + "loc": { + "start": { + "line": 268, + "column": 2 + }, + "end": { + "line": 268, + "column": 78 + } + }, + "test": { + "type": "CallExpression", + "start": 5499, + "end": 5513, + "loc": { + "start": { + "line": 268, + "column": 6 + }, + "end": { + "line": 268, + "column": 20 + } + }, + "callee": { + "type": "MemberExpression", + "start": 5499, + "end": 5511, + "loc": { + "start": { + "line": 268, + "column": 6 + }, + "end": { + "line": 268, + "column": 18 + } + }, + "object": { + "type": "Identifier", + "start": 5499, + "end": 5504, + "loc": { + "start": { + "line": 268, + "column": 6 + }, + "end": { + "line": 268, + "column": 11 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 5505, + "end": 5511, + "loc": { + "start": { + "line": 268, + "column": 12 + }, + "end": { + "line": 268, + "column": 18 + }, + "identifierName": "iszero" + }, + "name": "iszero" + }, + "computed": false + }, + "arguments": [] + }, + "consequent": { + "type": "ThrowStatement", + "start": 5515, + "end": 5571, + "loc": { + "start": { + "line": 268, + "column": 22 + }, + "end": { + "line": 268, + "column": 78 + } + }, + "argument": { + "type": "NewExpression", + "start": 5521, + "end": 5570, + "loc": { + "start": { + "line": 268, + "column": 28 + }, + "end": { + "line": 268, + "column": 77 + } + }, + "callee": { + "type": "Identifier", + "start": 5525, + "end": 5542, + "loc": { + "start": { + "line": 268, + "column": 32 + }, + "end": { + "line": 268, + "column": 49 + }, + "identifierName": "ZeroDivisionError" + }, + "name": "ZeroDivisionError" + }, + "arguments": [ + { + "type": "StringLiteral", + "start": 5543, + "end": 5569, + "loc": { + "start": { + "line": 268, + "column": 50 + }, + "end": { + "line": 268, + "column": 76 + } + }, + "extra": { + "rawValue": "Integer division by zero", + "raw": "'Integer division by zero'" + }, + "value": "Integer division by zero" + } + ] + }, + "trailingComments": null + }, + "alternate": null, + "trailingComments": [ + { + "type": "CommentLine", + "value": " Optimize", + "start": 5572, + "end": 5583, + "loc": { + "start": { + "line": 268, + "column": 79 + }, + "end": { + "line": 268, + "column": 90 + } + } + } + ] + }, + { + "type": "VariableDeclaration", + "start": 5587, + "end": 5655, + "loc": { + "start": { + "line": 270, + "column": 2 + }, + "end": { + "line": 270, + "column": 70 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 5593, + "end": 5654, + "loc": { + "start": { + "line": 270, + "column": 8 + }, + "end": { + "line": 270, + "column": 69 + } + }, + "id": { + "type": "Identifier", + "start": 5593, + "end": 5613, + "loc": { + "start": { + "line": 270, + "column": 8 + }, + "end": { + "line": 270, + "column": 28 + }, + "identifierName": "quotient_is_negative" + }, + "name": "quotient_is_negative", + "leadingComments": null + }, + "init": { + "type": "BinaryExpression", + "start": 5616, + "end": 5654, + "loc": { + "start": { + "line": 270, + "column": 31 + }, + "end": { + "line": 270, + "column": 69 + } + }, + "left": { + "type": "MemberExpression", + "start": 5616, + "end": 5633, + "loc": { + "start": { + "line": 270, + "column": 31 + }, + "end": { + "line": 270, + "column": 48 + } + }, + "object": { + "type": "ThisExpression", + "start": 5616, + "end": 5620, + "loc": { + "start": { + "line": 270, + "column": 31 + }, + "end": { + "line": 270, + "column": 35 + } + } + }, + "property": { + "type": "Identifier", + "start": 5621, + "end": 5633, + "loc": { + "start": { + "line": 270, + "column": 36 + }, + "end": { + "line": 270, + "column": 48 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "operator": "^", + "right": { + "type": "MemberExpression", + "start": 5636, + "end": 5654, + "loc": { + "start": { + "line": 270, + "column": 51 + }, + "end": { + "line": 270, + "column": 69 + } + }, + "object": { + "type": "Identifier", + "start": 5636, + "end": 5641, + "loc": { + "start": { + "line": 270, + "column": 51 + }, + "end": { + "line": 270, + "column": 56 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 5642, + "end": 5654, + "loc": { + "start": { + "line": 270, + "column": 57 + }, + "end": { + "line": 270, + "column": 69 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + } + }, + "leadingComments": null + } + ], + "kind": "const", + "leadingComments": [ + { + "type": "CommentLine", + "value": " Optimize", + "start": 5572, + "end": 5583, + "loc": { + "start": { + "line": 268, + "column": 79 + }, + "end": { + "line": 268, + "column": 90 + } + } + } + ] + }, + { + "type": "VariableDeclaration", + "start": 5658, + "end": 5679, + "loc": { + "start": { + "line": 271, + "column": 2 + }, + "end": { + "line": 271, + "column": 23 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 5664, + "end": 5678, + "loc": { + "start": { + "line": 271, + "column": 8 + }, + "end": { + "line": 271, + "column": 22 + } + }, + "id": { + "type": "Identifier", + "start": 5664, + "end": 5665, + "loc": { + "start": { + "line": 271, + "column": 8 + }, + "end": { + "line": 271, + "column": 9 + }, + "identifierName": "r" + }, + "name": "r" + }, + "init": { + "type": "MemberExpression", + "start": 5668, + "end": 5678, + "loc": { + "start": { + "line": 271, + "column": 12 + }, + "end": { + "line": 271, + "column": 22 + } + }, + "object": { + "type": "ThisExpression", + "start": 5668, + "end": 5672, + "loc": { + "start": { + "line": 271, + "column": 12 + }, + "end": { + "line": 271, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 5673, + "end": 5678, + "loc": { + "start": { + "line": 271, + "column": 17 + }, + "end": { + "line": 271, + "column": 22 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + } + } + ], + "kind": "const", + "trailingComments": [ + { + "type": "CommentLine", + "value": " The underlying algorithm does not allow leading 0's so we trim them.", + "start": 5683, + "end": 5754, + "loc": { + "start": { + "line": 273, + "column": 2 + }, + "end": { + "line": 273, + "column": 73 + } + } + } + ] + }, + { + "type": "VariableDeclaration", + "start": 5757, + "end": 5787, + "loc": { + "start": { + "line": 274, + "column": 2 + }, + "end": { + "line": 274, + "column": 32 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 5763, + "end": 5786, + "loc": { + "start": { + "line": 274, + "column": 8 + }, + "end": { + "line": 274, + "column": 31 + } + }, + "id": { + "type": "Identifier", + "start": 5763, + "end": 5765, + "loc": { + "start": { + "line": 274, + "column": 8 + }, + "end": { + "line": 274, + "column": 10 + }, + "identifierName": "lj" + }, + "name": "lj", + "leadingComments": null + }, + "init": { + "type": "MemberExpression", + "start": 5768, + "end": 5786, + "loc": { + "start": { + "line": 274, + "column": 13 + }, + "end": { + "line": 274, + "column": 31 + } + }, + "object": { + "type": "MemberExpression", + "start": 5768, + "end": 5779, + "loc": { + "start": { + "line": 274, + "column": 13 + }, + "end": { + "line": 274, + "column": 24 + } + }, + "object": { + "type": "ThisExpression", + "start": 5768, + "end": 5772, + "loc": { + "start": { + "line": 274, + "column": 13 + }, + "end": { + "line": 274, + "column": 17 + } + } + }, + "property": { + "type": "Identifier", + "start": 5773, + "end": 5779, + "loc": { + "start": { + "line": 274, + "column": 18 + }, + "end": { + "line": 274, + "column": 24 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5780, + "end": 5786, + "loc": { + "start": { + "line": 274, + "column": 25 + }, + "end": { + "line": 274, + "column": 31 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + "leadingComments": null + } + ], + "kind": "const", + "leadingComments": [ + { + "type": "CommentLine", + "value": " The underlying algorithm does not allow leading 0's so we trim them.", + "start": 5683, + "end": 5754, + "loc": { + "start": { + "line": 273, + "column": 2 + }, + "end": { + "line": 273, + "column": 73 + } + } + } + ] + }, + { + "type": "VariableDeclaration", + "start": 5790, + "end": 5836, + "loc": { + "start": { + "line": 275, + "column": 2 + }, + "end": { + "line": 275, + "column": 48 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 5796, + "end": 5835, + "loc": { + "start": { + "line": 275, + "column": 8 + }, + "end": { + "line": 275, + "column": 47 + } + }, + "id": { + "type": "Identifier", + "start": 5796, + "end": 5798, + "loc": { + "start": { + "line": 275, + "column": 8 + }, + "end": { + "line": 275, + "column": 10 + }, + "identifierName": "li" + }, + "name": "li" + }, + "init": { + "type": "CallExpression", + "start": 5801, + "end": 5835, + "loc": { + "start": { + "line": 275, + "column": 13 + }, + "end": { + "line": 275, + "column": 47 + } + }, + "callee": { + "type": "Identifier", + "start": 5801, + "end": 5815, + "loc": { + "start": { + "line": 275, + "column": 13 + }, + "end": { + "line": 275, + "column": 27 + }, + "identifierName": "_trim_positive" + }, + "name": "_trim_positive" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 5816, + "end": 5827, + "loc": { + "start": { + "line": 275, + "column": 28 + }, + "end": { + "line": 275, + "column": 39 + } + }, + "object": { + "type": "ThisExpression", + "start": 5816, + "end": 5820, + "loc": { + "start": { + "line": 275, + "column": 28 + }, + "end": { + "line": 275, + "column": 32 + } + } + }, + "property": { + "type": "Identifier", + "start": 5821, + "end": 5827, + "loc": { + "start": { + "line": 275, + "column": 33 + }, + "end": { + "line": 275, + "column": 39 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + }, + { + "type": "NumericLiteral", + "start": 5829, + "end": 5830, + "loc": { + "start": { + "line": 275, + "column": 41 + }, + "end": { + "line": 275, + "column": 42 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "Identifier", + "start": 5832, + "end": 5834, + "loc": { + "start": { + "line": 275, + "column": 44 + }, + "end": { + "line": 275, + "column": 46 + }, + "identifierName": "lj" + }, + "name": "lj" + } + ] + } + } + ], + "kind": "const", + "trailingComments": [ + { + "type": "CommentLine", + "value": " Dividend is 0", + "start": 5840, + "end": 5856, + "loc": { + "start": { + "line": 277, + "column": 2 + }, + "end": { + "line": 277, + "column": 18 + } + } + } + ] + }, + { + "type": "IfStatement", + "start": 5859, + "end": 5950, + "loc": { + "start": { + "line": 278, + "column": 2 + }, + "end": { + "line": 279, + "column": 77 + } + }, + "test": { + "type": "BinaryExpression", + "start": 5863, + "end": 5871, + "loc": { + "start": { + "line": 278, + "column": 6 + }, + "end": { + "line": 278, + "column": 14 + } + }, + "left": { + "type": "Identifier", + "start": 5863, + "end": 5865, + "loc": { + "start": { + "line": 278, + "column": 6 + }, + "end": { + "line": 278, + "column": 8 + }, + "identifierName": "li" + }, + "name": "li", + "leadingComments": null + }, + "operator": ">=", + "right": { + "type": "Identifier", + "start": 5869, + "end": 5871, + "loc": { + "start": { + "line": 278, + "column": 12 + }, + "end": { + "line": 278, + "column": 14 + }, + "identifierName": "lj" + }, + "name": "lj" + }, + "leadingComments": null + }, + "consequent": { + "type": "ReturnStatement", + "start": 5876, + "end": 5950, + "loc": { + "start": { + "line": 279, + "column": 3 + }, + "end": { + "line": 279, + "column": 77 + } + }, + "argument": { + "type": "ArrayExpression", + "start": 5883, + "end": 5949, + "loc": { + "start": { + "line": 279, + "column": 10 + }, + "end": { + "line": 279, + "column": 76 + } + }, + "elements": [ + { + "type": "NewExpression", + "start": 5884, + "end": 5915, + "loc": { + "start": { + "line": 279, + "column": 11 + }, + "end": { + "line": 279, + "column": 42 + } + }, + "callee": { + "type": "Identifier", + "start": 5888, + "end": 5895, + "loc": { + "start": { + "line": 279, + "column": 15 + }, + "end": { + "line": 279, + "column": 22 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 5896, + "end": 5906, + "loc": { + "start": { + "line": 279, + "column": 23 + }, + "end": { + "line": 279, + "column": 33 + } + }, + "object": { + "type": "ThisExpression", + "start": 5896, + "end": 5900, + "loc": { + "start": { + "line": 279, + "column": 23 + }, + "end": { + "line": 279, + "column": 27 + } + } + }, + "property": { + "type": "Identifier", + "start": 5901, + "end": 5906, + "loc": { + "start": { + "line": 279, + "column": 28 + }, + "end": { + "line": 279, + "column": 33 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + { + "type": "NumericLiteral", + "start": 5908, + "end": 5909, + "loc": { + "start": { + "line": 279, + "column": 35 + }, + "end": { + "line": 279, + "column": 36 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "ArrayExpression", + "start": 5911, + "end": 5914, + "loc": { + "start": { + "line": 279, + "column": 38 + }, + "end": { + "line": 279, + "column": 41 + } + }, + "elements": [ + { + "type": "NumericLiteral", + "start": 5912, + "end": 5913, + "loc": { + "start": { + "line": 279, + "column": 39 + }, + "end": { + "line": 279, + "column": 40 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + ] + } + ] + }, + { + "type": "NewExpression", + "start": 5917, + "end": 5948, + "loc": { + "start": { + "line": 279, + "column": 44 + }, + "end": { + "line": 279, + "column": 75 + } + }, + "callee": { + "type": "Identifier", + "start": 5921, + "end": 5928, + "loc": { + "start": { + "line": 279, + "column": 48 + }, + "end": { + "line": 279, + "column": 55 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 5929, + "end": 5939, + "loc": { + "start": { + "line": 279, + "column": 56 + }, + "end": { + "line": 279, + "column": 66 + } + }, + "object": { + "type": "ThisExpression", + "start": 5929, + "end": 5933, + "loc": { + "start": { + "line": 279, + "column": 56 + }, + "end": { + "line": 279, + "column": 60 + } + } + }, + "property": { + "type": "Identifier", + "start": 5934, + "end": 5939, + "loc": { + "start": { + "line": 279, + "column": 61 + }, + "end": { + "line": 279, + "column": 66 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + { + "type": "NumericLiteral", + "start": 5941, + "end": 5942, + "loc": { + "start": { + "line": 279, + "column": 68 + }, + "end": { + "line": 279, + "column": 69 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "ArrayExpression", + "start": 5944, + "end": 5947, + "loc": { + "start": { + "line": 279, + "column": 71 + }, + "end": { + "line": 279, + "column": 74 + } + }, + "elements": [ + { + "type": "NumericLiteral", + "start": 5945, + "end": 5946, + "loc": { + "start": { + "line": 279, + "column": 72 + }, + "end": { + "line": 279, + "column": 73 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + ] + } + ] + } + ] + }, + "trailingComments": null + }, + "alternate": null, + "leadingComments": [ + { + "type": "CommentLine", + "value": " Dividend is 0", + "start": 5840, + "end": 5856, + "loc": { + "start": { + "line": 277, + "column": 2 + }, + "end": { + "line": 277, + "column": 18 + } + } + } + ], + "trailingComments": [ + { + "type": "CommentLine", + "value": " Dividend (& Remainder)", + "start": 5954, + "end": 5979, + "loc": { + "start": { + "line": 281, + "column": 2 + }, + "end": { + "line": 281, + "column": 27 + } + } + } + ] + }, + { + "type": "VariableDeclaration", + "start": 5982, + "end": 6008, + "loc": { + "start": { + "line": 282, + "column": 2 + }, + "end": { + "line": 282, + "column": 28 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 5988, + "end": 6007, + "loc": { + "start": { + "line": 282, + "column": 8 + }, + "end": { + "line": 282, + "column": 27 + } + }, + "id": { + "type": "Identifier", + "start": 5988, + "end": 5989, + "loc": { + "start": { + "line": 282, + "column": 8 + }, + "end": { + "line": 282, + "column": 9 + }, + "identifierName": "D" + }, + "name": "D", + "leadingComments": null + }, + "init": { + "type": "CallExpression", + "start": 5992, + "end": 6007, + "loc": { + "start": { + "line": 282, + "column": 12 + }, + "end": { + "line": 282, + "column": 27 + } + }, + "callee": { + "type": "Identifier", + "start": 5992, + "end": 5998, + "loc": { + "start": { + "line": 282, + "column": 12 + }, + "end": { + "line": 282, + "column": 18 + }, + "identifierName": "_alloc" + }, + "name": "_alloc" + }, + "arguments": [ + { + "type": "BinaryExpression", + "start": 5999, + "end": 6006, + "loc": { + "start": { + "line": 282, + "column": 19 + }, + "end": { + "line": 282, + "column": 26 + } + }, + "left": { + "type": "Identifier", + "start": 5999, + "end": 6001, + "loc": { + "start": { + "line": 282, + "column": 19 + }, + "end": { + "line": 282, + "column": 21 + }, + "identifierName": "lj" + }, + "name": "lj" + }, + "operator": "-", + "right": { + "type": "Identifier", + "start": 6004, + "end": 6006, + "loc": { + "start": { + "line": 282, + "column": 24 + }, + "end": { + "line": 282, + "column": 26 + }, + "identifierName": "li" + }, + "name": "li" + } + } + ] + }, + "leadingComments": null + } + ], + "kind": "const", + "leadingComments": [ + { + "type": "CommentLine", + "value": " Dividend (& Remainder)", + "start": 5954, + "end": 5979, + "loc": { + "start": { + "line": 281, + "column": 2 + }, + "end": { + "line": 281, + "column": 27 + } + } + } + ] + }, + { + "type": "ExpressionStatement", + "start": 6011, + "end": 6044, + "loc": { + "start": { + "line": 283, + "column": 2 + }, + "end": { + "line": 283, + "column": 35 + } + }, + "expression": { + "type": "CallExpression", + "start": 6011, + "end": 6043, + "loc": { + "start": { + "line": 283, + "column": 2 + }, + "end": { + "line": 283, + "column": 34 + } + }, + "callee": { + "type": "Identifier", + "start": 6011, + "end": 6016, + "loc": { + "start": { + "line": 283, + "column": 2 + }, + "end": { + "line": 283, + "column": 7 + }, + "identifierName": "_copy" + }, + "name": "_copy" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 6017, + "end": 6028, + "loc": { + "start": { + "line": 283, + "column": 8 + }, + "end": { + "line": 283, + "column": 19 + } + }, + "object": { + "type": "ThisExpression", + "start": 6017, + "end": 6021, + "loc": { + "start": { + "line": 283, + "column": 8 + }, + "end": { + "line": 283, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 6022, + "end": 6028, + "loc": { + "start": { + "line": 283, + "column": 13 + }, + "end": { + "line": 283, + "column": 19 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 6030, + "end": 6032, + "loc": { + "start": { + "line": 283, + "column": 21 + }, + "end": { + "line": 283, + "column": 23 + }, + "identifierName": "li" + }, + "name": "li" + }, + { + "type": "Identifier", + "start": 6034, + "end": 6036, + "loc": { + "start": { + "line": 283, + "column": 25 + }, + "end": { + "line": 283, + "column": 27 + }, + "identifierName": "lj" + }, + "name": "lj" + }, + { + "type": "Identifier", + "start": 6038, + "end": 6039, + "loc": { + "start": { + "line": 283, + "column": 29 + }, + "end": { + "line": 283, + "column": 30 + }, + "identifierName": "D" + }, + "name": "D" + }, + { + "type": "NumericLiteral", + "start": 6041, + "end": 6042, + "loc": { + "start": { + "line": 283, + "column": 32 + }, + "end": { + "line": 283, + "column": 33 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + ] + }, + "trailingComments": [ + { + "type": "CommentLine", + "value": " Divisor", + "start": 6048, + "end": 6058, + "loc": { + "start": { + "line": 285, + "column": 2 + }, + "end": { + "line": 285, + "column": 12 + } + } + } + ] + }, + { + "type": "VariableDeclaration", + "start": 6061, + "end": 6095, + "loc": { + "start": { + "line": 286, + "column": 2 + }, + "end": { + "line": 286, + "column": 36 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 6067, + "end": 6094, + "loc": { + "start": { + "line": 286, + "column": 8 + }, + "end": { + "line": 286, + "column": 35 + } + }, + "id": { + "type": "Identifier", + "start": 6067, + "end": 6068, + "loc": { + "start": { + "line": 286, + "column": 8 + }, + "end": { + "line": 286, + "column": 9 + }, + "identifierName": "d" + }, + "name": "d", + "leadingComments": null + }, + "init": { + "type": "CallExpression", + "start": 6071, + "end": 6094, + "loc": { + "start": { + "line": 286, + "column": 12 + }, + "end": { + "line": 286, + "column": 35 + } + }, + "callee": { + "type": "MemberExpression", + "start": 6071, + "end": 6091, + "loc": { + "start": { + "line": 286, + "column": 12 + }, + "end": { + "line": 286, + "column": 32 + } + }, + "object": { + "type": "Identifier", + "start": 6071, + "end": 6076, + "loc": { + "start": { + "line": 286, + "column": 12 + }, + "end": { + "line": 286, + "column": 17 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 6077, + "end": 6091, + "loc": { + "start": { + "line": 286, + "column": 18 + }, + "end": { + "line": 286, + "column": 32 + }, + "identifierName": "_limbs_in_base" + }, + "name": "_limbs_in_base" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 6092, + "end": 6093, + "loc": { + "start": { + "line": 286, + "column": 33 + }, + "end": { + "line": 286, + "column": 34 + }, + "identifierName": "r" + }, + "name": "r" + } + ] + }, + "leadingComments": null + } + ], + "kind": "const", + "leadingComments": [ + { + "type": "CommentLine", + "value": " Divisor", + "start": 6048, + "end": 6058, + "loc": { + "start": { + "line": 285, + "column": 2 + }, + "end": { + "line": 285, + "column": 12 + } + } + } + ] + }, + { + "type": "VariableDeclaration", + "start": 6098, + "end": 6118, + "loc": { + "start": { + "line": 287, + "column": 2 + }, + "end": { + "line": 287, + "column": 22 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 6104, + "end": 6117, + "loc": { + "start": { + "line": 287, + "column": 8 + }, + "end": { + "line": 287, + "column": 21 + } + }, + "id": { + "type": "Identifier", + "start": 6104, + "end": 6106, + "loc": { + "start": { + "line": 287, + "column": 8 + }, + "end": { + "line": 287, + "column": 10 + }, + "identifierName": "dj" + }, + "name": "dj" + }, + "init": { + "type": "MemberExpression", + "start": 6109, + "end": 6117, + "loc": { + "start": { + "line": 287, + "column": 13 + }, + "end": { + "line": 287, + "column": 21 + } + }, + "object": { + "type": "Identifier", + "start": 6109, + "end": 6110, + "loc": { + "start": { + "line": 287, + "column": 13 + }, + "end": { + "line": 287, + "column": 14 + }, + "identifierName": "d" + }, + "name": "d" + }, + "property": { + "type": "Identifier", + "start": 6111, + "end": 6117, + "loc": { + "start": { + "line": 287, + "column": 15 + }, + "end": { + "line": 287, + "column": 21 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 6121, + "end": 6157, + "loc": { + "start": { + "line": 288, + "column": 2 + }, + "end": { + "line": 288, + "column": 38 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 6127, + "end": 6156, + "loc": { + "start": { + "line": 288, + "column": 8 + }, + "end": { + "line": 288, + "column": 37 + } + }, + "id": { + "type": "Identifier", + "start": 6127, + "end": 6129, + "loc": { + "start": { + "line": 288, + "column": 8 + }, + "end": { + "line": 288, + "column": 10 + }, + "identifierName": "di" + }, + "name": "di" + }, + "init": { + "type": "CallExpression", + "start": 6132, + "end": 6156, + "loc": { + "start": { + "line": 288, + "column": 13 + }, + "end": { + "line": 288, + "column": 37 + } + }, + "callee": { + "type": "Identifier", + "start": 6132, + "end": 6146, + "loc": { + "start": { + "line": 288, + "column": 13 + }, + "end": { + "line": 288, + "column": 27 + }, + "identifierName": "_trim_positive" + }, + "name": "_trim_positive" + }, + "arguments": [ + { + "type": "Identifier", + "start": 6147, + "end": 6148, + "loc": { + "start": { + "line": 288, + "column": 28 + }, + "end": { + "line": 288, + "column": 29 + }, + "identifierName": "d" + }, + "name": "d" + }, + { + "type": "NumericLiteral", + "start": 6150, + "end": 6151, + "loc": { + "start": { + "line": 288, + "column": 31 + }, + "end": { + "line": 288, + "column": 32 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "Identifier", + "start": 6153, + "end": 6155, + "loc": { + "start": { + "line": 288, + "column": 34 + }, + "end": { + "line": 288, + "column": 36 + }, + "identifierName": "dj" + }, + "name": "dj" + } + ] + } + } + ], + "kind": "const", + "trailingComments": [ + { + "type": "CommentLine", + "value": " Di < dj because d != 0", + "start": 6158, + "end": 6183, + "loc": { + "start": { + "line": 288, + "column": 39 + }, + "end": { + "line": 288, + "column": 64 + } + } + }, + { + "type": "CommentLine", + "value": " Quotient", + "start": 6187, + "end": 6198, + "loc": { + "start": { + "line": 290, + "column": 2 + }, + "end": { + "line": 290, + "column": 13 + } + } + } + ] + }, + { + "type": "VariableDeclaration", + "start": 6201, + "end": 6228, + "loc": { + "start": { + "line": 291, + "column": 2 + }, + "end": { + "line": 291, + "column": 29 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 6207, + "end": 6227, + "loc": { + "start": { + "line": 291, + "column": 8 + }, + "end": { + "line": 291, + "column": 28 + } + }, + "id": { + "type": "Identifier", + "start": 6207, + "end": 6208, + "loc": { + "start": { + "line": 291, + "column": 8 + }, + "end": { + "line": 291, + "column": 9 + }, + "identifierName": "q" + }, + "name": "q", + "leadingComments": null + }, + "init": { + "type": "CallExpression", + "start": 6211, + "end": 6227, + "loc": { + "start": { + "line": 291, + "column": 12 + }, + "end": { + "line": 291, + "column": 28 + } + }, + "callee": { + "type": "Identifier", + "start": 6211, + "end": 6217, + "loc": { + "start": { + "line": 291, + "column": 12 + }, + "end": { + "line": 291, + "column": 18 + }, + "identifierName": "_zeros" + }, + "name": "_zeros" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 6218, + "end": 6226, + "loc": { + "start": { + "line": 291, + "column": 19 + }, + "end": { + "line": 291, + "column": 27 + } + }, + "object": { + "type": "Identifier", + "start": 6218, + "end": 6219, + "loc": { + "start": { + "line": 291, + "column": 19 + }, + "end": { + "line": 291, + "column": 20 + }, + "identifierName": "D" + }, + "name": "D" + }, + "property": { + "type": "Identifier", + "start": 6220, + "end": 6226, + "loc": { + "start": { + "line": 291, + "column": 21 + }, + "end": { + "line": 291, + "column": 27 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ] + }, + "leadingComments": null + } + ], + "kind": "const", + "leadingComments": [ + { + "type": "CommentLine", + "value": " Di < dj because d != 0", + "start": 6158, + "end": 6183, + "loc": { + "start": { + "line": 288, + "column": 39 + }, + "end": { + "line": 288, + "column": 64 + } + } + }, + { + "type": "CommentLine", + "value": " Quotient", + "start": 6187, + "end": 6198, + "loc": { + "start": { + "line": 290, + "column": 2 + }, + "end": { + "line": 290, + "column": 13 + } + } + } + ] + }, + { + "type": "ExpressionStatement", + "start": 6232, + "end": 6287, + "loc": { + "start": { + "line": 293, + "column": 2 + }, + "end": { + "line": 293, + "column": 57 + } + }, + "expression": { + "type": "CallExpression", + "start": 6232, + "end": 6286, + "loc": { + "start": { + "line": 293, + "column": 2 + }, + "end": { + "line": 293, + "column": 56 + } + }, + "callee": { + "type": "Identifier", + "start": 6232, + "end": 6240, + "loc": { + "start": { + "line": 293, + "column": 2 + }, + "end": { + "line": 293, + "column": 10 + }, + "identifierName": "_idivmod" + }, + "name": "_idivmod" + }, + "arguments": [ + { + "type": "Identifier", + "start": 6241, + "end": 6242, + "loc": { + "start": { + "line": 293, + "column": 11 + }, + "end": { + "line": 293, + "column": 12 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "Identifier", + "start": 6244, + "end": 6245, + "loc": { + "start": { + "line": 293, + "column": 14 + }, + "end": { + "line": 293, + "column": 15 + }, + "identifierName": "D" + }, + "name": "D" + }, + { + "type": "NumericLiteral", + "start": 6247, + "end": 6248, + "loc": { + "start": { + "line": 293, + "column": 17 + }, + "end": { + "line": 293, + "column": 18 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 6250, + "end": 6258, + "loc": { + "start": { + "line": 293, + "column": 20 + }, + "end": { + "line": 293, + "column": 28 + } + }, + "object": { + "type": "Identifier", + "start": 6250, + "end": 6251, + "loc": { + "start": { + "line": 293, + "column": 20 + }, + "end": { + "line": 293, + "column": 21 + }, + "identifierName": "D" + }, + "name": "D" + }, + "property": { + "type": "Identifier", + "start": 6252, + "end": 6258, + "loc": { + "start": { + "line": 293, + "column": 22 + }, + "end": { + "line": 293, + "column": 28 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 6260, + "end": 6261, + "loc": { + "start": { + "line": 293, + "column": 30 + }, + "end": { + "line": 293, + "column": 31 + }, + "identifierName": "d" + }, + "name": "d" + }, + { + "type": "Identifier", + "start": 6263, + "end": 6265, + "loc": { + "start": { + "line": 293, + "column": 33 + }, + "end": { + "line": 293, + "column": 35 + }, + "identifierName": "di" + }, + "name": "di" + }, + { + "type": "Identifier", + "start": 6267, + "end": 6269, + "loc": { + "start": { + "line": 293, + "column": 37 + }, + "end": { + "line": 293, + "column": 39 + }, + "identifierName": "dj" + }, + "name": "dj" + }, + { + "type": "Identifier", + "start": 6271, + "end": 6272, + "loc": { + "start": { + "line": 293, + "column": 41 + }, + "end": { + "line": 293, + "column": 42 + }, + "identifierName": "q" + }, + "name": "q" + }, + { + "type": "NumericLiteral", + "start": 6274, + "end": 6275, + "loc": { + "start": { + "line": 293, + "column": 44 + }, + "end": { + "line": 293, + "column": 45 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 6277, + "end": 6285, + "loc": { + "start": { + "line": 293, + "column": 47 + }, + "end": { + "line": 293, + "column": 55 + } + }, + "object": { + "type": "Identifier", + "start": 6277, + "end": 6278, + "loc": { + "start": { + "line": 293, + "column": 47 + }, + "end": { + "line": 293, + "column": 48 + }, + "identifierName": "q" + }, + "name": "q" + }, + "property": { + "type": "Identifier", + "start": 6279, + "end": 6285, + "loc": { + "start": { + "line": 293, + "column": 49 + }, + "end": { + "line": 293, + "column": 55 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ] + } + }, + { + "type": "VariableDeclaration", + "start": 6291, + "end": 6341, + "loc": { + "start": { + "line": 295, + "column": 2 + }, + "end": { + "line": 295, + "column": 52 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 6297, + "end": 6340, + "loc": { + "start": { + "line": 295, + "column": 8 + }, + "end": { + "line": 295, + "column": 51 + } + }, + "id": { + "type": "Identifier", + "start": 6297, + "end": 6298, + "loc": { + "start": { + "line": 295, + "column": 8 + }, + "end": { + "line": 295, + "column": 9 + }, + "identifierName": "Q" + }, + "name": "Q" + }, + "init": { + "type": "NewExpression", + "start": 6301, + "end": 6340, + "loc": { + "start": { + "line": 295, + "column": 12 + }, + "end": { + "line": 295, + "column": 51 + } + }, + "callee": { + "type": "Identifier", + "start": 6305, + "end": 6312, + "loc": { + "start": { + "line": 295, + "column": 16 + }, + "end": { + "line": 295, + "column": 23 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "Identifier", + "start": 6313, + "end": 6314, + "loc": { + "start": { + "line": 295, + "column": 24 + }, + "end": { + "line": 295, + "column": 25 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "Identifier", + "start": 6316, + "end": 6336, + "loc": { + "start": { + "line": 295, + "column": 27 + }, + "end": { + "line": 295, + "column": 47 + }, + "identifierName": "quotient_is_negative" + }, + "name": "quotient_is_negative" + }, + { + "type": "Identifier", + "start": 6338, + "end": 6339, + "loc": { + "start": { + "line": 295, + "column": 49 + }, + "end": { + "line": 295, + "column": 50 + }, + "identifierName": "q" + }, + "name": "q" + } + ] + } + } + ], + "kind": "const", + "trailingComments": [ + { + "type": "CommentLine", + "value": " Quotient", + "start": 6342, + "end": 6353, + "loc": { + "start": { + "line": 295, + "column": 53 + }, + "end": { + "line": 295, + "column": 64 + } + } + } + ] + }, + { + "type": "VariableDeclaration", + "start": 6356, + "end": 6387, + "loc": { + "start": { + "line": 296, + "column": 2 + }, + "end": { + "line": 296, + "column": 33 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 6362, + "end": 6386, + "loc": { + "start": { + "line": 296, + "column": 8 + }, + "end": { + "line": 296, + "column": 32 + } + }, + "id": { + "type": "Identifier", + "start": 6362, + "end": 6363, + "loc": { + "start": { + "line": 296, + "column": 8 + }, + "end": { + "line": 296, + "column": 9 + }, + "identifierName": "R" + }, + "name": "R", + "leadingComments": null + }, + "init": { + "type": "NewExpression", + "start": 6366, + "end": 6386, + "loc": { + "start": { + "line": 296, + "column": 12 + }, + "end": { + "line": 296, + "column": 32 + } + }, + "callee": { + "type": "Identifier", + "start": 6370, + "end": 6377, + "loc": { + "start": { + "line": 296, + "column": 16 + }, + "end": { + "line": 296, + "column": 23 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "Identifier", + "start": 6378, + "end": 6379, + "loc": { + "start": { + "line": 296, + "column": 24 + }, + "end": { + "line": 296, + "column": 25 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "NumericLiteral", + "start": 6381, + "end": 6382, + "loc": { + "start": { + "line": 296, + "column": 27 + }, + "end": { + "line": 296, + "column": 28 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "Identifier", + "start": 6384, + "end": 6385, + "loc": { + "start": { + "line": 296, + "column": 30 + }, + "end": { + "line": 296, + "column": 31 + }, + "identifierName": "D" + }, + "name": "D" + } + ] + }, + "leadingComments": null + } + ], + "kind": "const", + "leadingComments": [ + { + "type": "CommentLine", + "value": " Quotient", + "start": 6342, + "end": 6353, + "loc": { + "start": { + "line": 295, + "column": 53 + }, + "end": { + "line": 295, + "column": 64 + } + } + } + ], + "trailingComments": [ + { + "type": "CommentLine", + "value": " Remainder", + "start": 6388, + "end": 6400, + "loc": { + "start": { + "line": 296, + "column": 34 + }, + "end": { + "line": 296, + "column": 46 + } + } + } + ] + }, + { + "type": "IfStatement", + "start": 6404, + "end": 6758, + "loc": { + "start": { + "line": 298, + "column": 2 + }, + "end": { + "line": 310, + "column": 3 + } + }, + "test": { + "type": "LogicalExpression", + "start": 6408, + "end": 6472, + "loc": { + "start": { + "line": 298, + "column": 6 + }, + "end": { + "line": 298, + "column": 70 + } + }, + "left": { + "type": "LogicalExpression", + "start": 6409, + "end": 6448, + "loc": { + "start": { + "line": 298, + "column": 7 + }, + "end": { + "line": 298, + "column": 46 + } + }, + "left": { + "type": "MemberExpression", + "start": 6409, + "end": 6426, + "loc": { + "start": { + "line": 298, + "column": 7 + }, + "end": { + "line": 298, + "column": 24 + } + }, + "object": { + "type": "ThisExpression", + "start": 6409, + "end": 6413, + "loc": { + "start": { + "line": 298, + "column": 7 + }, + "end": { + "line": 298, + "column": 11 + } + }, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 6414, + "end": 6426, + "loc": { + "start": { + "line": 298, + "column": 12 + }, + "end": { + "line": 298, + "column": 24 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false, + "leadingComments": null + }, + "operator": "||", + "right": { + "type": "MemberExpression", + "start": 6430, + "end": 6448, + "loc": { + "start": { + "line": 298, + "column": 28 + }, + "end": { + "line": 298, + "column": 46 + } + }, + "object": { + "type": "Identifier", + "start": 6430, + "end": 6435, + "loc": { + "start": { + "line": 298, + "column": 28 + }, + "end": { + "line": 298, + "column": 33 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 6436, + "end": 6448, + "loc": { + "start": { + "line": 298, + "column": 34 + }, + "end": { + "line": 298, + "column": 46 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "leadingComments": null, + "extra": { + "parenthesized": true, + "parenStart": 6408 + } + }, + "operator": "&&", + "right": { + "type": "UnaryExpression", + "start": 6453, + "end": 6472, + "loc": { + "start": { + "line": 298, + "column": 51 + }, + "end": { + "line": 298, + "column": 70 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "CallExpression", + "start": 6454, + "end": 6472, + "loc": { + "start": { + "line": 298, + "column": 52 + }, + "end": { + "line": 298, + "column": 70 + } + }, + "callee": { + "type": "Identifier", + "start": 6454, + "end": 6456, + "loc": { + "start": { + "line": 298, + "column": 52 + }, + "end": { + "line": 298, + "column": 54 + }, + "identifierName": "jz" + }, + "name": "jz" + }, + "arguments": [ + { + "type": "Identifier", + "start": 6457, + "end": 6458, + "loc": { + "start": { + "line": 298, + "column": 55 + }, + "end": { + "line": 298, + "column": 56 + }, + "identifierName": "D" + }, + "name": "D" + }, + { + "type": "NumericLiteral", + "start": 6460, + "end": 6461, + "loc": { + "start": { + "line": 298, + "column": 58 + }, + "end": { + "line": 298, + "column": 59 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 6463, + "end": 6471, + "loc": { + "start": { + "line": 298, + "column": 61 + }, + "end": { + "line": 298, + "column": 69 + } + }, + "object": { + "type": "Identifier", + "start": 6463, + "end": 6464, + "loc": { + "start": { + "line": 298, + "column": 61 + }, + "end": { + "line": 298, + "column": 62 + }, + "identifierName": "D" + }, + "name": "D" + }, + "property": { + "type": "Identifier", + "start": 6465, + "end": 6471, + "loc": { + "start": { + "line": 298, + "column": 63 + }, + "end": { + "line": 298, + "column": 69 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ] + }, + "extra": { + "parenthesizedArgument": false + } + }, + "leadingComments": null + }, + "consequent": { + "type": "BlockStatement", + "start": 6474, + "end": 6758, + "loc": { + "start": { + "line": 298, + "column": 72 + }, + "end": { + "line": 310, + "column": 3 + } + }, + "body": [ + { + "type": "IfStatement", + "start": 6479, + "end": 6754, + "loc": { + "start": { + "line": 299, + "column": 3 + }, + "end": { + "line": 309, + "column": 4 + } + }, + "test": { + "type": "MemberExpression", + "start": 6483, + "end": 6501, + "loc": { + "start": { + "line": 299, + "column": 7 + }, + "end": { + "line": 299, + "column": 25 + } + }, + "object": { + "type": "Identifier", + "start": 6483, + "end": 6488, + "loc": { + "start": { + "line": 299, + "column": 7 + }, + "end": { + "line": 299, + "column": 12 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 6489, + "end": 6501, + "loc": { + "start": { + "line": 299, + "column": 13 + }, + "end": { + "line": 299, + "column": 25 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "consequent": { + "type": "BlockStatement", + "start": 6503, + "end": 6663, + "loc": { + "start": { + "line": 299, + "column": 27 + }, + "end": { + "line": 306, + "column": 4 + } + }, + "body": [ + { + "type": "IfStatement", + "start": 6509, + "end": 6658, + "loc": { + "start": { + "line": 300, + "column": 4 + }, + "end": { + "line": 305, + "column": 5 + } + }, + "test": { + "type": "MemberExpression", + "start": 6513, + "end": 6530, + "loc": { + "start": { + "line": 300, + "column": 8 + }, + "end": { + "line": 300, + "column": 25 + } + }, + "object": { + "type": "ThisExpression", + "start": 6513, + "end": 6517, + "loc": { + "start": { + "line": 300, + "column": 8 + }, + "end": { + "line": 300, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 6518, + "end": 6530, + "loc": { + "start": { + "line": 300, + "column": 13 + }, + "end": { + "line": 300, + "column": 25 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "consequent": { + "type": "BlockStatement", + "start": 6532, + "end": 6573, + "loc": { + "start": { + "line": 300, + "column": 27 + }, + "end": { + "line": 302, + "column": 5 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 6539, + "end": 6550, + "loc": { + "start": { + "line": 301, + "column": 5 + }, + "end": { + "line": 301, + "column": 16 + } + }, + "expression": { + "type": "CallExpression", + "start": 6539, + "end": 6549, + "loc": { + "start": { + "line": 301, + "column": 5 + }, + "end": { + "line": 301, + "column": 15 + } + }, + "callee": { + "type": "MemberExpression", + "start": 6539, + "end": 6547, + "loc": { + "start": { + "line": 301, + "column": 5 + }, + "end": { + "line": 301, + "column": 13 + } + }, + "object": { + "type": "Identifier", + "start": 6539, + "end": 6540, + "loc": { + "start": { + "line": 301, + "column": 5 + }, + "end": { + "line": 301, + "column": 6 + }, + "identifierName": "R" + }, + "name": "R" + }, + "property": { + "type": "Identifier", + "start": 6541, + "end": 6547, + "loc": { + "start": { + "line": 301, + "column": 7 + }, + "end": { + "line": 301, + "column": 13 + }, + "identifierName": "negate" + }, + "name": "negate" + }, + "computed": false + }, + "arguments": [] + }, + "trailingComments": [ + { + "type": "CommentLine", + "value": " TODO optimize", + "start": 6551, + "end": 6567, + "loc": { + "start": { + "line": 301, + "column": 17 + }, + "end": { + "line": 301, + "column": 33 + } + } + } + ] + } + ], + "directives": [] + }, + "alternate": { + "type": "BlockStatement", + "start": 6579, + "end": 6658, + "loc": { + "start": { + "line": 302, + "column": 11 + }, + "end": { + "line": 305, + "column": 5 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 6586, + "end": 6615, + "loc": { + "start": { + "line": 303, + "column": 5 + }, + "end": { + "line": 303, + "column": 34 + } + }, + "expression": { + "type": "CallExpression", + "start": 6586, + "end": 6614, + "loc": { + "start": { + "line": 303, + "column": 5 + }, + "end": { + "line": 303, + "column": 33 + } + }, + "callee": { + "type": "Identifier", + "start": 6586, + "end": 6595, + "loc": { + "start": { + "line": 303, + "column": 5 + }, + "end": { + "line": 303, + "column": 14 + }, + "identifierName": "increment" + }, + "name": "increment" + }, + "arguments": [ + { + "type": "Identifier", + "start": 6596, + "end": 6597, + "loc": { + "start": { + "line": 303, + "column": 15 + }, + "end": { + "line": 303, + "column": 16 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "Identifier", + "start": 6599, + "end": 6600, + "loc": { + "start": { + "line": 303, + "column": 18 + }, + "end": { + "line": 303, + "column": 19 + }, + "identifierName": "q" + }, + "name": "q" + }, + { + "type": "NumericLiteral", + "start": 6602, + "end": 6603, + "loc": { + "start": { + "line": 303, + "column": 21 + }, + "end": { + "line": 303, + "column": 22 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 6605, + "end": 6613, + "loc": { + "start": { + "line": 303, + "column": 24 + }, + "end": { + "line": 303, + "column": 32 + } + }, + "object": { + "type": "Identifier", + "start": 6605, + "end": 6606, + "loc": { + "start": { + "line": 303, + "column": 24 + }, + "end": { + "line": 303, + "column": 25 + }, + "identifierName": "q" + }, + "name": "q" + }, + "property": { + "type": "Identifier", + "start": 6607, + "end": 6613, + "loc": { + "start": { + "line": 303, + "column": 26 + }, + "end": { + "line": 303, + "column": 32 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ] + } + }, + { + "type": "ExpressionStatement", + "start": 6621, + "end": 6635, + "loc": { + "start": { + "line": 304, + "column": 5 + }, + "end": { + "line": 304, + "column": 19 + } + }, + "expression": { + "type": "CallExpression", + "start": 6621, + "end": 6634, + "loc": { + "start": { + "line": 304, + "column": 5 + }, + "end": { + "line": 304, + "column": 18 + } + }, + "callee": { + "type": "MemberExpression", + "start": 6621, + "end": 6627, + "loc": { + "start": { + "line": 304, + "column": 5 + }, + "end": { + "line": 304, + "column": 11 + } + }, + "object": { + "type": "Identifier", + "start": 6621, + "end": 6622, + "loc": { + "start": { + "line": 304, + "column": 5 + }, + "end": { + "line": 304, + "column": 6 + }, + "identifierName": "R" + }, + "name": "R" + }, + "property": { + "type": "Identifier", + "start": 6623, + "end": 6627, + "loc": { + "start": { + "line": 304, + "column": 7 + }, + "end": { + "line": 304, + "column": 11 + }, + "identifierName": "iadd" + }, + "name": "iadd" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 6628, + "end": 6633, + "loc": { + "start": { + "line": 304, + "column": 12 + }, + "end": { + "line": 304, + "column": 17 + }, + "identifierName": "other" + }, + "name": "other" + } + ] + }, + "trailingComments": [ + { + "type": "CommentLine", + "value": " TODO optimize", + "start": 6636, + "end": 6652, + "loc": { + "start": { + "line": 304, + "column": 20 + }, + "end": { + "line": 304, + "column": 36 + } + } + } + ] + } + ], + "directives": [] + } + } + ], + "directives": [] + }, + "alternate": { + "type": "BlockStatement", + "start": 6669, + "end": 6754, + "loc": { + "start": { + "line": 306, + "column": 10 + }, + "end": { + "line": 309, + "column": 4 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 6675, + "end": 6704, + "loc": { + "start": { + "line": 307, + "column": 4 + }, + "end": { + "line": 307, + "column": 33 + } + }, + "expression": { + "type": "CallExpression", + "start": 6675, + "end": 6703, + "loc": { + "start": { + "line": 307, + "column": 4 + }, + "end": { + "line": 307, + "column": 32 + } + }, + "callee": { + "type": "Identifier", + "start": 6675, + "end": 6684, + "loc": { + "start": { + "line": 307, + "column": 4 + }, + "end": { + "line": 307, + "column": 13 + }, + "identifierName": "increment" + }, + "name": "increment" + }, + "arguments": [ + { + "type": "Identifier", + "start": 6685, + "end": 6686, + "loc": { + "start": { + "line": 307, + "column": 14 + }, + "end": { + "line": 307, + "column": 15 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "Identifier", + "start": 6688, + "end": 6689, + "loc": { + "start": { + "line": 307, + "column": 17 + }, + "end": { + "line": 307, + "column": 18 + }, + "identifierName": "q" + }, + "name": "q" + }, + { + "type": "NumericLiteral", + "start": 6691, + "end": 6692, + "loc": { + "start": { + "line": 307, + "column": 20 + }, + "end": { + "line": 307, + "column": 21 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 6694, + "end": 6702, + "loc": { + "start": { + "line": 307, + "column": 23 + }, + "end": { + "line": 307, + "column": 31 + } + }, + "object": { + "type": "Identifier", + "start": 6694, + "end": 6695, + "loc": { + "start": { + "line": 307, + "column": 23 + }, + "end": { + "line": 307, + "column": 24 + }, + "identifierName": "q" + }, + "name": "q" + }, + "property": { + "type": "Identifier", + "start": 6696, + "end": 6702, + "loc": { + "start": { + "line": 307, + "column": 25 + }, + "end": { + "line": 307, + "column": 31 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ] + } + }, + { + "type": "ExpressionStatement", + "start": 6709, + "end": 6732, + "loc": { + "start": { + "line": 308, + "column": 4 + }, + "end": { + "line": 308, + "column": 27 + } + }, + "expression": { + "type": "CallExpression", + "start": 6709, + "end": 6731, + "loc": { + "start": { + "line": 308, + "column": 4 + }, + "end": { + "line": 308, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 6709, + "end": 6724, + "loc": { + "start": { + "line": 308, + "column": 4 + }, + "end": { + "line": 308, + "column": 19 + } + }, + "object": { + "type": "CallExpression", + "start": 6709, + "end": 6719, + "loc": { + "start": { + "line": 308, + "column": 4 + }, + "end": { + "line": 308, + "column": 14 + } + }, + "callee": { + "type": "MemberExpression", + "start": 6709, + "end": 6717, + "loc": { + "start": { + "line": 308, + "column": 4 + }, + "end": { + "line": 308, + "column": 12 + } + }, + "object": { + "type": "Identifier", + "start": 6709, + "end": 6710, + "loc": { + "start": { + "line": 308, + "column": 4 + }, + "end": { + "line": 308, + "column": 5 + }, + "identifierName": "R" + }, + "name": "R" + }, + "property": { + "type": "Identifier", + "start": 6711, + "end": 6717, + "loc": { + "start": { + "line": 308, + "column": 6 + }, + "end": { + "line": 308, + "column": 12 + }, + "identifierName": "negate" + }, + "name": "negate" + }, + "computed": false + }, + "arguments": [] + }, + "property": { + "type": "Identifier", + "start": 6720, + "end": 6724, + "loc": { + "start": { + "line": 308, + "column": 15 + }, + "end": { + "line": 308, + "column": 19 + }, + "identifierName": "iadd" + }, + "name": "iadd" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 6725, + "end": 6730, + "loc": { + "start": { + "line": 308, + "column": 20 + }, + "end": { + "line": 308, + "column": 25 + }, + "identifierName": "other" + }, + "name": "other" + } + ] + }, + "trailingComments": [ + { + "type": "CommentLine", + "value": " TODO optimize", + "start": 6733, + "end": 6749, + "loc": { + "start": { + "line": 308, + "column": 28 + }, + "end": { + "line": 308, + "column": 44 + } + } + } + ] + } + ], + "directives": [] + } + } + ], + "directives": [] + }, + "alternate": null, + "leadingComments": [ + { + "type": "CommentLine", + "value": " Remainder", + "start": 6388, + "end": 6400, + "loc": { + "start": { + "line": 296, + "column": 34 + }, + "end": { + "line": 296, + "column": 46 + } + } + } + ] + }, + { + "type": "ReturnStatement", + "start": 6762, + "end": 6776, + "loc": { + "start": { + "line": 312, + "column": 2 + }, + "end": { + "line": 312, + "column": 16 + } + }, + "argument": { + "type": "ArrayExpression", + "start": 6769, + "end": 6775, + "loc": { + "start": { + "line": 312, + "column": 9 + }, + "end": { + "line": 312, + "column": 15 + } + }, + "elements": [ + { + "type": "Identifier", + "start": 6770, + "end": 6771, + "loc": { + "start": { + "line": 312, + "column": 10 + }, + "end": { + "line": 312, + "column": 11 + }, + "identifierName": "Q" + }, + "name": "Q" + }, + { + "type": "Identifier", + "start": 6773, + "end": 6774, + "loc": { + "start": { + "line": 312, + "column": 13 + }, + "end": { + "line": 312, + "column": 14 + }, + "identifierName": "R" + }, + "name": "R" + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 6782, + "end": 6918, + "loc": { + "start": { + "line": 315, + "column": 1 + }, + "end": { + "line": 319, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 6782, + "end": 6789, + "loc": { + "start": { + "line": 315, + "column": 1 + }, + "end": { + "line": 315, + "column": 8 + }, + "identifierName": "idivmod" + }, + "name": "idivmod" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 6790, + "end": 6795, + "loc": { + "start": { + "line": 315, + "column": 9 + }, + "end": { + "line": 315, + "column": 14 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 6797, + "end": 6918, + "loc": { + "start": { + "line": 315, + "column": 16 + }, + "end": { + "line": 319, + "column": 2 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 6853, + "end": 6887, + "loc": { + "start": { + "line": 317, + "column": 2 + }, + "end": { + "line": 317, + "column": 36 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 6859, + "end": 6886, + "loc": { + "start": { + "line": 317, + "column": 8 + }, + "end": { + "line": 317, + "column": 35 + } + }, + "id": { + "type": "ArrayPattern", + "start": 6859, + "end": 6865, + "loc": { + "start": { + "line": 317, + "column": 8 + }, + "end": { + "line": 317, + "column": 14 + } + }, + "elements": [ + { + "type": "Identifier", + "start": 6860, + "end": 6861, + "loc": { + "start": { + "line": 317, + "column": 9 + }, + "end": { + "line": 317, + "column": 10 + }, + "identifierName": "q" + }, + "name": "q", + "leadingComments": null + }, + { + "type": "Identifier", + "start": 6863, + "end": 6864, + "loc": { + "start": { + "line": 317, + "column": 12 + }, + "end": { + "line": 317, + "column": 13 + }, + "identifierName": "r" + }, + "name": "r" + } + ], + "leadingComments": null + }, + "init": { + "type": "CallExpression", + "start": 6868, + "end": 6886, + "loc": { + "start": { + "line": 317, + "column": 17 + }, + "end": { + "line": 317, + "column": 35 + } + }, + "callee": { + "type": "MemberExpression", + "start": 6868, + "end": 6879, + "loc": { + "start": { + "line": 317, + "column": 17 + }, + "end": { + "line": 317, + "column": 28 + } + }, + "object": { + "type": "ThisExpression", + "start": 6868, + "end": 6872, + "loc": { + "start": { + "line": 317, + "column": 17 + }, + "end": { + "line": 317, + "column": 21 + } + } + }, + "property": { + "type": "Identifier", + "start": 6873, + "end": 6879, + "loc": { + "start": { + "line": 317, + "column": 22 + }, + "end": { + "line": 317, + "column": 28 + }, + "identifierName": "divmod" + }, + "name": "divmod" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 6880, + "end": 6885, + "loc": { + "start": { + "line": 317, + "column": 29 + }, + "end": { + "line": 317, + "column": 34 + }, + "identifierName": "other" + }, + "name": "other" + } + ] + }, + "leadingComments": null + } + ], + "kind": "const", + "leadingComments": [ + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 6801, + "end": 6850, + "loc": { + "start": { + "line": 316, + "column": 2 + }, + "end": { + "line": 316, + "column": 51 + } + } + } + ] + }, + { + "type": "ReturnStatement", + "start": 6890, + "end": 6915, + "loc": { + "start": { + "line": 318, + "column": 2 + }, + "end": { + "line": 318, + "column": 27 + } + }, + "argument": { + "type": "ArrayExpression", + "start": 6897, + "end": 6914, + "loc": { + "start": { + "line": 318, + "column": 9 + }, + "end": { + "line": 318, + "column": 26 + } + }, + "elements": [ + { + "type": "Identifier", + "start": 6898, + "end": 6899, + "loc": { + "start": { + "line": 318, + "column": 10 + }, + "end": { + "line": 318, + "column": 11 + }, + "identifierName": "q" + }, + "name": "q" + }, + { + "type": "CallExpression", + "start": 6901, + "end": 6913, + "loc": { + "start": { + "line": 318, + "column": 13 + }, + "end": { + "line": 318, + "column": 25 + } + }, + "callee": { + "type": "MemberExpression", + "start": 6901, + "end": 6907, + "loc": { + "start": { + "line": 318, + "column": 13 + }, + "end": { + "line": 318, + "column": 19 + } + }, + "object": { + "type": "Identifier", + "start": 6901, + "end": 6902, + "loc": { + "start": { + "line": 318, + "column": 13 + }, + "end": { + "line": 318, + "column": 14 + }, + "identifierName": "r" + }, + "name": "r" + }, + "property": { + "type": "Identifier", + "start": 6903, + "end": 6907, + "loc": { + "start": { + "line": 318, + "column": 15 + }, + "end": { + "line": 318, + "column": 19 + }, + "identifierName": "move" + }, + "name": "move" + }, + "computed": false + }, + "arguments": [ + { + "type": "ThisExpression", + "start": 6908, + "end": 6912, + "loc": { + "start": { + "line": 318, + "column": 20 + }, + "end": { + "line": 318, + "column": 24 + } + } + } + ] + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 6921, + "end": 6985, + "loc": { + "start": { + "line": 321, + "column": 1 + }, + "end": { + "line": 323, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 6921, + "end": 6928, + "loc": { + "start": { + "line": 321, + "column": 1 + }, + "end": { + "line": 321, + "column": 8 + }, + "identifierName": "divmodn" + }, + "name": "divmodn" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 6929, + "end": 6935, + "loc": { + "start": { + "line": 321, + "column": 9 + }, + "end": { + "line": 321, + "column": 15 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "body": { + "type": "BlockStatement", + "start": 6937, + "end": 6985, + "loc": { + "start": { + "line": 321, + "column": 17 + }, + "end": { + "line": 323, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 6941, + "end": 6982, + "loc": { + "start": { + "line": 322, + "column": 2 + }, + "end": { + "line": 322, + "column": 43 + } + }, + "argument": { + "type": "CallExpression", + "start": 6948, + "end": 6981, + "loc": { + "start": { + "line": 322, + "column": 9 + }, + "end": { + "line": 322, + "column": 42 + } + }, + "callee": { + "type": "MemberExpression", + "start": 6948, + "end": 6959, + "loc": { + "start": { + "line": 322, + "column": 9 + }, + "end": { + "line": 322, + "column": 20 + } + }, + "object": { + "type": "ThisExpression", + "start": 6948, + "end": 6952, + "loc": { + "start": { + "line": 322, + "column": 9 + }, + "end": { + "line": 322, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 6953, + "end": 6959, + "loc": { + "start": { + "line": 322, + "column": 14 + }, + "end": { + "line": 322, + "column": 20 + }, + "identifierName": "divmod" + }, + "name": "divmod" + }, + "computed": false + }, + "arguments": [ + { + "type": "CallExpression", + "start": 6960, + "end": 6980, + "loc": { + "start": { + "line": 322, + "column": 21 + }, + "end": { + "line": 322, + "column": 41 + } + }, + "callee": { + "type": "Identifier", + "start": 6960, + "end": 6972, + "loc": { + "start": { + "line": 322, + "column": 21 + }, + "end": { + "line": 322, + "column": 33 + }, + "identifierName": "_from_number" + }, + "name": "_from_number" + }, + "arguments": [ + { + "type": "Identifier", + "start": 6973, + "end": 6979, + "loc": { + "start": { + "line": 322, + "column": 34 + }, + "end": { + "line": 322, + "column": 40 + }, + "identifierName": "number" + }, + "name": "number" + } + ] + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 6988, + "end": 7076, + "loc": { + "start": { + "line": 325, + "column": 1 + }, + "end": { + "line": 328, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 6988, + "end": 6996, + "loc": { + "start": { + "line": 325, + "column": 1 + }, + "end": { + "line": 325, + "column": 9 + }, + "identifierName": "idivmodn" + }, + "name": "idivmodn" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 6997, + "end": 7003, + "loc": { + "start": { + "line": 325, + "column": 10 + }, + "end": { + "line": 325, + "column": 16 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "body": { + "type": "BlockStatement", + "start": 7005, + "end": 7076, + "loc": { + "start": { + "line": 325, + "column": 18 + }, + "end": { + "line": 328, + "column": 2 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 7009, + "end": 7045, + "loc": { + "start": { + "line": 326, + "column": 2 + }, + "end": { + "line": 326, + "column": 38 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 7015, + "end": 7044, + "loc": { + "start": { + "line": 326, + "column": 8 + }, + "end": { + "line": 326, + "column": 37 + } + }, + "id": { + "type": "ArrayPattern", + "start": 7015, + "end": 7021, + "loc": { + "start": { + "line": 326, + "column": 8 + }, + "end": { + "line": 326, + "column": 14 + } + }, + "elements": [ + { + "type": "Identifier", + "start": 7016, + "end": 7017, + "loc": { + "start": { + "line": 326, + "column": 9 + }, + "end": { + "line": 326, + "column": 10 + }, + "identifierName": "q" + }, + "name": "q" + }, + { + "type": "Identifier", + "start": 7019, + "end": 7020, + "loc": { + "start": { + "line": 326, + "column": 12 + }, + "end": { + "line": 326, + "column": 13 + }, + "identifierName": "r" + }, + "name": "r" + } + ] + }, + "init": { + "type": "CallExpression", + "start": 7024, + "end": 7044, + "loc": { + "start": { + "line": 326, + "column": 17 + }, + "end": { + "line": 326, + "column": 37 + } + }, + "callee": { + "type": "MemberExpression", + "start": 7024, + "end": 7036, + "loc": { + "start": { + "line": 326, + "column": 17 + }, + "end": { + "line": 326, + "column": 29 + } + }, + "object": { + "type": "ThisExpression", + "start": 7024, + "end": 7028, + "loc": { + "start": { + "line": 326, + "column": 17 + }, + "end": { + "line": 326, + "column": 21 + } + } + }, + "property": { + "type": "Identifier", + "start": 7029, + "end": 7036, + "loc": { + "start": { + "line": 326, + "column": 22 + }, + "end": { + "line": 326, + "column": 29 + }, + "identifierName": "divmodn" + }, + "name": "divmodn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 7037, + "end": 7043, + "loc": { + "start": { + "line": 326, + "column": 30 + }, + "end": { + "line": 326, + "column": 36 + }, + "identifierName": "number" + }, + "name": "number" + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "ReturnStatement", + "start": 7048, + "end": 7073, + "loc": { + "start": { + "line": 327, + "column": 2 + }, + "end": { + "line": 327, + "column": 27 + } + }, + "argument": { + "type": "ArrayExpression", + "start": 7055, + "end": 7072, + "loc": { + "start": { + "line": 327, + "column": 9 + }, + "end": { + "line": 327, + "column": 26 + } + }, + "elements": [ + { + "type": "Identifier", + "start": 7056, + "end": 7057, + "loc": { + "start": { + "line": 327, + "column": 10 + }, + "end": { + "line": 327, + "column": 11 + }, + "identifierName": "q" + }, + "name": "q" + }, + { + "type": "CallExpression", + "start": 7059, + "end": 7071, + "loc": { + "start": { + "line": 327, + "column": 13 + }, + "end": { + "line": 327, + "column": 25 + } + }, + "callee": { + "type": "MemberExpression", + "start": 7059, + "end": 7065, + "loc": { + "start": { + "line": 327, + "column": 13 + }, + "end": { + "line": 327, + "column": 19 + } + }, + "object": { + "type": "Identifier", + "start": 7059, + "end": 7060, + "loc": { + "start": { + "line": 327, + "column": 13 + }, + "end": { + "line": 327, + "column": 14 + }, + "identifierName": "r" + }, + "name": "r" + }, + "property": { + "type": "Identifier", + "start": 7061, + "end": 7065, + "loc": { + "start": { + "line": 327, + "column": 15 + }, + "end": { + "line": 327, + "column": 19 + }, + "identifierName": "move" + }, + "name": "move" + }, + "computed": false + }, + "arguments": [ + { + "type": "ThisExpression", + "start": 7066, + "end": 7070, + "loc": { + "start": { + "line": 327, + "column": 20 + }, + "end": { + "line": 327, + "column": 24 + } + } + } + ] + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 7079, + "end": 7161, + "loc": { + "start": { + "line": 330, + "column": 1 + }, + "end": { + "line": 332, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 7079, + "end": 7087, + "loc": { + "start": { + "line": 330, + "column": 1 + }, + "end": { + "line": 330, + "column": 9 + }, + "identifierName": "opposite" + }, + "name": "opposite" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 7090, + "end": 7161, + "loc": { + "start": { + "line": 330, + "column": 12 + }, + "end": { + "line": 332, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 7094, + "end": 7158, + "loc": { + "start": { + "line": 331, + "column": 2 + }, + "end": { + "line": 331, + "column": 66 + } + }, + "argument": { + "type": "NewExpression", + "start": 7101, + "end": 7157, + "loc": { + "start": { + "line": 331, + "column": 9 + }, + "end": { + "line": 331, + "column": 65 + } + }, + "callee": { + "type": "Identifier", + "start": 7105, + "end": 7112, + "loc": { + "start": { + "line": 331, + "column": 13 + }, + "end": { + "line": 331, + "column": 20 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 7113, + "end": 7123, + "loc": { + "start": { + "line": 331, + "column": 21 + }, + "end": { + "line": 331, + "column": 31 + } + }, + "object": { + "type": "ThisExpression", + "start": 7113, + "end": 7117, + "loc": { + "start": { + "line": 331, + "column": 21 + }, + "end": { + "line": 331, + "column": 25 + } + } + }, + "property": { + "type": "Identifier", + "start": 7118, + "end": 7123, + "loc": { + "start": { + "line": 331, + "column": 26 + }, + "end": { + "line": 331, + "column": 31 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + { + "type": "UnaryExpression", + "start": 7125, + "end": 7143, + "loc": { + "start": { + "line": 331, + "column": 33 + }, + "end": { + "line": 331, + "column": 51 + } + }, + "operator": "~", + "prefix": true, + "argument": { + "type": "MemberExpression", + "start": 7126, + "end": 7143, + "loc": { + "start": { + "line": 331, + "column": 34 + }, + "end": { + "line": 331, + "column": 51 + } + }, + "object": { + "type": "ThisExpression", + "start": 7126, + "end": 7130, + "loc": { + "start": { + "line": 331, + "column": 34 + }, + "end": { + "line": 331, + "column": 38 + } + } + }, + "property": { + "type": "Identifier", + "start": 7131, + "end": 7143, + "loc": { + "start": { + "line": 331, + "column": 39 + }, + "end": { + "line": 331, + "column": 51 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "extra": { + "parenthesizedArgument": false + } + }, + { + "type": "MemberExpression", + "start": 7145, + "end": 7156, + "loc": { + "start": { + "line": 331, + "column": 53 + }, + "end": { + "line": 331, + "column": 64 + } + }, + "object": { + "type": "ThisExpression", + "start": 7145, + "end": 7149, + "loc": { + "start": { + "line": 331, + "column": 53 + }, + "end": { + "line": 331, + "column": 57 + } + } + }, + "property": { + "type": "Identifier", + "start": 7150, + "end": 7156, + "loc": { + "start": { + "line": 331, + "column": 58 + }, + "end": { + "line": 331, + "column": 64 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 7164, + "end": 7266, + "loc": { + "start": { + "line": 334, + "column": 1 + }, + "end": { + "line": 337, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 7164, + "end": 7170, + "loc": { + "start": { + "line": 334, + "column": 1 + }, + "end": { + "line": 334, + "column": 7 + }, + "identifierName": "negate" + }, + "name": "negate" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 7173, + "end": 7266, + "loc": { + "start": { + "line": 334, + "column": 10 + }, + "end": { + "line": 337, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 7229, + "end": 7263, + "loc": { + "start": { + "line": 336, + "column": 2 + }, + "end": { + "line": 336, + "column": 36 + } + }, + "argument": { + "type": "CallExpression", + "start": 7236, + "end": 7262, + "loc": { + "start": { + "line": 336, + "column": 9 + }, + "end": { + "line": 336, + "column": 35 + } + }, + "callee": { + "type": "MemberExpression", + "start": 7236, + "end": 7256, + "loc": { + "start": { + "line": 336, + "column": 9 + }, + "end": { + "line": 336, + "column": 29 + } + }, + "object": { + "type": "CallExpression", + "start": 7236, + "end": 7251, + "loc": { + "start": { + "line": 336, + "column": 9 + }, + "end": { + "line": 336, + "column": 24 + } + }, + "callee": { + "type": "MemberExpression", + "start": 7236, + "end": 7249, + "loc": { + "start": { + "line": 336, + "column": 9 + }, + "end": { + "line": 336, + "column": 22 + } + }, + "object": { + "type": "ThisExpression", + "start": 7236, + "end": 7240, + "loc": { + "start": { + "line": 336, + "column": 9 + }, + "end": { + "line": 336, + "column": 13 + } + }, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 7241, + "end": 7249, + "loc": { + "start": { + "line": 336, + "column": 14 + }, + "end": { + "line": 336, + "column": 22 + }, + "identifierName": "opposite" + }, + "name": "opposite" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [], + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 7252, + "end": 7256, + "loc": { + "start": { + "line": 336, + "column": 25 + }, + "end": { + "line": 336, + "column": 29 + }, + "identifierName": "move" + }, + "name": "move" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "ThisExpression", + "start": 7257, + "end": 7261, + "loc": { + "start": { + "line": 336, + "column": 30 + }, + "end": { + "line": 336, + "column": 34 + } + } + } + ], + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 7177, + "end": 7226, + "loc": { + "start": { + "line": 335, + "column": 2 + }, + "end": { + "line": 335, + "column": 51 + } + } + } + ] + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 7269, + "end": 7331, + "loc": { + "start": { + "line": 339, + "column": 1 + }, + "end": { + "line": 341, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 7269, + "end": 7272, + "loc": { + "start": { + "line": 339, + "column": 1 + }, + "end": { + "line": 339, + "column": 4 + }, + "identifierName": "abs" + }, + "name": "abs" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 7275, + "end": 7331, + "loc": { + "start": { + "line": 339, + "column": 7 + }, + "end": { + "line": 341, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 7279, + "end": 7328, + "loc": { + "start": { + "line": 340, + "column": 2 + }, + "end": { + "line": 340, + "column": 51 + } + }, + "argument": { + "type": "ConditionalExpression", + "start": 7286, + "end": 7327, + "loc": { + "start": { + "line": 340, + "column": 9 + }, + "end": { + "line": 340, + "column": 50 + } + }, + "test": { + "type": "BinaryExpression", + "start": 7286, + "end": 7302, + "loc": { + "start": { + "line": 340, + "column": 9 + }, + "end": { + "line": 340, + "column": 25 + } + }, + "left": { + "type": "CallExpression", + "start": 7286, + "end": 7297, + "loc": { + "start": { + "line": 340, + "column": 9 + }, + "end": { + "line": 340, + "column": 20 + } + }, + "callee": { + "type": "MemberExpression", + "start": 7286, + "end": 7295, + "loc": { + "start": { + "line": 340, + "column": 9 + }, + "end": { + "line": 340, + "column": 18 + } + }, + "object": { + "type": "ThisExpression", + "start": 7286, + "end": 7290, + "loc": { + "start": { + "line": 340, + "column": 9 + }, + "end": { + "line": 340, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 7291, + "end": 7295, + "loc": { + "start": { + "line": 340, + "column": 14 + }, + "end": { + "line": 340, + "column": 18 + }, + "identifierName": "sign" + }, + "name": "sign" + }, + "computed": false + }, + "arguments": [] + }, + "operator": ">=", + "right": { + "type": "NumericLiteral", + "start": 7301, + "end": 7302, + "loc": { + "start": { + "line": 340, + "column": 24 + }, + "end": { + "line": 340, + "column": 25 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + }, + "consequent": { + "type": "ThisExpression", + "start": 7305, + "end": 7309, + "loc": { + "start": { + "line": 340, + "column": 28 + }, + "end": { + "line": 340, + "column": 32 + } + } + }, + "alternate": { + "type": "CallExpression", + "start": 7312, + "end": 7327, + "loc": { + "start": { + "line": 340, + "column": 35 + }, + "end": { + "line": 340, + "column": 50 + } + }, + "callee": { + "type": "MemberExpression", + "start": 7312, + "end": 7325, + "loc": { + "start": { + "line": 340, + "column": 35 + }, + "end": { + "line": 340, + "column": 48 + } + }, + "object": { + "type": "ThisExpression", + "start": 7312, + "end": 7316, + "loc": { + "start": { + "line": 340, + "column": 35 + }, + "end": { + "line": 340, + "column": 39 + } + } + }, + "property": { + "type": "Identifier", + "start": 7317, + "end": 7325, + "loc": { + "start": { + "line": 340, + "column": 40 + }, + "end": { + "line": 340, + "column": 48 + }, + "identifierName": "opposite" + }, + "name": "opposite" + }, + "computed": false + }, + "arguments": [] + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 7334, + "end": 7377, + "loc": { + "start": { + "line": 343, + "column": 1 + }, + "end": { + "line": 345, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 7334, + "end": 7338, + "loc": { + "start": { + "line": 343, + "column": 1 + }, + "end": { + "line": 343, + "column": 5 + }, + "identifierName": "iabs" + }, + "name": "iabs" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 7341, + "end": 7377, + "loc": { + "start": { + "line": 343, + "column": 8 + }, + "end": { + "line": 345, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 7345, + "end": 7374, + "loc": { + "start": { + "line": 344, + "column": 2 + }, + "end": { + "line": 344, + "column": 31 + } + }, + "argument": { + "type": "CallExpression", + "start": 7352, + "end": 7373, + "loc": { + "start": { + "line": 344, + "column": 9 + }, + "end": { + "line": 344, + "column": 30 + } + }, + "callee": { + "type": "MemberExpression", + "start": 7352, + "end": 7367, + "loc": { + "start": { + "line": 344, + "column": 9 + }, + "end": { + "line": 344, + "column": 24 + } + }, + "object": { + "type": "CallExpression", + "start": 7352, + "end": 7362, + "loc": { + "start": { + "line": 344, + "column": 9 + }, + "end": { + "line": 344, + "column": 19 + } + }, + "callee": { + "type": "MemberExpression", + "start": 7352, + "end": 7360, + "loc": { + "start": { + "line": 344, + "column": 9 + }, + "end": { + "line": 344, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 7352, + "end": 7356, + "loc": { + "start": { + "line": 344, + "column": 9 + }, + "end": { + "line": 344, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 7357, + "end": 7360, + "loc": { + "start": { + "line": 344, + "column": 14 + }, + "end": { + "line": 344, + "column": 17 + }, + "identifierName": "abs" + }, + "name": "abs" + }, + "computed": false + }, + "arguments": [] + }, + "property": { + "type": "Identifier", + "start": 7363, + "end": 7367, + "loc": { + "start": { + "line": 344, + "column": 20 + }, + "end": { + "line": 344, + "column": 24 + }, + "identifierName": "move" + }, + "name": "move" + }, + "computed": false + }, + "arguments": [ + { + "type": "ThisExpression", + "start": 7368, + "end": 7372, + "loc": { + "start": { + "line": 344, + "column": 25 + }, + "end": { + "line": 344, + "column": 29 + } + } + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 7380, + "end": 7448, + "loc": { + "start": { + "line": 347, + "column": 1 + }, + "end": { + "line": 349, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 7380, + "end": 7384, + "loc": { + "start": { + "line": 347, + "column": 1 + }, + "end": { + "line": 347, + "column": 5 + }, + "identifierName": "sign" + }, + "name": "sign" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 7387, + "end": 7448, + "loc": { + "start": { + "line": 347, + "column": 8 + }, + "end": { + "line": 349, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 7391, + "end": 7445, + "loc": { + "start": { + "line": 348, + "column": 2 + }, + "end": { + "line": 348, + "column": 56 + } + }, + "argument": { + "type": "ConditionalExpression", + "start": 7398, + "end": 7444, + "loc": { + "start": { + "line": 348, + "column": 9 + }, + "end": { + "line": 348, + "column": 55 + } + }, + "test": { + "type": "CallExpression", + "start": 7398, + "end": 7411, + "loc": { + "start": { + "line": 348, + "column": 9 + }, + "end": { + "line": 348, + "column": 22 + } + }, + "callee": { + "type": "MemberExpression", + "start": 7398, + "end": 7409, + "loc": { + "start": { + "line": 348, + "column": 9 + }, + "end": { + "line": 348, + "column": 20 + } + }, + "object": { + "type": "ThisExpression", + "start": 7398, + "end": 7402, + "loc": { + "start": { + "line": 348, + "column": 9 + }, + "end": { + "line": 348, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 7403, + "end": 7409, + "loc": { + "start": { + "line": 348, + "column": 14 + }, + "end": { + "line": 348, + "column": 20 + }, + "identifierName": "iszero" + }, + "name": "iszero" + }, + "computed": false + }, + "arguments": [] + }, + "consequent": { + "type": "NumericLiteral", + "start": 7414, + "end": 7415, + "loc": { + "start": { + "line": 348, + "column": 25 + }, + "end": { + "line": 348, + "column": 26 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + "alternate": { + "type": "ConditionalExpression", + "start": 7418, + "end": 7444, + "loc": { + "start": { + "line": 348, + "column": 29 + }, + "end": { + "line": 348, + "column": 55 + } + }, + "test": { + "type": "MemberExpression", + "start": 7418, + "end": 7435, + "loc": { + "start": { + "line": 348, + "column": 29 + }, + "end": { + "line": 348, + "column": 46 + } + }, + "object": { + "type": "ThisExpression", + "start": 7418, + "end": 7422, + "loc": { + "start": { + "line": 348, + "column": 29 + }, + "end": { + "line": 348, + "column": 33 + } + } + }, + "property": { + "type": "Identifier", + "start": 7423, + "end": 7435, + "loc": { + "start": { + "line": 348, + "column": 34 + }, + "end": { + "line": 348, + "column": 46 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "consequent": { + "type": "UnaryExpression", + "start": 7438, + "end": 7440, + "loc": { + "start": { + "line": 348, + "column": 49 + }, + "end": { + "line": 348, + "column": 51 + } + }, + "operator": "-", + "prefix": true, + "argument": { + "type": "NumericLiteral", + "start": 7439, + "end": 7440, + "loc": { + "start": { + "line": 348, + "column": 50 + }, + "end": { + "line": 348, + "column": 51 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + "extra": { + "parenthesizedArgument": false + } + }, + "alternate": { + "type": "NumericLiteral", + "start": 7443, + "end": 7444, + "loc": { + "start": { + "line": 348, + "column": 54 + }, + "end": { + "line": 348, + "column": 55 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + } + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 7451, + "end": 7513, + "loc": { + "start": { + "line": 351, + "column": 1 + }, + "end": { + "line": 353, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 7451, + "end": 7457, + "loc": { + "start": { + "line": 351, + "column": 1 + }, + "end": { + "line": 351, + "column": 7 + }, + "identifierName": "iszero" + }, + "name": "iszero" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 7460, + "end": 7513, + "loc": { + "start": { + "line": 351, + "column": 10 + }, + "end": { + "line": 353, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 7464, + "end": 7510, + "loc": { + "start": { + "line": 352, + "column": 2 + }, + "end": { + "line": 352, + "column": 48 + } + }, + "argument": { + "type": "CallExpression", + "start": 7471, + "end": 7509, + "loc": { + "start": { + "line": 352, + "column": 9 + }, + "end": { + "line": 352, + "column": 47 + } + }, + "callee": { + "type": "Identifier", + "start": 7471, + "end": 7473, + "loc": { + "start": { + "line": 352, + "column": 9 + }, + "end": { + "line": 352, + "column": 11 + }, + "identifierName": "jz" + }, + "name": "jz" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 7474, + "end": 7485, + "loc": { + "start": { + "line": 352, + "column": 12 + }, + "end": { + "line": 352, + "column": 23 + } + }, + "object": { + "type": "ThisExpression", + "start": 7474, + "end": 7478, + "loc": { + "start": { + "line": 352, + "column": 12 + }, + "end": { + "line": 352, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 7479, + "end": 7485, + "loc": { + "start": { + "line": 352, + "column": 17 + }, + "end": { + "line": 352, + "column": 23 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + }, + { + "type": "NumericLiteral", + "start": 7487, + "end": 7488, + "loc": { + "start": { + "line": 352, + "column": 25 + }, + "end": { + "line": 352, + "column": 26 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 7490, + "end": 7508, + "loc": { + "start": { + "line": 352, + "column": 28 + }, + "end": { + "line": 352, + "column": 46 + } + }, + "object": { + "type": "MemberExpression", + "start": 7490, + "end": 7501, + "loc": { + "start": { + "line": 352, + "column": 28 + }, + "end": { + "line": 352, + "column": 39 + } + }, + "object": { + "type": "ThisExpression", + "start": 7490, + "end": 7494, + "loc": { + "start": { + "line": 352, + "column": 28 + }, + "end": { + "line": 352, + "column": 32 + } + } + }, + "property": { + "type": "Identifier", + "start": 7495, + "end": 7501, + "loc": { + "start": { + "line": 352, + "column": 33 + }, + "end": { + "line": 352, + "column": 39 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 7502, + "end": 7508, + "loc": { + "start": { + "line": 352, + "column": 40 + }, + "end": { + "line": 352, + "column": 46 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 7516, + "end": 7627, + "loc": { + "start": { + "line": 355, + "column": 1 + }, + "end": { + "line": 358, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 7516, + "end": 7521, + "loc": { + "start": { + "line": 355, + "column": 1 + }, + "end": { + "line": 355, + "column": 6 + }, + "identifierName": "isone" + }, + "name": "isone" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 7524, + "end": 7627, + "loc": { + "start": { + "line": 355, + "column": 9 + }, + "end": { + "line": 358, + "column": 2 + } + }, + "body": [ + { + "type": "IfStatement", + "start": 7528, + "end": 7564, + "loc": { + "start": { + "line": 356, + "column": 2 + }, + "end": { + "line": 356, + "column": 38 + } + }, + "test": { + "type": "MemberExpression", + "start": 7532, + "end": 7549, + "loc": { + "start": { + "line": 356, + "column": 6 + }, + "end": { + "line": 356, + "column": 23 + } + }, + "object": { + "type": "ThisExpression", + "start": 7532, + "end": 7536, + "loc": { + "start": { + "line": 356, + "column": 6 + }, + "end": { + "line": 356, + "column": 10 + } + } + }, + "property": { + "type": "Identifier", + "start": 7537, + "end": 7549, + "loc": { + "start": { + "line": 356, + "column": 11 + }, + "end": { + "line": 356, + "column": 23 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "consequent": { + "type": "ReturnStatement", + "start": 7551, + "end": 7564, + "loc": { + "start": { + "line": 356, + "column": 25 + }, + "end": { + "line": 356, + "column": 38 + } + }, + "argument": { + "type": "BooleanLiteral", + "start": 7558, + "end": 7563, + "loc": { + "start": { + "line": 356, + "column": 32 + }, + "end": { + "line": 356, + "column": 37 + } + }, + "value": false + } + }, + "alternate": null + }, + { + "type": "ReturnStatement", + "start": 7567, + "end": 7624, + "loc": { + "start": { + "line": 357, + "column": 2 + }, + "end": { + "line": 357, + "column": 59 + } + }, + "argument": { + "type": "CallExpression", + "start": 7574, + "end": 7623, + "loc": { + "start": { + "line": 357, + "column": 9 + }, + "end": { + "line": 357, + "column": 58 + } + }, + "callee": { + "type": "Identifier", + "start": 7574, + "end": 7576, + "loc": { + "start": { + "line": 357, + "column": 9 + }, + "end": { + "line": 357, + "column": 11 + }, + "identifierName": "eq" + }, + "name": "eq" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 7577, + "end": 7588, + "loc": { + "start": { + "line": 357, + "column": 12 + }, + "end": { + "line": 357, + "column": 23 + } + }, + "object": { + "type": "ThisExpression", + "start": 7577, + "end": 7581, + "loc": { + "start": { + "line": 357, + "column": 12 + }, + "end": { + "line": 357, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 7582, + "end": 7588, + "loc": { + "start": { + "line": 357, + "column": 17 + }, + "end": { + "line": 357, + "column": 23 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + }, + { + "type": "NumericLiteral", + "start": 7590, + "end": 7591, + "loc": { + "start": { + "line": 357, + "column": 25 + }, + "end": { + "line": 357, + "column": 26 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 7593, + "end": 7611, + "loc": { + "start": { + "line": 357, + "column": 28 + }, + "end": { + "line": 357, + "column": 46 + } + }, + "object": { + "type": "MemberExpression", + "start": 7593, + "end": 7604, + "loc": { + "start": { + "line": 357, + "column": 28 + }, + "end": { + "line": 357, + "column": 39 + } + }, + "object": { + "type": "ThisExpression", + "start": 7593, + "end": 7597, + "loc": { + "start": { + "line": 357, + "column": 28 + }, + "end": { + "line": 357, + "column": 32 + } + } + }, + "property": { + "type": "Identifier", + "start": 7598, + "end": 7604, + "loc": { + "start": { + "line": 357, + "column": 33 + }, + "end": { + "line": 357, + "column": 39 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 7605, + "end": 7611, + "loc": { + "start": { + "line": 357, + "column": 40 + }, + "end": { + "line": 357, + "column": 46 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + { + "type": "ArrayExpression", + "start": 7613, + "end": 7616, + "loc": { + "start": { + "line": 357, + "column": 48 + }, + "end": { + "line": 357, + "column": 51 + } + }, + "elements": [ + { + "type": "NumericLiteral", + "start": 7614, + "end": 7615, + "loc": { + "start": { + "line": 357, + "column": 49 + }, + "end": { + "line": 357, + "column": 50 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + } + ] + }, + { + "type": "NumericLiteral", + "start": 7618, + "end": 7619, + "loc": { + "start": { + "line": 357, + "column": 53 + }, + "end": { + "line": 357, + "column": 54 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "NumericLiteral", + "start": 7621, + "end": 7622, + "loc": { + "start": { + "line": 357, + "column": 56 + }, + "end": { + "line": 357, + "column": 57 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 7630, + "end": 7671, + "loc": { + "start": { + "line": 360, + "column": 1 + }, + "end": { + "line": 362, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 7630, + "end": 7639, + "loc": { + "start": { + "line": 360, + "column": 1 + }, + "end": { + "line": 360, + "column": 10 + }, + "identifierName": "isnonzero" + }, + "name": "isnonzero" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 7642, + "end": 7671, + "loc": { + "start": { + "line": 360, + "column": 13 + }, + "end": { + "line": 362, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 7646, + "end": 7668, + "loc": { + "start": { + "line": 361, + "column": 2 + }, + "end": { + "line": 361, + "column": 24 + } + }, + "argument": { + "type": "UnaryExpression", + "start": 7653, + "end": 7667, + "loc": { + "start": { + "line": 361, + "column": 9 + }, + "end": { + "line": 361, + "column": 23 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "CallExpression", + "start": 7654, + "end": 7667, + "loc": { + "start": { + "line": 361, + "column": 10 + }, + "end": { + "line": 361, + "column": 23 + } + }, + "callee": { + "type": "MemberExpression", + "start": 7654, + "end": 7665, + "loc": { + "start": { + "line": 361, + "column": 10 + }, + "end": { + "line": 361, + "column": 21 + } + }, + "object": { + "type": "ThisExpression", + "start": 7654, + "end": 7658, + "loc": { + "start": { + "line": 361, + "column": 10 + }, + "end": { + "line": 361, + "column": 14 + } + } + }, + "property": { + "type": "Identifier", + "start": 7659, + "end": 7665, + "loc": { + "start": { + "line": 361, + "column": 15 + }, + "end": { + "line": 361, + "column": 21 + }, + "identifierName": "iszero" + }, + "name": "iszero" + }, + "computed": false + }, + "arguments": [] + }, + "extra": { + "parenthesizedArgument": false + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 7674, + "end": 7726, + "loc": { + "start": { + "line": 364, + "column": 1 + }, + "end": { + "line": 366, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 7674, + "end": 7684, + "loc": { + "start": { + "line": 364, + "column": 1 + }, + "end": { + "line": 364, + "column": 11 + }, + "identifierName": "isnegative" + }, + "name": "isnegative" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 7687, + "end": 7726, + "loc": { + "start": { + "line": 364, + "column": 14 + }, + "end": { + "line": 366, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 7691, + "end": 7723, + "loc": { + "start": { + "line": 365, + "column": 2 + }, + "end": { + "line": 365, + "column": 34 + } + }, + "argument": { + "type": "BinaryExpression", + "start": 7698, + "end": 7722, + "loc": { + "start": { + "line": 365, + "column": 9 + }, + "end": { + "line": 365, + "column": 33 + } + }, + "left": { + "type": "MemberExpression", + "start": 7698, + "end": 7715, + "loc": { + "start": { + "line": 365, + "column": 9 + }, + "end": { + "line": 365, + "column": 26 + } + }, + "object": { + "type": "ThisExpression", + "start": 7698, + "end": 7702, + "loc": { + "start": { + "line": 365, + "column": 9 + }, + "end": { + "line": 365, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 7703, + "end": 7715, + "loc": { + "start": { + "line": 365, + "column": 14 + }, + "end": { + "line": 365, + "column": 26 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "operator": "===", + "right": { + "type": "UnaryExpression", + "start": 7720, + "end": 7722, + "loc": { + "start": { + "line": 365, + "column": 31 + }, + "end": { + "line": 365, + "column": 33 + } + }, + "operator": "-", + "prefix": true, + "argument": { + "type": "NumericLiteral", + "start": 7721, + "end": 7722, + "loc": { + "start": { + "line": 365, + "column": 32 + }, + "end": { + "line": 365, + "column": 33 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + "extra": { + "parenthesizedArgument": false + } + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 7729, + "end": 7772, + "loc": { + "start": { + "line": 368, + "column": 1 + }, + "end": { + "line": 370, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 7729, + "end": 7739, + "loc": { + "start": { + "line": 368, + "column": 1 + }, + "end": { + "line": 368, + "column": 11 + }, + "identifierName": "ispositive" + }, + "name": "ispositive" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 7742, + "end": 7772, + "loc": { + "start": { + "line": 368, + "column": 14 + }, + "end": { + "line": 370, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 7746, + "end": 7769, + "loc": { + "start": { + "line": 369, + "column": 2 + }, + "end": { + "line": 369, + "column": 25 + } + }, + "argument": { + "type": "BinaryExpression", + "start": 7753, + "end": 7768, + "loc": { + "start": { + "line": 369, + "column": 9 + }, + "end": { + "line": 369, + "column": 24 + } + }, + "left": { + "type": "CallExpression", + "start": 7753, + "end": 7764, + "loc": { + "start": { + "line": 369, + "column": 9 + }, + "end": { + "line": 369, + "column": 20 + } + }, + "callee": { + "type": "MemberExpression", + "start": 7753, + "end": 7762, + "loc": { + "start": { + "line": 369, + "column": 9 + }, + "end": { + "line": 369, + "column": 18 + } + }, + "object": { + "type": "ThisExpression", + "start": 7753, + "end": 7757, + "loc": { + "start": { + "line": 369, + "column": 9 + }, + "end": { + "line": 369, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 7758, + "end": 7762, + "loc": { + "start": { + "line": 369, + "column": 14 + }, + "end": { + "line": 369, + "column": 18 + }, + "identifierName": "sign" + }, + "name": "sign" + }, + "computed": false + }, + "arguments": [] + }, + "operator": ">", + "right": { + "type": "NumericLiteral", + "start": 7767, + "end": 7768, + "loc": { + "start": { + "line": 369, + "column": 23 + }, + "end": { + "line": 369, + "column": 24 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 7775, + "end": 7824, + "loc": { + "start": { + "line": 372, + "column": 1 + }, + "end": { + "line": 374, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 7775, + "end": 7788, + "loc": { + "start": { + "line": 372, + "column": 1 + }, + "end": { + "line": 372, + "column": 14 + }, + "identifierName": "isnonnegative" + }, + "name": "isnonnegative" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 7791, + "end": 7824, + "loc": { + "start": { + "line": 372, + "column": 17 + }, + "end": { + "line": 374, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 7795, + "end": 7821, + "loc": { + "start": { + "line": 373, + "column": 2 + }, + "end": { + "line": 373, + "column": 28 + } + }, + "argument": { + "type": "UnaryExpression", + "start": 7802, + "end": 7820, + "loc": { + "start": { + "line": 373, + "column": 9 + }, + "end": { + "line": 373, + "column": 27 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "CallExpression", + "start": 7803, + "end": 7820, + "loc": { + "start": { + "line": 373, + "column": 10 + }, + "end": { + "line": 373, + "column": 27 + } + }, + "callee": { + "type": "MemberExpression", + "start": 7803, + "end": 7818, + "loc": { + "start": { + "line": 373, + "column": 10 + }, + "end": { + "line": 373, + "column": 25 + } + }, + "object": { + "type": "ThisExpression", + "start": 7803, + "end": 7807, + "loc": { + "start": { + "line": 373, + "column": 10 + }, + "end": { + "line": 373, + "column": 14 + } + } + }, + "property": { + "type": "Identifier", + "start": 7808, + "end": 7818, + "loc": { + "start": { + "line": 373, + "column": 15 + }, + "end": { + "line": 373, + "column": 25 + }, + "identifierName": "isnegative" + }, + "name": "isnegative" + }, + "computed": false + }, + "arguments": [] + }, + "extra": { + "parenthesizedArgument": false + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 7827, + "end": 7876, + "loc": { + "start": { + "line": 376, + "column": 1 + }, + "end": { + "line": 378, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 7827, + "end": 7840, + "loc": { + "start": { + "line": 376, + "column": 1 + }, + "end": { + "line": 376, + "column": 14 + }, + "identifierName": "isnonpositive" + }, + "name": "isnonpositive" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 7843, + "end": 7876, + "loc": { + "start": { + "line": 376, + "column": 17 + }, + "end": { + "line": 378, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 7847, + "end": 7873, + "loc": { + "start": { + "line": 377, + "column": 2 + }, + "end": { + "line": 377, + "column": 28 + } + }, + "argument": { + "type": "UnaryExpression", + "start": 7854, + "end": 7872, + "loc": { + "start": { + "line": 377, + "column": 9 + }, + "end": { + "line": 377, + "column": 27 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "CallExpression", + "start": 7855, + "end": 7872, + "loc": { + "start": { + "line": 377, + "column": 10 + }, + "end": { + "line": 377, + "column": 27 + } + }, + "callee": { + "type": "MemberExpression", + "start": 7855, + "end": 7870, + "loc": { + "start": { + "line": 377, + "column": 10 + }, + "end": { + "line": 377, + "column": 25 + } + }, + "object": { + "type": "ThisExpression", + "start": 7855, + "end": 7859, + "loc": { + "start": { + "line": 377, + "column": 10 + }, + "end": { + "line": 377, + "column": 14 + } + } + }, + "property": { + "type": "Identifier", + "start": 7860, + "end": 7870, + "loc": { + "start": { + "line": 377, + "column": 15 + }, + "end": { + "line": 377, + "column": 25 + }, + "identifierName": "ispositive" + }, + "name": "ispositive" + }, + "computed": false + }, + "arguments": [] + }, + "extra": { + "parenthesizedArgument": false + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 7879, + "end": 8026, + "loc": { + "start": { + "line": 380, + "column": 1 + }, + "end": { + "line": 384, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 7879, + "end": 7885, + "loc": { + "start": { + "line": 380, + "column": 1 + }, + "end": { + "line": 380, + "column": 7 + }, + "identifierName": "parity" + }, + "name": "parity" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 7888, + "end": 8026, + "loc": { + "start": { + "line": 380, + "column": 10 + }, + "end": { + "line": 384, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 8003, + "end": 8023, + "loc": { + "start": { + "line": 383, + "column": 2 + }, + "end": { + "line": 383, + "column": 22 + } + }, + "argument": { + "type": "CallExpression", + "start": 8010, + "end": 8022, + "loc": { + "start": { + "line": 383, + "column": 9 + }, + "end": { + "line": 383, + "column": 21 + } + }, + "callee": { + "type": "MemberExpression", + "start": 8010, + "end": 8019, + "loc": { + "start": { + "line": 383, + "column": 9 + }, + "end": { + "line": 383, + "column": 18 + } + }, + "object": { + "type": "ThisExpression", + "start": 8010, + "end": 8014, + "loc": { + "start": { + "line": 383, + "column": 9 + }, + "end": { + "line": 383, + "column": 13 + } + }, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 8015, + "end": 8019, + "loc": { + "start": { + "line": 383, + "column": 14 + }, + "end": { + "line": 383, + "column": 18 + }, + "identifierName": "modn" + }, + "name": "modn" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "NumericLiteral", + "start": 8020, + "end": 8021, + "loc": { + "start": { + "line": 383, + "column": 19 + }, + "end": { + "line": 383, + "column": 20 + } + }, + "extra": { + "rawValue": 2, + "raw": "2" + }, + "value": 2 + } + ], + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " TODO optimize this, there is a much faster way to test for parity", + "start": 7892, + "end": 7960, + "loc": { + "start": { + "line": 381, + "column": 2 + }, + "end": { + "line": 381, + "column": 70 + } + } + }, + { + "type": "CommentLine", + "value": " when the base is a multiple of two", + "start": 7963, + "end": 8000, + "loc": { + "start": { + "line": 382, + "column": 2 + }, + "end": { + "line": 382, + "column": 39 + } + } + } + ] + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 8029, + "end": 8075, + "loc": { + "start": { + "line": 386, + "column": 1 + }, + "end": { + "line": 388, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 8029, + "end": 8035, + "loc": { + "start": { + "line": 386, + "column": 1 + }, + "end": { + "line": 386, + "column": 7 + }, + "identifierName": "iseven" + }, + "name": "iseven" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 8038, + "end": 8075, + "loc": { + "start": { + "line": 386, + "column": 10 + }, + "end": { + "line": 388, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 8042, + "end": 8072, + "loc": { + "start": { + "line": 387, + "column": 2 + }, + "end": { + "line": 387, + "column": 32 + } + }, + "argument": { + "type": "CallExpression", + "start": 8049, + "end": 8071, + "loc": { + "start": { + "line": 387, + "column": 9 + }, + "end": { + "line": 387, + "column": 31 + } + }, + "callee": { + "type": "MemberExpression", + "start": 8049, + "end": 8069, + "loc": { + "start": { + "line": 387, + "column": 9 + }, + "end": { + "line": 387, + "column": 29 + } + }, + "object": { + "type": "CallExpression", + "start": 8049, + "end": 8062, + "loc": { + "start": { + "line": 387, + "column": 9 + }, + "end": { + "line": 387, + "column": 22 + } + }, + "callee": { + "type": "MemberExpression", + "start": 8049, + "end": 8060, + "loc": { + "start": { + "line": 387, + "column": 9 + }, + "end": { + "line": 387, + "column": 20 + } + }, + "object": { + "type": "ThisExpression", + "start": 8049, + "end": 8053, + "loc": { + "start": { + "line": 387, + "column": 9 + }, + "end": { + "line": 387, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 8054, + "end": 8060, + "loc": { + "start": { + "line": 387, + "column": 14 + }, + "end": { + "line": 387, + "column": 20 + }, + "identifierName": "parity" + }, + "name": "parity" + }, + "computed": false + }, + "arguments": [] + }, + "property": { + "type": "Identifier", + "start": 8063, + "end": 8069, + "loc": { + "start": { + "line": 387, + "column": 23 + }, + "end": { + "line": 387, + "column": 29 + }, + "identifierName": "iszero" + }, + "name": "iszero" + }, + "computed": false + }, + "arguments": [] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 8078, + "end": 8115, + "loc": { + "start": { + "line": 390, + "column": 1 + }, + "end": { + "line": 392, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 8078, + "end": 8083, + "loc": { + "start": { + "line": 390, + "column": 1 + }, + "end": { + "line": 390, + "column": 6 + }, + "identifierName": "isodd" + }, + "name": "isodd" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 8086, + "end": 8115, + "loc": { + "start": { + "line": 390, + "column": 9 + }, + "end": { + "line": 392, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 8090, + "end": 8112, + "loc": { + "start": { + "line": 391, + "column": 2 + }, + "end": { + "line": 391, + "column": 24 + } + }, + "argument": { + "type": "UnaryExpression", + "start": 8097, + "end": 8111, + "loc": { + "start": { + "line": 391, + "column": 9 + }, + "end": { + "line": 391, + "column": 23 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "CallExpression", + "start": 8098, + "end": 8111, + "loc": { + "start": { + "line": 391, + "column": 10 + }, + "end": { + "line": 391, + "column": 23 + } + }, + "callee": { + "type": "MemberExpression", + "start": 8098, + "end": 8109, + "loc": { + "start": { + "line": 391, + "column": 10 + }, + "end": { + "line": 391, + "column": 21 + } + }, + "object": { + "type": "ThisExpression", + "start": 8098, + "end": 8102, + "loc": { + "start": { + "line": 391, + "column": 10 + }, + "end": { + "line": 391, + "column": 14 + } + } + }, + "property": { + "type": "Identifier", + "start": 8103, + "end": 8109, + "loc": { + "start": { + "line": 391, + "column": 15 + }, + "end": { + "line": 391, + "column": 21 + }, + "identifierName": "iseven" + }, + "name": "iseven" + }, + "computed": false + }, + "arguments": [] + }, + "extra": { + "parenthesizedArgument": false + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 8118, + "end": 8155, + "loc": { + "start": { + "line": 394, + "column": 1 + }, + "end": { + "line": 396, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 8118, + "end": 8121, + "loc": { + "start": { + "line": 394, + "column": 1 + }, + "end": { + "line": 394, + "column": 4 + }, + "identifierName": "bin" + }, + "name": "bin" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 8124, + "end": 8155, + "loc": { + "start": { + "line": 394, + "column": 7 + }, + "end": { + "line": 396, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 8128, + "end": 8152, + "loc": { + "start": { + "line": 395, + "column": 2 + }, + "end": { + "line": 395, + "column": 26 + } + }, + "argument": { + "type": "CallExpression", + "start": 8135, + "end": 8151, + "loc": { + "start": { + "line": 395, + "column": 9 + }, + "end": { + "line": 395, + "column": 25 + } + }, + "callee": { + "type": "MemberExpression", + "start": 8135, + "end": 8148, + "loc": { + "start": { + "line": 395, + "column": 9 + }, + "end": { + "line": 395, + "column": 22 + } + }, + "object": { + "type": "ThisExpression", + "start": 8135, + "end": 8139, + "loc": { + "start": { + "line": 395, + "column": 9 + }, + "end": { + "line": 395, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 8140, + "end": 8148, + "loc": { + "start": { + "line": 395, + "column": 14 + }, + "end": { + "line": 395, + "column": 22 + }, + "identifierName": "toString" + }, + "name": "toString" + }, + "computed": false + }, + "arguments": [ + { + "type": "NumericLiteral", + "start": 8149, + "end": 8150, + "loc": { + "start": { + "line": 395, + "column": 23 + }, + "end": { + "line": 395, + "column": 24 + } + }, + "extra": { + "rawValue": 2, + "raw": "2" + }, + "value": 2 + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 8158, + "end": 8195, + "loc": { + "start": { + "line": 398, + "column": 1 + }, + "end": { + "line": 400, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 8158, + "end": 8161, + "loc": { + "start": { + "line": 398, + "column": 1 + }, + "end": { + "line": 398, + "column": 4 + }, + "identifierName": "oct" + }, + "name": "oct" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 8164, + "end": 8195, + "loc": { + "start": { + "line": 398, + "column": 7 + }, + "end": { + "line": 400, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 8168, + "end": 8192, + "loc": { + "start": { + "line": 399, + "column": 2 + }, + "end": { + "line": 399, + "column": 26 + } + }, + "argument": { + "type": "CallExpression", + "start": 8175, + "end": 8191, + "loc": { + "start": { + "line": 399, + "column": 9 + }, + "end": { + "line": 399, + "column": 25 + } + }, + "callee": { + "type": "MemberExpression", + "start": 8175, + "end": 8188, + "loc": { + "start": { + "line": 399, + "column": 9 + }, + "end": { + "line": 399, + "column": 22 + } + }, + "object": { + "type": "ThisExpression", + "start": 8175, + "end": 8179, + "loc": { + "start": { + "line": 399, + "column": 9 + }, + "end": { + "line": 399, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 8180, + "end": 8188, + "loc": { + "start": { + "line": 399, + "column": 14 + }, + "end": { + "line": 399, + "column": 22 + }, + "identifierName": "toString" + }, + "name": "toString" + }, + "computed": false + }, + "arguments": [ + { + "type": "NumericLiteral", + "start": 8189, + "end": 8190, + "loc": { + "start": { + "line": 399, + "column": 23 + }, + "end": { + "line": 399, + "column": 24 + } + }, + "extra": { + "rawValue": 8, + "raw": "8" + }, + "value": 8 + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 8198, + "end": 8236, + "loc": { + "start": { + "line": 402, + "column": 1 + }, + "end": { + "line": 404, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 8198, + "end": 8201, + "loc": { + "start": { + "line": 402, + "column": 1 + }, + "end": { + "line": 402, + "column": 4 + }, + "identifierName": "hex" + }, + "name": "hex" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 8204, + "end": 8236, + "loc": { + "start": { + "line": 402, + "column": 7 + }, + "end": { + "line": 404, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 8208, + "end": 8233, + "loc": { + "start": { + "line": 403, + "column": 2 + }, + "end": { + "line": 403, + "column": 27 + } + }, + "argument": { + "type": "CallExpression", + "start": 8215, + "end": 8232, + "loc": { + "start": { + "line": 403, + "column": 9 + }, + "end": { + "line": 403, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 8215, + "end": 8228, + "loc": { + "start": { + "line": 403, + "column": 9 + }, + "end": { + "line": 403, + "column": 22 + } + }, + "object": { + "type": "ThisExpression", + "start": 8215, + "end": 8219, + "loc": { + "start": { + "line": 403, + "column": 9 + }, + "end": { + "line": 403, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 8220, + "end": 8228, + "loc": { + "start": { + "line": 403, + "column": 14 + }, + "end": { + "line": 403, + "column": 22 + }, + "identifierName": "toString" + }, + "name": "toString" + }, + "computed": false + }, + "arguments": [ + { + "type": "NumericLiteral", + "start": 8229, + "end": 8231, + "loc": { + "start": { + "line": 403, + "column": 23 + }, + "end": { + "line": 403, + "column": 25 + } + }, + "extra": { + "rawValue": 16, + "raw": "16" + }, + "value": 16 + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 8239, + "end": 8273, + "loc": { + "start": { + "line": 406, + "column": 1 + }, + "end": { + "line": 408, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 8239, + "end": 8245, + "loc": { + "start": { + "line": 406, + "column": 1 + }, + "end": { + "line": 406, + "column": 7 + }, + "identifierName": "toJSON" + }, + "name": "toJSON" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 8248, + "end": 8273, + "loc": { + "start": { + "line": 406, + "column": 10 + }, + "end": { + "line": 408, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 8252, + "end": 8270, + "loc": { + "start": { + "line": 407, + "column": 2 + }, + "end": { + "line": 407, + "column": 20 + } + }, + "argument": { + "type": "CallExpression", + "start": 8259, + "end": 8269, + "loc": { + "start": { + "line": 407, + "column": 9 + }, + "end": { + "line": 407, + "column": 19 + } + }, + "callee": { + "type": "MemberExpression", + "start": 8259, + "end": 8267, + "loc": { + "start": { + "line": 407, + "column": 9 + }, + "end": { + "line": 407, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 8259, + "end": 8263, + "loc": { + "start": { + "line": 407, + "column": 9 + }, + "end": { + "line": 407, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 8264, + "end": 8267, + "loc": { + "start": { + "line": 407, + "column": 14 + }, + "end": { + "line": 407, + "column": 17 + }, + "identifierName": "hex" + }, + "name": "hex" + }, + "computed": false + }, + "arguments": [] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 8276, + "end": 8525, + "loc": { + "start": { + "line": 410, + "column": 1 + }, + "end": { + "line": 420, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 8276, + "end": 8282, + "loc": { + "start": { + "line": 410, + "column": 1 + }, + "end": { + "line": 410, + "column": 7 + }, + "identifierName": "digits" + }, + "name": "digits" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "AssignmentPattern", + "start": 8283, + "end": 8310, + "loc": { + "start": { + "line": 410, + "column": 8 + }, + "end": { + "line": 410, + "column": 35 + } + }, + "left": { + "type": "Identifier", + "start": 8283, + "end": 8287, + "loc": { + "start": { + "line": 410, + "column": 8 + }, + "end": { + "line": 410, + "column": 12 + }, + "identifierName": "base" + }, + "name": "base" + }, + "right": { + "type": "Identifier", + "start": 8290, + "end": 8310, + "loc": { + "start": { + "line": 410, + "column": 15 + }, + "end": { + "line": 410, + "column": 35 + }, + "identifierName": "DEFAULT_DISPLAY_BASE" + }, + "name": "DEFAULT_DISPLAY_BASE" + } + } + ], + "body": { + "type": "BlockStatement", + "start": 8312, + "end": 8525, + "loc": { + "start": { + "line": 410, + "column": 37 + }, + "end": { + "line": 420, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 8423, + "end": 8522, + "loc": { + "start": { + "line": 413, + "column": 2 + }, + "end": { + "line": 419, + "column": 14 + } + }, + "argument": { + "type": "CallExpression", + "start": 8430, + "end": 8521, + "loc": { + "start": { + "line": 413, + "column": 9 + }, + "end": { + "line": 419, + "column": 13 + } + }, + "callee": { + "type": "MemberExpression", + "start": 8430, + "end": 8519, + "loc": { + "start": { + "line": 413, + "column": 9 + }, + "end": { + "line": 419, + "column": 11 + } + }, + "object": { + "type": "CallExpression", + "start": 8430, + "end": 8511, + "loc": { + "start": { + "line": 413, + "column": 9 + }, + "end": { + "line": 419, + "column": 3 + } + }, + "callee": { + "type": "Identifier", + "start": 8430, + "end": 8437, + "loc": { + "start": { + "line": 413, + "column": 9 + }, + "end": { + "line": 413, + "column": 16 + }, + "identifierName": "convert" + }, + "name": "convert", + "leadingComments": null + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 8442, + "end": 8452, + "loc": { + "start": { + "line": 414, + "column": 3 + }, + "end": { + "line": 414, + "column": 13 + } + }, + "object": { + "type": "ThisExpression", + "start": 8442, + "end": 8446, + "loc": { + "start": { + "line": 414, + "column": 3 + }, + "end": { + "line": 414, + "column": 7 + } + } + }, + "property": { + "type": "Identifier", + "start": 8447, + "end": 8452, + "loc": { + "start": { + "line": 414, + "column": 8 + }, + "end": { + "line": 414, + "column": 13 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 8457, + "end": 8461, + "loc": { + "start": { + "line": 415, + "column": 3 + }, + "end": { + "line": 415, + "column": 7 + }, + "identifierName": "base" + }, + "name": "base" + }, + { + "type": "MemberExpression", + "start": 8466, + "end": 8477, + "loc": { + "start": { + "line": 416, + "column": 3 + }, + "end": { + "line": 416, + "column": 14 + } + }, + "object": { + "type": "ThisExpression", + "start": 8466, + "end": 8470, + "loc": { + "start": { + "line": 416, + "column": 3 + }, + "end": { + "line": 416, + "column": 7 + } + } + }, + "property": { + "type": "Identifier", + "start": 8471, + "end": 8477, + "loc": { + "start": { + "line": 416, + "column": 8 + }, + "end": { + "line": 416, + "column": 14 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + }, + { + "type": "NumericLiteral", + "start": 8482, + "end": 8483, + "loc": { + "start": { + "line": 417, + "column": 3 + }, + "end": { + "line": 417, + "column": 4 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 8488, + "end": 8506, + "loc": { + "start": { + "line": 418, + "column": 3 + }, + "end": { + "line": 418, + "column": 21 + } + }, + "object": { + "type": "MemberExpression", + "start": 8488, + "end": 8499, + "loc": { + "start": { + "line": 418, + "column": 3 + }, + "end": { + "line": 418, + "column": 14 + } + }, + "object": { + "type": "ThisExpression", + "start": 8488, + "end": 8492, + "loc": { + "start": { + "line": 418, + "column": 3 + }, + "end": { + "line": 418, + "column": 7 + } + } + }, + "property": { + "type": "Identifier", + "start": 8493, + "end": 8499, + "loc": { + "start": { + "line": 418, + "column": 8 + }, + "end": { + "line": 418, + "column": 14 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 8500, + "end": 8506, + "loc": { + "start": { + "line": 418, + "column": 15 + }, + "end": { + "line": 418, + "column": 21 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ], + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 8512, + "end": 8519, + "loc": { + "start": { + "line": 419, + "column": 4 + }, + "end": { + "line": 419, + "column": 11 + }, + "identifierName": "reverse" + }, + "name": "reverse" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [], + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " TODO Once #to is implemented we can rewrite this as", + "start": 8316, + "end": 8370, + "loc": { + "start": { + "line": 411, + "column": 2 + }, + "end": { + "line": 411, + "column": 56 + } + } + }, + { + "type": "CommentLine", + "value": " return this.to(LITTLE_ENDIAN, base, Array) ;", + "start": 8373, + "end": 8420, + "loc": { + "start": { + "line": 412, + "column": 2 + }, + "end": { + "line": 412, + "column": 49 + } + } + } + ] + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 8528, + "end": 8564, + "loc": { + "start": { + "line": 422, + "column": 1 + }, + "end": { + "line": 424, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 8528, + "end": 8532, + "loc": { + "start": { + "line": 422, + "column": 1 + }, + "end": { + "line": 422, + "column": 5 + }, + "identifierName": "bits" + }, + "name": "bits" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 8535, + "end": 8564, + "loc": { + "start": { + "line": 422, + "column": 8 + }, + "end": { + "line": 424, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 8539, + "end": 8561, + "loc": { + "start": { + "line": 423, + "column": 2 + }, + "end": { + "line": 423, + "column": 24 + } + }, + "argument": { + "type": "CallExpression", + "start": 8546, + "end": 8560, + "loc": { + "start": { + "line": 423, + "column": 9 + }, + "end": { + "line": 423, + "column": 23 + } + }, + "callee": { + "type": "MemberExpression", + "start": 8546, + "end": 8557, + "loc": { + "start": { + "line": 423, + "column": 9 + }, + "end": { + "line": 423, + "column": 20 + } + }, + "object": { + "type": "ThisExpression", + "start": 8546, + "end": 8550, + "loc": { + "start": { + "line": 423, + "column": 9 + }, + "end": { + "line": 423, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 8551, + "end": 8557, + "loc": { + "start": { + "line": 423, + "column": 14 + }, + "end": { + "line": 423, + "column": 20 + }, + "identifierName": "digits" + }, + "name": "digits" + }, + "computed": false + }, + "arguments": [ + { + "type": "NumericLiteral", + "start": 8558, + "end": 8559, + "loc": { + "start": { + "line": 423, + "column": 21 + }, + "end": { + "line": 423, + "column": 22 + } + }, + "extra": { + "rawValue": 2, + "raw": "2" + }, + "value": 2 + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 8567, + "end": 8621, + "loc": { + "start": { + "line": 426, + "column": 1 + }, + "end": { + "line": 428, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 8567, + "end": 8574, + "loc": { + "start": { + "line": 426, + "column": 1 + }, + "end": { + "line": 426, + "column": 8 + }, + "identifierName": "divides" + }, + "name": "divides" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 8575, + "end": 8580, + "loc": { + "start": { + "line": 426, + "column": 9 + }, + "end": { + "line": 426, + "column": 14 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 8582, + "end": 8621, + "loc": { + "start": { + "line": 426, + "column": 16 + }, + "end": { + "line": 428, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 8586, + "end": 8618, + "loc": { + "start": { + "line": 427, + "column": 2 + }, + "end": { + "line": 427, + "column": 34 + } + }, + "argument": { + "type": "CallExpression", + "start": 8593, + "end": 8617, + "loc": { + "start": { + "line": 427, + "column": 9 + }, + "end": { + "line": 427, + "column": 33 + } + }, + "callee": { + "type": "MemberExpression", + "start": 8593, + "end": 8615, + "loc": { + "start": { + "line": 427, + "column": 9 + }, + "end": { + "line": 427, + "column": 31 + } + }, + "object": { + "type": "CallExpression", + "start": 8593, + "end": 8608, + "loc": { + "start": { + "line": 427, + "column": 9 + }, + "end": { + "line": 427, + "column": 24 + } + }, + "callee": { + "type": "MemberExpression", + "start": 8593, + "end": 8602, + "loc": { + "start": { + "line": 427, + "column": 9 + }, + "end": { + "line": 427, + "column": 18 + } + }, + "object": { + "type": "Identifier", + "start": 8593, + "end": 8598, + "loc": { + "start": { + "line": 427, + "column": 9 + }, + "end": { + "line": 427, + "column": 14 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 8599, + "end": 8602, + "loc": { + "start": { + "line": 427, + "column": 15 + }, + "end": { + "line": 427, + "column": 18 + }, + "identifierName": "mod" + }, + "name": "mod" + }, + "computed": false + }, + "arguments": [ + { + "type": "ThisExpression", + "start": 8603, + "end": 8607, + "loc": { + "start": { + "line": 427, + "column": 19 + }, + "end": { + "line": 427, + "column": 23 + } + } + } + ] + }, + "property": { + "type": "Identifier", + "start": 8609, + "end": 8615, + "loc": { + "start": { + "line": 427, + "column": 25 + }, + "end": { + "line": 427, + "column": 31 + }, + "identifierName": "iszero" + }, + "name": "iszero" + }, + "computed": false + }, + "arguments": [] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 8624, + "end": 8708, + "loc": { + "start": { + "line": 430, + "column": 1 + }, + "end": { + "line": 433, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 8624, + "end": 8651, + "loc": { + "start": { + "line": 430, + "column": 1 + }, + "end": { + "line": 430, + "column": 28 + }, + "identifierName": "divide_knowing_divisible_by" + }, + "name": "divide_knowing_divisible_by" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 8652, + "end": 8657, + "loc": { + "start": { + "line": 430, + "column": 29 + }, + "end": { + "line": 430, + "column": 34 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 8659, + "end": 8708, + "loc": { + "start": { + "line": 430, + "column": 36 + }, + "end": { + "line": 433, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 8682, + "end": 8705, + "loc": { + "start": { + "line": 432, + "column": 2 + }, + "end": { + "line": 432, + "column": 25 + } + }, + "argument": { + "type": "CallExpression", + "start": 8689, + "end": 8704, + "loc": { + "start": { + "line": 432, + "column": 9 + }, + "end": { + "line": 432, + "column": 24 + } + }, + "callee": { + "type": "MemberExpression", + "start": 8689, + "end": 8697, + "loc": { + "start": { + "line": 432, + "column": 9 + }, + "end": { + "line": 432, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 8689, + "end": 8693, + "loc": { + "start": { + "line": 432, + "column": 9 + }, + "end": { + "line": 432, + "column": 13 + } + }, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 8694, + "end": 8697, + "loc": { + "start": { + "line": 432, + "column": 14 + }, + "end": { + "line": 432, + "column": 17 + }, + "identifierName": "div" + }, + "name": "div" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [ + { + "type": "Identifier", + "start": 8698, + "end": 8703, + "loc": { + "start": { + "line": 432, + "column": 18 + }, + "end": { + "line": 432, + "column": 23 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " TODO optimize", + "start": 8663, + "end": 8679, + "loc": { + "start": { + "line": 431, + "column": 2 + }, + "end": { + "line": 431, + "column": 18 + } + } + } + ] + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 8711, + "end": 9180, + "loc": { + "start": { + "line": 435, + "column": 1 + }, + "end": { + "line": 453, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 8711, + "end": 8714, + "loc": { + "start": { + "line": 435, + "column": 1 + }, + "end": { + "line": 435, + "column": 4 + }, + "identifierName": "cmp" + }, + "name": "cmp" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 8715, + "end": 8720, + "loc": { + "start": { + "line": 435, + "column": 5 + }, + "end": { + "line": 435, + "column": 10 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 8722, + "end": 9180, + "loc": { + "start": { + "line": 435, + "column": 12 + }, + "end": { + "line": 453, + "column": 2 + } + }, + "body": [ + { + "type": "IfStatement", + "start": 8766, + "end": 8874, + "loc": { + "start": { + "line": 438, + "column": 2 + }, + "end": { + "line": 442, + "column": 3 + } + }, + "test": { + "type": "CallExpression", + "start": 8770, + "end": 8783, + "loc": { + "start": { + "line": 438, + "column": 6 + }, + "end": { + "line": 438, + "column": 19 + } + }, + "callee": { + "type": "MemberExpression", + "start": 8770, + "end": 8781, + "loc": { + "start": { + "line": 438, + "column": 6 + }, + "end": { + "line": 438, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 8770, + "end": 8774, + "loc": { + "start": { + "line": 438, + "column": 6 + }, + "end": { + "line": 438, + "column": 10 + } + }, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 8775, + "end": 8781, + "loc": { + "start": { + "line": 438, + "column": 11 + }, + "end": { + "line": 438, + "column": 17 + }, + "identifierName": "iszero" + }, + "name": "iszero" + }, + "computed": false, + "leadingComments": null + }, + "arguments": [], + "leadingComments": null + }, + "consequent": { + "type": "BlockStatement", + "start": 8785, + "end": 8874, + "loc": { + "start": { + "line": 438, + "column": 21 + }, + "end": { + "line": 442, + "column": 3 + } + }, + "body": [ + { + "type": "IfStatement", + "start": 8790, + "end": 8819, + "loc": { + "start": { + "line": 439, + "column": 3 + }, + "end": { + "line": 439, + "column": 32 + } + }, + "test": { + "type": "CallExpression", + "start": 8794, + "end": 8808, + "loc": { + "start": { + "line": 439, + "column": 7 + }, + "end": { + "line": 439, + "column": 21 + } + }, + "callee": { + "type": "MemberExpression", + "start": 8794, + "end": 8806, + "loc": { + "start": { + "line": 439, + "column": 7 + }, + "end": { + "line": 439, + "column": 19 + } + }, + "object": { + "type": "Identifier", + "start": 8794, + "end": 8799, + "loc": { + "start": { + "line": 439, + "column": 7 + }, + "end": { + "line": 439, + "column": 12 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 8800, + "end": 8806, + "loc": { + "start": { + "line": 439, + "column": 13 + }, + "end": { + "line": 439, + "column": 19 + }, + "identifierName": "iszero" + }, + "name": "iszero" + }, + "computed": false + }, + "arguments": [] + }, + "consequent": { + "type": "ReturnStatement", + "start": 8810, + "end": 8819, + "loc": { + "start": { + "line": 439, + "column": 23 + }, + "end": { + "line": 439, + "column": 32 + } + }, + "argument": { + "type": "NumericLiteral", + "start": 8817, + "end": 8818, + "loc": { + "start": { + "line": 439, + "column": 30 + }, + "end": { + "line": 439, + "column": 31 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + }, + "alternate": null + }, + { + "type": "IfStatement", + "start": 8823, + "end": 8856, + "loc": { + "start": { + "line": 440, + "column": 3 + }, + "end": { + "line": 440, + "column": 36 + } + }, + "test": { + "type": "MemberExpression", + "start": 8827, + "end": 8845, + "loc": { + "start": { + "line": 440, + "column": 7 + }, + "end": { + "line": 440, + "column": 25 + } + }, + "object": { + "type": "Identifier", + "start": 8827, + "end": 8832, + "loc": { + "start": { + "line": 440, + "column": 7 + }, + "end": { + "line": 440, + "column": 12 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 8833, + "end": 8845, + "loc": { + "start": { + "line": 440, + "column": 13 + }, + "end": { + "line": 440, + "column": 25 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "consequent": { + "type": "ReturnStatement", + "start": 8847, + "end": 8856, + "loc": { + "start": { + "line": 440, + "column": 27 + }, + "end": { + "line": 440, + "column": 36 + } + }, + "argument": { + "type": "NumericLiteral", + "start": 8854, + "end": 8855, + "loc": { + "start": { + "line": 440, + "column": 34 + }, + "end": { + "line": 440, + "column": 35 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + } + }, + "alternate": null + }, + { + "type": "ReturnStatement", + "start": 8860, + "end": 8870, + "loc": { + "start": { + "line": 441, + "column": 3 + }, + "end": { + "line": 441, + "column": 13 + } + }, + "argument": { + "type": "UnaryExpression", + "start": 8867, + "end": 8869, + "loc": { + "start": { + "line": 441, + "column": 10 + }, + "end": { + "line": 441, + "column": 12 + } + }, + "operator": "-", + "prefix": true, + "argument": { + "type": "NumericLiteral", + "start": 8868, + "end": 8869, + "loc": { + "start": { + "line": 441, + "column": 11 + }, + "end": { + "line": 441, + "column": 12 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + "extra": { + "parenthesizedArgument": false + } + } + } + ], + "directives": [] + }, + "alternate": null, + "leadingComments": [ + { + "type": "CommentLine", + "value": " TODO optimize with _trim_positive", + "start": 8726, + "end": 8762, + "loc": { + "start": { + "line": 436, + "column": 2 + }, + "end": { + "line": 436, + "column": 38 + } + } + } + ] + }, + { + "type": "IfStatement", + "start": 8878, + "end": 8932, + "loc": { + "start": { + "line": 444, + "column": 2 + }, + "end": { + "line": 444, + "column": 56 + } + }, + "test": { + "type": "BinaryExpression", + "start": 8882, + "end": 8920, + "loc": { + "start": { + "line": 444, + "column": 6 + }, + "end": { + "line": 444, + "column": 44 + } + }, + "left": { + "type": "MemberExpression", + "start": 8882, + "end": 8899, + "loc": { + "start": { + "line": 444, + "column": 6 + }, + "end": { + "line": 444, + "column": 23 + } + }, + "object": { + "type": "ThisExpression", + "start": 8882, + "end": 8886, + "loc": { + "start": { + "line": 444, + "column": 6 + }, + "end": { + "line": 444, + "column": 10 + } + } + }, + "property": { + "type": "Identifier", + "start": 8887, + "end": 8899, + "loc": { + "start": { + "line": 444, + "column": 11 + }, + "end": { + "line": 444, + "column": 23 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "operator": "<", + "right": { + "type": "MemberExpression", + "start": 8902, + "end": 8920, + "loc": { + "start": { + "line": 444, + "column": 26 + }, + "end": { + "line": 444, + "column": 44 + } + }, + "object": { + "type": "Identifier", + "start": 8902, + "end": 8907, + "loc": { + "start": { + "line": 444, + "column": 26 + }, + "end": { + "line": 444, + "column": 31 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 8908, + "end": 8920, + "loc": { + "start": { + "line": 444, + "column": 32 + }, + "end": { + "line": 444, + "column": 44 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + } + }, + "consequent": { + "type": "ReturnStatement", + "start": 8922, + "end": 8932, + "loc": { + "start": { + "line": 444, + "column": 46 + }, + "end": { + "line": 444, + "column": 56 + } + }, + "argument": { + "type": "UnaryExpression", + "start": 8929, + "end": 8931, + "loc": { + "start": { + "line": 444, + "column": 53 + }, + "end": { + "line": 444, + "column": 55 + } + }, + "operator": "-", + "prefix": true, + "argument": { + "type": "NumericLiteral", + "start": 8930, + "end": 8931, + "loc": { + "start": { + "line": 444, + "column": 54 + }, + "end": { + "line": 444, + "column": 55 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + "extra": { + "parenthesizedArgument": false + } + } + }, + "alternate": null + }, + { + "type": "IfStatement", + "start": 8935, + "end": 8988, + "loc": { + "start": { + "line": 445, + "column": 2 + }, + "end": { + "line": 445, + "column": 55 + } + }, + "test": { + "type": "BinaryExpression", + "start": 8939, + "end": 8977, + "loc": { + "start": { + "line": 445, + "column": 6 + }, + "end": { + "line": 445, + "column": 44 + } + }, + "left": { + "type": "MemberExpression", + "start": 8939, + "end": 8956, + "loc": { + "start": { + "line": 445, + "column": 6 + }, + "end": { + "line": 445, + "column": 23 + } + }, + "object": { + "type": "ThisExpression", + "start": 8939, + "end": 8943, + "loc": { + "start": { + "line": 445, + "column": 6 + }, + "end": { + "line": 445, + "column": 10 + } + } + }, + "property": { + "type": "Identifier", + "start": 8944, + "end": 8956, + "loc": { + "start": { + "line": 445, + "column": 11 + }, + "end": { + "line": 445, + "column": 23 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "operator": ">", + "right": { + "type": "MemberExpression", + "start": 8959, + "end": 8977, + "loc": { + "start": { + "line": 445, + "column": 26 + }, + "end": { + "line": 445, + "column": 44 + } + }, + "object": { + "type": "Identifier", + "start": 8959, + "end": 8964, + "loc": { + "start": { + "line": 445, + "column": 26 + }, + "end": { + "line": 445, + "column": 31 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 8965, + "end": 8977, + "loc": { + "start": { + "line": 445, + "column": 32 + }, + "end": { + "line": 445, + "column": 44 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + } + }, + "consequent": { + "type": "ReturnStatement", + "start": 8979, + "end": 8988, + "loc": { + "start": { + "line": 445, + "column": 46 + }, + "end": { + "line": 445, + "column": 55 + } + }, + "argument": { + "type": "NumericLiteral", + "start": 8986, + "end": 8987, + "loc": { + "start": { + "line": 445, + "column": 53 + }, + "end": { + "line": 445, + "column": 54 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + } + }, + "alternate": null + }, + { + "type": "VariableDeclaration", + "start": 8992, + "end": 9014, + "loc": { + "start": { + "line": 447, + "column": 2 + }, + "end": { + "line": 447, + "column": 24 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 8998, + "end": 9013, + "loc": { + "start": { + "line": 447, + "column": 8 + }, + "end": { + "line": 447, + "column": 23 + } + }, + "id": { + "type": "Identifier", + "start": 8998, + "end": 8999, + "loc": { + "start": { + "line": 447, + "column": 8 + }, + "end": { + "line": 447, + "column": 9 + }, + "identifierName": "a" + }, + "name": "a" + }, + "init": { + "type": "MemberExpression", + "start": 9002, + "end": 9013, + "loc": { + "start": { + "line": 447, + "column": 12 + }, + "end": { + "line": 447, + "column": 23 + } + }, + "object": { + "type": "ThisExpression", + "start": 9002, + "end": 9006, + "loc": { + "start": { + "line": 447, + "column": 12 + }, + "end": { + "line": 447, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 9007, + "end": 9013, + "loc": { + "start": { + "line": 447, + "column": 17 + }, + "end": { + "line": 447, + "column": 23 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 9017, + "end": 9060, + "loc": { + "start": { + "line": 448, + "column": 2 + }, + "end": { + "line": 448, + "column": 45 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 9023, + "end": 9059, + "loc": { + "start": { + "line": 448, + "column": 8 + }, + "end": { + "line": 448, + "column": 44 + } + }, + "id": { + "type": "Identifier", + "start": 9023, + "end": 9024, + "loc": { + "start": { + "line": 448, + "column": 8 + }, + "end": { + "line": 448, + "column": 9 + }, + "identifierName": "b" + }, + "name": "b" + }, + "init": { + "type": "CallExpression", + "start": 9027, + "end": 9059, + "loc": { + "start": { + "line": 448, + "column": 12 + }, + "end": { + "line": 448, + "column": 44 + } + }, + "callee": { + "type": "MemberExpression", + "start": 9027, + "end": 9047, + "loc": { + "start": { + "line": 448, + "column": 12 + }, + "end": { + "line": 448, + "column": 32 + } + }, + "object": { + "type": "Identifier", + "start": 9027, + "end": 9032, + "loc": { + "start": { + "line": 448, + "column": 12 + }, + "end": { + "line": 448, + "column": 17 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 9033, + "end": 9047, + "loc": { + "start": { + "line": 448, + "column": 18 + }, + "end": { + "line": 448, + "column": 32 + }, + "identifierName": "_limbs_in_base" + }, + "name": "_limbs_in_base" + }, + "computed": false + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 9048, + "end": 9058, + "loc": { + "start": { + "line": 448, + "column": 33 + }, + "end": { + "line": 448, + "column": 43 + } + }, + "object": { + "type": "ThisExpression", + "start": 9048, + "end": 9052, + "loc": { + "start": { + "line": 448, + "column": 33 + }, + "end": { + "line": 448, + "column": 37 + } + } + }, + "property": { + "type": "Identifier", + "start": 9053, + "end": 9058, + "loc": { + "start": { + "line": 448, + "column": 38 + }, + "end": { + "line": 448, + "column": 43 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "ReturnStatement", + "start": 9064, + "end": 9177, + "loc": { + "start": { + "line": 450, + "column": 2 + }, + "end": { + "line": 452, + "column": 41 + } + }, + "argument": { + "type": "ConditionalExpression", + "start": 9071, + "end": 9176, + "loc": { + "start": { + "line": 450, + "column": 9 + }, + "end": { + "line": 452, + "column": 40 + } + }, + "test": { + "type": "BinaryExpression", + "start": 9071, + "end": 9094, + "loc": { + "start": { + "line": 450, + "column": 9 + }, + "end": { + "line": 450, + "column": 32 + } + }, + "left": { + "type": "MemberExpression", + "start": 9071, + "end": 9088, + "loc": { + "start": { + "line": 450, + "column": 9 + }, + "end": { + "line": 450, + "column": 26 + } + }, + "object": { + "type": "ThisExpression", + "start": 9071, + "end": 9075, + "loc": { + "start": { + "line": 450, + "column": 9 + }, + "end": { + "line": 450, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 9076, + "end": 9088, + "loc": { + "start": { + "line": 450, + "column": 14 + }, + "end": { + "line": 450, + "column": 26 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "operator": "===", + "right": { + "type": "NumericLiteral", + "start": 9093, + "end": 9094, + "loc": { + "start": { + "line": 450, + "column": 31 + }, + "end": { + "line": 450, + "column": 32 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + }, + "consequent": { + "type": "CallExpression", + "start": 9100, + "end": 9135, + "loc": { + "start": { + "line": 451, + "column": 5 + }, + "end": { + "line": 451, + "column": 40 + } + }, + "callee": { + "type": "Identifier", + "start": 9100, + "end": 9103, + "loc": { + "start": { + "line": 451, + "column": 5 + }, + "end": { + "line": 451, + "column": 8 + }, + "identifierName": "cmp" + }, + "name": "cmp" + }, + "arguments": [ + { + "type": "Identifier", + "start": 9104, + "end": 9105, + "loc": { + "start": { + "line": 451, + "column": 9 + }, + "end": { + "line": 451, + "column": 10 + }, + "identifierName": "a" + }, + "name": "a" + }, + { + "type": "NumericLiteral", + "start": 9107, + "end": 9108, + "loc": { + "start": { + "line": 451, + "column": 12 + }, + "end": { + "line": 451, + "column": 13 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 9110, + "end": 9118, + "loc": { + "start": { + "line": 451, + "column": 15 + }, + "end": { + "line": 451, + "column": 23 + } + }, + "object": { + "type": "Identifier", + "start": 9110, + "end": 9111, + "loc": { + "start": { + "line": 451, + "column": 15 + }, + "end": { + "line": 451, + "column": 16 + }, + "identifierName": "a" + }, + "name": "a" + }, + "property": { + "type": "Identifier", + "start": 9112, + "end": 9118, + "loc": { + "start": { + "line": 451, + "column": 17 + }, + "end": { + "line": 451, + "column": 23 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 9120, + "end": 9121, + "loc": { + "start": { + "line": 451, + "column": 25 + }, + "end": { + "line": 451, + "column": 26 + }, + "identifierName": "b" + }, + "name": "b" + }, + { + "type": "NumericLiteral", + "start": 9123, + "end": 9124, + "loc": { + "start": { + "line": 451, + "column": 28 + }, + "end": { + "line": 451, + "column": 29 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 9126, + "end": 9134, + "loc": { + "start": { + "line": 451, + "column": 31 + }, + "end": { + "line": 451, + "column": 39 + } + }, + "object": { + "type": "Identifier", + "start": 9126, + "end": 9127, + "loc": { + "start": { + "line": 451, + "column": 31 + }, + "end": { + "line": 451, + "column": 32 + }, + "identifierName": "b" + }, + "name": "b" + }, + "property": { + "type": "Identifier", + "start": 9128, + "end": 9134, + "loc": { + "start": { + "line": 451, + "column": 33 + }, + "end": { + "line": 451, + "column": 39 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ] + }, + "alternate": { + "type": "CallExpression", + "start": 9141, + "end": 9176, + "loc": { + "start": { + "line": 452, + "column": 5 + }, + "end": { + "line": 452, + "column": 40 + } + }, + "callee": { + "type": "Identifier", + "start": 9141, + "end": 9144, + "loc": { + "start": { + "line": 452, + "column": 5 + }, + "end": { + "line": 452, + "column": 8 + }, + "identifierName": "cmp" + }, + "name": "cmp" + }, + "arguments": [ + { + "type": "Identifier", + "start": 9145, + "end": 9146, + "loc": { + "start": { + "line": 452, + "column": 9 + }, + "end": { + "line": 452, + "column": 10 + }, + "identifierName": "b" + }, + "name": "b" + }, + { + "type": "NumericLiteral", + "start": 9148, + "end": 9149, + "loc": { + "start": { + "line": 452, + "column": 12 + }, + "end": { + "line": 452, + "column": 13 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 9151, + "end": 9159, + "loc": { + "start": { + "line": 452, + "column": 15 + }, + "end": { + "line": 452, + "column": 23 + } + }, + "object": { + "type": "Identifier", + "start": 9151, + "end": 9152, + "loc": { + "start": { + "line": 452, + "column": 15 + }, + "end": { + "line": 452, + "column": 16 + }, + "identifierName": "b" + }, + "name": "b" + }, + "property": { + "type": "Identifier", + "start": 9153, + "end": 9159, + "loc": { + "start": { + "line": 452, + "column": 17 + }, + "end": { + "line": 452, + "column": 23 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 9161, + "end": 9162, + "loc": { + "start": { + "line": 452, + "column": 25 + }, + "end": { + "line": 452, + "column": 26 + }, + "identifierName": "a" + }, + "name": "a" + }, + { + "type": "NumericLiteral", + "start": 9164, + "end": 9165, + "loc": { + "start": { + "line": 452, + "column": 28 + }, + "end": { + "line": 452, + "column": 29 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 9167, + "end": 9175, + "loc": { + "start": { + "line": 452, + "column": 31 + }, + "end": { + "line": 452, + "column": 39 + } + }, + "object": { + "type": "Identifier", + "start": 9167, + "end": 9168, + "loc": { + "start": { + "line": 452, + "column": 31 + }, + "end": { + "line": 452, + "column": 32 + }, + "identifierName": "a" + }, + "name": "a" + }, + "property": { + "type": "Identifier", + "start": 9169, + "end": 9175, + "loc": { + "start": { + "line": 452, + "column": 33 + }, + "end": { + "line": 452, + "column": 39 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ] + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 9183, + "end": 9241, + "loc": { + "start": { + "line": 455, + "column": 1 + }, + "end": { + "line": 457, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 9183, + "end": 9187, + "loc": { + "start": { + "line": 455, + "column": 1 + }, + "end": { + "line": 455, + "column": 5 + }, + "identifierName": "cmpn" + }, + "name": "cmpn" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 9188, + "end": 9194, + "loc": { + "start": { + "line": 455, + "column": 6 + }, + "end": { + "line": 455, + "column": 12 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "body": { + "type": "BlockStatement", + "start": 9196, + "end": 9241, + "loc": { + "start": { + "line": 455, + "column": 14 + }, + "end": { + "line": 457, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 9200, + "end": 9238, + "loc": { + "start": { + "line": 456, + "column": 2 + }, + "end": { + "line": 456, + "column": 40 + } + }, + "argument": { + "type": "CallExpression", + "start": 9207, + "end": 9237, + "loc": { + "start": { + "line": 456, + "column": 9 + }, + "end": { + "line": 456, + "column": 39 + } + }, + "callee": { + "type": "MemberExpression", + "start": 9207, + "end": 9215, + "loc": { + "start": { + "line": 456, + "column": 9 + }, + "end": { + "line": 456, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 9207, + "end": 9211, + "loc": { + "start": { + "line": 456, + "column": 9 + }, + "end": { + "line": 456, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 9212, + "end": 9215, + "loc": { + "start": { + "line": 456, + "column": 14 + }, + "end": { + "line": 456, + "column": 17 + }, + "identifierName": "cmp" + }, + "name": "cmp" + }, + "computed": false + }, + "arguments": [ + { + "type": "CallExpression", + "start": 9216, + "end": 9236, + "loc": { + "start": { + "line": 456, + "column": 18 + }, + "end": { + "line": 456, + "column": 38 + } + }, + "callee": { + "type": "Identifier", + "start": 9216, + "end": 9228, + "loc": { + "start": { + "line": 456, + "column": 18 + }, + "end": { + "line": 456, + "column": 30 + }, + "identifierName": "_from_number" + }, + "name": "_from_number" + }, + "arguments": [ + { + "type": "Identifier", + "start": 9229, + "end": 9235, + "loc": { + "start": { + "line": 456, + "column": 31 + }, + "end": { + "line": 456, + "column": 37 + }, + "identifierName": "number" + }, + "name": "number" + } + ] + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 9244, + "end": 9290, + "loc": { + "start": { + "line": 459, + "column": 1 + }, + "end": { + "line": 461, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 9244, + "end": 9246, + "loc": { + "start": { + "line": 459, + "column": 1 + }, + "end": { + "line": 459, + "column": 3 + }, + "identifierName": "eq" + }, + "name": "eq" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 9247, + "end": 9252, + "loc": { + "start": { + "line": 459, + "column": 4 + }, + "end": { + "line": 459, + "column": 9 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 9254, + "end": 9290, + "loc": { + "start": { + "line": 459, + "column": 11 + }, + "end": { + "line": 461, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 9258, + "end": 9287, + "loc": { + "start": { + "line": 460, + "column": 2 + }, + "end": { + "line": 460, + "column": 31 + } + }, + "argument": { + "type": "BinaryExpression", + "start": 9265, + "end": 9286, + "loc": { + "start": { + "line": 460, + "column": 9 + }, + "end": { + "line": 460, + "column": 30 + } + }, + "left": { + "type": "CallExpression", + "start": 9265, + "end": 9280, + "loc": { + "start": { + "line": 460, + "column": 9 + }, + "end": { + "line": 460, + "column": 24 + } + }, + "callee": { + "type": "MemberExpression", + "start": 9265, + "end": 9273, + "loc": { + "start": { + "line": 460, + "column": 9 + }, + "end": { + "line": 460, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 9265, + "end": 9269, + "loc": { + "start": { + "line": 460, + "column": 9 + }, + "end": { + "line": 460, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 9270, + "end": 9273, + "loc": { + "start": { + "line": 460, + "column": 14 + }, + "end": { + "line": 460, + "column": 17 + }, + "identifierName": "cmp" + }, + "name": "cmp" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 9274, + "end": 9279, + "loc": { + "start": { + "line": 460, + "column": 18 + }, + "end": { + "line": 460, + "column": 23 + }, + "identifierName": "other" + }, + "name": "other" + } + ] + }, + "operator": "===", + "right": { + "type": "NumericLiteral", + "start": 9285, + "end": 9286, + "loc": { + "start": { + "line": 460, + "column": 29 + }, + "end": { + "line": 460, + "column": 30 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 9293, + "end": 9343, + "loc": { + "start": { + "line": 463, + "column": 1 + }, + "end": { + "line": 465, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 9293, + "end": 9296, + "loc": { + "start": { + "line": 463, + "column": 1 + }, + "end": { + "line": 463, + "column": 4 + }, + "identifierName": "eqn" + }, + "name": "eqn" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 9297, + "end": 9303, + "loc": { + "start": { + "line": 463, + "column": 5 + }, + "end": { + "line": 463, + "column": 11 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "body": { + "type": "BlockStatement", + "start": 9305, + "end": 9343, + "loc": { + "start": { + "line": 463, + "column": 13 + }, + "end": { + "line": 465, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 9309, + "end": 9340, + "loc": { + "start": { + "line": 464, + "column": 2 + }, + "end": { + "line": 464, + "column": 33 + } + }, + "argument": { + "type": "BinaryExpression", + "start": 9316, + "end": 9339, + "loc": { + "start": { + "line": 464, + "column": 9 + }, + "end": { + "line": 464, + "column": 32 + } + }, + "left": { + "type": "CallExpression", + "start": 9316, + "end": 9333, + "loc": { + "start": { + "line": 464, + "column": 9 + }, + "end": { + "line": 464, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 9316, + "end": 9325, + "loc": { + "start": { + "line": 464, + "column": 9 + }, + "end": { + "line": 464, + "column": 18 + } + }, + "object": { + "type": "ThisExpression", + "start": 9316, + "end": 9320, + "loc": { + "start": { + "line": 464, + "column": 9 + }, + "end": { + "line": 464, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 9321, + "end": 9325, + "loc": { + "start": { + "line": 464, + "column": 14 + }, + "end": { + "line": 464, + "column": 18 + }, + "identifierName": "cmpn" + }, + "name": "cmpn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 9326, + "end": 9332, + "loc": { + "start": { + "line": 464, + "column": 19 + }, + "end": { + "line": 464, + "column": 25 + }, + "identifierName": "number" + }, + "name": "number" + } + ] + }, + "operator": "===", + "right": { + "type": "NumericLiteral", + "start": 9338, + "end": 9339, + "loc": { + "start": { + "line": 464, + "column": 31 + }, + "end": { + "line": 464, + "column": 32 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 9346, + "end": 9391, + "loc": { + "start": { + "line": 467, + "column": 1 + }, + "end": { + "line": 469, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 9346, + "end": 9348, + "loc": { + "start": { + "line": 467, + "column": 1 + }, + "end": { + "line": 467, + "column": 3 + }, + "identifierName": "ge" + }, + "name": "ge" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 9349, + "end": 9354, + "loc": { + "start": { + "line": 467, + "column": 4 + }, + "end": { + "line": 467, + "column": 9 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 9356, + "end": 9391, + "loc": { + "start": { + "line": 467, + "column": 11 + }, + "end": { + "line": 469, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 9360, + "end": 9388, + "loc": { + "start": { + "line": 468, + "column": 2 + }, + "end": { + "line": 468, + "column": 30 + } + }, + "argument": { + "type": "BinaryExpression", + "start": 9367, + "end": 9387, + "loc": { + "start": { + "line": 468, + "column": 9 + }, + "end": { + "line": 468, + "column": 29 + } + }, + "left": { + "type": "CallExpression", + "start": 9367, + "end": 9382, + "loc": { + "start": { + "line": 468, + "column": 9 + }, + "end": { + "line": 468, + "column": 24 + } + }, + "callee": { + "type": "MemberExpression", + "start": 9367, + "end": 9375, + "loc": { + "start": { + "line": 468, + "column": 9 + }, + "end": { + "line": 468, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 9367, + "end": 9371, + "loc": { + "start": { + "line": 468, + "column": 9 + }, + "end": { + "line": 468, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 9372, + "end": 9375, + "loc": { + "start": { + "line": 468, + "column": 14 + }, + "end": { + "line": 468, + "column": 17 + }, + "identifierName": "cmp" + }, + "name": "cmp" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 9376, + "end": 9381, + "loc": { + "start": { + "line": 468, + "column": 18 + }, + "end": { + "line": 468, + "column": 23 + }, + "identifierName": "other" + }, + "name": "other" + } + ] + }, + "operator": ">=", + "right": { + "type": "NumericLiteral", + "start": 9386, + "end": 9387, + "loc": { + "start": { + "line": 468, + "column": 28 + }, + "end": { + "line": 468, + "column": 29 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 9394, + "end": 9443, + "loc": { + "start": { + "line": 471, + "column": 1 + }, + "end": { + "line": 473, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 9394, + "end": 9397, + "loc": { + "start": { + "line": 471, + "column": 1 + }, + "end": { + "line": 471, + "column": 4 + }, + "identifierName": "gen" + }, + "name": "gen" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 9398, + "end": 9404, + "loc": { + "start": { + "line": 471, + "column": 5 + }, + "end": { + "line": 471, + "column": 11 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "body": { + "type": "BlockStatement", + "start": 9406, + "end": 9443, + "loc": { + "start": { + "line": 471, + "column": 13 + }, + "end": { + "line": 473, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 9410, + "end": 9440, + "loc": { + "start": { + "line": 472, + "column": 2 + }, + "end": { + "line": 472, + "column": 32 + } + }, + "argument": { + "type": "BinaryExpression", + "start": 9417, + "end": 9439, + "loc": { + "start": { + "line": 472, + "column": 9 + }, + "end": { + "line": 472, + "column": 31 + } + }, + "left": { + "type": "CallExpression", + "start": 9417, + "end": 9434, + "loc": { + "start": { + "line": 472, + "column": 9 + }, + "end": { + "line": 472, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 9417, + "end": 9426, + "loc": { + "start": { + "line": 472, + "column": 9 + }, + "end": { + "line": 472, + "column": 18 + } + }, + "object": { + "type": "ThisExpression", + "start": 9417, + "end": 9421, + "loc": { + "start": { + "line": 472, + "column": 9 + }, + "end": { + "line": 472, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 9422, + "end": 9426, + "loc": { + "start": { + "line": 472, + "column": 14 + }, + "end": { + "line": 472, + "column": 18 + }, + "identifierName": "cmpn" + }, + "name": "cmpn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 9427, + "end": 9433, + "loc": { + "start": { + "line": 472, + "column": 19 + }, + "end": { + "line": 472, + "column": 25 + }, + "identifierName": "number" + }, + "name": "number" + } + ] + }, + "operator": ">=", + "right": { + "type": "NumericLiteral", + "start": 9438, + "end": 9439, + "loc": { + "start": { + "line": 472, + "column": 30 + }, + "end": { + "line": 472, + "column": 31 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 9446, + "end": 9490, + "loc": { + "start": { + "line": 475, + "column": 1 + }, + "end": { + "line": 477, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 9446, + "end": 9448, + "loc": { + "start": { + "line": 475, + "column": 1 + }, + "end": { + "line": 475, + "column": 3 + }, + "identifierName": "gt" + }, + "name": "gt" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 9449, + "end": 9454, + "loc": { + "start": { + "line": 475, + "column": 4 + }, + "end": { + "line": 475, + "column": 9 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 9456, + "end": 9490, + "loc": { + "start": { + "line": 475, + "column": 11 + }, + "end": { + "line": 477, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 9460, + "end": 9487, + "loc": { + "start": { + "line": 476, + "column": 2 + }, + "end": { + "line": 476, + "column": 29 + } + }, + "argument": { + "type": "BinaryExpression", + "start": 9467, + "end": 9486, + "loc": { + "start": { + "line": 476, + "column": 9 + }, + "end": { + "line": 476, + "column": 28 + } + }, + "left": { + "type": "CallExpression", + "start": 9467, + "end": 9482, + "loc": { + "start": { + "line": 476, + "column": 9 + }, + "end": { + "line": 476, + "column": 24 + } + }, + "callee": { + "type": "MemberExpression", + "start": 9467, + "end": 9475, + "loc": { + "start": { + "line": 476, + "column": 9 + }, + "end": { + "line": 476, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 9467, + "end": 9471, + "loc": { + "start": { + "line": 476, + "column": 9 + }, + "end": { + "line": 476, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 9472, + "end": 9475, + "loc": { + "start": { + "line": 476, + "column": 14 + }, + "end": { + "line": 476, + "column": 17 + }, + "identifierName": "cmp" + }, + "name": "cmp" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 9476, + "end": 9481, + "loc": { + "start": { + "line": 476, + "column": 18 + }, + "end": { + "line": 476, + "column": 23 + }, + "identifierName": "other" + }, + "name": "other" + } + ] + }, + "operator": ">", + "right": { + "type": "NumericLiteral", + "start": 9485, + "end": 9486, + "loc": { + "start": { + "line": 476, + "column": 27 + }, + "end": { + "line": 476, + "column": 28 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 9493, + "end": 9541, + "loc": { + "start": { + "line": 479, + "column": 1 + }, + "end": { + "line": 481, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 9493, + "end": 9496, + "loc": { + "start": { + "line": 479, + "column": 1 + }, + "end": { + "line": 479, + "column": 4 + }, + "identifierName": "gtn" + }, + "name": "gtn" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 9497, + "end": 9503, + "loc": { + "start": { + "line": 479, + "column": 5 + }, + "end": { + "line": 479, + "column": 11 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "body": { + "type": "BlockStatement", + "start": 9505, + "end": 9541, + "loc": { + "start": { + "line": 479, + "column": 13 + }, + "end": { + "line": 481, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 9509, + "end": 9538, + "loc": { + "start": { + "line": 480, + "column": 2 + }, + "end": { + "line": 480, + "column": 31 + } + }, + "argument": { + "type": "BinaryExpression", + "start": 9516, + "end": 9537, + "loc": { + "start": { + "line": 480, + "column": 9 + }, + "end": { + "line": 480, + "column": 30 + } + }, + "left": { + "type": "CallExpression", + "start": 9516, + "end": 9533, + "loc": { + "start": { + "line": 480, + "column": 9 + }, + "end": { + "line": 480, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 9516, + "end": 9525, + "loc": { + "start": { + "line": 480, + "column": 9 + }, + "end": { + "line": 480, + "column": 18 + } + }, + "object": { + "type": "ThisExpression", + "start": 9516, + "end": 9520, + "loc": { + "start": { + "line": 480, + "column": 9 + }, + "end": { + "line": 480, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 9521, + "end": 9525, + "loc": { + "start": { + "line": 480, + "column": 14 + }, + "end": { + "line": 480, + "column": 18 + }, + "identifierName": "cmpn" + }, + "name": "cmpn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 9526, + "end": 9532, + "loc": { + "start": { + "line": 480, + "column": 19 + }, + "end": { + "line": 480, + "column": 25 + }, + "identifierName": "number" + }, + "name": "number" + } + ] + }, + "operator": ">", + "right": { + "type": "NumericLiteral", + "start": 9536, + "end": 9537, + "loc": { + "start": { + "line": 480, + "column": 29 + }, + "end": { + "line": 480, + "column": 30 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 9544, + "end": 9589, + "loc": { + "start": { + "line": 483, + "column": 1 + }, + "end": { + "line": 485, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 9544, + "end": 9546, + "loc": { + "start": { + "line": 483, + "column": 1 + }, + "end": { + "line": 483, + "column": 3 + }, + "identifierName": "le" + }, + "name": "le" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 9547, + "end": 9552, + "loc": { + "start": { + "line": 483, + "column": 4 + }, + "end": { + "line": 483, + "column": 9 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 9554, + "end": 9589, + "loc": { + "start": { + "line": 483, + "column": 11 + }, + "end": { + "line": 485, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 9558, + "end": 9586, + "loc": { + "start": { + "line": 484, + "column": 2 + }, + "end": { + "line": 484, + "column": 30 + } + }, + "argument": { + "type": "BinaryExpression", + "start": 9565, + "end": 9585, + "loc": { + "start": { + "line": 484, + "column": 9 + }, + "end": { + "line": 484, + "column": 29 + } + }, + "left": { + "type": "CallExpression", + "start": 9565, + "end": 9580, + "loc": { + "start": { + "line": 484, + "column": 9 + }, + "end": { + "line": 484, + "column": 24 + } + }, + "callee": { + "type": "MemberExpression", + "start": 9565, + "end": 9573, + "loc": { + "start": { + "line": 484, + "column": 9 + }, + "end": { + "line": 484, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 9565, + "end": 9569, + "loc": { + "start": { + "line": 484, + "column": 9 + }, + "end": { + "line": 484, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 9570, + "end": 9573, + "loc": { + "start": { + "line": 484, + "column": 14 + }, + "end": { + "line": 484, + "column": 17 + }, + "identifierName": "cmp" + }, + "name": "cmp" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 9574, + "end": 9579, + "loc": { + "start": { + "line": 484, + "column": 18 + }, + "end": { + "line": 484, + "column": 23 + }, + "identifierName": "other" + }, + "name": "other" + } + ] + }, + "operator": "<=", + "right": { + "type": "NumericLiteral", + "start": 9584, + "end": 9585, + "loc": { + "start": { + "line": 484, + "column": 28 + }, + "end": { + "line": 484, + "column": 29 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 9592, + "end": 9641, + "loc": { + "start": { + "line": 487, + "column": 1 + }, + "end": { + "line": 489, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 9592, + "end": 9595, + "loc": { + "start": { + "line": 487, + "column": 1 + }, + "end": { + "line": 487, + "column": 4 + }, + "identifierName": "len" + }, + "name": "len" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 9596, + "end": 9602, + "loc": { + "start": { + "line": 487, + "column": 5 + }, + "end": { + "line": 487, + "column": 11 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "body": { + "type": "BlockStatement", + "start": 9604, + "end": 9641, + "loc": { + "start": { + "line": 487, + "column": 13 + }, + "end": { + "line": 489, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 9608, + "end": 9638, + "loc": { + "start": { + "line": 488, + "column": 2 + }, + "end": { + "line": 488, + "column": 32 + } + }, + "argument": { + "type": "BinaryExpression", + "start": 9615, + "end": 9637, + "loc": { + "start": { + "line": 488, + "column": 9 + }, + "end": { + "line": 488, + "column": 31 + } + }, + "left": { + "type": "CallExpression", + "start": 9615, + "end": 9632, + "loc": { + "start": { + "line": 488, + "column": 9 + }, + "end": { + "line": 488, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 9615, + "end": 9624, + "loc": { + "start": { + "line": 488, + "column": 9 + }, + "end": { + "line": 488, + "column": 18 + } + }, + "object": { + "type": "ThisExpression", + "start": 9615, + "end": 9619, + "loc": { + "start": { + "line": 488, + "column": 9 + }, + "end": { + "line": 488, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 9620, + "end": 9624, + "loc": { + "start": { + "line": 488, + "column": 14 + }, + "end": { + "line": 488, + "column": 18 + }, + "identifierName": "cmpn" + }, + "name": "cmpn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 9625, + "end": 9631, + "loc": { + "start": { + "line": 488, + "column": 19 + }, + "end": { + "line": 488, + "column": 25 + }, + "identifierName": "number" + }, + "name": "number" + } + ] + }, + "operator": "<=", + "right": { + "type": "NumericLiteral", + "start": 9636, + "end": 9637, + "loc": { + "start": { + "line": 488, + "column": 30 + }, + "end": { + "line": 488, + "column": 31 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 9644, + "end": 9688, + "loc": { + "start": { + "line": 491, + "column": 1 + }, + "end": { + "line": 493, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 9644, + "end": 9646, + "loc": { + "start": { + "line": 491, + "column": 1 + }, + "end": { + "line": 491, + "column": 3 + }, + "identifierName": "lt" + }, + "name": "lt" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 9647, + "end": 9652, + "loc": { + "start": { + "line": 491, + "column": 4 + }, + "end": { + "line": 491, + "column": 9 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 9654, + "end": 9688, + "loc": { + "start": { + "line": 491, + "column": 11 + }, + "end": { + "line": 493, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 9658, + "end": 9685, + "loc": { + "start": { + "line": 492, + "column": 2 + }, + "end": { + "line": 492, + "column": 29 + } + }, + "argument": { + "type": "BinaryExpression", + "start": 9665, + "end": 9684, + "loc": { + "start": { + "line": 492, + "column": 9 + }, + "end": { + "line": 492, + "column": 28 + } + }, + "left": { + "type": "CallExpression", + "start": 9665, + "end": 9680, + "loc": { + "start": { + "line": 492, + "column": 9 + }, + "end": { + "line": 492, + "column": 24 + } + }, + "callee": { + "type": "MemberExpression", + "start": 9665, + "end": 9673, + "loc": { + "start": { + "line": 492, + "column": 9 + }, + "end": { + "line": 492, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 9665, + "end": 9669, + "loc": { + "start": { + "line": 492, + "column": 9 + }, + "end": { + "line": 492, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 9670, + "end": 9673, + "loc": { + "start": { + "line": 492, + "column": 14 + }, + "end": { + "line": 492, + "column": 17 + }, + "identifierName": "cmp" + }, + "name": "cmp" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 9674, + "end": 9679, + "loc": { + "start": { + "line": 492, + "column": 18 + }, + "end": { + "line": 492, + "column": 23 + }, + "identifierName": "other" + }, + "name": "other" + } + ] + }, + "operator": "<", + "right": { + "type": "NumericLiteral", + "start": 9683, + "end": 9684, + "loc": { + "start": { + "line": 492, + "column": 27 + }, + "end": { + "line": 492, + "column": 28 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 9691, + "end": 9739, + "loc": { + "start": { + "line": 495, + "column": 1 + }, + "end": { + "line": 497, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 9691, + "end": 9694, + "loc": { + "start": { + "line": 495, + "column": 1 + }, + "end": { + "line": 495, + "column": 4 + }, + "identifierName": "ltn" + }, + "name": "ltn" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 9695, + "end": 9701, + "loc": { + "start": { + "line": 495, + "column": 5 + }, + "end": { + "line": 495, + "column": 11 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "body": { + "type": "BlockStatement", + "start": 9703, + "end": 9739, + "loc": { + "start": { + "line": 495, + "column": 13 + }, + "end": { + "line": 497, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 9707, + "end": 9736, + "loc": { + "start": { + "line": 496, + "column": 2 + }, + "end": { + "line": 496, + "column": 31 + } + }, + "argument": { + "type": "BinaryExpression", + "start": 9714, + "end": 9735, + "loc": { + "start": { + "line": 496, + "column": 9 + }, + "end": { + "line": 496, + "column": 30 + } + }, + "left": { + "type": "CallExpression", + "start": 9714, + "end": 9731, + "loc": { + "start": { + "line": 496, + "column": 9 + }, + "end": { + "line": 496, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 9714, + "end": 9723, + "loc": { + "start": { + "line": 496, + "column": 9 + }, + "end": { + "line": 496, + "column": 18 + } + }, + "object": { + "type": "ThisExpression", + "start": 9714, + "end": 9718, + "loc": { + "start": { + "line": 496, + "column": 9 + }, + "end": { + "line": 496, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 9719, + "end": 9723, + "loc": { + "start": { + "line": 496, + "column": 14 + }, + "end": { + "line": 496, + "column": 18 + }, + "identifierName": "cmpn" + }, + "name": "cmpn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 9724, + "end": 9730, + "loc": { + "start": { + "line": 496, + "column": 19 + }, + "end": { + "line": 496, + "column": 25 + }, + "identifierName": "number" + }, + "name": "number" + } + ] + }, + "operator": "<", + "right": { + "type": "NumericLiteral", + "start": 9734, + "end": 9735, + "loc": { + "start": { + "line": 496, + "column": 29 + }, + "end": { + "line": 496, + "column": 30 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 9742, + "end": 9788, + "loc": { + "start": { + "line": 499, + "column": 1 + }, + "end": { + "line": 501, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 9742, + "end": 9744, + "loc": { + "start": { + "line": 499, + "column": 1 + }, + "end": { + "line": 499, + "column": 3 + }, + "identifierName": "ne" + }, + "name": "ne" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 9745, + "end": 9750, + "loc": { + "start": { + "line": 499, + "column": 4 + }, + "end": { + "line": 499, + "column": 9 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 9752, + "end": 9788, + "loc": { + "start": { + "line": 499, + "column": 11 + }, + "end": { + "line": 501, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 9756, + "end": 9785, + "loc": { + "start": { + "line": 500, + "column": 2 + }, + "end": { + "line": 500, + "column": 31 + } + }, + "argument": { + "type": "BinaryExpression", + "start": 9763, + "end": 9784, + "loc": { + "start": { + "line": 500, + "column": 9 + }, + "end": { + "line": 500, + "column": 30 + } + }, + "left": { + "type": "CallExpression", + "start": 9763, + "end": 9778, + "loc": { + "start": { + "line": 500, + "column": 9 + }, + "end": { + "line": 500, + "column": 24 + } + }, + "callee": { + "type": "MemberExpression", + "start": 9763, + "end": 9771, + "loc": { + "start": { + "line": 500, + "column": 9 + }, + "end": { + "line": 500, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 9763, + "end": 9767, + "loc": { + "start": { + "line": 500, + "column": 9 + }, + "end": { + "line": 500, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 9768, + "end": 9771, + "loc": { + "start": { + "line": 500, + "column": 14 + }, + "end": { + "line": 500, + "column": 17 + }, + "identifierName": "cmp" + }, + "name": "cmp" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 9772, + "end": 9777, + "loc": { + "start": { + "line": 500, + "column": 18 + }, + "end": { + "line": 500, + "column": 23 + }, + "identifierName": "other" + }, + "name": "other" + } + ] + }, + "operator": "!==", + "right": { + "type": "NumericLiteral", + "start": 9783, + "end": 9784, + "loc": { + "start": { + "line": 500, + "column": 29 + }, + "end": { + "line": 500, + "column": 30 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 9791, + "end": 9841, + "loc": { + "start": { + "line": 503, + "column": 1 + }, + "end": { + "line": 505, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 9791, + "end": 9794, + "loc": { + "start": { + "line": 503, + "column": 1 + }, + "end": { + "line": 503, + "column": 4 + }, + "identifierName": "nen" + }, + "name": "nen" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 9795, + "end": 9801, + "loc": { + "start": { + "line": 503, + "column": 5 + }, + "end": { + "line": 503, + "column": 11 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "body": { + "type": "BlockStatement", + "start": 9803, + "end": 9841, + "loc": { + "start": { + "line": 503, + "column": 13 + }, + "end": { + "line": 505, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 9807, + "end": 9838, + "loc": { + "start": { + "line": 504, + "column": 2 + }, + "end": { + "line": 504, + "column": 33 + } + }, + "argument": { + "type": "BinaryExpression", + "start": 9814, + "end": 9837, + "loc": { + "start": { + "line": 504, + "column": 9 + }, + "end": { + "line": 504, + "column": 32 + } + }, + "left": { + "type": "CallExpression", + "start": 9814, + "end": 9831, + "loc": { + "start": { + "line": 504, + "column": 9 + }, + "end": { + "line": 504, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 9814, + "end": 9823, + "loc": { + "start": { + "line": 504, + "column": 9 + }, + "end": { + "line": 504, + "column": 18 + } + }, + "object": { + "type": "ThisExpression", + "start": 9814, + "end": 9818, + "loc": { + "start": { + "line": 504, + "column": 9 + }, + "end": { + "line": 504, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 9819, + "end": 9823, + "loc": { + "start": { + "line": 504, + "column": 14 + }, + "end": { + "line": 504, + "column": 18 + }, + "identifierName": "cmpn" + }, + "name": "cmpn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 9824, + "end": 9830, + "loc": { + "start": { + "line": 504, + "column": 19 + }, + "end": { + "line": 504, + "column": 25 + }, + "identifierName": "number" + }, + "name": "number" + } + ] + }, + "operator": "!==", + "right": { + "type": "NumericLiteral", + "start": 9836, + "end": 9837, + "loc": { + "start": { + "line": 504, + "column": 31 + }, + "end": { + "line": 504, + "column": 32 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 9844, + "end": 10115, + "loc": { + "start": { + "line": 507, + "column": 1 + }, + "end": { + "line": 515, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 9844, + "end": 9847, + "loc": { + "start": { + "line": 507, + "column": 1 + }, + "end": { + "line": 507, + "column": 4 + }, + "identifierName": "gcd" + }, + "name": "gcd" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 9848, + "end": 9853, + "loc": { + "start": { + "line": 507, + "column": 5 + }, + "end": { + "line": 507, + "column": 10 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 9855, + "end": 10115, + "loc": { + "start": { + "line": 507, + "column": 12 + }, + "end": { + "line": 515, + "column": 2 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 9859, + "end": 9880, + "loc": { + "start": { + "line": 508, + "column": 2 + }, + "end": { + "line": 508, + "column": 23 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 9865, + "end": 9879, + "loc": { + "start": { + "line": 508, + "column": 8 + }, + "end": { + "line": 508, + "column": 22 + } + }, + "id": { + "type": "Identifier", + "start": 9865, + "end": 9866, + "loc": { + "start": { + "line": 508, + "column": 8 + }, + "end": { + "line": 508, + "column": 9 + }, + "identifierName": "r" + }, + "name": "r" + }, + "init": { + "type": "MemberExpression", + "start": 9869, + "end": 9879, + "loc": { + "start": { + "line": 508, + "column": 12 + }, + "end": { + "line": 508, + "column": 22 + } + }, + "object": { + "type": "ThisExpression", + "start": 9869, + "end": 9873, + "loc": { + "start": { + "line": 508, + "column": 12 + }, + "end": { + "line": 508, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 9874, + "end": 9879, + "loc": { + "start": { + "line": 508, + "column": 17 + }, + "end": { + "line": 508, + "column": 22 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 9883, + "end": 9905, + "loc": { + "start": { + "line": 509, + "column": 2 + }, + "end": { + "line": 509, + "column": 24 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 9889, + "end": 9904, + "loc": { + "start": { + "line": 509, + "column": 8 + }, + "end": { + "line": 509, + "column": 23 + } + }, + "id": { + "type": "Identifier", + "start": 9889, + "end": 9890, + "loc": { + "start": { + "line": 509, + "column": 8 + }, + "end": { + "line": 509, + "column": 9 + }, + "identifierName": "a" + }, + "name": "a" + }, + "init": { + "type": "MemberExpression", + "start": 9893, + "end": 9904, + "loc": { + "start": { + "line": 509, + "column": 12 + }, + "end": { + "line": 509, + "column": 23 + } + }, + "object": { + "type": "ThisExpression", + "start": 9893, + "end": 9897, + "loc": { + "start": { + "line": 509, + "column": 12 + }, + "end": { + "line": 509, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 9898, + "end": 9904, + "loc": { + "start": { + "line": 509, + "column": 17 + }, + "end": { + "line": 509, + "column": 23 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 9908, + "end": 9942, + "loc": { + "start": { + "line": 510, + "column": 2 + }, + "end": { + "line": 510, + "column": 36 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 9914, + "end": 9941, + "loc": { + "start": { + "line": 510, + "column": 8 + }, + "end": { + "line": 510, + "column": 35 + } + }, + "id": { + "type": "Identifier", + "start": 9914, + "end": 9915, + "loc": { + "start": { + "line": 510, + "column": 8 + }, + "end": { + "line": 510, + "column": 9 + }, + "identifierName": "b" + }, + "name": "b" + }, + "init": { + "type": "CallExpression", + "start": 9918, + "end": 9941, + "loc": { + "start": { + "line": 510, + "column": 12 + }, + "end": { + "line": 510, + "column": 35 + } + }, + "callee": { + "type": "MemberExpression", + "start": 9918, + "end": 9938, + "loc": { + "start": { + "line": 510, + "column": 12 + }, + "end": { + "line": 510, + "column": 32 + } + }, + "object": { + "type": "Identifier", + "start": 9918, + "end": 9923, + "loc": { + "start": { + "line": 510, + "column": 12 + }, + "end": { + "line": 510, + "column": 17 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 9924, + "end": 9938, + "loc": { + "start": { + "line": 510, + "column": 18 + }, + "end": { + "line": 510, + "column": 32 + }, + "identifierName": "_limbs_in_base" + }, + "name": "_limbs_in_base" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 9939, + "end": 9940, + "loc": { + "start": { + "line": 510, + "column": 33 + }, + "end": { + "line": 510, + "column": 34 + }, + "identifierName": "r" + }, + "name": "r" + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 9945, + "end": 10020, + "loc": { + "start": { + "line": 511, + "column": 2 + }, + "end": { + "line": 511, + "column": 77 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 9951, + "end": 10019, + "loc": { + "start": { + "line": 511, + "column": 8 + }, + "end": { + "line": 511, + "column": 76 + } + }, + "id": { + "type": "ArrayPattern", + "start": 9951, + "end": 9962, + "loc": { + "start": { + "line": 511, + "column": 8 + }, + "end": { + "line": 511, + "column": 19 + } + }, + "elements": [ + { + "type": "Identifier", + "start": 9952, + "end": 9953, + "loc": { + "start": { + "line": 511, + "column": 9 + }, + "end": { + "line": 511, + "column": 10 + }, + "identifierName": "d" + }, + "name": "d" + }, + { + "type": "Identifier", + "start": 9955, + "end": 9957, + "loc": { + "start": { + "line": 511, + "column": 12 + }, + "end": { + "line": 511, + "column": 14 + }, + "identifierName": "di" + }, + "name": "di" + }, + { + "type": "Identifier", + "start": 9959, + "end": 9961, + "loc": { + "start": { + "line": 511, + "column": 16 + }, + "end": { + "line": 511, + "column": 18 + }, + "identifierName": "dj" + }, + "name": "dj" + } + ] + }, + "init": { + "type": "CallExpression", + "start": 9965, + "end": 10019, + "loc": { + "start": { + "line": 511, + "column": 22 + }, + "end": { + "line": 511, + "column": 76 + } + }, + "callee": { + "type": "Identifier", + "start": 9965, + "end": 9984, + "loc": { + "start": { + "line": 511, + "column": 22 + }, + "end": { + "line": 511, + "column": 41 + }, + "identifierName": "euclidean_algorithm" + }, + "name": "euclidean_algorithm" + }, + "arguments": [ + { + "type": "Identifier", + "start": 9985, + "end": 9986, + "loc": { + "start": { + "line": 511, + "column": 42 + }, + "end": { + "line": 511, + "column": 43 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "Identifier", + "start": 9988, + "end": 9989, + "loc": { + "start": { + "line": 511, + "column": 45 + }, + "end": { + "line": 511, + "column": 46 + }, + "identifierName": "a" + }, + "name": "a" + }, + { + "type": "NumericLiteral", + "start": 9991, + "end": 9992, + "loc": { + "start": { + "line": 511, + "column": 48 + }, + "end": { + "line": 511, + "column": 49 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 9994, + "end": 10002, + "loc": { + "start": { + "line": 511, + "column": 51 + }, + "end": { + "line": 511, + "column": 59 + } + }, + "object": { + "type": "Identifier", + "start": 9994, + "end": 9995, + "loc": { + "start": { + "line": 511, + "column": 51 + }, + "end": { + "line": 511, + "column": 52 + }, + "identifierName": "a" + }, + "name": "a" + }, + "property": { + "type": "Identifier", + "start": 9996, + "end": 10002, + "loc": { + "start": { + "line": 511, + "column": 53 + }, + "end": { + "line": 511, + "column": 59 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 10004, + "end": 10005, + "loc": { + "start": { + "line": 511, + "column": 61 + }, + "end": { + "line": 511, + "column": 62 + }, + "identifierName": "b" + }, + "name": "b" + }, + { + "type": "NumericLiteral", + "start": 10007, + "end": 10008, + "loc": { + "start": { + "line": 511, + "column": 64 + }, + "end": { + "line": 511, + "column": 65 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 10010, + "end": 10018, + "loc": { + "start": { + "line": 511, + "column": 67 + }, + "end": { + "line": 511, + "column": 75 + } + }, + "object": { + "type": "Identifier", + "start": 10010, + "end": 10011, + "loc": { + "start": { + "line": 511, + "column": 67 + }, + "end": { + "line": 511, + "column": 68 + }, + "identifierName": "b" + }, + "name": "b" + }, + "property": { + "type": "Identifier", + "start": 10012, + "end": 10018, + "loc": { + "start": { + "line": 511, + "column": 69 + }, + "end": { + "line": 511, + "column": 75 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 10023, + "end": 10051, + "loc": { + "start": { + "line": 512, + "column": 2 + }, + "end": { + "line": 512, + "column": 30 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 10029, + "end": 10050, + "loc": { + "start": { + "line": 512, + "column": 8 + }, + "end": { + "line": 512, + "column": 29 + } + }, + "id": { + "type": "Identifier", + "start": 10029, + "end": 10032, + "loc": { + "start": { + "line": 512, + "column": 8 + }, + "end": { + "line": 512, + "column": 11 + }, + "identifierName": "gcd" + }, + "name": "gcd" + }, + "init": { + "type": "CallExpression", + "start": 10035, + "end": 10050, + "loc": { + "start": { + "line": 512, + "column": 14 + }, + "end": { + "line": 512, + "column": 29 + } + }, + "callee": { + "type": "Identifier", + "start": 10035, + "end": 10041, + "loc": { + "start": { + "line": 512, + "column": 14 + }, + "end": { + "line": 512, + "column": 20 + }, + "identifierName": "_alloc" + }, + "name": "_alloc" + }, + "arguments": [ + { + "type": "BinaryExpression", + "start": 10042, + "end": 10049, + "loc": { + "start": { + "line": 512, + "column": 21 + }, + "end": { + "line": 512, + "column": 28 + } + }, + "left": { + "type": "Identifier", + "start": 10042, + "end": 10044, + "loc": { + "start": { + "line": 512, + "column": 21 + }, + "end": { + "line": 512, + "column": 23 + }, + "identifierName": "dj" + }, + "name": "dj" + }, + "operator": "-", + "right": { + "type": "Identifier", + "start": 10047, + "end": 10049, + "loc": { + "start": { + "line": 512, + "column": 26 + }, + "end": { + "line": 512, + "column": 28 + }, + "identifierName": "di" + }, + "name": "di" + } + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "ExpressionStatement", + "start": 10054, + "end": 10079, + "loc": { + "start": { + "line": 513, + "column": 2 + }, + "end": { + "line": 513, + "column": 27 + } + }, + "expression": { + "type": "CallExpression", + "start": 10054, + "end": 10078, + "loc": { + "start": { + "line": 513, + "column": 2 + }, + "end": { + "line": 513, + "column": 26 + } + }, + "callee": { + "type": "Identifier", + "start": 10054, + "end": 10059, + "loc": { + "start": { + "line": 513, + "column": 2 + }, + "end": { + "line": 513, + "column": 7 + }, + "identifierName": "_copy" + }, + "name": "_copy" + }, + "arguments": [ + { + "type": "Identifier", + "start": 10060, + "end": 10061, + "loc": { + "start": { + "line": 513, + "column": 8 + }, + "end": { + "line": 513, + "column": 9 + }, + "identifierName": "d" + }, + "name": "d" + }, + { + "type": "Identifier", + "start": 10063, + "end": 10065, + "loc": { + "start": { + "line": 513, + "column": 11 + }, + "end": { + "line": 513, + "column": 13 + }, + "identifierName": "di" + }, + "name": "di" + }, + { + "type": "Identifier", + "start": 10067, + "end": 10069, + "loc": { + "start": { + "line": 513, + "column": 15 + }, + "end": { + "line": 513, + "column": 17 + }, + "identifierName": "dj" + }, + "name": "dj" + }, + { + "type": "Identifier", + "start": 10071, + "end": 10074, + "loc": { + "start": { + "line": 513, + "column": 19 + }, + "end": { + "line": 513, + "column": 22 + }, + "identifierName": "gcd" + }, + "name": "gcd" + }, + { + "type": "NumericLiteral", + "start": 10076, + "end": 10077, + "loc": { + "start": { + "line": 513, + "column": 24 + }, + "end": { + "line": 513, + "column": 25 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + ] + } + }, + { + "type": "ReturnStatement", + "start": 10082, + "end": 10112, + "loc": { + "start": { + "line": 514, + "column": 2 + }, + "end": { + "line": 514, + "column": 32 + } + }, + "argument": { + "type": "NewExpression", + "start": 10089, + "end": 10111, + "loc": { + "start": { + "line": 514, + "column": 9 + }, + "end": { + "line": 514, + "column": 31 + } + }, + "callee": { + "type": "Identifier", + "start": 10093, + "end": 10100, + "loc": { + "start": { + "line": 514, + "column": 13 + }, + "end": { + "line": 514, + "column": 20 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "Identifier", + "start": 10101, + "end": 10102, + "loc": { + "start": { + "line": 514, + "column": 21 + }, + "end": { + "line": 514, + "column": 22 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "NumericLiteral", + "start": 10104, + "end": 10105, + "loc": { + "start": { + "line": 514, + "column": 24 + }, + "end": { + "line": 514, + "column": 25 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "Identifier", + "start": 10107, + "end": 10110, + "loc": { + "start": { + "line": 514, + "column": 27 + }, + "end": { + "line": 514, + "column": 30 + }, + "identifierName": "gcd" + }, + "name": "gcd" + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 10118, + "end": 11292, + "loc": { + "start": { + "line": 517, + "column": 1 + }, + "end": { + "line": 564, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 10118, + "end": 10122, + "loc": { + "start": { + "line": 517, + "column": 1 + }, + "end": { + "line": 517, + "column": 5 + }, + "identifierName": "egcd" + }, + "name": "egcd" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 10123, + "end": 10128, + "loc": { + "start": { + "line": 517, + "column": 6 + }, + "end": { + "line": 517, + "column": 11 + }, + "identifierName": "other" + }, + "name": "other" + } + ], + "body": { + "type": "BlockStatement", + "start": 10130, + "end": 11292, + "loc": { + "start": { + "line": 517, + "column": 13 + }, + "end": { + "line": 564, + "column": 2 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 10134, + "end": 10155, + "loc": { + "start": { + "line": 518, + "column": 2 + }, + "end": { + "line": 518, + "column": 23 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 10140, + "end": 10154, + "loc": { + "start": { + "line": 518, + "column": 8 + }, + "end": { + "line": 518, + "column": 22 + } + }, + "id": { + "type": "Identifier", + "start": 10140, + "end": 10141, + "loc": { + "start": { + "line": 518, + "column": 8 + }, + "end": { + "line": 518, + "column": 9 + }, + "identifierName": "r" + }, + "name": "r" + }, + "init": { + "type": "MemberExpression", + "start": 10144, + "end": 10154, + "loc": { + "start": { + "line": 518, + "column": 12 + }, + "end": { + "line": 518, + "column": 22 + } + }, + "object": { + "type": "ThisExpression", + "start": 10144, + "end": 10148, + "loc": { + "start": { + "line": 518, + "column": 12 + }, + "end": { + "line": 518, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 10149, + "end": 10154, + "loc": { + "start": { + "line": 518, + "column": 17 + }, + "end": { + "line": 518, + "column": 22 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 10158, + "end": 10180, + "loc": { + "start": { + "line": 519, + "column": 2 + }, + "end": { + "line": 519, + "column": 24 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 10164, + "end": 10179, + "loc": { + "start": { + "line": 519, + "column": 8 + }, + "end": { + "line": 519, + "column": 23 + } + }, + "id": { + "type": "Identifier", + "start": 10164, + "end": 10165, + "loc": { + "start": { + "line": 519, + "column": 8 + }, + "end": { + "line": 519, + "column": 9 + }, + "identifierName": "a" + }, + "name": "a" + }, + "init": { + "type": "MemberExpression", + "start": 10168, + "end": 10179, + "loc": { + "start": { + "line": 519, + "column": 12 + }, + "end": { + "line": 519, + "column": 23 + } + }, + "object": { + "type": "ThisExpression", + "start": 10168, + "end": 10172, + "loc": { + "start": { + "line": 519, + "column": 12 + }, + "end": { + "line": 519, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 10173, + "end": 10179, + "loc": { + "start": { + "line": 519, + "column": 17 + }, + "end": { + "line": 519, + "column": 23 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 10183, + "end": 10217, + "loc": { + "start": { + "line": 520, + "column": 2 + }, + "end": { + "line": 520, + "column": 36 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 10189, + "end": 10216, + "loc": { + "start": { + "line": 520, + "column": 8 + }, + "end": { + "line": 520, + "column": 35 + } + }, + "id": { + "type": "Identifier", + "start": 10189, + "end": 10190, + "loc": { + "start": { + "line": 520, + "column": 8 + }, + "end": { + "line": 520, + "column": 9 + }, + "identifierName": "b" + }, + "name": "b" + }, + "init": { + "type": "CallExpression", + "start": 10193, + "end": 10216, + "loc": { + "start": { + "line": 520, + "column": 12 + }, + "end": { + "line": 520, + "column": 35 + } + }, + "callee": { + "type": "MemberExpression", + "start": 10193, + "end": 10213, + "loc": { + "start": { + "line": 520, + "column": 12 + }, + "end": { + "line": 520, + "column": 32 + } + }, + "object": { + "type": "Identifier", + "start": 10193, + "end": 10198, + "loc": { + "start": { + "line": 520, + "column": 12 + }, + "end": { + "line": 520, + "column": 17 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 10199, + "end": 10213, + "loc": { + "start": { + "line": 520, + "column": 18 + }, + "end": { + "line": 520, + "column": 32 + }, + "identifierName": "_limbs_in_base" + }, + "name": "_limbs_in_base" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 10214, + "end": 10215, + "loc": { + "start": { + "line": 520, + "column": 33 + }, + "end": { + "line": 520, + "column": 34 + }, + "identifierName": "r" + }, + "name": "r" + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 10220, + "end": 10383, + "loc": { + "start": { + "line": 521, + "column": 2 + }, + "end": { + "line": 533, + "column": 70 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 10226, + "end": 10382, + "loc": { + "start": { + "line": 521, + "column": 8 + }, + "end": { + "line": 533, + "column": 69 + } + }, + "id": { + "type": "ArrayPattern", + "start": 10226, + "end": 10316, + "loc": { + "start": { + "line": 521, + "column": 8 + }, + "end": { + "line": 533, + "column": 3 + } + }, + "elements": [ + { + "type": "Identifier", + "start": 10231, + "end": 10233, + "loc": { + "start": { + "line": 522, + "column": 3 + }, + "end": { + "line": 522, + "column": 5 + }, + "identifierName": "R0" + }, + "name": "R0" + }, + { + "type": "Identifier", + "start": 10238, + "end": 10241, + "loc": { + "start": { + "line": 523, + "column": 3 + }, + "end": { + "line": 523, + "column": 6 + }, + "identifierName": "R0i" + }, + "name": "R0i" + }, + { + "type": "Identifier", + "start": 10246, + "end": 10248, + "loc": { + "start": { + "line": 524, + "column": 3 + }, + "end": { + "line": 524, + "column": 5 + }, + "identifierName": "S0" + }, + "name": "S0" + }, + { + "type": "Identifier", + "start": 10253, + "end": 10256, + "loc": { + "start": { + "line": 525, + "column": 3 + }, + "end": { + "line": 525, + "column": 6 + }, + "identifierName": "S0i" + }, + "name": "S0i" + }, + { + "type": "Identifier", + "start": 10261, + "end": 10263, + "loc": { + "start": { + "line": 526, + "column": 3 + }, + "end": { + "line": 526, + "column": 5 + }, + "identifierName": "T0" + }, + "name": "T0" + }, + { + "type": "Identifier", + "start": 10268, + "end": 10271, + "loc": { + "start": { + "line": 527, + "column": 3 + }, + "end": { + "line": 527, + "column": 6 + }, + "identifierName": "T0i" + }, + "name": "T0i" + }, + { + "type": "Identifier", + "start": 10276, + "end": 10278, + "loc": { + "start": { + "line": 528, + "column": 3 + }, + "end": { + "line": 528, + "column": 5 + }, + "identifierName": "S1" + }, + "name": "S1" + }, + { + "type": "Identifier", + "start": 10283, + "end": 10286, + "loc": { + "start": { + "line": 529, + "column": 3 + }, + "end": { + "line": 529, + "column": 6 + }, + "identifierName": "S1i" + }, + "name": "S1i" + }, + { + "type": "Identifier", + "start": 10291, + "end": 10293, + "loc": { + "start": { + "line": 530, + "column": 3 + }, + "end": { + "line": 530, + "column": 5 + }, + "identifierName": "T1" + }, + "name": "T1" + }, + { + "type": "Identifier", + "start": 10298, + "end": 10301, + "loc": { + "start": { + "line": 531, + "column": 3 + }, + "end": { + "line": 531, + "column": 6 + }, + "identifierName": "T1i" + }, + "name": "T1i" + }, + { + "type": "Identifier", + "start": 10306, + "end": 10311, + "loc": { + "start": { + "line": 532, + "column": 3 + }, + "end": { + "line": 532, + "column": 8 + }, + "identifierName": "steps" + }, + "name": "steps" + } + ] + }, + "init": { + "type": "CallExpression", + "start": 10319, + "end": 10382, + "loc": { + "start": { + "line": 533, + "column": 6 + }, + "end": { + "line": 533, + "column": 69 + } + }, + "callee": { + "type": "Identifier", + "start": 10319, + "end": 10347, + "loc": { + "start": { + "line": 533, + "column": 6 + }, + "end": { + "line": 533, + "column": 34 + }, + "identifierName": "extended_euclidean_algorithm" + }, + "name": "extended_euclidean_algorithm" + }, + "arguments": [ + { + "type": "Identifier", + "start": 10348, + "end": 10349, + "loc": { + "start": { + "line": 533, + "column": 35 + }, + "end": { + "line": 533, + "column": 36 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "Identifier", + "start": 10351, + "end": 10352, + "loc": { + "start": { + "line": 533, + "column": 38 + }, + "end": { + "line": 533, + "column": 39 + }, + "identifierName": "a" + }, + "name": "a" + }, + { + "type": "NumericLiteral", + "start": 10354, + "end": 10355, + "loc": { + "start": { + "line": 533, + "column": 41 + }, + "end": { + "line": 533, + "column": 42 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 10357, + "end": 10365, + "loc": { + "start": { + "line": 533, + "column": 44 + }, + "end": { + "line": 533, + "column": 52 + } + }, + "object": { + "type": "Identifier", + "start": 10357, + "end": 10358, + "loc": { + "start": { + "line": 533, + "column": 44 + }, + "end": { + "line": 533, + "column": 45 + }, + "identifierName": "a" + }, + "name": "a" + }, + "property": { + "type": "Identifier", + "start": 10359, + "end": 10365, + "loc": { + "start": { + "line": 533, + "column": 46 + }, + "end": { + "line": 533, + "column": 52 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 10367, + "end": 10368, + "loc": { + "start": { + "line": 533, + "column": 54 + }, + "end": { + "line": 533, + "column": 55 + }, + "identifierName": "b" + }, + "name": "b" + }, + { + "type": "NumericLiteral", + "start": 10370, + "end": 10371, + "loc": { + "start": { + "line": 533, + "column": 57 + }, + "end": { + "line": 533, + "column": 58 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 10373, + "end": 10381, + "loc": { + "start": { + "line": 533, + "column": 60 + }, + "end": { + "line": 533, + "column": 68 + } + }, + "object": { + "type": "Identifier", + "start": 10373, + "end": 10374, + "loc": { + "start": { + "line": 533, + "column": 60 + }, + "end": { + "line": 533, + "column": 61 + }, + "identifierName": "b" + }, + "name": "b" + }, + "property": { + "type": "Identifier", + "start": 10375, + "end": 10381, + "loc": { + "start": { + "line": 533, + "column": 62 + }, + "end": { + "line": 533, + "column": 68 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 10386, + "end": 10422, + "loc": { + "start": { + "line": 534, + "column": 2 + }, + "end": { + "line": 534, + "column": 38 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 10392, + "end": 10421, + "loc": { + "start": { + "line": 534, + "column": 8 + }, + "end": { + "line": 534, + "column": 37 + } + }, + "id": { + "type": "Identifier", + "start": 10392, + "end": 10395, + "loc": { + "start": { + "line": 534, + "column": 8 + }, + "end": { + "line": 534, + "column": 11 + }, + "identifierName": "gcd" + }, + "name": "gcd" + }, + "init": { + "type": "CallExpression", + "start": 10398, + "end": 10421, + "loc": { + "start": { + "line": 534, + "column": 14 + }, + "end": { + "line": 534, + "column": 37 + } + }, + "callee": { + "type": "Identifier", + "start": 10398, + "end": 10404, + "loc": { + "start": { + "line": 534, + "column": 14 + }, + "end": { + "line": 534, + "column": 20 + }, + "identifierName": "_alloc" + }, + "name": "_alloc" + }, + "arguments": [ + { + "type": "BinaryExpression", + "start": 10405, + "end": 10420, + "loc": { + "start": { + "line": 534, + "column": 21 + }, + "end": { + "line": 534, + "column": 36 + } + }, + "left": { + "type": "MemberExpression", + "start": 10405, + "end": 10414, + "loc": { + "start": { + "line": 534, + "column": 21 + }, + "end": { + "line": 534, + "column": 30 + } + }, + "object": { + "type": "Identifier", + "start": 10405, + "end": 10407, + "loc": { + "start": { + "line": 534, + "column": 21 + }, + "end": { + "line": 534, + "column": 23 + }, + "identifierName": "R0" + }, + "name": "R0" + }, + "property": { + "type": "Identifier", + "start": 10408, + "end": 10414, + "loc": { + "start": { + "line": 534, + "column": 24 + }, + "end": { + "line": 534, + "column": 30 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + "operator": "-", + "right": { + "type": "Identifier", + "start": 10417, + "end": 10420, + "loc": { + "start": { + "line": 534, + "column": 33 + }, + "end": { + "line": 534, + "column": 36 + }, + "identifierName": "R0i" + }, + "name": "R0i" + } + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "ExpressionStatement", + "start": 10425, + "end": 10459, + "loc": { + "start": { + "line": 535, + "column": 2 + }, + "end": { + "line": 535, + "column": 36 + } + }, + "expression": { + "type": "CallExpression", + "start": 10425, + "end": 10458, + "loc": { + "start": { + "line": 535, + "column": 2 + }, + "end": { + "line": 535, + "column": 35 + } + }, + "callee": { + "type": "Identifier", + "start": 10425, + "end": 10430, + "loc": { + "start": { + "line": 535, + "column": 2 + }, + "end": { + "line": 535, + "column": 7 + }, + "identifierName": "_copy" + }, + "name": "_copy" + }, + "arguments": [ + { + "type": "Identifier", + "start": 10431, + "end": 10433, + "loc": { + "start": { + "line": 535, + "column": 8 + }, + "end": { + "line": 535, + "column": 10 + }, + "identifierName": "R0" + }, + "name": "R0" + }, + { + "type": "Identifier", + "start": 10435, + "end": 10438, + "loc": { + "start": { + "line": 535, + "column": 12 + }, + "end": { + "line": 535, + "column": 15 + }, + "identifierName": "R0i" + }, + "name": "R0i" + }, + { + "type": "MemberExpression", + "start": 10440, + "end": 10449, + "loc": { + "start": { + "line": 535, + "column": 17 + }, + "end": { + "line": 535, + "column": 26 + } + }, + "object": { + "type": "Identifier", + "start": 10440, + "end": 10442, + "loc": { + "start": { + "line": 535, + "column": 17 + }, + "end": { + "line": 535, + "column": 19 + }, + "identifierName": "R0" + }, + "name": "R0" + }, + "property": { + "type": "Identifier", + "start": 10443, + "end": 10449, + "loc": { + "start": { + "line": 535, + "column": 20 + }, + "end": { + "line": 535, + "column": 26 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 10451, + "end": 10454, + "loc": { + "start": { + "line": 535, + "column": 28 + }, + "end": { + "line": 535, + "column": 31 + }, + "identifierName": "gcd" + }, + "name": "gcd" + }, + { + "type": "NumericLiteral", + "start": 10456, + "end": 10457, + "loc": { + "start": { + "line": 535, + "column": 33 + }, + "end": { + "line": 535, + "column": 34 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + ] + } + }, + { + "type": "VariableDeclaration", + "start": 10462, + "end": 10496, + "loc": { + "start": { + "line": 536, + "column": 2 + }, + "end": { + "line": 536, + "column": 36 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 10468, + "end": 10495, + "loc": { + "start": { + "line": 536, + "column": 8 + }, + "end": { + "line": 536, + "column": 35 + } + }, + "id": { + "type": "Identifier", + "start": 10468, + "end": 10469, + "loc": { + "start": { + "line": 536, + "column": 8 + }, + "end": { + "line": 536, + "column": 9 + }, + "identifierName": "x" + }, + "name": "x" + }, + "init": { + "type": "CallExpression", + "start": 10472, + "end": 10495, + "loc": { + "start": { + "line": 536, + "column": 12 + }, + "end": { + "line": 536, + "column": 35 + } + }, + "callee": { + "type": "Identifier", + "start": 10472, + "end": 10478, + "loc": { + "start": { + "line": 536, + "column": 12 + }, + "end": { + "line": 536, + "column": 18 + }, + "identifierName": "_alloc" + }, + "name": "_alloc" + }, + "arguments": [ + { + "type": "BinaryExpression", + "start": 10479, + "end": 10494, + "loc": { + "start": { + "line": 536, + "column": 19 + }, + "end": { + "line": 536, + "column": 34 + } + }, + "left": { + "type": "MemberExpression", + "start": 10479, + "end": 10488, + "loc": { + "start": { + "line": 536, + "column": 19 + }, + "end": { + "line": 536, + "column": 28 + } + }, + "object": { + "type": "Identifier", + "start": 10479, + "end": 10481, + "loc": { + "start": { + "line": 536, + "column": 19 + }, + "end": { + "line": 536, + "column": 21 + }, + "identifierName": "S0" + }, + "name": "S0" + }, + "property": { + "type": "Identifier", + "start": 10482, + "end": 10488, + "loc": { + "start": { + "line": 536, + "column": 22 + }, + "end": { + "line": 536, + "column": 28 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + "operator": "-", + "right": { + "type": "Identifier", + "start": 10491, + "end": 10494, + "loc": { + "start": { + "line": 536, + "column": 31 + }, + "end": { + "line": 536, + "column": 34 + }, + "identifierName": "S0i" + }, + "name": "S0i" + } + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "ExpressionStatement", + "start": 10499, + "end": 10531, + "loc": { + "start": { + "line": 537, + "column": 2 + }, + "end": { + "line": 537, + "column": 34 + } + }, + "expression": { + "type": "CallExpression", + "start": 10499, + "end": 10530, + "loc": { + "start": { + "line": 537, + "column": 2 + }, + "end": { + "line": 537, + "column": 33 + } + }, + "callee": { + "type": "Identifier", + "start": 10499, + "end": 10504, + "loc": { + "start": { + "line": 537, + "column": 2 + }, + "end": { + "line": 537, + "column": 7 + }, + "identifierName": "_copy" + }, + "name": "_copy" + }, + "arguments": [ + { + "type": "Identifier", + "start": 10505, + "end": 10507, + "loc": { + "start": { + "line": 537, + "column": 8 + }, + "end": { + "line": 537, + "column": 10 + }, + "identifierName": "S0" + }, + "name": "S0" + }, + { + "type": "Identifier", + "start": 10509, + "end": 10512, + "loc": { + "start": { + "line": 537, + "column": 12 + }, + "end": { + "line": 537, + "column": 15 + }, + "identifierName": "S0i" + }, + "name": "S0i" + }, + { + "type": "MemberExpression", + "start": 10514, + "end": 10523, + "loc": { + "start": { + "line": 537, + "column": 17 + }, + "end": { + "line": 537, + "column": 26 + } + }, + "object": { + "type": "Identifier", + "start": 10514, + "end": 10516, + "loc": { + "start": { + "line": 537, + "column": 17 + }, + "end": { + "line": 537, + "column": 19 + }, + "identifierName": "S0" + }, + "name": "S0" + }, + "property": { + "type": "Identifier", + "start": 10517, + "end": 10523, + "loc": { + "start": { + "line": 537, + "column": 20 + }, + "end": { + "line": 537, + "column": 26 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 10525, + "end": 10526, + "loc": { + "start": { + "line": 537, + "column": 28 + }, + "end": { + "line": 537, + "column": 29 + }, + "identifierName": "x" + }, + "name": "x" + }, + { + "type": "NumericLiteral", + "start": 10528, + "end": 10529, + "loc": { + "start": { + "line": 537, + "column": 31 + }, + "end": { + "line": 537, + "column": 32 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + ] + } + }, + { + "type": "VariableDeclaration", + "start": 10534, + "end": 10568, + "loc": { + "start": { + "line": 538, + "column": 2 + }, + "end": { + "line": 538, + "column": 36 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 10540, + "end": 10567, + "loc": { + "start": { + "line": 538, + "column": 8 + }, + "end": { + "line": 538, + "column": 35 + } + }, + "id": { + "type": "Identifier", + "start": 10540, + "end": 10541, + "loc": { + "start": { + "line": 538, + "column": 8 + }, + "end": { + "line": 538, + "column": 9 + }, + "identifierName": "y" + }, + "name": "y" + }, + "init": { + "type": "CallExpression", + "start": 10544, + "end": 10567, + "loc": { + "start": { + "line": 538, + "column": 12 + }, + "end": { + "line": 538, + "column": 35 + } + }, + "callee": { + "type": "Identifier", + "start": 10544, + "end": 10550, + "loc": { + "start": { + "line": 538, + "column": 12 + }, + "end": { + "line": 538, + "column": 18 + }, + "identifierName": "_alloc" + }, + "name": "_alloc" + }, + "arguments": [ + { + "type": "BinaryExpression", + "start": 10551, + "end": 10566, + "loc": { + "start": { + "line": 538, + "column": 19 + }, + "end": { + "line": 538, + "column": 34 + } + }, + "left": { + "type": "MemberExpression", + "start": 10551, + "end": 10560, + "loc": { + "start": { + "line": 538, + "column": 19 + }, + "end": { + "line": 538, + "column": 28 + } + }, + "object": { + "type": "Identifier", + "start": 10551, + "end": 10553, + "loc": { + "start": { + "line": 538, + "column": 19 + }, + "end": { + "line": 538, + "column": 21 + }, + "identifierName": "T0" + }, + "name": "T0" + }, + "property": { + "type": "Identifier", + "start": 10554, + "end": 10560, + "loc": { + "start": { + "line": 538, + "column": 22 + }, + "end": { + "line": 538, + "column": 28 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + "operator": "-", + "right": { + "type": "Identifier", + "start": 10563, + "end": 10566, + "loc": { + "start": { + "line": 538, + "column": 31 + }, + "end": { + "line": 538, + "column": 34 + }, + "identifierName": "T0i" + }, + "name": "T0i" + } + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "ExpressionStatement", + "start": 10571, + "end": 10603, + "loc": { + "start": { + "line": 539, + "column": 2 + }, + "end": { + "line": 539, + "column": 34 + } + }, + "expression": { + "type": "CallExpression", + "start": 10571, + "end": 10602, + "loc": { + "start": { + "line": 539, + "column": 2 + }, + "end": { + "line": 539, + "column": 33 + } + }, + "callee": { + "type": "Identifier", + "start": 10571, + "end": 10576, + "loc": { + "start": { + "line": 539, + "column": 2 + }, + "end": { + "line": 539, + "column": 7 + }, + "identifierName": "_copy" + }, + "name": "_copy" + }, + "arguments": [ + { + "type": "Identifier", + "start": 10577, + "end": 10579, + "loc": { + "start": { + "line": 539, + "column": 8 + }, + "end": { + "line": 539, + "column": 10 + }, + "identifierName": "T0" + }, + "name": "T0" + }, + { + "type": "Identifier", + "start": 10581, + "end": 10584, + "loc": { + "start": { + "line": 539, + "column": 12 + }, + "end": { + "line": 539, + "column": 15 + }, + "identifierName": "T0i" + }, + "name": "T0i" + }, + { + "type": "MemberExpression", + "start": 10586, + "end": 10595, + "loc": { + "start": { + "line": 539, + "column": 17 + }, + "end": { + "line": 539, + "column": 26 + } + }, + "object": { + "type": "Identifier", + "start": 10586, + "end": 10588, + "loc": { + "start": { + "line": 539, + "column": 17 + }, + "end": { + "line": 539, + "column": 19 + }, + "identifierName": "T0" + }, + "name": "T0" + }, + "property": { + "type": "Identifier", + "start": 10589, + "end": 10595, + "loc": { + "start": { + "line": 539, + "column": 20 + }, + "end": { + "line": 539, + "column": 26 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 10597, + "end": 10598, + "loc": { + "start": { + "line": 539, + "column": 28 + }, + "end": { + "line": 539, + "column": 29 + }, + "identifierName": "y" + }, + "name": "y" + }, + { + "type": "NumericLiteral", + "start": 10600, + "end": 10601, + "loc": { + "start": { + "line": 539, + "column": 31 + }, + "end": { + "line": 539, + "column": 32 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + ] + } + }, + { + "type": "VariableDeclaration", + "start": 10606, + "end": 10640, + "loc": { + "start": { + "line": 540, + "column": 2 + }, + "end": { + "line": 540, + "column": 36 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 10612, + "end": 10639, + "loc": { + "start": { + "line": 540, + "column": 8 + }, + "end": { + "line": 540, + "column": 35 + } + }, + "id": { + "type": "Identifier", + "start": 10612, + "end": 10613, + "loc": { + "start": { + "line": 540, + "column": 8 + }, + "end": { + "line": 540, + "column": 9 + }, + "identifierName": "u" + }, + "name": "u" + }, + "init": { + "type": "CallExpression", + "start": 10616, + "end": 10639, + "loc": { + "start": { + "line": 540, + "column": 12 + }, + "end": { + "line": 540, + "column": 35 + } + }, + "callee": { + "type": "Identifier", + "start": 10616, + "end": 10622, + "loc": { + "start": { + "line": 540, + "column": 12 + }, + "end": { + "line": 540, + "column": 18 + }, + "identifierName": "_alloc" + }, + "name": "_alloc" + }, + "arguments": [ + { + "type": "BinaryExpression", + "start": 10623, + "end": 10638, + "loc": { + "start": { + "line": 540, + "column": 19 + }, + "end": { + "line": 540, + "column": 34 + } + }, + "left": { + "type": "MemberExpression", + "start": 10623, + "end": 10632, + "loc": { + "start": { + "line": 540, + "column": 19 + }, + "end": { + "line": 540, + "column": 28 + } + }, + "object": { + "type": "Identifier", + "start": 10623, + "end": 10625, + "loc": { + "start": { + "line": 540, + "column": 19 + }, + "end": { + "line": 540, + "column": 21 + }, + "identifierName": "S1" + }, + "name": "S1" + }, + "property": { + "type": "Identifier", + "start": 10626, + "end": 10632, + "loc": { + "start": { + "line": 540, + "column": 22 + }, + "end": { + "line": 540, + "column": 28 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + "operator": "-", + "right": { + "type": "Identifier", + "start": 10635, + "end": 10638, + "loc": { + "start": { + "line": 540, + "column": 31 + }, + "end": { + "line": 540, + "column": 34 + }, + "identifierName": "S1i" + }, + "name": "S1i" + } + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "ExpressionStatement", + "start": 10643, + "end": 10675, + "loc": { + "start": { + "line": 541, + "column": 2 + }, + "end": { + "line": 541, + "column": 34 + } + }, + "expression": { + "type": "CallExpression", + "start": 10643, + "end": 10674, + "loc": { + "start": { + "line": 541, + "column": 2 + }, + "end": { + "line": 541, + "column": 33 + } + }, + "callee": { + "type": "Identifier", + "start": 10643, + "end": 10648, + "loc": { + "start": { + "line": 541, + "column": 2 + }, + "end": { + "line": 541, + "column": 7 + }, + "identifierName": "_copy" + }, + "name": "_copy" + }, + "arguments": [ + { + "type": "Identifier", + "start": 10649, + "end": 10651, + "loc": { + "start": { + "line": 541, + "column": 8 + }, + "end": { + "line": 541, + "column": 10 + }, + "identifierName": "S1" + }, + "name": "S1" + }, + { + "type": "Identifier", + "start": 10653, + "end": 10656, + "loc": { + "start": { + "line": 541, + "column": 12 + }, + "end": { + "line": 541, + "column": 15 + }, + "identifierName": "S1i" + }, + "name": "S1i" + }, + { + "type": "MemberExpression", + "start": 10658, + "end": 10667, + "loc": { + "start": { + "line": 541, + "column": 17 + }, + "end": { + "line": 541, + "column": 26 + } + }, + "object": { + "type": "Identifier", + "start": 10658, + "end": 10660, + "loc": { + "start": { + "line": 541, + "column": 17 + }, + "end": { + "line": 541, + "column": 19 + }, + "identifierName": "S1" + }, + "name": "S1" + }, + "property": { + "type": "Identifier", + "start": 10661, + "end": 10667, + "loc": { + "start": { + "line": 541, + "column": 20 + }, + "end": { + "line": 541, + "column": 26 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 10669, + "end": 10670, + "loc": { + "start": { + "line": 541, + "column": 28 + }, + "end": { + "line": 541, + "column": 29 + }, + "identifierName": "u" + }, + "name": "u" + }, + { + "type": "NumericLiteral", + "start": 10672, + "end": 10673, + "loc": { + "start": { + "line": 541, + "column": 31 + }, + "end": { + "line": 541, + "column": 32 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + ] + } + }, + { + "type": "VariableDeclaration", + "start": 10678, + "end": 10712, + "loc": { + "start": { + "line": 542, + "column": 2 + }, + "end": { + "line": 542, + "column": 36 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 10684, + "end": 10711, + "loc": { + "start": { + "line": 542, + "column": 8 + }, + "end": { + "line": 542, + "column": 35 + } + }, + "id": { + "type": "Identifier", + "start": 10684, + "end": 10685, + "loc": { + "start": { + "line": 542, + "column": 8 + }, + "end": { + "line": 542, + "column": 9 + }, + "identifierName": "v" + }, + "name": "v" + }, + "init": { + "type": "CallExpression", + "start": 10688, + "end": 10711, + "loc": { + "start": { + "line": 542, + "column": 12 + }, + "end": { + "line": 542, + "column": 35 + } + }, + "callee": { + "type": "Identifier", + "start": 10688, + "end": 10694, + "loc": { + "start": { + "line": 542, + "column": 12 + }, + "end": { + "line": 542, + "column": 18 + }, + "identifierName": "_alloc" + }, + "name": "_alloc" + }, + "arguments": [ + { + "type": "BinaryExpression", + "start": 10695, + "end": 10710, + "loc": { + "start": { + "line": 542, + "column": 19 + }, + "end": { + "line": 542, + "column": 34 + } + }, + "left": { + "type": "MemberExpression", + "start": 10695, + "end": 10704, + "loc": { + "start": { + "line": 542, + "column": 19 + }, + "end": { + "line": 542, + "column": 28 + } + }, + "object": { + "type": "Identifier", + "start": 10695, + "end": 10697, + "loc": { + "start": { + "line": 542, + "column": 19 + }, + "end": { + "line": 542, + "column": 21 + }, + "identifierName": "T1" + }, + "name": "T1" + }, + "property": { + "type": "Identifier", + "start": 10698, + "end": 10704, + "loc": { + "start": { + "line": 542, + "column": 22 + }, + "end": { + "line": 542, + "column": 28 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + "operator": "-", + "right": { + "type": "Identifier", + "start": 10707, + "end": 10710, + "loc": { + "start": { + "line": 542, + "column": 31 + }, + "end": { + "line": 542, + "column": 34 + }, + "identifierName": "T1i" + }, + "name": "T1i" + } + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "ExpressionStatement", + "start": 10715, + "end": 10747, + "loc": { + "start": { + "line": 543, + "column": 2 + }, + "end": { + "line": 543, + "column": 34 + } + }, + "expression": { + "type": "CallExpression", + "start": 10715, + "end": 10746, + "loc": { + "start": { + "line": 543, + "column": 2 + }, + "end": { + "line": 543, + "column": 33 + } + }, + "callee": { + "type": "Identifier", + "start": 10715, + "end": 10720, + "loc": { + "start": { + "line": 543, + "column": 2 + }, + "end": { + "line": 543, + "column": 7 + }, + "identifierName": "_copy" + }, + "name": "_copy" + }, + "arguments": [ + { + "type": "Identifier", + "start": 10721, + "end": 10723, + "loc": { + "start": { + "line": 543, + "column": 8 + }, + "end": { + "line": 543, + "column": 10 + }, + "identifierName": "T1" + }, + "name": "T1" + }, + { + "type": "Identifier", + "start": 10725, + "end": 10728, + "loc": { + "start": { + "line": 543, + "column": 12 + }, + "end": { + "line": 543, + "column": 15 + }, + "identifierName": "T1i" + }, + "name": "T1i" + }, + { + "type": "MemberExpression", + "start": 10730, + "end": 10739, + "loc": { + "start": { + "line": 543, + "column": 17 + }, + "end": { + "line": 543, + "column": 26 + } + }, + "object": { + "type": "Identifier", + "start": 10730, + "end": 10732, + "loc": { + "start": { + "line": 543, + "column": 17 + }, + "end": { + "line": 543, + "column": 19 + }, + "identifierName": "T1" + }, + "name": "T1" + }, + "property": { + "type": "Identifier", + "start": 10733, + "end": 10739, + "loc": { + "start": { + "line": 543, + "column": 20 + }, + "end": { + "line": 543, + "column": 26 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 10741, + "end": 10742, + "loc": { + "start": { + "line": 543, + "column": 28 + }, + "end": { + "line": 543, + "column": 29 + }, + "identifierName": "v" + }, + "name": "v" + }, + { + "type": "NumericLiteral", + "start": 10744, + "end": 10745, + "loc": { + "start": { + "line": 543, + "column": 31 + }, + "end": { + "line": 543, + "column": 32 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + ] + } + }, + { + "type": "ReturnStatement", + "start": 10750, + "end": 11289, + "loc": { + "start": { + "line": 544, + "column": 2 + }, + "end": { + "line": 563, + "column": 4 + } + }, + "argument": { + "type": "ObjectExpression", + "start": 10757, + "end": 11288, + "loc": { + "start": { + "line": 544, + "column": 9 + }, + "end": { + "line": 563, + "column": 3 + } + }, + "properties": [ + { + "type": "ObjectProperty", + "start": 10792, + "end": 10819, + "loc": { + "start": { + "line": 546, + "column": 3 + }, + "end": { + "line": 546, + "column": 30 + } + }, + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 10792, + "end": 10795, + "loc": { + "start": { + "line": 546, + "column": 3 + }, + "end": { + "line": 546, + "column": 6 + }, + "identifierName": "gcd" + }, + "name": "gcd", + "leadingComments": null + }, + "value": { + "type": "NewExpression", + "start": 10797, + "end": 10819, + "loc": { + "start": { + "line": 546, + "column": 8 + }, + "end": { + "line": 546, + "column": 30 + } + }, + "callee": { + "type": "Identifier", + "start": 10801, + "end": 10808, + "loc": { + "start": { + "line": 546, + "column": 12 + }, + "end": { + "line": 546, + "column": 19 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "Identifier", + "start": 10809, + "end": 10810, + "loc": { + "start": { + "line": 546, + "column": 20 + }, + "end": { + "line": 546, + "column": 21 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "NumericLiteral", + "start": 10812, + "end": 10813, + "loc": { + "start": { + "line": 546, + "column": 23 + }, + "end": { + "line": 546, + "column": 24 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "Identifier", + "start": 10815, + "end": 10818, + "loc": { + "start": { + "line": 546, + "column": 26 + }, + "end": { + "line": 546, + "column": 29 + }, + "identifierName": "gcd" + }, + "name": "gcd" + } + ] + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " TODO use immutable zero", + "start": 10762, + "end": 10788, + "loc": { + "start": { + "line": 545, + "column": 3 + }, + "end": { + "line": 545, + "column": 29 + } + } + } + ] + }, + { + "type": "ObjectProperty", + "start": 10824, + "end": 10937, + "loc": { + "start": { + "line": 547, + "column": 3 + }, + "end": { + "line": 550, + "column": 29 + } + }, + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 10824, + "end": 10825, + "loc": { + "start": { + "line": 547, + "column": 3 + }, + "end": { + "line": 547, + "column": 4 + }, + "identifierName": "x" + }, + "name": "x" + }, + "value": { + "type": "ConditionalExpression", + "start": 10831, + "end": 10937, + "loc": { + "start": { + "line": 548, + "column": 4 + }, + "end": { + "line": 550, + "column": 29 + } + }, + "test": { + "type": "BinaryExpression", + "start": 10831, + "end": 10843, + "loc": { + "start": { + "line": 548, + "column": 4 + }, + "end": { + "line": 548, + "column": 16 + } + }, + "left": { + "type": "MemberExpression", + "start": 10831, + "end": 10839, + "loc": { + "start": { + "line": 548, + "column": 4 + }, + "end": { + "line": 548, + "column": 12 + } + }, + "object": { + "type": "Identifier", + "start": 10831, + "end": 10832, + "loc": { + "start": { + "line": 548, + "column": 4 + }, + "end": { + "line": 548, + "column": 5 + }, + "identifierName": "x" + }, + "name": "x" + }, + "property": { + "type": "Identifier", + "start": 10833, + "end": 10839, + "loc": { + "start": { + "line": 548, + "column": 6 + }, + "end": { + "line": 548, + "column": 12 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + "operator": ">", + "right": { + "type": "NumericLiteral", + "start": 10842, + "end": 10843, + "loc": { + "start": { + "line": 548, + "column": 15 + }, + "end": { + "line": 548, + "column": 16 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + }, + "consequent": { + "type": "NewExpression", + "start": 10851, + "end": 10907, + "loc": { + "start": { + "line": 549, + "column": 7 + }, + "end": { + "line": 549, + "column": 63 + } + }, + "callee": { + "type": "Identifier", + "start": 10855, + "end": 10862, + "loc": { + "start": { + "line": 549, + "column": 11 + }, + "end": { + "line": 549, + "column": 18 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "Identifier", + "start": 10863, + "end": 10864, + "loc": { + "start": { + "line": 549, + "column": 19 + }, + "end": { + "line": 549, + "column": 20 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "BinaryExpression", + "start": 10866, + "end": 10903, + "loc": { + "start": { + "line": 549, + "column": 22 + }, + "end": { + "line": 549, + "column": 59 + } + }, + "left": { + "type": "MemberExpression", + "start": 10866, + "end": 10883, + "loc": { + "start": { + "line": 549, + "column": 22 + }, + "end": { + "line": 549, + "column": 39 + } + }, + "object": { + "type": "ThisExpression", + "start": 10866, + "end": 10870, + "loc": { + "start": { + "line": 549, + "column": 22 + }, + "end": { + "line": 549, + "column": 26 + } + } + }, + "property": { + "type": "Identifier", + "start": 10871, + "end": 10883, + "loc": { + "start": { + "line": 549, + "column": 27 + }, + "end": { + "line": 549, + "column": 39 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "operator": "^", + "right": { + "type": "BinaryExpression", + "start": 10887, + "end": 10902, + "loc": { + "start": { + "line": 549, + "column": 43 + }, + "end": { + "line": 549, + "column": 58 + } + }, + "left": { + "type": "BinaryExpression", + "start": 10888, + "end": 10897, + "loc": { + "start": { + "line": 549, + "column": 44 + }, + "end": { + "line": 549, + "column": 53 + } + }, + "left": { + "type": "Identifier", + "start": 10888, + "end": 10893, + "loc": { + "start": { + "line": 549, + "column": 44 + }, + "end": { + "line": 549, + "column": 49 + }, + "identifierName": "steps" + }, + "name": "steps" + }, + "operator": "%", + "right": { + "type": "NumericLiteral", + "start": 10896, + "end": 10897, + "loc": { + "start": { + "line": 549, + "column": 52 + }, + "end": { + "line": 549, + "column": 53 + } + }, + "extra": { + "rawValue": 2, + "raw": "2" + }, + "value": 2 + }, + "extra": { + "parenthesized": true, + "parenStart": 10887 + } + }, + "operator": "-", + "right": { + "type": "NumericLiteral", + "start": 10901, + "end": 10902, + "loc": { + "start": { + "line": 549, + "column": 57 + }, + "end": { + "line": 549, + "column": 58 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + "extra": { + "parenthesized": true, + "parenStart": 10886 + } + } + }, + { + "type": "Identifier", + "start": 10905, + "end": 10906, + "loc": { + "start": { + "line": 549, + "column": 61 + }, + "end": { + "line": 549, + "column": 62 + }, + "identifierName": "x" + }, + "name": "x" + } + ] + }, + "alternate": { + "type": "NewExpression", + "start": 10915, + "end": 10937, + "loc": { + "start": { + "line": 550, + "column": 7 + }, + "end": { + "line": 550, + "column": 29 + } + }, + "callee": { + "type": "Identifier", + "start": 10919, + "end": 10926, + "loc": { + "start": { + "line": 550, + "column": 11 + }, + "end": { + "line": 550, + "column": 18 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "Identifier", + "start": 10927, + "end": 10928, + "loc": { + "start": { + "line": 550, + "column": 19 + }, + "end": { + "line": 550, + "column": 20 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "NumericLiteral", + "start": 10930, + "end": 10931, + "loc": { + "start": { + "line": 550, + "column": 22 + }, + "end": { + "line": 550, + "column": 23 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "ArrayExpression", + "start": 10933, + "end": 10936, + "loc": { + "start": { + "line": 550, + "column": 25 + }, + "end": { + "line": 550, + "column": 28 + } + }, + "elements": [ + { + "type": "NumericLiteral", + "start": 10934, + "end": 10935, + "loc": { + "start": { + "line": 550, + "column": 26 + }, + "end": { + "line": 550, + "column": 27 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + ] + } + ] + } + } + }, + { + "type": "ObjectProperty", + "start": 10942, + "end": 11051, + "loc": { + "start": { + "line": 551, + "column": 3 + }, + "end": { + "line": 554, + "column": 29 + } + }, + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 10942, + "end": 10943, + "loc": { + "start": { + "line": 551, + "column": 3 + }, + "end": { + "line": 551, + "column": 4 + }, + "identifierName": "y" + }, + "name": "y" + }, + "value": { + "type": "ConditionalExpression", + "start": 10949, + "end": 11051, + "loc": { + "start": { + "line": 552, + "column": 4 + }, + "end": { + "line": 554, + "column": 29 + } + }, + "test": { + "type": "BinaryExpression", + "start": 10949, + "end": 10961, + "loc": { + "start": { + "line": 552, + "column": 4 + }, + "end": { + "line": 552, + "column": 16 + } + }, + "left": { + "type": "MemberExpression", + "start": 10949, + "end": 10957, + "loc": { + "start": { + "line": 552, + "column": 4 + }, + "end": { + "line": 552, + "column": 12 + } + }, + "object": { + "type": "Identifier", + "start": 10949, + "end": 10950, + "loc": { + "start": { + "line": 552, + "column": 4 + }, + "end": { + "line": 552, + "column": 5 + }, + "identifierName": "y" + }, + "name": "y" + }, + "property": { + "type": "Identifier", + "start": 10951, + "end": 10957, + "loc": { + "start": { + "line": 552, + "column": 6 + }, + "end": { + "line": 552, + "column": 12 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + "operator": ">", + "right": { + "type": "NumericLiteral", + "start": 10960, + "end": 10961, + "loc": { + "start": { + "line": 552, + "column": 15 + }, + "end": { + "line": 552, + "column": 16 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + }, + "consequent": { + "type": "NewExpression", + "start": 10969, + "end": 11021, + "loc": { + "start": { + "line": 553, + "column": 7 + }, + "end": { + "line": 553, + "column": 59 + } + }, + "callee": { + "type": "Identifier", + "start": 10973, + "end": 10980, + "loc": { + "start": { + "line": 553, + "column": 11 + }, + "end": { + "line": 553, + "column": 18 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "Identifier", + "start": 10981, + "end": 10982, + "loc": { + "start": { + "line": 553, + "column": 19 + }, + "end": { + "line": 553, + "column": 20 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "BinaryExpression", + "start": 10984, + "end": 11017, + "loc": { + "start": { + "line": 553, + "column": 22 + }, + "end": { + "line": 553, + "column": 55 + } + }, + "left": { + "type": "MemberExpression", + "start": 10984, + "end": 11002, + "loc": { + "start": { + "line": 553, + "column": 22 + }, + "end": { + "line": 553, + "column": 40 + } + }, + "object": { + "type": "Identifier", + "start": 10984, + "end": 10989, + "loc": { + "start": { + "line": 553, + "column": 22 + }, + "end": { + "line": 553, + "column": 27 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 10990, + "end": 11002, + "loc": { + "start": { + "line": 553, + "column": 28 + }, + "end": { + "line": 553, + "column": 40 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "operator": "^", + "right": { + "type": "UnaryExpression", + "start": 11005, + "end": 11017, + "loc": { + "start": { + "line": 553, + "column": 43 + }, + "end": { + "line": 553, + "column": 55 + } + }, + "operator": "-", + "prefix": true, + "argument": { + "type": "BinaryExpression", + "start": 11007, + "end": 11016, + "loc": { + "start": { + "line": 553, + "column": 45 + }, + "end": { + "line": 553, + "column": 54 + } + }, + "left": { + "type": "Identifier", + "start": 11007, + "end": 11012, + "loc": { + "start": { + "line": 553, + "column": 45 + }, + "end": { + "line": 553, + "column": 50 + }, + "identifierName": "steps" + }, + "name": "steps" + }, + "operator": "%", + "right": { + "type": "NumericLiteral", + "start": 11015, + "end": 11016, + "loc": { + "start": { + "line": 553, + "column": 53 + }, + "end": { + "line": 553, + "column": 54 + } + }, + "extra": { + "rawValue": 2, + "raw": "2" + }, + "value": 2 + }, + "extra": { + "parenthesized": true, + "parenStart": 11006 + } + }, + "extra": { + "parenthesizedArgument": false + } + } + }, + { + "type": "Identifier", + "start": 11019, + "end": 11020, + "loc": { + "start": { + "line": 553, + "column": 57 + }, + "end": { + "line": 553, + "column": 58 + }, + "identifierName": "y" + }, + "name": "y" + } + ] + }, + "alternate": { + "type": "NewExpression", + "start": 11029, + "end": 11051, + "loc": { + "start": { + "line": 554, + "column": 7 + }, + "end": { + "line": 554, + "column": 29 + } + }, + "callee": { + "type": "Identifier", + "start": 11033, + "end": 11040, + "loc": { + "start": { + "line": 554, + "column": 11 + }, + "end": { + "line": 554, + "column": 18 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "Identifier", + "start": 11041, + "end": 11042, + "loc": { + "start": { + "line": 554, + "column": 19 + }, + "end": { + "line": 554, + "column": 20 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "NumericLiteral", + "start": 11044, + "end": 11045, + "loc": { + "start": { + "line": 554, + "column": 22 + }, + "end": { + "line": 554, + "column": 23 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "ArrayExpression", + "start": 11047, + "end": 11050, + "loc": { + "start": { + "line": 554, + "column": 25 + }, + "end": { + "line": 554, + "column": 28 + } + }, + "elements": [ + { + "type": "NumericLiteral", + "start": 11048, + "end": 11049, + "loc": { + "start": { + "line": 554, + "column": 26 + }, + "end": { + "line": 554, + "column": 27 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + ] + } + ] + } + } + }, + { + "type": "ObjectProperty", + "start": 11056, + "end": 11164, + "loc": { + "start": { + "line": 555, + "column": 3 + }, + "end": { + "line": 558, + "column": 29 + } + }, + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 11056, + "end": 11057, + "loc": { + "start": { + "line": 555, + "column": 3 + }, + "end": { + "line": 555, + "column": 4 + }, + "identifierName": "u" + }, + "name": "u" + }, + "value": { + "type": "ConditionalExpression", + "start": 11063, + "end": 11164, + "loc": { + "start": { + "line": 556, + "column": 4 + }, + "end": { + "line": 558, + "column": 29 + } + }, + "test": { + "type": "BinaryExpression", + "start": 11063, + "end": 11075, + "loc": { + "start": { + "line": 556, + "column": 4 + }, + "end": { + "line": 556, + "column": 16 + } + }, + "left": { + "type": "MemberExpression", + "start": 11063, + "end": 11071, + "loc": { + "start": { + "line": 556, + "column": 4 + }, + "end": { + "line": 556, + "column": 12 + } + }, + "object": { + "type": "Identifier", + "start": 11063, + "end": 11064, + "loc": { + "start": { + "line": 556, + "column": 4 + }, + "end": { + "line": 556, + "column": 5 + }, + "identifierName": "u" + }, + "name": "u" + }, + "property": { + "type": "Identifier", + "start": 11065, + "end": 11071, + "loc": { + "start": { + "line": 556, + "column": 6 + }, + "end": { + "line": 556, + "column": 12 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + "operator": ">", + "right": { + "type": "NumericLiteral", + "start": 11074, + "end": 11075, + "loc": { + "start": { + "line": 556, + "column": 15 + }, + "end": { + "line": 556, + "column": 16 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + }, + "consequent": { + "type": "NewExpression", + "start": 11083, + "end": 11134, + "loc": { + "start": { + "line": 557, + "column": 7 + }, + "end": { + "line": 557, + "column": 58 + } + }, + "callee": { + "type": "Identifier", + "start": 11087, + "end": 11094, + "loc": { + "start": { + "line": 557, + "column": 11 + }, + "end": { + "line": 557, + "column": 18 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "Identifier", + "start": 11095, + "end": 11096, + "loc": { + "start": { + "line": 557, + "column": 19 + }, + "end": { + "line": 557, + "column": 20 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "BinaryExpression", + "start": 11098, + "end": 11130, + "loc": { + "start": { + "line": 557, + "column": 22 + }, + "end": { + "line": 557, + "column": 54 + } + }, + "left": { + "type": "MemberExpression", + "start": 11098, + "end": 11115, + "loc": { + "start": { + "line": 557, + "column": 22 + }, + "end": { + "line": 557, + "column": 39 + } + }, + "object": { + "type": "ThisExpression", + "start": 11098, + "end": 11102, + "loc": { + "start": { + "line": 557, + "column": 22 + }, + "end": { + "line": 557, + "column": 26 + } + } + }, + "property": { + "type": "Identifier", + "start": 11103, + "end": 11115, + "loc": { + "start": { + "line": 557, + "column": 27 + }, + "end": { + "line": 557, + "column": 39 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "operator": "^", + "right": { + "type": "UnaryExpression", + "start": 11118, + "end": 11130, + "loc": { + "start": { + "line": 557, + "column": 42 + }, + "end": { + "line": 557, + "column": 54 + } + }, + "operator": "-", + "prefix": true, + "argument": { + "type": "BinaryExpression", + "start": 11120, + "end": 11129, + "loc": { + "start": { + "line": 557, + "column": 44 + }, + "end": { + "line": 557, + "column": 53 + } + }, + "left": { + "type": "Identifier", + "start": 11120, + "end": 11125, + "loc": { + "start": { + "line": 557, + "column": 44 + }, + "end": { + "line": 557, + "column": 49 + }, + "identifierName": "steps" + }, + "name": "steps" + }, + "operator": "%", + "right": { + "type": "NumericLiteral", + "start": 11128, + "end": 11129, + "loc": { + "start": { + "line": 557, + "column": 52 + }, + "end": { + "line": 557, + "column": 53 + } + }, + "extra": { + "rawValue": 2, + "raw": "2" + }, + "value": 2 + }, + "extra": { + "parenthesized": true, + "parenStart": 11119 + } + }, + "extra": { + "parenthesizedArgument": false + } + } + }, + { + "type": "Identifier", + "start": 11132, + "end": 11133, + "loc": { + "start": { + "line": 557, + "column": 56 + }, + "end": { + "line": 557, + "column": 57 + }, + "identifierName": "u" + }, + "name": "u" + } + ] + }, + "alternate": { + "type": "NewExpression", + "start": 11142, + "end": 11164, + "loc": { + "start": { + "line": 558, + "column": 7 + }, + "end": { + "line": 558, + "column": 29 + } + }, + "callee": { + "type": "Identifier", + "start": 11146, + "end": 11153, + "loc": { + "start": { + "line": 558, + "column": 11 + }, + "end": { + "line": 558, + "column": 18 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "Identifier", + "start": 11154, + "end": 11155, + "loc": { + "start": { + "line": 558, + "column": 19 + }, + "end": { + "line": 558, + "column": 20 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "NumericLiteral", + "start": 11157, + "end": 11158, + "loc": { + "start": { + "line": 558, + "column": 22 + }, + "end": { + "line": 558, + "column": 23 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "ArrayExpression", + "start": 11160, + "end": 11163, + "loc": { + "start": { + "line": 558, + "column": 25 + }, + "end": { + "line": 558, + "column": 28 + } + }, + "elements": [ + { + "type": "NumericLiteral", + "start": 11161, + "end": 11162, + "loc": { + "start": { + "line": 558, + "column": 26 + }, + "end": { + "line": 558, + "column": 27 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + ] + } + ] + } + } + }, + { + "type": "ObjectProperty", + "start": 11169, + "end": 11283, + "loc": { + "start": { + "line": 559, + "column": 3 + }, + "end": { + "line": 562, + "column": 29 + } + }, + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 11169, + "end": 11170, + "loc": { + "start": { + "line": 559, + "column": 3 + }, + "end": { + "line": 559, + "column": 4 + }, + "identifierName": "v" + }, + "name": "v" + }, + "value": { + "type": "ConditionalExpression", + "start": 11176, + "end": 11283, + "loc": { + "start": { + "line": 560, + "column": 4 + }, + "end": { + "line": 562, + "column": 29 + } + }, + "test": { + "type": "BinaryExpression", + "start": 11176, + "end": 11188, + "loc": { + "start": { + "line": 560, + "column": 4 + }, + "end": { + "line": 560, + "column": 16 + } + }, + "left": { + "type": "MemberExpression", + "start": 11176, + "end": 11184, + "loc": { + "start": { + "line": 560, + "column": 4 + }, + "end": { + "line": 560, + "column": 12 + } + }, + "object": { + "type": "Identifier", + "start": 11176, + "end": 11177, + "loc": { + "start": { + "line": 560, + "column": 4 + }, + "end": { + "line": 560, + "column": 5 + }, + "identifierName": "v" + }, + "name": "v" + }, + "property": { + "type": "Identifier", + "start": 11178, + "end": 11184, + "loc": { + "start": { + "line": 560, + "column": 6 + }, + "end": { + "line": 560, + "column": 12 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + "operator": ">", + "right": { + "type": "NumericLiteral", + "start": 11187, + "end": 11188, + "loc": { + "start": { + "line": 560, + "column": 15 + }, + "end": { + "line": 560, + "column": 16 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + }, + "consequent": { + "type": "NewExpression", + "start": 11196, + "end": 11253, + "loc": { + "start": { + "line": 561, + "column": 7 + }, + "end": { + "line": 561, + "column": 64 + } + }, + "callee": { + "type": "Identifier", + "start": 11200, + "end": 11207, + "loc": { + "start": { + "line": 561, + "column": 11 + }, + "end": { + "line": 561, + "column": 18 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "Identifier", + "start": 11208, + "end": 11209, + "loc": { + "start": { + "line": 561, + "column": 19 + }, + "end": { + "line": 561, + "column": 20 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "BinaryExpression", + "start": 11211, + "end": 11249, + "loc": { + "start": { + "line": 561, + "column": 22 + }, + "end": { + "line": 561, + "column": 60 + } + }, + "left": { + "type": "MemberExpression", + "start": 11211, + "end": 11229, + "loc": { + "start": { + "line": 561, + "column": 22 + }, + "end": { + "line": 561, + "column": 40 + } + }, + "object": { + "type": "Identifier", + "start": 11211, + "end": 11216, + "loc": { + "start": { + "line": 561, + "column": 22 + }, + "end": { + "line": 561, + "column": 27 + }, + "identifierName": "other" + }, + "name": "other" + }, + "property": { + "type": "Identifier", + "start": 11217, + "end": 11229, + "loc": { + "start": { + "line": 561, + "column": 28 + }, + "end": { + "line": 561, + "column": 40 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "operator": "^", + "right": { + "type": "BinaryExpression", + "start": 11233, + "end": 11248, + "loc": { + "start": { + "line": 561, + "column": 44 + }, + "end": { + "line": 561, + "column": 59 + } + }, + "left": { + "type": "BinaryExpression", + "start": 11234, + "end": 11243, + "loc": { + "start": { + "line": 561, + "column": 45 + }, + "end": { + "line": 561, + "column": 54 + } + }, + "left": { + "type": "Identifier", + "start": 11234, + "end": 11239, + "loc": { + "start": { + "line": 561, + "column": 45 + }, + "end": { + "line": 561, + "column": 50 + }, + "identifierName": "steps" + }, + "name": "steps" + }, + "operator": "%", + "right": { + "type": "NumericLiteral", + "start": 11242, + "end": 11243, + "loc": { + "start": { + "line": 561, + "column": 53 + }, + "end": { + "line": 561, + "column": 54 + } + }, + "extra": { + "rawValue": 2, + "raw": "2" + }, + "value": 2 + }, + "extra": { + "parenthesized": true, + "parenStart": 11233 + } + }, + "operator": "-", + "right": { + "type": "NumericLiteral", + "start": 11247, + "end": 11248, + "loc": { + "start": { + "line": 561, + "column": 58 + }, + "end": { + "line": 561, + "column": 59 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + "extra": { + "parenthesized": true, + "parenStart": 11232 + } + } + }, + { + "type": "Identifier", + "start": 11251, + "end": 11252, + "loc": { + "start": { + "line": 561, + "column": 62 + }, + "end": { + "line": 561, + "column": 63 + }, + "identifierName": "v" + }, + "name": "v" + } + ] + }, + "alternate": { + "type": "NewExpression", + "start": 11261, + "end": 11283, + "loc": { + "start": { + "line": 562, + "column": 7 + }, + "end": { + "line": 562, + "column": 29 + } + }, + "callee": { + "type": "Identifier", + "start": 11265, + "end": 11272, + "loc": { + "start": { + "line": 562, + "column": 11 + }, + "end": { + "line": 562, + "column": 18 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "Identifier", + "start": 11273, + "end": 11274, + "loc": { + "start": { + "line": 562, + "column": 19 + }, + "end": { + "line": 562, + "column": 20 + }, + "identifierName": "r" + }, + "name": "r" + }, + { + "type": "NumericLiteral", + "start": 11276, + "end": 11277, + "loc": { + "start": { + "line": 562, + "column": 22 + }, + "end": { + "line": 562, + "column": 23 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "ArrayExpression", + "start": 11279, + "end": 11282, + "loc": { + "start": { + "line": 562, + "column": 25 + }, + "end": { + "line": 562, + "column": 28 + } + }, + "elements": [ + { + "type": "NumericLiteral", + "start": 11280, + "end": 11281, + "loc": { + "start": { + "line": 562, + "column": 26 + }, + "end": { + "line": 562, + "column": 27 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + ] + } + ] + } + } + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 11295, + "end": 11860, + "loc": { + "start": { + "line": 566, + "column": 1 + }, + "end": { + "line": 590, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 11295, + "end": 11302, + "loc": { + "start": { + "line": 566, + "column": 1 + }, + "end": { + "line": 566, + "column": 8 + }, + "identifierName": "valueOf" + }, + "name": "valueOf" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 11305, + "end": 11860, + "loc": { + "start": { + "line": 566, + "column": 11 + }, + "end": { + "line": 590, + "column": 2 + } + }, + "body": [ + { + "type": "IfStatement", + "start": 11309, + "end": 11453, + "loc": { + "start": { + "line": 567, + "column": 2 + }, + "end": { + "line": 570, + "column": 5 + } + }, + "test": { + "type": "CallExpression", + "start": 11313, + "end": 11333, + "loc": { + "start": { + "line": 567, + "column": 6 + }, + "end": { + "line": 567, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 11313, + "end": 11321, + "loc": { + "start": { + "line": 567, + "column": 6 + }, + "end": { + "line": 567, + "column": 14 + } + }, + "object": { + "type": "ThisExpression", + "start": 11313, + "end": 11317, + "loc": { + "start": { + "line": 567, + "column": 6 + }, + "end": { + "line": 567, + "column": 10 + } + } + }, + "property": { + "type": "Identifier", + "start": 11318, + "end": 11321, + "loc": { + "start": { + "line": 567, + "column": 11 + }, + "end": { + "line": 567, + "column": 14 + }, + "identifierName": "gtn" + }, + "name": "gtn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 11322, + "end": 11332, + "loc": { + "start": { + "line": 567, + "column": 15 + }, + "end": { + "line": 567, + "column": 25 + }, + "identifierName": "MAX_NUMBER" + }, + "name": "MAX_NUMBER" + } + ] + }, + "consequent": { + "type": "ThrowStatement", + "start": 11338, + "end": 11453, + "loc": { + "start": { + "line": 568, + "column": 3 + }, + "end": { + "line": 570, + "column": 5 + } + }, + "argument": { + "type": "NewExpression", + "start": 11344, + "end": 11452, + "loc": { + "start": { + "line": 568, + "column": 9 + }, + "end": { + "line": 570, + "column": 4 + } + }, + "callee": { + "type": "Identifier", + "start": 11348, + "end": 11358, + "loc": { + "start": { + "line": 568, + "column": 13 + }, + "end": { + "line": 568, + "column": 23 + }, + "identifierName": "ValueError" + }, + "name": "ValueError" + }, + "arguments": [ + { + "type": "TemplateLiteral", + "start": 11364, + "end": 11446, + "loc": { + "start": { + "line": 569, + "column": 4 + }, + "end": { + "line": 569, + "column": 86 + } + }, + "expressions": [ + { + "type": "Identifier", + "start": 11410, + "end": 11420, + "loc": { + "start": { + "line": 569, + "column": 50 + }, + "end": { + "line": 569, + "column": 60 + }, + "identifierName": "MAX_NUMBER" + }, + "name": "MAX_NUMBER" + }, + { + "type": "CallExpression", + "start": 11429, + "end": 11444, + "loc": { + "start": { + "line": 569, + "column": 69 + }, + "end": { + "line": 569, + "column": 84 + } + }, + "callee": { + "type": "MemberExpression", + "start": 11429, + "end": 11442, + "loc": { + "start": { + "line": 569, + "column": 69 + }, + "end": { + "line": 569, + "column": 82 + } + }, + "object": { + "type": "ThisExpression", + "start": 11429, + "end": 11433, + "loc": { + "start": { + "line": 569, + "column": 69 + }, + "end": { + "line": 569, + "column": 73 + } + } + }, + "property": { + "type": "Identifier", + "start": 11434, + "end": 11442, + "loc": { + "start": { + "line": 569, + "column": 74 + }, + "end": { + "line": 569, + "column": 82 + }, + "identifierName": "toString" + }, + "name": "toString" + }, + "computed": false + }, + "arguments": [] + } + ], + "quasis": [ + { + "type": "TemplateElement", + "start": 11365, + "end": 11408, + "loc": { + "start": { + "line": 569, + "column": 5 + }, + "end": { + "line": 569, + "column": 48 + } + }, + "value": { + "raw": "Cannot call valueOf on Integer larger than ", + "cooked": "Cannot call valueOf on Integer larger than " + }, + "tail": false + }, + { + "type": "TemplateElement", + "start": 11421, + "end": 11427, + "loc": { + "start": { + "line": 569, + "column": 61 + }, + "end": { + "line": 569, + "column": 67 + } + }, + "value": { + "raw": ". Got ", + "cooked": ". Got " + }, + "tail": false + }, + { + "type": "TemplateElement", + "start": 11445, + "end": 11445, + "loc": { + "start": { + "line": 569, + "column": 85 + }, + "end": { + "line": 569, + "column": 85 + } + }, + "value": { + "raw": "", + "cooked": "" + }, + "tail": true + } + ] + } + ] + } + }, + "alternate": null + }, + { + "type": "IfStatement", + "start": 11456, + "end": 11601, + "loc": { + "start": { + "line": 571, + "column": 2 + }, + "end": { + "line": 574, + "column": 5 + } + }, + "test": { + "type": "CallExpression", + "start": 11460, + "end": 11480, + "loc": { + "start": { + "line": 571, + "column": 6 + }, + "end": { + "line": 571, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 11460, + "end": 11468, + "loc": { + "start": { + "line": 571, + "column": 6 + }, + "end": { + "line": 571, + "column": 14 + } + }, + "object": { + "type": "ThisExpression", + "start": 11460, + "end": 11464, + "loc": { + "start": { + "line": 571, + "column": 6 + }, + "end": { + "line": 571, + "column": 10 + } + } + }, + "property": { + "type": "Identifier", + "start": 11465, + "end": 11468, + "loc": { + "start": { + "line": 571, + "column": 11 + }, + "end": { + "line": 571, + "column": 14 + }, + "identifierName": "ltn" + }, + "name": "ltn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 11469, + "end": 11479, + "loc": { + "start": { + "line": 571, + "column": 15 + }, + "end": { + "line": 571, + "column": 25 + }, + "identifierName": "MIN_NUMBER" + }, + "name": "MIN_NUMBER" + } + ] + }, + "consequent": { + "type": "ThrowStatement", + "start": 11485, + "end": 11601, + "loc": { + "start": { + "line": 572, + "column": 3 + }, + "end": { + "line": 574, + "column": 5 + } + }, + "argument": { + "type": "NewExpression", + "start": 11491, + "end": 11600, + "loc": { + "start": { + "line": 572, + "column": 9 + }, + "end": { + "line": 574, + "column": 4 + } + }, + "callee": { + "type": "Identifier", + "start": 11495, + "end": 11505, + "loc": { + "start": { + "line": 572, + "column": 13 + }, + "end": { + "line": 572, + "column": 23 + }, + "identifierName": "ValueError" + }, + "name": "ValueError" + }, + "arguments": [ + { + "type": "TemplateLiteral", + "start": 11511, + "end": 11594, + "loc": { + "start": { + "line": 573, + "column": 4 + }, + "end": { + "line": 573, + "column": 87 + } + }, + "expressions": [ + { + "type": "Identifier", + "start": 11558, + "end": 11568, + "loc": { + "start": { + "line": 573, + "column": 51 + }, + "end": { + "line": 573, + "column": 61 + }, + "identifierName": "MIN_NUMBER" + }, + "name": "MIN_NUMBER" + }, + { + "type": "CallExpression", + "start": 11577, + "end": 11592, + "loc": { + "start": { + "line": 573, + "column": 70 + }, + "end": { + "line": 573, + "column": 85 + } + }, + "callee": { + "type": "MemberExpression", + "start": 11577, + "end": 11590, + "loc": { + "start": { + "line": 573, + "column": 70 + }, + "end": { + "line": 573, + "column": 83 + } + }, + "object": { + "type": "ThisExpression", + "start": 11577, + "end": 11581, + "loc": { + "start": { + "line": 573, + "column": 70 + }, + "end": { + "line": 573, + "column": 74 + } + } + }, + "property": { + "type": "Identifier", + "start": 11582, + "end": 11590, + "loc": { + "start": { + "line": 573, + "column": 75 + }, + "end": { + "line": 573, + "column": 83 + }, + "identifierName": "toString" + }, + "name": "toString" + }, + "computed": false + }, + "arguments": [] + } + ], + "quasis": [ + { + "type": "TemplateElement", + "start": 11512, + "end": 11556, + "loc": { + "start": { + "line": 573, + "column": 5 + }, + "end": { + "line": 573, + "column": 49 + } + }, + "value": { + "raw": "Cannot call valueOf on Integer smaller than ", + "cooked": "Cannot call valueOf on Integer smaller than " + }, + "tail": false + }, + { + "type": "TemplateElement", + "start": 11569, + "end": 11575, + "loc": { + "start": { + "line": 573, + "column": 62 + }, + "end": { + "line": 573, + "column": 68 + } + }, + "value": { + "raw": ". Got ", + "cooked": ". Got " + }, + "tail": false + }, + { + "type": "TemplateElement", + "start": 11593, + "end": 11593, + "loc": { + "start": { + "line": 573, + "column": 86 + }, + "end": { + "line": 573, + "column": 86 + } + }, + "value": { + "raw": "", + "cooked": "" + }, + "tail": true + } + ] + } + ] + } + }, + "alternate": null + }, + { + "type": "VariableDeclaration", + "start": 11605, + "end": 11705, + "loc": { + "start": { + "line": 576, + "column": 2 + }, + "end": { + "line": 582, + "column": 4 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 11611, + "end": 11704, + "loc": { + "start": { + "line": 576, + "column": 8 + }, + "end": { + "line": 582, + "column": 3 + } + }, + "id": { + "type": "Identifier", + "start": 11611, + "end": 11616, + "loc": { + "start": { + "line": 576, + "column": 8 + }, + "end": { + "line": 576, + "column": 13 + }, + "identifierName": "limbs" + }, + "name": "limbs" + }, + "init": { + "type": "CallExpression", + "start": 11619, + "end": 11704, + "loc": { + "start": { + "line": 576, + "column": 16 + }, + "end": { + "line": 582, + "column": 3 + } + }, + "callee": { + "type": "Identifier", + "start": 11619, + "end": 11626, + "loc": { + "start": { + "line": 576, + "column": 16 + }, + "end": { + "line": 576, + "column": 23 + }, + "identifierName": "convert" + }, + "name": "convert" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 11631, + "end": 11641, + "loc": { + "start": { + "line": 577, + "column": 3 + }, + "end": { + "line": 577, + "column": 13 + } + }, + "object": { + "type": "ThisExpression", + "start": 11631, + "end": 11635, + "loc": { + "start": { + "line": 577, + "column": 3 + }, + "end": { + "line": 577, + "column": 7 + } + } + }, + "property": { + "type": "Identifier", + "start": 11636, + "end": 11641, + "loc": { + "start": { + "line": 577, + "column": 8 + }, + "end": { + "line": 577, + "column": 13 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 11646, + "end": 11654, + "loc": { + "start": { + "line": 578, + "column": 3 + }, + "end": { + "line": 578, + "column": 11 + }, + "identifierName": "MAX_BASE" + }, + "name": "MAX_BASE" + }, + { + "type": "MemberExpression", + "start": 11659, + "end": 11670, + "loc": { + "start": { + "line": 579, + "column": 3 + }, + "end": { + "line": 579, + "column": 14 + } + }, + "object": { + "type": "ThisExpression", + "start": 11659, + "end": 11663, + "loc": { + "start": { + "line": 579, + "column": 3 + }, + "end": { + "line": 579, + "column": 7 + } + } + }, + "property": { + "type": "Identifier", + "start": 11664, + "end": 11670, + "loc": { + "start": { + "line": 579, + "column": 8 + }, + "end": { + "line": 579, + "column": 14 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + }, + { + "type": "NumericLiteral", + "start": 11675, + "end": 11676, + "loc": { + "start": { + "line": 580, + "column": 3 + }, + "end": { + "line": 580, + "column": 4 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 11681, + "end": 11699, + "loc": { + "start": { + "line": 581, + "column": 3 + }, + "end": { + "line": 581, + "column": 21 + } + }, + "object": { + "type": "MemberExpression", + "start": 11681, + "end": 11692, + "loc": { + "start": { + "line": 581, + "column": 3 + }, + "end": { + "line": 581, + "column": 14 + } + }, + "object": { + "type": "ThisExpression", + "start": 11681, + "end": 11685, + "loc": { + "start": { + "line": 581, + "column": 3 + }, + "end": { + "line": 581, + "column": 7 + } + } + }, + "property": { + "type": "Identifier", + "start": 11686, + "end": 11692, + "loc": { + "start": { + "line": 581, + "column": 8 + }, + "end": { + "line": 581, + "column": 14 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 11693, + "end": 11699, + "loc": { + "start": { + "line": 581, + "column": 15 + }, + "end": { + "line": 581, + "column": 21 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 11709, + "end": 11749, + "loc": { + "start": { + "line": 584, + "column": 2 + }, + "end": { + "line": 584, + "column": 42 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 11715, + "end": 11748, + "loc": { + "start": { + "line": 584, + "column": 8 + }, + "end": { + "line": 584, + "column": 41 + } + }, + "id": { + "type": "Identifier", + "start": 11715, + "end": 11719, + "loc": { + "start": { + "line": 584, + "column": 8 + }, + "end": { + "line": 584, + "column": 12 + }, + "identifierName": "sign" + }, + "name": "sign" + }, + "init": { + "type": "ConditionalExpression", + "start": 11722, + "end": 11748, + "loc": { + "start": { + "line": 584, + "column": 15 + }, + "end": { + "line": 584, + "column": 41 + } + }, + "test": { + "type": "MemberExpression", + "start": 11722, + "end": 11739, + "loc": { + "start": { + "line": 584, + "column": 15 + }, + "end": { + "line": 584, + "column": 32 + } + }, + "object": { + "type": "ThisExpression", + "start": 11722, + "end": 11726, + "loc": { + "start": { + "line": 584, + "column": 15 + }, + "end": { + "line": 584, + "column": 19 + } + } + }, + "property": { + "type": "Identifier", + "start": 11727, + "end": 11739, + "loc": { + "start": { + "line": 584, + "column": 20 + }, + "end": { + "line": 584, + "column": 32 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "consequent": { + "type": "UnaryExpression", + "start": 11742, + "end": 11744, + "loc": { + "start": { + "line": 584, + "column": 35 + }, + "end": { + "line": 584, + "column": 37 + } + }, + "operator": "-", + "prefix": true, + "argument": { + "type": "NumericLiteral", + "start": 11743, + "end": 11744, + "loc": { + "start": { + "line": 584, + "column": 36 + }, + "end": { + "line": 584, + "column": 37 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + "extra": { + "parenthesizedArgument": false + } + }, + "alternate": { + "type": "NumericLiteral", + "start": 11747, + "end": 11748, + "loc": { + "start": { + "line": 584, + "column": 40 + }, + "end": { + "line": 584, + "column": 41 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + } + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 11753, + "end": 11833, + "loc": { + "start": { + "line": 586, + "column": 2 + }, + "end": { + "line": 587, + "column": 66 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 11759, + "end": 11832, + "loc": { + "start": { + "line": 586, + "column": 8 + }, + "end": { + "line": 587, + "column": 65 + } + }, + "id": { + "type": "Identifier", + "start": 11759, + "end": 11764, + "loc": { + "start": { + "line": 586, + "column": 8 + }, + "end": { + "line": 586, + "column": 13 + }, + "identifierName": "value" + }, + "name": "value" + }, + "init": { + "type": "ConditionalExpression", + "start": 11770, + "end": 11832, + "loc": { + "start": { + "line": 587, + "column": 3 + }, + "end": { + "line": 587, + "column": 65 + } + }, + "test": { + "type": "BinaryExpression", + "start": 11770, + "end": 11788, + "loc": { + "start": { + "line": 587, + "column": 3 + }, + "end": { + "line": 587, + "column": 21 + } + }, + "left": { + "type": "MemberExpression", + "start": 11770, + "end": 11782, + "loc": { + "start": { + "line": 587, + "column": 3 + }, + "end": { + "line": 587, + "column": 15 + } + }, + "object": { + "type": "Identifier", + "start": 11770, + "end": 11775, + "loc": { + "start": { + "line": 587, + "column": 3 + }, + "end": { + "line": 587, + "column": 8 + }, + "identifierName": "limbs" + }, + "name": "limbs" + }, + "property": { + "type": "Identifier", + "start": 11776, + "end": 11782, + "loc": { + "start": { + "line": 587, + "column": 9 + }, + "end": { + "line": 587, + "column": 15 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + "operator": "===", + "right": { + "type": "NumericLiteral", + "start": 11787, + "end": 11788, + "loc": { + "start": { + "line": 587, + "column": 20 + }, + "end": { + "line": 587, + "column": 21 + } + }, + "extra": { + "rawValue": 2, + "raw": "2" + }, + "value": 2 + } + }, + "consequent": { + "type": "BinaryExpression", + "start": 11791, + "end": 11821, + "loc": { + "start": { + "line": 587, + "column": 24 + }, + "end": { + "line": 587, + "column": 54 + } + }, + "left": { + "type": "BinaryExpression", + "start": 11791, + "end": 11810, + "loc": { + "start": { + "line": 587, + "column": 24 + }, + "end": { + "line": 587, + "column": 43 + } + }, + "left": { + "type": "MemberExpression", + "start": 11791, + "end": 11799, + "loc": { + "start": { + "line": 587, + "column": 24 + }, + "end": { + "line": 587, + "column": 32 + } + }, + "object": { + "type": "Identifier", + "start": 11791, + "end": 11796, + "loc": { + "start": { + "line": 587, + "column": 24 + }, + "end": { + "line": 587, + "column": 29 + }, + "identifierName": "limbs" + }, + "name": "limbs" + }, + "property": { + "type": "NumericLiteral", + "start": 11797, + "end": 11798, + "loc": { + "start": { + "line": 587, + "column": 30 + }, + "end": { + "line": 587, + "column": 31 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + "computed": true + }, + "operator": "*", + "right": { + "type": "Identifier", + "start": 11802, + "end": 11810, + "loc": { + "start": { + "line": 587, + "column": 35 + }, + "end": { + "line": 587, + "column": 43 + }, + "identifierName": "MAX_BASE" + }, + "name": "MAX_BASE" + } + }, + "operator": "+", + "right": { + "type": "MemberExpression", + "start": 11813, + "end": 11821, + "loc": { + "start": { + "line": 587, + "column": 46 + }, + "end": { + "line": 587, + "column": 54 + } + }, + "object": { + "type": "Identifier", + "start": 11813, + "end": 11818, + "loc": { + "start": { + "line": 587, + "column": 46 + }, + "end": { + "line": 587, + "column": 51 + }, + "identifierName": "limbs" + }, + "name": "limbs" + }, + "property": { + "type": "NumericLiteral", + "start": 11819, + "end": 11820, + "loc": { + "start": { + "line": 587, + "column": 52 + }, + "end": { + "line": 587, + "column": 53 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + "computed": true + } + }, + "alternate": { + "type": "MemberExpression", + "start": 11824, + "end": 11832, + "loc": { + "start": { + "line": 587, + "column": 57 + }, + "end": { + "line": 587, + "column": 65 + } + }, + "object": { + "type": "Identifier", + "start": 11824, + "end": 11829, + "loc": { + "start": { + "line": 587, + "column": 57 + }, + "end": { + "line": 587, + "column": 62 + }, + "identifierName": "limbs" + }, + "name": "limbs" + }, + "property": { + "type": "NumericLiteral", + "start": 11830, + "end": 11831, + "loc": { + "start": { + "line": 587, + "column": 63 + }, + "end": { + "line": 587, + "column": 64 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + "computed": true + } + } + } + ], + "kind": "const" + }, + { + "type": "ReturnStatement", + "start": 11837, + "end": 11857, + "loc": { + "start": { + "line": 589, + "column": 2 + }, + "end": { + "line": 589, + "column": 22 + } + }, + "argument": { + "type": "BinaryExpression", + "start": 11844, + "end": 11856, + "loc": { + "start": { + "line": 589, + "column": 9 + }, + "end": { + "line": 589, + "column": 21 + } + }, + "left": { + "type": "Identifier", + "start": 11844, + "end": 11848, + "loc": { + "start": { + "line": 589, + "column": 9 + }, + "end": { + "line": 589, + "column": 13 + }, + "identifierName": "sign" + }, + "name": "sign" + }, + "operator": "*", + "right": { + "type": "Identifier", + "start": 11851, + "end": 11856, + "loc": { + "start": { + "line": 589, + "column": 16 + }, + "end": { + "line": 589, + "column": 21 + }, + "identifierName": "value" + }, + "name": "value" + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 11863, + "end": 11903, + "loc": { + "start": { + "line": 592, + "column": 1 + }, + "end": { + "line": 594, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 11863, + "end": 11871, + "loc": { + "start": { + "line": 592, + "column": 1 + }, + "end": { + "line": 592, + "column": 9 + }, + "identifierName": "toNumber" + }, + "name": "toNumber" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 11874, + "end": 11903, + "loc": { + "start": { + "line": 592, + "column": 12 + }, + "end": { + "line": 594, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 11878, + "end": 11900, + "loc": { + "start": { + "line": 593, + "column": 2 + }, + "end": { + "line": 593, + "column": 24 + } + }, + "argument": { + "type": "CallExpression", + "start": 11885, + "end": 11899, + "loc": { + "start": { + "line": 593, + "column": 9 + }, + "end": { + "line": 593, + "column": 23 + } + }, + "callee": { + "type": "MemberExpression", + "start": 11885, + "end": 11897, + "loc": { + "start": { + "line": 593, + "column": 9 + }, + "end": { + "line": 593, + "column": 21 + } + }, + "object": { + "type": "ThisExpression", + "start": 11885, + "end": 11889, + "loc": { + "start": { + "line": 593, + "column": 9 + }, + "end": { + "line": 593, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 11890, + "end": 11897, + "loc": { + "start": { + "line": 593, + "column": 14 + }, + "end": { + "line": 593, + "column": 21 + }, + "identifierName": "valueOf" + }, + "name": "valueOf" + }, + "computed": false + }, + "arguments": [] + } + } + ], + "directives": [] + } + } + ] + }, + "leadingComments": [], + "trailingComments": [] + } + } + ], + "directives": [] + }, + "comments": [ + { + "type": "CommentLine", + "value": " TODO save result for later ? Maybe replace base ?", + "start": 915, + "end": 967, + "loc": { + "start": { + "line": 49, + "column": 2 + }, + "end": { + "line": 49, + "column": 54 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 1805, + "end": 1854, + "loc": { + "start": { + "line": 91, + "column": 2 + }, + "end": { + "line": 91, + "column": 51 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize", + "start": 1914, + "end": 1930, + "loc": { + "start": { + "line": 96, + "column": 2 + }, + "end": { + "line": 96, + "column": 18 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 1995, + "end": 2044, + "loc": { + "start": { + "line": 101, + "column": 2 + }, + "end": { + "line": 101, + "column": 51 + } + } + }, + { + "type": "CommentLine", + "value": " /!\\ _sub needs |c| >= |a| >= |b|", + "start": 2265, + "end": 2300, + "loc": { + "start": { + "line": 111, + "column": 2 + }, + "end": { + "line": 111, + "column": 37 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 2917, + "end": 2966, + "loc": { + "start": { + "line": 142, + "column": 2 + }, + "end": { + "line": 142, + "column": 51 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 3471, + "end": 3520, + "loc": { + "start": { + "line": 170, + "column": 2 + }, + "end": { + "line": 170, + "column": 51 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n\t * Computes this raised to the xth power.\n\t * x is a double smaller or equal to 2^53.\n\t *\n\t * @param {Number} x The power to raise this to.\n\t * @return {Integer} this ^ x\n\t ", + "start": 3684, + "end": 3929, + "loc": { + "start": { + "line": 182, + "column": 1 + }, + "end": { + "line": 188, + "column": 4 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 4262, + "end": 4311, + "loc": { + "start": { + "line": 205, + "column": 2 + }, + "end": { + "line": 205, + "column": 51 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 4372, + "end": 4421, + "loc": { + "start": { + "line": 210, + "column": 2 + }, + "end": { + "line": 210, + "column": 51 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 4479, + "end": 4528, + "loc": { + "start": { + "line": 215, + "column": 2 + }, + "end": { + "line": 215, + "column": 51 + } + } + }, + { + "type": "CommentLine", + "value": " TODO use this.mul(this) instead?", + "start": 4531, + "end": 4566, + "loc": { + "start": { + "line": 216, + "column": 2 + }, + "end": { + "line": 216, + "column": 37 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 4609, + "end": 4658, + "loc": { + "start": { + "line": 221, + "column": 2 + }, + "end": { + "line": 221, + "column": 51 + } + } + }, + { + "type": "CommentLine", + "value": " TODO use this.imul(this) instead?", + "start": 4661, + "end": 4697, + "loc": { + "start": { + "line": 222, + "column": 2 + }, + "end": { + "line": 222, + "column": 38 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 4865, + "end": 4914, + "loc": { + "start": { + "line": 235, + "column": 2 + }, + "end": { + "line": 235, + "column": 51 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 5144, + "end": 5193, + "loc": { + "start": { + "line": 252, + "column": 2 + }, + "end": { + "line": 252, + "column": 51 + } + } + }, + { + "type": "CommentLine", + "value": " Optimize", + "start": 5572, + "end": 5583, + "loc": { + "start": { + "line": 268, + "column": 79 + }, + "end": { + "line": 268, + "column": 90 + } + } + }, + { + "type": "CommentLine", + "value": " The underlying algorithm does not allow leading 0's so we trim them.", + "start": 5683, + "end": 5754, + "loc": { + "start": { + "line": 273, + "column": 2 + }, + "end": { + "line": 273, + "column": 73 + } + } + }, + { + "type": "CommentLine", + "value": " Dividend is 0", + "start": 5840, + "end": 5856, + "loc": { + "start": { + "line": 277, + "column": 2 + }, + "end": { + "line": 277, + "column": 18 + } + } + }, + { + "type": "CommentLine", + "value": " Dividend (& Remainder)", + "start": 5954, + "end": 5979, + "loc": { + "start": { + "line": 281, + "column": 2 + }, + "end": { + "line": 281, + "column": 27 + } + } + }, + { + "type": "CommentLine", + "value": " Divisor", + "start": 6048, + "end": 6058, + "loc": { + "start": { + "line": 285, + "column": 2 + }, + "end": { + "line": 285, + "column": 12 + } + } + }, + { + "type": "CommentLine", + "value": " Di < dj because d != 0", + "start": 6158, + "end": 6183, + "loc": { + "start": { + "line": 288, + "column": 39 + }, + "end": { + "line": 288, + "column": 64 + } + } + }, + { + "type": "CommentLine", + "value": " Quotient", + "start": 6187, + "end": 6198, + "loc": { + "start": { + "line": 290, + "column": 2 + }, + "end": { + "line": 290, + "column": 13 + } + } + }, + { + "type": "CommentLine", + "value": " Quotient", + "start": 6342, + "end": 6353, + "loc": { + "start": { + "line": 295, + "column": 53 + }, + "end": { + "line": 295, + "column": 64 + } + } + }, + { + "type": "CommentLine", + "value": " Remainder", + "start": 6388, + "end": 6400, + "loc": { + "start": { + "line": 296, + "column": 34 + }, + "end": { + "line": 296, + "column": 46 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize", + "start": 6551, + "end": 6567, + "loc": { + "start": { + "line": 301, + "column": 17 + }, + "end": { + "line": 301, + "column": 33 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize", + "start": 6636, + "end": 6652, + "loc": { + "start": { + "line": 304, + "column": 20 + }, + "end": { + "line": 304, + "column": 36 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize", + "start": 6733, + "end": 6749, + "loc": { + "start": { + "line": 308, + "column": 28 + }, + "end": { + "line": 308, + "column": 44 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 6801, + "end": 6850, + "loc": { + "start": { + "line": 316, + "column": 2 + }, + "end": { + "line": 316, + "column": 51 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 7177, + "end": 7226, + "loc": { + "start": { + "line": 335, + "column": 2 + }, + "end": { + "line": 335, + "column": 51 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize this, there is a much faster way to test for parity", + "start": 7892, + "end": 7960, + "loc": { + "start": { + "line": 381, + "column": 2 + }, + "end": { + "line": 381, + "column": 70 + } + } + }, + { + "type": "CommentLine", + "value": " when the base is a multiple of two", + "start": 7963, + "end": 8000, + "loc": { + "start": { + "line": 382, + "column": 2 + }, + "end": { + "line": 382, + "column": 39 + } + } + }, + { + "type": "CommentLine", + "value": " TODO Once #to is implemented we can rewrite this as", + "start": 8316, + "end": 8370, + "loc": { + "start": { + "line": 411, + "column": 2 + }, + "end": { + "line": 411, + "column": 56 + } + } + }, + { + "type": "CommentLine", + "value": " return this.to(LITTLE_ENDIAN, base, Array) ;", + "start": 8373, + "end": 8420, + "loc": { + "start": { + "line": 412, + "column": 2 + }, + "end": { + "line": 412, + "column": 49 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize", + "start": 8663, + "end": 8679, + "loc": { + "start": { + "line": 431, + "column": 2 + }, + "end": { + "line": 431, + "column": 18 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize with _trim_positive", + "start": 8726, + "end": 8762, + "loc": { + "start": { + "line": 436, + "column": 2 + }, + "end": { + "line": 436, + "column": 38 + } + } + }, + { + "type": "CommentLine", + "value": " TODO use immutable zero", + "start": 10762, + "end": 10788, + "loc": { + "start": { + "line": 545, + "column": 3 + }, + "end": { + "line": 545, + "column": 29 + } + } + } + ], + "tokens": [ + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 0, + "end": 6, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7, + "end": 8, + "loc": { + "start": { + "line": 1, + "column": 7 + }, + "end": { + "line": 1, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "DEFAULT_DISPLAY_BASE", + "start": 8, + "end": 28, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 28 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 28, + "end": 29, + "loc": { + "start": { + "line": 1, + "column": 28 + }, + "end": { + "line": 1, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 30, + "end": 34, + "loc": { + "start": { + "line": 1, + "column": 30 + }, + "end": { + "line": 1, + "column": 34 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./DEFAULT_DISPLAY_BASE.js", + "start": 35, + "end": 62, + "loc": { + "start": { + "line": 1, + "column": 35 + }, + "end": { + "line": 1, + "column": 62 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 62, + "end": 63, + "loc": { + "start": { + "line": 1, + "column": 62 + }, + "end": { + "line": 1, + "column": 63 + } + } + }, + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 64, + "end": 70, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 71, + "end": 72, + "loc": { + "start": { + "line": 2, + "column": 7 + }, + "end": { + "line": 2, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ZeroDivisionError", + "start": 72, + "end": 89, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 25 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 89, + "end": 90, + "loc": { + "start": { + "line": 2, + "column": 25 + }, + "end": { + "line": 2, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 91, + "end": 95, + "loc": { + "start": { + "line": 2, + "column": 27 + }, + "end": { + "line": 2, + "column": 31 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./ZeroDivisionError.js", + "start": 96, + "end": 120, + "loc": { + "start": { + "line": 2, + "column": 32 + }, + "end": { + "line": 2, + "column": 56 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 120, + "end": 121, + "loc": { + "start": { + "line": 2, + "column": 56 + }, + "end": { + "line": 2, + "column": 57 + } + } + }, + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 123, + "end": 129, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 4, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 130, + "end": 131, + "loc": { + "start": { + "line": 4, + "column": 7 + }, + "end": { + "line": 4, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ValueError", + "start": 131, + "end": 141, + "loc": { + "start": { + "line": 4, + "column": 8 + }, + "end": { + "line": 4, + "column": 18 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 141, + "end": 142, + "loc": { + "start": { + "line": 4, + "column": 18 + }, + "end": { + "line": 4, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 143, + "end": 147, + "loc": { + "start": { + "line": 4, + "column": 20 + }, + "end": { + "line": 4, + "column": 24 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "@aureooms/js-error", + "start": 148, + "end": 168, + "loc": { + "start": { + "line": 4, + "column": 25 + }, + "end": { + "line": 4, + "column": 45 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 168, + "end": 169, + "loc": { + "start": { + "line": 4, + "column": 45 + }, + "end": { + "line": 4, + "column": 46 + } + } + }, + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 171, + "end": 177, + "loc": { + "start": { + "line": 6, + "column": 0 + }, + "end": { + "line": 6, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 178, + "end": 179, + "loc": { + "start": { + "line": 6, + "column": 7 + }, + "end": { + "line": 6, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_from_number", + "start": 179, + "end": 191, + "loc": { + "start": { + "line": 6, + "column": 8 + }, + "end": { + "line": 6, + "column": 20 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 191, + "end": 192, + "loc": { + "start": { + "line": 6, + "column": 20 + }, + "end": { + "line": 6, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 193, + "end": 197, + "loc": { + "start": { + "line": 6, + "column": 22 + }, + "end": { + "line": 6, + "column": 26 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./_from_number.js", + "start": 198, + "end": 217, + "loc": { + "start": { + "line": 6, + "column": 27 + }, + "end": { + "line": 6, + "column": 46 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 217, + "end": 218, + "loc": { + "start": { + "line": 6, + "column": 46 + }, + "end": { + "line": 6, + "column": 47 + } + } + }, + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 220, + "end": 226, + "loc": { + "start": { + "line": 8, + "column": 0 + }, + "end": { + "line": 8, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 227, + "end": 228, + "loc": { + "start": { + "line": 8, + "column": 7 + }, + "end": { + "line": 8, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "stringify", + "start": 230, + "end": 239, + "loc": { + "start": { + "line": 9, + "column": 1 + }, + "end": { + "line": 9, + "column": 10 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 239, + "end": 240, + "loc": { + "start": { + "line": 9, + "column": 10 + }, + "end": { + "line": 9, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "convert", + "start": 242, + "end": 249, + "loc": { + "start": { + "line": 10, + "column": 1 + }, + "end": { + "line": 10, + "column": 8 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 249, + "end": 250, + "loc": { + "start": { + "line": 10, + "column": 8 + }, + "end": { + "line": 10, + "column": 9 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_trim_positive", + "start": 252, + "end": 266, + "loc": { + "start": { + "line": 11, + "column": 1 + }, + "end": { + "line": 11, + "column": 15 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 266, + "end": 267, + "loc": { + "start": { + "line": 11, + "column": 15 + }, + "end": { + "line": 11, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_alloc", + "start": 269, + "end": 275, + "loc": { + "start": { + "line": 12, + "column": 1 + }, + "end": { + "line": 12, + "column": 7 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 275, + "end": 276, + "loc": { + "start": { + "line": 12, + "column": 7 + }, + "end": { + "line": 12, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_copy", + "start": 278, + "end": 283, + "loc": { + "start": { + "line": 13, + "column": 1 + }, + "end": { + "line": 13, + "column": 6 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 283, + "end": 284, + "loc": { + "start": { + "line": 13, + "column": 6 + }, + "end": { + "line": 13, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_zeros", + "start": 286, + "end": 292, + "loc": { + "start": { + "line": 14, + "column": 1 + }, + "end": { + "line": 14, + "column": 7 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 292, + "end": 293, + "loc": { + "start": { + "line": 14, + "column": 7 + }, + "end": { + "line": 14, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "jz", + "start": 295, + "end": 297, + "loc": { + "start": { + "line": 15, + "column": 1 + }, + "end": { + "line": 15, + "column": 3 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 297, + "end": 298, + "loc": { + "start": { + "line": 15, + "column": 3 + }, + "end": { + "line": 15, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cmp", + "start": 300, + "end": 303, + "loc": { + "start": { + "line": 16, + "column": 1 + }, + "end": { + "line": 16, + "column": 4 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 303, + "end": 304, + "loc": { + "start": { + "line": 16, + "column": 4 + }, + "end": { + "line": 16, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "eq", + "start": 306, + "end": 308, + "loc": { + "start": { + "line": 17, + "column": 1 + }, + "end": { + "line": 17, + "column": 3 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 308, + "end": 309, + "loc": { + "start": { + "line": 17, + "column": 3 + }, + "end": { + "line": 17, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "add", + "start": 311, + "end": 314, + "loc": { + "start": { + "line": 18, + "column": 1 + }, + "end": { + "line": 18, + "column": 4 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 314, + "end": 315, + "loc": { + "start": { + "line": 18, + "column": 4 + }, + "end": { + "line": 18, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_sub", + "start": 317, + "end": 321, + "loc": { + "start": { + "line": 19, + "column": 1 + }, + "end": { + "line": 19, + "column": 5 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 321, + "end": 322, + "loc": { + "start": { + "line": 19, + "column": 5 + }, + "end": { + "line": 19, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "mul", + "start": 324, + "end": 327, + "loc": { + "start": { + "line": 20, + "column": 1 + }, + "end": { + "line": 20, + "column": 4 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 327, + "end": 328, + "loc": { + "start": { + "line": 20, + "column": 4 + }, + "end": { + "line": 20, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_idivmod", + "start": 330, + "end": 338, + "loc": { + "start": { + "line": 21, + "column": 1 + }, + "end": { + "line": 21, + "column": 9 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 338, + "end": 339, + "loc": { + "start": { + "line": 21, + "column": 9 + }, + "end": { + "line": 21, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_pow_double", + "start": 341, + "end": 352, + "loc": { + "start": { + "line": 22, + "column": 1 + }, + "end": { + "line": 22, + "column": 12 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 352, + "end": 353, + "loc": { + "start": { + "line": 22, + "column": 12 + }, + "end": { + "line": 22, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "increment", + "start": 355, + "end": 364, + "loc": { + "start": { + "line": 23, + "column": 1 + }, + "end": { + "line": 23, + "column": 10 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 364, + "end": 365, + "loc": { + "start": { + "line": 23, + "column": 10 + }, + "end": { + "line": 23, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "euclidean_algorithm", + "start": 367, + "end": 386, + "loc": { + "start": { + "line": 24, + "column": 1 + }, + "end": { + "line": 24, + "column": 20 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 386, + "end": 387, + "loc": { + "start": { + "line": 24, + "column": 20 + }, + "end": { + "line": 24, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "extended_euclidean_algorithm", + "start": 389, + "end": 417, + "loc": { + "start": { + "line": 25, + "column": 1 + }, + "end": { + "line": 25, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 417, + "end": 418, + "loc": { + "start": { + "line": 25, + "column": 29 + }, + "end": { + "line": 25, + "column": 30 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 419, + "end": 420, + "loc": { + "start": { + "line": 26, + "column": 0 + }, + "end": { + "line": 26, + "column": 1 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 421, + "end": 425, + "loc": { + "start": { + "line": 26, + "column": 2 + }, + "end": { + "line": 26, + "column": 6 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "@aureooms/js-integer-big-endian", + "start": 426, + "end": 459, + "loc": { + "start": { + "line": 26, + "column": 7 + }, + "end": { + "line": 26, + "column": 40 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 459, + "end": 460, + "loc": { + "start": { + "line": 26, + "column": 40 + }, + "end": { + "line": 26, + "column": 41 + } + } + }, + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 462, + "end": 468, + "loc": { + "start": { + "line": 28, + "column": 0 + }, + "end": { + "line": 28, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 469, + "end": 470, + "loc": { + "start": { + "line": 28, + "column": 7 + }, + "end": { + "line": 28, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MIN_NUMBER", + "start": 470, + "end": 480, + "loc": { + "start": { + "line": 28, + "column": 8 + }, + "end": { + "line": 28, + "column": 18 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 480, + "end": 481, + "loc": { + "start": { + "line": 28, + "column": 18 + }, + "end": { + "line": 28, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MAX_NUMBER", + "start": 482, + "end": 492, + "loc": { + "start": { + "line": 28, + "column": 20 + }, + "end": { + "line": 28, + "column": 30 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 492, + "end": 493, + "loc": { + "start": { + "line": 28, + "column": 30 + }, + "end": { + "line": 28, + "column": 31 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MAX_BASE", + "start": 494, + "end": 502, + "loc": { + "start": { + "line": 28, + "column": 32 + }, + "end": { + "line": 28, + "column": 40 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 502, + "end": 503, + "loc": { + "start": { + "line": 28, + "column": 40 + }, + "end": { + "line": 28, + "column": 41 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 504, + "end": 508, + "loc": { + "start": { + "line": 28, + "column": 42 + }, + "end": { + "line": 28, + "column": 46 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./_limits.js", + "start": 509, + "end": 523, + "loc": { + "start": { + "line": 28, + "column": 47 + }, + "end": { + "line": 28, + "column": 61 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 523, + "end": 524, + "loc": { + "start": { + "line": 28, + "column": 61 + }, + "end": { + "line": 28, + "column": 62 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 526, + "end": 532, + "loc": { + "start": { + "line": 30, + "column": 0 + }, + "end": { + "line": 30, + "column": 6 + } + } + }, + { + "type": { + "label": "class", + "keyword": "class", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "class", + "start": 533, + "end": 538, + "loc": { + "start": { + "line": 30, + "column": 7 + }, + "end": { + "line": 30, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 539, + "end": 546, + "loc": { + "start": { + "line": 30, + "column": 13 + }, + "end": { + "line": 30, + "column": 20 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 547, + "end": 548, + "loc": { + "start": { + "line": 30, + "column": 21 + }, + "end": { + "line": 30, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "constructor", + "start": 550, + "end": 561, + "loc": { + "start": { + "line": 31, + "column": 1 + }, + "end": { + "line": 31, + "column": 12 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 561, + "end": 562, + "loc": { + "start": { + "line": 31, + "column": 12 + }, + "end": { + "line": 31, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 562, + "end": 566, + "loc": { + "start": { + "line": 31, + "column": 13 + }, + "end": { + "line": 31, + "column": 17 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 566, + "end": 567, + "loc": { + "start": { + "line": 31, + "column": 17 + }, + "end": { + "line": 31, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 568, + "end": 579, + "loc": { + "start": { + "line": 31, + "column": 19 + }, + "end": { + "line": 31, + "column": 30 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 579, + "end": 580, + "loc": { + "start": { + "line": 31, + "column": 30 + }, + "end": { + "line": 31, + "column": 31 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "limbs", + "start": 581, + "end": 586, + "loc": { + "start": { + "line": 31, + "column": 32 + }, + "end": { + "line": 31, + "column": 37 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 586, + "end": 587, + "loc": { + "start": { + "line": 31, + "column": 37 + }, + "end": { + "line": 31, + "column": 38 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 588, + "end": 589, + "loc": { + "start": { + "line": 31, + "column": 39 + }, + "end": { + "line": 31, + "column": 40 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 592, + "end": 596, + "loc": { + "start": { + "line": 32, + "column": 2 + }, + "end": { + "line": 32, + "column": 6 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 596, + "end": 597, + "loc": { + "start": { + "line": 32, + "column": 6 + }, + "end": { + "line": 32, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 597, + "end": 602, + "loc": { + "start": { + "line": 32, + "column": 7 + }, + "end": { + "line": 32, + "column": 12 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 603, + "end": 604, + "loc": { + "start": { + "line": 32, + "column": 13 + }, + "end": { + "line": 32, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 605, + "end": 609, + "loc": { + "start": { + "line": 32, + "column": 15 + }, + "end": { + "line": 32, + "column": 19 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 609, + "end": 610, + "loc": { + "start": { + "line": 32, + "column": 19 + }, + "end": { + "line": 32, + "column": 20 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 613, + "end": 617, + "loc": { + "start": { + "line": 33, + "column": 2 + }, + "end": { + "line": 33, + "column": 6 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 617, + "end": 618, + "loc": { + "start": { + "line": 33, + "column": 6 + }, + "end": { + "line": 33, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 618, + "end": 630, + "loc": { + "start": { + "line": 33, + "column": 7 + }, + "end": { + "line": 33, + "column": 19 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 631, + "end": 632, + "loc": { + "start": { + "line": 33, + "column": 20 + }, + "end": { + "line": 33, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 633, + "end": 644, + "loc": { + "start": { + "line": 33, + "column": 22 + }, + "end": { + "line": 33, + "column": 33 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 644, + "end": 645, + "loc": { + "start": { + "line": 33, + "column": 33 + }, + "end": { + "line": 33, + "column": 34 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 648, + "end": 652, + "loc": { + "start": { + "line": 34, + "column": 2 + }, + "end": { + "line": 34, + "column": 6 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 652, + "end": 653, + "loc": { + "start": { + "line": 34, + "column": 6 + }, + "end": { + "line": 34, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 653, + "end": 659, + "loc": { + "start": { + "line": 34, + "column": 7 + }, + "end": { + "line": 34, + "column": 13 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 660, + "end": 661, + "loc": { + "start": { + "line": 34, + "column": 14 + }, + "end": { + "line": 34, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "limbs", + "start": 662, + "end": 667, + "loc": { + "start": { + "line": 34, + "column": 16 + }, + "end": { + "line": 34, + "column": 21 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 667, + "end": 668, + "loc": { + "start": { + "line": 34, + "column": 21 + }, + "end": { + "line": 34, + "column": 22 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 670, + "end": 671, + "loc": { + "start": { + "line": 35, + "column": 1 + }, + "end": { + "line": 35, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "move", + "start": 674, + "end": 678, + "loc": { + "start": { + "line": 37, + "column": 1 + }, + "end": { + "line": 37, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 678, + "end": 679, + "loc": { + "start": { + "line": 37, + "column": 5 + }, + "end": { + "line": 37, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 679, + "end": 684, + "loc": { + "start": { + "line": 37, + "column": 6 + }, + "end": { + "line": 37, + "column": 11 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 684, + "end": 685, + "loc": { + "start": { + "line": 37, + "column": 11 + }, + "end": { + "line": 37, + "column": 12 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 686, + "end": 687, + "loc": { + "start": { + "line": 37, + "column": 13 + }, + "end": { + "line": 37, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 690, + "end": 695, + "loc": { + "start": { + "line": 38, + "column": 2 + }, + "end": { + "line": 38, + "column": 7 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 695, + "end": 696, + "loc": { + "start": { + "line": 38, + "column": 7 + }, + "end": { + "line": 38, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 696, + "end": 701, + "loc": { + "start": { + "line": 38, + "column": 8 + }, + "end": { + "line": 38, + "column": 13 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 702, + "end": 703, + "loc": { + "start": { + "line": 38, + "column": 14 + }, + "end": { + "line": 38, + "column": 15 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 704, + "end": 708, + "loc": { + "start": { + "line": 38, + "column": 16 + }, + "end": { + "line": 38, + "column": 20 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 708, + "end": 709, + "loc": { + "start": { + "line": 38, + "column": 20 + }, + "end": { + "line": 38, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 709, + "end": 714, + "loc": { + "start": { + "line": 38, + "column": 21 + }, + "end": { + "line": 38, + "column": 26 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 714, + "end": 715, + "loc": { + "start": { + "line": 38, + "column": 26 + }, + "end": { + "line": 38, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 718, + "end": 723, + "loc": { + "start": { + "line": 39, + "column": 2 + }, + "end": { + "line": 39, + "column": 7 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 723, + "end": 724, + "loc": { + "start": { + "line": 39, + "column": 7 + }, + "end": { + "line": 39, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 724, + "end": 736, + "loc": { + "start": { + "line": 39, + "column": 8 + }, + "end": { + "line": 39, + "column": 20 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 737, + "end": 738, + "loc": { + "start": { + "line": 39, + "column": 21 + }, + "end": { + "line": 39, + "column": 22 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 739, + "end": 743, + "loc": { + "start": { + "line": 39, + "column": 23 + }, + "end": { + "line": 39, + "column": 27 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 743, + "end": 744, + "loc": { + "start": { + "line": 39, + "column": 27 + }, + "end": { + "line": 39, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 744, + "end": 756, + "loc": { + "start": { + "line": 39, + "column": 28 + }, + "end": { + "line": 39, + "column": 40 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 756, + "end": 757, + "loc": { + "start": { + "line": 39, + "column": 40 + }, + "end": { + "line": 39, + "column": 41 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 760, + "end": 765, + "loc": { + "start": { + "line": 40, + "column": 2 + }, + "end": { + "line": 40, + "column": 7 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 765, + "end": 766, + "loc": { + "start": { + "line": 40, + "column": 7 + }, + "end": { + "line": 40, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 766, + "end": 772, + "loc": { + "start": { + "line": 40, + "column": 8 + }, + "end": { + "line": 40, + "column": 14 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 773, + "end": 774, + "loc": { + "start": { + "line": 40, + "column": 15 + }, + "end": { + "line": 40, + "column": 16 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 775, + "end": 779, + "loc": { + "start": { + "line": 40, + "column": 17 + }, + "end": { + "line": 40, + "column": 21 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 779, + "end": 780, + "loc": { + "start": { + "line": 40, + "column": 21 + }, + "end": { + "line": 40, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 780, + "end": 786, + "loc": { + "start": { + "line": 40, + "column": 22 + }, + "end": { + "line": 40, + "column": 28 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 786, + "end": 787, + "loc": { + "start": { + "line": 40, + "column": 28 + }, + "end": { + "line": 40, + "column": 29 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 790, + "end": 796, + "loc": { + "start": { + "line": 41, + "column": 2 + }, + "end": { + "line": 41, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 797, + "end": 802, + "loc": { + "start": { + "line": 41, + "column": 9 + }, + "end": { + "line": 41, + "column": 14 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 802, + "end": 803, + "loc": { + "start": { + "line": 41, + "column": 14 + }, + "end": { + "line": 41, + "column": 15 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 805, + "end": 806, + "loc": { + "start": { + "line": 42, + "column": 1 + }, + "end": { + "line": 42, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "clone", + "start": 809, + "end": 814, + "loc": { + "start": { + "line": 44, + "column": 1 + }, + "end": { + "line": 44, + "column": 6 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 814, + "end": 815, + "loc": { + "start": { + "line": 44, + "column": 6 + }, + "end": { + "line": 44, + "column": 7 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 815, + "end": 816, + "loc": { + "start": { + "line": 44, + "column": 7 + }, + "end": { + "line": 44, + "column": 8 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 817, + "end": 818, + "loc": { + "start": { + "line": 44, + "column": 9 + }, + "end": { + "line": 44, + "column": 10 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 821, + "end": 827, + "loc": { + "start": { + "line": 45, + "column": 2 + }, + "end": { + "line": 45, + "column": 8 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 828, + "end": 831, + "loc": { + "start": { + "line": 45, + "column": 9 + }, + "end": { + "line": 45, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 832, + "end": 839, + "loc": { + "start": { + "line": 45, + "column": 13 + }, + "end": { + "line": 45, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 839, + "end": 840, + "loc": { + "start": { + "line": 45, + "column": 20 + }, + "end": { + "line": 45, + "column": 21 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 840, + "end": 844, + "loc": { + "start": { + "line": 45, + "column": 21 + }, + "end": { + "line": 45, + "column": 25 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 844, + "end": 845, + "loc": { + "start": { + "line": 45, + "column": 25 + }, + "end": { + "line": 45, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 845, + "end": 850, + "loc": { + "start": { + "line": 45, + "column": 26 + }, + "end": { + "line": 45, + "column": 31 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 850, + "end": 851, + "loc": { + "start": { + "line": 45, + "column": 31 + }, + "end": { + "line": 45, + "column": 32 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 852, + "end": 856, + "loc": { + "start": { + "line": 45, + "column": 33 + }, + "end": { + "line": 45, + "column": 37 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 856, + "end": 857, + "loc": { + "start": { + "line": 45, + "column": 37 + }, + "end": { + "line": 45, + "column": 38 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 857, + "end": 869, + "loc": { + "start": { + "line": 45, + "column": 38 + }, + "end": { + "line": 45, + "column": 50 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 869, + "end": 870, + "loc": { + "start": { + "line": 45, + "column": 50 + }, + "end": { + "line": 45, + "column": 51 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 871, + "end": 875, + "loc": { + "start": { + "line": 45, + "column": 52 + }, + "end": { + "line": 45, + "column": 56 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 875, + "end": 876, + "loc": { + "start": { + "line": 45, + "column": 56 + }, + "end": { + "line": 45, + "column": 57 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 876, + "end": 882, + "loc": { + "start": { + "line": 45, + "column": 57 + }, + "end": { + "line": 45, + "column": 63 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 882, + "end": 883, + "loc": { + "start": { + "line": 45, + "column": 63 + }, + "end": { + "line": 45, + "column": 64 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 883, + "end": 884, + "loc": { + "start": { + "line": 45, + "column": 64 + }, + "end": { + "line": 45, + "column": 65 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 886, + "end": 887, + "loc": { + "start": { + "line": 46, + "column": 1 + }, + "end": { + "line": 46, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs_in_base", + "start": 890, + "end": 904, + "loc": { + "start": { + "line": 48, + "column": 1 + }, + "end": { + "line": 48, + "column": 15 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 904, + "end": 905, + "loc": { + "start": { + "line": 48, + "column": 15 + }, + "end": { + "line": 48, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 905, + "end": 909, + "loc": { + "start": { + "line": 48, + "column": 16 + }, + "end": { + "line": 48, + "column": 20 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 909, + "end": 910, + "loc": { + "start": { + "line": 48, + "column": 20 + }, + "end": { + "line": 48, + "column": 21 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 911, + "end": 912, + "loc": { + "start": { + "line": 48, + "column": 22 + }, + "end": { + "line": 48, + "column": 23 + } + } + }, + { + "type": "CommentLine", + "value": " TODO save result for later ? Maybe replace base ?", + "start": 915, + "end": 967, + "loc": { + "start": { + "line": 49, + "column": 2 + }, + "end": { + "line": 49, + "column": 54 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 970, + "end": 976, + "loc": { + "start": { + "line": 50, + "column": 2 + }, + "end": { + "line": 50, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 977, + "end": 981, + "loc": { + "start": { + "line": 50, + "column": 9 + }, + "end": { + "line": 50, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 981, + "end": 982, + "loc": { + "start": { + "line": 50, + "column": 13 + }, + "end": { + "line": 50, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 982, + "end": 987, + "loc": { + "start": { + "line": 50, + "column": 14 + }, + "end": { + "line": 50, + "column": 19 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "===", + "start": 988, + "end": 991, + "loc": { + "start": { + "line": 50, + "column": 20 + }, + "end": { + "line": 50, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 992, + "end": 996, + "loc": { + "start": { + "line": 50, + "column": 24 + }, + "end": { + "line": 50, + "column": 28 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1000, + "end": 1001, + "loc": { + "start": { + "line": 51, + "column": 3 + }, + "end": { + "line": 51, + "column": 4 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1002, + "end": 1006, + "loc": { + "start": { + "line": 51, + "column": 5 + }, + "end": { + "line": 51, + "column": 9 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1006, + "end": 1007, + "loc": { + "start": { + "line": 51, + "column": 9 + }, + "end": { + "line": 51, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 1007, + "end": 1013, + "loc": { + "start": { + "line": 51, + "column": 10 + }, + "end": { + "line": 51, + "column": 16 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1017, + "end": 1018, + "loc": { + "start": { + "line": 52, + "column": 3 + }, + "end": { + "line": 52, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "convert", + "start": 1019, + "end": 1026, + "loc": { + "start": { + "line": 52, + "column": 5 + }, + "end": { + "line": 52, + "column": 12 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1026, + "end": 1027, + "loc": { + "start": { + "line": 52, + "column": 12 + }, + "end": { + "line": 52, + "column": 13 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1027, + "end": 1031, + "loc": { + "start": { + "line": 52, + "column": 13 + }, + "end": { + "line": 52, + "column": 17 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1031, + "end": 1032, + "loc": { + "start": { + "line": 52, + "column": 17 + }, + "end": { + "line": 52, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 1032, + "end": 1037, + "loc": { + "start": { + "line": 52, + "column": 18 + }, + "end": { + "line": 52, + "column": 23 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1037, + "end": 1038, + "loc": { + "start": { + "line": 52, + "column": 23 + }, + "end": { + "line": 52, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 1039, + "end": 1043, + "loc": { + "start": { + "line": 52, + "column": 25 + }, + "end": { + "line": 52, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1043, + "end": 1044, + "loc": { + "start": { + "line": 52, + "column": 29 + }, + "end": { + "line": 52, + "column": 30 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1045, + "end": 1049, + "loc": { + "start": { + "line": 52, + "column": 31 + }, + "end": { + "line": 52, + "column": 35 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1049, + "end": 1050, + "loc": { + "start": { + "line": 52, + "column": 35 + }, + "end": { + "line": 52, + "column": 36 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 1050, + "end": 1056, + "loc": { + "start": { + "line": 52, + "column": 36 + }, + "end": { + "line": 52, + "column": 42 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1056, + "end": 1057, + "loc": { + "start": { + "line": 52, + "column": 42 + }, + "end": { + "line": 52, + "column": 43 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 1058, + "end": 1059, + "loc": { + "start": { + "line": 52, + "column": 44 + }, + "end": { + "line": 52, + "column": 45 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1059, + "end": 1060, + "loc": { + "start": { + "line": 52, + "column": 45 + }, + "end": { + "line": 52, + "column": 46 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1061, + "end": 1065, + "loc": { + "start": { + "line": 52, + "column": 47 + }, + "end": { + "line": 52, + "column": 51 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1065, + "end": 1066, + "loc": { + "start": { + "line": 52, + "column": 51 + }, + "end": { + "line": 52, + "column": 52 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 1066, + "end": 1072, + "loc": { + "start": { + "line": 52, + "column": 52 + }, + "end": { + "line": 52, + "column": 58 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1072, + "end": 1073, + "loc": { + "start": { + "line": 52, + "column": 58 + }, + "end": { + "line": 52, + "column": 59 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 1073, + "end": 1079, + "loc": { + "start": { + "line": 52, + "column": 59 + }, + "end": { + "line": 52, + "column": 65 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1079, + "end": 1080, + "loc": { + "start": { + "line": 52, + "column": 65 + }, + "end": { + "line": 52, + "column": 66 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1080, + "end": 1081, + "loc": { + "start": { + "line": 52, + "column": 66 + }, + "end": { + "line": 52, + "column": 67 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1083, + "end": 1084, + "loc": { + "start": { + "line": 53, + "column": 1 + }, + "end": { + "line": 53, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "toString", + "start": 1087, + "end": 1095, + "loc": { + "start": { + "line": 55, + "column": 1 + }, + "end": { + "line": 55, + "column": 9 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1095, + "end": 1096, + "loc": { + "start": { + "line": 55, + "column": 9 + }, + "end": { + "line": 55, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 1096, + "end": 1100, + "loc": { + "start": { + "line": 55, + "column": 10 + }, + "end": { + "line": 55, + "column": 14 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 1101, + "end": 1102, + "loc": { + "start": { + "line": 55, + "column": 15 + }, + "end": { + "line": 55, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "DEFAULT_DISPLAY_BASE", + "start": 1103, + "end": 1123, + "loc": { + "start": { + "line": 55, + "column": 17 + }, + "end": { + "line": 55, + "column": 37 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1123, + "end": 1124, + "loc": { + "start": { + "line": 55, + "column": 37 + }, + "end": { + "line": 55, + "column": 38 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1125, + "end": 1126, + "loc": { + "start": { + "line": 55, + "column": 39 + }, + "end": { + "line": 55, + "column": 40 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 1129, + "end": 1131, + "loc": { + "start": { + "line": 56, + "column": 2 + }, + "end": { + "line": 56, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1132, + "end": 1133, + "loc": { + "start": { + "line": 56, + "column": 5 + }, + "end": { + "line": 56, + "column": 6 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1133, + "end": 1137, + "loc": { + "start": { + "line": 56, + "column": 6 + }, + "end": { + "line": 56, + "column": 10 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1137, + "end": 1138, + "loc": { + "start": { + "line": 56, + "column": 10 + }, + "end": { + "line": 56, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "iszero", + "start": 1138, + "end": 1144, + "loc": { + "start": { + "line": 56, + "column": 11 + }, + "end": { + "line": 56, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1144, + "end": 1145, + "loc": { + "start": { + "line": 56, + "column": 17 + }, + "end": { + "line": 56, + "column": 18 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1145, + "end": 1146, + "loc": { + "start": { + "line": 56, + "column": 18 + }, + "end": { + "line": 56, + "column": 19 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1146, + "end": 1147, + "loc": { + "start": { + "line": 56, + "column": 19 + }, + "end": { + "line": 56, + "column": 20 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1148, + "end": 1154, + "loc": { + "start": { + "line": 56, + "column": 21 + }, + "end": { + "line": 56, + "column": 27 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "0", + "start": 1155, + "end": 1158, + "loc": { + "start": { + "line": 56, + "column": 28 + }, + "end": { + "line": 56, + "column": 31 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1158, + "end": 1159, + "loc": { + "start": { + "line": 56, + "column": 31 + }, + "end": { + "line": 56, + "column": 32 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 1163, + "end": 1168, + "loc": { + "start": { + "line": 58, + "column": 2 + }, + "end": { + "line": 58, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "digits", + "start": 1169, + "end": 1175, + "loc": { + "start": { + "line": 58, + "column": 8 + }, + "end": { + "line": 58, + "column": 14 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 1176, + "end": 1177, + "loc": { + "start": { + "line": 58, + "column": 15 + }, + "end": { + "line": 58, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "stringify", + "start": 1178, + "end": 1187, + "loc": { + "start": { + "line": 58, + "column": 17 + }, + "end": { + "line": 58, + "column": 26 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1187, + "end": 1188, + "loc": { + "start": { + "line": 58, + "column": 26 + }, + "end": { + "line": 58, + "column": 27 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1192, + "end": 1196, + "loc": { + "start": { + "line": 59, + "column": 3 + }, + "end": { + "line": 59, + "column": 7 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1196, + "end": 1197, + "loc": { + "start": { + "line": 59, + "column": 7 + }, + "end": { + "line": 59, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 1197, + "end": 1202, + "loc": { + "start": { + "line": 59, + "column": 8 + }, + "end": { + "line": 59, + "column": 13 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1202, + "end": 1203, + "loc": { + "start": { + "line": 59, + "column": 13 + }, + "end": { + "line": 59, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 1207, + "end": 1211, + "loc": { + "start": { + "line": 60, + "column": 3 + }, + "end": { + "line": 60, + "column": 7 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1211, + "end": 1212, + "loc": { + "start": { + "line": 60, + "column": 7 + }, + "end": { + "line": 60, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1216, + "end": 1220, + "loc": { + "start": { + "line": 61, + "column": 3 + }, + "end": { + "line": 61, + "column": 7 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1220, + "end": 1221, + "loc": { + "start": { + "line": 61, + "column": 7 + }, + "end": { + "line": 61, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 1221, + "end": 1227, + "loc": { + "start": { + "line": 61, + "column": 8 + }, + "end": { + "line": 61, + "column": 14 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1227, + "end": 1228, + "loc": { + "start": { + "line": 61, + "column": 14 + }, + "end": { + "line": 61, + "column": 15 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 1232, + "end": 1233, + "loc": { + "start": { + "line": 62, + "column": 3 + }, + "end": { + "line": 62, + "column": 4 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1233, + "end": 1234, + "loc": { + "start": { + "line": 62, + "column": 4 + }, + "end": { + "line": 62, + "column": 5 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1238, + "end": 1242, + "loc": { + "start": { + "line": 63, + "column": 3 + }, + "end": { + "line": 63, + "column": 7 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1242, + "end": 1243, + "loc": { + "start": { + "line": 63, + "column": 7 + }, + "end": { + "line": 63, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 1243, + "end": 1249, + "loc": { + "start": { + "line": 63, + "column": 8 + }, + "end": { + "line": 63, + "column": 14 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1249, + "end": 1250, + "loc": { + "start": { + "line": 63, + "column": 14 + }, + "end": { + "line": 63, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 1250, + "end": 1256, + "loc": { + "start": { + "line": 63, + "column": 15 + }, + "end": { + "line": 63, + "column": 21 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1256, + "end": 1257, + "loc": { + "start": { + "line": 63, + "column": 21 + }, + "end": { + "line": 63, + "column": 22 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1260, + "end": 1261, + "loc": { + "start": { + "line": 64, + "column": 2 + }, + "end": { + "line": 64, + "column": 3 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1261, + "end": 1262, + "loc": { + "start": { + "line": 64, + "column": 3 + }, + "end": { + "line": 64, + "column": 4 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1266, + "end": 1272, + "loc": { + "start": { + "line": 66, + "column": 2 + }, + "end": { + "line": 66, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1273, + "end": 1277, + "loc": { + "start": { + "line": 66, + "column": 9 + }, + "end": { + "line": 66, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1277, + "end": 1278, + "loc": { + "start": { + "line": 66, + "column": 13 + }, + "end": { + "line": 66, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 1278, + "end": 1290, + "loc": { + "start": { + "line": 66, + "column": 14 + }, + "end": { + "line": 66, + "column": 26 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1291, + "end": 1292, + "loc": { + "start": { + "line": 66, + "column": 27 + }, + "end": { + "line": 66, + "column": 28 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "-", + "start": 1293, + "end": 1296, + "loc": { + "start": { + "line": 66, + "column": 29 + }, + "end": { + "line": 66, + "column": 32 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "+", + "start": 1297, + "end": 1298, + "loc": { + "start": { + "line": 66, + "column": 33 + }, + "end": { + "line": 66, + "column": 34 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "digits", + "start": 1299, + "end": 1305, + "loc": { + "start": { + "line": 66, + "column": 35 + }, + "end": { + "line": 66, + "column": 41 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1306, + "end": 1307, + "loc": { + "start": { + "line": 66, + "column": 42 + }, + "end": { + "line": 66, + "column": 43 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "digits", + "start": 1308, + "end": 1314, + "loc": { + "start": { + "line": 66, + "column": 44 + }, + "end": { + "line": 66, + "column": 50 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1314, + "end": 1315, + "loc": { + "start": { + "line": 66, + "column": 50 + }, + "end": { + "line": 66, + "column": 51 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1317, + "end": 1318, + "loc": { + "start": { + "line": 67, + "column": 1 + }, + "end": { + "line": 67, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "add", + "start": 1321, + "end": 1324, + "loc": { + "start": { + "line": 69, + "column": 1 + }, + "end": { + "line": 69, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1324, + "end": 1325, + "loc": { + "start": { + "line": 69, + "column": 4 + }, + "end": { + "line": 69, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 1325, + "end": 1330, + "loc": { + "start": { + "line": 69, + "column": 5 + }, + "end": { + "line": 69, + "column": 10 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1330, + "end": 1331, + "loc": { + "start": { + "line": 69, + "column": 10 + }, + "end": { + "line": 69, + "column": 11 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1332, + "end": 1333, + "loc": { + "start": { + "line": 69, + "column": 12 + }, + "end": { + "line": 69, + "column": 13 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 1336, + "end": 1338, + "loc": { + "start": { + "line": 70, + "column": 2 + }, + "end": { + "line": 70, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1339, + "end": 1340, + "loc": { + "start": { + "line": 70, + "column": 5 + }, + "end": { + "line": 70, + "column": 6 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1340, + "end": 1344, + "loc": { + "start": { + "line": 70, + "column": 6 + }, + "end": { + "line": 70, + "column": 10 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1344, + "end": 1345, + "loc": { + "start": { + "line": 70, + "column": 10 + }, + "end": { + "line": 70, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 1345, + "end": 1357, + "loc": { + "start": { + "line": 70, + "column": 11 + }, + "end": { + "line": 70, + "column": 23 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "!==", + "start": 1358, + "end": 1361, + "loc": { + "start": { + "line": 70, + "column": 24 + }, + "end": { + "line": 70, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 1362, + "end": 1367, + "loc": { + "start": { + "line": 70, + "column": 28 + }, + "end": { + "line": 70, + "column": 33 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1367, + "end": 1368, + "loc": { + "start": { + "line": 70, + "column": 33 + }, + "end": { + "line": 70, + "column": 34 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 1368, + "end": 1380, + "loc": { + "start": { + "line": 70, + "column": 34 + }, + "end": { + "line": 70, + "column": 46 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1380, + "end": 1381, + "loc": { + "start": { + "line": 70, + "column": 46 + }, + "end": { + "line": 70, + "column": 47 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1382, + "end": 1383, + "loc": { + "start": { + "line": 70, + "column": 48 + }, + "end": { + "line": 70, + "column": 49 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1387, + "end": 1393, + "loc": { + "start": { + "line": 71, + "column": 3 + }, + "end": { + "line": 71, + "column": 9 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 1394, + "end": 1399, + "loc": { + "start": { + "line": 71, + "column": 10 + }, + "end": { + "line": 71, + "column": 15 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1399, + "end": 1400, + "loc": { + "start": { + "line": 71, + "column": 15 + }, + "end": { + "line": 71, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 1400, + "end": 1412, + "loc": { + "start": { + "line": 71, + "column": 16 + }, + "end": { + "line": 71, + "column": 28 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1417, + "end": 1418, + "loc": { + "start": { + "line": 72, + "column": 4 + }, + "end": { + "line": 72, + "column": 5 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1419, + "end": 1423, + "loc": { + "start": { + "line": 72, + "column": 6 + }, + "end": { + "line": 72, + "column": 10 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1423, + "end": 1424, + "loc": { + "start": { + "line": 72, + "column": 10 + }, + "end": { + "line": 72, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "sub", + "start": 1424, + "end": 1427, + "loc": { + "start": { + "line": 72, + "column": 11 + }, + "end": { + "line": 72, + "column": 14 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1427, + "end": 1428, + "loc": { + "start": { + "line": 72, + "column": 14 + }, + "end": { + "line": 72, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 1428, + "end": 1433, + "loc": { + "start": { + "line": 72, + "column": 15 + }, + "end": { + "line": 72, + "column": 20 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1433, + "end": 1434, + "loc": { + "start": { + "line": 72, + "column": 20 + }, + "end": { + "line": 72, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "opposite", + "start": 1434, + "end": 1442, + "loc": { + "start": { + "line": 72, + "column": 21 + }, + "end": { + "line": 72, + "column": 29 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1442, + "end": 1443, + "loc": { + "start": { + "line": 72, + "column": 29 + }, + "end": { + "line": 72, + "column": 30 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1443, + "end": 1444, + "loc": { + "start": { + "line": 72, + "column": 30 + }, + "end": { + "line": 72, + "column": 31 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1444, + "end": 1445, + "loc": { + "start": { + "line": 72, + "column": 31 + }, + "end": { + "line": 72, + "column": 32 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1450, + "end": 1451, + "loc": { + "start": { + "line": 73, + "column": 4 + }, + "end": { + "line": 73, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 1452, + "end": 1457, + "loc": { + "start": { + "line": 73, + "column": 6 + }, + "end": { + "line": 73, + "column": 11 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1457, + "end": 1458, + "loc": { + "start": { + "line": 73, + "column": 11 + }, + "end": { + "line": 73, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "sub", + "start": 1458, + "end": 1461, + "loc": { + "start": { + "line": 73, + "column": 12 + }, + "end": { + "line": 73, + "column": 15 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1461, + "end": 1462, + "loc": { + "start": { + "line": 73, + "column": 15 + }, + "end": { + "line": 73, + "column": 16 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1462, + "end": 1466, + "loc": { + "start": { + "line": 73, + "column": 16 + }, + "end": { + "line": 73, + "column": 20 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1466, + "end": 1467, + "loc": { + "start": { + "line": 73, + "column": 20 + }, + "end": { + "line": 73, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "opposite", + "start": 1467, + "end": 1475, + "loc": { + "start": { + "line": 73, + "column": 21 + }, + "end": { + "line": 73, + "column": 29 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1475, + "end": 1476, + "loc": { + "start": { + "line": 73, + "column": 29 + }, + "end": { + "line": 73, + "column": 30 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1476, + "end": 1477, + "loc": { + "start": { + "line": 73, + "column": 30 + }, + "end": { + "line": 73, + "column": 31 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1477, + "end": 1478, + "loc": { + "start": { + "line": 73, + "column": 31 + }, + "end": { + "line": 73, + "column": 32 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1478, + "end": 1479, + "loc": { + "start": { + "line": 73, + "column": 32 + }, + "end": { + "line": 73, + "column": 33 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1482, + "end": 1483, + "loc": { + "start": { + "line": 74, + "column": 2 + }, + "end": { + "line": 74, + "column": 3 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 1487, + "end": 1492, + "loc": { + "start": { + "line": 76, + "column": 2 + }, + "end": { + "line": 76, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "result_is_negative", + "start": 1493, + "end": 1511, + "loc": { + "start": { + "line": 76, + "column": 8 + }, + "end": { + "line": 76, + "column": 26 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 1512, + "end": 1513, + "loc": { + "start": { + "line": 76, + "column": 27 + }, + "end": { + "line": 76, + "column": 28 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1514, + "end": 1518, + "loc": { + "start": { + "line": 76, + "column": 29 + }, + "end": { + "line": 76, + "column": 33 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1518, + "end": 1519, + "loc": { + "start": { + "line": 76, + "column": 33 + }, + "end": { + "line": 76, + "column": 34 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 1519, + "end": 1531, + "loc": { + "start": { + "line": 76, + "column": 34 + }, + "end": { + "line": 76, + "column": 46 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1531, + "end": 1532, + "loc": { + "start": { + "line": 76, + "column": 46 + }, + "end": { + "line": 76, + "column": 47 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 1535, + "end": 1540, + "loc": { + "start": { + "line": 77, + "column": 2 + }, + "end": { + "line": 77, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 1541, + "end": 1542, + "loc": { + "start": { + "line": 77, + "column": 8 + }, + "end": { + "line": 77, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 1543, + "end": 1544, + "loc": { + "start": { + "line": 77, + "column": 10 + }, + "end": { + "line": 77, + "column": 11 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1545, + "end": 1549, + "loc": { + "start": { + "line": 77, + "column": 12 + }, + "end": { + "line": 77, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1549, + "end": 1550, + "loc": { + "start": { + "line": 77, + "column": 16 + }, + "end": { + "line": 77, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 1550, + "end": 1555, + "loc": { + "start": { + "line": 77, + "column": 17 + }, + "end": { + "line": 77, + "column": 22 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1555, + "end": 1556, + "loc": { + "start": { + "line": 77, + "column": 22 + }, + "end": { + "line": 77, + "column": 23 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 1560, + "end": 1565, + "loc": { + "start": { + "line": 79, + "column": 2 + }, + "end": { + "line": 79, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 1566, + "end": 1567, + "loc": { + "start": { + "line": 79, + "column": 8 + }, + "end": { + "line": 79, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 1568, + "end": 1569, + "loc": { + "start": { + "line": 79, + "column": 10 + }, + "end": { + "line": 79, + "column": 11 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1570, + "end": 1574, + "loc": { + "start": { + "line": 79, + "column": 12 + }, + "end": { + "line": 79, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1574, + "end": 1575, + "loc": { + "start": { + "line": 79, + "column": 16 + }, + "end": { + "line": 79, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 1575, + "end": 1581, + "loc": { + "start": { + "line": 79, + "column": 17 + }, + "end": { + "line": 79, + "column": 23 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1581, + "end": 1582, + "loc": { + "start": { + "line": 79, + "column": 23 + }, + "end": { + "line": 79, + "column": 24 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 1586, + "end": 1591, + "loc": { + "start": { + "line": 81, + "column": 2 + }, + "end": { + "line": 81, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 1592, + "end": 1593, + "loc": { + "start": { + "line": 81, + "column": 8 + }, + "end": { + "line": 81, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 1594, + "end": 1595, + "loc": { + "start": { + "line": 81, + "column": 10 + }, + "end": { + "line": 81, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 1596, + "end": 1601, + "loc": { + "start": { + "line": 81, + "column": 12 + }, + "end": { + "line": 81, + "column": 17 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1601, + "end": 1602, + "loc": { + "start": { + "line": 81, + "column": 17 + }, + "end": { + "line": 81, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs_in_base", + "start": 1602, + "end": 1616, + "loc": { + "start": { + "line": 81, + "column": 18 + }, + "end": { + "line": 81, + "column": 32 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1616, + "end": 1617, + "loc": { + "start": { + "line": 81, + "column": 32 + }, + "end": { + "line": 81, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 1617, + "end": 1618, + "loc": { + "start": { + "line": 81, + "column": 33 + }, + "end": { + "line": 81, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1618, + "end": 1619, + "loc": { + "start": { + "line": 81, + "column": 34 + }, + "end": { + "line": 81, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1619, + "end": 1620, + "loc": { + "start": { + "line": 81, + "column": 35 + }, + "end": { + "line": 81, + "column": 36 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 1624, + "end": 1629, + "loc": { + "start": { + "line": 83, + "column": 2 + }, + "end": { + "line": 83, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "c", + "start": 1630, + "end": 1631, + "loc": { + "start": { + "line": 83, + "column": 8 + }, + "end": { + "line": 83, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 1632, + "end": 1633, + "loc": { + "start": { + "line": 83, + "column": 10 + }, + "end": { + "line": 83, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_zeros", + "start": 1634, + "end": 1640, + "loc": { + "start": { + "line": 83, + "column": 12 + }, + "end": { + "line": 83, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1640, + "end": 1641, + "loc": { + "start": { + "line": 83, + "column": 18 + }, + "end": { + "line": 83, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Math", + "start": 1641, + "end": 1645, + "loc": { + "start": { + "line": 83, + "column": 19 + }, + "end": { + "line": 83, + "column": 23 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1645, + "end": 1646, + "loc": { + "start": { + "line": 83, + "column": 23 + }, + "end": { + "line": 83, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "max", + "start": 1646, + "end": 1649, + "loc": { + "start": { + "line": 83, + "column": 24 + }, + "end": { + "line": 83, + "column": 27 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1649, + "end": 1650, + "loc": { + "start": { + "line": 83, + "column": 27 + }, + "end": { + "line": 83, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 1650, + "end": 1651, + "loc": { + "start": { + "line": 83, + "column": 28 + }, + "end": { + "line": 83, + "column": 29 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1651, + "end": 1652, + "loc": { + "start": { + "line": 83, + "column": 29 + }, + "end": { + "line": 83, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 1652, + "end": 1658, + "loc": { + "start": { + "line": 83, + "column": 30 + }, + "end": { + "line": 83, + "column": 36 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1658, + "end": 1659, + "loc": { + "start": { + "line": 83, + "column": 36 + }, + "end": { + "line": 83, + "column": 37 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 1660, + "end": 1661, + "loc": { + "start": { + "line": 83, + "column": 38 + }, + "end": { + "line": 83, + "column": 39 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1661, + "end": 1662, + "loc": { + "start": { + "line": 83, + "column": 39 + }, + "end": { + "line": 83, + "column": 40 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 1662, + "end": 1668, + "loc": { + "start": { + "line": 83, + "column": 40 + }, + "end": { + "line": 83, + "column": 46 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1668, + "end": 1669, + "loc": { + "start": { + "line": 83, + "column": 46 + }, + "end": { + "line": 83, + "column": 47 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "+", + "start": 1670, + "end": 1671, + "loc": { + "start": { + "line": 83, + "column": 48 + }, + "end": { + "line": 83, + "column": 49 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 1672, + "end": 1673, + "loc": { + "start": { + "line": 83, + "column": 50 + }, + "end": { + "line": 83, + "column": 51 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1673, + "end": 1674, + "loc": { + "start": { + "line": 83, + "column": 51 + }, + "end": { + "line": 83, + "column": 52 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1674, + "end": 1675, + "loc": { + "start": { + "line": 83, + "column": 52 + }, + "end": { + "line": 83, + "column": 53 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "add", + "start": 1679, + "end": 1682, + "loc": { + "start": { + "line": 85, + "column": 2 + }, + "end": { + "line": 85, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1682, + "end": 1683, + "loc": { + "start": { + "line": 85, + "column": 5 + }, + "end": { + "line": 85, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 1683, + "end": 1684, + "loc": { + "start": { + "line": 85, + "column": 6 + }, + "end": { + "line": 85, + "column": 7 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1684, + "end": 1685, + "loc": { + "start": { + "line": 85, + "column": 7 + }, + "end": { + "line": 85, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 1686, + "end": 1687, + "loc": { + "start": { + "line": 85, + "column": 9 + }, + "end": { + "line": 85, + "column": 10 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1687, + "end": 1688, + "loc": { + "start": { + "line": 85, + "column": 10 + }, + "end": { + "line": 85, + "column": 11 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 1689, + "end": 1690, + "loc": { + "start": { + "line": 85, + "column": 12 + }, + "end": { + "line": 85, + "column": 13 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1690, + "end": 1691, + "loc": { + "start": { + "line": 85, + "column": 13 + }, + "end": { + "line": 85, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 1692, + "end": 1693, + "loc": { + "start": { + "line": 85, + "column": 15 + }, + "end": { + "line": 85, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1693, + "end": 1694, + "loc": { + "start": { + "line": 85, + "column": 16 + }, + "end": { + "line": 85, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 1694, + "end": 1700, + "loc": { + "start": { + "line": 85, + "column": 17 + }, + "end": { + "line": 85, + "column": 23 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1700, + "end": 1701, + "loc": { + "start": { + "line": 85, + "column": 23 + }, + "end": { + "line": 85, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 1702, + "end": 1703, + "loc": { + "start": { + "line": 85, + "column": 25 + }, + "end": { + "line": 85, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1703, + "end": 1704, + "loc": { + "start": { + "line": 85, + "column": 26 + }, + "end": { + "line": 85, + "column": 27 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 1705, + "end": 1706, + "loc": { + "start": { + "line": 85, + "column": 28 + }, + "end": { + "line": 85, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1706, + "end": 1707, + "loc": { + "start": { + "line": 85, + "column": 29 + }, + "end": { + "line": 85, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 1708, + "end": 1709, + "loc": { + "start": { + "line": 85, + "column": 31 + }, + "end": { + "line": 85, + "column": 32 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1709, + "end": 1710, + "loc": { + "start": { + "line": 85, + "column": 32 + }, + "end": { + "line": 85, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 1710, + "end": 1716, + "loc": { + "start": { + "line": 85, + "column": 33 + }, + "end": { + "line": 85, + "column": 39 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1716, + "end": 1717, + "loc": { + "start": { + "line": 85, + "column": 39 + }, + "end": { + "line": 85, + "column": 40 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "c", + "start": 1718, + "end": 1719, + "loc": { + "start": { + "line": 85, + "column": 41 + }, + "end": { + "line": 85, + "column": 42 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1719, + "end": 1720, + "loc": { + "start": { + "line": 85, + "column": 42 + }, + "end": { + "line": 85, + "column": 43 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 1721, + "end": 1722, + "loc": { + "start": { + "line": 85, + "column": 44 + }, + "end": { + "line": 85, + "column": 45 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1722, + "end": 1723, + "loc": { + "start": { + "line": 85, + "column": 45 + }, + "end": { + "line": 85, + "column": 46 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "c", + "start": 1724, + "end": 1725, + "loc": { + "start": { + "line": 85, + "column": 47 + }, + "end": { + "line": 85, + "column": 48 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1725, + "end": 1726, + "loc": { + "start": { + "line": 85, + "column": 48 + }, + "end": { + "line": 85, + "column": 49 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 1726, + "end": 1732, + "loc": { + "start": { + "line": 85, + "column": 49 + }, + "end": { + "line": 85, + "column": 55 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1732, + "end": 1733, + "loc": { + "start": { + "line": 85, + "column": 55 + }, + "end": { + "line": 85, + "column": 56 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1733, + "end": 1734, + "loc": { + "start": { + "line": 85, + "column": 56 + }, + "end": { + "line": 85, + "column": 57 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1738, + "end": 1744, + "loc": { + "start": { + "line": 87, + "column": 2 + }, + "end": { + "line": 87, + "column": 8 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 1745, + "end": 1748, + "loc": { + "start": { + "line": 87, + "column": 9 + }, + "end": { + "line": 87, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 1749, + "end": 1756, + "loc": { + "start": { + "line": 87, + "column": 13 + }, + "end": { + "line": 87, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1756, + "end": 1757, + "loc": { + "start": { + "line": 87, + "column": 20 + }, + "end": { + "line": 87, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 1757, + "end": 1758, + "loc": { + "start": { + "line": 87, + "column": 21 + }, + "end": { + "line": 87, + "column": 22 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1758, + "end": 1759, + "loc": { + "start": { + "line": 87, + "column": 22 + }, + "end": { + "line": 87, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "result_is_negative", + "start": 1760, + "end": 1778, + "loc": { + "start": { + "line": 87, + "column": 24 + }, + "end": { + "line": 87, + "column": 42 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1778, + "end": 1779, + "loc": { + "start": { + "line": 87, + "column": 42 + }, + "end": { + "line": 87, + "column": 43 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "c", + "start": 1780, + "end": 1781, + "loc": { + "start": { + "line": 87, + "column": 44 + }, + "end": { + "line": 87, + "column": 45 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1781, + "end": 1782, + "loc": { + "start": { + "line": 87, + "column": 45 + }, + "end": { + "line": 87, + "column": 46 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1782, + "end": 1783, + "loc": { + "start": { + "line": 87, + "column": 46 + }, + "end": { + "line": 87, + "column": 47 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1785, + "end": 1786, + "loc": { + "start": { + "line": 88, + "column": 1 + }, + "end": { + "line": 88, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "iadd", + "start": 1789, + "end": 1793, + "loc": { + "start": { + "line": 90, + "column": 1 + }, + "end": { + "line": 90, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1793, + "end": 1794, + "loc": { + "start": { + "line": 90, + "column": 5 + }, + "end": { + "line": 90, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 1794, + "end": 1799, + "loc": { + "start": { + "line": 90, + "column": 6 + }, + "end": { + "line": 90, + "column": 11 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1799, + "end": 1800, + "loc": { + "start": { + "line": 90, + "column": 11 + }, + "end": { + "line": 90, + "column": 12 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1801, + "end": 1802, + "loc": { + "start": { + "line": 90, + "column": 13 + }, + "end": { + "line": 90, + "column": 14 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 1805, + "end": 1854, + "loc": { + "start": { + "line": 91, + "column": 2 + }, + "end": { + "line": 91, + "column": 51 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1857, + "end": 1863, + "loc": { + "start": { + "line": 92, + "column": 2 + }, + "end": { + "line": 92, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1864, + "end": 1868, + "loc": { + "start": { + "line": 92, + "column": 9 + }, + "end": { + "line": 92, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1868, + "end": 1869, + "loc": { + "start": { + "line": 92, + "column": 13 + }, + "end": { + "line": 92, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "add", + "start": 1869, + "end": 1872, + "loc": { + "start": { + "line": 92, + "column": 14 + }, + "end": { + "line": 92, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1872, + "end": 1873, + "loc": { + "start": { + "line": 92, + "column": 17 + }, + "end": { + "line": 92, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 1873, + "end": 1878, + "loc": { + "start": { + "line": 92, + "column": 18 + }, + "end": { + "line": 92, + "column": 23 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1878, + "end": 1879, + "loc": { + "start": { + "line": 92, + "column": 23 + }, + "end": { + "line": 92, + "column": 24 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1879, + "end": 1880, + "loc": { + "start": { + "line": 92, + "column": 24 + }, + "end": { + "line": 92, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "move", + "start": 1880, + "end": 1884, + "loc": { + "start": { + "line": 92, + "column": 25 + }, + "end": { + "line": 92, + "column": 29 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1884, + "end": 1885, + "loc": { + "start": { + "line": 92, + "column": 29 + }, + "end": { + "line": 92, + "column": 30 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1885, + "end": 1889, + "loc": { + "start": { + "line": 92, + "column": 30 + }, + "end": { + "line": 92, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1889, + "end": 1890, + "loc": { + "start": { + "line": 92, + "column": 34 + }, + "end": { + "line": 92, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1890, + "end": 1891, + "loc": { + "start": { + "line": 92, + "column": 35 + }, + "end": { + "line": 92, + "column": 36 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1893, + "end": 1894, + "loc": { + "start": { + "line": 93, + "column": 1 + }, + "end": { + "line": 93, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "addn", + "start": 1897, + "end": 1901, + "loc": { + "start": { + "line": 95, + "column": 1 + }, + "end": { + "line": 95, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1901, + "end": 1902, + "loc": { + "start": { + "line": 95, + "column": 5 + }, + "end": { + "line": 95, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 1902, + "end": 1908, + "loc": { + "start": { + "line": 95, + "column": 6 + }, + "end": { + "line": 95, + "column": 12 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1908, + "end": 1909, + "loc": { + "start": { + "line": 95, + "column": 12 + }, + "end": { + "line": 95, + "column": 13 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1910, + "end": 1911, + "loc": { + "start": { + "line": 95, + "column": 14 + }, + "end": { + "line": 95, + "column": 15 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize", + "start": 1914, + "end": 1930, + "loc": { + "start": { + "line": 96, + "column": 2 + }, + "end": { + "line": 96, + "column": 18 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1933, + "end": 1939, + "loc": { + "start": { + "line": 97, + "column": 2 + }, + "end": { + "line": 97, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1940, + "end": 1944, + "loc": { + "start": { + "line": 97, + "column": 9 + }, + "end": { + "line": 97, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1944, + "end": 1945, + "loc": { + "start": { + "line": 97, + "column": 13 + }, + "end": { + "line": 97, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "add", + "start": 1945, + "end": 1948, + "loc": { + "start": { + "line": 97, + "column": 14 + }, + "end": { + "line": 97, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1948, + "end": 1949, + "loc": { + "start": { + "line": 97, + "column": 17 + }, + "end": { + "line": 97, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_from_number", + "start": 1949, + "end": 1961, + "loc": { + "start": { + "line": 97, + "column": 18 + }, + "end": { + "line": 97, + "column": 30 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1961, + "end": 1962, + "loc": { + "start": { + "line": 97, + "column": 30 + }, + "end": { + "line": 97, + "column": 31 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 1962, + "end": 1968, + "loc": { + "start": { + "line": 97, + "column": 31 + }, + "end": { + "line": 97, + "column": 37 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1968, + "end": 1969, + "loc": { + "start": { + "line": 97, + "column": 37 + }, + "end": { + "line": 97, + "column": 38 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1969, + "end": 1970, + "loc": { + "start": { + "line": 97, + "column": 38 + }, + "end": { + "line": 97, + "column": 39 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1970, + "end": 1971, + "loc": { + "start": { + "line": 97, + "column": 39 + }, + "end": { + "line": 97, + "column": 40 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1973, + "end": 1974, + "loc": { + "start": { + "line": 98, + "column": 1 + }, + "end": { + "line": 98, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "iaddn", + "start": 1977, + "end": 1982, + "loc": { + "start": { + "line": 100, + "column": 1 + }, + "end": { + "line": 100, + "column": 6 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1982, + "end": 1983, + "loc": { + "start": { + "line": 100, + "column": 6 + }, + "end": { + "line": 100, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 1983, + "end": 1989, + "loc": { + "start": { + "line": 100, + "column": 7 + }, + "end": { + "line": 100, + "column": 13 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1989, + "end": 1990, + "loc": { + "start": { + "line": 100, + "column": 13 + }, + "end": { + "line": 100, + "column": 14 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1991, + "end": 1992, + "loc": { + "start": { + "line": 100, + "column": 15 + }, + "end": { + "line": 100, + "column": 16 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 1995, + "end": 2044, + "loc": { + "start": { + "line": 101, + "column": 2 + }, + "end": { + "line": 101, + "column": 51 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2047, + "end": 2053, + "loc": { + "start": { + "line": 102, + "column": 2 + }, + "end": { + "line": 102, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2054, + "end": 2058, + "loc": { + "start": { + "line": 102, + "column": 9 + }, + "end": { + "line": 102, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2058, + "end": 2059, + "loc": { + "start": { + "line": 102, + "column": 13 + }, + "end": { + "line": 102, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "addn", + "start": 2059, + "end": 2063, + "loc": { + "start": { + "line": 102, + "column": 14 + }, + "end": { + "line": 102, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2063, + "end": 2064, + "loc": { + "start": { + "line": 102, + "column": 18 + }, + "end": { + "line": 102, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 2064, + "end": 2070, + "loc": { + "start": { + "line": 102, + "column": 19 + }, + "end": { + "line": 102, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2070, + "end": 2071, + "loc": { + "start": { + "line": 102, + "column": 25 + }, + "end": { + "line": 102, + "column": 26 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2071, + "end": 2072, + "loc": { + "start": { + "line": 102, + "column": 26 + }, + "end": { + "line": 102, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "move", + "start": 2072, + "end": 2076, + "loc": { + "start": { + "line": 102, + "column": 27 + }, + "end": { + "line": 102, + "column": 31 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2076, + "end": 2077, + "loc": { + "start": { + "line": 102, + "column": 31 + }, + "end": { + "line": 102, + "column": 32 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2077, + "end": 2081, + "loc": { + "start": { + "line": 102, + "column": 32 + }, + "end": { + "line": 102, + "column": 36 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2081, + "end": 2082, + "loc": { + "start": { + "line": 102, + "column": 36 + }, + "end": { + "line": 102, + "column": 37 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2082, + "end": 2083, + "loc": { + "start": { + "line": 102, + "column": 37 + }, + "end": { + "line": 102, + "column": 38 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2085, + "end": 2086, + "loc": { + "start": { + "line": 103, + "column": 1 + }, + "end": { + "line": 103, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "sub", + "start": 2089, + "end": 2092, + "loc": { + "start": { + "line": 105, + "column": 1 + }, + "end": { + "line": 105, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2092, + "end": 2093, + "loc": { + "start": { + "line": 105, + "column": 4 + }, + "end": { + "line": 105, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 2093, + "end": 2098, + "loc": { + "start": { + "line": 105, + "column": 5 + }, + "end": { + "line": 105, + "column": 10 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2098, + "end": 2099, + "loc": { + "start": { + "line": 105, + "column": 10 + }, + "end": { + "line": 105, + "column": 11 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2100, + "end": 2101, + "loc": { + "start": { + "line": 105, + "column": 12 + }, + "end": { + "line": 105, + "column": 13 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 2104, + "end": 2106, + "loc": { + "start": { + "line": 106, + "column": 2 + }, + "end": { + "line": 106, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2107, + "end": 2108, + "loc": { + "start": { + "line": 106, + "column": 5 + }, + "end": { + "line": 106, + "column": 6 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2108, + "end": 2112, + "loc": { + "start": { + "line": 106, + "column": 6 + }, + "end": { + "line": 106, + "column": 10 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2112, + "end": 2113, + "loc": { + "start": { + "line": 106, + "column": 10 + }, + "end": { + "line": 106, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 2113, + "end": 2125, + "loc": { + "start": { + "line": 106, + "column": 11 + }, + "end": { + "line": 106, + "column": 23 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "!==", + "start": 2126, + "end": 2129, + "loc": { + "start": { + "line": 106, + "column": 24 + }, + "end": { + "line": 106, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 2130, + "end": 2135, + "loc": { + "start": { + "line": 106, + "column": 28 + }, + "end": { + "line": 106, + "column": 33 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2135, + "end": 2136, + "loc": { + "start": { + "line": 106, + "column": 33 + }, + "end": { + "line": 106, + "column": 34 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 2136, + "end": 2148, + "loc": { + "start": { + "line": 106, + "column": 34 + }, + "end": { + "line": 106, + "column": 46 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2148, + "end": 2149, + "loc": { + "start": { + "line": 106, + "column": 46 + }, + "end": { + "line": 106, + "column": 47 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2150, + "end": 2151, + "loc": { + "start": { + "line": 106, + "column": 48 + }, + "end": { + "line": 106, + "column": 49 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2155, + "end": 2161, + "loc": { + "start": { + "line": 107, + "column": 3 + }, + "end": { + "line": 107, + "column": 9 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 2162, + "end": 2167, + "loc": { + "start": { + "line": 107, + "column": 10 + }, + "end": { + "line": 107, + "column": 15 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2167, + "end": 2168, + "loc": { + "start": { + "line": 107, + "column": 15 + }, + "end": { + "line": 107, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 2168, + "end": 2180, + "loc": { + "start": { + "line": 107, + "column": 16 + }, + "end": { + "line": 107, + "column": 28 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2185, + "end": 2186, + "loc": { + "start": { + "line": 108, + "column": 4 + }, + "end": { + "line": 108, + "column": 5 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2187, + "end": 2191, + "loc": { + "start": { + "line": 108, + "column": 6 + }, + "end": { + "line": 108, + "column": 10 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2191, + "end": 2192, + "loc": { + "start": { + "line": 108, + "column": 10 + }, + "end": { + "line": 108, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "add", + "start": 2192, + "end": 2195, + "loc": { + "start": { + "line": 108, + "column": 11 + }, + "end": { + "line": 108, + "column": 14 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2195, + "end": 2196, + "loc": { + "start": { + "line": 108, + "column": 14 + }, + "end": { + "line": 108, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 2196, + "end": 2201, + "loc": { + "start": { + "line": 108, + "column": 15 + }, + "end": { + "line": 108, + "column": 20 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2201, + "end": 2202, + "loc": { + "start": { + "line": 108, + "column": 20 + }, + "end": { + "line": 108, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "opposite", + "start": 2202, + "end": 2210, + "loc": { + "start": { + "line": 108, + "column": 21 + }, + "end": { + "line": 108, + "column": 29 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2210, + "end": 2211, + "loc": { + "start": { + "line": 108, + "column": 29 + }, + "end": { + "line": 108, + "column": 30 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2211, + "end": 2212, + "loc": { + "start": { + "line": 108, + "column": 30 + }, + "end": { + "line": 108, + "column": 31 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2212, + "end": 2213, + "loc": { + "start": { + "line": 108, + "column": 31 + }, + "end": { + "line": 108, + "column": 32 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2218, + "end": 2219, + "loc": { + "start": { + "line": 109, + "column": 4 + }, + "end": { + "line": 109, + "column": 5 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2220, + "end": 2224, + "loc": { + "start": { + "line": 109, + "column": 6 + }, + "end": { + "line": 109, + "column": 10 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2224, + "end": 2225, + "loc": { + "start": { + "line": 109, + "column": 10 + }, + "end": { + "line": 109, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "opposite", + "start": 2225, + "end": 2233, + "loc": { + "start": { + "line": 109, + "column": 11 + }, + "end": { + "line": 109, + "column": 19 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2233, + "end": 2234, + "loc": { + "start": { + "line": 109, + "column": 19 + }, + "end": { + "line": 109, + "column": 20 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2234, + "end": 2235, + "loc": { + "start": { + "line": 109, + "column": 20 + }, + "end": { + "line": 109, + "column": 21 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2235, + "end": 2236, + "loc": { + "start": { + "line": 109, + "column": 21 + }, + "end": { + "line": 109, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "add", + "start": 2236, + "end": 2239, + "loc": { + "start": { + "line": 109, + "column": 22 + }, + "end": { + "line": 109, + "column": 25 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2239, + "end": 2240, + "loc": { + "start": { + "line": 109, + "column": 25 + }, + "end": { + "line": 109, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 2240, + "end": 2245, + "loc": { + "start": { + "line": 109, + "column": 26 + }, + "end": { + "line": 109, + "column": 31 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2245, + "end": 2246, + "loc": { + "start": { + "line": 109, + "column": 31 + }, + "end": { + "line": 109, + "column": 32 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2246, + "end": 2247, + "loc": { + "start": { + "line": 109, + "column": 32 + }, + "end": { + "line": 109, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "opposite", + "start": 2247, + "end": 2255, + "loc": { + "start": { + "line": 109, + "column": 33 + }, + "end": { + "line": 109, + "column": 41 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2255, + "end": 2256, + "loc": { + "start": { + "line": 109, + "column": 41 + }, + "end": { + "line": 109, + "column": 42 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2256, + "end": 2257, + "loc": { + "start": { + "line": 109, + "column": 42 + }, + "end": { + "line": 109, + "column": 43 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2257, + "end": 2258, + "loc": { + "start": { + "line": 109, + "column": 43 + }, + "end": { + "line": 109, + "column": 44 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2261, + "end": 2262, + "loc": { + "start": { + "line": 110, + "column": 2 + }, + "end": { + "line": 110, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " /!\\ _sub needs |c| >= |a| >= |b|", + "start": 2265, + "end": 2300, + "loc": { + "start": { + "line": 111, + "column": 2 + }, + "end": { + "line": 111, + "column": 37 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 2304, + "end": 2309, + "loc": { + "start": { + "line": 113, + "column": 2 + }, + "end": { + "line": 113, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 2310, + "end": 2311, + "loc": { + "start": { + "line": 113, + "column": 8 + }, + "end": { + "line": 113, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 2312, + "end": 2313, + "loc": { + "start": { + "line": 113, + "column": 10 + }, + "end": { + "line": 113, + "column": 11 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2314, + "end": 2318, + "loc": { + "start": { + "line": 113, + "column": 12 + }, + "end": { + "line": 113, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2318, + "end": 2319, + "loc": { + "start": { + "line": 113, + "column": 16 + }, + "end": { + "line": 113, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 2319, + "end": 2324, + "loc": { + "start": { + "line": 113, + "column": 17 + }, + "end": { + "line": 113, + "column": 22 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2324, + "end": 2325, + "loc": { + "start": { + "line": 113, + "column": 22 + }, + "end": { + "line": 113, + "column": 23 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 2328, + "end": 2333, + "loc": { + "start": { + "line": 114, + "column": 2 + }, + "end": { + "line": 114, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 2334, + "end": 2335, + "loc": { + "start": { + "line": 114, + "column": 8 + }, + "end": { + "line": 114, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 2336, + "end": 2337, + "loc": { + "start": { + "line": 114, + "column": 10 + }, + "end": { + "line": 114, + "column": 11 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2338, + "end": 2342, + "loc": { + "start": { + "line": 114, + "column": 12 + }, + "end": { + "line": 114, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2342, + "end": 2343, + "loc": { + "start": { + "line": 114, + "column": 16 + }, + "end": { + "line": 114, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 2343, + "end": 2349, + "loc": { + "start": { + "line": 114, + "column": 17 + }, + "end": { + "line": 114, + "column": 23 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2349, + "end": 2350, + "loc": { + "start": { + "line": 114, + "column": 23 + }, + "end": { + "line": 114, + "column": 24 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 2353, + "end": 2358, + "loc": { + "start": { + "line": 115, + "column": 2 + }, + "end": { + "line": 115, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "aj", + "start": 2359, + "end": 2361, + "loc": { + "start": { + "line": 115, + "column": 8 + }, + "end": { + "line": 115, + "column": 10 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 2362, + "end": 2363, + "loc": { + "start": { + "line": 115, + "column": 11 + }, + "end": { + "line": 115, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 2364, + "end": 2365, + "loc": { + "start": { + "line": 115, + "column": 13 + }, + "end": { + "line": 115, + "column": 14 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2365, + "end": 2366, + "loc": { + "start": { + "line": 115, + "column": 14 + }, + "end": { + "line": 115, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 2366, + "end": 2372, + "loc": { + "start": { + "line": 115, + "column": 15 + }, + "end": { + "line": 115, + "column": 21 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2372, + "end": 2373, + "loc": { + "start": { + "line": 115, + "column": 21 + }, + "end": { + "line": 115, + "column": 22 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 2376, + "end": 2381, + "loc": { + "start": { + "line": 116, + "column": 2 + }, + "end": { + "line": 116, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ai", + "start": 2382, + "end": 2384, + "loc": { + "start": { + "line": 116, + "column": 8 + }, + "end": { + "line": 116, + "column": 10 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 2385, + "end": 2386, + "loc": { + "start": { + "line": 116, + "column": 11 + }, + "end": { + "line": 116, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_trim_positive", + "start": 2387, + "end": 2401, + "loc": { + "start": { + "line": 116, + "column": 13 + }, + "end": { + "line": 116, + "column": 27 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2401, + "end": 2402, + "loc": { + "start": { + "line": 116, + "column": 27 + }, + "end": { + "line": 116, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 2402, + "end": 2403, + "loc": { + "start": { + "line": 116, + "column": 28 + }, + "end": { + "line": 116, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2403, + "end": 2404, + "loc": { + "start": { + "line": 116, + "column": 29 + }, + "end": { + "line": 116, + "column": 30 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 2405, + "end": 2406, + "loc": { + "start": { + "line": 116, + "column": 31 + }, + "end": { + "line": 116, + "column": 32 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2406, + "end": 2407, + "loc": { + "start": { + "line": 116, + "column": 32 + }, + "end": { + "line": 116, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "aj", + "start": 2408, + "end": 2410, + "loc": { + "start": { + "line": 116, + "column": 34 + }, + "end": { + "line": 116, + "column": 36 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2410, + "end": 2411, + "loc": { + "start": { + "line": 116, + "column": 36 + }, + "end": { + "line": 116, + "column": 37 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2411, + "end": 2412, + "loc": { + "start": { + "line": 116, + "column": 37 + }, + "end": { + "line": 116, + "column": 38 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 2416, + "end": 2418, + "loc": { + "start": { + "line": 118, + "column": 2 + }, + "end": { + "line": 118, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2419, + "end": 2420, + "loc": { + "start": { + "line": 118, + "column": 5 + }, + "end": { + "line": 118, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ai", + "start": 2420, + "end": 2422, + "loc": { + "start": { + "line": 118, + "column": 6 + }, + "end": { + "line": 118, + "column": 8 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": ">=", + "start": 2423, + "end": 2425, + "loc": { + "start": { + "line": 118, + "column": 9 + }, + "end": { + "line": 118, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "aj", + "start": 2426, + "end": 2428, + "loc": { + "start": { + "line": 118, + "column": 12 + }, + "end": { + "line": 118, + "column": 14 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2428, + "end": 2429, + "loc": { + "start": { + "line": 118, + "column": 14 + }, + "end": { + "line": 118, + "column": 15 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2430, + "end": 2436, + "loc": { + "start": { + "line": 118, + "column": 16 + }, + "end": { + "line": 118, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 2437, + "end": 2442, + "loc": { + "start": { + "line": 118, + "column": 23 + }, + "end": { + "line": 118, + "column": 28 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2442, + "end": 2443, + "loc": { + "start": { + "line": 118, + "column": 28 + }, + "end": { + "line": 118, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "opposite", + "start": 2443, + "end": 2451, + "loc": { + "start": { + "line": 118, + "column": 29 + }, + "end": { + "line": 118, + "column": 37 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2451, + "end": 2452, + "loc": { + "start": { + "line": 118, + "column": 37 + }, + "end": { + "line": 118, + "column": 38 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2452, + "end": 2453, + "loc": { + "start": { + "line": 118, + "column": 38 + }, + "end": { + "line": 118, + "column": 39 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2453, + "end": 2454, + "loc": { + "start": { + "line": 118, + "column": 39 + }, + "end": { + "line": 118, + "column": 40 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 2458, + "end": 2463, + "loc": { + "start": { + "line": 120, + "column": 2 + }, + "end": { + "line": 120, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 2464, + "end": 2465, + "loc": { + "start": { + "line": 120, + "column": 8 + }, + "end": { + "line": 120, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 2466, + "end": 2467, + "loc": { + "start": { + "line": 120, + "column": 10 + }, + "end": { + "line": 120, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 2468, + "end": 2473, + "loc": { + "start": { + "line": 120, + "column": 12 + }, + "end": { + "line": 120, + "column": 17 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2473, + "end": 2474, + "loc": { + "start": { + "line": 120, + "column": 17 + }, + "end": { + "line": 120, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs_in_base", + "start": 2474, + "end": 2488, + "loc": { + "start": { + "line": 120, + "column": 18 + }, + "end": { + "line": 120, + "column": 32 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2488, + "end": 2489, + "loc": { + "start": { + "line": 120, + "column": 32 + }, + "end": { + "line": 120, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 2489, + "end": 2490, + "loc": { + "start": { + "line": 120, + "column": 33 + }, + "end": { + "line": 120, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2490, + "end": 2491, + "loc": { + "start": { + "line": 120, + "column": 34 + }, + "end": { + "line": 120, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2491, + "end": 2492, + "loc": { + "start": { + "line": 120, + "column": 35 + }, + "end": { + "line": 120, + "column": 36 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 2495, + "end": 2500, + "loc": { + "start": { + "line": 121, + "column": 2 + }, + "end": { + "line": 121, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "bj", + "start": 2501, + "end": 2503, + "loc": { + "start": { + "line": 121, + "column": 8 + }, + "end": { + "line": 121, + "column": 10 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 2504, + "end": 2505, + "loc": { + "start": { + "line": 121, + "column": 11 + }, + "end": { + "line": 121, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 2506, + "end": 2507, + "loc": { + "start": { + "line": 121, + "column": 13 + }, + "end": { + "line": 121, + "column": 14 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2507, + "end": 2508, + "loc": { + "start": { + "line": 121, + "column": 14 + }, + "end": { + "line": 121, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 2508, + "end": 2514, + "loc": { + "start": { + "line": 121, + "column": 15 + }, + "end": { + "line": 121, + "column": 21 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2514, + "end": 2515, + "loc": { + "start": { + "line": 121, + "column": 21 + }, + "end": { + "line": 121, + "column": 22 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 2518, + "end": 2523, + "loc": { + "start": { + "line": 122, + "column": 2 + }, + "end": { + "line": 122, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "bi", + "start": 2524, + "end": 2526, + "loc": { + "start": { + "line": 122, + "column": 8 + }, + "end": { + "line": 122, + "column": 10 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 2527, + "end": 2528, + "loc": { + "start": { + "line": 122, + "column": 11 + }, + "end": { + "line": 122, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_trim_positive", + "start": 2529, + "end": 2543, + "loc": { + "start": { + "line": 122, + "column": 13 + }, + "end": { + "line": 122, + "column": 27 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2543, + "end": 2544, + "loc": { + "start": { + "line": 122, + "column": 27 + }, + "end": { + "line": 122, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 2544, + "end": 2545, + "loc": { + "start": { + "line": 122, + "column": 28 + }, + "end": { + "line": 122, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2545, + "end": 2546, + "loc": { + "start": { + "line": 122, + "column": 29 + }, + "end": { + "line": 122, + "column": 30 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 2547, + "end": 2548, + "loc": { + "start": { + "line": 122, + "column": 31 + }, + "end": { + "line": 122, + "column": 32 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2548, + "end": 2549, + "loc": { + "start": { + "line": 122, + "column": 32 + }, + "end": { + "line": 122, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "bj", + "start": 2550, + "end": 2552, + "loc": { + "start": { + "line": 122, + "column": 34 + }, + "end": { + "line": 122, + "column": 36 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2552, + "end": 2553, + "loc": { + "start": { + "line": 122, + "column": 36 + }, + "end": { + "line": 122, + "column": 37 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2553, + "end": 2554, + "loc": { + "start": { + "line": 122, + "column": 37 + }, + "end": { + "line": 122, + "column": 38 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 2558, + "end": 2560, + "loc": { + "start": { + "line": 124, + "column": 2 + }, + "end": { + "line": 124, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2561, + "end": 2562, + "loc": { + "start": { + "line": 124, + "column": 5 + }, + "end": { + "line": 124, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "bi", + "start": 2562, + "end": 2564, + "loc": { + "start": { + "line": 124, + "column": 6 + }, + "end": { + "line": 124, + "column": 8 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": ">=", + "start": 2565, + "end": 2567, + "loc": { + "start": { + "line": 124, + "column": 9 + }, + "end": { + "line": 124, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "bj", + "start": 2568, + "end": 2570, + "loc": { + "start": { + "line": 124, + "column": 12 + }, + "end": { + "line": 124, + "column": 14 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2570, + "end": 2571, + "loc": { + "start": { + "line": 124, + "column": 14 + }, + "end": { + "line": 124, + "column": 15 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2572, + "end": 2578, + "loc": { + "start": { + "line": 124, + "column": 16 + }, + "end": { + "line": 124, + "column": 22 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2579, + "end": 2583, + "loc": { + "start": { + "line": 124, + "column": 23 + }, + "end": { + "line": 124, + "column": 27 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2583, + "end": 2584, + "loc": { + "start": { + "line": 124, + "column": 27 + }, + "end": { + "line": 124, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "clone", + "start": 2584, + "end": 2589, + "loc": { + "start": { + "line": 124, + "column": 28 + }, + "end": { + "line": 124, + "column": 33 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2589, + "end": 2590, + "loc": { + "start": { + "line": 124, + "column": 33 + }, + "end": { + "line": 124, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2590, + "end": 2591, + "loc": { + "start": { + "line": 124, + "column": 34 + }, + "end": { + "line": 124, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2591, + "end": 2592, + "loc": { + "start": { + "line": 124, + "column": 35 + }, + "end": { + "line": 124, + "column": 36 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 2596, + "end": 2598, + "loc": { + "start": { + "line": 126, + "column": 2 + }, + "end": { + "line": 126, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2599, + "end": 2600, + "loc": { + "start": { + "line": 126, + "column": 5 + }, + "end": { + "line": 126, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cmp", + "start": 2600, + "end": 2603, + "loc": { + "start": { + "line": 126, + "column": 6 + }, + "end": { + "line": 126, + "column": 9 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2603, + "end": 2604, + "loc": { + "start": { + "line": 126, + "column": 9 + }, + "end": { + "line": 126, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 2604, + "end": 2605, + "loc": { + "start": { + "line": 126, + "column": 10 + }, + "end": { + "line": 126, + "column": 11 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2605, + "end": 2606, + "loc": { + "start": { + "line": 126, + "column": 11 + }, + "end": { + "line": 126, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ai", + "start": 2607, + "end": 2609, + "loc": { + "start": { + "line": 126, + "column": 13 + }, + "end": { + "line": 126, + "column": 15 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2609, + "end": 2610, + "loc": { + "start": { + "line": 126, + "column": 15 + }, + "end": { + "line": 126, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "aj", + "start": 2611, + "end": 2613, + "loc": { + "start": { + "line": 126, + "column": 17 + }, + "end": { + "line": 126, + "column": 19 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2613, + "end": 2614, + "loc": { + "start": { + "line": 126, + "column": 19 + }, + "end": { + "line": 126, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 2615, + "end": 2616, + "loc": { + "start": { + "line": 126, + "column": 21 + }, + "end": { + "line": 126, + "column": 22 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2616, + "end": 2617, + "loc": { + "start": { + "line": 126, + "column": 22 + }, + "end": { + "line": 126, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "bi", + "start": 2618, + "end": 2620, + "loc": { + "start": { + "line": 126, + "column": 24 + }, + "end": { + "line": 126, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2620, + "end": 2621, + "loc": { + "start": { + "line": 126, + "column": 26 + }, + "end": { + "line": 126, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "bj", + "start": 2622, + "end": 2624, + "loc": { + "start": { + "line": 126, + "column": 28 + }, + "end": { + "line": 126, + "column": 30 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2624, + "end": 2625, + "loc": { + "start": { + "line": 126, + "column": 30 + }, + "end": { + "line": 126, + "column": 31 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": "<", + "start": 2626, + "end": 2627, + "loc": { + "start": { + "line": 126, + "column": 32 + }, + "end": { + "line": 126, + "column": 33 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 2628, + "end": 2629, + "loc": { + "start": { + "line": 126, + "column": 34 + }, + "end": { + "line": 126, + "column": 35 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2629, + "end": 2630, + "loc": { + "start": { + "line": 126, + "column": 35 + }, + "end": { + "line": 126, + "column": 36 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2631, + "end": 2632, + "loc": { + "start": { + "line": 126, + "column": 37 + }, + "end": { + "line": 126, + "column": 38 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 2636, + "end": 2641, + "loc": { + "start": { + "line": 127, + "column": 3 + }, + "end": { + "line": 127, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "c", + "start": 2642, + "end": 2643, + "loc": { + "start": { + "line": 127, + "column": 9 + }, + "end": { + "line": 127, + "column": 10 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 2644, + "end": 2645, + "loc": { + "start": { + "line": 127, + "column": 11 + }, + "end": { + "line": 127, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_zeros", + "start": 2646, + "end": 2652, + "loc": { + "start": { + "line": 127, + "column": 13 + }, + "end": { + "line": 127, + "column": 19 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2652, + "end": 2653, + "loc": { + "start": { + "line": 127, + "column": 19 + }, + "end": { + "line": 127, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "bj", + "start": 2653, + "end": 2655, + "loc": { + "start": { + "line": 127, + "column": 20 + }, + "end": { + "line": 127, + "column": 22 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 2656, + "end": 2657, + "loc": { + "start": { + "line": 127, + "column": 23 + }, + "end": { + "line": 127, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "bi", + "start": 2658, + "end": 2660, + "loc": { + "start": { + "line": 127, + "column": 25 + }, + "end": { + "line": 127, + "column": 27 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2660, + "end": 2661, + "loc": { + "start": { + "line": 127, + "column": 27 + }, + "end": { + "line": 127, + "column": 28 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2661, + "end": 2662, + "loc": { + "start": { + "line": 127, + "column": 28 + }, + "end": { + "line": 127, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_sub", + "start": 2667, + "end": 2671, + "loc": { + "start": { + "line": 129, + "column": 3 + }, + "end": { + "line": 129, + "column": 7 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2671, + "end": 2672, + "loc": { + "start": { + "line": 129, + "column": 7 + }, + "end": { + "line": 129, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 2672, + "end": 2673, + "loc": { + "start": { + "line": 129, + "column": 8 + }, + "end": { + "line": 129, + "column": 9 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2673, + "end": 2674, + "loc": { + "start": { + "line": 129, + "column": 9 + }, + "end": { + "line": 129, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 2675, + "end": 2676, + "loc": { + "start": { + "line": 129, + "column": 11 + }, + "end": { + "line": 129, + "column": 12 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2676, + "end": 2677, + "loc": { + "start": { + "line": 129, + "column": 12 + }, + "end": { + "line": 129, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "bi", + "start": 2678, + "end": 2680, + "loc": { + "start": { + "line": 129, + "column": 14 + }, + "end": { + "line": 129, + "column": 16 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2680, + "end": 2681, + "loc": { + "start": { + "line": 129, + "column": 16 + }, + "end": { + "line": 129, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "bj", + "start": 2682, + "end": 2684, + "loc": { + "start": { + "line": 129, + "column": 18 + }, + "end": { + "line": 129, + "column": 20 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2684, + "end": 2685, + "loc": { + "start": { + "line": 129, + "column": 20 + }, + "end": { + "line": 129, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 2686, + "end": 2687, + "loc": { + "start": { + "line": 129, + "column": 22 + }, + "end": { + "line": 129, + "column": 23 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2687, + "end": 2688, + "loc": { + "start": { + "line": 129, + "column": 23 + }, + "end": { + "line": 129, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ai", + "start": 2689, + "end": 2691, + "loc": { + "start": { + "line": 129, + "column": 25 + }, + "end": { + "line": 129, + "column": 27 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2691, + "end": 2692, + "loc": { + "start": { + "line": 129, + "column": 27 + }, + "end": { + "line": 129, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "aj", + "start": 2693, + "end": 2695, + "loc": { + "start": { + "line": 129, + "column": 29 + }, + "end": { + "line": 129, + "column": 31 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2695, + "end": 2696, + "loc": { + "start": { + "line": 129, + "column": 31 + }, + "end": { + "line": 129, + "column": 32 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "c", + "start": 2697, + "end": 2698, + "loc": { + "start": { + "line": 129, + "column": 33 + }, + "end": { + "line": 129, + "column": 34 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2698, + "end": 2699, + "loc": { + "start": { + "line": 129, + "column": 34 + }, + "end": { + "line": 129, + "column": 35 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 2700, + "end": 2701, + "loc": { + "start": { + "line": 129, + "column": 36 + }, + "end": { + "line": 129, + "column": 37 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2701, + "end": 2702, + "loc": { + "start": { + "line": 129, + "column": 37 + }, + "end": { + "line": 129, + "column": 38 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "c", + "start": 2703, + "end": 2704, + "loc": { + "start": { + "line": 129, + "column": 39 + }, + "end": { + "line": 129, + "column": 40 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2704, + "end": 2705, + "loc": { + "start": { + "line": 129, + "column": 40 + }, + "end": { + "line": 129, + "column": 41 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 2705, + "end": 2711, + "loc": { + "start": { + "line": 129, + "column": 41 + }, + "end": { + "line": 129, + "column": 47 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2711, + "end": 2712, + "loc": { + "start": { + "line": 129, + "column": 47 + }, + "end": { + "line": 129, + "column": 48 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2712, + "end": 2713, + "loc": { + "start": { + "line": 129, + "column": 48 + }, + "end": { + "line": 129, + "column": 49 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2718, + "end": 2724, + "loc": { + "start": { + "line": 131, + "column": 3 + }, + "end": { + "line": 131, + "column": 9 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 2725, + "end": 2728, + "loc": { + "start": { + "line": 131, + "column": 10 + }, + "end": { + "line": 131, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 2729, + "end": 2736, + "loc": { + "start": { + "line": 131, + "column": 14 + }, + "end": { + "line": 131, + "column": 21 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2736, + "end": 2737, + "loc": { + "start": { + "line": 131, + "column": 21 + }, + "end": { + "line": 131, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 2737, + "end": 2738, + "loc": { + "start": { + "line": 131, + "column": 22 + }, + "end": { + "line": 131, + "column": 23 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2738, + "end": 2739, + "loc": { + "start": { + "line": 131, + "column": 23 + }, + "end": { + "line": 131, + "column": 24 + } + } + }, + { + "type": { + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "~", + "start": 2740, + "end": 2741, + "loc": { + "start": { + "line": 131, + "column": 25 + }, + "end": { + "line": 131, + "column": 26 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2741, + "end": 2745, + "loc": { + "start": { + "line": 131, + "column": 26 + }, + "end": { + "line": 131, + "column": 30 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2745, + "end": 2746, + "loc": { + "start": { + "line": 131, + "column": 30 + }, + "end": { + "line": 131, + "column": 31 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 2746, + "end": 2758, + "loc": { + "start": { + "line": 131, + "column": 31 + }, + "end": { + "line": 131, + "column": 43 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2758, + "end": 2759, + "loc": { + "start": { + "line": 131, + "column": 43 + }, + "end": { + "line": 131, + "column": 44 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "c", + "start": 2760, + "end": 2761, + "loc": { + "start": { + "line": 131, + "column": 45 + }, + "end": { + "line": 131, + "column": 46 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2761, + "end": 2762, + "loc": { + "start": { + "line": 131, + "column": 46 + }, + "end": { + "line": 131, + "column": 47 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2762, + "end": 2763, + "loc": { + "start": { + "line": 131, + "column": 47 + }, + "end": { + "line": 131, + "column": 48 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2766, + "end": 2767, + "loc": { + "start": { + "line": 132, + "column": 2 + }, + "end": { + "line": 132, + "column": 3 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 2771, + "end": 2776, + "loc": { + "start": { + "line": 134, + "column": 2 + }, + "end": { + "line": 134, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "c", + "start": 2777, + "end": 2778, + "loc": { + "start": { + "line": 134, + "column": 8 + }, + "end": { + "line": 134, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 2779, + "end": 2780, + "loc": { + "start": { + "line": 134, + "column": 10 + }, + "end": { + "line": 134, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_zeros", + "start": 2781, + "end": 2787, + "loc": { + "start": { + "line": 134, + "column": 12 + }, + "end": { + "line": 134, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2787, + "end": 2788, + "loc": { + "start": { + "line": 134, + "column": 18 + }, + "end": { + "line": 134, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "aj", + "start": 2788, + "end": 2790, + "loc": { + "start": { + "line": 134, + "column": 19 + }, + "end": { + "line": 134, + "column": 21 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 2791, + "end": 2792, + "loc": { + "start": { + "line": 134, + "column": 22 + }, + "end": { + "line": 134, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ai", + "start": 2793, + "end": 2795, + "loc": { + "start": { + "line": 134, + "column": 24 + }, + "end": { + "line": 134, + "column": 26 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2795, + "end": 2796, + "loc": { + "start": { + "line": 134, + "column": 26 + }, + "end": { + "line": 134, + "column": 27 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2796, + "end": 2797, + "loc": { + "start": { + "line": 134, + "column": 27 + }, + "end": { + "line": 134, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_sub", + "start": 2801, + "end": 2805, + "loc": { + "start": { + "line": 136, + "column": 2 + }, + "end": { + "line": 136, + "column": 6 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2805, + "end": 2806, + "loc": { + "start": { + "line": 136, + "column": 6 + }, + "end": { + "line": 136, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 2806, + "end": 2807, + "loc": { + "start": { + "line": 136, + "column": 7 + }, + "end": { + "line": 136, + "column": 8 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2807, + "end": 2808, + "loc": { + "start": { + "line": 136, + "column": 8 + }, + "end": { + "line": 136, + "column": 9 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 2809, + "end": 2810, + "loc": { + "start": { + "line": 136, + "column": 10 + }, + "end": { + "line": 136, + "column": 11 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2810, + "end": 2811, + "loc": { + "start": { + "line": 136, + "column": 11 + }, + "end": { + "line": 136, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ai", + "start": 2812, + "end": 2814, + "loc": { + "start": { + "line": 136, + "column": 13 + }, + "end": { + "line": 136, + "column": 15 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2814, + "end": 2815, + "loc": { + "start": { + "line": 136, + "column": 15 + }, + "end": { + "line": 136, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "aj", + "start": 2816, + "end": 2818, + "loc": { + "start": { + "line": 136, + "column": 17 + }, + "end": { + "line": 136, + "column": 19 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2818, + "end": 2819, + "loc": { + "start": { + "line": 136, + "column": 19 + }, + "end": { + "line": 136, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 2820, + "end": 2821, + "loc": { + "start": { + "line": 136, + "column": 21 + }, + "end": { + "line": 136, + "column": 22 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2821, + "end": 2822, + "loc": { + "start": { + "line": 136, + "column": 22 + }, + "end": { + "line": 136, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "bi", + "start": 2823, + "end": 2825, + "loc": { + "start": { + "line": 136, + "column": 24 + }, + "end": { + "line": 136, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2825, + "end": 2826, + "loc": { + "start": { + "line": 136, + "column": 26 + }, + "end": { + "line": 136, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "bj", + "start": 2827, + "end": 2829, + "loc": { + "start": { + "line": 136, + "column": 28 + }, + "end": { + "line": 136, + "column": 30 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2829, + "end": 2830, + "loc": { + "start": { + "line": 136, + "column": 30 + }, + "end": { + "line": 136, + "column": 31 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "c", + "start": 2831, + "end": 2832, + "loc": { + "start": { + "line": 136, + "column": 32 + }, + "end": { + "line": 136, + "column": 33 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2832, + "end": 2833, + "loc": { + "start": { + "line": 136, + "column": 33 + }, + "end": { + "line": 136, + "column": 34 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 2834, + "end": 2835, + "loc": { + "start": { + "line": 136, + "column": 35 + }, + "end": { + "line": 136, + "column": 36 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2835, + "end": 2836, + "loc": { + "start": { + "line": 136, + "column": 36 + }, + "end": { + "line": 136, + "column": 37 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "c", + "start": 2837, + "end": 2838, + "loc": { + "start": { + "line": 136, + "column": 38 + }, + "end": { + "line": 136, + "column": 39 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2838, + "end": 2839, + "loc": { + "start": { + "line": 136, + "column": 39 + }, + "end": { + "line": 136, + "column": 40 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 2839, + "end": 2845, + "loc": { + "start": { + "line": 136, + "column": 40 + }, + "end": { + "line": 136, + "column": 46 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2845, + "end": 2846, + "loc": { + "start": { + "line": 136, + "column": 46 + }, + "end": { + "line": 136, + "column": 47 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2846, + "end": 2847, + "loc": { + "start": { + "line": 136, + "column": 47 + }, + "end": { + "line": 136, + "column": 48 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2851, + "end": 2857, + "loc": { + "start": { + "line": 138, + "column": 2 + }, + "end": { + "line": 138, + "column": 8 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 2858, + "end": 2861, + "loc": { + "start": { + "line": 138, + "column": 9 + }, + "end": { + "line": 138, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 2862, + "end": 2869, + "loc": { + "start": { + "line": 138, + "column": 13 + }, + "end": { + "line": 138, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2869, + "end": 2870, + "loc": { + "start": { + "line": 138, + "column": 20 + }, + "end": { + "line": 138, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 2870, + "end": 2871, + "loc": { + "start": { + "line": 138, + "column": 21 + }, + "end": { + "line": 138, + "column": 22 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2871, + "end": 2872, + "loc": { + "start": { + "line": 138, + "column": 22 + }, + "end": { + "line": 138, + "column": 23 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2873, + "end": 2877, + "loc": { + "start": { + "line": 138, + "column": 24 + }, + "end": { + "line": 138, + "column": 28 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2877, + "end": 2878, + "loc": { + "start": { + "line": 138, + "column": 28 + }, + "end": { + "line": 138, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 2878, + "end": 2890, + "loc": { + "start": { + "line": 138, + "column": 29 + }, + "end": { + "line": 138, + "column": 41 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2890, + "end": 2891, + "loc": { + "start": { + "line": 138, + "column": 41 + }, + "end": { + "line": 138, + "column": 42 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "c", + "start": 2892, + "end": 2893, + "loc": { + "start": { + "line": 138, + "column": 43 + }, + "end": { + "line": 138, + "column": 44 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2893, + "end": 2894, + "loc": { + "start": { + "line": 138, + "column": 44 + }, + "end": { + "line": 138, + "column": 45 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2894, + "end": 2895, + "loc": { + "start": { + "line": 138, + "column": 45 + }, + "end": { + "line": 138, + "column": 46 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2897, + "end": 2898, + "loc": { + "start": { + "line": 139, + "column": 1 + }, + "end": { + "line": 139, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "isub", + "start": 2901, + "end": 2905, + "loc": { + "start": { + "line": 141, + "column": 1 + }, + "end": { + "line": 141, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2905, + "end": 2906, + "loc": { + "start": { + "line": 141, + "column": 5 + }, + "end": { + "line": 141, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 2906, + "end": 2911, + "loc": { + "start": { + "line": 141, + "column": 6 + }, + "end": { + "line": 141, + "column": 11 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2911, + "end": 2912, + "loc": { + "start": { + "line": 141, + "column": 11 + }, + "end": { + "line": 141, + "column": 12 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2913, + "end": 2914, + "loc": { + "start": { + "line": 141, + "column": 13 + }, + "end": { + "line": 141, + "column": 14 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 2917, + "end": 2966, + "loc": { + "start": { + "line": 142, + "column": 2 + }, + "end": { + "line": 142, + "column": 51 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2969, + "end": 2975, + "loc": { + "start": { + "line": 143, + "column": 2 + }, + "end": { + "line": 143, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2976, + "end": 2980, + "loc": { + "start": { + "line": 143, + "column": 9 + }, + "end": { + "line": 143, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2980, + "end": 2981, + "loc": { + "start": { + "line": 143, + "column": 13 + }, + "end": { + "line": 143, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "sub", + "start": 2981, + "end": 2984, + "loc": { + "start": { + "line": 143, + "column": 14 + }, + "end": { + "line": 143, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2984, + "end": 2985, + "loc": { + "start": { + "line": 143, + "column": 17 + }, + "end": { + "line": 143, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 2985, + "end": 2990, + "loc": { + "start": { + "line": 143, + "column": 18 + }, + "end": { + "line": 143, + "column": 23 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2990, + "end": 2991, + "loc": { + "start": { + "line": 143, + "column": 23 + }, + "end": { + "line": 143, + "column": 24 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2991, + "end": 2992, + "loc": { + "start": { + "line": 143, + "column": 24 + }, + "end": { + "line": 143, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "move", + "start": 2992, + "end": 2996, + "loc": { + "start": { + "line": 143, + "column": 25 + }, + "end": { + "line": 143, + "column": 29 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2996, + "end": 2997, + "loc": { + "start": { + "line": 143, + "column": 29 + }, + "end": { + "line": 143, + "column": 30 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2997, + "end": 3001, + "loc": { + "start": { + "line": 143, + "column": 30 + }, + "end": { + "line": 143, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3001, + "end": 3002, + "loc": { + "start": { + "line": 143, + "column": 34 + }, + "end": { + "line": 143, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3002, + "end": 3003, + "loc": { + "start": { + "line": 143, + "column": 35 + }, + "end": { + "line": 143, + "column": 36 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3005, + "end": 3006, + "loc": { + "start": { + "line": 144, + "column": 1 + }, + "end": { + "line": 144, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "subn", + "start": 3009, + "end": 3013, + "loc": { + "start": { + "line": 146, + "column": 1 + }, + "end": { + "line": 146, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3013, + "end": 3014, + "loc": { + "start": { + "line": 146, + "column": 5 + }, + "end": { + "line": 146, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 3014, + "end": 3020, + "loc": { + "start": { + "line": 146, + "column": 6 + }, + "end": { + "line": 146, + "column": 12 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3020, + "end": 3021, + "loc": { + "start": { + "line": 146, + "column": 12 + }, + "end": { + "line": 146, + "column": 13 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3022, + "end": 3023, + "loc": { + "start": { + "line": 146, + "column": 14 + }, + "end": { + "line": 146, + "column": 15 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 3026, + "end": 3032, + "loc": { + "start": { + "line": 147, + "column": 2 + }, + "end": { + "line": 147, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 3033, + "end": 3037, + "loc": { + "start": { + "line": 147, + "column": 9 + }, + "end": { + "line": 147, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3037, + "end": 3038, + "loc": { + "start": { + "line": 147, + "column": 13 + }, + "end": { + "line": 147, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "sub", + "start": 3038, + "end": 3041, + "loc": { + "start": { + "line": 147, + "column": 14 + }, + "end": { + "line": 147, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3041, + "end": 3042, + "loc": { + "start": { + "line": 147, + "column": 17 + }, + "end": { + "line": 147, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_from_number", + "start": 3042, + "end": 3054, + "loc": { + "start": { + "line": 147, + "column": 18 + }, + "end": { + "line": 147, + "column": 30 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3054, + "end": 3055, + "loc": { + "start": { + "line": 147, + "column": 30 + }, + "end": { + "line": 147, + "column": 31 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 3055, + "end": 3061, + "loc": { + "start": { + "line": 147, + "column": 31 + }, + "end": { + "line": 147, + "column": 37 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3061, + "end": 3062, + "loc": { + "start": { + "line": 147, + "column": 37 + }, + "end": { + "line": 147, + "column": 38 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3062, + "end": 3063, + "loc": { + "start": { + "line": 147, + "column": 38 + }, + "end": { + "line": 147, + "column": 39 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3063, + "end": 3064, + "loc": { + "start": { + "line": 147, + "column": 39 + }, + "end": { + "line": 147, + "column": 40 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3066, + "end": 3067, + "loc": { + "start": { + "line": 148, + "column": 1 + }, + "end": { + "line": 148, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "isubn", + "start": 3070, + "end": 3075, + "loc": { + "start": { + "line": 150, + "column": 1 + }, + "end": { + "line": 150, + "column": 6 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3075, + "end": 3076, + "loc": { + "start": { + "line": 150, + "column": 6 + }, + "end": { + "line": 150, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 3076, + "end": 3082, + "loc": { + "start": { + "line": 150, + "column": 7 + }, + "end": { + "line": 150, + "column": 13 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3082, + "end": 3083, + "loc": { + "start": { + "line": 150, + "column": 13 + }, + "end": { + "line": 150, + "column": 14 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3084, + "end": 3085, + "loc": { + "start": { + "line": 150, + "column": 15 + }, + "end": { + "line": 150, + "column": 16 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 3088, + "end": 3094, + "loc": { + "start": { + "line": 151, + "column": 2 + }, + "end": { + "line": 151, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 3095, + "end": 3099, + "loc": { + "start": { + "line": 151, + "column": 9 + }, + "end": { + "line": 151, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3099, + "end": 3100, + "loc": { + "start": { + "line": 151, + "column": 13 + }, + "end": { + "line": 151, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "subn", + "start": 3100, + "end": 3104, + "loc": { + "start": { + "line": 151, + "column": 14 + }, + "end": { + "line": 151, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3104, + "end": 3105, + "loc": { + "start": { + "line": 151, + "column": 18 + }, + "end": { + "line": 151, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 3105, + "end": 3111, + "loc": { + "start": { + "line": 151, + "column": 19 + }, + "end": { + "line": 151, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3111, + "end": 3112, + "loc": { + "start": { + "line": 151, + "column": 25 + }, + "end": { + "line": 151, + "column": 26 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3112, + "end": 3113, + "loc": { + "start": { + "line": 151, + "column": 26 + }, + "end": { + "line": 151, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "move", + "start": 3113, + "end": 3117, + "loc": { + "start": { + "line": 151, + "column": 27 + }, + "end": { + "line": 151, + "column": 31 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3117, + "end": 3118, + "loc": { + "start": { + "line": 151, + "column": 31 + }, + "end": { + "line": 151, + "column": 32 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 3118, + "end": 3122, + "loc": { + "start": { + "line": 151, + "column": 32 + }, + "end": { + "line": 151, + "column": 36 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3122, + "end": 3123, + "loc": { + "start": { + "line": 151, + "column": 36 + }, + "end": { + "line": 151, + "column": 37 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3123, + "end": 3124, + "loc": { + "start": { + "line": 151, + "column": 37 + }, + "end": { + "line": 151, + "column": 38 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3126, + "end": 3127, + "loc": { + "start": { + "line": 152, + "column": 1 + }, + "end": { + "line": 152, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "mul", + "start": 3130, + "end": 3133, + "loc": { + "start": { + "line": 154, + "column": 1 + }, + "end": { + "line": 154, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3133, + "end": 3134, + "loc": { + "start": { + "line": 154, + "column": 4 + }, + "end": { + "line": 154, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 3134, + "end": 3139, + "loc": { + "start": { + "line": 154, + "column": 5 + }, + "end": { + "line": 154, + "column": 10 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3139, + "end": 3140, + "loc": { + "start": { + "line": 154, + "column": 10 + }, + "end": { + "line": 154, + "column": 11 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3141, + "end": 3142, + "loc": { + "start": { + "line": 154, + "column": 12 + }, + "end": { + "line": 154, + "column": 13 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 3145, + "end": 3150, + "loc": { + "start": { + "line": 155, + "column": 2 + }, + "end": { + "line": 155, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "result_is_negative", + "start": 3151, + "end": 3169, + "loc": { + "start": { + "line": 155, + "column": 8 + }, + "end": { + "line": 155, + "column": 26 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 3170, + "end": 3171, + "loc": { + "start": { + "line": 155, + "column": 27 + }, + "end": { + "line": 155, + "column": 28 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 3172, + "end": 3176, + "loc": { + "start": { + "line": 155, + "column": 29 + }, + "end": { + "line": 155, + "column": 33 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3176, + "end": 3177, + "loc": { + "start": { + "line": 155, + "column": 33 + }, + "end": { + "line": 155, + "column": 34 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 3177, + "end": 3189, + "loc": { + "start": { + "line": 155, + "column": 34 + }, + "end": { + "line": 155, + "column": 46 + } + } + }, + { + "type": { + "label": "^", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 4, + "updateContext": null + }, + "value": "^", + "start": 3190, + "end": 3191, + "loc": { + "start": { + "line": 155, + "column": 47 + }, + "end": { + "line": 155, + "column": 48 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 3192, + "end": 3197, + "loc": { + "start": { + "line": 155, + "column": 49 + }, + "end": { + "line": 155, + "column": 54 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3197, + "end": 3198, + "loc": { + "start": { + "line": 155, + "column": 54 + }, + "end": { + "line": 155, + "column": 55 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 3198, + "end": 3210, + "loc": { + "start": { + "line": 155, + "column": 55 + }, + "end": { + "line": 155, + "column": 67 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3210, + "end": 3211, + "loc": { + "start": { + "line": 155, + "column": 67 + }, + "end": { + "line": 155, + "column": 68 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 3214, + "end": 3219, + "loc": { + "start": { + "line": 156, + "column": 2 + }, + "end": { + "line": 156, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 3220, + "end": 3221, + "loc": { + "start": { + "line": 156, + "column": 8 + }, + "end": { + "line": 156, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 3222, + "end": 3223, + "loc": { + "start": { + "line": 156, + "column": 10 + }, + "end": { + "line": 156, + "column": 11 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 3224, + "end": 3228, + "loc": { + "start": { + "line": 156, + "column": 12 + }, + "end": { + "line": 156, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3228, + "end": 3229, + "loc": { + "start": { + "line": 156, + "column": 16 + }, + "end": { + "line": 156, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 3229, + "end": 3234, + "loc": { + "start": { + "line": 156, + "column": 17 + }, + "end": { + "line": 156, + "column": 22 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3234, + "end": 3235, + "loc": { + "start": { + "line": 156, + "column": 22 + }, + "end": { + "line": 156, + "column": 23 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 3239, + "end": 3244, + "loc": { + "start": { + "line": 158, + "column": 2 + }, + "end": { + "line": 158, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 3245, + "end": 3246, + "loc": { + "start": { + "line": 158, + "column": 8 + }, + "end": { + "line": 158, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 3247, + "end": 3248, + "loc": { + "start": { + "line": 158, + "column": 10 + }, + "end": { + "line": 158, + "column": 11 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 3249, + "end": 3253, + "loc": { + "start": { + "line": 158, + "column": 12 + }, + "end": { + "line": 158, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3253, + "end": 3254, + "loc": { + "start": { + "line": 158, + "column": 16 + }, + "end": { + "line": 158, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 3254, + "end": 3260, + "loc": { + "start": { + "line": 158, + "column": 17 + }, + "end": { + "line": 158, + "column": 23 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3260, + "end": 3261, + "loc": { + "start": { + "line": 158, + "column": 23 + }, + "end": { + "line": 158, + "column": 24 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 3265, + "end": 3270, + "loc": { + "start": { + "line": 160, + "column": 2 + }, + "end": { + "line": 160, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 3271, + "end": 3272, + "loc": { + "start": { + "line": 160, + "column": 8 + }, + "end": { + "line": 160, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 3273, + "end": 3274, + "loc": { + "start": { + "line": 160, + "column": 10 + }, + "end": { + "line": 160, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 3275, + "end": 3280, + "loc": { + "start": { + "line": 160, + "column": 12 + }, + "end": { + "line": 160, + "column": 17 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3280, + "end": 3281, + "loc": { + "start": { + "line": 160, + "column": 17 + }, + "end": { + "line": 160, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs_in_base", + "start": 3281, + "end": 3295, + "loc": { + "start": { + "line": 160, + "column": 18 + }, + "end": { + "line": 160, + "column": 32 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3295, + "end": 3296, + "loc": { + "start": { + "line": 160, + "column": 32 + }, + "end": { + "line": 160, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 3296, + "end": 3297, + "loc": { + "start": { + "line": 160, + "column": 33 + }, + "end": { + "line": 160, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3297, + "end": 3298, + "loc": { + "start": { + "line": 160, + "column": 34 + }, + "end": { + "line": 160, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3298, + "end": 3299, + "loc": { + "start": { + "line": 160, + "column": 35 + }, + "end": { + "line": 160, + "column": 36 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 3303, + "end": 3308, + "loc": { + "start": { + "line": 162, + "column": 2 + }, + "end": { + "line": 162, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "c", + "start": 3309, + "end": 3310, + "loc": { + "start": { + "line": 162, + "column": 8 + }, + "end": { + "line": 162, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 3311, + "end": 3312, + "loc": { + "start": { + "line": 162, + "column": 10 + }, + "end": { + "line": 162, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_zeros", + "start": 3313, + "end": 3319, + "loc": { + "start": { + "line": 162, + "column": 12 + }, + "end": { + "line": 162, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3319, + "end": 3320, + "loc": { + "start": { + "line": 162, + "column": 18 + }, + "end": { + "line": 162, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 3320, + "end": 3321, + "loc": { + "start": { + "line": 162, + "column": 19 + }, + "end": { + "line": 162, + "column": 20 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3321, + "end": 3322, + "loc": { + "start": { + "line": 162, + "column": 20 + }, + "end": { + "line": 162, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 3322, + "end": 3328, + "loc": { + "start": { + "line": 162, + "column": 21 + }, + "end": { + "line": 162, + "column": 27 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "+", + "start": 3329, + "end": 3330, + "loc": { + "start": { + "line": 162, + "column": 28 + }, + "end": { + "line": 162, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 3331, + "end": 3332, + "loc": { + "start": { + "line": 162, + "column": 30 + }, + "end": { + "line": 162, + "column": 31 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3332, + "end": 3333, + "loc": { + "start": { + "line": 162, + "column": 31 + }, + "end": { + "line": 162, + "column": 32 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 3333, + "end": 3339, + "loc": { + "start": { + "line": 162, + "column": 32 + }, + "end": { + "line": 162, + "column": 38 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3339, + "end": 3340, + "loc": { + "start": { + "line": 162, + "column": 38 + }, + "end": { + "line": 162, + "column": 39 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3340, + "end": 3341, + "loc": { + "start": { + "line": 162, + "column": 39 + }, + "end": { + "line": 162, + "column": 40 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "mul", + "start": 3345, + "end": 3348, + "loc": { + "start": { + "line": 164, + "column": 2 + }, + "end": { + "line": 164, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3348, + "end": 3349, + "loc": { + "start": { + "line": 164, + "column": 5 + }, + "end": { + "line": 164, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 3349, + "end": 3350, + "loc": { + "start": { + "line": 164, + "column": 6 + }, + "end": { + "line": 164, + "column": 7 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3350, + "end": 3351, + "loc": { + "start": { + "line": 164, + "column": 7 + }, + "end": { + "line": 164, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 3352, + "end": 3353, + "loc": { + "start": { + "line": 164, + "column": 9 + }, + "end": { + "line": 164, + "column": 10 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3353, + "end": 3354, + "loc": { + "start": { + "line": 164, + "column": 10 + }, + "end": { + "line": 164, + "column": 11 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 3355, + "end": 3356, + "loc": { + "start": { + "line": 164, + "column": 12 + }, + "end": { + "line": 164, + "column": 13 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3356, + "end": 3357, + "loc": { + "start": { + "line": 164, + "column": 13 + }, + "end": { + "line": 164, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 3358, + "end": 3359, + "loc": { + "start": { + "line": 164, + "column": 15 + }, + "end": { + "line": 164, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3359, + "end": 3360, + "loc": { + "start": { + "line": 164, + "column": 16 + }, + "end": { + "line": 164, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 3360, + "end": 3366, + "loc": { + "start": { + "line": 164, + "column": 17 + }, + "end": { + "line": 164, + "column": 23 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3366, + "end": 3367, + "loc": { + "start": { + "line": 164, + "column": 23 + }, + "end": { + "line": 164, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 3368, + "end": 3369, + "loc": { + "start": { + "line": 164, + "column": 25 + }, + "end": { + "line": 164, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3369, + "end": 3370, + "loc": { + "start": { + "line": 164, + "column": 26 + }, + "end": { + "line": 164, + "column": 27 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 3371, + "end": 3372, + "loc": { + "start": { + "line": 164, + "column": 28 + }, + "end": { + "line": 164, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3372, + "end": 3373, + "loc": { + "start": { + "line": 164, + "column": 29 + }, + "end": { + "line": 164, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 3374, + "end": 3375, + "loc": { + "start": { + "line": 164, + "column": 31 + }, + "end": { + "line": 164, + "column": 32 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3375, + "end": 3376, + "loc": { + "start": { + "line": 164, + "column": 32 + }, + "end": { + "line": 164, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 3376, + "end": 3382, + "loc": { + "start": { + "line": 164, + "column": 33 + }, + "end": { + "line": 164, + "column": 39 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3382, + "end": 3383, + "loc": { + "start": { + "line": 164, + "column": 39 + }, + "end": { + "line": 164, + "column": 40 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "c", + "start": 3384, + "end": 3385, + "loc": { + "start": { + "line": 164, + "column": 41 + }, + "end": { + "line": 164, + "column": 42 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3385, + "end": 3386, + "loc": { + "start": { + "line": 164, + "column": 42 + }, + "end": { + "line": 164, + "column": 43 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 3387, + "end": 3388, + "loc": { + "start": { + "line": 164, + "column": 44 + }, + "end": { + "line": 164, + "column": 45 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3388, + "end": 3389, + "loc": { + "start": { + "line": 164, + "column": 45 + }, + "end": { + "line": 164, + "column": 46 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "c", + "start": 3390, + "end": 3391, + "loc": { + "start": { + "line": 164, + "column": 47 + }, + "end": { + "line": 164, + "column": 48 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3391, + "end": 3392, + "loc": { + "start": { + "line": 164, + "column": 48 + }, + "end": { + "line": 164, + "column": 49 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 3392, + "end": 3398, + "loc": { + "start": { + "line": 164, + "column": 49 + }, + "end": { + "line": 164, + "column": 55 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3398, + "end": 3399, + "loc": { + "start": { + "line": 164, + "column": 55 + }, + "end": { + "line": 164, + "column": 56 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3399, + "end": 3400, + "loc": { + "start": { + "line": 164, + "column": 56 + }, + "end": { + "line": 164, + "column": 57 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 3404, + "end": 3410, + "loc": { + "start": { + "line": 166, + "column": 2 + }, + "end": { + "line": 166, + "column": 8 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 3411, + "end": 3414, + "loc": { + "start": { + "line": 166, + "column": 9 + }, + "end": { + "line": 166, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 3415, + "end": 3422, + "loc": { + "start": { + "line": 166, + "column": 13 + }, + "end": { + "line": 166, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3422, + "end": 3423, + "loc": { + "start": { + "line": 166, + "column": 20 + }, + "end": { + "line": 166, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 3423, + "end": 3424, + "loc": { + "start": { + "line": 166, + "column": 21 + }, + "end": { + "line": 166, + "column": 22 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3424, + "end": 3425, + "loc": { + "start": { + "line": 166, + "column": 22 + }, + "end": { + "line": 166, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "result_is_negative", + "start": 3426, + "end": 3444, + "loc": { + "start": { + "line": 166, + "column": 24 + }, + "end": { + "line": 166, + "column": 42 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3444, + "end": 3445, + "loc": { + "start": { + "line": 166, + "column": 42 + }, + "end": { + "line": 166, + "column": 43 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "c", + "start": 3446, + "end": 3447, + "loc": { + "start": { + "line": 166, + "column": 44 + }, + "end": { + "line": 166, + "column": 45 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3447, + "end": 3448, + "loc": { + "start": { + "line": 166, + "column": 45 + }, + "end": { + "line": 166, + "column": 46 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3448, + "end": 3449, + "loc": { + "start": { + "line": 166, + "column": 46 + }, + "end": { + "line": 166, + "column": 47 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3451, + "end": 3452, + "loc": { + "start": { + "line": 167, + "column": 1 + }, + "end": { + "line": 167, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "imul", + "start": 3455, + "end": 3459, + "loc": { + "start": { + "line": 169, + "column": 1 + }, + "end": { + "line": 169, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3459, + "end": 3460, + "loc": { + "start": { + "line": 169, + "column": 5 + }, + "end": { + "line": 169, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 3460, + "end": 3465, + "loc": { + "start": { + "line": 169, + "column": 6 + }, + "end": { + "line": 169, + "column": 11 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3465, + "end": 3466, + "loc": { + "start": { + "line": 169, + "column": 11 + }, + "end": { + "line": 169, + "column": 12 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3467, + "end": 3468, + "loc": { + "start": { + "line": 169, + "column": 13 + }, + "end": { + "line": 169, + "column": 14 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 3471, + "end": 3520, + "loc": { + "start": { + "line": 170, + "column": 2 + }, + "end": { + "line": 170, + "column": 51 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 3523, + "end": 3529, + "loc": { + "start": { + "line": 171, + "column": 2 + }, + "end": { + "line": 171, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 3530, + "end": 3534, + "loc": { + "start": { + "line": 171, + "column": 9 + }, + "end": { + "line": 171, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3534, + "end": 3535, + "loc": { + "start": { + "line": 171, + "column": 13 + }, + "end": { + "line": 171, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "mul", + "start": 3535, + "end": 3538, + "loc": { + "start": { + "line": 171, + "column": 14 + }, + "end": { + "line": 171, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3538, + "end": 3539, + "loc": { + "start": { + "line": 171, + "column": 17 + }, + "end": { + "line": 171, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 3539, + "end": 3544, + "loc": { + "start": { + "line": 171, + "column": 18 + }, + "end": { + "line": 171, + "column": 23 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3544, + "end": 3545, + "loc": { + "start": { + "line": 171, + "column": 23 + }, + "end": { + "line": 171, + "column": 24 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3545, + "end": 3546, + "loc": { + "start": { + "line": 171, + "column": 24 + }, + "end": { + "line": 171, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "move", + "start": 3546, + "end": 3550, + "loc": { + "start": { + "line": 171, + "column": 25 + }, + "end": { + "line": 171, + "column": 29 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3550, + "end": 3551, + "loc": { + "start": { + "line": 171, + "column": 29 + }, + "end": { + "line": 171, + "column": 30 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 3551, + "end": 3555, + "loc": { + "start": { + "line": 171, + "column": 30 + }, + "end": { + "line": 171, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3555, + "end": 3556, + "loc": { + "start": { + "line": 171, + "column": 34 + }, + "end": { + "line": 171, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3556, + "end": 3557, + "loc": { + "start": { + "line": 171, + "column": 35 + }, + "end": { + "line": 171, + "column": 36 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3559, + "end": 3560, + "loc": { + "start": { + "line": 172, + "column": 1 + }, + "end": { + "line": 172, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "muln", + "start": 3563, + "end": 3567, + "loc": { + "start": { + "line": 174, + "column": 1 + }, + "end": { + "line": 174, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3567, + "end": 3568, + "loc": { + "start": { + "line": 174, + "column": 5 + }, + "end": { + "line": 174, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 3568, + "end": 3574, + "loc": { + "start": { + "line": 174, + "column": 6 + }, + "end": { + "line": 174, + "column": 12 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3574, + "end": 3575, + "loc": { + "start": { + "line": 174, + "column": 12 + }, + "end": { + "line": 174, + "column": 13 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3576, + "end": 3577, + "loc": { + "start": { + "line": 174, + "column": 14 + }, + "end": { + "line": 174, + "column": 15 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 3580, + "end": 3586, + "loc": { + "start": { + "line": 175, + "column": 2 + }, + "end": { + "line": 175, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 3587, + "end": 3591, + "loc": { + "start": { + "line": 175, + "column": 9 + }, + "end": { + "line": 175, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3591, + "end": 3592, + "loc": { + "start": { + "line": 175, + "column": 13 + }, + "end": { + "line": 175, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "mul", + "start": 3592, + "end": 3595, + "loc": { + "start": { + "line": 175, + "column": 14 + }, + "end": { + "line": 175, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3595, + "end": 3596, + "loc": { + "start": { + "line": 175, + "column": 17 + }, + "end": { + "line": 175, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_from_number", + "start": 3596, + "end": 3608, + "loc": { + "start": { + "line": 175, + "column": 18 + }, + "end": { + "line": 175, + "column": 30 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3608, + "end": 3609, + "loc": { + "start": { + "line": 175, + "column": 30 + }, + "end": { + "line": 175, + "column": 31 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 3609, + "end": 3615, + "loc": { + "start": { + "line": 175, + "column": 31 + }, + "end": { + "line": 175, + "column": 37 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3615, + "end": 3616, + "loc": { + "start": { + "line": 175, + "column": 37 + }, + "end": { + "line": 175, + "column": 38 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3616, + "end": 3617, + "loc": { + "start": { + "line": 175, + "column": 38 + }, + "end": { + "line": 175, + "column": 39 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3617, + "end": 3618, + "loc": { + "start": { + "line": 175, + "column": 39 + }, + "end": { + "line": 175, + "column": 40 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3620, + "end": 3621, + "loc": { + "start": { + "line": 176, + "column": 1 + }, + "end": { + "line": 176, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "imuln", + "start": 3624, + "end": 3629, + "loc": { + "start": { + "line": 178, + "column": 1 + }, + "end": { + "line": 178, + "column": 6 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3629, + "end": 3630, + "loc": { + "start": { + "line": 178, + "column": 6 + }, + "end": { + "line": 178, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 3630, + "end": 3636, + "loc": { + "start": { + "line": 178, + "column": 7 + }, + "end": { + "line": 178, + "column": 13 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3636, + "end": 3637, + "loc": { + "start": { + "line": 178, + "column": 13 + }, + "end": { + "line": 178, + "column": 14 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3638, + "end": 3639, + "loc": { + "start": { + "line": 178, + "column": 15 + }, + "end": { + "line": 178, + "column": 16 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 3642, + "end": 3648, + "loc": { + "start": { + "line": 179, + "column": 2 + }, + "end": { + "line": 179, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 3649, + "end": 3653, + "loc": { + "start": { + "line": 179, + "column": 9 + }, + "end": { + "line": 179, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3653, + "end": 3654, + "loc": { + "start": { + "line": 179, + "column": 13 + }, + "end": { + "line": 179, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "muln", + "start": 3654, + "end": 3658, + "loc": { + "start": { + "line": 179, + "column": 14 + }, + "end": { + "line": 179, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3658, + "end": 3659, + "loc": { + "start": { + "line": 179, + "column": 18 + }, + "end": { + "line": 179, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 3659, + "end": 3665, + "loc": { + "start": { + "line": 179, + "column": 19 + }, + "end": { + "line": 179, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3665, + "end": 3666, + "loc": { + "start": { + "line": 179, + "column": 25 + }, + "end": { + "line": 179, + "column": 26 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3666, + "end": 3667, + "loc": { + "start": { + "line": 179, + "column": 26 + }, + "end": { + "line": 179, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "move", + "start": 3667, + "end": 3671, + "loc": { + "start": { + "line": 179, + "column": 27 + }, + "end": { + "line": 179, + "column": 31 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3671, + "end": 3672, + "loc": { + "start": { + "line": 179, + "column": 31 + }, + "end": { + "line": 179, + "column": 32 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 3672, + "end": 3676, + "loc": { + "start": { + "line": 179, + "column": 32 + }, + "end": { + "line": 179, + "column": 36 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3676, + "end": 3677, + "loc": { + "start": { + "line": 179, + "column": 36 + }, + "end": { + "line": 179, + "column": 37 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3677, + "end": 3678, + "loc": { + "start": { + "line": 179, + "column": 37 + }, + "end": { + "line": 179, + "column": 38 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3680, + "end": 3681, + "loc": { + "start": { + "line": 180, + "column": 1 + }, + "end": { + "line": 180, + "column": 2 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n\t * Computes this raised to the xth power.\n\t * x is a double smaller or equal to 2^53.\n\t *\n\t * @param {Number} x The power to raise this to.\n\t * @return {Integer} this ^ x\n\t ", + "start": 3684, + "end": 3929, + "loc": { + "start": { + "line": 182, + "column": 1 + }, + "end": { + "line": 188, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "pown", + "start": 3931, + "end": 3935, + "loc": { + "start": { + "line": 189, + "column": 1 + }, + "end": { + "line": 189, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3935, + "end": 3936, + "loc": { + "start": { + "line": 189, + "column": 5 + }, + "end": { + "line": 189, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "x", + "start": 3936, + "end": 3937, + "loc": { + "start": { + "line": 189, + "column": 6 + }, + "end": { + "line": 189, + "column": 7 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3937, + "end": 3938, + "loc": { + "start": { + "line": 189, + "column": 7 + }, + "end": { + "line": 189, + "column": 8 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3939, + "end": 3940, + "loc": { + "start": { + "line": 189, + "column": 9 + }, + "end": { + "line": 189, + "column": 10 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 3943, + "end": 3948, + "loc": { + "start": { + "line": 190, + "column": 2 + }, + "end": { + "line": 190, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 3949, + "end": 3960, + "loc": { + "start": { + "line": 190, + "column": 8 + }, + "end": { + "line": 190, + "column": 19 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 3961, + "end": 3962, + "loc": { + "start": { + "line": 190, + "column": 20 + }, + "end": { + "line": 190, + "column": 21 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 3963, + "end": 3967, + "loc": { + "start": { + "line": 190, + "column": 22 + }, + "end": { + "line": 190, + "column": 26 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3967, + "end": 3968, + "loc": { + "start": { + "line": 190, + "column": 26 + }, + "end": { + "line": 190, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 3968, + "end": 3980, + "loc": { + "start": { + "line": 190, + "column": 27 + }, + "end": { + "line": 190, + "column": 39 + } + } + }, + { + "type": { + "label": "&", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 5, + "updateContext": null + }, + "value": "&", + "start": 3981, + "end": 3982, + "loc": { + "start": { + "line": 190, + "column": 40 + }, + "end": { + "line": 190, + "column": 41 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "x", + "start": 3983, + "end": 3984, + "loc": { + "start": { + "line": 190, + "column": 42 + }, + "end": { + "line": 190, + "column": 43 + } + } + }, + { + "type": { + "label": "&", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 5, + "updateContext": null + }, + "value": "&", + "start": 3985, + "end": 3986, + "loc": { + "start": { + "line": 190, + "column": 44 + }, + "end": { + "line": 190, + "column": 45 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 3987, + "end": 3988, + "loc": { + "start": { + "line": 190, + "column": 46 + }, + "end": { + "line": 190, + "column": 47 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3989, + "end": 3990, + "loc": { + "start": { + "line": 190, + "column": 48 + }, + "end": { + "line": 190, + "column": 49 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 3991, + "end": 3992, + "loc": { + "start": { + "line": 190, + "column": 50 + }, + "end": { + "line": 190, + "column": 51 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 3992, + "end": 3993, + "loc": { + "start": { + "line": 190, + "column": 51 + }, + "end": { + "line": 190, + "column": 52 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3994, + "end": 3995, + "loc": { + "start": { + "line": 190, + "column": 53 + }, + "end": { + "line": 190, + "column": 54 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 3996, + "end": 3997, + "loc": { + "start": { + "line": 190, + "column": 55 + }, + "end": { + "line": 190, + "column": 56 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3997, + "end": 3998, + "loc": { + "start": { + "line": 190, + "column": 56 + }, + "end": { + "line": 190, + "column": 57 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 4002, + "end": 4007, + "loc": { + "start": { + "line": 192, + "column": 2 + }, + "end": { + "line": 192, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 4008, + "end": 4009, + "loc": { + "start": { + "line": 192, + "column": 8 + }, + "end": { + "line": 192, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 4010, + "end": 4011, + "loc": { + "start": { + "line": 192, + "column": 10 + }, + "end": { + "line": 192, + "column": 11 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 4012, + "end": 4016, + "loc": { + "start": { + "line": 192, + "column": 12 + }, + "end": { + "line": 192, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4016, + "end": 4017, + "loc": { + "start": { + "line": 192, + "column": 16 + }, + "end": { + "line": 192, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 4017, + "end": 4023, + "loc": { + "start": { + "line": 192, + "column": 17 + }, + "end": { + "line": 192, + "column": 23 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4023, + "end": 4024, + "loc": { + "start": { + "line": 192, + "column": 23 + }, + "end": { + "line": 192, + "column": 24 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 4027, + "end": 4032, + "loc": { + "start": { + "line": 193, + "column": 2 + }, + "end": { + "line": 193, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "c", + "start": 4033, + "end": 4034, + "loc": { + "start": { + "line": 193, + "column": 8 + }, + "end": { + "line": 193, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 4035, + "end": 4036, + "loc": { + "start": { + "line": 193, + "column": 10 + }, + "end": { + "line": 193, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_zeros", + "start": 4037, + "end": 4043, + "loc": { + "start": { + "line": 193, + "column": 12 + }, + "end": { + "line": 193, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4043, + "end": 4044, + "loc": { + "start": { + "line": 193, + "column": 18 + }, + "end": { + "line": 193, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Math", + "start": 4044, + "end": 4048, + "loc": { + "start": { + "line": 193, + "column": 19 + }, + "end": { + "line": 193, + "column": 23 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4048, + "end": 4049, + "loc": { + "start": { + "line": 193, + "column": 23 + }, + "end": { + "line": 193, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "max", + "start": 4049, + "end": 4052, + "loc": { + "start": { + "line": 193, + "column": 24 + }, + "end": { + "line": 193, + "column": 27 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4052, + "end": 4053, + "loc": { + "start": { + "line": 193, + "column": 27 + }, + "end": { + "line": 193, + "column": 28 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 4053, + "end": 4054, + "loc": { + "start": { + "line": 193, + "column": 28 + }, + "end": { + "line": 193, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4054, + "end": 4055, + "loc": { + "start": { + "line": 193, + "column": 29 + }, + "end": { + "line": 193, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 4056, + "end": 4057, + "loc": { + "start": { + "line": 193, + "column": 31 + }, + "end": { + "line": 193, + "column": 32 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4057, + "end": 4058, + "loc": { + "start": { + "line": 193, + "column": 32 + }, + "end": { + "line": 193, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 4058, + "end": 4064, + "loc": { + "start": { + "line": 193, + "column": 33 + }, + "end": { + "line": 193, + "column": 39 + } + } + }, + { + "type": { + "label": "*", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 10, + "updateContext": null + }, + "value": "*", + "start": 4065, + "end": 4066, + "loc": { + "start": { + "line": 193, + "column": 40 + }, + "end": { + "line": 193, + "column": 41 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "x", + "start": 4067, + "end": 4068, + "loc": { + "start": { + "line": 193, + "column": 42 + }, + "end": { + "line": 193, + "column": 43 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4068, + "end": 4069, + "loc": { + "start": { + "line": 193, + "column": 43 + }, + "end": { + "line": 193, + "column": 44 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4069, + "end": 4070, + "loc": { + "start": { + "line": 193, + "column": 44 + }, + "end": { + "line": 193, + "column": 45 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4070, + "end": 4071, + "loc": { + "start": { + "line": 193, + "column": 45 + }, + "end": { + "line": 193, + "column": 46 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_pow_double", + "start": 4075, + "end": 4086, + "loc": { + "start": { + "line": 195, + "column": 2 + }, + "end": { + "line": 195, + "column": 13 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4086, + "end": 4087, + "loc": { + "start": { + "line": 195, + "column": 13 + }, + "end": { + "line": 195, + "column": 14 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 4087, + "end": 4091, + "loc": { + "start": { + "line": 195, + "column": 14 + }, + "end": { + "line": 195, + "column": 18 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4091, + "end": 4092, + "loc": { + "start": { + "line": 195, + "column": 18 + }, + "end": { + "line": 195, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 4092, + "end": 4097, + "loc": { + "start": { + "line": 195, + "column": 19 + }, + "end": { + "line": 195, + "column": 24 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4097, + "end": 4098, + "loc": { + "start": { + "line": 195, + "column": 24 + }, + "end": { + "line": 195, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "x", + "start": 4099, + "end": 4100, + "loc": { + "start": { + "line": 195, + "column": 26 + }, + "end": { + "line": 195, + "column": 27 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4100, + "end": 4101, + "loc": { + "start": { + "line": 195, + "column": 27 + }, + "end": { + "line": 195, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 4102, + "end": 4103, + "loc": { + "start": { + "line": 195, + "column": 29 + }, + "end": { + "line": 195, + "column": 30 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4103, + "end": 4104, + "loc": { + "start": { + "line": 195, + "column": 30 + }, + "end": { + "line": 195, + "column": 31 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 4105, + "end": 4106, + "loc": { + "start": { + "line": 195, + "column": 32 + }, + "end": { + "line": 195, + "column": 33 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4106, + "end": 4107, + "loc": { + "start": { + "line": 195, + "column": 33 + }, + "end": { + "line": 195, + "column": 34 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 4108, + "end": 4109, + "loc": { + "start": { + "line": 195, + "column": 35 + }, + "end": { + "line": 195, + "column": 36 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4109, + "end": 4110, + "loc": { + "start": { + "line": 195, + "column": 36 + }, + "end": { + "line": 195, + "column": 37 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 4110, + "end": 4116, + "loc": { + "start": { + "line": 195, + "column": 37 + }, + "end": { + "line": 195, + "column": 43 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4116, + "end": 4117, + "loc": { + "start": { + "line": 195, + "column": 43 + }, + "end": { + "line": 195, + "column": 44 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "c", + "start": 4118, + "end": 4119, + "loc": { + "start": { + "line": 195, + "column": 45 + }, + "end": { + "line": 195, + "column": 46 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4119, + "end": 4120, + "loc": { + "start": { + "line": 195, + "column": 46 + }, + "end": { + "line": 195, + "column": 47 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 4121, + "end": 4122, + "loc": { + "start": { + "line": 195, + "column": 48 + }, + "end": { + "line": 195, + "column": 49 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4122, + "end": 4123, + "loc": { + "start": { + "line": 195, + "column": 49 + }, + "end": { + "line": 195, + "column": 50 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "c", + "start": 4124, + "end": 4125, + "loc": { + "start": { + "line": 195, + "column": 51 + }, + "end": { + "line": 195, + "column": 52 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4125, + "end": 4126, + "loc": { + "start": { + "line": 195, + "column": 52 + }, + "end": { + "line": 195, + "column": 53 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 4126, + "end": 4132, + "loc": { + "start": { + "line": 195, + "column": 53 + }, + "end": { + "line": 195, + "column": 59 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4132, + "end": 4133, + "loc": { + "start": { + "line": 195, + "column": 59 + }, + "end": { + "line": 195, + "column": 60 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4133, + "end": 4134, + "loc": { + "start": { + "line": 195, + "column": 60 + }, + "end": { + "line": 195, + "column": 61 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 4138, + "end": 4144, + "loc": { + "start": { + "line": 197, + "column": 2 + }, + "end": { + "line": 197, + "column": 8 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 4145, + "end": 4148, + "loc": { + "start": { + "line": 197, + "column": 9 + }, + "end": { + "line": 197, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 4149, + "end": 4156, + "loc": { + "start": { + "line": 197, + "column": 13 + }, + "end": { + "line": 197, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4156, + "end": 4157, + "loc": { + "start": { + "line": 197, + "column": 20 + }, + "end": { + "line": 197, + "column": 21 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 4157, + "end": 4161, + "loc": { + "start": { + "line": 197, + "column": 21 + }, + "end": { + "line": 197, + "column": 25 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4161, + "end": 4162, + "loc": { + "start": { + "line": 197, + "column": 25 + }, + "end": { + "line": 197, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 4162, + "end": 4167, + "loc": { + "start": { + "line": 197, + "column": 26 + }, + "end": { + "line": 197, + "column": 31 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4167, + "end": 4168, + "loc": { + "start": { + "line": 197, + "column": 31 + }, + "end": { + "line": 197, + "column": 32 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 4169, + "end": 4180, + "loc": { + "start": { + "line": 197, + "column": 33 + }, + "end": { + "line": 197, + "column": 44 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4180, + "end": 4181, + "loc": { + "start": { + "line": 197, + "column": 44 + }, + "end": { + "line": 197, + "column": 45 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "c", + "start": 4182, + "end": 4183, + "loc": { + "start": { + "line": 197, + "column": 46 + }, + "end": { + "line": 197, + "column": 47 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4183, + "end": 4184, + "loc": { + "start": { + "line": 197, + "column": 47 + }, + "end": { + "line": 197, + "column": 48 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4184, + "end": 4185, + "loc": { + "start": { + "line": 197, + "column": 48 + }, + "end": { + "line": 197, + "column": 49 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4187, + "end": 4188, + "loc": { + "start": { + "line": 198, + "column": 1 + }, + "end": { + "line": 198, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "pow", + "start": 4191, + "end": 4194, + "loc": { + "start": { + "line": 200, + "column": 1 + }, + "end": { + "line": 200, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4194, + "end": 4195, + "loc": { + "start": { + "line": 200, + "column": 4 + }, + "end": { + "line": 200, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 4195, + "end": 4200, + "loc": { + "start": { + "line": 200, + "column": 5 + }, + "end": { + "line": 200, + "column": 10 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4200, + "end": 4201, + "loc": { + "start": { + "line": 200, + "column": 10 + }, + "end": { + "line": 200, + "column": 11 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4202, + "end": 4203, + "loc": { + "start": { + "line": 200, + "column": 12 + }, + "end": { + "line": 200, + "column": 13 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 4206, + "end": 4212, + "loc": { + "start": { + "line": 201, + "column": 2 + }, + "end": { + "line": 201, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 4213, + "end": 4217, + "loc": { + "start": { + "line": 201, + "column": 9 + }, + "end": { + "line": 201, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4217, + "end": 4218, + "loc": { + "start": { + "line": 201, + "column": 13 + }, + "end": { + "line": 201, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "pown", + "start": 4218, + "end": 4222, + "loc": { + "start": { + "line": 201, + "column": 14 + }, + "end": { + "line": 201, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4222, + "end": 4223, + "loc": { + "start": { + "line": 201, + "column": 18 + }, + "end": { + "line": 201, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 4223, + "end": 4228, + "loc": { + "start": { + "line": 201, + "column": 19 + }, + "end": { + "line": 201, + "column": 24 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4228, + "end": 4229, + "loc": { + "start": { + "line": 201, + "column": 24 + }, + "end": { + "line": 201, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "valueOf", + "start": 4229, + "end": 4236, + "loc": { + "start": { + "line": 201, + "column": 25 + }, + "end": { + "line": 201, + "column": 32 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4236, + "end": 4237, + "loc": { + "start": { + "line": 201, + "column": 32 + }, + "end": { + "line": 201, + "column": 33 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4237, + "end": 4238, + "loc": { + "start": { + "line": 201, + "column": 33 + }, + "end": { + "line": 201, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4238, + "end": 4239, + "loc": { + "start": { + "line": 201, + "column": 34 + }, + "end": { + "line": 201, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4239, + "end": 4240, + "loc": { + "start": { + "line": 201, + "column": 35 + }, + "end": { + "line": 201, + "column": 36 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4242, + "end": 4243, + "loc": { + "start": { + "line": 202, + "column": 1 + }, + "end": { + "line": 202, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ipow", + "start": 4246, + "end": 4250, + "loc": { + "start": { + "line": 204, + "column": 1 + }, + "end": { + "line": 204, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4250, + "end": 4251, + "loc": { + "start": { + "line": 204, + "column": 5 + }, + "end": { + "line": 204, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 4251, + "end": 4256, + "loc": { + "start": { + "line": 204, + "column": 6 + }, + "end": { + "line": 204, + "column": 11 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4256, + "end": 4257, + "loc": { + "start": { + "line": 204, + "column": 11 + }, + "end": { + "line": 204, + "column": 12 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4258, + "end": 4259, + "loc": { + "start": { + "line": 204, + "column": 13 + }, + "end": { + "line": 204, + "column": 14 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 4262, + "end": 4311, + "loc": { + "start": { + "line": 205, + "column": 2 + }, + "end": { + "line": 205, + "column": 51 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 4314, + "end": 4320, + "loc": { + "start": { + "line": 206, + "column": 2 + }, + "end": { + "line": 206, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 4321, + "end": 4325, + "loc": { + "start": { + "line": 206, + "column": 9 + }, + "end": { + "line": 206, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4325, + "end": 4326, + "loc": { + "start": { + "line": 206, + "column": 13 + }, + "end": { + "line": 206, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "pow", + "start": 4326, + "end": 4329, + "loc": { + "start": { + "line": 206, + "column": 14 + }, + "end": { + "line": 206, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4329, + "end": 4330, + "loc": { + "start": { + "line": 206, + "column": 17 + }, + "end": { + "line": 206, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 4330, + "end": 4335, + "loc": { + "start": { + "line": 206, + "column": 18 + }, + "end": { + "line": 206, + "column": 23 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4335, + "end": 4336, + "loc": { + "start": { + "line": 206, + "column": 23 + }, + "end": { + "line": 206, + "column": 24 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4336, + "end": 4337, + "loc": { + "start": { + "line": 206, + "column": 24 + }, + "end": { + "line": 206, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "move", + "start": 4337, + "end": 4341, + "loc": { + "start": { + "line": 206, + "column": 25 + }, + "end": { + "line": 206, + "column": 29 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4341, + "end": 4342, + "loc": { + "start": { + "line": 206, + "column": 29 + }, + "end": { + "line": 206, + "column": 30 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 4342, + "end": 4346, + "loc": { + "start": { + "line": 206, + "column": 30 + }, + "end": { + "line": 206, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4346, + "end": 4347, + "loc": { + "start": { + "line": 206, + "column": 34 + }, + "end": { + "line": 206, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4347, + "end": 4348, + "loc": { + "start": { + "line": 206, + "column": 35 + }, + "end": { + "line": 206, + "column": 36 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4350, + "end": 4351, + "loc": { + "start": { + "line": 207, + "column": 1 + }, + "end": { + "line": 207, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ipown", + "start": 4354, + "end": 4359, + "loc": { + "start": { + "line": 209, + "column": 1 + }, + "end": { + "line": 209, + "column": 6 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4359, + "end": 4360, + "loc": { + "start": { + "line": 209, + "column": 6 + }, + "end": { + "line": 209, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 4360, + "end": 4366, + "loc": { + "start": { + "line": 209, + "column": 7 + }, + "end": { + "line": 209, + "column": 13 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4366, + "end": 4367, + "loc": { + "start": { + "line": 209, + "column": 13 + }, + "end": { + "line": 209, + "column": 14 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4368, + "end": 4369, + "loc": { + "start": { + "line": 209, + "column": 15 + }, + "end": { + "line": 209, + "column": 16 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 4372, + "end": 4421, + "loc": { + "start": { + "line": 210, + "column": 2 + }, + "end": { + "line": 210, + "column": 51 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 4424, + "end": 4430, + "loc": { + "start": { + "line": 211, + "column": 2 + }, + "end": { + "line": 211, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 4431, + "end": 4435, + "loc": { + "start": { + "line": 211, + "column": 9 + }, + "end": { + "line": 211, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4435, + "end": 4436, + "loc": { + "start": { + "line": 211, + "column": 13 + }, + "end": { + "line": 211, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "pown", + "start": 4436, + "end": 4440, + "loc": { + "start": { + "line": 211, + "column": 14 + }, + "end": { + "line": 211, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4440, + "end": 4441, + "loc": { + "start": { + "line": 211, + "column": 18 + }, + "end": { + "line": 211, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 4441, + "end": 4447, + "loc": { + "start": { + "line": 211, + "column": 19 + }, + "end": { + "line": 211, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4447, + "end": 4448, + "loc": { + "start": { + "line": 211, + "column": 25 + }, + "end": { + "line": 211, + "column": 26 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4448, + "end": 4449, + "loc": { + "start": { + "line": 211, + "column": 26 + }, + "end": { + "line": 211, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "move", + "start": 4449, + "end": 4453, + "loc": { + "start": { + "line": 211, + "column": 27 + }, + "end": { + "line": 211, + "column": 31 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4453, + "end": 4454, + "loc": { + "start": { + "line": 211, + "column": 31 + }, + "end": { + "line": 211, + "column": 32 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 4454, + "end": 4458, + "loc": { + "start": { + "line": 211, + "column": 32 + }, + "end": { + "line": 211, + "column": 36 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4458, + "end": 4459, + "loc": { + "start": { + "line": 211, + "column": 36 + }, + "end": { + "line": 211, + "column": 37 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4459, + "end": 4460, + "loc": { + "start": { + "line": 211, + "column": 37 + }, + "end": { + "line": 211, + "column": 38 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4462, + "end": 4463, + "loc": { + "start": { + "line": 212, + "column": 1 + }, + "end": { + "line": 212, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "square", + "start": 4466, + "end": 4472, + "loc": { + "start": { + "line": 214, + "column": 1 + }, + "end": { + "line": 214, + "column": 7 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4472, + "end": 4473, + "loc": { + "start": { + "line": 214, + "column": 7 + }, + "end": { + "line": 214, + "column": 8 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4473, + "end": 4474, + "loc": { + "start": { + "line": 214, + "column": 8 + }, + "end": { + "line": 214, + "column": 9 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4475, + "end": 4476, + "loc": { + "start": { + "line": 214, + "column": 10 + }, + "end": { + "line": 214, + "column": 11 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 4479, + "end": 4528, + "loc": { + "start": { + "line": 215, + "column": 2 + }, + "end": { + "line": 215, + "column": 51 + } + } + }, + { + "type": "CommentLine", + "value": " TODO use this.mul(this) instead?", + "start": 4531, + "end": 4566, + "loc": { + "start": { + "line": 216, + "column": 2 + }, + "end": { + "line": 216, + "column": 37 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 4569, + "end": 4575, + "loc": { + "start": { + "line": 217, + "column": 2 + }, + "end": { + "line": 217, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 4576, + "end": 4580, + "loc": { + "start": { + "line": 217, + "column": 9 + }, + "end": { + "line": 217, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4580, + "end": 4581, + "loc": { + "start": { + "line": 217, + "column": 13 + }, + "end": { + "line": 217, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "pown", + "start": 4581, + "end": 4585, + "loc": { + "start": { + "line": 217, + "column": 14 + }, + "end": { + "line": 217, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4585, + "end": 4586, + "loc": { + "start": { + "line": 217, + "column": 18 + }, + "end": { + "line": 217, + "column": 19 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 2, + "start": 4586, + "end": 4587, + "loc": { + "start": { + "line": 217, + "column": 19 + }, + "end": { + "line": 217, + "column": 20 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4587, + "end": 4588, + "loc": { + "start": { + "line": 217, + "column": 20 + }, + "end": { + "line": 217, + "column": 21 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4588, + "end": 4589, + "loc": { + "start": { + "line": 217, + "column": 21 + }, + "end": { + "line": 217, + "column": 22 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4591, + "end": 4592, + "loc": { + "start": { + "line": 218, + "column": 1 + }, + "end": { + "line": 218, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "isquare", + "start": 4595, + "end": 4602, + "loc": { + "start": { + "line": 220, + "column": 1 + }, + "end": { + "line": 220, + "column": 8 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4602, + "end": 4603, + "loc": { + "start": { + "line": 220, + "column": 8 + }, + "end": { + "line": 220, + "column": 9 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4603, + "end": 4604, + "loc": { + "start": { + "line": 220, + "column": 9 + }, + "end": { + "line": 220, + "column": 10 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4605, + "end": 4606, + "loc": { + "start": { + "line": 220, + "column": 11 + }, + "end": { + "line": 220, + "column": 12 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 4609, + "end": 4658, + "loc": { + "start": { + "line": 221, + "column": 2 + }, + "end": { + "line": 221, + "column": 51 + } + } + }, + { + "type": "CommentLine", + "value": " TODO use this.imul(this) instead?", + "start": 4661, + "end": 4697, + "loc": { + "start": { + "line": 222, + "column": 2 + }, + "end": { + "line": 222, + "column": 38 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 4700, + "end": 4706, + "loc": { + "start": { + "line": 223, + "column": 2 + }, + "end": { + "line": 223, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 4707, + "end": 4711, + "loc": { + "start": { + "line": 223, + "column": 9 + }, + "end": { + "line": 223, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4711, + "end": 4712, + "loc": { + "start": { + "line": 223, + "column": 13 + }, + "end": { + "line": 223, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "square", + "start": 4712, + "end": 4718, + "loc": { + "start": { + "line": 223, + "column": 14 + }, + "end": { + "line": 223, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4718, + "end": 4719, + "loc": { + "start": { + "line": 223, + "column": 20 + }, + "end": { + "line": 223, + "column": 21 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4719, + "end": 4720, + "loc": { + "start": { + "line": 223, + "column": 21 + }, + "end": { + "line": 223, + "column": 22 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4720, + "end": 4721, + "loc": { + "start": { + "line": 223, + "column": 22 + }, + "end": { + "line": 223, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "move", + "start": 4721, + "end": 4725, + "loc": { + "start": { + "line": 223, + "column": 23 + }, + "end": { + "line": 223, + "column": 27 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4725, + "end": 4726, + "loc": { + "start": { + "line": 223, + "column": 27 + }, + "end": { + "line": 223, + "column": 28 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 4726, + "end": 4730, + "loc": { + "start": { + "line": 223, + "column": 28 + }, + "end": { + "line": 223, + "column": 32 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4730, + "end": 4731, + "loc": { + "start": { + "line": 223, + "column": 32 + }, + "end": { + "line": 223, + "column": 33 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4731, + "end": 4732, + "loc": { + "start": { + "line": 223, + "column": 33 + }, + "end": { + "line": 223, + "column": 34 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4734, + "end": 4735, + "loc": { + "start": { + "line": 224, + "column": 1 + }, + "end": { + "line": 224, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "div", + "start": 4738, + "end": 4741, + "loc": { + "start": { + "line": 226, + "column": 1 + }, + "end": { + "line": 226, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4741, + "end": 4742, + "loc": { + "start": { + "line": 226, + "column": 4 + }, + "end": { + "line": 226, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 4742, + "end": 4747, + "loc": { + "start": { + "line": 226, + "column": 5 + }, + "end": { + "line": 226, + "column": 10 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4747, + "end": 4748, + "loc": { + "start": { + "line": 226, + "column": 10 + }, + "end": { + "line": 226, + "column": 11 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4749, + "end": 4750, + "loc": { + "start": { + "line": 226, + "column": 12 + }, + "end": { + "line": 226, + "column": 13 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 4753, + "end": 4759, + "loc": { + "start": { + "line": 227, + "column": 2 + }, + "end": { + "line": 227, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 4760, + "end": 4764, + "loc": { + "start": { + "line": 227, + "column": 9 + }, + "end": { + "line": 227, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4764, + "end": 4765, + "loc": { + "start": { + "line": 227, + "column": 13 + }, + "end": { + "line": 227, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "divmod", + "start": 4765, + "end": 4771, + "loc": { + "start": { + "line": 227, + "column": 14 + }, + "end": { + "line": 227, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4771, + "end": 4772, + "loc": { + "start": { + "line": 227, + "column": 20 + }, + "end": { + "line": 227, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 4772, + "end": 4777, + "loc": { + "start": { + "line": 227, + "column": 21 + }, + "end": { + "line": 227, + "column": 26 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4777, + "end": 4778, + "loc": { + "start": { + "line": 227, + "column": 26 + }, + "end": { + "line": 227, + "column": 27 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4778, + "end": 4779, + "loc": { + "start": { + "line": 227, + "column": 27 + }, + "end": { + "line": 227, + "column": 28 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 4779, + "end": 4780, + "loc": { + "start": { + "line": 227, + "column": 28 + }, + "end": { + "line": 227, + "column": 29 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4780, + "end": 4781, + "loc": { + "start": { + "line": 227, + "column": 29 + }, + "end": { + "line": 227, + "column": 30 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4781, + "end": 4782, + "loc": { + "start": { + "line": 227, + "column": 30 + }, + "end": { + "line": 227, + "column": 31 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4784, + "end": 4785, + "loc": { + "start": { + "line": 228, + "column": 1 + }, + "end": { + "line": 228, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "divn", + "start": 4788, + "end": 4792, + "loc": { + "start": { + "line": 230, + "column": 1 + }, + "end": { + "line": 230, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4792, + "end": 4793, + "loc": { + "start": { + "line": 230, + "column": 5 + }, + "end": { + "line": 230, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 4793, + "end": 4799, + "loc": { + "start": { + "line": 230, + "column": 6 + }, + "end": { + "line": 230, + "column": 12 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4799, + "end": 4800, + "loc": { + "start": { + "line": 230, + "column": 12 + }, + "end": { + "line": 230, + "column": 13 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4801, + "end": 4802, + "loc": { + "start": { + "line": 230, + "column": 14 + }, + "end": { + "line": 230, + "column": 15 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 4805, + "end": 4811, + "loc": { + "start": { + "line": 231, + "column": 2 + }, + "end": { + "line": 231, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 4812, + "end": 4816, + "loc": { + "start": { + "line": 231, + "column": 9 + }, + "end": { + "line": 231, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4816, + "end": 4817, + "loc": { + "start": { + "line": 231, + "column": 13 + }, + "end": { + "line": 231, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "div", + "start": 4817, + "end": 4820, + "loc": { + "start": { + "line": 231, + "column": 14 + }, + "end": { + "line": 231, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4820, + "end": 4821, + "loc": { + "start": { + "line": 231, + "column": 17 + }, + "end": { + "line": 231, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_from_number", + "start": 4821, + "end": 4833, + "loc": { + "start": { + "line": 231, + "column": 18 + }, + "end": { + "line": 231, + "column": 30 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4833, + "end": 4834, + "loc": { + "start": { + "line": 231, + "column": 30 + }, + "end": { + "line": 231, + "column": 31 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 4834, + "end": 4840, + "loc": { + "start": { + "line": 231, + "column": 31 + }, + "end": { + "line": 231, + "column": 37 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4840, + "end": 4841, + "loc": { + "start": { + "line": 231, + "column": 37 + }, + "end": { + "line": 231, + "column": 38 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4841, + "end": 4842, + "loc": { + "start": { + "line": 231, + "column": 38 + }, + "end": { + "line": 231, + "column": 39 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4842, + "end": 4843, + "loc": { + "start": { + "line": 231, + "column": 39 + }, + "end": { + "line": 231, + "column": 40 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4845, + "end": 4846, + "loc": { + "start": { + "line": 232, + "column": 1 + }, + "end": { + "line": 232, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "idiv", + "start": 4849, + "end": 4853, + "loc": { + "start": { + "line": 234, + "column": 1 + }, + "end": { + "line": 234, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4853, + "end": 4854, + "loc": { + "start": { + "line": 234, + "column": 5 + }, + "end": { + "line": 234, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 4854, + "end": 4859, + "loc": { + "start": { + "line": 234, + "column": 6 + }, + "end": { + "line": 234, + "column": 11 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4859, + "end": 4860, + "loc": { + "start": { + "line": 234, + "column": 11 + }, + "end": { + "line": 234, + "column": 12 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4861, + "end": 4862, + "loc": { + "start": { + "line": 234, + "column": 13 + }, + "end": { + "line": 234, + "column": 14 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 4865, + "end": 4914, + "loc": { + "start": { + "line": 235, + "column": 2 + }, + "end": { + "line": 235, + "column": 51 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 4917, + "end": 4923, + "loc": { + "start": { + "line": 236, + "column": 2 + }, + "end": { + "line": 236, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 4924, + "end": 4928, + "loc": { + "start": { + "line": 236, + "column": 9 + }, + "end": { + "line": 236, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4928, + "end": 4929, + "loc": { + "start": { + "line": 236, + "column": 13 + }, + "end": { + "line": 236, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "div", + "start": 4929, + "end": 4932, + "loc": { + "start": { + "line": 236, + "column": 14 + }, + "end": { + "line": 236, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4932, + "end": 4933, + "loc": { + "start": { + "line": 236, + "column": 17 + }, + "end": { + "line": 236, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 4933, + "end": 4938, + "loc": { + "start": { + "line": 236, + "column": 18 + }, + "end": { + "line": 236, + "column": 23 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4938, + "end": 4939, + "loc": { + "start": { + "line": 236, + "column": 23 + }, + "end": { + "line": 236, + "column": 24 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4939, + "end": 4940, + "loc": { + "start": { + "line": 236, + "column": 24 + }, + "end": { + "line": 236, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "move", + "start": 4940, + "end": 4944, + "loc": { + "start": { + "line": 236, + "column": 25 + }, + "end": { + "line": 236, + "column": 29 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4944, + "end": 4945, + "loc": { + "start": { + "line": 236, + "column": 29 + }, + "end": { + "line": 236, + "column": 30 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 4945, + "end": 4949, + "loc": { + "start": { + "line": 236, + "column": 30 + }, + "end": { + "line": 236, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4949, + "end": 4950, + "loc": { + "start": { + "line": 236, + "column": 34 + }, + "end": { + "line": 236, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4950, + "end": 4951, + "loc": { + "start": { + "line": 236, + "column": 35 + }, + "end": { + "line": 236, + "column": 36 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4953, + "end": 4954, + "loc": { + "start": { + "line": 237, + "column": 1 + }, + "end": { + "line": 237, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "idivn", + "start": 4957, + "end": 4962, + "loc": { + "start": { + "line": 239, + "column": 1 + }, + "end": { + "line": 239, + "column": 6 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4962, + "end": 4963, + "loc": { + "start": { + "line": 239, + "column": 6 + }, + "end": { + "line": 239, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 4963, + "end": 4969, + "loc": { + "start": { + "line": 239, + "column": 7 + }, + "end": { + "line": 239, + "column": 13 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4969, + "end": 4970, + "loc": { + "start": { + "line": 239, + "column": 13 + }, + "end": { + "line": 239, + "column": 14 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4971, + "end": 4972, + "loc": { + "start": { + "line": 239, + "column": 15 + }, + "end": { + "line": 239, + "column": 16 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 4975, + "end": 4981, + "loc": { + "start": { + "line": 240, + "column": 2 + }, + "end": { + "line": 240, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 4982, + "end": 4986, + "loc": { + "start": { + "line": 240, + "column": 9 + }, + "end": { + "line": 240, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4986, + "end": 4987, + "loc": { + "start": { + "line": 240, + "column": 13 + }, + "end": { + "line": 240, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "divn", + "start": 4987, + "end": 4991, + "loc": { + "start": { + "line": 240, + "column": 14 + }, + "end": { + "line": 240, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4991, + "end": 4992, + "loc": { + "start": { + "line": 240, + "column": 18 + }, + "end": { + "line": 240, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 4992, + "end": 4998, + "loc": { + "start": { + "line": 240, + "column": 19 + }, + "end": { + "line": 240, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4998, + "end": 4999, + "loc": { + "start": { + "line": 240, + "column": 25 + }, + "end": { + "line": 240, + "column": 26 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4999, + "end": 5000, + "loc": { + "start": { + "line": 240, + "column": 26 + }, + "end": { + "line": 240, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "move", + "start": 5000, + "end": 5004, + "loc": { + "start": { + "line": 240, + "column": 27 + }, + "end": { + "line": 240, + "column": 31 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5004, + "end": 5005, + "loc": { + "start": { + "line": 240, + "column": 31 + }, + "end": { + "line": 240, + "column": 32 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 5005, + "end": 5009, + "loc": { + "start": { + "line": 240, + "column": 32 + }, + "end": { + "line": 240, + "column": 36 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5009, + "end": 5010, + "loc": { + "start": { + "line": 240, + "column": 36 + }, + "end": { + "line": 240, + "column": 37 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5010, + "end": 5011, + "loc": { + "start": { + "line": 240, + "column": 37 + }, + "end": { + "line": 240, + "column": 38 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5013, + "end": 5014, + "loc": { + "start": { + "line": 241, + "column": 1 + }, + "end": { + "line": 241, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "mod", + "start": 5017, + "end": 5020, + "loc": { + "start": { + "line": 243, + "column": 1 + }, + "end": { + "line": 243, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5020, + "end": 5021, + "loc": { + "start": { + "line": 243, + "column": 4 + }, + "end": { + "line": 243, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 5021, + "end": 5026, + "loc": { + "start": { + "line": 243, + "column": 5 + }, + "end": { + "line": 243, + "column": 10 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5026, + "end": 5027, + "loc": { + "start": { + "line": 243, + "column": 10 + }, + "end": { + "line": 243, + "column": 11 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5028, + "end": 5029, + "loc": { + "start": { + "line": 243, + "column": 12 + }, + "end": { + "line": 243, + "column": 13 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 5032, + "end": 5038, + "loc": { + "start": { + "line": 244, + "column": 2 + }, + "end": { + "line": 244, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 5039, + "end": 5043, + "loc": { + "start": { + "line": 244, + "column": 9 + }, + "end": { + "line": 244, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5043, + "end": 5044, + "loc": { + "start": { + "line": 244, + "column": 13 + }, + "end": { + "line": 244, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "divmod", + "start": 5044, + "end": 5050, + "loc": { + "start": { + "line": 244, + "column": 14 + }, + "end": { + "line": 244, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5050, + "end": 5051, + "loc": { + "start": { + "line": 244, + "column": 20 + }, + "end": { + "line": 244, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 5051, + "end": 5056, + "loc": { + "start": { + "line": 244, + "column": 21 + }, + "end": { + "line": 244, + "column": 26 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5056, + "end": 5057, + "loc": { + "start": { + "line": 244, + "column": 26 + }, + "end": { + "line": 244, + "column": 27 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5057, + "end": 5058, + "loc": { + "start": { + "line": 244, + "column": 27 + }, + "end": { + "line": 244, + "column": 28 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 5058, + "end": 5059, + "loc": { + "start": { + "line": 244, + "column": 28 + }, + "end": { + "line": 244, + "column": 29 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5059, + "end": 5060, + "loc": { + "start": { + "line": 244, + "column": 29 + }, + "end": { + "line": 244, + "column": 30 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5060, + "end": 5061, + "loc": { + "start": { + "line": 244, + "column": 30 + }, + "end": { + "line": 244, + "column": 31 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5063, + "end": 5064, + "loc": { + "start": { + "line": 245, + "column": 1 + }, + "end": { + "line": 245, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "modn", + "start": 5067, + "end": 5071, + "loc": { + "start": { + "line": 247, + "column": 1 + }, + "end": { + "line": 247, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5071, + "end": 5072, + "loc": { + "start": { + "line": 247, + "column": 5 + }, + "end": { + "line": 247, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 5072, + "end": 5078, + "loc": { + "start": { + "line": 247, + "column": 6 + }, + "end": { + "line": 247, + "column": 12 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5078, + "end": 5079, + "loc": { + "start": { + "line": 247, + "column": 12 + }, + "end": { + "line": 247, + "column": 13 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5080, + "end": 5081, + "loc": { + "start": { + "line": 247, + "column": 14 + }, + "end": { + "line": 247, + "column": 15 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 5084, + "end": 5090, + "loc": { + "start": { + "line": 248, + "column": 2 + }, + "end": { + "line": 248, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 5091, + "end": 5095, + "loc": { + "start": { + "line": 248, + "column": 9 + }, + "end": { + "line": 248, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5095, + "end": 5096, + "loc": { + "start": { + "line": 248, + "column": 13 + }, + "end": { + "line": 248, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "mod", + "start": 5096, + "end": 5099, + "loc": { + "start": { + "line": 248, + "column": 14 + }, + "end": { + "line": 248, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5099, + "end": 5100, + "loc": { + "start": { + "line": 248, + "column": 17 + }, + "end": { + "line": 248, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_from_number", + "start": 5100, + "end": 5112, + "loc": { + "start": { + "line": 248, + "column": 18 + }, + "end": { + "line": 248, + "column": 30 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5112, + "end": 5113, + "loc": { + "start": { + "line": 248, + "column": 30 + }, + "end": { + "line": 248, + "column": 31 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 5113, + "end": 5119, + "loc": { + "start": { + "line": 248, + "column": 31 + }, + "end": { + "line": 248, + "column": 37 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5119, + "end": 5120, + "loc": { + "start": { + "line": 248, + "column": 37 + }, + "end": { + "line": 248, + "column": 38 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5120, + "end": 5121, + "loc": { + "start": { + "line": 248, + "column": 38 + }, + "end": { + "line": 248, + "column": 39 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5121, + "end": 5122, + "loc": { + "start": { + "line": 248, + "column": 39 + }, + "end": { + "line": 248, + "column": 40 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5124, + "end": 5125, + "loc": { + "start": { + "line": 249, + "column": 1 + }, + "end": { + "line": 249, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "imod", + "start": 5128, + "end": 5132, + "loc": { + "start": { + "line": 251, + "column": 1 + }, + "end": { + "line": 251, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5132, + "end": 5133, + "loc": { + "start": { + "line": 251, + "column": 5 + }, + "end": { + "line": 251, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 5133, + "end": 5138, + "loc": { + "start": { + "line": 251, + "column": 6 + }, + "end": { + "line": 251, + "column": 11 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5138, + "end": 5139, + "loc": { + "start": { + "line": 251, + "column": 11 + }, + "end": { + "line": 251, + "column": 12 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5140, + "end": 5141, + "loc": { + "start": { + "line": 251, + "column": 13 + }, + "end": { + "line": 251, + "column": 14 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 5144, + "end": 5193, + "loc": { + "start": { + "line": 252, + "column": 2 + }, + "end": { + "line": 252, + "column": 51 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 5196, + "end": 5202, + "loc": { + "start": { + "line": 253, + "column": 2 + }, + "end": { + "line": 253, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 5203, + "end": 5207, + "loc": { + "start": { + "line": 253, + "column": 9 + }, + "end": { + "line": 253, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5207, + "end": 5208, + "loc": { + "start": { + "line": 253, + "column": 13 + }, + "end": { + "line": 253, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "mod", + "start": 5208, + "end": 5211, + "loc": { + "start": { + "line": 253, + "column": 14 + }, + "end": { + "line": 253, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5211, + "end": 5212, + "loc": { + "start": { + "line": 253, + "column": 17 + }, + "end": { + "line": 253, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 5212, + "end": 5217, + "loc": { + "start": { + "line": 253, + "column": 18 + }, + "end": { + "line": 253, + "column": 23 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5217, + "end": 5218, + "loc": { + "start": { + "line": 253, + "column": 23 + }, + "end": { + "line": 253, + "column": 24 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5218, + "end": 5219, + "loc": { + "start": { + "line": 253, + "column": 24 + }, + "end": { + "line": 253, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "move", + "start": 5219, + "end": 5223, + "loc": { + "start": { + "line": 253, + "column": 25 + }, + "end": { + "line": 253, + "column": 29 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5223, + "end": 5224, + "loc": { + "start": { + "line": 253, + "column": 29 + }, + "end": { + "line": 253, + "column": 30 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 5224, + "end": 5228, + "loc": { + "start": { + "line": 253, + "column": 30 + }, + "end": { + "line": 253, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5228, + "end": 5229, + "loc": { + "start": { + "line": 253, + "column": 34 + }, + "end": { + "line": 253, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5229, + "end": 5230, + "loc": { + "start": { + "line": 253, + "column": 35 + }, + "end": { + "line": 253, + "column": 36 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5232, + "end": 5233, + "loc": { + "start": { + "line": 254, + "column": 1 + }, + "end": { + "line": 254, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "imodn", + "start": 5236, + "end": 5241, + "loc": { + "start": { + "line": 256, + "column": 1 + }, + "end": { + "line": 256, + "column": 6 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5241, + "end": 5242, + "loc": { + "start": { + "line": 256, + "column": 6 + }, + "end": { + "line": 256, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 5242, + "end": 5248, + "loc": { + "start": { + "line": 256, + "column": 7 + }, + "end": { + "line": 256, + "column": 13 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5248, + "end": 5249, + "loc": { + "start": { + "line": 256, + "column": 13 + }, + "end": { + "line": 256, + "column": 14 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5250, + "end": 5251, + "loc": { + "start": { + "line": 256, + "column": 15 + }, + "end": { + "line": 256, + "column": 16 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 5254, + "end": 5260, + "loc": { + "start": { + "line": 257, + "column": 2 + }, + "end": { + "line": 257, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 5261, + "end": 5265, + "loc": { + "start": { + "line": 257, + "column": 9 + }, + "end": { + "line": 257, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5265, + "end": 5266, + "loc": { + "start": { + "line": 257, + "column": 13 + }, + "end": { + "line": 257, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "modn", + "start": 5266, + "end": 5270, + "loc": { + "start": { + "line": 257, + "column": 14 + }, + "end": { + "line": 257, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5270, + "end": 5271, + "loc": { + "start": { + "line": 257, + "column": 18 + }, + "end": { + "line": 257, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 5271, + "end": 5277, + "loc": { + "start": { + "line": 257, + "column": 19 + }, + "end": { + "line": 257, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5277, + "end": 5278, + "loc": { + "start": { + "line": 257, + "column": 25 + }, + "end": { + "line": 257, + "column": 26 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5278, + "end": 5279, + "loc": { + "start": { + "line": 257, + "column": 26 + }, + "end": { + "line": 257, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "move", + "start": 5279, + "end": 5283, + "loc": { + "start": { + "line": 257, + "column": 27 + }, + "end": { + "line": 257, + "column": 31 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5283, + "end": 5284, + "loc": { + "start": { + "line": 257, + "column": 31 + }, + "end": { + "line": 257, + "column": 32 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 5284, + "end": 5288, + "loc": { + "start": { + "line": 257, + "column": 32 + }, + "end": { + "line": 257, + "column": 36 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5288, + "end": 5289, + "loc": { + "start": { + "line": 257, + "column": 36 + }, + "end": { + "line": 257, + "column": 37 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5289, + "end": 5290, + "loc": { + "start": { + "line": 257, + "column": 37 + }, + "end": { + "line": 257, + "column": 38 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5292, + "end": 5293, + "loc": { + "start": { + "line": 258, + "column": 1 + }, + "end": { + "line": 258, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "divround", + "start": 5296, + "end": 5304, + "loc": { + "start": { + "line": 260, + "column": 1 + }, + "end": { + "line": 260, + "column": 9 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5304, + "end": 5305, + "loc": { + "start": { + "line": 260, + "column": 9 + }, + "end": { + "line": 260, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 5305, + "end": 5310, + "loc": { + "start": { + "line": 260, + "column": 10 + }, + "end": { + "line": 260, + "column": 15 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5310, + "end": 5311, + "loc": { + "start": { + "line": 260, + "column": 15 + }, + "end": { + "line": 260, + "column": 16 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5312, + "end": 5313, + "loc": { + "start": { + "line": 260, + "column": 17 + }, + "end": { + "line": 260, + "column": 18 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 5316, + "end": 5321, + "loc": { + "start": { + "line": 261, + "column": 2 + }, + "end": { + "line": 261, + "column": 7 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5322, + "end": 5323, + "loc": { + "start": { + "line": 261, + "column": 8 + }, + "end": { + "line": 261, + "column": 9 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "q", + "start": 5323, + "end": 5324, + "loc": { + "start": { + "line": 261, + "column": 9 + }, + "end": { + "line": 261, + "column": 10 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5324, + "end": 5325, + "loc": { + "start": { + "line": 261, + "column": 10 + }, + "end": { + "line": 261, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 5326, + "end": 5327, + "loc": { + "start": { + "line": 261, + "column": 12 + }, + "end": { + "line": 261, + "column": 13 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5327, + "end": 5328, + "loc": { + "start": { + "line": 261, + "column": 13 + }, + "end": { + "line": 261, + "column": 14 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 5329, + "end": 5330, + "loc": { + "start": { + "line": 261, + "column": 15 + }, + "end": { + "line": 261, + "column": 16 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 5331, + "end": 5335, + "loc": { + "start": { + "line": 261, + "column": 17 + }, + "end": { + "line": 261, + "column": 21 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5335, + "end": 5336, + "loc": { + "start": { + "line": 261, + "column": 21 + }, + "end": { + "line": 261, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "divmod", + "start": 5336, + "end": 5342, + "loc": { + "start": { + "line": 261, + "column": 22 + }, + "end": { + "line": 261, + "column": 28 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5342, + "end": 5343, + "loc": { + "start": { + "line": 261, + "column": 28 + }, + "end": { + "line": 261, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 5343, + "end": 5348, + "loc": { + "start": { + "line": 261, + "column": 29 + }, + "end": { + "line": 261, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5348, + "end": 5349, + "loc": { + "start": { + "line": 261, + "column": 34 + }, + "end": { + "line": 261, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5349, + "end": 5350, + "loc": { + "start": { + "line": 261, + "column": 35 + }, + "end": { + "line": 261, + "column": 36 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 5353, + "end": 5355, + "loc": { + "start": { + "line": 262, + "column": 2 + }, + "end": { + "line": 262, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5356, + "end": 5357, + "loc": { + "start": { + "line": 262, + "column": 5 + }, + "end": { + "line": 262, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 5357, + "end": 5358, + "loc": { + "start": { + "line": 262, + "column": 6 + }, + "end": { + "line": 262, + "column": 7 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5358, + "end": 5359, + "loc": { + "start": { + "line": 262, + "column": 7 + }, + "end": { + "line": 262, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ge", + "start": 5359, + "end": 5361, + "loc": { + "start": { + "line": 262, + "column": 8 + }, + "end": { + "line": 262, + "column": 10 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5361, + "end": 5362, + "loc": { + "start": { + "line": 262, + "column": 10 + }, + "end": { + "line": 262, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 5362, + "end": 5367, + "loc": { + "start": { + "line": 262, + "column": 11 + }, + "end": { + "line": 262, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5367, + "end": 5368, + "loc": { + "start": { + "line": 262, + "column": 16 + }, + "end": { + "line": 262, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "divn", + "start": 5368, + "end": 5372, + "loc": { + "start": { + "line": 262, + "column": 17 + }, + "end": { + "line": 262, + "column": 21 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5372, + "end": 5373, + "loc": { + "start": { + "line": 262, + "column": 21 + }, + "end": { + "line": 262, + "column": 22 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 2, + "start": 5373, + "end": 5374, + "loc": { + "start": { + "line": 262, + "column": 22 + }, + "end": { + "line": 262, + "column": 23 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5374, + "end": 5375, + "loc": { + "start": { + "line": 262, + "column": 23 + }, + "end": { + "line": 262, + "column": 24 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5375, + "end": 5376, + "loc": { + "start": { + "line": 262, + "column": 24 + }, + "end": { + "line": 262, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "addn", + "start": 5376, + "end": 5380, + "loc": { + "start": { + "line": 262, + "column": 25 + }, + "end": { + "line": 262, + "column": 29 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5380, + "end": 5381, + "loc": { + "start": { + "line": 262, + "column": 29 + }, + "end": { + "line": 262, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 5381, + "end": 5386, + "loc": { + "start": { + "line": 262, + "column": 30 + }, + "end": { + "line": 262, + "column": 35 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5386, + "end": 5387, + "loc": { + "start": { + "line": 262, + "column": 35 + }, + "end": { + "line": 262, + "column": 36 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "iseven", + "start": 5387, + "end": 5393, + "loc": { + "start": { + "line": 262, + "column": 36 + }, + "end": { + "line": 262, + "column": 42 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5393, + "end": 5394, + "loc": { + "start": { + "line": 262, + "column": 42 + }, + "end": { + "line": 262, + "column": 43 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5394, + "end": 5395, + "loc": { + "start": { + "line": 262, + "column": 43 + }, + "end": { + "line": 262, + "column": 44 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5396, + "end": 5397, + "loc": { + "start": { + "line": 262, + "column": 45 + }, + "end": { + "line": 262, + "column": 46 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 5398, + "end": 5399, + "loc": { + "start": { + "line": 262, + "column": 47 + }, + "end": { + "line": 262, + "column": 48 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5400, + "end": 5401, + "loc": { + "start": { + "line": 262, + "column": 49 + }, + "end": { + "line": 262, + "column": 50 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 5402, + "end": 5403, + "loc": { + "start": { + "line": 262, + "column": 51 + }, + "end": { + "line": 262, + "column": 52 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5403, + "end": 5404, + "loc": { + "start": { + "line": 262, + "column": 52 + }, + "end": { + "line": 262, + "column": 53 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5404, + "end": 5405, + "loc": { + "start": { + "line": 262, + "column": 53 + }, + "end": { + "line": 262, + "column": 54 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5405, + "end": 5406, + "loc": { + "start": { + "line": 262, + "column": 54 + }, + "end": { + "line": 262, + "column": 55 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "increment", + "start": 5410, + "end": 5419, + "loc": { + "start": { + "line": 263, + "column": 3 + }, + "end": { + "line": 263, + "column": 12 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5419, + "end": 5420, + "loc": { + "start": { + "line": 263, + "column": 12 + }, + "end": { + "line": 263, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "q", + "start": 5420, + "end": 5421, + "loc": { + "start": { + "line": 263, + "column": 13 + }, + "end": { + "line": 263, + "column": 14 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5421, + "end": 5422, + "loc": { + "start": { + "line": 263, + "column": 14 + }, + "end": { + "line": 263, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 5422, + "end": 5427, + "loc": { + "start": { + "line": 263, + "column": 15 + }, + "end": { + "line": 263, + "column": 20 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5427, + "end": 5428, + "loc": { + "start": { + "line": 263, + "column": 20 + }, + "end": { + "line": 263, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "q", + "start": 5429, + "end": 5430, + "loc": { + "start": { + "line": 263, + "column": 22 + }, + "end": { + "line": 263, + "column": 23 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5430, + "end": 5431, + "loc": { + "start": { + "line": 263, + "column": 23 + }, + "end": { + "line": 263, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 5431, + "end": 5437, + "loc": { + "start": { + "line": 263, + "column": 24 + }, + "end": { + "line": 263, + "column": 30 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5437, + "end": 5438, + "loc": { + "start": { + "line": 263, + "column": 30 + }, + "end": { + "line": 263, + "column": 31 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 5439, + "end": 5440, + "loc": { + "start": { + "line": 263, + "column": 32 + }, + "end": { + "line": 263, + "column": 33 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5440, + "end": 5441, + "loc": { + "start": { + "line": 263, + "column": 33 + }, + "end": { + "line": 263, + "column": 34 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "q", + "start": 5442, + "end": 5443, + "loc": { + "start": { + "line": 263, + "column": 35 + }, + "end": { + "line": 263, + "column": 36 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5443, + "end": 5444, + "loc": { + "start": { + "line": 263, + "column": 36 + }, + "end": { + "line": 263, + "column": 37 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 5444, + "end": 5450, + "loc": { + "start": { + "line": 263, + "column": 37 + }, + "end": { + "line": 263, + "column": 43 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5450, + "end": 5451, + "loc": { + "start": { + "line": 263, + "column": 43 + }, + "end": { + "line": 263, + "column": 44 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 5451, + "end": 5457, + "loc": { + "start": { + "line": 263, + "column": 44 + }, + "end": { + "line": 263, + "column": 50 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5457, + "end": 5458, + "loc": { + "start": { + "line": 263, + "column": 50 + }, + "end": { + "line": 263, + "column": 51 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5458, + "end": 5459, + "loc": { + "start": { + "line": 263, + "column": 51 + }, + "end": { + "line": 263, + "column": 52 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 5462, + "end": 5468, + "loc": { + "start": { + "line": 264, + "column": 2 + }, + "end": { + "line": 264, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "q", + "start": 5469, + "end": 5470, + "loc": { + "start": { + "line": 264, + "column": 9 + }, + "end": { + "line": 264, + "column": 10 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5470, + "end": 5471, + "loc": { + "start": { + "line": 264, + "column": 10 + }, + "end": { + "line": 264, + "column": 11 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5473, + "end": 5474, + "loc": { + "start": { + "line": 265, + "column": 1 + }, + "end": { + "line": 265, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "divmod", + "start": 5477, + "end": 5483, + "loc": { + "start": { + "line": 267, + "column": 1 + }, + "end": { + "line": 267, + "column": 7 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5483, + "end": 5484, + "loc": { + "start": { + "line": 267, + "column": 7 + }, + "end": { + "line": 267, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 5484, + "end": 5489, + "loc": { + "start": { + "line": 267, + "column": 8 + }, + "end": { + "line": 267, + "column": 13 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5489, + "end": 5490, + "loc": { + "start": { + "line": 267, + "column": 13 + }, + "end": { + "line": 267, + "column": 14 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5491, + "end": 5492, + "loc": { + "start": { + "line": 267, + "column": 15 + }, + "end": { + "line": 267, + "column": 16 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 5495, + "end": 5497, + "loc": { + "start": { + "line": 268, + "column": 2 + }, + "end": { + "line": 268, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5498, + "end": 5499, + "loc": { + "start": { + "line": 268, + "column": 5 + }, + "end": { + "line": 268, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 5499, + "end": 5504, + "loc": { + "start": { + "line": 268, + "column": 6 + }, + "end": { + "line": 268, + "column": 11 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5504, + "end": 5505, + "loc": { + "start": { + "line": 268, + "column": 11 + }, + "end": { + "line": 268, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "iszero", + "start": 5505, + "end": 5511, + "loc": { + "start": { + "line": 268, + "column": 12 + }, + "end": { + "line": 268, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5511, + "end": 5512, + "loc": { + "start": { + "line": 268, + "column": 18 + }, + "end": { + "line": 268, + "column": 19 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5512, + "end": 5513, + "loc": { + "start": { + "line": 268, + "column": 19 + }, + "end": { + "line": 268, + "column": 20 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5513, + "end": 5514, + "loc": { + "start": { + "line": 268, + "column": 20 + }, + "end": { + "line": 268, + "column": 21 + } + } + }, + { + "type": { + "label": "throw", + "keyword": "throw", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "throw", + "start": 5515, + "end": 5520, + "loc": { + "start": { + "line": 268, + "column": 22 + }, + "end": { + "line": 268, + "column": 27 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 5521, + "end": 5524, + "loc": { + "start": { + "line": 268, + "column": 28 + }, + "end": { + "line": 268, + "column": 31 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ZeroDivisionError", + "start": 5525, + "end": 5542, + "loc": { + "start": { + "line": 268, + "column": 32 + }, + "end": { + "line": 268, + "column": 49 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5542, + "end": 5543, + "loc": { + "start": { + "line": 268, + "column": 49 + }, + "end": { + "line": 268, + "column": 50 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "Integer division by zero", + "start": 5543, + "end": 5569, + "loc": { + "start": { + "line": 268, + "column": 50 + }, + "end": { + "line": 268, + "column": 76 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5569, + "end": 5570, + "loc": { + "start": { + "line": 268, + "column": 76 + }, + "end": { + "line": 268, + "column": 77 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5570, + "end": 5571, + "loc": { + "start": { + "line": 268, + "column": 77 + }, + "end": { + "line": 268, + "column": 78 + } + } + }, + { + "type": "CommentLine", + "value": " Optimize", + "start": 5572, + "end": 5583, + "loc": { + "start": { + "line": 268, + "column": 79 + }, + "end": { + "line": 268, + "column": 90 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 5587, + "end": 5592, + "loc": { + "start": { + "line": 270, + "column": 2 + }, + "end": { + "line": 270, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "quotient_is_negative", + "start": 5593, + "end": 5613, + "loc": { + "start": { + "line": 270, + "column": 8 + }, + "end": { + "line": 270, + "column": 28 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 5614, + "end": 5615, + "loc": { + "start": { + "line": 270, + "column": 29 + }, + "end": { + "line": 270, + "column": 30 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 5616, + "end": 5620, + "loc": { + "start": { + "line": 270, + "column": 31 + }, + "end": { + "line": 270, + "column": 35 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5620, + "end": 5621, + "loc": { + "start": { + "line": 270, + "column": 35 + }, + "end": { + "line": 270, + "column": 36 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 5621, + "end": 5633, + "loc": { + "start": { + "line": 270, + "column": 36 + }, + "end": { + "line": 270, + "column": 48 + } + } + }, + { + "type": { + "label": "^", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 4, + "updateContext": null + }, + "value": "^", + "start": 5634, + "end": 5635, + "loc": { + "start": { + "line": 270, + "column": 49 + }, + "end": { + "line": 270, + "column": 50 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 5636, + "end": 5641, + "loc": { + "start": { + "line": 270, + "column": 51 + }, + "end": { + "line": 270, + "column": 56 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5641, + "end": 5642, + "loc": { + "start": { + "line": 270, + "column": 56 + }, + "end": { + "line": 270, + "column": 57 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 5642, + "end": 5654, + "loc": { + "start": { + "line": 270, + "column": 57 + }, + "end": { + "line": 270, + "column": 69 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5654, + "end": 5655, + "loc": { + "start": { + "line": 270, + "column": 69 + }, + "end": { + "line": 270, + "column": 70 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 5658, + "end": 5663, + "loc": { + "start": { + "line": 271, + "column": 2 + }, + "end": { + "line": 271, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 5664, + "end": 5665, + "loc": { + "start": { + "line": 271, + "column": 8 + }, + "end": { + "line": 271, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 5666, + "end": 5667, + "loc": { + "start": { + "line": 271, + "column": 10 + }, + "end": { + "line": 271, + "column": 11 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 5668, + "end": 5672, + "loc": { + "start": { + "line": 271, + "column": 12 + }, + "end": { + "line": 271, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5672, + "end": 5673, + "loc": { + "start": { + "line": 271, + "column": 16 + }, + "end": { + "line": 271, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 5673, + "end": 5678, + "loc": { + "start": { + "line": 271, + "column": 17 + }, + "end": { + "line": 271, + "column": 22 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5678, + "end": 5679, + "loc": { + "start": { + "line": 271, + "column": 22 + }, + "end": { + "line": 271, + "column": 23 + } + } + }, + { + "type": "CommentLine", + "value": " The underlying algorithm does not allow leading 0's so we trim them.", + "start": 5683, + "end": 5754, + "loc": { + "start": { + "line": 273, + "column": 2 + }, + "end": { + "line": 273, + "column": 73 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 5757, + "end": 5762, + "loc": { + "start": { + "line": 274, + "column": 2 + }, + "end": { + "line": 274, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "lj", + "start": 5763, + "end": 5765, + "loc": { + "start": { + "line": 274, + "column": 8 + }, + "end": { + "line": 274, + "column": 10 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 5766, + "end": 5767, + "loc": { + "start": { + "line": 274, + "column": 11 + }, + "end": { + "line": 274, + "column": 12 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 5768, + "end": 5772, + "loc": { + "start": { + "line": 274, + "column": 13 + }, + "end": { + "line": 274, + "column": 17 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5772, + "end": 5773, + "loc": { + "start": { + "line": 274, + "column": 17 + }, + "end": { + "line": 274, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 5773, + "end": 5779, + "loc": { + "start": { + "line": 274, + "column": 18 + }, + "end": { + "line": 274, + "column": 24 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5779, + "end": 5780, + "loc": { + "start": { + "line": 274, + "column": 24 + }, + "end": { + "line": 274, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 5780, + "end": 5786, + "loc": { + "start": { + "line": 274, + "column": 25 + }, + "end": { + "line": 274, + "column": 31 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5786, + "end": 5787, + "loc": { + "start": { + "line": 274, + "column": 31 + }, + "end": { + "line": 274, + "column": 32 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 5790, + "end": 5795, + "loc": { + "start": { + "line": 275, + "column": 2 + }, + "end": { + "line": 275, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "li", + "start": 5796, + "end": 5798, + "loc": { + "start": { + "line": 275, + "column": 8 + }, + "end": { + "line": 275, + "column": 10 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 5799, + "end": 5800, + "loc": { + "start": { + "line": 275, + "column": 11 + }, + "end": { + "line": 275, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_trim_positive", + "start": 5801, + "end": 5815, + "loc": { + "start": { + "line": 275, + "column": 13 + }, + "end": { + "line": 275, + "column": 27 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5815, + "end": 5816, + "loc": { + "start": { + "line": 275, + "column": 27 + }, + "end": { + "line": 275, + "column": 28 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 5816, + "end": 5820, + "loc": { + "start": { + "line": 275, + "column": 28 + }, + "end": { + "line": 275, + "column": 32 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5820, + "end": 5821, + "loc": { + "start": { + "line": 275, + "column": 32 + }, + "end": { + "line": 275, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 5821, + "end": 5827, + "loc": { + "start": { + "line": 275, + "column": 33 + }, + "end": { + "line": 275, + "column": 39 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5827, + "end": 5828, + "loc": { + "start": { + "line": 275, + "column": 39 + }, + "end": { + "line": 275, + "column": 40 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 5829, + "end": 5830, + "loc": { + "start": { + "line": 275, + "column": 41 + }, + "end": { + "line": 275, + "column": 42 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5830, + "end": 5831, + "loc": { + "start": { + "line": 275, + "column": 42 + }, + "end": { + "line": 275, + "column": 43 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "lj", + "start": 5832, + "end": 5834, + "loc": { + "start": { + "line": 275, + "column": 44 + }, + "end": { + "line": 275, + "column": 46 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5834, + "end": 5835, + "loc": { + "start": { + "line": 275, + "column": 46 + }, + "end": { + "line": 275, + "column": 47 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5835, + "end": 5836, + "loc": { + "start": { + "line": 275, + "column": 47 + }, + "end": { + "line": 275, + "column": 48 + } + } + }, + { + "type": "CommentLine", + "value": " Dividend is 0", + "start": 5840, + "end": 5856, + "loc": { + "start": { + "line": 277, + "column": 2 + }, + "end": { + "line": 277, + "column": 18 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 5859, + "end": 5861, + "loc": { + "start": { + "line": 278, + "column": 2 + }, + "end": { + "line": 278, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5862, + "end": 5863, + "loc": { + "start": { + "line": 278, + "column": 5 + }, + "end": { + "line": 278, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "li", + "start": 5863, + "end": 5865, + "loc": { + "start": { + "line": 278, + "column": 6 + }, + "end": { + "line": 278, + "column": 8 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": ">=", + "start": 5866, + "end": 5868, + "loc": { + "start": { + "line": 278, + "column": 9 + }, + "end": { + "line": 278, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "lj", + "start": 5869, + "end": 5871, + "loc": { + "start": { + "line": 278, + "column": 12 + }, + "end": { + "line": 278, + "column": 14 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5871, + "end": 5872, + "loc": { + "start": { + "line": 278, + "column": 14 + }, + "end": { + "line": 278, + "column": 15 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 5876, + "end": 5882, + "loc": { + "start": { + "line": 279, + "column": 3 + }, + "end": { + "line": 279, + "column": 9 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5883, + "end": 5884, + "loc": { + "start": { + "line": 279, + "column": 10 + }, + "end": { + "line": 279, + "column": 11 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 5884, + "end": 5887, + "loc": { + "start": { + "line": 279, + "column": 11 + }, + "end": { + "line": 279, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 5888, + "end": 5895, + "loc": { + "start": { + "line": 279, + "column": 15 + }, + "end": { + "line": 279, + "column": 22 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5895, + "end": 5896, + "loc": { + "start": { + "line": 279, + "column": 22 + }, + "end": { + "line": 279, + "column": 23 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 5896, + "end": 5900, + "loc": { + "start": { + "line": 279, + "column": 23 + }, + "end": { + "line": 279, + "column": 27 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5900, + "end": 5901, + "loc": { + "start": { + "line": 279, + "column": 27 + }, + "end": { + "line": 279, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 5901, + "end": 5906, + "loc": { + "start": { + "line": 279, + "column": 28 + }, + "end": { + "line": 279, + "column": 33 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5906, + "end": 5907, + "loc": { + "start": { + "line": 279, + "column": 33 + }, + "end": { + "line": 279, + "column": 34 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 5908, + "end": 5909, + "loc": { + "start": { + "line": 279, + "column": 35 + }, + "end": { + "line": 279, + "column": 36 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5909, + "end": 5910, + "loc": { + "start": { + "line": 279, + "column": 36 + }, + "end": { + "line": 279, + "column": 37 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5911, + "end": 5912, + "loc": { + "start": { + "line": 279, + "column": 38 + }, + "end": { + "line": 279, + "column": 39 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 5912, + "end": 5913, + "loc": { + "start": { + "line": 279, + "column": 39 + }, + "end": { + "line": 279, + "column": 40 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5913, + "end": 5914, + "loc": { + "start": { + "line": 279, + "column": 40 + }, + "end": { + "line": 279, + "column": 41 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5914, + "end": 5915, + "loc": { + "start": { + "line": 279, + "column": 41 + }, + "end": { + "line": 279, + "column": 42 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5915, + "end": 5916, + "loc": { + "start": { + "line": 279, + "column": 42 + }, + "end": { + "line": 279, + "column": 43 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 5917, + "end": 5920, + "loc": { + "start": { + "line": 279, + "column": 44 + }, + "end": { + "line": 279, + "column": 47 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 5921, + "end": 5928, + "loc": { + "start": { + "line": 279, + "column": 48 + }, + "end": { + "line": 279, + "column": 55 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5928, + "end": 5929, + "loc": { + "start": { + "line": 279, + "column": 55 + }, + "end": { + "line": 279, + "column": 56 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 5929, + "end": 5933, + "loc": { + "start": { + "line": 279, + "column": 56 + }, + "end": { + "line": 279, + "column": 60 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5933, + "end": 5934, + "loc": { + "start": { + "line": 279, + "column": 60 + }, + "end": { + "line": 279, + "column": 61 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 5934, + "end": 5939, + "loc": { + "start": { + "line": 279, + "column": 61 + }, + "end": { + "line": 279, + "column": 66 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5939, + "end": 5940, + "loc": { + "start": { + "line": 279, + "column": 66 + }, + "end": { + "line": 279, + "column": 67 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 5941, + "end": 5942, + "loc": { + "start": { + "line": 279, + "column": 68 + }, + "end": { + "line": 279, + "column": 69 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5942, + "end": 5943, + "loc": { + "start": { + "line": 279, + "column": 69 + }, + "end": { + "line": 279, + "column": 70 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5944, + "end": 5945, + "loc": { + "start": { + "line": 279, + "column": 71 + }, + "end": { + "line": 279, + "column": 72 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 5945, + "end": 5946, + "loc": { + "start": { + "line": 279, + "column": 72 + }, + "end": { + "line": 279, + "column": 73 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5946, + "end": 5947, + "loc": { + "start": { + "line": 279, + "column": 73 + }, + "end": { + "line": 279, + "column": 74 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5947, + "end": 5948, + "loc": { + "start": { + "line": 279, + "column": 74 + }, + "end": { + "line": 279, + "column": 75 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5948, + "end": 5949, + "loc": { + "start": { + "line": 279, + "column": 75 + }, + "end": { + "line": 279, + "column": 76 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5949, + "end": 5950, + "loc": { + "start": { + "line": 279, + "column": 76 + }, + "end": { + "line": 279, + "column": 77 + } + } + }, + { + "type": "CommentLine", + "value": " Dividend (& Remainder)", + "start": 5954, + "end": 5979, + "loc": { + "start": { + "line": 281, + "column": 2 + }, + "end": { + "line": 281, + "column": 27 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 5982, + "end": 5987, + "loc": { + "start": { + "line": 282, + "column": 2 + }, + "end": { + "line": 282, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "D", + "start": 5988, + "end": 5989, + "loc": { + "start": { + "line": 282, + "column": 8 + }, + "end": { + "line": 282, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 5990, + "end": 5991, + "loc": { + "start": { + "line": 282, + "column": 10 + }, + "end": { + "line": 282, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_alloc", + "start": 5992, + "end": 5998, + "loc": { + "start": { + "line": 282, + "column": 12 + }, + "end": { + "line": 282, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5998, + "end": 5999, + "loc": { + "start": { + "line": 282, + "column": 18 + }, + "end": { + "line": 282, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "lj", + "start": 5999, + "end": 6001, + "loc": { + "start": { + "line": 282, + "column": 19 + }, + "end": { + "line": 282, + "column": 21 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 6002, + "end": 6003, + "loc": { + "start": { + "line": 282, + "column": 22 + }, + "end": { + "line": 282, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "li", + "start": 6004, + "end": 6006, + "loc": { + "start": { + "line": 282, + "column": 24 + }, + "end": { + "line": 282, + "column": 26 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6006, + "end": 6007, + "loc": { + "start": { + "line": 282, + "column": 26 + }, + "end": { + "line": 282, + "column": 27 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6007, + "end": 6008, + "loc": { + "start": { + "line": 282, + "column": 27 + }, + "end": { + "line": 282, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_copy", + "start": 6011, + "end": 6016, + "loc": { + "start": { + "line": 283, + "column": 2 + }, + "end": { + "line": 283, + "column": 7 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6016, + "end": 6017, + "loc": { + "start": { + "line": 283, + "column": 7 + }, + "end": { + "line": 283, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 6017, + "end": 6021, + "loc": { + "start": { + "line": 283, + "column": 8 + }, + "end": { + "line": 283, + "column": 12 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6021, + "end": 6022, + "loc": { + "start": { + "line": 283, + "column": 12 + }, + "end": { + "line": 283, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 6022, + "end": 6028, + "loc": { + "start": { + "line": 283, + "column": 13 + }, + "end": { + "line": 283, + "column": 19 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6028, + "end": 6029, + "loc": { + "start": { + "line": 283, + "column": 19 + }, + "end": { + "line": 283, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "li", + "start": 6030, + "end": 6032, + "loc": { + "start": { + "line": 283, + "column": 21 + }, + "end": { + "line": 283, + "column": 23 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6032, + "end": 6033, + "loc": { + "start": { + "line": 283, + "column": 23 + }, + "end": { + "line": 283, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "lj", + "start": 6034, + "end": 6036, + "loc": { + "start": { + "line": 283, + "column": 25 + }, + "end": { + "line": 283, + "column": 27 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6036, + "end": 6037, + "loc": { + "start": { + "line": 283, + "column": 27 + }, + "end": { + "line": 283, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "D", + "start": 6038, + "end": 6039, + "loc": { + "start": { + "line": 283, + "column": 29 + }, + "end": { + "line": 283, + "column": 30 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6039, + "end": 6040, + "loc": { + "start": { + "line": 283, + "column": 30 + }, + "end": { + "line": 283, + "column": 31 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 6041, + "end": 6042, + "loc": { + "start": { + "line": 283, + "column": 32 + }, + "end": { + "line": 283, + "column": 33 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6042, + "end": 6043, + "loc": { + "start": { + "line": 283, + "column": 33 + }, + "end": { + "line": 283, + "column": 34 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6043, + "end": 6044, + "loc": { + "start": { + "line": 283, + "column": 34 + }, + "end": { + "line": 283, + "column": 35 + } + } + }, + { + "type": "CommentLine", + "value": " Divisor", + "start": 6048, + "end": 6058, + "loc": { + "start": { + "line": 285, + "column": 2 + }, + "end": { + "line": 285, + "column": 12 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 6061, + "end": 6066, + "loc": { + "start": { + "line": 286, + "column": 2 + }, + "end": { + "line": 286, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "d", + "start": 6067, + "end": 6068, + "loc": { + "start": { + "line": 286, + "column": 8 + }, + "end": { + "line": 286, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 6069, + "end": 6070, + "loc": { + "start": { + "line": 286, + "column": 10 + }, + "end": { + "line": 286, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 6071, + "end": 6076, + "loc": { + "start": { + "line": 286, + "column": 12 + }, + "end": { + "line": 286, + "column": 17 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6076, + "end": 6077, + "loc": { + "start": { + "line": 286, + "column": 17 + }, + "end": { + "line": 286, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs_in_base", + "start": 6077, + "end": 6091, + "loc": { + "start": { + "line": 286, + "column": 18 + }, + "end": { + "line": 286, + "column": 32 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6091, + "end": 6092, + "loc": { + "start": { + "line": 286, + "column": 32 + }, + "end": { + "line": 286, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 6092, + "end": 6093, + "loc": { + "start": { + "line": 286, + "column": 33 + }, + "end": { + "line": 286, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6093, + "end": 6094, + "loc": { + "start": { + "line": 286, + "column": 34 + }, + "end": { + "line": 286, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6094, + "end": 6095, + "loc": { + "start": { + "line": 286, + "column": 35 + }, + "end": { + "line": 286, + "column": 36 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 6098, + "end": 6103, + "loc": { + "start": { + "line": 287, + "column": 2 + }, + "end": { + "line": 287, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "dj", + "start": 6104, + "end": 6106, + "loc": { + "start": { + "line": 287, + "column": 8 + }, + "end": { + "line": 287, + "column": 10 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 6107, + "end": 6108, + "loc": { + "start": { + "line": 287, + "column": 11 + }, + "end": { + "line": 287, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "d", + "start": 6109, + "end": 6110, + "loc": { + "start": { + "line": 287, + "column": 13 + }, + "end": { + "line": 287, + "column": 14 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6110, + "end": 6111, + "loc": { + "start": { + "line": 287, + "column": 14 + }, + "end": { + "line": 287, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 6111, + "end": 6117, + "loc": { + "start": { + "line": 287, + "column": 15 + }, + "end": { + "line": 287, + "column": 21 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6117, + "end": 6118, + "loc": { + "start": { + "line": 287, + "column": 21 + }, + "end": { + "line": 287, + "column": 22 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 6121, + "end": 6126, + "loc": { + "start": { + "line": 288, + "column": 2 + }, + "end": { + "line": 288, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "di", + "start": 6127, + "end": 6129, + "loc": { + "start": { + "line": 288, + "column": 8 + }, + "end": { + "line": 288, + "column": 10 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 6130, + "end": 6131, + "loc": { + "start": { + "line": 288, + "column": 11 + }, + "end": { + "line": 288, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_trim_positive", + "start": 6132, + "end": 6146, + "loc": { + "start": { + "line": 288, + "column": 13 + }, + "end": { + "line": 288, + "column": 27 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6146, + "end": 6147, + "loc": { + "start": { + "line": 288, + "column": 27 + }, + "end": { + "line": 288, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "d", + "start": 6147, + "end": 6148, + "loc": { + "start": { + "line": 288, + "column": 28 + }, + "end": { + "line": 288, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6148, + "end": 6149, + "loc": { + "start": { + "line": 288, + "column": 29 + }, + "end": { + "line": 288, + "column": 30 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 6150, + "end": 6151, + "loc": { + "start": { + "line": 288, + "column": 31 + }, + "end": { + "line": 288, + "column": 32 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6151, + "end": 6152, + "loc": { + "start": { + "line": 288, + "column": 32 + }, + "end": { + "line": 288, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "dj", + "start": 6153, + "end": 6155, + "loc": { + "start": { + "line": 288, + "column": 34 + }, + "end": { + "line": 288, + "column": 36 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6155, + "end": 6156, + "loc": { + "start": { + "line": 288, + "column": 36 + }, + "end": { + "line": 288, + "column": 37 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6156, + "end": 6157, + "loc": { + "start": { + "line": 288, + "column": 37 + }, + "end": { + "line": 288, + "column": 38 + } + } + }, + { + "type": "CommentLine", + "value": " Di < dj because d != 0", + "start": 6158, + "end": 6183, + "loc": { + "start": { + "line": 288, + "column": 39 + }, + "end": { + "line": 288, + "column": 64 + } + } + }, + { + "type": "CommentLine", + "value": " Quotient", + "start": 6187, + "end": 6198, + "loc": { + "start": { + "line": 290, + "column": 2 + }, + "end": { + "line": 290, + "column": 13 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 6201, + "end": 6206, + "loc": { + "start": { + "line": 291, + "column": 2 + }, + "end": { + "line": 291, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "q", + "start": 6207, + "end": 6208, + "loc": { + "start": { + "line": 291, + "column": 8 + }, + "end": { + "line": 291, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 6209, + "end": 6210, + "loc": { + "start": { + "line": 291, + "column": 10 + }, + "end": { + "line": 291, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_zeros", + "start": 6211, + "end": 6217, + "loc": { + "start": { + "line": 291, + "column": 12 + }, + "end": { + "line": 291, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6217, + "end": 6218, + "loc": { + "start": { + "line": 291, + "column": 18 + }, + "end": { + "line": 291, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "D", + "start": 6218, + "end": 6219, + "loc": { + "start": { + "line": 291, + "column": 19 + }, + "end": { + "line": 291, + "column": 20 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6219, + "end": 6220, + "loc": { + "start": { + "line": 291, + "column": 20 + }, + "end": { + "line": 291, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 6220, + "end": 6226, + "loc": { + "start": { + "line": 291, + "column": 21 + }, + "end": { + "line": 291, + "column": 27 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6226, + "end": 6227, + "loc": { + "start": { + "line": 291, + "column": 27 + }, + "end": { + "line": 291, + "column": 28 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6227, + "end": 6228, + "loc": { + "start": { + "line": 291, + "column": 28 + }, + "end": { + "line": 291, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_idivmod", + "start": 6232, + "end": 6240, + "loc": { + "start": { + "line": 293, + "column": 2 + }, + "end": { + "line": 293, + "column": 10 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6240, + "end": 6241, + "loc": { + "start": { + "line": 293, + "column": 10 + }, + "end": { + "line": 293, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 6241, + "end": 6242, + "loc": { + "start": { + "line": 293, + "column": 11 + }, + "end": { + "line": 293, + "column": 12 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6242, + "end": 6243, + "loc": { + "start": { + "line": 293, + "column": 12 + }, + "end": { + "line": 293, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "D", + "start": 6244, + "end": 6245, + "loc": { + "start": { + "line": 293, + "column": 14 + }, + "end": { + "line": 293, + "column": 15 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6245, + "end": 6246, + "loc": { + "start": { + "line": 293, + "column": 15 + }, + "end": { + "line": 293, + "column": 16 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 6247, + "end": 6248, + "loc": { + "start": { + "line": 293, + "column": 17 + }, + "end": { + "line": 293, + "column": 18 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6248, + "end": 6249, + "loc": { + "start": { + "line": 293, + "column": 18 + }, + "end": { + "line": 293, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "D", + "start": 6250, + "end": 6251, + "loc": { + "start": { + "line": 293, + "column": 20 + }, + "end": { + "line": 293, + "column": 21 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6251, + "end": 6252, + "loc": { + "start": { + "line": 293, + "column": 21 + }, + "end": { + "line": 293, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 6252, + "end": 6258, + "loc": { + "start": { + "line": 293, + "column": 22 + }, + "end": { + "line": 293, + "column": 28 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6258, + "end": 6259, + "loc": { + "start": { + "line": 293, + "column": 28 + }, + "end": { + "line": 293, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "d", + "start": 6260, + "end": 6261, + "loc": { + "start": { + "line": 293, + "column": 30 + }, + "end": { + "line": 293, + "column": 31 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6261, + "end": 6262, + "loc": { + "start": { + "line": 293, + "column": 31 + }, + "end": { + "line": 293, + "column": 32 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "di", + "start": 6263, + "end": 6265, + "loc": { + "start": { + "line": 293, + "column": 33 + }, + "end": { + "line": 293, + "column": 35 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6265, + "end": 6266, + "loc": { + "start": { + "line": 293, + "column": 35 + }, + "end": { + "line": 293, + "column": 36 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "dj", + "start": 6267, + "end": 6269, + "loc": { + "start": { + "line": 293, + "column": 37 + }, + "end": { + "line": 293, + "column": 39 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6269, + "end": 6270, + "loc": { + "start": { + "line": 293, + "column": 39 + }, + "end": { + "line": 293, + "column": 40 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "q", + "start": 6271, + "end": 6272, + "loc": { + "start": { + "line": 293, + "column": 41 + }, + "end": { + "line": 293, + "column": 42 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6272, + "end": 6273, + "loc": { + "start": { + "line": 293, + "column": 42 + }, + "end": { + "line": 293, + "column": 43 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 6274, + "end": 6275, + "loc": { + "start": { + "line": 293, + "column": 44 + }, + "end": { + "line": 293, + "column": 45 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6275, + "end": 6276, + "loc": { + "start": { + "line": 293, + "column": 45 + }, + "end": { + "line": 293, + "column": 46 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "q", + "start": 6277, + "end": 6278, + "loc": { + "start": { + "line": 293, + "column": 47 + }, + "end": { + "line": 293, + "column": 48 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6278, + "end": 6279, + "loc": { + "start": { + "line": 293, + "column": 48 + }, + "end": { + "line": 293, + "column": 49 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 6279, + "end": 6285, + "loc": { + "start": { + "line": 293, + "column": 49 + }, + "end": { + "line": 293, + "column": 55 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6285, + "end": 6286, + "loc": { + "start": { + "line": 293, + "column": 55 + }, + "end": { + "line": 293, + "column": 56 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6286, + "end": 6287, + "loc": { + "start": { + "line": 293, + "column": 56 + }, + "end": { + "line": 293, + "column": 57 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 6291, + "end": 6296, + "loc": { + "start": { + "line": 295, + "column": 2 + }, + "end": { + "line": 295, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Q", + "start": 6297, + "end": 6298, + "loc": { + "start": { + "line": 295, + "column": 8 + }, + "end": { + "line": 295, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 6299, + "end": 6300, + "loc": { + "start": { + "line": 295, + "column": 10 + }, + "end": { + "line": 295, + "column": 11 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 6301, + "end": 6304, + "loc": { + "start": { + "line": 295, + "column": 12 + }, + "end": { + "line": 295, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 6305, + "end": 6312, + "loc": { + "start": { + "line": 295, + "column": 16 + }, + "end": { + "line": 295, + "column": 23 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6312, + "end": 6313, + "loc": { + "start": { + "line": 295, + "column": 23 + }, + "end": { + "line": 295, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 6313, + "end": 6314, + "loc": { + "start": { + "line": 295, + "column": 24 + }, + "end": { + "line": 295, + "column": 25 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6314, + "end": 6315, + "loc": { + "start": { + "line": 295, + "column": 25 + }, + "end": { + "line": 295, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "quotient_is_negative", + "start": 6316, + "end": 6336, + "loc": { + "start": { + "line": 295, + "column": 27 + }, + "end": { + "line": 295, + "column": 47 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6336, + "end": 6337, + "loc": { + "start": { + "line": 295, + "column": 47 + }, + "end": { + "line": 295, + "column": 48 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "q", + "start": 6338, + "end": 6339, + "loc": { + "start": { + "line": 295, + "column": 49 + }, + "end": { + "line": 295, + "column": 50 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6339, + "end": 6340, + "loc": { + "start": { + "line": 295, + "column": 50 + }, + "end": { + "line": 295, + "column": 51 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6340, + "end": 6341, + "loc": { + "start": { + "line": 295, + "column": 51 + }, + "end": { + "line": 295, + "column": 52 + } + } + }, + { + "type": "CommentLine", + "value": " Quotient", + "start": 6342, + "end": 6353, + "loc": { + "start": { + "line": 295, + "column": 53 + }, + "end": { + "line": 295, + "column": 64 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 6356, + "end": 6361, + "loc": { + "start": { + "line": 296, + "column": 2 + }, + "end": { + "line": 296, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "R", + "start": 6362, + "end": 6363, + "loc": { + "start": { + "line": 296, + "column": 8 + }, + "end": { + "line": 296, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 6364, + "end": 6365, + "loc": { + "start": { + "line": 296, + "column": 10 + }, + "end": { + "line": 296, + "column": 11 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 6366, + "end": 6369, + "loc": { + "start": { + "line": 296, + "column": 12 + }, + "end": { + "line": 296, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 6370, + "end": 6377, + "loc": { + "start": { + "line": 296, + "column": 16 + }, + "end": { + "line": 296, + "column": 23 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6377, + "end": 6378, + "loc": { + "start": { + "line": 296, + "column": 23 + }, + "end": { + "line": 296, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 6378, + "end": 6379, + "loc": { + "start": { + "line": 296, + "column": 24 + }, + "end": { + "line": 296, + "column": 25 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6379, + "end": 6380, + "loc": { + "start": { + "line": 296, + "column": 25 + }, + "end": { + "line": 296, + "column": 26 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 6381, + "end": 6382, + "loc": { + "start": { + "line": 296, + "column": 27 + }, + "end": { + "line": 296, + "column": 28 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6382, + "end": 6383, + "loc": { + "start": { + "line": 296, + "column": 28 + }, + "end": { + "line": 296, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "D", + "start": 6384, + "end": 6385, + "loc": { + "start": { + "line": 296, + "column": 30 + }, + "end": { + "line": 296, + "column": 31 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6385, + "end": 6386, + "loc": { + "start": { + "line": 296, + "column": 31 + }, + "end": { + "line": 296, + "column": 32 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6386, + "end": 6387, + "loc": { + "start": { + "line": 296, + "column": 32 + }, + "end": { + "line": 296, + "column": 33 + } + } + }, + { + "type": "CommentLine", + "value": " Remainder", + "start": 6388, + "end": 6400, + "loc": { + "start": { + "line": 296, + "column": 34 + }, + "end": { + "line": 296, + "column": 46 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 6404, + "end": 6406, + "loc": { + "start": { + "line": 298, + "column": 2 + }, + "end": { + "line": 298, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6407, + "end": 6408, + "loc": { + "start": { + "line": 298, + "column": 5 + }, + "end": { + "line": 298, + "column": 6 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6408, + "end": 6409, + "loc": { + "start": { + "line": 298, + "column": 6 + }, + "end": { + "line": 298, + "column": 7 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 6409, + "end": 6413, + "loc": { + "start": { + "line": 298, + "column": 7 + }, + "end": { + "line": 298, + "column": 11 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6413, + "end": 6414, + "loc": { + "start": { + "line": 298, + "column": 11 + }, + "end": { + "line": 298, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 6414, + "end": 6426, + "loc": { + "start": { + "line": 298, + "column": 12 + }, + "end": { + "line": 298, + "column": 24 + } + } + }, + { + "type": { + "label": "||", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 1, + "updateContext": null + }, + "value": "||", + "start": 6427, + "end": 6429, + "loc": { + "start": { + "line": 298, + "column": 25 + }, + "end": { + "line": 298, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 6430, + "end": 6435, + "loc": { + "start": { + "line": 298, + "column": 28 + }, + "end": { + "line": 298, + "column": 33 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6435, + "end": 6436, + "loc": { + "start": { + "line": 298, + "column": 33 + }, + "end": { + "line": 298, + "column": 34 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 6436, + "end": 6448, + "loc": { + "start": { + "line": 298, + "column": 34 + }, + "end": { + "line": 298, + "column": 46 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6448, + "end": 6449, + "loc": { + "start": { + "line": 298, + "column": 46 + }, + "end": { + "line": 298, + "column": 47 + } + } + }, + { + "type": { + "label": "&&", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 2, + "updateContext": null + }, + "value": "&&", + "start": 6450, + "end": 6452, + "loc": { + "start": { + "line": 298, + "column": 48 + }, + "end": { + "line": 298, + "column": 50 + } + } + }, + { + "type": { + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "!", + "start": 6453, + "end": 6454, + "loc": { + "start": { + "line": 298, + "column": 51 + }, + "end": { + "line": 298, + "column": 52 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "jz", + "start": 6454, + "end": 6456, + "loc": { + "start": { + "line": 298, + "column": 52 + }, + "end": { + "line": 298, + "column": 54 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6456, + "end": 6457, + "loc": { + "start": { + "line": 298, + "column": 54 + }, + "end": { + "line": 298, + "column": 55 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "D", + "start": 6457, + "end": 6458, + "loc": { + "start": { + "line": 298, + "column": 55 + }, + "end": { + "line": 298, + "column": 56 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6458, + "end": 6459, + "loc": { + "start": { + "line": 298, + "column": 56 + }, + "end": { + "line": 298, + "column": 57 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 6460, + "end": 6461, + "loc": { + "start": { + "line": 298, + "column": 58 + }, + "end": { + "line": 298, + "column": 59 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6461, + "end": 6462, + "loc": { + "start": { + "line": 298, + "column": 59 + }, + "end": { + "line": 298, + "column": 60 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "D", + "start": 6463, + "end": 6464, + "loc": { + "start": { + "line": 298, + "column": 61 + }, + "end": { + "line": 298, + "column": 62 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6464, + "end": 6465, + "loc": { + "start": { + "line": 298, + "column": 62 + }, + "end": { + "line": 298, + "column": 63 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 6465, + "end": 6471, + "loc": { + "start": { + "line": 298, + "column": 63 + }, + "end": { + "line": 298, + "column": 69 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6471, + "end": 6472, + "loc": { + "start": { + "line": 298, + "column": 69 + }, + "end": { + "line": 298, + "column": 70 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6472, + "end": 6473, + "loc": { + "start": { + "line": 298, + "column": 70 + }, + "end": { + "line": 298, + "column": 71 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6474, + "end": 6475, + "loc": { + "start": { + "line": 298, + "column": 72 + }, + "end": { + "line": 298, + "column": 73 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 6479, + "end": 6481, + "loc": { + "start": { + "line": 299, + "column": 3 + }, + "end": { + "line": 299, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6482, + "end": 6483, + "loc": { + "start": { + "line": 299, + "column": 6 + }, + "end": { + "line": 299, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 6483, + "end": 6488, + "loc": { + "start": { + "line": 299, + "column": 7 + }, + "end": { + "line": 299, + "column": 12 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6488, + "end": 6489, + "loc": { + "start": { + "line": 299, + "column": 12 + }, + "end": { + "line": 299, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 6489, + "end": 6501, + "loc": { + "start": { + "line": 299, + "column": 13 + }, + "end": { + "line": 299, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6501, + "end": 6502, + "loc": { + "start": { + "line": 299, + "column": 25 + }, + "end": { + "line": 299, + "column": 26 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6503, + "end": 6504, + "loc": { + "start": { + "line": 299, + "column": 27 + }, + "end": { + "line": 299, + "column": 28 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 6509, + "end": 6511, + "loc": { + "start": { + "line": 300, + "column": 4 + }, + "end": { + "line": 300, + "column": 6 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6512, + "end": 6513, + "loc": { + "start": { + "line": 300, + "column": 7 + }, + "end": { + "line": 300, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 6513, + "end": 6517, + "loc": { + "start": { + "line": 300, + "column": 8 + }, + "end": { + "line": 300, + "column": 12 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6517, + "end": 6518, + "loc": { + "start": { + "line": 300, + "column": 12 + }, + "end": { + "line": 300, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 6518, + "end": 6530, + "loc": { + "start": { + "line": 300, + "column": 13 + }, + "end": { + "line": 300, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6530, + "end": 6531, + "loc": { + "start": { + "line": 300, + "column": 25 + }, + "end": { + "line": 300, + "column": 26 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6532, + "end": 6533, + "loc": { + "start": { + "line": 300, + "column": 27 + }, + "end": { + "line": 300, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "R", + "start": 6539, + "end": 6540, + "loc": { + "start": { + "line": 301, + "column": 5 + }, + "end": { + "line": 301, + "column": 6 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6540, + "end": 6541, + "loc": { + "start": { + "line": 301, + "column": 6 + }, + "end": { + "line": 301, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "negate", + "start": 6541, + "end": 6547, + "loc": { + "start": { + "line": 301, + "column": 7 + }, + "end": { + "line": 301, + "column": 13 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6547, + "end": 6548, + "loc": { + "start": { + "line": 301, + "column": 13 + }, + "end": { + "line": 301, + "column": 14 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6548, + "end": 6549, + "loc": { + "start": { + "line": 301, + "column": 14 + }, + "end": { + "line": 301, + "column": 15 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6549, + "end": 6550, + "loc": { + "start": { + "line": 301, + "column": 15 + }, + "end": { + "line": 301, + "column": 16 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize", + "start": 6551, + "end": 6567, + "loc": { + "start": { + "line": 301, + "column": 17 + }, + "end": { + "line": 301, + "column": 33 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6572, + "end": 6573, + "loc": { + "start": { + "line": 302, + "column": 4 + }, + "end": { + "line": 302, + "column": 5 + } + } + }, + { + "type": { + "label": "else", + "keyword": "else", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "else", + "start": 6574, + "end": 6578, + "loc": { + "start": { + "line": 302, + "column": 6 + }, + "end": { + "line": 302, + "column": 10 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6579, + "end": 6580, + "loc": { + "start": { + "line": 302, + "column": 11 + }, + "end": { + "line": 302, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "increment", + "start": 6586, + "end": 6595, + "loc": { + "start": { + "line": 303, + "column": 5 + }, + "end": { + "line": 303, + "column": 14 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6595, + "end": 6596, + "loc": { + "start": { + "line": 303, + "column": 14 + }, + "end": { + "line": 303, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 6596, + "end": 6597, + "loc": { + "start": { + "line": 303, + "column": 15 + }, + "end": { + "line": 303, + "column": 16 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6597, + "end": 6598, + "loc": { + "start": { + "line": 303, + "column": 16 + }, + "end": { + "line": 303, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "q", + "start": 6599, + "end": 6600, + "loc": { + "start": { + "line": 303, + "column": 18 + }, + "end": { + "line": 303, + "column": 19 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6600, + "end": 6601, + "loc": { + "start": { + "line": 303, + "column": 19 + }, + "end": { + "line": 303, + "column": 20 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 6602, + "end": 6603, + "loc": { + "start": { + "line": 303, + "column": 21 + }, + "end": { + "line": 303, + "column": 22 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6603, + "end": 6604, + "loc": { + "start": { + "line": 303, + "column": 22 + }, + "end": { + "line": 303, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "q", + "start": 6605, + "end": 6606, + "loc": { + "start": { + "line": 303, + "column": 24 + }, + "end": { + "line": 303, + "column": 25 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6606, + "end": 6607, + "loc": { + "start": { + "line": 303, + "column": 25 + }, + "end": { + "line": 303, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 6607, + "end": 6613, + "loc": { + "start": { + "line": 303, + "column": 26 + }, + "end": { + "line": 303, + "column": 32 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6613, + "end": 6614, + "loc": { + "start": { + "line": 303, + "column": 32 + }, + "end": { + "line": 303, + "column": 33 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6614, + "end": 6615, + "loc": { + "start": { + "line": 303, + "column": 33 + }, + "end": { + "line": 303, + "column": 34 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "R", + "start": 6621, + "end": 6622, + "loc": { + "start": { + "line": 304, + "column": 5 + }, + "end": { + "line": 304, + "column": 6 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6622, + "end": 6623, + "loc": { + "start": { + "line": 304, + "column": 6 + }, + "end": { + "line": 304, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "iadd", + "start": 6623, + "end": 6627, + "loc": { + "start": { + "line": 304, + "column": 7 + }, + "end": { + "line": 304, + "column": 11 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6627, + "end": 6628, + "loc": { + "start": { + "line": 304, + "column": 11 + }, + "end": { + "line": 304, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 6628, + "end": 6633, + "loc": { + "start": { + "line": 304, + "column": 12 + }, + "end": { + "line": 304, + "column": 17 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6633, + "end": 6634, + "loc": { + "start": { + "line": 304, + "column": 17 + }, + "end": { + "line": 304, + "column": 18 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6634, + "end": 6635, + "loc": { + "start": { + "line": 304, + "column": 18 + }, + "end": { + "line": 304, + "column": 19 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize", + "start": 6636, + "end": 6652, + "loc": { + "start": { + "line": 304, + "column": 20 + }, + "end": { + "line": 304, + "column": 36 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6657, + "end": 6658, + "loc": { + "start": { + "line": 305, + "column": 4 + }, + "end": { + "line": 305, + "column": 5 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6662, + "end": 6663, + "loc": { + "start": { + "line": 306, + "column": 3 + }, + "end": { + "line": 306, + "column": 4 + } + } + }, + { + "type": { + "label": "else", + "keyword": "else", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "else", + "start": 6664, + "end": 6668, + "loc": { + "start": { + "line": 306, + "column": 5 + }, + "end": { + "line": 306, + "column": 9 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6669, + "end": 6670, + "loc": { + "start": { + "line": 306, + "column": 10 + }, + "end": { + "line": 306, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "increment", + "start": 6675, + "end": 6684, + "loc": { + "start": { + "line": 307, + "column": 4 + }, + "end": { + "line": 307, + "column": 13 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6684, + "end": 6685, + "loc": { + "start": { + "line": 307, + "column": 13 + }, + "end": { + "line": 307, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 6685, + "end": 6686, + "loc": { + "start": { + "line": 307, + "column": 14 + }, + "end": { + "line": 307, + "column": 15 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6686, + "end": 6687, + "loc": { + "start": { + "line": 307, + "column": 15 + }, + "end": { + "line": 307, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "q", + "start": 6688, + "end": 6689, + "loc": { + "start": { + "line": 307, + "column": 17 + }, + "end": { + "line": 307, + "column": 18 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6689, + "end": 6690, + "loc": { + "start": { + "line": 307, + "column": 18 + }, + "end": { + "line": 307, + "column": 19 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 6691, + "end": 6692, + "loc": { + "start": { + "line": 307, + "column": 20 + }, + "end": { + "line": 307, + "column": 21 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6692, + "end": 6693, + "loc": { + "start": { + "line": 307, + "column": 21 + }, + "end": { + "line": 307, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "q", + "start": 6694, + "end": 6695, + "loc": { + "start": { + "line": 307, + "column": 23 + }, + "end": { + "line": 307, + "column": 24 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6695, + "end": 6696, + "loc": { + "start": { + "line": 307, + "column": 24 + }, + "end": { + "line": 307, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 6696, + "end": 6702, + "loc": { + "start": { + "line": 307, + "column": 25 + }, + "end": { + "line": 307, + "column": 31 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6702, + "end": 6703, + "loc": { + "start": { + "line": 307, + "column": 31 + }, + "end": { + "line": 307, + "column": 32 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6703, + "end": 6704, + "loc": { + "start": { + "line": 307, + "column": 32 + }, + "end": { + "line": 307, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "R", + "start": 6709, + "end": 6710, + "loc": { + "start": { + "line": 308, + "column": 4 + }, + "end": { + "line": 308, + "column": 5 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6710, + "end": 6711, + "loc": { + "start": { + "line": 308, + "column": 5 + }, + "end": { + "line": 308, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "negate", + "start": 6711, + "end": 6717, + "loc": { + "start": { + "line": 308, + "column": 6 + }, + "end": { + "line": 308, + "column": 12 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6717, + "end": 6718, + "loc": { + "start": { + "line": 308, + "column": 12 + }, + "end": { + "line": 308, + "column": 13 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6718, + "end": 6719, + "loc": { + "start": { + "line": 308, + "column": 13 + }, + "end": { + "line": 308, + "column": 14 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6719, + "end": 6720, + "loc": { + "start": { + "line": 308, + "column": 14 + }, + "end": { + "line": 308, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "iadd", + "start": 6720, + "end": 6724, + "loc": { + "start": { + "line": 308, + "column": 15 + }, + "end": { + "line": 308, + "column": 19 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6724, + "end": 6725, + "loc": { + "start": { + "line": 308, + "column": 19 + }, + "end": { + "line": 308, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 6725, + "end": 6730, + "loc": { + "start": { + "line": 308, + "column": 20 + }, + "end": { + "line": 308, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6730, + "end": 6731, + "loc": { + "start": { + "line": 308, + "column": 25 + }, + "end": { + "line": 308, + "column": 26 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6731, + "end": 6732, + "loc": { + "start": { + "line": 308, + "column": 26 + }, + "end": { + "line": 308, + "column": 27 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize", + "start": 6733, + "end": 6749, + "loc": { + "start": { + "line": 308, + "column": 28 + }, + "end": { + "line": 308, + "column": 44 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6753, + "end": 6754, + "loc": { + "start": { + "line": 309, + "column": 3 + }, + "end": { + "line": 309, + "column": 4 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6757, + "end": 6758, + "loc": { + "start": { + "line": 310, + "column": 2 + }, + "end": { + "line": 310, + "column": 3 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 6762, + "end": 6768, + "loc": { + "start": { + "line": 312, + "column": 2 + }, + "end": { + "line": 312, + "column": 8 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6769, + "end": 6770, + "loc": { + "start": { + "line": 312, + "column": 9 + }, + "end": { + "line": 312, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Q", + "start": 6770, + "end": 6771, + "loc": { + "start": { + "line": 312, + "column": 10 + }, + "end": { + "line": 312, + "column": 11 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6771, + "end": 6772, + "loc": { + "start": { + "line": 312, + "column": 11 + }, + "end": { + "line": 312, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "R", + "start": 6773, + "end": 6774, + "loc": { + "start": { + "line": 312, + "column": 13 + }, + "end": { + "line": 312, + "column": 14 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6774, + "end": 6775, + "loc": { + "start": { + "line": 312, + "column": 14 + }, + "end": { + "line": 312, + "column": 15 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6775, + "end": 6776, + "loc": { + "start": { + "line": 312, + "column": 15 + }, + "end": { + "line": 312, + "column": 16 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6778, + "end": 6779, + "loc": { + "start": { + "line": 313, + "column": 1 + }, + "end": { + "line": 313, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "idivmod", + "start": 6782, + "end": 6789, + "loc": { + "start": { + "line": 315, + "column": 1 + }, + "end": { + "line": 315, + "column": 8 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6789, + "end": 6790, + "loc": { + "start": { + "line": 315, + "column": 8 + }, + "end": { + "line": 315, + "column": 9 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 6790, + "end": 6795, + "loc": { + "start": { + "line": 315, + "column": 9 + }, + "end": { + "line": 315, + "column": 14 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6795, + "end": 6796, + "loc": { + "start": { + "line": 315, + "column": 14 + }, + "end": { + "line": 315, + "column": 15 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6797, + "end": 6798, + "loc": { + "start": { + "line": 315, + "column": 16 + }, + "end": { + "line": 315, + "column": 17 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 6801, + "end": 6850, + "loc": { + "start": { + "line": 316, + "column": 2 + }, + "end": { + "line": 316, + "column": 51 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 6853, + "end": 6858, + "loc": { + "start": { + "line": 317, + "column": 2 + }, + "end": { + "line": 317, + "column": 7 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6859, + "end": 6860, + "loc": { + "start": { + "line": 317, + "column": 8 + }, + "end": { + "line": 317, + "column": 9 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "q", + "start": 6860, + "end": 6861, + "loc": { + "start": { + "line": 317, + "column": 9 + }, + "end": { + "line": 317, + "column": 10 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6861, + "end": 6862, + "loc": { + "start": { + "line": 317, + "column": 10 + }, + "end": { + "line": 317, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 6863, + "end": 6864, + "loc": { + "start": { + "line": 317, + "column": 12 + }, + "end": { + "line": 317, + "column": 13 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6864, + "end": 6865, + "loc": { + "start": { + "line": 317, + "column": 13 + }, + "end": { + "line": 317, + "column": 14 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 6866, + "end": 6867, + "loc": { + "start": { + "line": 317, + "column": 15 + }, + "end": { + "line": 317, + "column": 16 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 6868, + "end": 6872, + "loc": { + "start": { + "line": 317, + "column": 17 + }, + "end": { + "line": 317, + "column": 21 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6872, + "end": 6873, + "loc": { + "start": { + "line": 317, + "column": 21 + }, + "end": { + "line": 317, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "divmod", + "start": 6873, + "end": 6879, + "loc": { + "start": { + "line": 317, + "column": 22 + }, + "end": { + "line": 317, + "column": 28 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6879, + "end": 6880, + "loc": { + "start": { + "line": 317, + "column": 28 + }, + "end": { + "line": 317, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 6880, + "end": 6885, + "loc": { + "start": { + "line": 317, + "column": 29 + }, + "end": { + "line": 317, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6885, + "end": 6886, + "loc": { + "start": { + "line": 317, + "column": 34 + }, + "end": { + "line": 317, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6886, + "end": 6887, + "loc": { + "start": { + "line": 317, + "column": 35 + }, + "end": { + "line": 317, + "column": 36 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 6890, + "end": 6896, + "loc": { + "start": { + "line": 318, + "column": 2 + }, + "end": { + "line": 318, + "column": 8 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6897, + "end": 6898, + "loc": { + "start": { + "line": 318, + "column": 9 + }, + "end": { + "line": 318, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "q", + "start": 6898, + "end": 6899, + "loc": { + "start": { + "line": 318, + "column": 10 + }, + "end": { + "line": 318, + "column": 11 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6899, + "end": 6900, + "loc": { + "start": { + "line": 318, + "column": 11 + }, + "end": { + "line": 318, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 6901, + "end": 6902, + "loc": { + "start": { + "line": 318, + "column": 13 + }, + "end": { + "line": 318, + "column": 14 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6902, + "end": 6903, + "loc": { + "start": { + "line": 318, + "column": 14 + }, + "end": { + "line": 318, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "move", + "start": 6903, + "end": 6907, + "loc": { + "start": { + "line": 318, + "column": 15 + }, + "end": { + "line": 318, + "column": 19 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6907, + "end": 6908, + "loc": { + "start": { + "line": 318, + "column": 19 + }, + "end": { + "line": 318, + "column": 20 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 6908, + "end": 6912, + "loc": { + "start": { + "line": 318, + "column": 20 + }, + "end": { + "line": 318, + "column": 24 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6912, + "end": 6913, + "loc": { + "start": { + "line": 318, + "column": 24 + }, + "end": { + "line": 318, + "column": 25 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6913, + "end": 6914, + "loc": { + "start": { + "line": 318, + "column": 25 + }, + "end": { + "line": 318, + "column": 26 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6914, + "end": 6915, + "loc": { + "start": { + "line": 318, + "column": 26 + }, + "end": { + "line": 318, + "column": 27 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6917, + "end": 6918, + "loc": { + "start": { + "line": 319, + "column": 1 + }, + "end": { + "line": 319, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "divmodn", + "start": 6921, + "end": 6928, + "loc": { + "start": { + "line": 321, + "column": 1 + }, + "end": { + "line": 321, + "column": 8 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6928, + "end": 6929, + "loc": { + "start": { + "line": 321, + "column": 8 + }, + "end": { + "line": 321, + "column": 9 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 6929, + "end": 6935, + "loc": { + "start": { + "line": 321, + "column": 9 + }, + "end": { + "line": 321, + "column": 15 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6935, + "end": 6936, + "loc": { + "start": { + "line": 321, + "column": 15 + }, + "end": { + "line": 321, + "column": 16 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6937, + "end": 6938, + "loc": { + "start": { + "line": 321, + "column": 17 + }, + "end": { + "line": 321, + "column": 18 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 6941, + "end": 6947, + "loc": { + "start": { + "line": 322, + "column": 2 + }, + "end": { + "line": 322, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 6948, + "end": 6952, + "loc": { + "start": { + "line": 322, + "column": 9 + }, + "end": { + "line": 322, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6952, + "end": 6953, + "loc": { + "start": { + "line": 322, + "column": 13 + }, + "end": { + "line": 322, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "divmod", + "start": 6953, + "end": 6959, + "loc": { + "start": { + "line": 322, + "column": 14 + }, + "end": { + "line": 322, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6959, + "end": 6960, + "loc": { + "start": { + "line": 322, + "column": 20 + }, + "end": { + "line": 322, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_from_number", + "start": 6960, + "end": 6972, + "loc": { + "start": { + "line": 322, + "column": 21 + }, + "end": { + "line": 322, + "column": 33 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6972, + "end": 6973, + "loc": { + "start": { + "line": 322, + "column": 33 + }, + "end": { + "line": 322, + "column": 34 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 6973, + "end": 6979, + "loc": { + "start": { + "line": 322, + "column": 34 + }, + "end": { + "line": 322, + "column": 40 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6979, + "end": 6980, + "loc": { + "start": { + "line": 322, + "column": 40 + }, + "end": { + "line": 322, + "column": 41 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6980, + "end": 6981, + "loc": { + "start": { + "line": 322, + "column": 41 + }, + "end": { + "line": 322, + "column": 42 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6981, + "end": 6982, + "loc": { + "start": { + "line": 322, + "column": 42 + }, + "end": { + "line": 322, + "column": 43 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6984, + "end": 6985, + "loc": { + "start": { + "line": 323, + "column": 1 + }, + "end": { + "line": 323, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "idivmodn", + "start": 6988, + "end": 6996, + "loc": { + "start": { + "line": 325, + "column": 1 + }, + "end": { + "line": 325, + "column": 9 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 6996, + "end": 6997, + "loc": { + "start": { + "line": 325, + "column": 9 + }, + "end": { + "line": 325, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 6997, + "end": 7003, + "loc": { + "start": { + "line": 325, + "column": 10 + }, + "end": { + "line": 325, + "column": 16 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7003, + "end": 7004, + "loc": { + "start": { + "line": 325, + "column": 16 + }, + "end": { + "line": 325, + "column": 17 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7005, + "end": 7006, + "loc": { + "start": { + "line": 325, + "column": 18 + }, + "end": { + "line": 325, + "column": 19 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 7009, + "end": 7014, + "loc": { + "start": { + "line": 326, + "column": 2 + }, + "end": { + "line": 326, + "column": 7 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7015, + "end": 7016, + "loc": { + "start": { + "line": 326, + "column": 8 + }, + "end": { + "line": 326, + "column": 9 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "q", + "start": 7016, + "end": 7017, + "loc": { + "start": { + "line": 326, + "column": 9 + }, + "end": { + "line": 326, + "column": 10 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7017, + "end": 7018, + "loc": { + "start": { + "line": 326, + "column": 10 + }, + "end": { + "line": 326, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 7019, + "end": 7020, + "loc": { + "start": { + "line": 326, + "column": 12 + }, + "end": { + "line": 326, + "column": 13 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7020, + "end": 7021, + "loc": { + "start": { + "line": 326, + "column": 13 + }, + "end": { + "line": 326, + "column": 14 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 7022, + "end": 7023, + "loc": { + "start": { + "line": 326, + "column": 15 + }, + "end": { + "line": 326, + "column": 16 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7024, + "end": 7028, + "loc": { + "start": { + "line": 326, + "column": 17 + }, + "end": { + "line": 326, + "column": 21 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7028, + "end": 7029, + "loc": { + "start": { + "line": 326, + "column": 21 + }, + "end": { + "line": 326, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "divmodn", + "start": 7029, + "end": 7036, + "loc": { + "start": { + "line": 326, + "column": 22 + }, + "end": { + "line": 326, + "column": 29 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7036, + "end": 7037, + "loc": { + "start": { + "line": 326, + "column": 29 + }, + "end": { + "line": 326, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 7037, + "end": 7043, + "loc": { + "start": { + "line": 326, + "column": 30 + }, + "end": { + "line": 326, + "column": 36 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7043, + "end": 7044, + "loc": { + "start": { + "line": 326, + "column": 36 + }, + "end": { + "line": 326, + "column": 37 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7044, + "end": 7045, + "loc": { + "start": { + "line": 326, + "column": 37 + }, + "end": { + "line": 326, + "column": 38 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 7048, + "end": 7054, + "loc": { + "start": { + "line": 327, + "column": 2 + }, + "end": { + "line": 327, + "column": 8 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7055, + "end": 7056, + "loc": { + "start": { + "line": 327, + "column": 9 + }, + "end": { + "line": 327, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "q", + "start": 7056, + "end": 7057, + "loc": { + "start": { + "line": 327, + "column": 10 + }, + "end": { + "line": 327, + "column": 11 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7057, + "end": 7058, + "loc": { + "start": { + "line": 327, + "column": 11 + }, + "end": { + "line": 327, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 7059, + "end": 7060, + "loc": { + "start": { + "line": 327, + "column": 13 + }, + "end": { + "line": 327, + "column": 14 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7060, + "end": 7061, + "loc": { + "start": { + "line": 327, + "column": 14 + }, + "end": { + "line": 327, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "move", + "start": 7061, + "end": 7065, + "loc": { + "start": { + "line": 327, + "column": 15 + }, + "end": { + "line": 327, + "column": 19 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7065, + "end": 7066, + "loc": { + "start": { + "line": 327, + "column": 19 + }, + "end": { + "line": 327, + "column": 20 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7066, + "end": 7070, + "loc": { + "start": { + "line": 327, + "column": 20 + }, + "end": { + "line": 327, + "column": 24 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7070, + "end": 7071, + "loc": { + "start": { + "line": 327, + "column": 24 + }, + "end": { + "line": 327, + "column": 25 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7071, + "end": 7072, + "loc": { + "start": { + "line": 327, + "column": 25 + }, + "end": { + "line": 327, + "column": 26 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7072, + "end": 7073, + "loc": { + "start": { + "line": 327, + "column": 26 + }, + "end": { + "line": 327, + "column": 27 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7075, + "end": 7076, + "loc": { + "start": { + "line": 328, + "column": 1 + }, + "end": { + "line": 328, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "opposite", + "start": 7079, + "end": 7087, + "loc": { + "start": { + "line": 330, + "column": 1 + }, + "end": { + "line": 330, + "column": 9 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7087, + "end": 7088, + "loc": { + "start": { + "line": 330, + "column": 9 + }, + "end": { + "line": 330, + "column": 10 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7088, + "end": 7089, + "loc": { + "start": { + "line": 330, + "column": 10 + }, + "end": { + "line": 330, + "column": 11 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7090, + "end": 7091, + "loc": { + "start": { + "line": 330, + "column": 12 + }, + "end": { + "line": 330, + "column": 13 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 7094, + "end": 7100, + "loc": { + "start": { + "line": 331, + "column": 2 + }, + "end": { + "line": 331, + "column": 8 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 7101, + "end": 7104, + "loc": { + "start": { + "line": 331, + "column": 9 + }, + "end": { + "line": 331, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 7105, + "end": 7112, + "loc": { + "start": { + "line": 331, + "column": 13 + }, + "end": { + "line": 331, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7112, + "end": 7113, + "loc": { + "start": { + "line": 331, + "column": 20 + }, + "end": { + "line": 331, + "column": 21 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7113, + "end": 7117, + "loc": { + "start": { + "line": 331, + "column": 21 + }, + "end": { + "line": 331, + "column": 25 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7117, + "end": 7118, + "loc": { + "start": { + "line": 331, + "column": 25 + }, + "end": { + "line": 331, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 7118, + "end": 7123, + "loc": { + "start": { + "line": 331, + "column": 26 + }, + "end": { + "line": 331, + "column": 31 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7123, + "end": 7124, + "loc": { + "start": { + "line": 331, + "column": 31 + }, + "end": { + "line": 331, + "column": 32 + } + } + }, + { + "type": { + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "~", + "start": 7125, + "end": 7126, + "loc": { + "start": { + "line": 331, + "column": 33 + }, + "end": { + "line": 331, + "column": 34 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7126, + "end": 7130, + "loc": { + "start": { + "line": 331, + "column": 34 + }, + "end": { + "line": 331, + "column": 38 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7130, + "end": 7131, + "loc": { + "start": { + "line": 331, + "column": 38 + }, + "end": { + "line": 331, + "column": 39 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 7131, + "end": 7143, + "loc": { + "start": { + "line": 331, + "column": 39 + }, + "end": { + "line": 331, + "column": 51 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7143, + "end": 7144, + "loc": { + "start": { + "line": 331, + "column": 51 + }, + "end": { + "line": 331, + "column": 52 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7145, + "end": 7149, + "loc": { + "start": { + "line": 331, + "column": 53 + }, + "end": { + "line": 331, + "column": 57 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7149, + "end": 7150, + "loc": { + "start": { + "line": 331, + "column": 57 + }, + "end": { + "line": 331, + "column": 58 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 7150, + "end": 7156, + "loc": { + "start": { + "line": 331, + "column": 58 + }, + "end": { + "line": 331, + "column": 64 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7156, + "end": 7157, + "loc": { + "start": { + "line": 331, + "column": 64 + }, + "end": { + "line": 331, + "column": 65 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7157, + "end": 7158, + "loc": { + "start": { + "line": 331, + "column": 65 + }, + "end": { + "line": 331, + "column": 66 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7160, + "end": 7161, + "loc": { + "start": { + "line": 332, + "column": 1 + }, + "end": { + "line": 332, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "negate", + "start": 7164, + "end": 7170, + "loc": { + "start": { + "line": 334, + "column": 1 + }, + "end": { + "line": 334, + "column": 7 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7170, + "end": 7171, + "loc": { + "start": { + "line": 334, + "column": 7 + }, + "end": { + "line": 334, + "column": 8 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7171, + "end": 7172, + "loc": { + "start": { + "line": 334, + "column": 8 + }, + "end": { + "line": 334, + "column": 9 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7173, + "end": 7174, + "loc": { + "start": { + "line": 334, + "column": 10 + }, + "end": { + "line": 334, + "column": 11 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize but be careful with side effects", + "start": 7177, + "end": 7226, + "loc": { + "start": { + "line": 335, + "column": 2 + }, + "end": { + "line": 335, + "column": 51 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 7229, + "end": 7235, + "loc": { + "start": { + "line": 336, + "column": 2 + }, + "end": { + "line": 336, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7236, + "end": 7240, + "loc": { + "start": { + "line": 336, + "column": 9 + }, + "end": { + "line": 336, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7240, + "end": 7241, + "loc": { + "start": { + "line": 336, + "column": 13 + }, + "end": { + "line": 336, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "opposite", + "start": 7241, + "end": 7249, + "loc": { + "start": { + "line": 336, + "column": 14 + }, + "end": { + "line": 336, + "column": 22 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7249, + "end": 7250, + "loc": { + "start": { + "line": 336, + "column": 22 + }, + "end": { + "line": 336, + "column": 23 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7250, + "end": 7251, + "loc": { + "start": { + "line": 336, + "column": 23 + }, + "end": { + "line": 336, + "column": 24 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7251, + "end": 7252, + "loc": { + "start": { + "line": 336, + "column": 24 + }, + "end": { + "line": 336, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "move", + "start": 7252, + "end": 7256, + "loc": { + "start": { + "line": 336, + "column": 25 + }, + "end": { + "line": 336, + "column": 29 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7256, + "end": 7257, + "loc": { + "start": { + "line": 336, + "column": 29 + }, + "end": { + "line": 336, + "column": 30 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7257, + "end": 7261, + "loc": { + "start": { + "line": 336, + "column": 30 + }, + "end": { + "line": 336, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7261, + "end": 7262, + "loc": { + "start": { + "line": 336, + "column": 34 + }, + "end": { + "line": 336, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7262, + "end": 7263, + "loc": { + "start": { + "line": 336, + "column": 35 + }, + "end": { + "line": 336, + "column": 36 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7265, + "end": 7266, + "loc": { + "start": { + "line": 337, + "column": 1 + }, + "end": { + "line": 337, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "abs", + "start": 7269, + "end": 7272, + "loc": { + "start": { + "line": 339, + "column": 1 + }, + "end": { + "line": 339, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7272, + "end": 7273, + "loc": { + "start": { + "line": 339, + "column": 4 + }, + "end": { + "line": 339, + "column": 5 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7273, + "end": 7274, + "loc": { + "start": { + "line": 339, + "column": 5 + }, + "end": { + "line": 339, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7275, + "end": 7276, + "loc": { + "start": { + "line": 339, + "column": 7 + }, + "end": { + "line": 339, + "column": 8 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 7279, + "end": 7285, + "loc": { + "start": { + "line": 340, + "column": 2 + }, + "end": { + "line": 340, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7286, + "end": 7290, + "loc": { + "start": { + "line": 340, + "column": 9 + }, + "end": { + "line": 340, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7290, + "end": 7291, + "loc": { + "start": { + "line": 340, + "column": 13 + }, + "end": { + "line": 340, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "sign", + "start": 7291, + "end": 7295, + "loc": { + "start": { + "line": 340, + "column": 14 + }, + "end": { + "line": 340, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7295, + "end": 7296, + "loc": { + "start": { + "line": 340, + "column": 18 + }, + "end": { + "line": 340, + "column": 19 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7296, + "end": 7297, + "loc": { + "start": { + "line": 340, + "column": 19 + }, + "end": { + "line": 340, + "column": 20 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": ">=", + "start": 7298, + "end": 7300, + "loc": { + "start": { + "line": 340, + "column": 21 + }, + "end": { + "line": 340, + "column": 23 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 7301, + "end": 7302, + "loc": { + "start": { + "line": 340, + "column": 24 + }, + "end": { + "line": 340, + "column": 25 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7303, + "end": 7304, + "loc": { + "start": { + "line": 340, + "column": 26 + }, + "end": { + "line": 340, + "column": 27 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7305, + "end": 7309, + "loc": { + "start": { + "line": 340, + "column": 28 + }, + "end": { + "line": 340, + "column": 32 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7310, + "end": 7311, + "loc": { + "start": { + "line": 340, + "column": 33 + }, + "end": { + "line": 340, + "column": 34 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7312, + "end": 7316, + "loc": { + "start": { + "line": 340, + "column": 35 + }, + "end": { + "line": 340, + "column": 39 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7316, + "end": 7317, + "loc": { + "start": { + "line": 340, + "column": 39 + }, + "end": { + "line": 340, + "column": 40 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "opposite", + "start": 7317, + "end": 7325, + "loc": { + "start": { + "line": 340, + "column": 40 + }, + "end": { + "line": 340, + "column": 48 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7325, + "end": 7326, + "loc": { + "start": { + "line": 340, + "column": 48 + }, + "end": { + "line": 340, + "column": 49 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7326, + "end": 7327, + "loc": { + "start": { + "line": 340, + "column": 49 + }, + "end": { + "line": 340, + "column": 50 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7327, + "end": 7328, + "loc": { + "start": { + "line": 340, + "column": 50 + }, + "end": { + "line": 340, + "column": 51 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7330, + "end": 7331, + "loc": { + "start": { + "line": 341, + "column": 1 + }, + "end": { + "line": 341, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "iabs", + "start": 7334, + "end": 7338, + "loc": { + "start": { + "line": 343, + "column": 1 + }, + "end": { + "line": 343, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7338, + "end": 7339, + "loc": { + "start": { + "line": 343, + "column": 5 + }, + "end": { + "line": 343, + "column": 6 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7339, + "end": 7340, + "loc": { + "start": { + "line": 343, + "column": 6 + }, + "end": { + "line": 343, + "column": 7 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7341, + "end": 7342, + "loc": { + "start": { + "line": 343, + "column": 8 + }, + "end": { + "line": 343, + "column": 9 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 7345, + "end": 7351, + "loc": { + "start": { + "line": 344, + "column": 2 + }, + "end": { + "line": 344, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7352, + "end": 7356, + "loc": { + "start": { + "line": 344, + "column": 9 + }, + "end": { + "line": 344, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7356, + "end": 7357, + "loc": { + "start": { + "line": 344, + "column": 13 + }, + "end": { + "line": 344, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "abs", + "start": 7357, + "end": 7360, + "loc": { + "start": { + "line": 344, + "column": 14 + }, + "end": { + "line": 344, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7360, + "end": 7361, + "loc": { + "start": { + "line": 344, + "column": 17 + }, + "end": { + "line": 344, + "column": 18 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7361, + "end": 7362, + "loc": { + "start": { + "line": 344, + "column": 18 + }, + "end": { + "line": 344, + "column": 19 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7362, + "end": 7363, + "loc": { + "start": { + "line": 344, + "column": 19 + }, + "end": { + "line": 344, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "move", + "start": 7363, + "end": 7367, + "loc": { + "start": { + "line": 344, + "column": 20 + }, + "end": { + "line": 344, + "column": 24 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7367, + "end": 7368, + "loc": { + "start": { + "line": 344, + "column": 24 + }, + "end": { + "line": 344, + "column": 25 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7368, + "end": 7372, + "loc": { + "start": { + "line": 344, + "column": 25 + }, + "end": { + "line": 344, + "column": 29 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7372, + "end": 7373, + "loc": { + "start": { + "line": 344, + "column": 29 + }, + "end": { + "line": 344, + "column": 30 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7373, + "end": 7374, + "loc": { + "start": { + "line": 344, + "column": 30 + }, + "end": { + "line": 344, + "column": 31 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7376, + "end": 7377, + "loc": { + "start": { + "line": 345, + "column": 1 + }, + "end": { + "line": 345, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "sign", + "start": 7380, + "end": 7384, + "loc": { + "start": { + "line": 347, + "column": 1 + }, + "end": { + "line": 347, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7384, + "end": 7385, + "loc": { + "start": { + "line": 347, + "column": 5 + }, + "end": { + "line": 347, + "column": 6 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7385, + "end": 7386, + "loc": { + "start": { + "line": 347, + "column": 6 + }, + "end": { + "line": 347, + "column": 7 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7387, + "end": 7388, + "loc": { + "start": { + "line": 347, + "column": 8 + }, + "end": { + "line": 347, + "column": 9 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 7391, + "end": 7397, + "loc": { + "start": { + "line": 348, + "column": 2 + }, + "end": { + "line": 348, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7398, + "end": 7402, + "loc": { + "start": { + "line": 348, + "column": 9 + }, + "end": { + "line": 348, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7402, + "end": 7403, + "loc": { + "start": { + "line": 348, + "column": 13 + }, + "end": { + "line": 348, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "iszero", + "start": 7403, + "end": 7409, + "loc": { + "start": { + "line": 348, + "column": 14 + }, + "end": { + "line": 348, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7409, + "end": 7410, + "loc": { + "start": { + "line": 348, + "column": 20 + }, + "end": { + "line": 348, + "column": 21 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7410, + "end": 7411, + "loc": { + "start": { + "line": 348, + "column": 21 + }, + "end": { + "line": 348, + "column": 22 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7412, + "end": 7413, + "loc": { + "start": { + "line": 348, + "column": 23 + }, + "end": { + "line": 348, + "column": 24 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 7414, + "end": 7415, + "loc": { + "start": { + "line": 348, + "column": 25 + }, + "end": { + "line": 348, + "column": 26 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7416, + "end": 7417, + "loc": { + "start": { + "line": 348, + "column": 27 + }, + "end": { + "line": 348, + "column": 28 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7418, + "end": 7422, + "loc": { + "start": { + "line": 348, + "column": 29 + }, + "end": { + "line": 348, + "column": 33 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7422, + "end": 7423, + "loc": { + "start": { + "line": 348, + "column": 33 + }, + "end": { + "line": 348, + "column": 34 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 7423, + "end": 7435, + "loc": { + "start": { + "line": 348, + "column": 34 + }, + "end": { + "line": 348, + "column": 46 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7436, + "end": 7437, + "loc": { + "start": { + "line": 348, + "column": 47 + }, + "end": { + "line": 348, + "column": 48 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 7438, + "end": 7439, + "loc": { + "start": { + "line": 348, + "column": 49 + }, + "end": { + "line": 348, + "column": 50 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 7439, + "end": 7440, + "loc": { + "start": { + "line": 348, + "column": 50 + }, + "end": { + "line": 348, + "column": 51 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7441, + "end": 7442, + "loc": { + "start": { + "line": 348, + "column": 52 + }, + "end": { + "line": 348, + "column": 53 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 7443, + "end": 7444, + "loc": { + "start": { + "line": 348, + "column": 54 + }, + "end": { + "line": 348, + "column": 55 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7444, + "end": 7445, + "loc": { + "start": { + "line": 348, + "column": 55 + }, + "end": { + "line": 348, + "column": 56 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7447, + "end": 7448, + "loc": { + "start": { + "line": 349, + "column": 1 + }, + "end": { + "line": 349, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "iszero", + "start": 7451, + "end": 7457, + "loc": { + "start": { + "line": 351, + "column": 1 + }, + "end": { + "line": 351, + "column": 7 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7457, + "end": 7458, + "loc": { + "start": { + "line": 351, + "column": 7 + }, + "end": { + "line": 351, + "column": 8 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7458, + "end": 7459, + "loc": { + "start": { + "line": 351, + "column": 8 + }, + "end": { + "line": 351, + "column": 9 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7460, + "end": 7461, + "loc": { + "start": { + "line": 351, + "column": 10 + }, + "end": { + "line": 351, + "column": 11 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 7464, + "end": 7470, + "loc": { + "start": { + "line": 352, + "column": 2 + }, + "end": { + "line": 352, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "jz", + "start": 7471, + "end": 7473, + "loc": { + "start": { + "line": 352, + "column": 9 + }, + "end": { + "line": 352, + "column": 11 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7473, + "end": 7474, + "loc": { + "start": { + "line": 352, + "column": 11 + }, + "end": { + "line": 352, + "column": 12 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7474, + "end": 7478, + "loc": { + "start": { + "line": 352, + "column": 12 + }, + "end": { + "line": 352, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7478, + "end": 7479, + "loc": { + "start": { + "line": 352, + "column": 16 + }, + "end": { + "line": 352, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 7479, + "end": 7485, + "loc": { + "start": { + "line": 352, + "column": 17 + }, + "end": { + "line": 352, + "column": 23 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7485, + "end": 7486, + "loc": { + "start": { + "line": 352, + "column": 23 + }, + "end": { + "line": 352, + "column": 24 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 7487, + "end": 7488, + "loc": { + "start": { + "line": 352, + "column": 25 + }, + "end": { + "line": 352, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7488, + "end": 7489, + "loc": { + "start": { + "line": 352, + "column": 26 + }, + "end": { + "line": 352, + "column": 27 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7490, + "end": 7494, + "loc": { + "start": { + "line": 352, + "column": 28 + }, + "end": { + "line": 352, + "column": 32 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7494, + "end": 7495, + "loc": { + "start": { + "line": 352, + "column": 32 + }, + "end": { + "line": 352, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 7495, + "end": 7501, + "loc": { + "start": { + "line": 352, + "column": 33 + }, + "end": { + "line": 352, + "column": 39 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7501, + "end": 7502, + "loc": { + "start": { + "line": 352, + "column": 39 + }, + "end": { + "line": 352, + "column": 40 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 7502, + "end": 7508, + "loc": { + "start": { + "line": 352, + "column": 40 + }, + "end": { + "line": 352, + "column": 46 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7508, + "end": 7509, + "loc": { + "start": { + "line": 352, + "column": 46 + }, + "end": { + "line": 352, + "column": 47 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7509, + "end": 7510, + "loc": { + "start": { + "line": 352, + "column": 47 + }, + "end": { + "line": 352, + "column": 48 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7512, + "end": 7513, + "loc": { + "start": { + "line": 353, + "column": 1 + }, + "end": { + "line": 353, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "isone", + "start": 7516, + "end": 7521, + "loc": { + "start": { + "line": 355, + "column": 1 + }, + "end": { + "line": 355, + "column": 6 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7521, + "end": 7522, + "loc": { + "start": { + "line": 355, + "column": 6 + }, + "end": { + "line": 355, + "column": 7 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7522, + "end": 7523, + "loc": { + "start": { + "line": 355, + "column": 7 + }, + "end": { + "line": 355, + "column": 8 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7524, + "end": 7525, + "loc": { + "start": { + "line": 355, + "column": 9 + }, + "end": { + "line": 355, + "column": 10 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 7528, + "end": 7530, + "loc": { + "start": { + "line": 356, + "column": 2 + }, + "end": { + "line": 356, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7531, + "end": 7532, + "loc": { + "start": { + "line": 356, + "column": 5 + }, + "end": { + "line": 356, + "column": 6 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7532, + "end": 7536, + "loc": { + "start": { + "line": 356, + "column": 6 + }, + "end": { + "line": 356, + "column": 10 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7536, + "end": 7537, + "loc": { + "start": { + "line": 356, + "column": 10 + }, + "end": { + "line": 356, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 7537, + "end": 7549, + "loc": { + "start": { + "line": 356, + "column": 11 + }, + "end": { + "line": 356, + "column": 23 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7549, + "end": 7550, + "loc": { + "start": { + "line": 356, + "column": 23 + }, + "end": { + "line": 356, + "column": 24 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 7551, + "end": 7557, + "loc": { + "start": { + "line": 356, + "column": 25 + }, + "end": { + "line": 356, + "column": 31 + } + } + }, + { + "type": { + "label": "false", + "keyword": "false", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "false", + "start": 7558, + "end": 7563, + "loc": { + "start": { + "line": 356, + "column": 32 + }, + "end": { + "line": 356, + "column": 37 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7563, + "end": 7564, + "loc": { + "start": { + "line": 356, + "column": 37 + }, + "end": { + "line": 356, + "column": 38 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 7567, + "end": 7573, + "loc": { + "start": { + "line": 357, + "column": 2 + }, + "end": { + "line": 357, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "eq", + "start": 7574, + "end": 7576, + "loc": { + "start": { + "line": 357, + "column": 9 + }, + "end": { + "line": 357, + "column": 11 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7576, + "end": 7577, + "loc": { + "start": { + "line": 357, + "column": 11 + }, + "end": { + "line": 357, + "column": 12 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7577, + "end": 7581, + "loc": { + "start": { + "line": 357, + "column": 12 + }, + "end": { + "line": 357, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7581, + "end": 7582, + "loc": { + "start": { + "line": 357, + "column": 16 + }, + "end": { + "line": 357, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 7582, + "end": 7588, + "loc": { + "start": { + "line": 357, + "column": 17 + }, + "end": { + "line": 357, + "column": 23 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7588, + "end": 7589, + "loc": { + "start": { + "line": 357, + "column": 23 + }, + "end": { + "line": 357, + "column": 24 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 7590, + "end": 7591, + "loc": { + "start": { + "line": 357, + "column": 25 + }, + "end": { + "line": 357, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7591, + "end": 7592, + "loc": { + "start": { + "line": 357, + "column": 26 + }, + "end": { + "line": 357, + "column": 27 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7593, + "end": 7597, + "loc": { + "start": { + "line": 357, + "column": 28 + }, + "end": { + "line": 357, + "column": 32 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7597, + "end": 7598, + "loc": { + "start": { + "line": 357, + "column": 32 + }, + "end": { + "line": 357, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 7598, + "end": 7604, + "loc": { + "start": { + "line": 357, + "column": 33 + }, + "end": { + "line": 357, + "column": 39 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7604, + "end": 7605, + "loc": { + "start": { + "line": 357, + "column": 39 + }, + "end": { + "line": 357, + "column": 40 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 7605, + "end": 7611, + "loc": { + "start": { + "line": 357, + "column": 40 + }, + "end": { + "line": 357, + "column": 46 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7611, + "end": 7612, + "loc": { + "start": { + "line": 357, + "column": 46 + }, + "end": { + "line": 357, + "column": 47 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7613, + "end": 7614, + "loc": { + "start": { + "line": 357, + "column": 48 + }, + "end": { + "line": 357, + "column": 49 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 7614, + "end": 7615, + "loc": { + "start": { + "line": 357, + "column": 49 + }, + "end": { + "line": 357, + "column": 50 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7615, + "end": 7616, + "loc": { + "start": { + "line": 357, + "column": 50 + }, + "end": { + "line": 357, + "column": 51 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7616, + "end": 7617, + "loc": { + "start": { + "line": 357, + "column": 51 + }, + "end": { + "line": 357, + "column": 52 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 7618, + "end": 7619, + "loc": { + "start": { + "line": 357, + "column": 53 + }, + "end": { + "line": 357, + "column": 54 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7619, + "end": 7620, + "loc": { + "start": { + "line": 357, + "column": 54 + }, + "end": { + "line": 357, + "column": 55 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 7621, + "end": 7622, + "loc": { + "start": { + "line": 357, + "column": 56 + }, + "end": { + "line": 357, + "column": 57 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7622, + "end": 7623, + "loc": { + "start": { + "line": 357, + "column": 57 + }, + "end": { + "line": 357, + "column": 58 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7623, + "end": 7624, + "loc": { + "start": { + "line": 357, + "column": 58 + }, + "end": { + "line": 357, + "column": 59 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7626, + "end": 7627, + "loc": { + "start": { + "line": 358, + "column": 1 + }, + "end": { + "line": 358, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "isnonzero", + "start": 7630, + "end": 7639, + "loc": { + "start": { + "line": 360, + "column": 1 + }, + "end": { + "line": 360, + "column": 10 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7639, + "end": 7640, + "loc": { + "start": { + "line": 360, + "column": 10 + }, + "end": { + "line": 360, + "column": 11 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7640, + "end": 7641, + "loc": { + "start": { + "line": 360, + "column": 11 + }, + "end": { + "line": 360, + "column": 12 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7642, + "end": 7643, + "loc": { + "start": { + "line": 360, + "column": 13 + }, + "end": { + "line": 360, + "column": 14 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 7646, + "end": 7652, + "loc": { + "start": { + "line": 361, + "column": 2 + }, + "end": { + "line": 361, + "column": 8 + } + } + }, + { + "type": { + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "!", + "start": 7653, + "end": 7654, + "loc": { + "start": { + "line": 361, + "column": 9 + }, + "end": { + "line": 361, + "column": 10 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7654, + "end": 7658, + "loc": { + "start": { + "line": 361, + "column": 10 + }, + "end": { + "line": 361, + "column": 14 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7658, + "end": 7659, + "loc": { + "start": { + "line": 361, + "column": 14 + }, + "end": { + "line": 361, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "iszero", + "start": 7659, + "end": 7665, + "loc": { + "start": { + "line": 361, + "column": 15 + }, + "end": { + "line": 361, + "column": 21 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7665, + "end": 7666, + "loc": { + "start": { + "line": 361, + "column": 21 + }, + "end": { + "line": 361, + "column": 22 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7666, + "end": 7667, + "loc": { + "start": { + "line": 361, + "column": 22 + }, + "end": { + "line": 361, + "column": 23 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7667, + "end": 7668, + "loc": { + "start": { + "line": 361, + "column": 23 + }, + "end": { + "line": 361, + "column": 24 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7670, + "end": 7671, + "loc": { + "start": { + "line": 362, + "column": 1 + }, + "end": { + "line": 362, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "isnegative", + "start": 7674, + "end": 7684, + "loc": { + "start": { + "line": 364, + "column": 1 + }, + "end": { + "line": 364, + "column": 11 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7684, + "end": 7685, + "loc": { + "start": { + "line": 364, + "column": 11 + }, + "end": { + "line": 364, + "column": 12 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7685, + "end": 7686, + "loc": { + "start": { + "line": 364, + "column": 12 + }, + "end": { + "line": 364, + "column": 13 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7687, + "end": 7688, + "loc": { + "start": { + "line": 364, + "column": 14 + }, + "end": { + "line": 364, + "column": 15 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 7691, + "end": 7697, + "loc": { + "start": { + "line": 365, + "column": 2 + }, + "end": { + "line": 365, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7698, + "end": 7702, + "loc": { + "start": { + "line": 365, + "column": 9 + }, + "end": { + "line": 365, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7702, + "end": 7703, + "loc": { + "start": { + "line": 365, + "column": 13 + }, + "end": { + "line": 365, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 7703, + "end": 7715, + "loc": { + "start": { + "line": 365, + "column": 14 + }, + "end": { + "line": 365, + "column": 26 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "===", + "start": 7716, + "end": 7719, + "loc": { + "start": { + "line": 365, + "column": 27 + }, + "end": { + "line": 365, + "column": 30 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 7720, + "end": 7721, + "loc": { + "start": { + "line": 365, + "column": 31 + }, + "end": { + "line": 365, + "column": 32 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 7721, + "end": 7722, + "loc": { + "start": { + "line": 365, + "column": 32 + }, + "end": { + "line": 365, + "column": 33 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7722, + "end": 7723, + "loc": { + "start": { + "line": 365, + "column": 33 + }, + "end": { + "line": 365, + "column": 34 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7725, + "end": 7726, + "loc": { + "start": { + "line": 366, + "column": 1 + }, + "end": { + "line": 366, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ispositive", + "start": 7729, + "end": 7739, + "loc": { + "start": { + "line": 368, + "column": 1 + }, + "end": { + "line": 368, + "column": 11 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7739, + "end": 7740, + "loc": { + "start": { + "line": 368, + "column": 11 + }, + "end": { + "line": 368, + "column": 12 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7740, + "end": 7741, + "loc": { + "start": { + "line": 368, + "column": 12 + }, + "end": { + "line": 368, + "column": 13 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7742, + "end": 7743, + "loc": { + "start": { + "line": 368, + "column": 14 + }, + "end": { + "line": 368, + "column": 15 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 7746, + "end": 7752, + "loc": { + "start": { + "line": 369, + "column": 2 + }, + "end": { + "line": 369, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7753, + "end": 7757, + "loc": { + "start": { + "line": 369, + "column": 9 + }, + "end": { + "line": 369, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7757, + "end": 7758, + "loc": { + "start": { + "line": 369, + "column": 13 + }, + "end": { + "line": 369, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "sign", + "start": 7758, + "end": 7762, + "loc": { + "start": { + "line": 369, + "column": 14 + }, + "end": { + "line": 369, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7762, + "end": 7763, + "loc": { + "start": { + "line": 369, + "column": 18 + }, + "end": { + "line": 369, + "column": 19 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7763, + "end": 7764, + "loc": { + "start": { + "line": 369, + "column": 19 + }, + "end": { + "line": 369, + "column": 20 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": ">", + "start": 7765, + "end": 7766, + "loc": { + "start": { + "line": 369, + "column": 21 + }, + "end": { + "line": 369, + "column": 22 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 7767, + "end": 7768, + "loc": { + "start": { + "line": 369, + "column": 23 + }, + "end": { + "line": 369, + "column": 24 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7768, + "end": 7769, + "loc": { + "start": { + "line": 369, + "column": 24 + }, + "end": { + "line": 369, + "column": 25 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7771, + "end": 7772, + "loc": { + "start": { + "line": 370, + "column": 1 + }, + "end": { + "line": 370, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "isnonnegative", + "start": 7775, + "end": 7788, + "loc": { + "start": { + "line": 372, + "column": 1 + }, + "end": { + "line": 372, + "column": 14 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7788, + "end": 7789, + "loc": { + "start": { + "line": 372, + "column": 14 + }, + "end": { + "line": 372, + "column": 15 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7789, + "end": 7790, + "loc": { + "start": { + "line": 372, + "column": 15 + }, + "end": { + "line": 372, + "column": 16 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7791, + "end": 7792, + "loc": { + "start": { + "line": 372, + "column": 17 + }, + "end": { + "line": 372, + "column": 18 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 7795, + "end": 7801, + "loc": { + "start": { + "line": 373, + "column": 2 + }, + "end": { + "line": 373, + "column": 8 + } + } + }, + { + "type": { + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "!", + "start": 7802, + "end": 7803, + "loc": { + "start": { + "line": 373, + "column": 9 + }, + "end": { + "line": 373, + "column": 10 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7803, + "end": 7807, + "loc": { + "start": { + "line": 373, + "column": 10 + }, + "end": { + "line": 373, + "column": 14 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7807, + "end": 7808, + "loc": { + "start": { + "line": 373, + "column": 14 + }, + "end": { + "line": 373, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "isnegative", + "start": 7808, + "end": 7818, + "loc": { + "start": { + "line": 373, + "column": 15 + }, + "end": { + "line": 373, + "column": 25 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7818, + "end": 7819, + "loc": { + "start": { + "line": 373, + "column": 25 + }, + "end": { + "line": 373, + "column": 26 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7819, + "end": 7820, + "loc": { + "start": { + "line": 373, + "column": 26 + }, + "end": { + "line": 373, + "column": 27 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7820, + "end": 7821, + "loc": { + "start": { + "line": 373, + "column": 27 + }, + "end": { + "line": 373, + "column": 28 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7823, + "end": 7824, + "loc": { + "start": { + "line": 374, + "column": 1 + }, + "end": { + "line": 374, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "isnonpositive", + "start": 7827, + "end": 7840, + "loc": { + "start": { + "line": 376, + "column": 1 + }, + "end": { + "line": 376, + "column": 14 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7840, + "end": 7841, + "loc": { + "start": { + "line": 376, + "column": 14 + }, + "end": { + "line": 376, + "column": 15 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7841, + "end": 7842, + "loc": { + "start": { + "line": 376, + "column": 15 + }, + "end": { + "line": 376, + "column": 16 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7843, + "end": 7844, + "loc": { + "start": { + "line": 376, + "column": 17 + }, + "end": { + "line": 376, + "column": 18 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 7847, + "end": 7853, + "loc": { + "start": { + "line": 377, + "column": 2 + }, + "end": { + "line": 377, + "column": 8 + } + } + }, + { + "type": { + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "!", + "start": 7854, + "end": 7855, + "loc": { + "start": { + "line": 377, + "column": 9 + }, + "end": { + "line": 377, + "column": 10 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 7855, + "end": 7859, + "loc": { + "start": { + "line": 377, + "column": 10 + }, + "end": { + "line": 377, + "column": 14 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7859, + "end": 7860, + "loc": { + "start": { + "line": 377, + "column": 14 + }, + "end": { + "line": 377, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ispositive", + "start": 7860, + "end": 7870, + "loc": { + "start": { + "line": 377, + "column": 15 + }, + "end": { + "line": 377, + "column": 25 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7870, + "end": 7871, + "loc": { + "start": { + "line": 377, + "column": 25 + }, + "end": { + "line": 377, + "column": 26 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7871, + "end": 7872, + "loc": { + "start": { + "line": 377, + "column": 26 + }, + "end": { + "line": 377, + "column": 27 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7872, + "end": 7873, + "loc": { + "start": { + "line": 377, + "column": 27 + }, + "end": { + "line": 377, + "column": 28 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7875, + "end": 7876, + "loc": { + "start": { + "line": 378, + "column": 1 + }, + "end": { + "line": 378, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "parity", + "start": 7879, + "end": 7885, + "loc": { + "start": { + "line": 380, + "column": 1 + }, + "end": { + "line": 380, + "column": 7 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7885, + "end": 7886, + "loc": { + "start": { + "line": 380, + "column": 7 + }, + "end": { + "line": 380, + "column": 8 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7886, + "end": 7887, + "loc": { + "start": { + "line": 380, + "column": 8 + }, + "end": { + "line": 380, + "column": 9 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7888, + "end": 7889, + "loc": { + "start": { + "line": 380, + "column": 10 + }, + "end": { + "line": 380, + "column": 11 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize this, there is a much faster way to test for parity", + "start": 7892, + "end": 7960, + "loc": { + "start": { + "line": 381, + "column": 2 + }, + "end": { + "line": 381, + "column": 70 + } + } + }, + { + "type": "CommentLine", + "value": " when the base is a multiple of two", + "start": 7963, + "end": 8000, + "loc": { + "start": { + "line": 382, + "column": 2 + }, + "end": { + "line": 382, + "column": 39 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 8003, + "end": 8009, + "loc": { + "start": { + "line": 383, + "column": 2 + }, + "end": { + "line": 383, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 8010, + "end": 8014, + "loc": { + "start": { + "line": 383, + "column": 9 + }, + "end": { + "line": 383, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8014, + "end": 8015, + "loc": { + "start": { + "line": 383, + "column": 13 + }, + "end": { + "line": 383, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "modn", + "start": 8015, + "end": 8019, + "loc": { + "start": { + "line": 383, + "column": 14 + }, + "end": { + "line": 383, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8019, + "end": 8020, + "loc": { + "start": { + "line": 383, + "column": 18 + }, + "end": { + "line": 383, + "column": 19 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 2, + "start": 8020, + "end": 8021, + "loc": { + "start": { + "line": 383, + "column": 19 + }, + "end": { + "line": 383, + "column": 20 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8021, + "end": 8022, + "loc": { + "start": { + "line": 383, + "column": 20 + }, + "end": { + "line": 383, + "column": 21 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8022, + "end": 8023, + "loc": { + "start": { + "line": 383, + "column": 21 + }, + "end": { + "line": 383, + "column": 22 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8025, + "end": 8026, + "loc": { + "start": { + "line": 384, + "column": 1 + }, + "end": { + "line": 384, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "iseven", + "start": 8029, + "end": 8035, + "loc": { + "start": { + "line": 386, + "column": 1 + }, + "end": { + "line": 386, + "column": 7 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8035, + "end": 8036, + "loc": { + "start": { + "line": 386, + "column": 7 + }, + "end": { + "line": 386, + "column": 8 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8036, + "end": 8037, + "loc": { + "start": { + "line": 386, + "column": 8 + }, + "end": { + "line": 386, + "column": 9 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8038, + "end": 8039, + "loc": { + "start": { + "line": 386, + "column": 10 + }, + "end": { + "line": 386, + "column": 11 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 8042, + "end": 8048, + "loc": { + "start": { + "line": 387, + "column": 2 + }, + "end": { + "line": 387, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 8049, + "end": 8053, + "loc": { + "start": { + "line": 387, + "column": 9 + }, + "end": { + "line": 387, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8053, + "end": 8054, + "loc": { + "start": { + "line": 387, + "column": 13 + }, + "end": { + "line": 387, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "parity", + "start": 8054, + "end": 8060, + "loc": { + "start": { + "line": 387, + "column": 14 + }, + "end": { + "line": 387, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8060, + "end": 8061, + "loc": { + "start": { + "line": 387, + "column": 20 + }, + "end": { + "line": 387, + "column": 21 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8061, + "end": 8062, + "loc": { + "start": { + "line": 387, + "column": 21 + }, + "end": { + "line": 387, + "column": 22 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8062, + "end": 8063, + "loc": { + "start": { + "line": 387, + "column": 22 + }, + "end": { + "line": 387, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "iszero", + "start": 8063, + "end": 8069, + "loc": { + "start": { + "line": 387, + "column": 23 + }, + "end": { + "line": 387, + "column": 29 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8069, + "end": 8070, + "loc": { + "start": { + "line": 387, + "column": 29 + }, + "end": { + "line": 387, + "column": 30 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8070, + "end": 8071, + "loc": { + "start": { + "line": 387, + "column": 30 + }, + "end": { + "line": 387, + "column": 31 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8071, + "end": 8072, + "loc": { + "start": { + "line": 387, + "column": 31 + }, + "end": { + "line": 387, + "column": 32 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8074, + "end": 8075, + "loc": { + "start": { + "line": 388, + "column": 1 + }, + "end": { + "line": 388, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "isodd", + "start": 8078, + "end": 8083, + "loc": { + "start": { + "line": 390, + "column": 1 + }, + "end": { + "line": 390, + "column": 6 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8083, + "end": 8084, + "loc": { + "start": { + "line": 390, + "column": 6 + }, + "end": { + "line": 390, + "column": 7 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8084, + "end": 8085, + "loc": { + "start": { + "line": 390, + "column": 7 + }, + "end": { + "line": 390, + "column": 8 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8086, + "end": 8087, + "loc": { + "start": { + "line": 390, + "column": 9 + }, + "end": { + "line": 390, + "column": 10 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 8090, + "end": 8096, + "loc": { + "start": { + "line": 391, + "column": 2 + }, + "end": { + "line": 391, + "column": 8 + } + } + }, + { + "type": { + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "!", + "start": 8097, + "end": 8098, + "loc": { + "start": { + "line": 391, + "column": 9 + }, + "end": { + "line": 391, + "column": 10 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 8098, + "end": 8102, + "loc": { + "start": { + "line": 391, + "column": 10 + }, + "end": { + "line": 391, + "column": 14 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8102, + "end": 8103, + "loc": { + "start": { + "line": 391, + "column": 14 + }, + "end": { + "line": 391, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "iseven", + "start": 8103, + "end": 8109, + "loc": { + "start": { + "line": 391, + "column": 15 + }, + "end": { + "line": 391, + "column": 21 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8109, + "end": 8110, + "loc": { + "start": { + "line": 391, + "column": 21 + }, + "end": { + "line": 391, + "column": 22 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8110, + "end": 8111, + "loc": { + "start": { + "line": 391, + "column": 22 + }, + "end": { + "line": 391, + "column": 23 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8111, + "end": 8112, + "loc": { + "start": { + "line": 391, + "column": 23 + }, + "end": { + "line": 391, + "column": 24 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8114, + "end": 8115, + "loc": { + "start": { + "line": 392, + "column": 1 + }, + "end": { + "line": 392, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "bin", + "start": 8118, + "end": 8121, + "loc": { + "start": { + "line": 394, + "column": 1 + }, + "end": { + "line": 394, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8121, + "end": 8122, + "loc": { + "start": { + "line": 394, + "column": 4 + }, + "end": { + "line": 394, + "column": 5 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8122, + "end": 8123, + "loc": { + "start": { + "line": 394, + "column": 5 + }, + "end": { + "line": 394, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8124, + "end": 8125, + "loc": { + "start": { + "line": 394, + "column": 7 + }, + "end": { + "line": 394, + "column": 8 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 8128, + "end": 8134, + "loc": { + "start": { + "line": 395, + "column": 2 + }, + "end": { + "line": 395, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 8135, + "end": 8139, + "loc": { + "start": { + "line": 395, + "column": 9 + }, + "end": { + "line": 395, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8139, + "end": 8140, + "loc": { + "start": { + "line": 395, + "column": 13 + }, + "end": { + "line": 395, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "toString", + "start": 8140, + "end": 8148, + "loc": { + "start": { + "line": 395, + "column": 14 + }, + "end": { + "line": 395, + "column": 22 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8148, + "end": 8149, + "loc": { + "start": { + "line": 395, + "column": 22 + }, + "end": { + "line": 395, + "column": 23 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 2, + "start": 8149, + "end": 8150, + "loc": { + "start": { + "line": 395, + "column": 23 + }, + "end": { + "line": 395, + "column": 24 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8150, + "end": 8151, + "loc": { + "start": { + "line": 395, + "column": 24 + }, + "end": { + "line": 395, + "column": 25 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8151, + "end": 8152, + "loc": { + "start": { + "line": 395, + "column": 25 + }, + "end": { + "line": 395, + "column": 26 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8154, + "end": 8155, + "loc": { + "start": { + "line": 396, + "column": 1 + }, + "end": { + "line": 396, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "oct", + "start": 8158, + "end": 8161, + "loc": { + "start": { + "line": 398, + "column": 1 + }, + "end": { + "line": 398, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8161, + "end": 8162, + "loc": { + "start": { + "line": 398, + "column": 4 + }, + "end": { + "line": 398, + "column": 5 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8162, + "end": 8163, + "loc": { + "start": { + "line": 398, + "column": 5 + }, + "end": { + "line": 398, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8164, + "end": 8165, + "loc": { + "start": { + "line": 398, + "column": 7 + }, + "end": { + "line": 398, + "column": 8 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 8168, + "end": 8174, + "loc": { + "start": { + "line": 399, + "column": 2 + }, + "end": { + "line": 399, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 8175, + "end": 8179, + "loc": { + "start": { + "line": 399, + "column": 9 + }, + "end": { + "line": 399, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8179, + "end": 8180, + "loc": { + "start": { + "line": 399, + "column": 13 + }, + "end": { + "line": 399, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "toString", + "start": 8180, + "end": 8188, + "loc": { + "start": { + "line": 399, + "column": 14 + }, + "end": { + "line": 399, + "column": 22 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8188, + "end": 8189, + "loc": { + "start": { + "line": 399, + "column": 22 + }, + "end": { + "line": 399, + "column": 23 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 8, + "start": 8189, + "end": 8190, + "loc": { + "start": { + "line": 399, + "column": 23 + }, + "end": { + "line": 399, + "column": 24 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8190, + "end": 8191, + "loc": { + "start": { + "line": 399, + "column": 24 + }, + "end": { + "line": 399, + "column": 25 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8191, + "end": 8192, + "loc": { + "start": { + "line": 399, + "column": 25 + }, + "end": { + "line": 399, + "column": 26 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8194, + "end": 8195, + "loc": { + "start": { + "line": 400, + "column": 1 + }, + "end": { + "line": 400, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "hex", + "start": 8198, + "end": 8201, + "loc": { + "start": { + "line": 402, + "column": 1 + }, + "end": { + "line": 402, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8201, + "end": 8202, + "loc": { + "start": { + "line": 402, + "column": 4 + }, + "end": { + "line": 402, + "column": 5 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8202, + "end": 8203, + "loc": { + "start": { + "line": 402, + "column": 5 + }, + "end": { + "line": 402, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8204, + "end": 8205, + "loc": { + "start": { + "line": 402, + "column": 7 + }, + "end": { + "line": 402, + "column": 8 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 8208, + "end": 8214, + "loc": { + "start": { + "line": 403, + "column": 2 + }, + "end": { + "line": 403, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 8215, + "end": 8219, + "loc": { + "start": { + "line": 403, + "column": 9 + }, + "end": { + "line": 403, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8219, + "end": 8220, + "loc": { + "start": { + "line": 403, + "column": 13 + }, + "end": { + "line": 403, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "toString", + "start": 8220, + "end": 8228, + "loc": { + "start": { + "line": 403, + "column": 14 + }, + "end": { + "line": 403, + "column": 22 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8228, + "end": 8229, + "loc": { + "start": { + "line": 403, + "column": 22 + }, + "end": { + "line": 403, + "column": 23 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 16, + "start": 8229, + "end": 8231, + "loc": { + "start": { + "line": 403, + "column": 23 + }, + "end": { + "line": 403, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8231, + "end": 8232, + "loc": { + "start": { + "line": 403, + "column": 25 + }, + "end": { + "line": 403, + "column": 26 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8232, + "end": 8233, + "loc": { + "start": { + "line": 403, + "column": 26 + }, + "end": { + "line": 403, + "column": 27 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8235, + "end": 8236, + "loc": { + "start": { + "line": 404, + "column": 1 + }, + "end": { + "line": 404, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "toJSON", + "start": 8239, + "end": 8245, + "loc": { + "start": { + "line": 406, + "column": 1 + }, + "end": { + "line": 406, + "column": 7 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8245, + "end": 8246, + "loc": { + "start": { + "line": 406, + "column": 7 + }, + "end": { + "line": 406, + "column": 8 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8246, + "end": 8247, + "loc": { + "start": { + "line": 406, + "column": 8 + }, + "end": { + "line": 406, + "column": 9 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8248, + "end": 8249, + "loc": { + "start": { + "line": 406, + "column": 10 + }, + "end": { + "line": 406, + "column": 11 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 8252, + "end": 8258, + "loc": { + "start": { + "line": 407, + "column": 2 + }, + "end": { + "line": 407, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 8259, + "end": 8263, + "loc": { + "start": { + "line": 407, + "column": 9 + }, + "end": { + "line": 407, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8263, + "end": 8264, + "loc": { + "start": { + "line": 407, + "column": 13 + }, + "end": { + "line": 407, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "hex", + "start": 8264, + "end": 8267, + "loc": { + "start": { + "line": 407, + "column": 14 + }, + "end": { + "line": 407, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8267, + "end": 8268, + "loc": { + "start": { + "line": 407, + "column": 17 + }, + "end": { + "line": 407, + "column": 18 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8268, + "end": 8269, + "loc": { + "start": { + "line": 407, + "column": 18 + }, + "end": { + "line": 407, + "column": 19 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8269, + "end": 8270, + "loc": { + "start": { + "line": 407, + "column": 19 + }, + "end": { + "line": 407, + "column": 20 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8272, + "end": 8273, + "loc": { + "start": { + "line": 408, + "column": 1 + }, + "end": { + "line": 408, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "digits", + "start": 8276, + "end": 8282, + "loc": { + "start": { + "line": 410, + "column": 1 + }, + "end": { + "line": 410, + "column": 7 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8282, + "end": 8283, + "loc": { + "start": { + "line": 410, + "column": 7 + }, + "end": { + "line": 410, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 8283, + "end": 8287, + "loc": { + "start": { + "line": 410, + "column": 8 + }, + "end": { + "line": 410, + "column": 12 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 8288, + "end": 8289, + "loc": { + "start": { + "line": 410, + "column": 13 + }, + "end": { + "line": 410, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "DEFAULT_DISPLAY_BASE", + "start": 8290, + "end": 8310, + "loc": { + "start": { + "line": 410, + "column": 15 + }, + "end": { + "line": 410, + "column": 35 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8310, + "end": 8311, + "loc": { + "start": { + "line": 410, + "column": 35 + }, + "end": { + "line": 410, + "column": 36 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8312, + "end": 8313, + "loc": { + "start": { + "line": 410, + "column": 37 + }, + "end": { + "line": 410, + "column": 38 + } + } + }, + { + "type": "CommentLine", + "value": " TODO Once #to is implemented we can rewrite this as", + "start": 8316, + "end": 8370, + "loc": { + "start": { + "line": 411, + "column": 2 + }, + "end": { + "line": 411, + "column": 56 + } + } + }, + { + "type": "CommentLine", + "value": " return this.to(LITTLE_ENDIAN, base, Array) ;", + "start": 8373, + "end": 8420, + "loc": { + "start": { + "line": 412, + "column": 2 + }, + "end": { + "line": 412, + "column": 49 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 8423, + "end": 8429, + "loc": { + "start": { + "line": 413, + "column": 2 + }, + "end": { + "line": 413, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "convert", + "start": 8430, + "end": 8437, + "loc": { + "start": { + "line": 413, + "column": 9 + }, + "end": { + "line": 413, + "column": 16 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8437, + "end": 8438, + "loc": { + "start": { + "line": 413, + "column": 16 + }, + "end": { + "line": 413, + "column": 17 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 8442, + "end": 8446, + "loc": { + "start": { + "line": 414, + "column": 3 + }, + "end": { + "line": 414, + "column": 7 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8446, + "end": 8447, + "loc": { + "start": { + "line": 414, + "column": 7 + }, + "end": { + "line": 414, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 8447, + "end": 8452, + "loc": { + "start": { + "line": 414, + "column": 8 + }, + "end": { + "line": 414, + "column": 13 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8452, + "end": 8453, + "loc": { + "start": { + "line": 414, + "column": 13 + }, + "end": { + "line": 414, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 8457, + "end": 8461, + "loc": { + "start": { + "line": 415, + "column": 3 + }, + "end": { + "line": 415, + "column": 7 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8461, + "end": 8462, + "loc": { + "start": { + "line": 415, + "column": 7 + }, + "end": { + "line": 415, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 8466, + "end": 8470, + "loc": { + "start": { + "line": 416, + "column": 3 + }, + "end": { + "line": 416, + "column": 7 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8470, + "end": 8471, + "loc": { + "start": { + "line": 416, + "column": 7 + }, + "end": { + "line": 416, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 8471, + "end": 8477, + "loc": { + "start": { + "line": 416, + "column": 8 + }, + "end": { + "line": 416, + "column": 14 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8477, + "end": 8478, + "loc": { + "start": { + "line": 416, + "column": 14 + }, + "end": { + "line": 416, + "column": 15 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 8482, + "end": 8483, + "loc": { + "start": { + "line": 417, + "column": 3 + }, + "end": { + "line": 417, + "column": 4 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8483, + "end": 8484, + "loc": { + "start": { + "line": 417, + "column": 4 + }, + "end": { + "line": 417, + "column": 5 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 8488, + "end": 8492, + "loc": { + "start": { + "line": 418, + "column": 3 + }, + "end": { + "line": 418, + "column": 7 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8492, + "end": 8493, + "loc": { + "start": { + "line": 418, + "column": 7 + }, + "end": { + "line": 418, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 8493, + "end": 8499, + "loc": { + "start": { + "line": 418, + "column": 8 + }, + "end": { + "line": 418, + "column": 14 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8499, + "end": 8500, + "loc": { + "start": { + "line": 418, + "column": 14 + }, + "end": { + "line": 418, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 8500, + "end": 8506, + "loc": { + "start": { + "line": 418, + "column": 15 + }, + "end": { + "line": 418, + "column": 21 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8506, + "end": 8507, + "loc": { + "start": { + "line": 418, + "column": 21 + }, + "end": { + "line": 418, + "column": 22 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8510, + "end": 8511, + "loc": { + "start": { + "line": 419, + "column": 2 + }, + "end": { + "line": 419, + "column": 3 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8511, + "end": 8512, + "loc": { + "start": { + "line": 419, + "column": 3 + }, + "end": { + "line": 419, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "reverse", + "start": 8512, + "end": 8519, + "loc": { + "start": { + "line": 419, + "column": 4 + }, + "end": { + "line": 419, + "column": 11 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8519, + "end": 8520, + "loc": { + "start": { + "line": 419, + "column": 11 + }, + "end": { + "line": 419, + "column": 12 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8520, + "end": 8521, + "loc": { + "start": { + "line": 419, + "column": 12 + }, + "end": { + "line": 419, + "column": 13 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8521, + "end": 8522, + "loc": { + "start": { + "line": 419, + "column": 13 + }, + "end": { + "line": 419, + "column": 14 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8524, + "end": 8525, + "loc": { + "start": { + "line": 420, + "column": 1 + }, + "end": { + "line": 420, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "bits", + "start": 8528, + "end": 8532, + "loc": { + "start": { + "line": 422, + "column": 1 + }, + "end": { + "line": 422, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8532, + "end": 8533, + "loc": { + "start": { + "line": 422, + "column": 5 + }, + "end": { + "line": 422, + "column": 6 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8533, + "end": 8534, + "loc": { + "start": { + "line": 422, + "column": 6 + }, + "end": { + "line": 422, + "column": 7 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8535, + "end": 8536, + "loc": { + "start": { + "line": 422, + "column": 8 + }, + "end": { + "line": 422, + "column": 9 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 8539, + "end": 8545, + "loc": { + "start": { + "line": 423, + "column": 2 + }, + "end": { + "line": 423, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 8546, + "end": 8550, + "loc": { + "start": { + "line": 423, + "column": 9 + }, + "end": { + "line": 423, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8550, + "end": 8551, + "loc": { + "start": { + "line": 423, + "column": 13 + }, + "end": { + "line": 423, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "digits", + "start": 8551, + "end": 8557, + "loc": { + "start": { + "line": 423, + "column": 14 + }, + "end": { + "line": 423, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8557, + "end": 8558, + "loc": { + "start": { + "line": 423, + "column": 20 + }, + "end": { + "line": 423, + "column": 21 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 2, + "start": 8558, + "end": 8559, + "loc": { + "start": { + "line": 423, + "column": 21 + }, + "end": { + "line": 423, + "column": 22 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8559, + "end": 8560, + "loc": { + "start": { + "line": 423, + "column": 22 + }, + "end": { + "line": 423, + "column": 23 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8560, + "end": 8561, + "loc": { + "start": { + "line": 423, + "column": 23 + }, + "end": { + "line": 423, + "column": 24 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8563, + "end": 8564, + "loc": { + "start": { + "line": 424, + "column": 1 + }, + "end": { + "line": 424, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "divides", + "start": 8567, + "end": 8574, + "loc": { + "start": { + "line": 426, + "column": 1 + }, + "end": { + "line": 426, + "column": 8 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8574, + "end": 8575, + "loc": { + "start": { + "line": 426, + "column": 8 + }, + "end": { + "line": 426, + "column": 9 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 8575, + "end": 8580, + "loc": { + "start": { + "line": 426, + "column": 9 + }, + "end": { + "line": 426, + "column": 14 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8580, + "end": 8581, + "loc": { + "start": { + "line": 426, + "column": 14 + }, + "end": { + "line": 426, + "column": 15 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8582, + "end": 8583, + "loc": { + "start": { + "line": 426, + "column": 16 + }, + "end": { + "line": 426, + "column": 17 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 8586, + "end": 8592, + "loc": { + "start": { + "line": 427, + "column": 2 + }, + "end": { + "line": 427, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 8593, + "end": 8598, + "loc": { + "start": { + "line": 427, + "column": 9 + }, + "end": { + "line": 427, + "column": 14 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8598, + "end": 8599, + "loc": { + "start": { + "line": 427, + "column": 14 + }, + "end": { + "line": 427, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "mod", + "start": 8599, + "end": 8602, + "loc": { + "start": { + "line": 427, + "column": 15 + }, + "end": { + "line": 427, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8602, + "end": 8603, + "loc": { + "start": { + "line": 427, + "column": 18 + }, + "end": { + "line": 427, + "column": 19 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 8603, + "end": 8607, + "loc": { + "start": { + "line": 427, + "column": 19 + }, + "end": { + "line": 427, + "column": 23 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8607, + "end": 8608, + "loc": { + "start": { + "line": 427, + "column": 23 + }, + "end": { + "line": 427, + "column": 24 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8608, + "end": 8609, + "loc": { + "start": { + "line": 427, + "column": 24 + }, + "end": { + "line": 427, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "iszero", + "start": 8609, + "end": 8615, + "loc": { + "start": { + "line": 427, + "column": 25 + }, + "end": { + "line": 427, + "column": 31 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8615, + "end": 8616, + "loc": { + "start": { + "line": 427, + "column": 31 + }, + "end": { + "line": 427, + "column": 32 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8616, + "end": 8617, + "loc": { + "start": { + "line": 427, + "column": 32 + }, + "end": { + "line": 427, + "column": 33 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8617, + "end": 8618, + "loc": { + "start": { + "line": 427, + "column": 33 + }, + "end": { + "line": 427, + "column": 34 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8620, + "end": 8621, + "loc": { + "start": { + "line": 428, + "column": 1 + }, + "end": { + "line": 428, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "divide_knowing_divisible_by", + "start": 8624, + "end": 8651, + "loc": { + "start": { + "line": 430, + "column": 1 + }, + "end": { + "line": 430, + "column": 28 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8651, + "end": 8652, + "loc": { + "start": { + "line": 430, + "column": 28 + }, + "end": { + "line": 430, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 8652, + "end": 8657, + "loc": { + "start": { + "line": 430, + "column": 29 + }, + "end": { + "line": 430, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8657, + "end": 8658, + "loc": { + "start": { + "line": 430, + "column": 34 + }, + "end": { + "line": 430, + "column": 35 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8659, + "end": 8660, + "loc": { + "start": { + "line": 430, + "column": 36 + }, + "end": { + "line": 430, + "column": 37 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize", + "start": 8663, + "end": 8679, + "loc": { + "start": { + "line": 431, + "column": 2 + }, + "end": { + "line": 431, + "column": 18 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 8682, + "end": 8688, + "loc": { + "start": { + "line": 432, + "column": 2 + }, + "end": { + "line": 432, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 8689, + "end": 8693, + "loc": { + "start": { + "line": 432, + "column": 9 + }, + "end": { + "line": 432, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8693, + "end": 8694, + "loc": { + "start": { + "line": 432, + "column": 13 + }, + "end": { + "line": 432, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "div", + "start": 8694, + "end": 8697, + "loc": { + "start": { + "line": 432, + "column": 14 + }, + "end": { + "line": 432, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8697, + "end": 8698, + "loc": { + "start": { + "line": 432, + "column": 17 + }, + "end": { + "line": 432, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 8698, + "end": 8703, + "loc": { + "start": { + "line": 432, + "column": 18 + }, + "end": { + "line": 432, + "column": 23 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8703, + "end": 8704, + "loc": { + "start": { + "line": 432, + "column": 23 + }, + "end": { + "line": 432, + "column": 24 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8704, + "end": 8705, + "loc": { + "start": { + "line": 432, + "column": 24 + }, + "end": { + "line": 432, + "column": 25 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8707, + "end": 8708, + "loc": { + "start": { + "line": 433, + "column": 1 + }, + "end": { + "line": 433, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cmp", + "start": 8711, + "end": 8714, + "loc": { + "start": { + "line": 435, + "column": 1 + }, + "end": { + "line": 435, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8714, + "end": 8715, + "loc": { + "start": { + "line": 435, + "column": 4 + }, + "end": { + "line": 435, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 8715, + "end": 8720, + "loc": { + "start": { + "line": 435, + "column": 5 + }, + "end": { + "line": 435, + "column": 10 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8720, + "end": 8721, + "loc": { + "start": { + "line": 435, + "column": 10 + }, + "end": { + "line": 435, + "column": 11 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8722, + "end": 8723, + "loc": { + "start": { + "line": 435, + "column": 12 + }, + "end": { + "line": 435, + "column": 13 + } + } + }, + { + "type": "CommentLine", + "value": " TODO optimize with _trim_positive", + "start": 8726, + "end": 8762, + "loc": { + "start": { + "line": 436, + "column": 2 + }, + "end": { + "line": 436, + "column": 38 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 8766, + "end": 8768, + "loc": { + "start": { + "line": 438, + "column": 2 + }, + "end": { + "line": 438, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8769, + "end": 8770, + "loc": { + "start": { + "line": 438, + "column": 5 + }, + "end": { + "line": 438, + "column": 6 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 8770, + "end": 8774, + "loc": { + "start": { + "line": 438, + "column": 6 + }, + "end": { + "line": 438, + "column": 10 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8774, + "end": 8775, + "loc": { + "start": { + "line": 438, + "column": 10 + }, + "end": { + "line": 438, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "iszero", + "start": 8775, + "end": 8781, + "loc": { + "start": { + "line": 438, + "column": 11 + }, + "end": { + "line": 438, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8781, + "end": 8782, + "loc": { + "start": { + "line": 438, + "column": 17 + }, + "end": { + "line": 438, + "column": 18 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8782, + "end": 8783, + "loc": { + "start": { + "line": 438, + "column": 18 + }, + "end": { + "line": 438, + "column": 19 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8783, + "end": 8784, + "loc": { + "start": { + "line": 438, + "column": 19 + }, + "end": { + "line": 438, + "column": 20 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8785, + "end": 8786, + "loc": { + "start": { + "line": 438, + "column": 21 + }, + "end": { + "line": 438, + "column": 22 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 8790, + "end": 8792, + "loc": { + "start": { + "line": 439, + "column": 3 + }, + "end": { + "line": 439, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8793, + "end": 8794, + "loc": { + "start": { + "line": 439, + "column": 6 + }, + "end": { + "line": 439, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 8794, + "end": 8799, + "loc": { + "start": { + "line": 439, + "column": 7 + }, + "end": { + "line": 439, + "column": 12 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8799, + "end": 8800, + "loc": { + "start": { + "line": 439, + "column": 12 + }, + "end": { + "line": 439, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "iszero", + "start": 8800, + "end": 8806, + "loc": { + "start": { + "line": 439, + "column": 13 + }, + "end": { + "line": 439, + "column": 19 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8806, + "end": 8807, + "loc": { + "start": { + "line": 439, + "column": 19 + }, + "end": { + "line": 439, + "column": 20 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8807, + "end": 8808, + "loc": { + "start": { + "line": 439, + "column": 20 + }, + "end": { + "line": 439, + "column": 21 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8808, + "end": 8809, + "loc": { + "start": { + "line": 439, + "column": 21 + }, + "end": { + "line": 439, + "column": 22 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 8810, + "end": 8816, + "loc": { + "start": { + "line": 439, + "column": 23 + }, + "end": { + "line": 439, + "column": 29 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 8817, + "end": 8818, + "loc": { + "start": { + "line": 439, + "column": 30 + }, + "end": { + "line": 439, + "column": 31 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8818, + "end": 8819, + "loc": { + "start": { + "line": 439, + "column": 31 + }, + "end": { + "line": 439, + "column": 32 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 8823, + "end": 8825, + "loc": { + "start": { + "line": 440, + "column": 3 + }, + "end": { + "line": 440, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8826, + "end": 8827, + "loc": { + "start": { + "line": 440, + "column": 6 + }, + "end": { + "line": 440, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 8827, + "end": 8832, + "loc": { + "start": { + "line": 440, + "column": 7 + }, + "end": { + "line": 440, + "column": 12 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8832, + "end": 8833, + "loc": { + "start": { + "line": 440, + "column": 12 + }, + "end": { + "line": 440, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 8833, + "end": 8845, + "loc": { + "start": { + "line": 440, + "column": 13 + }, + "end": { + "line": 440, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8845, + "end": 8846, + "loc": { + "start": { + "line": 440, + "column": 25 + }, + "end": { + "line": 440, + "column": 26 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 8847, + "end": 8853, + "loc": { + "start": { + "line": 440, + "column": 27 + }, + "end": { + "line": 440, + "column": 33 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 8854, + "end": 8855, + "loc": { + "start": { + "line": 440, + "column": 34 + }, + "end": { + "line": 440, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8855, + "end": 8856, + "loc": { + "start": { + "line": 440, + "column": 35 + }, + "end": { + "line": 440, + "column": 36 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 8860, + "end": 8866, + "loc": { + "start": { + "line": 441, + "column": 3 + }, + "end": { + "line": 441, + "column": 9 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 8867, + "end": 8868, + "loc": { + "start": { + "line": 441, + "column": 10 + }, + "end": { + "line": 441, + "column": 11 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 8868, + "end": 8869, + "loc": { + "start": { + "line": 441, + "column": 11 + }, + "end": { + "line": 441, + "column": 12 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8869, + "end": 8870, + "loc": { + "start": { + "line": 441, + "column": 12 + }, + "end": { + "line": 441, + "column": 13 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8873, + "end": 8874, + "loc": { + "start": { + "line": 442, + "column": 2 + }, + "end": { + "line": 442, + "column": 3 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 8878, + "end": 8880, + "loc": { + "start": { + "line": 444, + "column": 2 + }, + "end": { + "line": 444, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8881, + "end": 8882, + "loc": { + "start": { + "line": 444, + "column": 5 + }, + "end": { + "line": 444, + "column": 6 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 8882, + "end": 8886, + "loc": { + "start": { + "line": 444, + "column": 6 + }, + "end": { + "line": 444, + "column": 10 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8886, + "end": 8887, + "loc": { + "start": { + "line": 444, + "column": 10 + }, + "end": { + "line": 444, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 8887, + "end": 8899, + "loc": { + "start": { + "line": 444, + "column": 11 + }, + "end": { + "line": 444, + "column": 23 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": "<", + "start": 8900, + "end": 8901, + "loc": { + "start": { + "line": 444, + "column": 24 + }, + "end": { + "line": 444, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 8902, + "end": 8907, + "loc": { + "start": { + "line": 444, + "column": 26 + }, + "end": { + "line": 444, + "column": 31 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8907, + "end": 8908, + "loc": { + "start": { + "line": 444, + "column": 31 + }, + "end": { + "line": 444, + "column": 32 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 8908, + "end": 8920, + "loc": { + "start": { + "line": 444, + "column": 32 + }, + "end": { + "line": 444, + "column": 44 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8920, + "end": 8921, + "loc": { + "start": { + "line": 444, + "column": 44 + }, + "end": { + "line": 444, + "column": 45 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 8922, + "end": 8928, + "loc": { + "start": { + "line": 444, + "column": 46 + }, + "end": { + "line": 444, + "column": 52 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 8929, + "end": 8930, + "loc": { + "start": { + "line": 444, + "column": 53 + }, + "end": { + "line": 444, + "column": 54 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 8930, + "end": 8931, + "loc": { + "start": { + "line": 444, + "column": 54 + }, + "end": { + "line": 444, + "column": 55 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8931, + "end": 8932, + "loc": { + "start": { + "line": 444, + "column": 55 + }, + "end": { + "line": 444, + "column": 56 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 8935, + "end": 8937, + "loc": { + "start": { + "line": 445, + "column": 2 + }, + "end": { + "line": 445, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8938, + "end": 8939, + "loc": { + "start": { + "line": 445, + "column": 5 + }, + "end": { + "line": 445, + "column": 6 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 8939, + "end": 8943, + "loc": { + "start": { + "line": 445, + "column": 6 + }, + "end": { + "line": 445, + "column": 10 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8943, + "end": 8944, + "loc": { + "start": { + "line": 445, + "column": 10 + }, + "end": { + "line": 445, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 8944, + "end": 8956, + "loc": { + "start": { + "line": 445, + "column": 11 + }, + "end": { + "line": 445, + "column": 23 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": ">", + "start": 8957, + "end": 8958, + "loc": { + "start": { + "line": 445, + "column": 24 + }, + "end": { + "line": 445, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 8959, + "end": 8964, + "loc": { + "start": { + "line": 445, + "column": 26 + }, + "end": { + "line": 445, + "column": 31 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8964, + "end": 8965, + "loc": { + "start": { + "line": 445, + "column": 31 + }, + "end": { + "line": 445, + "column": 32 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 8965, + "end": 8977, + "loc": { + "start": { + "line": 445, + "column": 32 + }, + "end": { + "line": 445, + "column": 44 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8977, + "end": 8978, + "loc": { + "start": { + "line": 445, + "column": 44 + }, + "end": { + "line": 445, + "column": 45 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 8979, + "end": 8985, + "loc": { + "start": { + "line": 445, + "column": 46 + }, + "end": { + "line": 445, + "column": 52 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 8986, + "end": 8987, + "loc": { + "start": { + "line": 445, + "column": 53 + }, + "end": { + "line": 445, + "column": 54 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8987, + "end": 8988, + "loc": { + "start": { + "line": 445, + "column": 54 + }, + "end": { + "line": 445, + "column": 55 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 8992, + "end": 8997, + "loc": { + "start": { + "line": 447, + "column": 2 + }, + "end": { + "line": 447, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 8998, + "end": 8999, + "loc": { + "start": { + "line": 447, + "column": 8 + }, + "end": { + "line": 447, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 9000, + "end": 9001, + "loc": { + "start": { + "line": 447, + "column": 10 + }, + "end": { + "line": 447, + "column": 11 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 9002, + "end": 9006, + "loc": { + "start": { + "line": 447, + "column": 12 + }, + "end": { + "line": 447, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9006, + "end": 9007, + "loc": { + "start": { + "line": 447, + "column": 16 + }, + "end": { + "line": 447, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 9007, + "end": 9013, + "loc": { + "start": { + "line": 447, + "column": 17 + }, + "end": { + "line": 447, + "column": 23 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9013, + "end": 9014, + "loc": { + "start": { + "line": 447, + "column": 23 + }, + "end": { + "line": 447, + "column": 24 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 9017, + "end": 9022, + "loc": { + "start": { + "line": 448, + "column": 2 + }, + "end": { + "line": 448, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 9023, + "end": 9024, + "loc": { + "start": { + "line": 448, + "column": 8 + }, + "end": { + "line": 448, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 9025, + "end": 9026, + "loc": { + "start": { + "line": 448, + "column": 10 + }, + "end": { + "line": 448, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 9027, + "end": 9032, + "loc": { + "start": { + "line": 448, + "column": 12 + }, + "end": { + "line": 448, + "column": 17 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9032, + "end": 9033, + "loc": { + "start": { + "line": 448, + "column": 17 + }, + "end": { + "line": 448, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs_in_base", + "start": 9033, + "end": 9047, + "loc": { + "start": { + "line": 448, + "column": 18 + }, + "end": { + "line": 448, + "column": 32 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9047, + "end": 9048, + "loc": { + "start": { + "line": 448, + "column": 32 + }, + "end": { + "line": 448, + "column": 33 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 9048, + "end": 9052, + "loc": { + "start": { + "line": 448, + "column": 33 + }, + "end": { + "line": 448, + "column": 37 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9052, + "end": 9053, + "loc": { + "start": { + "line": 448, + "column": 37 + }, + "end": { + "line": 448, + "column": 38 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 9053, + "end": 9058, + "loc": { + "start": { + "line": 448, + "column": 38 + }, + "end": { + "line": 448, + "column": 43 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9058, + "end": 9059, + "loc": { + "start": { + "line": 448, + "column": 43 + }, + "end": { + "line": 448, + "column": 44 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9059, + "end": 9060, + "loc": { + "start": { + "line": 448, + "column": 44 + }, + "end": { + "line": 448, + "column": 45 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 9064, + "end": 9070, + "loc": { + "start": { + "line": 450, + "column": 2 + }, + "end": { + "line": 450, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 9071, + "end": 9075, + "loc": { + "start": { + "line": 450, + "column": 9 + }, + "end": { + "line": 450, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9075, + "end": 9076, + "loc": { + "start": { + "line": 450, + "column": 13 + }, + "end": { + "line": 450, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 9076, + "end": 9088, + "loc": { + "start": { + "line": 450, + "column": 14 + }, + "end": { + "line": 450, + "column": 26 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "===", + "start": 9089, + "end": 9092, + "loc": { + "start": { + "line": 450, + "column": 27 + }, + "end": { + "line": 450, + "column": 30 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 9093, + "end": 9094, + "loc": { + "start": { + "line": 450, + "column": 31 + }, + "end": { + "line": 450, + "column": 32 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9098, + "end": 9099, + "loc": { + "start": { + "line": 451, + "column": 3 + }, + "end": { + "line": 451, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cmp", + "start": 9100, + "end": 9103, + "loc": { + "start": { + "line": 451, + "column": 5 + }, + "end": { + "line": 451, + "column": 8 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9103, + "end": 9104, + "loc": { + "start": { + "line": 451, + "column": 8 + }, + "end": { + "line": 451, + "column": 9 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 9104, + "end": 9105, + "loc": { + "start": { + "line": 451, + "column": 9 + }, + "end": { + "line": 451, + "column": 10 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9105, + "end": 9106, + "loc": { + "start": { + "line": 451, + "column": 10 + }, + "end": { + "line": 451, + "column": 11 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 9107, + "end": 9108, + "loc": { + "start": { + "line": 451, + "column": 12 + }, + "end": { + "line": 451, + "column": 13 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9108, + "end": 9109, + "loc": { + "start": { + "line": 451, + "column": 13 + }, + "end": { + "line": 451, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 9110, + "end": 9111, + "loc": { + "start": { + "line": 451, + "column": 15 + }, + "end": { + "line": 451, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9111, + "end": 9112, + "loc": { + "start": { + "line": 451, + "column": 16 + }, + "end": { + "line": 451, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 9112, + "end": 9118, + "loc": { + "start": { + "line": 451, + "column": 17 + }, + "end": { + "line": 451, + "column": 23 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9118, + "end": 9119, + "loc": { + "start": { + "line": 451, + "column": 23 + }, + "end": { + "line": 451, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 9120, + "end": 9121, + "loc": { + "start": { + "line": 451, + "column": 25 + }, + "end": { + "line": 451, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9121, + "end": 9122, + "loc": { + "start": { + "line": 451, + "column": 26 + }, + "end": { + "line": 451, + "column": 27 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 9123, + "end": 9124, + "loc": { + "start": { + "line": 451, + "column": 28 + }, + "end": { + "line": 451, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9124, + "end": 9125, + "loc": { + "start": { + "line": 451, + "column": 29 + }, + "end": { + "line": 451, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 9126, + "end": 9127, + "loc": { + "start": { + "line": 451, + "column": 31 + }, + "end": { + "line": 451, + "column": 32 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9127, + "end": 9128, + "loc": { + "start": { + "line": 451, + "column": 32 + }, + "end": { + "line": 451, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 9128, + "end": 9134, + "loc": { + "start": { + "line": 451, + "column": 33 + }, + "end": { + "line": 451, + "column": 39 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9134, + "end": 9135, + "loc": { + "start": { + "line": 451, + "column": 39 + }, + "end": { + "line": 451, + "column": 40 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9139, + "end": 9140, + "loc": { + "start": { + "line": 452, + "column": 3 + }, + "end": { + "line": 452, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cmp", + "start": 9141, + "end": 9144, + "loc": { + "start": { + "line": 452, + "column": 5 + }, + "end": { + "line": 452, + "column": 8 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9144, + "end": 9145, + "loc": { + "start": { + "line": 452, + "column": 8 + }, + "end": { + "line": 452, + "column": 9 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 9145, + "end": 9146, + "loc": { + "start": { + "line": 452, + "column": 9 + }, + "end": { + "line": 452, + "column": 10 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9146, + "end": 9147, + "loc": { + "start": { + "line": 452, + "column": 10 + }, + "end": { + "line": 452, + "column": 11 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 9148, + "end": 9149, + "loc": { + "start": { + "line": 452, + "column": 12 + }, + "end": { + "line": 452, + "column": 13 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9149, + "end": 9150, + "loc": { + "start": { + "line": 452, + "column": 13 + }, + "end": { + "line": 452, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 9151, + "end": 9152, + "loc": { + "start": { + "line": 452, + "column": 15 + }, + "end": { + "line": 452, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9152, + "end": 9153, + "loc": { + "start": { + "line": 452, + "column": 16 + }, + "end": { + "line": 452, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 9153, + "end": 9159, + "loc": { + "start": { + "line": 452, + "column": 17 + }, + "end": { + "line": 452, + "column": 23 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9159, + "end": 9160, + "loc": { + "start": { + "line": 452, + "column": 23 + }, + "end": { + "line": 452, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 9161, + "end": 9162, + "loc": { + "start": { + "line": 452, + "column": 25 + }, + "end": { + "line": 452, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9162, + "end": 9163, + "loc": { + "start": { + "line": 452, + "column": 26 + }, + "end": { + "line": 452, + "column": 27 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 9164, + "end": 9165, + "loc": { + "start": { + "line": 452, + "column": 28 + }, + "end": { + "line": 452, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9165, + "end": 9166, + "loc": { + "start": { + "line": 452, + "column": 29 + }, + "end": { + "line": 452, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 9167, + "end": 9168, + "loc": { + "start": { + "line": 452, + "column": 31 + }, + "end": { + "line": 452, + "column": 32 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9168, + "end": 9169, + "loc": { + "start": { + "line": 452, + "column": 32 + }, + "end": { + "line": 452, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 9169, + "end": 9175, + "loc": { + "start": { + "line": 452, + "column": 33 + }, + "end": { + "line": 452, + "column": 39 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9175, + "end": 9176, + "loc": { + "start": { + "line": 452, + "column": 39 + }, + "end": { + "line": 452, + "column": 40 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9176, + "end": 9177, + "loc": { + "start": { + "line": 452, + "column": 40 + }, + "end": { + "line": 452, + "column": 41 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9179, + "end": 9180, + "loc": { + "start": { + "line": 453, + "column": 1 + }, + "end": { + "line": 453, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cmpn", + "start": 9183, + "end": 9187, + "loc": { + "start": { + "line": 455, + "column": 1 + }, + "end": { + "line": 455, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9187, + "end": 9188, + "loc": { + "start": { + "line": 455, + "column": 5 + }, + "end": { + "line": 455, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 9188, + "end": 9194, + "loc": { + "start": { + "line": 455, + "column": 6 + }, + "end": { + "line": 455, + "column": 12 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9194, + "end": 9195, + "loc": { + "start": { + "line": 455, + "column": 12 + }, + "end": { + "line": 455, + "column": 13 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9196, + "end": 9197, + "loc": { + "start": { + "line": 455, + "column": 14 + }, + "end": { + "line": 455, + "column": 15 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 9200, + "end": 9206, + "loc": { + "start": { + "line": 456, + "column": 2 + }, + "end": { + "line": 456, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 9207, + "end": 9211, + "loc": { + "start": { + "line": 456, + "column": 9 + }, + "end": { + "line": 456, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9211, + "end": 9212, + "loc": { + "start": { + "line": 456, + "column": 13 + }, + "end": { + "line": 456, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cmp", + "start": 9212, + "end": 9215, + "loc": { + "start": { + "line": 456, + "column": 14 + }, + "end": { + "line": 456, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9215, + "end": 9216, + "loc": { + "start": { + "line": 456, + "column": 17 + }, + "end": { + "line": 456, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_from_number", + "start": 9216, + "end": 9228, + "loc": { + "start": { + "line": 456, + "column": 18 + }, + "end": { + "line": 456, + "column": 30 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9228, + "end": 9229, + "loc": { + "start": { + "line": 456, + "column": 30 + }, + "end": { + "line": 456, + "column": 31 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 9229, + "end": 9235, + "loc": { + "start": { + "line": 456, + "column": 31 + }, + "end": { + "line": 456, + "column": 37 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9235, + "end": 9236, + "loc": { + "start": { + "line": 456, + "column": 37 + }, + "end": { + "line": 456, + "column": 38 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9236, + "end": 9237, + "loc": { + "start": { + "line": 456, + "column": 38 + }, + "end": { + "line": 456, + "column": 39 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9237, + "end": 9238, + "loc": { + "start": { + "line": 456, + "column": 39 + }, + "end": { + "line": 456, + "column": 40 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9240, + "end": 9241, + "loc": { + "start": { + "line": 457, + "column": 1 + }, + "end": { + "line": 457, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "eq", + "start": 9244, + "end": 9246, + "loc": { + "start": { + "line": 459, + "column": 1 + }, + "end": { + "line": 459, + "column": 3 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9246, + "end": 9247, + "loc": { + "start": { + "line": 459, + "column": 3 + }, + "end": { + "line": 459, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 9247, + "end": 9252, + "loc": { + "start": { + "line": 459, + "column": 4 + }, + "end": { + "line": 459, + "column": 9 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9252, + "end": 9253, + "loc": { + "start": { + "line": 459, + "column": 9 + }, + "end": { + "line": 459, + "column": 10 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9254, + "end": 9255, + "loc": { + "start": { + "line": 459, + "column": 11 + }, + "end": { + "line": 459, + "column": 12 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 9258, + "end": 9264, + "loc": { + "start": { + "line": 460, + "column": 2 + }, + "end": { + "line": 460, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 9265, + "end": 9269, + "loc": { + "start": { + "line": 460, + "column": 9 + }, + "end": { + "line": 460, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9269, + "end": 9270, + "loc": { + "start": { + "line": 460, + "column": 13 + }, + "end": { + "line": 460, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cmp", + "start": 9270, + "end": 9273, + "loc": { + "start": { + "line": 460, + "column": 14 + }, + "end": { + "line": 460, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9273, + "end": 9274, + "loc": { + "start": { + "line": 460, + "column": 17 + }, + "end": { + "line": 460, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 9274, + "end": 9279, + "loc": { + "start": { + "line": 460, + "column": 18 + }, + "end": { + "line": 460, + "column": 23 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9279, + "end": 9280, + "loc": { + "start": { + "line": 460, + "column": 23 + }, + "end": { + "line": 460, + "column": 24 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "===", + "start": 9281, + "end": 9284, + "loc": { + "start": { + "line": 460, + "column": 25 + }, + "end": { + "line": 460, + "column": 28 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 9285, + "end": 9286, + "loc": { + "start": { + "line": 460, + "column": 29 + }, + "end": { + "line": 460, + "column": 30 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9286, + "end": 9287, + "loc": { + "start": { + "line": 460, + "column": 30 + }, + "end": { + "line": 460, + "column": 31 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9289, + "end": 9290, + "loc": { + "start": { + "line": 461, + "column": 1 + }, + "end": { + "line": 461, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "eqn", + "start": 9293, + "end": 9296, + "loc": { + "start": { + "line": 463, + "column": 1 + }, + "end": { + "line": 463, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9296, + "end": 9297, + "loc": { + "start": { + "line": 463, + "column": 4 + }, + "end": { + "line": 463, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 9297, + "end": 9303, + "loc": { + "start": { + "line": 463, + "column": 5 + }, + "end": { + "line": 463, + "column": 11 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9303, + "end": 9304, + "loc": { + "start": { + "line": 463, + "column": 11 + }, + "end": { + "line": 463, + "column": 12 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9305, + "end": 9306, + "loc": { + "start": { + "line": 463, + "column": 13 + }, + "end": { + "line": 463, + "column": 14 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 9309, + "end": 9315, + "loc": { + "start": { + "line": 464, + "column": 2 + }, + "end": { + "line": 464, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 9316, + "end": 9320, + "loc": { + "start": { + "line": 464, + "column": 9 + }, + "end": { + "line": 464, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9320, + "end": 9321, + "loc": { + "start": { + "line": 464, + "column": 13 + }, + "end": { + "line": 464, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cmpn", + "start": 9321, + "end": 9325, + "loc": { + "start": { + "line": 464, + "column": 14 + }, + "end": { + "line": 464, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9325, + "end": 9326, + "loc": { + "start": { + "line": 464, + "column": 18 + }, + "end": { + "line": 464, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 9326, + "end": 9332, + "loc": { + "start": { + "line": 464, + "column": 19 + }, + "end": { + "line": 464, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9332, + "end": 9333, + "loc": { + "start": { + "line": 464, + "column": 25 + }, + "end": { + "line": 464, + "column": 26 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "===", + "start": 9334, + "end": 9337, + "loc": { + "start": { + "line": 464, + "column": 27 + }, + "end": { + "line": 464, + "column": 30 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 9338, + "end": 9339, + "loc": { + "start": { + "line": 464, + "column": 31 + }, + "end": { + "line": 464, + "column": 32 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9339, + "end": 9340, + "loc": { + "start": { + "line": 464, + "column": 32 + }, + "end": { + "line": 464, + "column": 33 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9342, + "end": 9343, + "loc": { + "start": { + "line": 465, + "column": 1 + }, + "end": { + "line": 465, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ge", + "start": 9346, + "end": 9348, + "loc": { + "start": { + "line": 467, + "column": 1 + }, + "end": { + "line": 467, + "column": 3 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9348, + "end": 9349, + "loc": { + "start": { + "line": 467, + "column": 3 + }, + "end": { + "line": 467, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 9349, + "end": 9354, + "loc": { + "start": { + "line": 467, + "column": 4 + }, + "end": { + "line": 467, + "column": 9 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9354, + "end": 9355, + "loc": { + "start": { + "line": 467, + "column": 9 + }, + "end": { + "line": 467, + "column": 10 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9356, + "end": 9357, + "loc": { + "start": { + "line": 467, + "column": 11 + }, + "end": { + "line": 467, + "column": 12 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 9360, + "end": 9366, + "loc": { + "start": { + "line": 468, + "column": 2 + }, + "end": { + "line": 468, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 9367, + "end": 9371, + "loc": { + "start": { + "line": 468, + "column": 9 + }, + "end": { + "line": 468, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9371, + "end": 9372, + "loc": { + "start": { + "line": 468, + "column": 13 + }, + "end": { + "line": 468, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cmp", + "start": 9372, + "end": 9375, + "loc": { + "start": { + "line": 468, + "column": 14 + }, + "end": { + "line": 468, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9375, + "end": 9376, + "loc": { + "start": { + "line": 468, + "column": 17 + }, + "end": { + "line": 468, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 9376, + "end": 9381, + "loc": { + "start": { + "line": 468, + "column": 18 + }, + "end": { + "line": 468, + "column": 23 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9381, + "end": 9382, + "loc": { + "start": { + "line": 468, + "column": 23 + }, + "end": { + "line": 468, + "column": 24 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": ">=", + "start": 9383, + "end": 9385, + "loc": { + "start": { + "line": 468, + "column": 25 + }, + "end": { + "line": 468, + "column": 27 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 9386, + "end": 9387, + "loc": { + "start": { + "line": 468, + "column": 28 + }, + "end": { + "line": 468, + "column": 29 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9387, + "end": 9388, + "loc": { + "start": { + "line": 468, + "column": 29 + }, + "end": { + "line": 468, + "column": 30 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9390, + "end": 9391, + "loc": { + "start": { + "line": 469, + "column": 1 + }, + "end": { + "line": 469, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "gen", + "start": 9394, + "end": 9397, + "loc": { + "start": { + "line": 471, + "column": 1 + }, + "end": { + "line": 471, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9397, + "end": 9398, + "loc": { + "start": { + "line": 471, + "column": 4 + }, + "end": { + "line": 471, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 9398, + "end": 9404, + "loc": { + "start": { + "line": 471, + "column": 5 + }, + "end": { + "line": 471, + "column": 11 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9404, + "end": 9405, + "loc": { + "start": { + "line": 471, + "column": 11 + }, + "end": { + "line": 471, + "column": 12 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9406, + "end": 9407, + "loc": { + "start": { + "line": 471, + "column": 13 + }, + "end": { + "line": 471, + "column": 14 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 9410, + "end": 9416, + "loc": { + "start": { + "line": 472, + "column": 2 + }, + "end": { + "line": 472, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 9417, + "end": 9421, + "loc": { + "start": { + "line": 472, + "column": 9 + }, + "end": { + "line": 472, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9421, + "end": 9422, + "loc": { + "start": { + "line": 472, + "column": 13 + }, + "end": { + "line": 472, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cmpn", + "start": 9422, + "end": 9426, + "loc": { + "start": { + "line": 472, + "column": 14 + }, + "end": { + "line": 472, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9426, + "end": 9427, + "loc": { + "start": { + "line": 472, + "column": 18 + }, + "end": { + "line": 472, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 9427, + "end": 9433, + "loc": { + "start": { + "line": 472, + "column": 19 + }, + "end": { + "line": 472, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9433, + "end": 9434, + "loc": { + "start": { + "line": 472, + "column": 25 + }, + "end": { + "line": 472, + "column": 26 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": ">=", + "start": 9435, + "end": 9437, + "loc": { + "start": { + "line": 472, + "column": 27 + }, + "end": { + "line": 472, + "column": 29 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 9438, + "end": 9439, + "loc": { + "start": { + "line": 472, + "column": 30 + }, + "end": { + "line": 472, + "column": 31 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9439, + "end": 9440, + "loc": { + "start": { + "line": 472, + "column": 31 + }, + "end": { + "line": 472, + "column": 32 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9442, + "end": 9443, + "loc": { + "start": { + "line": 473, + "column": 1 + }, + "end": { + "line": 473, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "gt", + "start": 9446, + "end": 9448, + "loc": { + "start": { + "line": 475, + "column": 1 + }, + "end": { + "line": 475, + "column": 3 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9448, + "end": 9449, + "loc": { + "start": { + "line": 475, + "column": 3 + }, + "end": { + "line": 475, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 9449, + "end": 9454, + "loc": { + "start": { + "line": 475, + "column": 4 + }, + "end": { + "line": 475, + "column": 9 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9454, + "end": 9455, + "loc": { + "start": { + "line": 475, + "column": 9 + }, + "end": { + "line": 475, + "column": 10 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9456, + "end": 9457, + "loc": { + "start": { + "line": 475, + "column": 11 + }, + "end": { + "line": 475, + "column": 12 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 9460, + "end": 9466, + "loc": { + "start": { + "line": 476, + "column": 2 + }, + "end": { + "line": 476, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 9467, + "end": 9471, + "loc": { + "start": { + "line": 476, + "column": 9 + }, + "end": { + "line": 476, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9471, + "end": 9472, + "loc": { + "start": { + "line": 476, + "column": 13 + }, + "end": { + "line": 476, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cmp", + "start": 9472, + "end": 9475, + "loc": { + "start": { + "line": 476, + "column": 14 + }, + "end": { + "line": 476, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9475, + "end": 9476, + "loc": { + "start": { + "line": 476, + "column": 17 + }, + "end": { + "line": 476, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 9476, + "end": 9481, + "loc": { + "start": { + "line": 476, + "column": 18 + }, + "end": { + "line": 476, + "column": 23 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9481, + "end": 9482, + "loc": { + "start": { + "line": 476, + "column": 23 + }, + "end": { + "line": 476, + "column": 24 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": ">", + "start": 9483, + "end": 9484, + "loc": { + "start": { + "line": 476, + "column": 25 + }, + "end": { + "line": 476, + "column": 26 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 9485, + "end": 9486, + "loc": { + "start": { + "line": 476, + "column": 27 + }, + "end": { + "line": 476, + "column": 28 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9486, + "end": 9487, + "loc": { + "start": { + "line": 476, + "column": 28 + }, + "end": { + "line": 476, + "column": 29 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9489, + "end": 9490, + "loc": { + "start": { + "line": 477, + "column": 1 + }, + "end": { + "line": 477, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "gtn", + "start": 9493, + "end": 9496, + "loc": { + "start": { + "line": 479, + "column": 1 + }, + "end": { + "line": 479, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9496, + "end": 9497, + "loc": { + "start": { + "line": 479, + "column": 4 + }, + "end": { + "line": 479, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 9497, + "end": 9503, + "loc": { + "start": { + "line": 479, + "column": 5 + }, + "end": { + "line": 479, + "column": 11 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9503, + "end": 9504, + "loc": { + "start": { + "line": 479, + "column": 11 + }, + "end": { + "line": 479, + "column": 12 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9505, + "end": 9506, + "loc": { + "start": { + "line": 479, + "column": 13 + }, + "end": { + "line": 479, + "column": 14 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 9509, + "end": 9515, + "loc": { + "start": { + "line": 480, + "column": 2 + }, + "end": { + "line": 480, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 9516, + "end": 9520, + "loc": { + "start": { + "line": 480, + "column": 9 + }, + "end": { + "line": 480, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9520, + "end": 9521, + "loc": { + "start": { + "line": 480, + "column": 13 + }, + "end": { + "line": 480, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cmpn", + "start": 9521, + "end": 9525, + "loc": { + "start": { + "line": 480, + "column": 14 + }, + "end": { + "line": 480, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9525, + "end": 9526, + "loc": { + "start": { + "line": 480, + "column": 18 + }, + "end": { + "line": 480, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 9526, + "end": 9532, + "loc": { + "start": { + "line": 480, + "column": 19 + }, + "end": { + "line": 480, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9532, + "end": 9533, + "loc": { + "start": { + "line": 480, + "column": 25 + }, + "end": { + "line": 480, + "column": 26 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": ">", + "start": 9534, + "end": 9535, + "loc": { + "start": { + "line": 480, + "column": 27 + }, + "end": { + "line": 480, + "column": 28 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 9536, + "end": 9537, + "loc": { + "start": { + "line": 480, + "column": 29 + }, + "end": { + "line": 480, + "column": 30 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9537, + "end": 9538, + "loc": { + "start": { + "line": 480, + "column": 30 + }, + "end": { + "line": 480, + "column": 31 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9540, + "end": 9541, + "loc": { + "start": { + "line": 481, + "column": 1 + }, + "end": { + "line": 481, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "le", + "start": 9544, + "end": 9546, + "loc": { + "start": { + "line": 483, + "column": 1 + }, + "end": { + "line": 483, + "column": 3 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9546, + "end": 9547, + "loc": { + "start": { + "line": 483, + "column": 3 + }, + "end": { + "line": 483, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 9547, + "end": 9552, + "loc": { + "start": { + "line": 483, + "column": 4 + }, + "end": { + "line": 483, + "column": 9 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9552, + "end": 9553, + "loc": { + "start": { + "line": 483, + "column": 9 + }, + "end": { + "line": 483, + "column": 10 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9554, + "end": 9555, + "loc": { + "start": { + "line": 483, + "column": 11 + }, + "end": { + "line": 483, + "column": 12 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 9558, + "end": 9564, + "loc": { + "start": { + "line": 484, + "column": 2 + }, + "end": { + "line": 484, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 9565, + "end": 9569, + "loc": { + "start": { + "line": 484, + "column": 9 + }, + "end": { + "line": 484, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9569, + "end": 9570, + "loc": { + "start": { + "line": 484, + "column": 13 + }, + "end": { + "line": 484, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cmp", + "start": 9570, + "end": 9573, + "loc": { + "start": { + "line": 484, + "column": 14 + }, + "end": { + "line": 484, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9573, + "end": 9574, + "loc": { + "start": { + "line": 484, + "column": 17 + }, + "end": { + "line": 484, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 9574, + "end": 9579, + "loc": { + "start": { + "line": 484, + "column": 18 + }, + "end": { + "line": 484, + "column": 23 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9579, + "end": 9580, + "loc": { + "start": { + "line": 484, + "column": 23 + }, + "end": { + "line": 484, + "column": 24 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": "<=", + "start": 9581, + "end": 9583, + "loc": { + "start": { + "line": 484, + "column": 25 + }, + "end": { + "line": 484, + "column": 27 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 9584, + "end": 9585, + "loc": { + "start": { + "line": 484, + "column": 28 + }, + "end": { + "line": 484, + "column": 29 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9585, + "end": 9586, + "loc": { + "start": { + "line": 484, + "column": 29 + }, + "end": { + "line": 484, + "column": 30 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9588, + "end": 9589, + "loc": { + "start": { + "line": 485, + "column": 1 + }, + "end": { + "line": 485, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "len", + "start": 9592, + "end": 9595, + "loc": { + "start": { + "line": 487, + "column": 1 + }, + "end": { + "line": 487, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9595, + "end": 9596, + "loc": { + "start": { + "line": 487, + "column": 4 + }, + "end": { + "line": 487, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 9596, + "end": 9602, + "loc": { + "start": { + "line": 487, + "column": 5 + }, + "end": { + "line": 487, + "column": 11 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9602, + "end": 9603, + "loc": { + "start": { + "line": 487, + "column": 11 + }, + "end": { + "line": 487, + "column": 12 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9604, + "end": 9605, + "loc": { + "start": { + "line": 487, + "column": 13 + }, + "end": { + "line": 487, + "column": 14 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 9608, + "end": 9614, + "loc": { + "start": { + "line": 488, + "column": 2 + }, + "end": { + "line": 488, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 9615, + "end": 9619, + "loc": { + "start": { + "line": 488, + "column": 9 + }, + "end": { + "line": 488, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9619, + "end": 9620, + "loc": { + "start": { + "line": 488, + "column": 13 + }, + "end": { + "line": 488, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cmpn", + "start": 9620, + "end": 9624, + "loc": { + "start": { + "line": 488, + "column": 14 + }, + "end": { + "line": 488, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9624, + "end": 9625, + "loc": { + "start": { + "line": 488, + "column": 18 + }, + "end": { + "line": 488, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 9625, + "end": 9631, + "loc": { + "start": { + "line": 488, + "column": 19 + }, + "end": { + "line": 488, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9631, + "end": 9632, + "loc": { + "start": { + "line": 488, + "column": 25 + }, + "end": { + "line": 488, + "column": 26 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": "<=", + "start": 9633, + "end": 9635, + "loc": { + "start": { + "line": 488, + "column": 27 + }, + "end": { + "line": 488, + "column": 29 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 9636, + "end": 9637, + "loc": { + "start": { + "line": 488, + "column": 30 + }, + "end": { + "line": 488, + "column": 31 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9637, + "end": 9638, + "loc": { + "start": { + "line": 488, + "column": 31 + }, + "end": { + "line": 488, + "column": 32 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9640, + "end": 9641, + "loc": { + "start": { + "line": 489, + "column": 1 + }, + "end": { + "line": 489, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "lt", + "start": 9644, + "end": 9646, + "loc": { + "start": { + "line": 491, + "column": 1 + }, + "end": { + "line": 491, + "column": 3 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9646, + "end": 9647, + "loc": { + "start": { + "line": 491, + "column": 3 + }, + "end": { + "line": 491, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 9647, + "end": 9652, + "loc": { + "start": { + "line": 491, + "column": 4 + }, + "end": { + "line": 491, + "column": 9 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9652, + "end": 9653, + "loc": { + "start": { + "line": 491, + "column": 9 + }, + "end": { + "line": 491, + "column": 10 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9654, + "end": 9655, + "loc": { + "start": { + "line": 491, + "column": 11 + }, + "end": { + "line": 491, + "column": 12 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 9658, + "end": 9664, + "loc": { + "start": { + "line": 492, + "column": 2 + }, + "end": { + "line": 492, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 9665, + "end": 9669, + "loc": { + "start": { + "line": 492, + "column": 9 + }, + "end": { + "line": 492, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9669, + "end": 9670, + "loc": { + "start": { + "line": 492, + "column": 13 + }, + "end": { + "line": 492, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cmp", + "start": 9670, + "end": 9673, + "loc": { + "start": { + "line": 492, + "column": 14 + }, + "end": { + "line": 492, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9673, + "end": 9674, + "loc": { + "start": { + "line": 492, + "column": 17 + }, + "end": { + "line": 492, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 9674, + "end": 9679, + "loc": { + "start": { + "line": 492, + "column": 18 + }, + "end": { + "line": 492, + "column": 23 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9679, + "end": 9680, + "loc": { + "start": { + "line": 492, + "column": 23 + }, + "end": { + "line": 492, + "column": 24 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": "<", + "start": 9681, + "end": 9682, + "loc": { + "start": { + "line": 492, + "column": 25 + }, + "end": { + "line": 492, + "column": 26 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 9683, + "end": 9684, + "loc": { + "start": { + "line": 492, + "column": 27 + }, + "end": { + "line": 492, + "column": 28 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9684, + "end": 9685, + "loc": { + "start": { + "line": 492, + "column": 28 + }, + "end": { + "line": 492, + "column": 29 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9687, + "end": 9688, + "loc": { + "start": { + "line": 493, + "column": 1 + }, + "end": { + "line": 493, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ltn", + "start": 9691, + "end": 9694, + "loc": { + "start": { + "line": 495, + "column": 1 + }, + "end": { + "line": 495, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9694, + "end": 9695, + "loc": { + "start": { + "line": 495, + "column": 4 + }, + "end": { + "line": 495, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 9695, + "end": 9701, + "loc": { + "start": { + "line": 495, + "column": 5 + }, + "end": { + "line": 495, + "column": 11 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9701, + "end": 9702, + "loc": { + "start": { + "line": 495, + "column": 11 + }, + "end": { + "line": 495, + "column": 12 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9703, + "end": 9704, + "loc": { + "start": { + "line": 495, + "column": 13 + }, + "end": { + "line": 495, + "column": 14 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 9707, + "end": 9713, + "loc": { + "start": { + "line": 496, + "column": 2 + }, + "end": { + "line": 496, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 9714, + "end": 9718, + "loc": { + "start": { + "line": 496, + "column": 9 + }, + "end": { + "line": 496, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9718, + "end": 9719, + "loc": { + "start": { + "line": 496, + "column": 13 + }, + "end": { + "line": 496, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cmpn", + "start": 9719, + "end": 9723, + "loc": { + "start": { + "line": 496, + "column": 14 + }, + "end": { + "line": 496, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9723, + "end": 9724, + "loc": { + "start": { + "line": 496, + "column": 18 + }, + "end": { + "line": 496, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 9724, + "end": 9730, + "loc": { + "start": { + "line": 496, + "column": 19 + }, + "end": { + "line": 496, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9730, + "end": 9731, + "loc": { + "start": { + "line": 496, + "column": 25 + }, + "end": { + "line": 496, + "column": 26 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": "<", + "start": 9732, + "end": 9733, + "loc": { + "start": { + "line": 496, + "column": 27 + }, + "end": { + "line": 496, + "column": 28 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 9734, + "end": 9735, + "loc": { + "start": { + "line": 496, + "column": 29 + }, + "end": { + "line": 496, + "column": 30 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9735, + "end": 9736, + "loc": { + "start": { + "line": 496, + "column": 30 + }, + "end": { + "line": 496, + "column": 31 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9738, + "end": 9739, + "loc": { + "start": { + "line": 497, + "column": 1 + }, + "end": { + "line": 497, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ne", + "start": 9742, + "end": 9744, + "loc": { + "start": { + "line": 499, + "column": 1 + }, + "end": { + "line": 499, + "column": 3 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9744, + "end": 9745, + "loc": { + "start": { + "line": 499, + "column": 3 + }, + "end": { + "line": 499, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 9745, + "end": 9750, + "loc": { + "start": { + "line": 499, + "column": 4 + }, + "end": { + "line": 499, + "column": 9 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9750, + "end": 9751, + "loc": { + "start": { + "line": 499, + "column": 9 + }, + "end": { + "line": 499, + "column": 10 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9752, + "end": 9753, + "loc": { + "start": { + "line": 499, + "column": 11 + }, + "end": { + "line": 499, + "column": 12 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 9756, + "end": 9762, + "loc": { + "start": { + "line": 500, + "column": 2 + }, + "end": { + "line": 500, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 9763, + "end": 9767, + "loc": { + "start": { + "line": 500, + "column": 9 + }, + "end": { + "line": 500, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9767, + "end": 9768, + "loc": { + "start": { + "line": 500, + "column": 13 + }, + "end": { + "line": 500, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cmp", + "start": 9768, + "end": 9771, + "loc": { + "start": { + "line": 500, + "column": 14 + }, + "end": { + "line": 500, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9771, + "end": 9772, + "loc": { + "start": { + "line": 500, + "column": 17 + }, + "end": { + "line": 500, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 9772, + "end": 9777, + "loc": { + "start": { + "line": 500, + "column": 18 + }, + "end": { + "line": 500, + "column": 23 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9777, + "end": 9778, + "loc": { + "start": { + "line": 500, + "column": 23 + }, + "end": { + "line": 500, + "column": 24 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "!==", + "start": 9779, + "end": 9782, + "loc": { + "start": { + "line": 500, + "column": 25 + }, + "end": { + "line": 500, + "column": 28 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 9783, + "end": 9784, + "loc": { + "start": { + "line": 500, + "column": 29 + }, + "end": { + "line": 500, + "column": 30 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9784, + "end": 9785, + "loc": { + "start": { + "line": 500, + "column": 30 + }, + "end": { + "line": 500, + "column": 31 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9787, + "end": 9788, + "loc": { + "start": { + "line": 501, + "column": 1 + }, + "end": { + "line": 501, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "nen", + "start": 9791, + "end": 9794, + "loc": { + "start": { + "line": 503, + "column": 1 + }, + "end": { + "line": 503, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9794, + "end": 9795, + "loc": { + "start": { + "line": 503, + "column": 4 + }, + "end": { + "line": 503, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 9795, + "end": 9801, + "loc": { + "start": { + "line": 503, + "column": 5 + }, + "end": { + "line": 503, + "column": 11 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9801, + "end": 9802, + "loc": { + "start": { + "line": 503, + "column": 11 + }, + "end": { + "line": 503, + "column": 12 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9803, + "end": 9804, + "loc": { + "start": { + "line": 503, + "column": 13 + }, + "end": { + "line": 503, + "column": 14 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 9807, + "end": 9813, + "loc": { + "start": { + "line": 504, + "column": 2 + }, + "end": { + "line": 504, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 9814, + "end": 9818, + "loc": { + "start": { + "line": 504, + "column": 9 + }, + "end": { + "line": 504, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9818, + "end": 9819, + "loc": { + "start": { + "line": 504, + "column": 13 + }, + "end": { + "line": 504, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cmpn", + "start": 9819, + "end": 9823, + "loc": { + "start": { + "line": 504, + "column": 14 + }, + "end": { + "line": 504, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9823, + "end": 9824, + "loc": { + "start": { + "line": 504, + "column": 18 + }, + "end": { + "line": 504, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 9824, + "end": 9830, + "loc": { + "start": { + "line": 504, + "column": 19 + }, + "end": { + "line": 504, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9830, + "end": 9831, + "loc": { + "start": { + "line": 504, + "column": 25 + }, + "end": { + "line": 504, + "column": 26 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "!==", + "start": 9832, + "end": 9835, + "loc": { + "start": { + "line": 504, + "column": 27 + }, + "end": { + "line": 504, + "column": 30 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 9836, + "end": 9837, + "loc": { + "start": { + "line": 504, + "column": 31 + }, + "end": { + "line": 504, + "column": 32 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9837, + "end": 9838, + "loc": { + "start": { + "line": 504, + "column": 32 + }, + "end": { + "line": 504, + "column": 33 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9840, + "end": 9841, + "loc": { + "start": { + "line": 505, + "column": 1 + }, + "end": { + "line": 505, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "gcd", + "start": 9844, + "end": 9847, + "loc": { + "start": { + "line": 507, + "column": 1 + }, + "end": { + "line": 507, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9847, + "end": 9848, + "loc": { + "start": { + "line": 507, + "column": 4 + }, + "end": { + "line": 507, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 9848, + "end": 9853, + "loc": { + "start": { + "line": 507, + "column": 5 + }, + "end": { + "line": 507, + "column": 10 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9853, + "end": 9854, + "loc": { + "start": { + "line": 507, + "column": 10 + }, + "end": { + "line": 507, + "column": 11 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9855, + "end": 9856, + "loc": { + "start": { + "line": 507, + "column": 12 + }, + "end": { + "line": 507, + "column": 13 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 9859, + "end": 9864, + "loc": { + "start": { + "line": 508, + "column": 2 + }, + "end": { + "line": 508, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 9865, + "end": 9866, + "loc": { + "start": { + "line": 508, + "column": 8 + }, + "end": { + "line": 508, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 9867, + "end": 9868, + "loc": { + "start": { + "line": 508, + "column": 10 + }, + "end": { + "line": 508, + "column": 11 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 9869, + "end": 9873, + "loc": { + "start": { + "line": 508, + "column": 12 + }, + "end": { + "line": 508, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9873, + "end": 9874, + "loc": { + "start": { + "line": 508, + "column": 16 + }, + "end": { + "line": 508, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 9874, + "end": 9879, + "loc": { + "start": { + "line": 508, + "column": 17 + }, + "end": { + "line": 508, + "column": 22 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9879, + "end": 9880, + "loc": { + "start": { + "line": 508, + "column": 22 + }, + "end": { + "line": 508, + "column": 23 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 9883, + "end": 9888, + "loc": { + "start": { + "line": 509, + "column": 2 + }, + "end": { + "line": 509, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 9889, + "end": 9890, + "loc": { + "start": { + "line": 509, + "column": 8 + }, + "end": { + "line": 509, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 9891, + "end": 9892, + "loc": { + "start": { + "line": 509, + "column": 10 + }, + "end": { + "line": 509, + "column": 11 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 9893, + "end": 9897, + "loc": { + "start": { + "line": 509, + "column": 12 + }, + "end": { + "line": 509, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9897, + "end": 9898, + "loc": { + "start": { + "line": 509, + "column": 16 + }, + "end": { + "line": 509, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 9898, + "end": 9904, + "loc": { + "start": { + "line": 509, + "column": 17 + }, + "end": { + "line": 509, + "column": 23 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9904, + "end": 9905, + "loc": { + "start": { + "line": 509, + "column": 23 + }, + "end": { + "line": 509, + "column": 24 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 9908, + "end": 9913, + "loc": { + "start": { + "line": 510, + "column": 2 + }, + "end": { + "line": 510, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 9914, + "end": 9915, + "loc": { + "start": { + "line": 510, + "column": 8 + }, + "end": { + "line": 510, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 9916, + "end": 9917, + "loc": { + "start": { + "line": 510, + "column": 10 + }, + "end": { + "line": 510, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 9918, + "end": 9923, + "loc": { + "start": { + "line": 510, + "column": 12 + }, + "end": { + "line": 510, + "column": 17 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9923, + "end": 9924, + "loc": { + "start": { + "line": 510, + "column": 17 + }, + "end": { + "line": 510, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs_in_base", + "start": 9924, + "end": 9938, + "loc": { + "start": { + "line": 510, + "column": 18 + }, + "end": { + "line": 510, + "column": 32 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9938, + "end": 9939, + "loc": { + "start": { + "line": 510, + "column": 32 + }, + "end": { + "line": 510, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 9939, + "end": 9940, + "loc": { + "start": { + "line": 510, + "column": 33 + }, + "end": { + "line": 510, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9940, + "end": 9941, + "loc": { + "start": { + "line": 510, + "column": 34 + }, + "end": { + "line": 510, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9941, + "end": 9942, + "loc": { + "start": { + "line": 510, + "column": 35 + }, + "end": { + "line": 510, + "column": 36 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 9945, + "end": 9950, + "loc": { + "start": { + "line": 511, + "column": 2 + }, + "end": { + "line": 511, + "column": 7 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9951, + "end": 9952, + "loc": { + "start": { + "line": 511, + "column": 8 + }, + "end": { + "line": 511, + "column": 9 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "d", + "start": 9952, + "end": 9953, + "loc": { + "start": { + "line": 511, + "column": 9 + }, + "end": { + "line": 511, + "column": 10 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9953, + "end": 9954, + "loc": { + "start": { + "line": 511, + "column": 10 + }, + "end": { + "line": 511, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "di", + "start": 9955, + "end": 9957, + "loc": { + "start": { + "line": 511, + "column": 12 + }, + "end": { + "line": 511, + "column": 14 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9957, + "end": 9958, + "loc": { + "start": { + "line": 511, + "column": 14 + }, + "end": { + "line": 511, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "dj", + "start": 9959, + "end": 9961, + "loc": { + "start": { + "line": 511, + "column": 16 + }, + "end": { + "line": 511, + "column": 18 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9961, + "end": 9962, + "loc": { + "start": { + "line": 511, + "column": 18 + }, + "end": { + "line": 511, + "column": 19 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 9963, + "end": 9964, + "loc": { + "start": { + "line": 511, + "column": 20 + }, + "end": { + "line": 511, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "euclidean_algorithm", + "start": 9965, + "end": 9984, + "loc": { + "start": { + "line": 511, + "column": 22 + }, + "end": { + "line": 511, + "column": 41 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9984, + "end": 9985, + "loc": { + "start": { + "line": 511, + "column": 41 + }, + "end": { + "line": 511, + "column": 42 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 9985, + "end": 9986, + "loc": { + "start": { + "line": 511, + "column": 42 + }, + "end": { + "line": 511, + "column": 43 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9986, + "end": 9987, + "loc": { + "start": { + "line": 511, + "column": 43 + }, + "end": { + "line": 511, + "column": 44 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 9988, + "end": 9989, + "loc": { + "start": { + "line": 511, + "column": 45 + }, + "end": { + "line": 511, + "column": 46 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9989, + "end": 9990, + "loc": { + "start": { + "line": 511, + "column": 46 + }, + "end": { + "line": 511, + "column": 47 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 9991, + "end": 9992, + "loc": { + "start": { + "line": 511, + "column": 48 + }, + "end": { + "line": 511, + "column": 49 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9992, + "end": 9993, + "loc": { + "start": { + "line": 511, + "column": 49 + }, + "end": { + "line": 511, + "column": 50 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 9994, + "end": 9995, + "loc": { + "start": { + "line": 511, + "column": 51 + }, + "end": { + "line": 511, + "column": 52 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 9995, + "end": 9996, + "loc": { + "start": { + "line": 511, + "column": 52 + }, + "end": { + "line": 511, + "column": 53 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 9996, + "end": 10002, + "loc": { + "start": { + "line": 511, + "column": 53 + }, + "end": { + "line": 511, + "column": 59 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10002, + "end": 10003, + "loc": { + "start": { + "line": 511, + "column": 59 + }, + "end": { + "line": 511, + "column": 60 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 10004, + "end": 10005, + "loc": { + "start": { + "line": 511, + "column": 61 + }, + "end": { + "line": 511, + "column": 62 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10005, + "end": 10006, + "loc": { + "start": { + "line": 511, + "column": 62 + }, + "end": { + "line": 511, + "column": 63 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 10007, + "end": 10008, + "loc": { + "start": { + "line": 511, + "column": 64 + }, + "end": { + "line": 511, + "column": 65 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10008, + "end": 10009, + "loc": { + "start": { + "line": 511, + "column": 65 + }, + "end": { + "line": 511, + "column": 66 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 10010, + "end": 10011, + "loc": { + "start": { + "line": 511, + "column": 67 + }, + "end": { + "line": 511, + "column": 68 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10011, + "end": 10012, + "loc": { + "start": { + "line": 511, + "column": 68 + }, + "end": { + "line": 511, + "column": 69 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 10012, + "end": 10018, + "loc": { + "start": { + "line": 511, + "column": 69 + }, + "end": { + "line": 511, + "column": 75 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10018, + "end": 10019, + "loc": { + "start": { + "line": 511, + "column": 75 + }, + "end": { + "line": 511, + "column": 76 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10019, + "end": 10020, + "loc": { + "start": { + "line": 511, + "column": 76 + }, + "end": { + "line": 511, + "column": 77 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 10023, + "end": 10028, + "loc": { + "start": { + "line": 512, + "column": 2 + }, + "end": { + "line": 512, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "gcd", + "start": 10029, + "end": 10032, + "loc": { + "start": { + "line": 512, + "column": 8 + }, + "end": { + "line": 512, + "column": 11 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 10033, + "end": 10034, + "loc": { + "start": { + "line": 512, + "column": 12 + }, + "end": { + "line": 512, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_alloc", + "start": 10035, + "end": 10041, + "loc": { + "start": { + "line": 512, + "column": 14 + }, + "end": { + "line": 512, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10041, + "end": 10042, + "loc": { + "start": { + "line": 512, + "column": 20 + }, + "end": { + "line": 512, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "dj", + "start": 10042, + "end": 10044, + "loc": { + "start": { + "line": 512, + "column": 21 + }, + "end": { + "line": 512, + "column": 23 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 10045, + "end": 10046, + "loc": { + "start": { + "line": 512, + "column": 24 + }, + "end": { + "line": 512, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "di", + "start": 10047, + "end": 10049, + "loc": { + "start": { + "line": 512, + "column": 26 + }, + "end": { + "line": 512, + "column": 28 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10049, + "end": 10050, + "loc": { + "start": { + "line": 512, + "column": 28 + }, + "end": { + "line": 512, + "column": 29 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10050, + "end": 10051, + "loc": { + "start": { + "line": 512, + "column": 29 + }, + "end": { + "line": 512, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_copy", + "start": 10054, + "end": 10059, + "loc": { + "start": { + "line": 513, + "column": 2 + }, + "end": { + "line": 513, + "column": 7 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10059, + "end": 10060, + "loc": { + "start": { + "line": 513, + "column": 7 + }, + "end": { + "line": 513, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "d", + "start": 10060, + "end": 10061, + "loc": { + "start": { + "line": 513, + "column": 8 + }, + "end": { + "line": 513, + "column": 9 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10061, + "end": 10062, + "loc": { + "start": { + "line": 513, + "column": 9 + }, + "end": { + "line": 513, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "di", + "start": 10063, + "end": 10065, + "loc": { + "start": { + "line": 513, + "column": 11 + }, + "end": { + "line": 513, + "column": 13 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10065, + "end": 10066, + "loc": { + "start": { + "line": 513, + "column": 13 + }, + "end": { + "line": 513, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "dj", + "start": 10067, + "end": 10069, + "loc": { + "start": { + "line": 513, + "column": 15 + }, + "end": { + "line": 513, + "column": 17 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10069, + "end": 10070, + "loc": { + "start": { + "line": 513, + "column": 17 + }, + "end": { + "line": 513, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "gcd", + "start": 10071, + "end": 10074, + "loc": { + "start": { + "line": 513, + "column": 19 + }, + "end": { + "line": 513, + "column": 22 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10074, + "end": 10075, + "loc": { + "start": { + "line": 513, + "column": 22 + }, + "end": { + "line": 513, + "column": 23 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 10076, + "end": 10077, + "loc": { + "start": { + "line": 513, + "column": 24 + }, + "end": { + "line": 513, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10077, + "end": 10078, + "loc": { + "start": { + "line": 513, + "column": 25 + }, + "end": { + "line": 513, + "column": 26 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10078, + "end": 10079, + "loc": { + "start": { + "line": 513, + "column": 26 + }, + "end": { + "line": 513, + "column": 27 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 10082, + "end": 10088, + "loc": { + "start": { + "line": 514, + "column": 2 + }, + "end": { + "line": 514, + "column": 8 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 10089, + "end": 10092, + "loc": { + "start": { + "line": 514, + "column": 9 + }, + "end": { + "line": 514, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 10093, + "end": 10100, + "loc": { + "start": { + "line": 514, + "column": 13 + }, + "end": { + "line": 514, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10100, + "end": 10101, + "loc": { + "start": { + "line": 514, + "column": 20 + }, + "end": { + "line": 514, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 10101, + "end": 10102, + "loc": { + "start": { + "line": 514, + "column": 21 + }, + "end": { + "line": 514, + "column": 22 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10102, + "end": 10103, + "loc": { + "start": { + "line": 514, + "column": 22 + }, + "end": { + "line": 514, + "column": 23 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 10104, + "end": 10105, + "loc": { + "start": { + "line": 514, + "column": 24 + }, + "end": { + "line": 514, + "column": 25 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10105, + "end": 10106, + "loc": { + "start": { + "line": 514, + "column": 25 + }, + "end": { + "line": 514, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "gcd", + "start": 10107, + "end": 10110, + "loc": { + "start": { + "line": 514, + "column": 27 + }, + "end": { + "line": 514, + "column": 30 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10110, + "end": 10111, + "loc": { + "start": { + "line": 514, + "column": 30 + }, + "end": { + "line": 514, + "column": 31 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10111, + "end": 10112, + "loc": { + "start": { + "line": 514, + "column": 31 + }, + "end": { + "line": 514, + "column": 32 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10114, + "end": 10115, + "loc": { + "start": { + "line": 515, + "column": 1 + }, + "end": { + "line": 515, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "egcd", + "start": 10118, + "end": 10122, + "loc": { + "start": { + "line": 517, + "column": 1 + }, + "end": { + "line": 517, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10122, + "end": 10123, + "loc": { + "start": { + "line": 517, + "column": 5 + }, + "end": { + "line": 517, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 10123, + "end": 10128, + "loc": { + "start": { + "line": 517, + "column": 6 + }, + "end": { + "line": 517, + "column": 11 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10128, + "end": 10129, + "loc": { + "start": { + "line": 517, + "column": 11 + }, + "end": { + "line": 517, + "column": 12 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10130, + "end": 10131, + "loc": { + "start": { + "line": 517, + "column": 13 + }, + "end": { + "line": 517, + "column": 14 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 10134, + "end": 10139, + "loc": { + "start": { + "line": 518, + "column": 2 + }, + "end": { + "line": 518, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 10140, + "end": 10141, + "loc": { + "start": { + "line": 518, + "column": 8 + }, + "end": { + "line": 518, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 10142, + "end": 10143, + "loc": { + "start": { + "line": 518, + "column": 10 + }, + "end": { + "line": 518, + "column": 11 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 10144, + "end": 10148, + "loc": { + "start": { + "line": 518, + "column": 12 + }, + "end": { + "line": 518, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10148, + "end": 10149, + "loc": { + "start": { + "line": 518, + "column": 16 + }, + "end": { + "line": 518, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 10149, + "end": 10154, + "loc": { + "start": { + "line": 518, + "column": 17 + }, + "end": { + "line": 518, + "column": 22 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10154, + "end": 10155, + "loc": { + "start": { + "line": 518, + "column": 22 + }, + "end": { + "line": 518, + "column": 23 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 10158, + "end": 10163, + "loc": { + "start": { + "line": 519, + "column": 2 + }, + "end": { + "line": 519, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 10164, + "end": 10165, + "loc": { + "start": { + "line": 519, + "column": 8 + }, + "end": { + "line": 519, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 10166, + "end": 10167, + "loc": { + "start": { + "line": 519, + "column": 10 + }, + "end": { + "line": 519, + "column": 11 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 10168, + "end": 10172, + "loc": { + "start": { + "line": 519, + "column": 12 + }, + "end": { + "line": 519, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10172, + "end": 10173, + "loc": { + "start": { + "line": 519, + "column": 16 + }, + "end": { + "line": 519, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 10173, + "end": 10179, + "loc": { + "start": { + "line": 519, + "column": 17 + }, + "end": { + "line": 519, + "column": 23 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10179, + "end": 10180, + "loc": { + "start": { + "line": 519, + "column": 23 + }, + "end": { + "line": 519, + "column": 24 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 10183, + "end": 10188, + "loc": { + "start": { + "line": 520, + "column": 2 + }, + "end": { + "line": 520, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 10189, + "end": 10190, + "loc": { + "start": { + "line": 520, + "column": 8 + }, + "end": { + "line": 520, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 10191, + "end": 10192, + "loc": { + "start": { + "line": 520, + "column": 10 + }, + "end": { + "line": 520, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 10193, + "end": 10198, + "loc": { + "start": { + "line": 520, + "column": 12 + }, + "end": { + "line": 520, + "column": 17 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10198, + "end": 10199, + "loc": { + "start": { + "line": 520, + "column": 17 + }, + "end": { + "line": 520, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs_in_base", + "start": 10199, + "end": 10213, + "loc": { + "start": { + "line": 520, + "column": 18 + }, + "end": { + "line": 520, + "column": 32 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10213, + "end": 10214, + "loc": { + "start": { + "line": 520, + "column": 32 + }, + "end": { + "line": 520, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 10214, + "end": 10215, + "loc": { + "start": { + "line": 520, + "column": 33 + }, + "end": { + "line": 520, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10215, + "end": 10216, + "loc": { + "start": { + "line": 520, + "column": 34 + }, + "end": { + "line": 520, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10216, + "end": 10217, + "loc": { + "start": { + "line": 520, + "column": 35 + }, + "end": { + "line": 520, + "column": 36 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 10220, + "end": 10225, + "loc": { + "start": { + "line": 521, + "column": 2 + }, + "end": { + "line": 521, + "column": 7 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10226, + "end": 10227, + "loc": { + "start": { + "line": 521, + "column": 8 + }, + "end": { + "line": 521, + "column": 9 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "R0", + "start": 10231, + "end": 10233, + "loc": { + "start": { + "line": 522, + "column": 3 + }, + "end": { + "line": 522, + "column": 5 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10233, + "end": 10234, + "loc": { + "start": { + "line": 522, + "column": 5 + }, + "end": { + "line": 522, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "R0i", + "start": 10238, + "end": 10241, + "loc": { + "start": { + "line": 523, + "column": 3 + }, + "end": { + "line": 523, + "column": 6 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10241, + "end": 10242, + "loc": { + "start": { + "line": 523, + "column": 6 + }, + "end": { + "line": 523, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "S0", + "start": 10246, + "end": 10248, + "loc": { + "start": { + "line": 524, + "column": 3 + }, + "end": { + "line": 524, + "column": 5 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10248, + "end": 10249, + "loc": { + "start": { + "line": 524, + "column": 5 + }, + "end": { + "line": 524, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "S0i", + "start": 10253, + "end": 10256, + "loc": { + "start": { + "line": 525, + "column": 3 + }, + "end": { + "line": 525, + "column": 6 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10256, + "end": 10257, + "loc": { + "start": { + "line": 525, + "column": 6 + }, + "end": { + "line": 525, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "T0", + "start": 10261, + "end": 10263, + "loc": { + "start": { + "line": 526, + "column": 3 + }, + "end": { + "line": 526, + "column": 5 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10263, + "end": 10264, + "loc": { + "start": { + "line": 526, + "column": 5 + }, + "end": { + "line": 526, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "T0i", + "start": 10268, + "end": 10271, + "loc": { + "start": { + "line": 527, + "column": 3 + }, + "end": { + "line": 527, + "column": 6 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10271, + "end": 10272, + "loc": { + "start": { + "line": 527, + "column": 6 + }, + "end": { + "line": 527, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "S1", + "start": 10276, + "end": 10278, + "loc": { + "start": { + "line": 528, + "column": 3 + }, + "end": { + "line": 528, + "column": 5 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10278, + "end": 10279, + "loc": { + "start": { + "line": 528, + "column": 5 + }, + "end": { + "line": 528, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "S1i", + "start": 10283, + "end": 10286, + "loc": { + "start": { + "line": 529, + "column": 3 + }, + "end": { + "line": 529, + "column": 6 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10286, + "end": 10287, + "loc": { + "start": { + "line": 529, + "column": 6 + }, + "end": { + "line": 529, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "T1", + "start": 10291, + "end": 10293, + "loc": { + "start": { + "line": 530, + "column": 3 + }, + "end": { + "line": 530, + "column": 5 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10293, + "end": 10294, + "loc": { + "start": { + "line": 530, + "column": 5 + }, + "end": { + "line": 530, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "T1i", + "start": 10298, + "end": 10301, + "loc": { + "start": { + "line": 531, + "column": 3 + }, + "end": { + "line": 531, + "column": 6 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10301, + "end": 10302, + "loc": { + "start": { + "line": 531, + "column": 6 + }, + "end": { + "line": 531, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "steps", + "start": 10306, + "end": 10311, + "loc": { + "start": { + "line": 532, + "column": 3 + }, + "end": { + "line": 532, + "column": 8 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10311, + "end": 10312, + "loc": { + "start": { + "line": 532, + "column": 8 + }, + "end": { + "line": 532, + "column": 9 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10315, + "end": 10316, + "loc": { + "start": { + "line": 533, + "column": 2 + }, + "end": { + "line": 533, + "column": 3 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 10317, + "end": 10318, + "loc": { + "start": { + "line": 533, + "column": 4 + }, + "end": { + "line": 533, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "extended_euclidean_algorithm", + "start": 10319, + "end": 10347, + "loc": { + "start": { + "line": 533, + "column": 6 + }, + "end": { + "line": 533, + "column": 34 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10347, + "end": 10348, + "loc": { + "start": { + "line": 533, + "column": 34 + }, + "end": { + "line": 533, + "column": 35 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 10348, + "end": 10349, + "loc": { + "start": { + "line": 533, + "column": 35 + }, + "end": { + "line": 533, + "column": 36 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10349, + "end": 10350, + "loc": { + "start": { + "line": 533, + "column": 36 + }, + "end": { + "line": 533, + "column": 37 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 10351, + "end": 10352, + "loc": { + "start": { + "line": 533, + "column": 38 + }, + "end": { + "line": 533, + "column": 39 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10352, + "end": 10353, + "loc": { + "start": { + "line": 533, + "column": 39 + }, + "end": { + "line": 533, + "column": 40 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 10354, + "end": 10355, + "loc": { + "start": { + "line": 533, + "column": 41 + }, + "end": { + "line": 533, + "column": 42 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10355, + "end": 10356, + "loc": { + "start": { + "line": 533, + "column": 42 + }, + "end": { + "line": 533, + "column": 43 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 10357, + "end": 10358, + "loc": { + "start": { + "line": 533, + "column": 44 + }, + "end": { + "line": 533, + "column": 45 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10358, + "end": 10359, + "loc": { + "start": { + "line": 533, + "column": 45 + }, + "end": { + "line": 533, + "column": 46 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 10359, + "end": 10365, + "loc": { + "start": { + "line": 533, + "column": 46 + }, + "end": { + "line": 533, + "column": 52 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10365, + "end": 10366, + "loc": { + "start": { + "line": 533, + "column": 52 + }, + "end": { + "line": 533, + "column": 53 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 10367, + "end": 10368, + "loc": { + "start": { + "line": 533, + "column": 54 + }, + "end": { + "line": 533, + "column": 55 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10368, + "end": 10369, + "loc": { + "start": { + "line": 533, + "column": 55 + }, + "end": { + "line": 533, + "column": 56 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 10370, + "end": 10371, + "loc": { + "start": { + "line": 533, + "column": 57 + }, + "end": { + "line": 533, + "column": 58 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10371, + "end": 10372, + "loc": { + "start": { + "line": 533, + "column": 58 + }, + "end": { + "line": 533, + "column": 59 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 10373, + "end": 10374, + "loc": { + "start": { + "line": 533, + "column": 60 + }, + "end": { + "line": 533, + "column": 61 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10374, + "end": 10375, + "loc": { + "start": { + "line": 533, + "column": 61 + }, + "end": { + "line": 533, + "column": 62 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 10375, + "end": 10381, + "loc": { + "start": { + "line": 533, + "column": 62 + }, + "end": { + "line": 533, + "column": 68 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10381, + "end": 10382, + "loc": { + "start": { + "line": 533, + "column": 68 + }, + "end": { + "line": 533, + "column": 69 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10382, + "end": 10383, + "loc": { + "start": { + "line": 533, + "column": 69 + }, + "end": { + "line": 533, + "column": 70 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 10386, + "end": 10391, + "loc": { + "start": { + "line": 534, + "column": 2 + }, + "end": { + "line": 534, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "gcd", + "start": 10392, + "end": 10395, + "loc": { + "start": { + "line": 534, + "column": 8 + }, + "end": { + "line": 534, + "column": 11 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 10396, + "end": 10397, + "loc": { + "start": { + "line": 534, + "column": 12 + }, + "end": { + "line": 534, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_alloc", + "start": 10398, + "end": 10404, + "loc": { + "start": { + "line": 534, + "column": 14 + }, + "end": { + "line": 534, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10404, + "end": 10405, + "loc": { + "start": { + "line": 534, + "column": 20 + }, + "end": { + "line": 534, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "R0", + "start": 10405, + "end": 10407, + "loc": { + "start": { + "line": 534, + "column": 21 + }, + "end": { + "line": 534, + "column": 23 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10407, + "end": 10408, + "loc": { + "start": { + "line": 534, + "column": 23 + }, + "end": { + "line": 534, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 10408, + "end": 10414, + "loc": { + "start": { + "line": 534, + "column": 24 + }, + "end": { + "line": 534, + "column": 30 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 10415, + "end": 10416, + "loc": { + "start": { + "line": 534, + "column": 31 + }, + "end": { + "line": 534, + "column": 32 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "R0i", + "start": 10417, + "end": 10420, + "loc": { + "start": { + "line": 534, + "column": 33 + }, + "end": { + "line": 534, + "column": 36 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10420, + "end": 10421, + "loc": { + "start": { + "line": 534, + "column": 36 + }, + "end": { + "line": 534, + "column": 37 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10421, + "end": 10422, + "loc": { + "start": { + "line": 534, + "column": 37 + }, + "end": { + "line": 534, + "column": 38 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_copy", + "start": 10425, + "end": 10430, + "loc": { + "start": { + "line": 535, + "column": 2 + }, + "end": { + "line": 535, + "column": 7 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10430, + "end": 10431, + "loc": { + "start": { + "line": 535, + "column": 7 + }, + "end": { + "line": 535, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "R0", + "start": 10431, + "end": 10433, + "loc": { + "start": { + "line": 535, + "column": 8 + }, + "end": { + "line": 535, + "column": 10 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10433, + "end": 10434, + "loc": { + "start": { + "line": 535, + "column": 10 + }, + "end": { + "line": 535, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "R0i", + "start": 10435, + "end": 10438, + "loc": { + "start": { + "line": 535, + "column": 12 + }, + "end": { + "line": 535, + "column": 15 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10438, + "end": 10439, + "loc": { + "start": { + "line": 535, + "column": 15 + }, + "end": { + "line": 535, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "R0", + "start": 10440, + "end": 10442, + "loc": { + "start": { + "line": 535, + "column": 17 + }, + "end": { + "line": 535, + "column": 19 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10442, + "end": 10443, + "loc": { + "start": { + "line": 535, + "column": 19 + }, + "end": { + "line": 535, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 10443, + "end": 10449, + "loc": { + "start": { + "line": 535, + "column": 20 + }, + "end": { + "line": 535, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10449, + "end": 10450, + "loc": { + "start": { + "line": 535, + "column": 26 + }, + "end": { + "line": 535, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "gcd", + "start": 10451, + "end": 10454, + "loc": { + "start": { + "line": 535, + "column": 28 + }, + "end": { + "line": 535, + "column": 31 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10454, + "end": 10455, + "loc": { + "start": { + "line": 535, + "column": 31 + }, + "end": { + "line": 535, + "column": 32 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 10456, + "end": 10457, + "loc": { + "start": { + "line": 535, + "column": 33 + }, + "end": { + "line": 535, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10457, + "end": 10458, + "loc": { + "start": { + "line": 535, + "column": 34 + }, + "end": { + "line": 535, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10458, + "end": 10459, + "loc": { + "start": { + "line": 535, + "column": 35 + }, + "end": { + "line": 535, + "column": 36 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 10462, + "end": 10467, + "loc": { + "start": { + "line": 536, + "column": 2 + }, + "end": { + "line": 536, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "x", + "start": 10468, + "end": 10469, + "loc": { + "start": { + "line": 536, + "column": 8 + }, + "end": { + "line": 536, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 10470, + "end": 10471, + "loc": { + "start": { + "line": 536, + "column": 10 + }, + "end": { + "line": 536, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_alloc", + "start": 10472, + "end": 10478, + "loc": { + "start": { + "line": 536, + "column": 12 + }, + "end": { + "line": 536, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10478, + "end": 10479, + "loc": { + "start": { + "line": 536, + "column": 18 + }, + "end": { + "line": 536, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "S0", + "start": 10479, + "end": 10481, + "loc": { + "start": { + "line": 536, + "column": 19 + }, + "end": { + "line": 536, + "column": 21 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10481, + "end": 10482, + "loc": { + "start": { + "line": 536, + "column": 21 + }, + "end": { + "line": 536, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 10482, + "end": 10488, + "loc": { + "start": { + "line": 536, + "column": 22 + }, + "end": { + "line": 536, + "column": 28 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 10489, + "end": 10490, + "loc": { + "start": { + "line": 536, + "column": 29 + }, + "end": { + "line": 536, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "S0i", + "start": 10491, + "end": 10494, + "loc": { + "start": { + "line": 536, + "column": 31 + }, + "end": { + "line": 536, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10494, + "end": 10495, + "loc": { + "start": { + "line": 536, + "column": 34 + }, + "end": { + "line": 536, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10495, + "end": 10496, + "loc": { + "start": { + "line": 536, + "column": 35 + }, + "end": { + "line": 536, + "column": 36 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_copy", + "start": 10499, + "end": 10504, + "loc": { + "start": { + "line": 537, + "column": 2 + }, + "end": { + "line": 537, + "column": 7 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10504, + "end": 10505, + "loc": { + "start": { + "line": 537, + "column": 7 + }, + "end": { + "line": 537, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "S0", + "start": 10505, + "end": 10507, + "loc": { + "start": { + "line": 537, + "column": 8 + }, + "end": { + "line": 537, + "column": 10 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10507, + "end": 10508, + "loc": { + "start": { + "line": 537, + "column": 10 + }, + "end": { + "line": 537, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "S0i", + "start": 10509, + "end": 10512, + "loc": { + "start": { + "line": 537, + "column": 12 + }, + "end": { + "line": 537, + "column": 15 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10512, + "end": 10513, + "loc": { + "start": { + "line": 537, + "column": 15 + }, + "end": { + "line": 537, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "S0", + "start": 10514, + "end": 10516, + "loc": { + "start": { + "line": 537, + "column": 17 + }, + "end": { + "line": 537, + "column": 19 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10516, + "end": 10517, + "loc": { + "start": { + "line": 537, + "column": 19 + }, + "end": { + "line": 537, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 10517, + "end": 10523, + "loc": { + "start": { + "line": 537, + "column": 20 + }, + "end": { + "line": 537, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10523, + "end": 10524, + "loc": { + "start": { + "line": 537, + "column": 26 + }, + "end": { + "line": 537, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "x", + "start": 10525, + "end": 10526, + "loc": { + "start": { + "line": 537, + "column": 28 + }, + "end": { + "line": 537, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10526, + "end": 10527, + "loc": { + "start": { + "line": 537, + "column": 29 + }, + "end": { + "line": 537, + "column": 30 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 10528, + "end": 10529, + "loc": { + "start": { + "line": 537, + "column": 31 + }, + "end": { + "line": 537, + "column": 32 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10529, + "end": 10530, + "loc": { + "start": { + "line": 537, + "column": 32 + }, + "end": { + "line": 537, + "column": 33 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10530, + "end": 10531, + "loc": { + "start": { + "line": 537, + "column": 33 + }, + "end": { + "line": 537, + "column": 34 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 10534, + "end": 10539, + "loc": { + "start": { + "line": 538, + "column": 2 + }, + "end": { + "line": 538, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "y", + "start": 10540, + "end": 10541, + "loc": { + "start": { + "line": 538, + "column": 8 + }, + "end": { + "line": 538, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 10542, + "end": 10543, + "loc": { + "start": { + "line": 538, + "column": 10 + }, + "end": { + "line": 538, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_alloc", + "start": 10544, + "end": 10550, + "loc": { + "start": { + "line": 538, + "column": 12 + }, + "end": { + "line": 538, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10550, + "end": 10551, + "loc": { + "start": { + "line": 538, + "column": 18 + }, + "end": { + "line": 538, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "T0", + "start": 10551, + "end": 10553, + "loc": { + "start": { + "line": 538, + "column": 19 + }, + "end": { + "line": 538, + "column": 21 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10553, + "end": 10554, + "loc": { + "start": { + "line": 538, + "column": 21 + }, + "end": { + "line": 538, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 10554, + "end": 10560, + "loc": { + "start": { + "line": 538, + "column": 22 + }, + "end": { + "line": 538, + "column": 28 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 10561, + "end": 10562, + "loc": { + "start": { + "line": 538, + "column": 29 + }, + "end": { + "line": 538, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "T0i", + "start": 10563, + "end": 10566, + "loc": { + "start": { + "line": 538, + "column": 31 + }, + "end": { + "line": 538, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10566, + "end": 10567, + "loc": { + "start": { + "line": 538, + "column": 34 + }, + "end": { + "line": 538, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10567, + "end": 10568, + "loc": { + "start": { + "line": 538, + "column": 35 + }, + "end": { + "line": 538, + "column": 36 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_copy", + "start": 10571, + "end": 10576, + "loc": { + "start": { + "line": 539, + "column": 2 + }, + "end": { + "line": 539, + "column": 7 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10576, + "end": 10577, + "loc": { + "start": { + "line": 539, + "column": 7 + }, + "end": { + "line": 539, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "T0", + "start": 10577, + "end": 10579, + "loc": { + "start": { + "line": 539, + "column": 8 + }, + "end": { + "line": 539, + "column": 10 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10579, + "end": 10580, + "loc": { + "start": { + "line": 539, + "column": 10 + }, + "end": { + "line": 539, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "T0i", + "start": 10581, + "end": 10584, + "loc": { + "start": { + "line": 539, + "column": 12 + }, + "end": { + "line": 539, + "column": 15 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10584, + "end": 10585, + "loc": { + "start": { + "line": 539, + "column": 15 + }, + "end": { + "line": 539, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "T0", + "start": 10586, + "end": 10588, + "loc": { + "start": { + "line": 539, + "column": 17 + }, + "end": { + "line": 539, + "column": 19 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10588, + "end": 10589, + "loc": { + "start": { + "line": 539, + "column": 19 + }, + "end": { + "line": 539, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 10589, + "end": 10595, + "loc": { + "start": { + "line": 539, + "column": 20 + }, + "end": { + "line": 539, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10595, + "end": 10596, + "loc": { + "start": { + "line": 539, + "column": 26 + }, + "end": { + "line": 539, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "y", + "start": 10597, + "end": 10598, + "loc": { + "start": { + "line": 539, + "column": 28 + }, + "end": { + "line": 539, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10598, + "end": 10599, + "loc": { + "start": { + "line": 539, + "column": 29 + }, + "end": { + "line": 539, + "column": 30 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 10600, + "end": 10601, + "loc": { + "start": { + "line": 539, + "column": 31 + }, + "end": { + "line": 539, + "column": 32 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10601, + "end": 10602, + "loc": { + "start": { + "line": 539, + "column": 32 + }, + "end": { + "line": 539, + "column": 33 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10602, + "end": 10603, + "loc": { + "start": { + "line": 539, + "column": 33 + }, + "end": { + "line": 539, + "column": 34 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 10606, + "end": 10611, + "loc": { + "start": { + "line": 540, + "column": 2 + }, + "end": { + "line": 540, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "u", + "start": 10612, + "end": 10613, + "loc": { + "start": { + "line": 540, + "column": 8 + }, + "end": { + "line": 540, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 10614, + "end": 10615, + "loc": { + "start": { + "line": 540, + "column": 10 + }, + "end": { + "line": 540, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_alloc", + "start": 10616, + "end": 10622, + "loc": { + "start": { + "line": 540, + "column": 12 + }, + "end": { + "line": 540, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10622, + "end": 10623, + "loc": { + "start": { + "line": 540, + "column": 18 + }, + "end": { + "line": 540, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "S1", + "start": 10623, + "end": 10625, + "loc": { + "start": { + "line": 540, + "column": 19 + }, + "end": { + "line": 540, + "column": 21 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10625, + "end": 10626, + "loc": { + "start": { + "line": 540, + "column": 21 + }, + "end": { + "line": 540, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 10626, + "end": 10632, + "loc": { + "start": { + "line": 540, + "column": 22 + }, + "end": { + "line": 540, + "column": 28 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 10633, + "end": 10634, + "loc": { + "start": { + "line": 540, + "column": 29 + }, + "end": { + "line": 540, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "S1i", + "start": 10635, + "end": 10638, + "loc": { + "start": { + "line": 540, + "column": 31 + }, + "end": { + "line": 540, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10638, + "end": 10639, + "loc": { + "start": { + "line": 540, + "column": 34 + }, + "end": { + "line": 540, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10639, + "end": 10640, + "loc": { + "start": { + "line": 540, + "column": 35 + }, + "end": { + "line": 540, + "column": 36 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_copy", + "start": 10643, + "end": 10648, + "loc": { + "start": { + "line": 541, + "column": 2 + }, + "end": { + "line": 541, + "column": 7 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10648, + "end": 10649, + "loc": { + "start": { + "line": 541, + "column": 7 + }, + "end": { + "line": 541, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "S1", + "start": 10649, + "end": 10651, + "loc": { + "start": { + "line": 541, + "column": 8 + }, + "end": { + "line": 541, + "column": 10 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10651, + "end": 10652, + "loc": { + "start": { + "line": 541, + "column": 10 + }, + "end": { + "line": 541, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "S1i", + "start": 10653, + "end": 10656, + "loc": { + "start": { + "line": 541, + "column": 12 + }, + "end": { + "line": 541, + "column": 15 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10656, + "end": 10657, + "loc": { + "start": { + "line": 541, + "column": 15 + }, + "end": { + "line": 541, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "S1", + "start": 10658, + "end": 10660, + "loc": { + "start": { + "line": 541, + "column": 17 + }, + "end": { + "line": 541, + "column": 19 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10660, + "end": 10661, + "loc": { + "start": { + "line": 541, + "column": 19 + }, + "end": { + "line": 541, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 10661, + "end": 10667, + "loc": { + "start": { + "line": 541, + "column": 20 + }, + "end": { + "line": 541, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10667, + "end": 10668, + "loc": { + "start": { + "line": 541, + "column": 26 + }, + "end": { + "line": 541, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "u", + "start": 10669, + "end": 10670, + "loc": { + "start": { + "line": 541, + "column": 28 + }, + "end": { + "line": 541, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10670, + "end": 10671, + "loc": { + "start": { + "line": 541, + "column": 29 + }, + "end": { + "line": 541, + "column": 30 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 10672, + "end": 10673, + "loc": { + "start": { + "line": 541, + "column": 31 + }, + "end": { + "line": 541, + "column": 32 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10673, + "end": 10674, + "loc": { + "start": { + "line": 541, + "column": 32 + }, + "end": { + "line": 541, + "column": 33 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10674, + "end": 10675, + "loc": { + "start": { + "line": 541, + "column": 33 + }, + "end": { + "line": 541, + "column": 34 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 10678, + "end": 10683, + "loc": { + "start": { + "line": 542, + "column": 2 + }, + "end": { + "line": 542, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "v", + "start": 10684, + "end": 10685, + "loc": { + "start": { + "line": 542, + "column": 8 + }, + "end": { + "line": 542, + "column": 9 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 10686, + "end": 10687, + "loc": { + "start": { + "line": 542, + "column": 10 + }, + "end": { + "line": 542, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_alloc", + "start": 10688, + "end": 10694, + "loc": { + "start": { + "line": 542, + "column": 12 + }, + "end": { + "line": 542, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10694, + "end": 10695, + "loc": { + "start": { + "line": 542, + "column": 18 + }, + "end": { + "line": 542, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "T1", + "start": 10695, + "end": 10697, + "loc": { + "start": { + "line": 542, + "column": 19 + }, + "end": { + "line": 542, + "column": 21 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10697, + "end": 10698, + "loc": { + "start": { + "line": 542, + "column": 21 + }, + "end": { + "line": 542, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 10698, + "end": 10704, + "loc": { + "start": { + "line": 542, + "column": 22 + }, + "end": { + "line": 542, + "column": 28 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 10705, + "end": 10706, + "loc": { + "start": { + "line": 542, + "column": 29 + }, + "end": { + "line": 542, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "T1i", + "start": 10707, + "end": 10710, + "loc": { + "start": { + "line": 542, + "column": 31 + }, + "end": { + "line": 542, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10710, + "end": 10711, + "loc": { + "start": { + "line": 542, + "column": 34 + }, + "end": { + "line": 542, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10711, + "end": 10712, + "loc": { + "start": { + "line": 542, + "column": 35 + }, + "end": { + "line": 542, + "column": 36 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_copy", + "start": 10715, + "end": 10720, + "loc": { + "start": { + "line": 543, + "column": 2 + }, + "end": { + "line": 543, + "column": 7 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10720, + "end": 10721, + "loc": { + "start": { + "line": 543, + "column": 7 + }, + "end": { + "line": 543, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "T1", + "start": 10721, + "end": 10723, + "loc": { + "start": { + "line": 543, + "column": 8 + }, + "end": { + "line": 543, + "column": 10 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10723, + "end": 10724, + "loc": { + "start": { + "line": 543, + "column": 10 + }, + "end": { + "line": 543, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "T1i", + "start": 10725, + "end": 10728, + "loc": { + "start": { + "line": 543, + "column": 12 + }, + "end": { + "line": 543, + "column": 15 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10728, + "end": 10729, + "loc": { + "start": { + "line": 543, + "column": 15 + }, + "end": { + "line": 543, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "T1", + "start": 10730, + "end": 10732, + "loc": { + "start": { + "line": 543, + "column": 17 + }, + "end": { + "line": 543, + "column": 19 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10732, + "end": 10733, + "loc": { + "start": { + "line": 543, + "column": 19 + }, + "end": { + "line": 543, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 10733, + "end": 10739, + "loc": { + "start": { + "line": 543, + "column": 20 + }, + "end": { + "line": 543, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10739, + "end": 10740, + "loc": { + "start": { + "line": 543, + "column": 26 + }, + "end": { + "line": 543, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "v", + "start": 10741, + "end": 10742, + "loc": { + "start": { + "line": 543, + "column": 28 + }, + "end": { + "line": 543, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10742, + "end": 10743, + "loc": { + "start": { + "line": 543, + "column": 29 + }, + "end": { + "line": 543, + "column": 30 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 10744, + "end": 10745, + "loc": { + "start": { + "line": 543, + "column": 31 + }, + "end": { + "line": 543, + "column": 32 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10745, + "end": 10746, + "loc": { + "start": { + "line": 543, + "column": 32 + }, + "end": { + "line": 543, + "column": 33 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10746, + "end": 10747, + "loc": { + "start": { + "line": 543, + "column": 33 + }, + "end": { + "line": 543, + "column": 34 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 10750, + "end": 10756, + "loc": { + "start": { + "line": 544, + "column": 2 + }, + "end": { + "line": 544, + "column": 8 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10757, + "end": 10758, + "loc": { + "start": { + "line": 544, + "column": 9 + }, + "end": { + "line": 544, + "column": 10 + } + } + }, + { + "type": "CommentLine", + "value": " TODO use immutable zero", + "start": 10762, + "end": 10788, + "loc": { + "start": { + "line": 545, + "column": 3 + }, + "end": { + "line": 545, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "gcd", + "start": 10792, + "end": 10795, + "loc": { + "start": { + "line": 546, + "column": 3 + }, + "end": { + "line": 546, + "column": 6 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10795, + "end": 10796, + "loc": { + "start": { + "line": 546, + "column": 6 + }, + "end": { + "line": 546, + "column": 7 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 10797, + "end": 10800, + "loc": { + "start": { + "line": 546, + "column": 8 + }, + "end": { + "line": 546, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 10801, + "end": 10808, + "loc": { + "start": { + "line": 546, + "column": 12 + }, + "end": { + "line": 546, + "column": 19 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10808, + "end": 10809, + "loc": { + "start": { + "line": 546, + "column": 19 + }, + "end": { + "line": 546, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 10809, + "end": 10810, + "loc": { + "start": { + "line": 546, + "column": 20 + }, + "end": { + "line": 546, + "column": 21 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10810, + "end": 10811, + "loc": { + "start": { + "line": 546, + "column": 21 + }, + "end": { + "line": 546, + "column": 22 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 10812, + "end": 10813, + "loc": { + "start": { + "line": 546, + "column": 23 + }, + "end": { + "line": 546, + "column": 24 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10813, + "end": 10814, + "loc": { + "start": { + "line": 546, + "column": 24 + }, + "end": { + "line": 546, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "gcd", + "start": 10815, + "end": 10818, + "loc": { + "start": { + "line": 546, + "column": 26 + }, + "end": { + "line": 546, + "column": 29 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10818, + "end": 10819, + "loc": { + "start": { + "line": 546, + "column": 29 + }, + "end": { + "line": 546, + "column": 30 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10819, + "end": 10820, + "loc": { + "start": { + "line": 546, + "column": 30 + }, + "end": { + "line": 546, + "column": 31 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "x", + "start": 10824, + "end": 10825, + "loc": { + "start": { + "line": 547, + "column": 3 + }, + "end": { + "line": 547, + "column": 4 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10825, + "end": 10826, + "loc": { + "start": { + "line": 547, + "column": 4 + }, + "end": { + "line": 547, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "x", + "start": 10831, + "end": 10832, + "loc": { + "start": { + "line": 548, + "column": 4 + }, + "end": { + "line": 548, + "column": 5 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10832, + "end": 10833, + "loc": { + "start": { + "line": 548, + "column": 5 + }, + "end": { + "line": 548, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 10833, + "end": 10839, + "loc": { + "start": { + "line": 548, + "column": 6 + }, + "end": { + "line": 548, + "column": 12 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": ">", + "start": 10840, + "end": 10841, + "loc": { + "start": { + "line": 548, + "column": 13 + }, + "end": { + "line": 548, + "column": 14 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 10842, + "end": 10843, + "loc": { + "start": { + "line": 548, + "column": 15 + }, + "end": { + "line": 548, + "column": 16 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10849, + "end": 10850, + "loc": { + "start": { + "line": 549, + "column": 5 + }, + "end": { + "line": 549, + "column": 6 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 10851, + "end": 10854, + "loc": { + "start": { + "line": 549, + "column": 7 + }, + "end": { + "line": 549, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 10855, + "end": 10862, + "loc": { + "start": { + "line": 549, + "column": 11 + }, + "end": { + "line": 549, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10862, + "end": 10863, + "loc": { + "start": { + "line": 549, + "column": 18 + }, + "end": { + "line": 549, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 10863, + "end": 10864, + "loc": { + "start": { + "line": 549, + "column": 19 + }, + "end": { + "line": 549, + "column": 20 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10864, + "end": 10865, + "loc": { + "start": { + "line": 549, + "column": 20 + }, + "end": { + "line": 549, + "column": 21 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 10866, + "end": 10870, + "loc": { + "start": { + "line": 549, + "column": 22 + }, + "end": { + "line": 549, + "column": 26 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10870, + "end": 10871, + "loc": { + "start": { + "line": 549, + "column": 26 + }, + "end": { + "line": 549, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 10871, + "end": 10883, + "loc": { + "start": { + "line": 549, + "column": 27 + }, + "end": { + "line": 549, + "column": 39 + } + } + }, + { + "type": { + "label": "^", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 4, + "updateContext": null + }, + "value": "^", + "start": 10884, + "end": 10885, + "loc": { + "start": { + "line": 549, + "column": 40 + }, + "end": { + "line": 549, + "column": 41 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10886, + "end": 10887, + "loc": { + "start": { + "line": 549, + "column": 42 + }, + "end": { + "line": 549, + "column": 43 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10887, + "end": 10888, + "loc": { + "start": { + "line": 549, + "column": 43 + }, + "end": { + "line": 549, + "column": 44 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "steps", + "start": 10888, + "end": 10893, + "loc": { + "start": { + "line": 549, + "column": 44 + }, + "end": { + "line": 549, + "column": 49 + } + } + }, + { + "type": { + "label": "%", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 10, + "updateContext": null + }, + "value": "%", + "start": 10894, + "end": 10895, + "loc": { + "start": { + "line": 549, + "column": 50 + }, + "end": { + "line": 549, + "column": 51 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 2, + "start": 10896, + "end": 10897, + "loc": { + "start": { + "line": 549, + "column": 52 + }, + "end": { + "line": 549, + "column": 53 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10897, + "end": 10898, + "loc": { + "start": { + "line": 549, + "column": 53 + }, + "end": { + "line": 549, + "column": 54 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 10899, + "end": 10900, + "loc": { + "start": { + "line": 549, + "column": 55 + }, + "end": { + "line": 549, + "column": 56 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 10901, + "end": 10902, + "loc": { + "start": { + "line": 549, + "column": 57 + }, + "end": { + "line": 549, + "column": 58 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10902, + "end": 10903, + "loc": { + "start": { + "line": 549, + "column": 58 + }, + "end": { + "line": 549, + "column": 59 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10903, + "end": 10904, + "loc": { + "start": { + "line": 549, + "column": 59 + }, + "end": { + "line": 549, + "column": 60 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "x", + "start": 10905, + "end": 10906, + "loc": { + "start": { + "line": 549, + "column": 61 + }, + "end": { + "line": 549, + "column": 62 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10906, + "end": 10907, + "loc": { + "start": { + "line": 549, + "column": 62 + }, + "end": { + "line": 549, + "column": 63 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10913, + "end": 10914, + "loc": { + "start": { + "line": 550, + "column": 5 + }, + "end": { + "line": 550, + "column": 6 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 10915, + "end": 10918, + "loc": { + "start": { + "line": 550, + "column": 7 + }, + "end": { + "line": 550, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 10919, + "end": 10926, + "loc": { + "start": { + "line": 550, + "column": 11 + }, + "end": { + "line": 550, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10926, + "end": 10927, + "loc": { + "start": { + "line": 550, + "column": 18 + }, + "end": { + "line": 550, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 10927, + "end": 10928, + "loc": { + "start": { + "line": 550, + "column": 19 + }, + "end": { + "line": 550, + "column": 20 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10928, + "end": 10929, + "loc": { + "start": { + "line": 550, + "column": 20 + }, + "end": { + "line": 550, + "column": 21 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 10930, + "end": 10931, + "loc": { + "start": { + "line": 550, + "column": 22 + }, + "end": { + "line": 550, + "column": 23 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10931, + "end": 10932, + "loc": { + "start": { + "line": 550, + "column": 23 + }, + "end": { + "line": 550, + "column": 24 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10933, + "end": 10934, + "loc": { + "start": { + "line": 550, + "column": 25 + }, + "end": { + "line": 550, + "column": 26 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 10934, + "end": 10935, + "loc": { + "start": { + "line": 550, + "column": 26 + }, + "end": { + "line": 550, + "column": 27 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10935, + "end": 10936, + "loc": { + "start": { + "line": 550, + "column": 27 + }, + "end": { + "line": 550, + "column": 28 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10936, + "end": 10937, + "loc": { + "start": { + "line": 550, + "column": 28 + }, + "end": { + "line": 550, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10937, + "end": 10938, + "loc": { + "start": { + "line": 550, + "column": 29 + }, + "end": { + "line": 550, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "y", + "start": 10942, + "end": 10943, + "loc": { + "start": { + "line": 551, + "column": 3 + }, + "end": { + "line": 551, + "column": 4 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10943, + "end": 10944, + "loc": { + "start": { + "line": 551, + "column": 4 + }, + "end": { + "line": 551, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "y", + "start": 10949, + "end": 10950, + "loc": { + "start": { + "line": 552, + "column": 4 + }, + "end": { + "line": 552, + "column": 5 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10950, + "end": 10951, + "loc": { + "start": { + "line": 552, + "column": 5 + }, + "end": { + "line": 552, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 10951, + "end": 10957, + "loc": { + "start": { + "line": 552, + "column": 6 + }, + "end": { + "line": 552, + "column": 12 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": ">", + "start": 10958, + "end": 10959, + "loc": { + "start": { + "line": 552, + "column": 13 + }, + "end": { + "line": 552, + "column": 14 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 10960, + "end": 10961, + "loc": { + "start": { + "line": 552, + "column": 15 + }, + "end": { + "line": 552, + "column": 16 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10967, + "end": 10968, + "loc": { + "start": { + "line": 553, + "column": 5 + }, + "end": { + "line": 553, + "column": 6 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 10969, + "end": 10972, + "loc": { + "start": { + "line": 553, + "column": 7 + }, + "end": { + "line": 553, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 10973, + "end": 10980, + "loc": { + "start": { + "line": 553, + "column": 11 + }, + "end": { + "line": 553, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10980, + "end": 10981, + "loc": { + "start": { + "line": 553, + "column": 18 + }, + "end": { + "line": 553, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 10981, + "end": 10982, + "loc": { + "start": { + "line": 553, + "column": 19 + }, + "end": { + "line": 553, + "column": 20 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10982, + "end": 10983, + "loc": { + "start": { + "line": 553, + "column": 20 + }, + "end": { + "line": 553, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 10984, + "end": 10989, + "loc": { + "start": { + "line": 553, + "column": 22 + }, + "end": { + "line": 553, + "column": 27 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 10989, + "end": 10990, + "loc": { + "start": { + "line": 553, + "column": 27 + }, + "end": { + "line": 553, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 10990, + "end": 11002, + "loc": { + "start": { + "line": 553, + "column": 28 + }, + "end": { + "line": 553, + "column": 40 + } + } + }, + { + "type": { + "label": "^", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 4, + "updateContext": null + }, + "value": "^", + "start": 11003, + "end": 11004, + "loc": { + "start": { + "line": 553, + "column": 41 + }, + "end": { + "line": 553, + "column": 42 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 11005, + "end": 11006, + "loc": { + "start": { + "line": 553, + "column": 43 + }, + "end": { + "line": 553, + "column": 44 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11006, + "end": 11007, + "loc": { + "start": { + "line": 553, + "column": 44 + }, + "end": { + "line": 553, + "column": 45 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "steps", + "start": 11007, + "end": 11012, + "loc": { + "start": { + "line": 553, + "column": 45 + }, + "end": { + "line": 553, + "column": 50 + } + } + }, + { + "type": { + "label": "%", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 10, + "updateContext": null + }, + "value": "%", + "start": 11013, + "end": 11014, + "loc": { + "start": { + "line": 553, + "column": 51 + }, + "end": { + "line": 553, + "column": 52 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 2, + "start": 11015, + "end": 11016, + "loc": { + "start": { + "line": 553, + "column": 53 + }, + "end": { + "line": 553, + "column": 54 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11016, + "end": 11017, + "loc": { + "start": { + "line": 553, + "column": 54 + }, + "end": { + "line": 553, + "column": 55 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11017, + "end": 11018, + "loc": { + "start": { + "line": 553, + "column": 55 + }, + "end": { + "line": 553, + "column": 56 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "y", + "start": 11019, + "end": 11020, + "loc": { + "start": { + "line": 553, + "column": 57 + }, + "end": { + "line": 553, + "column": 58 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11020, + "end": 11021, + "loc": { + "start": { + "line": 553, + "column": 58 + }, + "end": { + "line": 553, + "column": 59 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11027, + "end": 11028, + "loc": { + "start": { + "line": 554, + "column": 5 + }, + "end": { + "line": 554, + "column": 6 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 11029, + "end": 11032, + "loc": { + "start": { + "line": 554, + "column": 7 + }, + "end": { + "line": 554, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 11033, + "end": 11040, + "loc": { + "start": { + "line": 554, + "column": 11 + }, + "end": { + "line": 554, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11040, + "end": 11041, + "loc": { + "start": { + "line": 554, + "column": 18 + }, + "end": { + "line": 554, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 11041, + "end": 11042, + "loc": { + "start": { + "line": 554, + "column": 19 + }, + "end": { + "line": 554, + "column": 20 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11042, + "end": 11043, + "loc": { + "start": { + "line": 554, + "column": 20 + }, + "end": { + "line": 554, + "column": 21 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 11044, + "end": 11045, + "loc": { + "start": { + "line": 554, + "column": 22 + }, + "end": { + "line": 554, + "column": 23 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11045, + "end": 11046, + "loc": { + "start": { + "line": 554, + "column": 23 + }, + "end": { + "line": 554, + "column": 24 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11047, + "end": 11048, + "loc": { + "start": { + "line": 554, + "column": 25 + }, + "end": { + "line": 554, + "column": 26 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 11048, + "end": 11049, + "loc": { + "start": { + "line": 554, + "column": 26 + }, + "end": { + "line": 554, + "column": 27 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11049, + "end": 11050, + "loc": { + "start": { + "line": 554, + "column": 27 + }, + "end": { + "line": 554, + "column": 28 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11050, + "end": 11051, + "loc": { + "start": { + "line": 554, + "column": 28 + }, + "end": { + "line": 554, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11051, + "end": 11052, + "loc": { + "start": { + "line": 554, + "column": 29 + }, + "end": { + "line": 554, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "u", + "start": 11056, + "end": 11057, + "loc": { + "start": { + "line": 555, + "column": 3 + }, + "end": { + "line": 555, + "column": 4 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11057, + "end": 11058, + "loc": { + "start": { + "line": 555, + "column": 4 + }, + "end": { + "line": 555, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "u", + "start": 11063, + "end": 11064, + "loc": { + "start": { + "line": 556, + "column": 4 + }, + "end": { + "line": 556, + "column": 5 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11064, + "end": 11065, + "loc": { + "start": { + "line": 556, + "column": 5 + }, + "end": { + "line": 556, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 11065, + "end": 11071, + "loc": { + "start": { + "line": 556, + "column": 6 + }, + "end": { + "line": 556, + "column": 12 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": ">", + "start": 11072, + "end": 11073, + "loc": { + "start": { + "line": 556, + "column": 13 + }, + "end": { + "line": 556, + "column": 14 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 11074, + "end": 11075, + "loc": { + "start": { + "line": 556, + "column": 15 + }, + "end": { + "line": 556, + "column": 16 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11081, + "end": 11082, + "loc": { + "start": { + "line": 557, + "column": 5 + }, + "end": { + "line": 557, + "column": 6 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 11083, + "end": 11086, + "loc": { + "start": { + "line": 557, + "column": 7 + }, + "end": { + "line": 557, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 11087, + "end": 11094, + "loc": { + "start": { + "line": 557, + "column": 11 + }, + "end": { + "line": 557, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11094, + "end": 11095, + "loc": { + "start": { + "line": 557, + "column": 18 + }, + "end": { + "line": 557, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 11095, + "end": 11096, + "loc": { + "start": { + "line": 557, + "column": 19 + }, + "end": { + "line": 557, + "column": 20 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11096, + "end": 11097, + "loc": { + "start": { + "line": 557, + "column": 20 + }, + "end": { + "line": 557, + "column": 21 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 11098, + "end": 11102, + "loc": { + "start": { + "line": 557, + "column": 22 + }, + "end": { + "line": 557, + "column": 26 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11102, + "end": 11103, + "loc": { + "start": { + "line": 557, + "column": 26 + }, + "end": { + "line": 557, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 11103, + "end": 11115, + "loc": { + "start": { + "line": 557, + "column": 27 + }, + "end": { + "line": 557, + "column": 39 + } + } + }, + { + "type": { + "label": "^", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 4, + "updateContext": null + }, + "value": "^", + "start": 11116, + "end": 11117, + "loc": { + "start": { + "line": 557, + "column": 40 + }, + "end": { + "line": 557, + "column": 41 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 11118, + "end": 11119, + "loc": { + "start": { + "line": 557, + "column": 42 + }, + "end": { + "line": 557, + "column": 43 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11119, + "end": 11120, + "loc": { + "start": { + "line": 557, + "column": 43 + }, + "end": { + "line": 557, + "column": 44 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "steps", + "start": 11120, + "end": 11125, + "loc": { + "start": { + "line": 557, + "column": 44 + }, + "end": { + "line": 557, + "column": 49 + } + } + }, + { + "type": { + "label": "%", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 10, + "updateContext": null + }, + "value": "%", + "start": 11126, + "end": 11127, + "loc": { + "start": { + "line": 557, + "column": 50 + }, + "end": { + "line": 557, + "column": 51 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 2, + "start": 11128, + "end": 11129, + "loc": { + "start": { + "line": 557, + "column": 52 + }, + "end": { + "line": 557, + "column": 53 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11129, + "end": 11130, + "loc": { + "start": { + "line": 557, + "column": 53 + }, + "end": { + "line": 557, + "column": 54 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11130, + "end": 11131, + "loc": { + "start": { + "line": 557, + "column": 54 + }, + "end": { + "line": 557, + "column": 55 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "u", + "start": 11132, + "end": 11133, + "loc": { + "start": { + "line": 557, + "column": 56 + }, + "end": { + "line": 557, + "column": 57 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11133, + "end": 11134, + "loc": { + "start": { + "line": 557, + "column": 57 + }, + "end": { + "line": 557, + "column": 58 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11140, + "end": 11141, + "loc": { + "start": { + "line": 558, + "column": 5 + }, + "end": { + "line": 558, + "column": 6 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 11142, + "end": 11145, + "loc": { + "start": { + "line": 558, + "column": 7 + }, + "end": { + "line": 558, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 11146, + "end": 11153, + "loc": { + "start": { + "line": 558, + "column": 11 + }, + "end": { + "line": 558, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11153, + "end": 11154, + "loc": { + "start": { + "line": 558, + "column": 18 + }, + "end": { + "line": 558, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 11154, + "end": 11155, + "loc": { + "start": { + "line": 558, + "column": 19 + }, + "end": { + "line": 558, + "column": 20 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11155, + "end": 11156, + "loc": { + "start": { + "line": 558, + "column": 20 + }, + "end": { + "line": 558, + "column": 21 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 11157, + "end": 11158, + "loc": { + "start": { + "line": 558, + "column": 22 + }, + "end": { + "line": 558, + "column": 23 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11158, + "end": 11159, + "loc": { + "start": { + "line": 558, + "column": 23 + }, + "end": { + "line": 558, + "column": 24 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11160, + "end": 11161, + "loc": { + "start": { + "line": 558, + "column": 25 + }, + "end": { + "line": 558, + "column": 26 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 11161, + "end": 11162, + "loc": { + "start": { + "line": 558, + "column": 26 + }, + "end": { + "line": 558, + "column": 27 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11162, + "end": 11163, + "loc": { + "start": { + "line": 558, + "column": 27 + }, + "end": { + "line": 558, + "column": 28 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11163, + "end": 11164, + "loc": { + "start": { + "line": 558, + "column": 28 + }, + "end": { + "line": 558, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11164, + "end": 11165, + "loc": { + "start": { + "line": 558, + "column": 29 + }, + "end": { + "line": 558, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "v", + "start": 11169, + "end": 11170, + "loc": { + "start": { + "line": 559, + "column": 3 + }, + "end": { + "line": 559, + "column": 4 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11170, + "end": 11171, + "loc": { + "start": { + "line": 559, + "column": 4 + }, + "end": { + "line": 559, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "v", + "start": 11176, + "end": 11177, + "loc": { + "start": { + "line": 560, + "column": 4 + }, + "end": { + "line": 560, + "column": 5 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11177, + "end": 11178, + "loc": { + "start": { + "line": 560, + "column": 5 + }, + "end": { + "line": 560, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 11178, + "end": 11184, + "loc": { + "start": { + "line": 560, + "column": 6 + }, + "end": { + "line": 560, + "column": 12 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": ">", + "start": 11185, + "end": 11186, + "loc": { + "start": { + "line": 560, + "column": 13 + }, + "end": { + "line": 560, + "column": 14 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 11187, + "end": 11188, + "loc": { + "start": { + "line": 560, + "column": 15 + }, + "end": { + "line": 560, + "column": 16 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11194, + "end": 11195, + "loc": { + "start": { + "line": 561, + "column": 5 + }, + "end": { + "line": 561, + "column": 6 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 11196, + "end": 11199, + "loc": { + "start": { + "line": 561, + "column": 7 + }, + "end": { + "line": 561, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 11200, + "end": 11207, + "loc": { + "start": { + "line": 561, + "column": 11 + }, + "end": { + "line": 561, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11207, + "end": 11208, + "loc": { + "start": { + "line": 561, + "column": 18 + }, + "end": { + "line": 561, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 11208, + "end": 11209, + "loc": { + "start": { + "line": 561, + "column": 19 + }, + "end": { + "line": 561, + "column": 20 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11209, + "end": 11210, + "loc": { + "start": { + "line": 561, + "column": 20 + }, + "end": { + "line": 561, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "other", + "start": 11211, + "end": 11216, + "loc": { + "start": { + "line": 561, + "column": 22 + }, + "end": { + "line": 561, + "column": 27 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11216, + "end": 11217, + "loc": { + "start": { + "line": 561, + "column": 27 + }, + "end": { + "line": 561, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 11217, + "end": 11229, + "loc": { + "start": { + "line": 561, + "column": 28 + }, + "end": { + "line": 561, + "column": 40 + } + } + }, + { + "type": { + "label": "^", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 4, + "updateContext": null + }, + "value": "^", + "start": 11230, + "end": 11231, + "loc": { + "start": { + "line": 561, + "column": 41 + }, + "end": { + "line": 561, + "column": 42 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11232, + "end": 11233, + "loc": { + "start": { + "line": 561, + "column": 43 + }, + "end": { + "line": 561, + "column": 44 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11233, + "end": 11234, + "loc": { + "start": { + "line": 561, + "column": 44 + }, + "end": { + "line": 561, + "column": 45 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "steps", + "start": 11234, + "end": 11239, + "loc": { + "start": { + "line": 561, + "column": 45 + }, + "end": { + "line": 561, + "column": 50 + } + } + }, + { + "type": { + "label": "%", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 10, + "updateContext": null + }, + "value": "%", + "start": 11240, + "end": 11241, + "loc": { + "start": { + "line": 561, + "column": 51 + }, + "end": { + "line": 561, + "column": 52 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 2, + "start": 11242, + "end": 11243, + "loc": { + "start": { + "line": 561, + "column": 53 + }, + "end": { + "line": 561, + "column": 54 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11243, + "end": 11244, + "loc": { + "start": { + "line": 561, + "column": 54 + }, + "end": { + "line": 561, + "column": 55 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 11245, + "end": 11246, + "loc": { + "start": { + "line": 561, + "column": 56 + }, + "end": { + "line": 561, + "column": 57 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 11247, + "end": 11248, + "loc": { + "start": { + "line": 561, + "column": 58 + }, + "end": { + "line": 561, + "column": 59 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11248, + "end": 11249, + "loc": { + "start": { + "line": 561, + "column": 59 + }, + "end": { + "line": 561, + "column": 60 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11249, + "end": 11250, + "loc": { + "start": { + "line": 561, + "column": 60 + }, + "end": { + "line": 561, + "column": 61 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "v", + "start": 11251, + "end": 11252, + "loc": { + "start": { + "line": 561, + "column": 62 + }, + "end": { + "line": 561, + "column": 63 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11252, + "end": 11253, + "loc": { + "start": { + "line": 561, + "column": 63 + }, + "end": { + "line": 561, + "column": 64 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11259, + "end": 11260, + "loc": { + "start": { + "line": 562, + "column": 5 + }, + "end": { + "line": 562, + "column": 6 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 11261, + "end": 11264, + "loc": { + "start": { + "line": 562, + "column": 7 + }, + "end": { + "line": 562, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 11265, + "end": 11272, + "loc": { + "start": { + "line": 562, + "column": 11 + }, + "end": { + "line": 562, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11272, + "end": 11273, + "loc": { + "start": { + "line": 562, + "column": 18 + }, + "end": { + "line": 562, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "r", + "start": 11273, + "end": 11274, + "loc": { + "start": { + "line": 562, + "column": 19 + }, + "end": { + "line": 562, + "column": 20 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11274, + "end": 11275, + "loc": { + "start": { + "line": 562, + "column": 20 + }, + "end": { + "line": 562, + "column": 21 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 11276, + "end": 11277, + "loc": { + "start": { + "line": 562, + "column": 22 + }, + "end": { + "line": 562, + "column": 23 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11277, + "end": 11278, + "loc": { + "start": { + "line": 562, + "column": 23 + }, + "end": { + "line": 562, + "column": 24 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11279, + "end": 11280, + "loc": { + "start": { + "line": 562, + "column": 25 + }, + "end": { + "line": 562, + "column": 26 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 11280, + "end": 11281, + "loc": { + "start": { + "line": 562, + "column": 26 + }, + "end": { + "line": 562, + "column": 27 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11281, + "end": 11282, + "loc": { + "start": { + "line": 562, + "column": 27 + }, + "end": { + "line": 562, + "column": 28 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11282, + "end": 11283, + "loc": { + "start": { + "line": 562, + "column": 28 + }, + "end": { + "line": 562, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11283, + "end": 11284, + "loc": { + "start": { + "line": 562, + "column": 29 + }, + "end": { + "line": 562, + "column": 30 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11287, + "end": 11288, + "loc": { + "start": { + "line": 563, + "column": 2 + }, + "end": { + "line": 563, + "column": 3 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11288, + "end": 11289, + "loc": { + "start": { + "line": 563, + "column": 3 + }, + "end": { + "line": 563, + "column": 4 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11291, + "end": 11292, + "loc": { + "start": { + "line": 564, + "column": 1 + }, + "end": { + "line": 564, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "valueOf", + "start": 11295, + "end": 11302, + "loc": { + "start": { + "line": 566, + "column": 1 + }, + "end": { + "line": 566, + "column": 8 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11302, + "end": 11303, + "loc": { + "start": { + "line": 566, + "column": 8 + }, + "end": { + "line": 566, + "column": 9 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11303, + "end": 11304, + "loc": { + "start": { + "line": 566, + "column": 9 + }, + "end": { + "line": 566, + "column": 10 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11305, + "end": 11306, + "loc": { + "start": { + "line": 566, + "column": 11 + }, + "end": { + "line": 566, + "column": 12 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 11309, + "end": 11311, + "loc": { + "start": { + "line": 567, + "column": 2 + }, + "end": { + "line": 567, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11312, + "end": 11313, + "loc": { + "start": { + "line": 567, + "column": 5 + }, + "end": { + "line": 567, + "column": 6 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 11313, + "end": 11317, + "loc": { + "start": { + "line": 567, + "column": 6 + }, + "end": { + "line": 567, + "column": 10 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11317, + "end": 11318, + "loc": { + "start": { + "line": 567, + "column": 10 + }, + "end": { + "line": 567, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "gtn", + "start": 11318, + "end": 11321, + "loc": { + "start": { + "line": 567, + "column": 11 + }, + "end": { + "line": 567, + "column": 14 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11321, + "end": 11322, + "loc": { + "start": { + "line": 567, + "column": 14 + }, + "end": { + "line": 567, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MAX_NUMBER", + "start": 11322, + "end": 11332, + "loc": { + "start": { + "line": 567, + "column": 15 + }, + "end": { + "line": 567, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11332, + "end": 11333, + "loc": { + "start": { + "line": 567, + "column": 25 + }, + "end": { + "line": 567, + "column": 26 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11333, + "end": 11334, + "loc": { + "start": { + "line": 567, + "column": 26 + }, + "end": { + "line": 567, + "column": 27 + } + } + }, + { + "type": { + "label": "throw", + "keyword": "throw", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "throw", + "start": 11338, + "end": 11343, + "loc": { + "start": { + "line": 568, + "column": 3 + }, + "end": { + "line": 568, + "column": 8 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 11344, + "end": 11347, + "loc": { + "start": { + "line": 568, + "column": 9 + }, + "end": { + "line": 568, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ValueError", + "start": 11348, + "end": 11358, + "loc": { + "start": { + "line": 568, + "column": 13 + }, + "end": { + "line": 568, + "column": 23 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11358, + "end": 11359, + "loc": { + "start": { + "line": 568, + "column": 23 + }, + "end": { + "line": 568, + "column": 24 + } + } + }, + { + "type": { + "label": "`", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11364, + "end": 11365, + "loc": { + "start": { + "line": 569, + "column": 4 + }, + "end": { + "line": 569, + "column": 5 + } + } + }, + { + "type": { + "label": "template", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "Cannot call valueOf on Integer larger than ", + "start": 11365, + "end": 11408, + "loc": { + "start": { + "line": 569, + "column": 5 + }, + "end": { + "line": 569, + "column": 48 + } + } + }, + { + "type": { + "label": "${", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11408, + "end": 11410, + "loc": { + "start": { + "line": 569, + "column": 48 + }, + "end": { + "line": 569, + "column": 50 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MAX_NUMBER", + "start": 11410, + "end": 11420, + "loc": { + "start": { + "line": 569, + "column": 50 + }, + "end": { + "line": 569, + "column": 60 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11420, + "end": 11421, + "loc": { + "start": { + "line": 569, + "column": 60 + }, + "end": { + "line": 569, + "column": 61 + } + } + }, + { + "type": { + "label": "template", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": ". Got ", + "start": 11421, + "end": 11427, + "loc": { + "start": { + "line": 569, + "column": 61 + }, + "end": { + "line": 569, + "column": 67 + } + } + }, + { + "type": { + "label": "${", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11427, + "end": 11429, + "loc": { + "start": { + "line": 569, + "column": 67 + }, + "end": { + "line": 569, + "column": 69 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 11429, + "end": 11433, + "loc": { + "start": { + "line": 569, + "column": 69 + }, + "end": { + "line": 569, + "column": 73 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11433, + "end": 11434, + "loc": { + "start": { + "line": 569, + "column": 73 + }, + "end": { + "line": 569, + "column": 74 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "toString", + "start": 11434, + "end": 11442, + "loc": { + "start": { + "line": 569, + "column": 74 + }, + "end": { + "line": 569, + "column": 82 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11442, + "end": 11443, + "loc": { + "start": { + "line": 569, + "column": 82 + }, + "end": { + "line": 569, + "column": 83 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11443, + "end": 11444, + "loc": { + "start": { + "line": 569, + "column": 83 + }, + "end": { + "line": 569, + "column": 84 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11444, + "end": 11445, + "loc": { + "start": { + "line": 569, + "column": 84 + }, + "end": { + "line": 569, + "column": 85 + } + } + }, + { + "type": { + "label": "template", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "", + "start": 11445, + "end": 11445, + "loc": { + "start": { + "line": 569, + "column": 85 + }, + "end": { + "line": 569, + "column": 85 + } + } + }, + { + "type": { + "label": "`", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11445, + "end": 11446, + "loc": { + "start": { + "line": 569, + "column": 85 + }, + "end": { + "line": 569, + "column": 86 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11446, + "end": 11447, + "loc": { + "start": { + "line": 569, + "column": 86 + }, + "end": { + "line": 569, + "column": 87 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11451, + "end": 11452, + "loc": { + "start": { + "line": 570, + "column": 3 + }, + "end": { + "line": 570, + "column": 4 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11452, + "end": 11453, + "loc": { + "start": { + "line": 570, + "column": 4 + }, + "end": { + "line": 570, + "column": 5 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 11456, + "end": 11458, + "loc": { + "start": { + "line": 571, + "column": 2 + }, + "end": { + "line": 571, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11459, + "end": 11460, + "loc": { + "start": { + "line": 571, + "column": 5 + }, + "end": { + "line": 571, + "column": 6 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 11460, + "end": 11464, + "loc": { + "start": { + "line": 571, + "column": 6 + }, + "end": { + "line": 571, + "column": 10 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11464, + "end": 11465, + "loc": { + "start": { + "line": 571, + "column": 10 + }, + "end": { + "line": 571, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ltn", + "start": 11465, + "end": 11468, + "loc": { + "start": { + "line": 571, + "column": 11 + }, + "end": { + "line": 571, + "column": 14 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11468, + "end": 11469, + "loc": { + "start": { + "line": 571, + "column": 14 + }, + "end": { + "line": 571, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MIN_NUMBER", + "start": 11469, + "end": 11479, + "loc": { + "start": { + "line": 571, + "column": 15 + }, + "end": { + "line": 571, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11479, + "end": 11480, + "loc": { + "start": { + "line": 571, + "column": 25 + }, + "end": { + "line": 571, + "column": 26 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11480, + "end": 11481, + "loc": { + "start": { + "line": 571, + "column": 26 + }, + "end": { + "line": 571, + "column": 27 + } + } + }, + { + "type": { + "label": "throw", + "keyword": "throw", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "throw", + "start": 11485, + "end": 11490, + "loc": { + "start": { + "line": 572, + "column": 3 + }, + "end": { + "line": 572, + "column": 8 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 11491, + "end": 11494, + "loc": { + "start": { + "line": 572, + "column": 9 + }, + "end": { + "line": 572, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ValueError", + "start": 11495, + "end": 11505, + "loc": { + "start": { + "line": 572, + "column": 13 + }, + "end": { + "line": 572, + "column": 23 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11505, + "end": 11506, + "loc": { + "start": { + "line": 572, + "column": 23 + }, + "end": { + "line": 572, + "column": 24 + } + } + }, + { + "type": { + "label": "`", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11511, + "end": 11512, + "loc": { + "start": { + "line": 573, + "column": 4 + }, + "end": { + "line": 573, + "column": 5 + } + } + }, + { + "type": { + "label": "template", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "Cannot call valueOf on Integer smaller than ", + "start": 11512, + "end": 11556, + "loc": { + "start": { + "line": 573, + "column": 5 + }, + "end": { + "line": 573, + "column": 49 + } + } + }, + { + "type": { + "label": "${", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11556, + "end": 11558, + "loc": { + "start": { + "line": 573, + "column": 49 + }, + "end": { + "line": 573, + "column": 51 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MIN_NUMBER", + "start": 11558, + "end": 11568, + "loc": { + "start": { + "line": 573, + "column": 51 + }, + "end": { + "line": 573, + "column": 61 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11568, + "end": 11569, + "loc": { + "start": { + "line": 573, + "column": 61 + }, + "end": { + "line": 573, + "column": 62 + } + } + }, + { + "type": { + "label": "template", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": ". Got ", + "start": 11569, + "end": 11575, + "loc": { + "start": { + "line": 573, + "column": 62 + }, + "end": { + "line": 573, + "column": 68 + } + } + }, + { + "type": { + "label": "${", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11575, + "end": 11577, + "loc": { + "start": { + "line": 573, + "column": 68 + }, + "end": { + "line": 573, + "column": 70 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 11577, + "end": 11581, + "loc": { + "start": { + "line": 573, + "column": 70 + }, + "end": { + "line": 573, + "column": 74 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11581, + "end": 11582, + "loc": { + "start": { + "line": 573, + "column": 74 + }, + "end": { + "line": 573, + "column": 75 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "toString", + "start": 11582, + "end": 11590, + "loc": { + "start": { + "line": 573, + "column": 75 + }, + "end": { + "line": 573, + "column": 83 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11590, + "end": 11591, + "loc": { + "start": { + "line": 573, + "column": 83 + }, + "end": { + "line": 573, + "column": 84 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11591, + "end": 11592, + "loc": { + "start": { + "line": 573, + "column": 84 + }, + "end": { + "line": 573, + "column": 85 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11592, + "end": 11593, + "loc": { + "start": { + "line": 573, + "column": 85 + }, + "end": { + "line": 573, + "column": 86 + } + } + }, + { + "type": { + "label": "template", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "", + "start": 11593, + "end": 11593, + "loc": { + "start": { + "line": 573, + "column": 86 + }, + "end": { + "line": 573, + "column": 86 + } + } + }, + { + "type": { + "label": "`", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11593, + "end": 11594, + "loc": { + "start": { + "line": 573, + "column": 86 + }, + "end": { + "line": 573, + "column": 87 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11594, + "end": 11595, + "loc": { + "start": { + "line": 573, + "column": 87 + }, + "end": { + "line": 573, + "column": 88 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11599, + "end": 11600, + "loc": { + "start": { + "line": 574, + "column": 3 + }, + "end": { + "line": 574, + "column": 4 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11600, + "end": 11601, + "loc": { + "start": { + "line": 574, + "column": 4 + }, + "end": { + "line": 574, + "column": 5 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 11605, + "end": 11610, + "loc": { + "start": { + "line": 576, + "column": 2 + }, + "end": { + "line": 576, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "limbs", + "start": 11611, + "end": 11616, + "loc": { + "start": { + "line": 576, + "column": 8 + }, + "end": { + "line": 576, + "column": 13 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 11617, + "end": 11618, + "loc": { + "start": { + "line": 576, + "column": 14 + }, + "end": { + "line": 576, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "convert", + "start": 11619, + "end": 11626, + "loc": { + "start": { + "line": 576, + "column": 16 + }, + "end": { + "line": 576, + "column": 23 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11626, + "end": 11627, + "loc": { + "start": { + "line": 576, + "column": 23 + }, + "end": { + "line": 576, + "column": 24 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 11631, + "end": 11635, + "loc": { + "start": { + "line": 577, + "column": 3 + }, + "end": { + "line": 577, + "column": 7 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11635, + "end": 11636, + "loc": { + "start": { + "line": 577, + "column": 7 + }, + "end": { + "line": 577, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 11636, + "end": 11641, + "loc": { + "start": { + "line": 577, + "column": 8 + }, + "end": { + "line": 577, + "column": 13 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11641, + "end": 11642, + "loc": { + "start": { + "line": 577, + "column": 13 + }, + "end": { + "line": 577, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MAX_BASE", + "start": 11646, + "end": 11654, + "loc": { + "start": { + "line": 578, + "column": 3 + }, + "end": { + "line": 578, + "column": 11 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11654, + "end": 11655, + "loc": { + "start": { + "line": 578, + "column": 11 + }, + "end": { + "line": 578, + "column": 12 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 11659, + "end": 11663, + "loc": { + "start": { + "line": 579, + "column": 3 + }, + "end": { + "line": 579, + "column": 7 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11663, + "end": 11664, + "loc": { + "start": { + "line": 579, + "column": 7 + }, + "end": { + "line": 579, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 11664, + "end": 11670, + "loc": { + "start": { + "line": 579, + "column": 8 + }, + "end": { + "line": 579, + "column": 14 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11670, + "end": 11671, + "loc": { + "start": { + "line": 579, + "column": 14 + }, + "end": { + "line": 579, + "column": 15 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 11675, + "end": 11676, + "loc": { + "start": { + "line": 580, + "column": 3 + }, + "end": { + "line": 580, + "column": 4 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11676, + "end": 11677, + "loc": { + "start": { + "line": 580, + "column": 4 + }, + "end": { + "line": 580, + "column": 5 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 11681, + "end": 11685, + "loc": { + "start": { + "line": 581, + "column": 3 + }, + "end": { + "line": 581, + "column": 7 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11685, + "end": 11686, + "loc": { + "start": { + "line": 581, + "column": 7 + }, + "end": { + "line": 581, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 11686, + "end": 11692, + "loc": { + "start": { + "line": 581, + "column": 8 + }, + "end": { + "line": 581, + "column": 14 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11692, + "end": 11693, + "loc": { + "start": { + "line": 581, + "column": 14 + }, + "end": { + "line": 581, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 11693, + "end": 11699, + "loc": { + "start": { + "line": 581, + "column": 15 + }, + "end": { + "line": 581, + "column": 21 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11699, + "end": 11700, + "loc": { + "start": { + "line": 581, + "column": 21 + }, + "end": { + "line": 581, + "column": 22 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11703, + "end": 11704, + "loc": { + "start": { + "line": 582, + "column": 2 + }, + "end": { + "line": 582, + "column": 3 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11704, + "end": 11705, + "loc": { + "start": { + "line": 582, + "column": 3 + }, + "end": { + "line": 582, + "column": 4 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 11709, + "end": 11714, + "loc": { + "start": { + "line": 584, + "column": 2 + }, + "end": { + "line": 584, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "sign", + "start": 11715, + "end": 11719, + "loc": { + "start": { + "line": 584, + "column": 8 + }, + "end": { + "line": 584, + "column": 12 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 11720, + "end": 11721, + "loc": { + "start": { + "line": 584, + "column": 13 + }, + "end": { + "line": 584, + "column": 14 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 11722, + "end": 11726, + "loc": { + "start": { + "line": 584, + "column": 15 + }, + "end": { + "line": 584, + "column": 19 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11726, + "end": 11727, + "loc": { + "start": { + "line": 584, + "column": 19 + }, + "end": { + "line": 584, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 11727, + "end": 11739, + "loc": { + "start": { + "line": 584, + "column": 20 + }, + "end": { + "line": 584, + "column": 32 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11740, + "end": 11741, + "loc": { + "start": { + "line": 584, + "column": 33 + }, + "end": { + "line": 584, + "column": 34 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 11742, + "end": 11743, + "loc": { + "start": { + "line": 584, + "column": 35 + }, + "end": { + "line": 584, + "column": 36 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 11743, + "end": 11744, + "loc": { + "start": { + "line": 584, + "column": 36 + }, + "end": { + "line": 584, + "column": 37 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11745, + "end": 11746, + "loc": { + "start": { + "line": 584, + "column": 38 + }, + "end": { + "line": 584, + "column": 39 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 11747, + "end": 11748, + "loc": { + "start": { + "line": 584, + "column": 40 + }, + "end": { + "line": 584, + "column": 41 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11748, + "end": 11749, + "loc": { + "start": { + "line": 584, + "column": 41 + }, + "end": { + "line": 584, + "column": 42 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 11753, + "end": 11758, + "loc": { + "start": { + "line": 586, + "column": 2 + }, + "end": { + "line": 586, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "value", + "start": 11759, + "end": 11764, + "loc": { + "start": { + "line": 586, + "column": 8 + }, + "end": { + "line": 586, + "column": 13 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 11765, + "end": 11766, + "loc": { + "start": { + "line": 586, + "column": 14 + }, + "end": { + "line": 586, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "limbs", + "start": 11770, + "end": 11775, + "loc": { + "start": { + "line": 587, + "column": 3 + }, + "end": { + "line": 587, + "column": 8 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11775, + "end": 11776, + "loc": { + "start": { + "line": 587, + "column": 8 + }, + "end": { + "line": 587, + "column": 9 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 11776, + "end": 11782, + "loc": { + "start": { + "line": 587, + "column": 9 + }, + "end": { + "line": 587, + "column": 15 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "===", + "start": 11783, + "end": 11786, + "loc": { + "start": { + "line": 587, + "column": 16 + }, + "end": { + "line": 587, + "column": 19 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 2, + "start": 11787, + "end": 11788, + "loc": { + "start": { + "line": 587, + "column": 20 + }, + "end": { + "line": 587, + "column": 21 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11789, + "end": 11790, + "loc": { + "start": { + "line": 587, + "column": 22 + }, + "end": { + "line": 587, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "limbs", + "start": 11791, + "end": 11796, + "loc": { + "start": { + "line": 587, + "column": 24 + }, + "end": { + "line": 587, + "column": 29 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11796, + "end": 11797, + "loc": { + "start": { + "line": 587, + "column": 29 + }, + "end": { + "line": 587, + "column": 30 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 11797, + "end": 11798, + "loc": { + "start": { + "line": 587, + "column": 30 + }, + "end": { + "line": 587, + "column": 31 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11798, + "end": 11799, + "loc": { + "start": { + "line": 587, + "column": 31 + }, + "end": { + "line": 587, + "column": 32 + } + } + }, + { + "type": { + "label": "*", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 10, + "updateContext": null + }, + "value": "*", + "start": 11800, + "end": 11801, + "loc": { + "start": { + "line": 587, + "column": 33 + }, + "end": { + "line": 587, + "column": 34 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MAX_BASE", + "start": 11802, + "end": 11810, + "loc": { + "start": { + "line": 587, + "column": 35 + }, + "end": { + "line": 587, + "column": 43 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "+", + "start": 11811, + "end": 11812, + "loc": { + "start": { + "line": 587, + "column": 44 + }, + "end": { + "line": 587, + "column": 45 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "limbs", + "start": 11813, + "end": 11818, + "loc": { + "start": { + "line": 587, + "column": 46 + }, + "end": { + "line": 587, + "column": 51 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11818, + "end": 11819, + "loc": { + "start": { + "line": 587, + "column": 51 + }, + "end": { + "line": 587, + "column": 52 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 11819, + "end": 11820, + "loc": { + "start": { + "line": 587, + "column": 52 + }, + "end": { + "line": 587, + "column": 53 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11820, + "end": 11821, + "loc": { + "start": { + "line": 587, + "column": 53 + }, + "end": { + "line": 587, + "column": 54 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11822, + "end": 11823, + "loc": { + "start": { + "line": 587, + "column": 55 + }, + "end": { + "line": 587, + "column": 56 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "limbs", + "start": 11824, + "end": 11829, + "loc": { + "start": { + "line": 587, + "column": 57 + }, + "end": { + "line": 587, + "column": 62 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11829, + "end": 11830, + "loc": { + "start": { + "line": 587, + "column": 62 + }, + "end": { + "line": 587, + "column": 63 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 11830, + "end": 11831, + "loc": { + "start": { + "line": 587, + "column": 63 + }, + "end": { + "line": 587, + "column": 64 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11831, + "end": 11832, + "loc": { + "start": { + "line": 587, + "column": 64 + }, + "end": { + "line": 587, + "column": 65 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11832, + "end": 11833, + "loc": { + "start": { + "line": 587, + "column": 65 + }, + "end": { + "line": 587, + "column": 66 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 11837, + "end": 11843, + "loc": { + "start": { + "line": 589, + "column": 2 + }, + "end": { + "line": 589, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "sign", + "start": 11844, + "end": 11848, + "loc": { + "start": { + "line": 589, + "column": 9 + }, + "end": { + "line": 589, + "column": 13 + } + } + }, + { + "type": { + "label": "*", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 10, + "updateContext": null + }, + "value": "*", + "start": 11849, + "end": 11850, + "loc": { + "start": { + "line": 589, + "column": 14 + }, + "end": { + "line": 589, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "value", + "start": 11851, + "end": 11856, + "loc": { + "start": { + "line": 589, + "column": 16 + }, + "end": { + "line": 589, + "column": 21 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11856, + "end": 11857, + "loc": { + "start": { + "line": 589, + "column": 21 + }, + "end": { + "line": 589, + "column": 22 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11859, + "end": 11860, + "loc": { + "start": { + "line": 590, + "column": 1 + }, + "end": { + "line": 590, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "toNumber", + "start": 11863, + "end": 11871, + "loc": { + "start": { + "line": 592, + "column": 1 + }, + "end": { + "line": 592, + "column": 9 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11871, + "end": 11872, + "loc": { + "start": { + "line": 592, + "column": 9 + }, + "end": { + "line": 592, + "column": 10 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11872, + "end": 11873, + "loc": { + "start": { + "line": 592, + "column": 10 + }, + "end": { + "line": 592, + "column": 11 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11874, + "end": 11875, + "loc": { + "start": { + "line": 592, + "column": 12 + }, + "end": { + "line": 592, + "column": 13 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 11878, + "end": 11884, + "loc": { + "start": { + "line": 593, + "column": 2 + }, + "end": { + "line": 593, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 11885, + "end": 11889, + "loc": { + "start": { + "line": 593, + "column": 9 + }, + "end": { + "line": 593, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11889, + "end": 11890, + "loc": { + "start": { + "line": 593, + "column": 13 + }, + "end": { + "line": 593, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "valueOf", + "start": 11890, + "end": 11897, + "loc": { + "start": { + "line": 593, + "column": 14 + }, + "end": { + "line": 593, + "column": 21 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11897, + "end": 11898, + "loc": { + "start": { + "line": 593, + "column": 21 + }, + "end": { + "line": 593, + "column": 22 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11898, + "end": 11899, + "loc": { + "start": { + "line": 593, + "column": 22 + }, + "end": { + "line": 593, + "column": 23 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11899, + "end": 11900, + "loc": { + "start": { + "line": 593, + "column": 23 + }, + "end": { + "line": 593, + "column": 24 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11902, + "end": 11903, + "loc": { + "start": { + "line": 594, + "column": 1 + }, + "end": { + "line": 594, + "column": 2 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11904, + "end": 11905, + "loc": { + "start": { + "line": 595, + "column": 0 + }, + "end": { + "line": 595, + "column": 1 + } + } + }, + { + "type": { + "label": "eof", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11906, + "end": 11906, + "loc": { + "start": { + "line": 596, + "column": 0 + }, + "end": { + "line": 596, + "column": 0 + } + } + } + ] +} \ No newline at end of file diff --git a/ast/source/IntegerRing.js.json b/ast/source/IntegerRing.js.json new file mode 100644 index 0000000..56f4e8e --- /dev/null +++ b/ast/source/IntegerRing.js.json @@ -0,0 +1,24987 @@ +{ + "type": "File", + "start": 0, + "end": 3104, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 131, + "column": 0 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 3104, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 131, + "column": 0 + } + }, + "sourceType": "module", + "body": [ + { + "type": "ImportDeclaration", + "start": 0, + "end": 63, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 63 + } + }, + "specifiers": [ + { + "type": "ImportSpecifier", + "start": 8, + "end": 13, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 13 + } + }, + "imported": { + "type": "Identifier", + "start": 8, + "end": 13, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 13 + }, + "identifierName": "parse" + }, + "name": "parse" + }, + "local": { + "type": "Identifier", + "start": 8, + "end": 13, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 13 + }, + "identifierName": "parse" + }, + "name": "parse" + } + }, + { + "type": "ImportSpecifier", + "start": 15, + "end": 22, + "loc": { + "start": { + "line": 1, + "column": 15 + }, + "end": { + "line": 1, + "column": 22 + } + }, + "imported": { + "type": "Identifier", + "start": 15, + "end": 22, + "loc": { + "start": { + "line": 1, + "column": 15 + }, + "end": { + "line": 1, + "column": 22 + }, + "identifierName": "convert" + }, + "name": "convert" + }, + "local": { + "type": "Identifier", + "start": 15, + "end": 22, + "loc": { + "start": { + "line": 1, + "column": 15 + }, + "end": { + "line": 1, + "column": 22 + }, + "identifierName": "convert" + }, + "name": "convert" + } + } + ], + "source": { + "type": "StringLiteral", + "start": 29, + "end": 62, + "loc": { + "start": { + "line": 1, + "column": 29 + }, + "end": { + "line": 1, + "column": 62 + } + }, + "extra": { + "rawValue": "@aureooms/js-integer-big-endian", + "raw": "'@aureooms/js-integer-big-endian'" + }, + "value": "@aureooms/js-integer-big-endian" + } + }, + { + "type": "ImportDeclaration", + "start": 64, + "end": 121, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 57 + } + }, + "specifiers": [ + { + "type": "ImportSpecifier", + "start": 72, + "end": 81, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 17 + } + }, + "imported": { + "type": "Identifier", + "start": 72, + "end": 81, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 17 + }, + "identifierName": "TypeError" + }, + "name": "TypeError" + }, + "local": { + "type": "Identifier", + "start": 72, + "end": 81, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 17 + }, + "identifierName": "TypeError" + }, + "name": "TypeError" + } + }, + { + "type": "ImportSpecifier", + "start": 83, + "end": 93, + "loc": { + "start": { + "line": 2, + "column": 19 + }, + "end": { + "line": 2, + "column": 29 + } + }, + "imported": { + "type": "Identifier", + "start": 83, + "end": 93, + "loc": { + "start": { + "line": 2, + "column": 19 + }, + "end": { + "line": 2, + "column": 29 + }, + "identifierName": "ValueError" + }, + "name": "ValueError" + }, + "local": { + "type": "Identifier", + "start": 83, + "end": 93, + "loc": { + "start": { + "line": 2, + "column": 19 + }, + "end": { + "line": 2, + "column": 29 + }, + "identifierName": "ValueError" + }, + "name": "ValueError" + } + } + ], + "source": { + "type": "StringLiteral", + "start": 100, + "end": 120, + "loc": { + "start": { + "line": 2, + "column": 36 + }, + "end": { + "line": 2, + "column": 56 + } + }, + "extra": { + "rawValue": "@aureooms/js-error", + "raw": "'@aureooms/js-error'" + }, + "value": "@aureooms/js-error" + } + }, + { + "type": "ImportDeclaration", + "start": 123, + "end": 160, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 4, + "column": 37 + } + }, + "specifiers": [ + { + "type": "ImportSpecifier", + "start": 131, + "end": 138, + "loc": { + "start": { + "line": 4, + "column": 8 + }, + "end": { + "line": 4, + "column": 15 + } + }, + "imported": { + "type": "Identifier", + "start": 131, + "end": 138, + "loc": { + "start": { + "line": 4, + "column": 8 + }, + "end": { + "line": 4, + "column": 15 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "local": { + "type": "Identifier", + "start": 131, + "end": 138, + "loc": { + "start": { + "line": 4, + "column": 8 + }, + "end": { + "line": 4, + "column": 15 + }, + "identifierName": "Integer" + }, + "name": "Integer" + } + } + ], + "source": { + "type": "StringLiteral", + "start": 145, + "end": 159, + "loc": { + "start": { + "line": 4, + "column": 22 + }, + "end": { + "line": 4, + "column": 36 + } + }, + "extra": { + "rawValue": "./Integer.js", + "raw": "'./Integer.js'" + }, + "value": "./Integer.js" + } + }, + { + "type": "ImportDeclaration", + "start": 161, + "end": 224, + "loc": { + "start": { + "line": 5, + "column": 0 + }, + "end": { + "line": 5, + "column": 63 + } + }, + "specifiers": [ + { + "type": "ImportSpecifier", + "start": 169, + "end": 189, + "loc": { + "start": { + "line": 5, + "column": 8 + }, + "end": { + "line": 5, + "column": 28 + } + }, + "imported": { + "type": "Identifier", + "start": 169, + "end": 189, + "loc": { + "start": { + "line": 5, + "column": 8 + }, + "end": { + "line": 5, + "column": 28 + }, + "identifierName": "DEFAULT_DISPLAY_BASE" + }, + "name": "DEFAULT_DISPLAY_BASE" + }, + "local": { + "type": "Identifier", + "start": 169, + "end": 189, + "loc": { + "start": { + "line": 5, + "column": 8 + }, + "end": { + "line": 5, + "column": 28 + }, + "identifierName": "DEFAULT_DISPLAY_BASE" + }, + "name": "DEFAULT_DISPLAY_BASE" + } + } + ], + "source": { + "type": "StringLiteral", + "start": 196, + "end": 223, + "loc": { + "start": { + "line": 5, + "column": 35 + }, + "end": { + "line": 5, + "column": 62 + } + }, + "extra": { + "rawValue": "./DEFAULT_DISPLAY_BASE.js", + "raw": "'./DEFAULT_DISPLAY_BASE.js'" + }, + "value": "./DEFAULT_DISPLAY_BASE.js" + } + }, + { + "type": "ImportDeclaration", + "start": 225, + "end": 272, + "loc": { + "start": { + "line": 6, + "column": 0 + }, + "end": { + "line": 6, + "column": 47 + } + }, + "specifiers": [ + { + "type": "ImportSpecifier", + "start": 233, + "end": 245, + "loc": { + "start": { + "line": 6, + "column": 8 + }, + "end": { + "line": 6, + "column": 20 + } + }, + "imported": { + "type": "Identifier", + "start": 233, + "end": 245, + "loc": { + "start": { + "line": 6, + "column": 8 + }, + "end": { + "line": 6, + "column": 20 + }, + "identifierName": "_from_number" + }, + "name": "_from_number" + }, + "local": { + "type": "Identifier", + "start": 233, + "end": 245, + "loc": { + "start": { + "line": 6, + "column": 8 + }, + "end": { + "line": 6, + "column": 20 + }, + "identifierName": "_from_number" + }, + "name": "_from_number" + } + } + ], + "source": { + "type": "StringLiteral", + "start": 252, + "end": 271, + "loc": { + "start": { + "line": 6, + "column": 27 + }, + "end": { + "line": 6, + "column": 46 + } + }, + "extra": { + "rawValue": "./_from_number.js", + "raw": "'./_from_number.js'" + }, + "value": "./_from_number.js" + } + }, + { + "type": "ExportNamedDeclaration", + "start": 274, + "end": 3103, + "loc": { + "start": { + "line": 8, + "column": 0 + }, + "end": { + "line": 130, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "ClassDeclaration", + "start": 281, + "end": 3103, + "loc": { + "start": { + "line": 8, + "column": 7 + }, + "end": { + "line": 130, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 287, + "end": 298, + "loc": { + "start": { + "line": 8, + "column": 13 + }, + "end": { + "line": 8, + "column": 24 + }, + "identifierName": "IntegerRing" + }, + "name": "IntegerRing" + }, + "superClass": null, + "body": { + "type": "ClassBody", + "start": 299, + "end": 3103, + "loc": { + "start": { + "line": 8, + "column": 25 + }, + "end": { + "line": 130, + "column": 1 + } + }, + "body": [ + { + "type": "ClassMethod", + "start": 302, + "end": 371, + "loc": { + "start": { + "line": 9, + "column": 1 + }, + "end": { + "line": 12, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 302, + "end": 313, + "loc": { + "start": { + "line": 9, + "column": 1 + }, + "end": { + "line": 9, + "column": 12 + }, + "identifierName": "constructor" + }, + "name": "constructor" + }, + "kind": "constructor", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 314, + "end": 318, + "loc": { + "start": { + "line": 9, + "column": 13 + }, + "end": { + "line": 9, + "column": 17 + }, + "identifierName": "name" + }, + "name": "name" + }, + { + "type": "Identifier", + "start": 320, + "end": 324, + "loc": { + "start": { + "line": 9, + "column": 19 + }, + "end": { + "line": 9, + "column": 23 + }, + "identifierName": "base" + }, + "name": "base" + } + ], + "body": { + "type": "BlockStatement", + "start": 326, + "end": 371, + "loc": { + "start": { + "line": 9, + "column": 25 + }, + "end": { + "line": 12, + "column": 2 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 330, + "end": 347, + "loc": { + "start": { + "line": 10, + "column": 2 + }, + "end": { + "line": 10, + "column": 19 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 330, + "end": 346, + "loc": { + "start": { + "line": 10, + "column": 2 + }, + "end": { + "line": 10, + "column": 18 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 330, + "end": 339, + "loc": { + "start": { + "line": 10, + "column": 2 + }, + "end": { + "line": 10, + "column": 11 + } + }, + "object": { + "type": "ThisExpression", + "start": 330, + "end": 334, + "loc": { + "start": { + "line": 10, + "column": 2 + }, + "end": { + "line": 10, + "column": 6 + } + } + }, + "property": { + "type": "Identifier", + "start": 335, + "end": 339, + "loc": { + "start": { + "line": 10, + "column": 7 + }, + "end": { + "line": 10, + "column": 11 + }, + "identifierName": "name" + }, + "name": "name" + }, + "computed": false + }, + "right": { + "type": "Identifier", + "start": 342, + "end": 346, + "loc": { + "start": { + "line": 10, + "column": 14 + }, + "end": { + "line": 10, + "column": 18 + }, + "identifierName": "name" + }, + "name": "name" + } + } + }, + { + "type": "ExpressionStatement", + "start": 350, + "end": 368, + "loc": { + "start": { + "line": 11, + "column": 2 + }, + "end": { + "line": 11, + "column": 20 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 350, + "end": 367, + "loc": { + "start": { + "line": 11, + "column": 2 + }, + "end": { + "line": 11, + "column": 19 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 350, + "end": 360, + "loc": { + "start": { + "line": 11, + "column": 2 + }, + "end": { + "line": 11, + "column": 12 + } + }, + "object": { + "type": "ThisExpression", + "start": 350, + "end": 354, + "loc": { + "start": { + "line": 11, + "column": 2 + }, + "end": { + "line": 11, + "column": 6 + } + } + }, + "property": { + "type": "Identifier", + "start": 355, + "end": 360, + "loc": { + "start": { + "line": 11, + "column": 7 + }, + "end": { + "line": 11, + "column": 12 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + "right": { + "type": "Identifier", + "start": 363, + "end": 367, + "loc": { + "start": { + "line": 11, + "column": 15 + }, + "end": { + "line": 11, + "column": 19 + }, + "identifierName": "base" + }, + "name": "base" + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 374, + "end": 415, + "loc": { + "start": { + "line": 14, + "column": 1 + }, + "end": { + "line": 16, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 374, + "end": 388, + "loc": { + "start": { + "line": 14, + "column": 1 + }, + "end": { + "line": 14, + "column": 15 + }, + "identifierName": "characteristic" + }, + "name": "characteristic" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 391, + "end": 415, + "loc": { + "start": { + "line": 14, + "column": 18 + }, + "end": { + "line": 16, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 395, + "end": 412, + "loc": { + "start": { + "line": 15, + "column": 2 + }, + "end": { + "line": 15, + "column": 19 + } + }, + "argument": { + "type": "CallExpression", + "start": 402, + "end": 411, + "loc": { + "start": { + "line": 15, + "column": 9 + }, + "end": { + "line": 15, + "column": 18 + } + }, + "callee": { + "type": "MemberExpression", + "start": 402, + "end": 409, + "loc": { + "start": { + "line": 15, + "column": 9 + }, + "end": { + "line": 15, + "column": 16 + } + }, + "object": { + "type": "ThisExpression", + "start": 402, + "end": 406, + "loc": { + "start": { + "line": 15, + "column": 9 + }, + "end": { + "line": 15, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 407, + "end": 409, + "loc": { + "start": { + "line": 15, + "column": 14 + }, + "end": { + "line": 15, + "column": 16 + }, + "identifierName": "$0" + }, + "name": "$0" + }, + "computed": false + }, + "arguments": [] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 418, + "end": 1744, + "loc": { + "start": { + "line": 18, + "column": 1 + }, + "end": { + "line": 60, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 418, + "end": 422, + "loc": { + "start": { + "line": 18, + "column": 1 + }, + "end": { + "line": 18, + "column": 5 + }, + "identifierName": "from" + }, + "name": "from" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 423, + "end": 429, + "loc": { + "start": { + "line": 18, + "column": 6 + }, + "end": { + "line": 18, + "column": 12 + }, + "identifierName": "object" + }, + "name": "object" + }, + { + "type": "AssignmentPattern", + "start": 431, + "end": 447, + "loc": { + "start": { + "line": 18, + "column": 14 + }, + "end": { + "line": 18, + "column": 30 + } + }, + "left": { + "type": "Identifier", + "start": 431, + "end": 435, + "loc": { + "start": { + "line": 18, + "column": 14 + }, + "end": { + "line": 18, + "column": 18 + }, + "identifierName": "base" + }, + "name": "base" + }, + "right": { + "type": "Identifier", + "start": 438, + "end": 447, + "loc": { + "start": { + "line": 18, + "column": 21 + }, + "end": { + "line": 18, + "column": 30 + }, + "identifierName": "undefined" + }, + "name": "undefined" + } + }, + { + "type": "AssignmentPattern", + "start": 449, + "end": 464, + "loc": { + "start": { + "line": 18, + "column": 32 + }, + "end": { + "line": 18, + "column": 47 + } + }, + "left": { + "type": "Identifier", + "start": 449, + "end": 460, + "loc": { + "start": { + "line": 18, + "column": 32 + }, + "end": { + "line": 18, + "column": 43 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + }, + "right": { + "type": "NumericLiteral", + "start": 463, + "end": 464, + "loc": { + "start": { + "line": 18, + "column": 46 + }, + "end": { + "line": 18, + "column": 47 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + ], + "body": { + "type": "BlockStatement", + "start": 466, + "end": 1744, + "loc": { + "start": { + "line": 18, + "column": 49 + }, + "end": { + "line": 60, + "column": 2 + } + }, + "body": [ + { + "type": "IfStatement", + "start": 470, + "end": 532, + "loc": { + "start": { + "line": 19, + "column": 2 + }, + "end": { + "line": 19, + "column": 64 + } + }, + "test": { + "type": "LogicalExpression", + "start": 474, + "end": 513, + "loc": { + "start": { + "line": 19, + "column": 6 + }, + "end": { + "line": 19, + "column": 45 + } + }, + "left": { + "type": "BinaryExpression", + "start": 474, + "end": 489, + "loc": { + "start": { + "line": 19, + "column": 6 + }, + "end": { + "line": 19, + "column": 21 + } + }, + "left": { + "type": "Identifier", + "start": 474, + "end": 480, + "loc": { + "start": { + "line": 19, + "column": 6 + }, + "end": { + "line": 19, + "column": 12 + }, + "identifierName": "object" + }, + "name": "object" + }, + "operator": "===", + "right": { + "type": "NullLiteral", + "start": 485, + "end": 489, + "loc": { + "start": { + "line": 19, + "column": 17 + }, + "end": { + "line": 19, + "column": 21 + } + } + } + }, + "operator": "||", + "right": { + "type": "BinaryExpression", + "start": 493, + "end": 513, + "loc": { + "start": { + "line": 19, + "column": 25 + }, + "end": { + "line": 19, + "column": 45 + } + }, + "left": { + "type": "Identifier", + "start": 493, + "end": 499, + "loc": { + "start": { + "line": 19, + "column": 25 + }, + "end": { + "line": 19, + "column": 31 + }, + "identifierName": "object" + }, + "name": "object" + }, + "operator": "===", + "right": { + "type": "Identifier", + "start": 504, + "end": 513, + "loc": { + "start": { + "line": 19, + "column": 36 + }, + "end": { + "line": 19, + "column": 45 + }, + "identifierName": "undefined" + }, + "name": "undefined" + } + } + }, + "consequent": { + "type": "ReturnStatement", + "start": 515, + "end": 532, + "loc": { + "start": { + "line": 19, + "column": 47 + }, + "end": { + "line": 19, + "column": 64 + } + }, + "argument": { + "type": "CallExpression", + "start": 522, + "end": 531, + "loc": { + "start": { + "line": 19, + "column": 54 + }, + "end": { + "line": 19, + "column": 63 + } + }, + "callee": { + "type": "MemberExpression", + "start": 522, + "end": 529, + "loc": { + "start": { + "line": 19, + "column": 54 + }, + "end": { + "line": 19, + "column": 61 + } + }, + "object": { + "type": "ThisExpression", + "start": 522, + "end": 526, + "loc": { + "start": { + "line": 19, + "column": 54 + }, + "end": { + "line": 19, + "column": 58 + } + } + }, + "property": { + "type": "Identifier", + "start": 527, + "end": 529, + "loc": { + "start": { + "line": 19, + "column": 59 + }, + "end": { + "line": 19, + "column": 61 + }, + "identifierName": "$0" + }, + "name": "$0" + }, + "computed": false + }, + "arguments": [] + } + }, + "alternate": null + }, + { + "type": "SwitchStatement", + "start": 536, + "end": 1741, + "loc": { + "start": { + "line": 21, + "column": 2 + }, + "end": { + "line": 59, + "column": 3 + } + }, + "discriminant": { + "type": "MemberExpression", + "start": 544, + "end": 572, + "loc": { + "start": { + "line": 21, + "column": 10 + }, + "end": { + "line": 21, + "column": 38 + } + }, + "object": { + "type": "MemberExpression", + "start": 544, + "end": 562, + "loc": { + "start": { + "line": 21, + "column": 10 + }, + "end": { + "line": 21, + "column": 28 + } + }, + "object": { + "type": "Identifier", + "start": 544, + "end": 550, + "loc": { + "start": { + "line": 21, + "column": 10 + }, + "end": { + "line": 21, + "column": 16 + }, + "identifierName": "object" + }, + "name": "object" + }, + "property": { + "type": "Identifier", + "start": 551, + "end": 562, + "loc": { + "start": { + "line": 21, + "column": 17 + }, + "end": { + "line": 21, + "column": 28 + }, + "identifierName": "constructor" + }, + "name": "constructor" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 563, + "end": 572, + "loc": { + "start": { + "line": 21, + "column": 29 + }, + "end": { + "line": 21, + "column": 38 + }, + "identifierName": "prototype" + }, + "name": "prototype" + }, + "computed": false + }, + "cases": [ + { + "type": "SwitchCase", + "start": 579, + "end": 809, + "loc": { + "start": { + "line": 22, + "column": 3 + }, + "end": { + "line": 27, + "column": 49 + } + }, + "consequent": [ + { + "type": "IfStatement", + "start": 606, + "end": 759, + "loc": { + "start": { + "line": 23, + "column": 4 + }, + "end": { + "line": 26, + "column": 7 + } + }, + "test": { + "type": "BinaryExpression", + "start": 610, + "end": 628, + "loc": { + "start": { + "line": 23, + "column": 8 + }, + "end": { + "line": 23, + "column": 26 + } + }, + "left": { + "type": "Identifier", + "start": 610, + "end": 614, + "loc": { + "start": { + "line": 23, + "column": 8 + }, + "end": { + "line": 23, + "column": 12 + }, + "identifierName": "base" + }, + "name": "base" + }, + "operator": "!==", + "right": { + "type": "Identifier", + "start": 619, + "end": 628, + "loc": { + "start": { + "line": 23, + "column": 17 + }, + "end": { + "line": 23, + "column": 26 + }, + "identifierName": "undefined" + }, + "name": "undefined" + } + }, + "consequent": { + "type": "ThrowStatement", + "start": 635, + "end": 759, + "loc": { + "start": { + "line": 24, + "column": 5 + }, + "end": { + "line": 26, + "column": 7 + } + }, + "argument": { + "type": "NewExpression", + "start": 641, + "end": 758, + "loc": { + "start": { + "line": 24, + "column": 11 + }, + "end": { + "line": 26, + "column": 6 + } + }, + "callee": { + "type": "Identifier", + "start": 645, + "end": 655, + "loc": { + "start": { + "line": 24, + "column": 15 + }, + "end": { + "line": 24, + "column": 25 + }, + "identifierName": "ValueError" + }, + "name": "ValueError" + }, + "arguments": [ + { + "type": "StringLiteral", + "start": 663, + "end": 750, + "loc": { + "start": { + "line": 25, + "column": 6 + }, + "end": { + "line": 25, + "column": 93 + } + }, + "extra": { + "rawValue": "IntegerRing#from: using the base parameter does not make sense when passing a Number.", + "raw": "'IntegerRing#from: using the base parameter does not make sense when passing a Number.'" + }, + "value": "IntegerRing#from: using the base parameter does not make sense when passing a Number." + } + ] + } + }, + "alternate": null + }, + { + "type": "ReturnStatement", + "start": 764, + "end": 809, + "loc": { + "start": { + "line": 27, + "column": 4 + }, + "end": { + "line": 27, + "column": 49 + } + }, + "argument": { + "type": "CallExpression", + "start": 771, + "end": 808, + "loc": { + "start": { + "line": 27, + "column": 11 + }, + "end": { + "line": 27, + "column": 48 + } + }, + "callee": { + "type": "MemberExpression", + "start": 771, + "end": 787, + "loc": { + "start": { + "line": 27, + "column": 11 + }, + "end": { + "line": 27, + "column": 27 + } + }, + "object": { + "type": "ThisExpression", + "start": 771, + "end": 775, + "loc": { + "start": { + "line": 27, + "column": 11 + }, + "end": { + "line": 27, + "column": 15 + } + } + }, + "property": { + "type": "Identifier", + "start": 776, + "end": 787, + "loc": { + "start": { + "line": 27, + "column": 16 + }, + "end": { + "line": 27, + "column": 27 + }, + "identifierName": "from_number" + }, + "name": "from_number" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 788, + "end": 794, + "loc": { + "start": { + "line": 27, + "column": 28 + }, + "end": { + "line": 27, + "column": 34 + }, + "identifierName": "object" + }, + "name": "object" + }, + { + "type": "Identifier", + "start": 796, + "end": 807, + "loc": { + "start": { + "line": 27, + "column": 36 + }, + "end": { + "line": 27, + "column": 47 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + } + ] + } + } + ], + "test": { + "type": "MemberExpression", + "start": 584, + "end": 600, + "loc": { + "start": { + "line": 22, + "column": 8 + }, + "end": { + "line": 22, + "column": 24 + } + }, + "object": { + "type": "Identifier", + "start": 584, + "end": 590, + "loc": { + "start": { + "line": 22, + "column": 8 + }, + "end": { + "line": 22, + "column": 14 + }, + "identifierName": "Number" + }, + "name": "Number" + }, + "property": { + "type": "Identifier", + "start": 591, + "end": 600, + "loc": { + "start": { + "line": 22, + "column": 15 + }, + "end": { + "line": 22, + "column": 24 + }, + "identifierName": "prototype" + }, + "name": "prototype" + }, + "computed": false + } + }, + { + "type": "SwitchCase", + "start": 814, + "end": 949, + "loc": { + "start": { + "line": 29, + "column": 3 + }, + "end": { + "line": 31, + "column": 55 + } + }, + "consequent": [ + { + "type": "IfStatement", + "start": 841, + "end": 893, + "loc": { + "start": { + "line": 30, + "column": 4 + }, + "end": { + "line": 30, + "column": 56 + } + }, + "test": { + "type": "BinaryExpression", + "start": 845, + "end": 863, + "loc": { + "start": { + "line": 30, + "column": 8 + }, + "end": { + "line": 30, + "column": 26 + } + }, + "left": { + "type": "Identifier", + "start": 845, + "end": 849, + "loc": { + "start": { + "line": 30, + "column": 8 + }, + "end": { + "line": 30, + "column": 12 + }, + "identifierName": "base" + }, + "name": "base" + }, + "operator": "===", + "right": { + "type": "Identifier", + "start": 854, + "end": 863, + "loc": { + "start": { + "line": 30, + "column": 17 + }, + "end": { + "line": 30, + "column": 26 + }, + "identifierName": "undefined" + }, + "name": "undefined" + } + }, + "consequent": { + "type": "ExpressionStatement", + "start": 865, + "end": 893, + "loc": { + "start": { + "line": 30, + "column": 28 + }, + "end": { + "line": 30, + "column": 56 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 865, + "end": 892, + "loc": { + "start": { + "line": 30, + "column": 28 + }, + "end": { + "line": 30, + "column": 55 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 865, + "end": 869, + "loc": { + "start": { + "line": 30, + "column": 28 + }, + "end": { + "line": 30, + "column": 32 + }, + "identifierName": "base" + }, + "name": "base" + }, + "right": { + "type": "Identifier", + "start": 872, + "end": 892, + "loc": { + "start": { + "line": 30, + "column": 35 + }, + "end": { + "line": 30, + "column": 55 + }, + "identifierName": "DEFAULT_DISPLAY_BASE" + }, + "name": "DEFAULT_DISPLAY_BASE" + } + } + }, + "alternate": null + }, + { + "type": "ReturnStatement", + "start": 898, + "end": 949, + "loc": { + "start": { + "line": 31, + "column": 4 + }, + "end": { + "line": 31, + "column": 55 + } + }, + "argument": { + "type": "CallExpression", + "start": 905, + "end": 948, + "loc": { + "start": { + "line": 31, + "column": 11 + }, + "end": { + "line": 31, + "column": 54 + } + }, + "callee": { + "type": "MemberExpression", + "start": 905, + "end": 921, + "loc": { + "start": { + "line": 31, + "column": 11 + }, + "end": { + "line": 31, + "column": 27 + } + }, + "object": { + "type": "ThisExpression", + "start": 905, + "end": 909, + "loc": { + "start": { + "line": 31, + "column": 11 + }, + "end": { + "line": 31, + "column": 15 + } + } + }, + "property": { + "type": "Identifier", + "start": 910, + "end": 921, + "loc": { + "start": { + "line": 31, + "column": 16 + }, + "end": { + "line": 31, + "column": 27 + }, + "identifierName": "from_string" + }, + "name": "from_string" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 922, + "end": 928, + "loc": { + "start": { + "line": 31, + "column": 28 + }, + "end": { + "line": 31, + "column": 34 + }, + "identifierName": "object" + }, + "name": "object" + }, + { + "type": "Identifier", + "start": 930, + "end": 934, + "loc": { + "start": { + "line": 31, + "column": 36 + }, + "end": { + "line": 31, + "column": 40 + }, + "identifierName": "base" + }, + "name": "base" + }, + { + "type": "Identifier", + "start": 936, + "end": 947, + "loc": { + "start": { + "line": 31, + "column": 42 + }, + "end": { + "line": 31, + "column": 53 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + } + ] + } + } + ], + "test": { + "type": "MemberExpression", + "start": 819, + "end": 835, + "loc": { + "start": { + "line": 29, + "column": 8 + }, + "end": { + "line": 29, + "column": 24 + } + }, + "object": { + "type": "Identifier", + "start": 819, + "end": 825, + "loc": { + "start": { + "line": 29, + "column": 8 + }, + "end": { + "line": 29, + "column": 14 + }, + "identifierName": "String" + }, + "name": "String" + }, + "property": { + "type": "Identifier", + "start": 826, + "end": 835, + "loc": { + "start": { + "line": 29, + "column": 15 + }, + "end": { + "line": 29, + "column": 24 + }, + "identifierName": "prototype" + }, + "name": "prototype" + }, + "computed": false + } + }, + { + "type": "SwitchCase", + "start": 954, + "end": 1078, + "loc": { + "start": { + "line": 33, + "column": 3 + }, + "end": { + "line": 35, + "column": 55 + } + }, + "consequent": [ + { + "type": "IfStatement", + "start": 980, + "end": 1022, + "loc": { + "start": { + "line": 34, + "column": 4 + }, + "end": { + "line": 34, + "column": 46 + } + }, + "test": { + "type": "BinaryExpression", + "start": 984, + "end": 1002, + "loc": { + "start": { + "line": 34, + "column": 8 + }, + "end": { + "line": 34, + "column": 26 + } + }, + "left": { + "type": "Identifier", + "start": 984, + "end": 988, + "loc": { + "start": { + "line": 34, + "column": 8 + }, + "end": { + "line": 34, + "column": 12 + }, + "identifierName": "base" + }, + "name": "base" + }, + "operator": "===", + "right": { + "type": "Identifier", + "start": 993, + "end": 1002, + "loc": { + "start": { + "line": 34, + "column": 17 + }, + "end": { + "line": 34, + "column": 26 + }, + "identifierName": "undefined" + }, + "name": "undefined" + } + }, + "consequent": { + "type": "ExpressionStatement", + "start": 1004, + "end": 1022, + "loc": { + "start": { + "line": 34, + "column": 28 + }, + "end": { + "line": 34, + "column": 46 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 1004, + "end": 1021, + "loc": { + "start": { + "line": 34, + "column": 28 + }, + "end": { + "line": 34, + "column": 45 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 1004, + "end": 1008, + "loc": { + "start": { + "line": 34, + "column": 28 + }, + "end": { + "line": 34, + "column": 32 + }, + "identifierName": "base" + }, + "name": "base" + }, + "right": { + "type": "MemberExpression", + "start": 1011, + "end": 1021, + "loc": { + "start": { + "line": 34, + "column": 35 + }, + "end": { + "line": 34, + "column": 45 + } + }, + "object": { + "type": "ThisExpression", + "start": 1011, + "end": 1015, + "loc": { + "start": { + "line": 34, + "column": 35 + }, + "end": { + "line": 34, + "column": 39 + } + } + }, + "property": { + "type": "Identifier", + "start": 1016, + "end": 1021, + "loc": { + "start": { + "line": 34, + "column": 40 + }, + "end": { + "line": 34, + "column": 45 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + } + } + }, + "alternate": null + }, + { + "type": "ReturnStatement", + "start": 1027, + "end": 1078, + "loc": { + "start": { + "line": 35, + "column": 4 + }, + "end": { + "line": 35, + "column": 55 + } + }, + "argument": { + "type": "CallExpression", + "start": 1034, + "end": 1077, + "loc": { + "start": { + "line": 35, + "column": 11 + }, + "end": { + "line": 35, + "column": 54 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1034, + "end": 1050, + "loc": { + "start": { + "line": 35, + "column": 11 + }, + "end": { + "line": 35, + "column": 27 + } + }, + "object": { + "type": "ThisExpression", + "start": 1034, + "end": 1038, + "loc": { + "start": { + "line": 35, + "column": 11 + }, + "end": { + "line": 35, + "column": 15 + } + } + }, + "property": { + "type": "Identifier", + "start": 1039, + "end": 1050, + "loc": { + "start": { + "line": 35, + "column": 16 + }, + "end": { + "line": 35, + "column": 27 + }, + "identifierName": "from_digits" + }, + "name": "from_digits" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 1051, + "end": 1057, + "loc": { + "start": { + "line": 35, + "column": 28 + }, + "end": { + "line": 35, + "column": 34 + }, + "identifierName": "object" + }, + "name": "object" + }, + { + "type": "Identifier", + "start": 1059, + "end": 1063, + "loc": { + "start": { + "line": 35, + "column": 36 + }, + "end": { + "line": 35, + "column": 40 + }, + "identifierName": "base" + }, + "name": "base" + }, + { + "type": "Identifier", + "start": 1065, + "end": 1076, + "loc": { + "start": { + "line": 35, + "column": 42 + }, + "end": { + "line": 35, + "column": 53 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + } + ] + } + } + ], + "test": { + "type": "MemberExpression", + "start": 959, + "end": 974, + "loc": { + "start": { + "line": 33, + "column": 8 + }, + "end": { + "line": 33, + "column": 23 + } + }, + "object": { + "type": "Identifier", + "start": 959, + "end": 964, + "loc": { + "start": { + "line": 33, + "column": 8 + }, + "end": { + "line": 33, + "column": 13 + }, + "identifierName": "Array" + }, + "name": "Array" + }, + "property": { + "type": "Identifier", + "start": 965, + "end": 974, + "loc": { + "start": { + "line": 33, + "column": 14 + }, + "end": { + "line": 33, + "column": 23 + }, + "identifierName": "prototype" + }, + "name": "prototype" + }, + "computed": false + } + }, + { + "type": "SwitchCase", + "start": 1083, + "end": 1323, + "loc": { + "start": { + "line": 37, + "column": 3 + }, + "end": { + "line": 42, + "column": 57 + } + }, + "consequent": [ + { + "type": "IfStatement", + "start": 1111, + "end": 1265, + "loc": { + "start": { + "line": 38, + "column": 4 + }, + "end": { + "line": 41, + "column": 7 + } + }, + "test": { + "type": "BinaryExpression", + "start": 1115, + "end": 1133, + "loc": { + "start": { + "line": 38, + "column": 8 + }, + "end": { + "line": 38, + "column": 26 + } + }, + "left": { + "type": "Identifier", + "start": 1115, + "end": 1119, + "loc": { + "start": { + "line": 38, + "column": 8 + }, + "end": { + "line": 38, + "column": 12 + }, + "identifierName": "base" + }, + "name": "base" + }, + "operator": "!==", + "right": { + "type": "Identifier", + "start": 1124, + "end": 1133, + "loc": { + "start": { + "line": 38, + "column": 17 + }, + "end": { + "line": 38, + "column": 26 + }, + "identifierName": "undefined" + }, + "name": "undefined" + } + }, + "consequent": { + "type": "ThrowStatement", + "start": 1140, + "end": 1265, + "loc": { + "start": { + "line": 39, + "column": 5 + }, + "end": { + "line": 41, + "column": 7 + } + }, + "argument": { + "type": "NewExpression", + "start": 1146, + "end": 1264, + "loc": { + "start": { + "line": 39, + "column": 11 + }, + "end": { + "line": 41, + "column": 6 + } + }, + "callee": { + "type": "Identifier", + "start": 1150, + "end": 1160, + "loc": { + "start": { + "line": 39, + "column": 15 + }, + "end": { + "line": 39, + "column": 25 + }, + "identifierName": "ValueError" + }, + "name": "ValueError" + }, + "arguments": [ + { + "type": "StringLiteral", + "start": 1168, + "end": 1256, + "loc": { + "start": { + "line": 40, + "column": 6 + }, + "end": { + "line": 40, + "column": 94 + } + }, + "extra": { + "rawValue": "IntegerRing#from: using the base parameter does not make sense when passing a Boolean.", + "raw": "'IntegerRing#from: using the base parameter does not make sense when passing a Boolean.'" + }, + "value": "IntegerRing#from: using the base parameter does not make sense when passing a Boolean." + } + ] + } + }, + "alternate": null + }, + { + "type": "ReturnStatement", + "start": 1270, + "end": 1323, + "loc": { + "start": { + "line": 42, + "column": 4 + }, + "end": { + "line": 42, + "column": 57 + } + }, + "argument": { + "type": "CallExpression", + "start": 1277, + "end": 1322, + "loc": { + "start": { + "line": 42, + "column": 11 + }, + "end": { + "line": 42, + "column": 56 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1277, + "end": 1293, + "loc": { + "start": { + "line": 42, + "column": 11 + }, + "end": { + "line": 42, + "column": 27 + } + }, + "object": { + "type": "ThisExpression", + "start": 1277, + "end": 1281, + "loc": { + "start": { + "line": 42, + "column": 11 + }, + "end": { + "line": 42, + "column": 15 + } + } + }, + "property": { + "type": "Identifier", + "start": 1282, + "end": 1293, + "loc": { + "start": { + "line": 42, + "column": 16 + }, + "end": { + "line": 42, + "column": 27 + }, + "identifierName": "from_number" + }, + "name": "from_number" + }, + "computed": false + }, + "arguments": [ + { + "type": "CallExpression", + "start": 1294, + "end": 1308, + "loc": { + "start": { + "line": 42, + "column": 28 + }, + "end": { + "line": 42, + "column": 42 + } + }, + "callee": { + "type": "Identifier", + "start": 1294, + "end": 1300, + "loc": { + "start": { + "line": 42, + "column": 28 + }, + "end": { + "line": 42, + "column": 34 + }, + "identifierName": "Number" + }, + "name": "Number" + }, + "arguments": [ + { + "type": "Identifier", + "start": 1301, + "end": 1307, + "loc": { + "start": { + "line": 42, + "column": 35 + }, + "end": { + "line": 42, + "column": 41 + }, + "identifierName": "object" + }, + "name": "object" + } + ] + }, + { + "type": "Identifier", + "start": 1310, + "end": 1321, + "loc": { + "start": { + "line": 42, + "column": 44 + }, + "end": { + "line": 42, + "column": 55 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + } + ] + } + } + ], + "test": { + "type": "MemberExpression", + "start": 1088, + "end": 1105, + "loc": { + "start": { + "line": 37, + "column": 8 + }, + "end": { + "line": 37, + "column": 25 + } + }, + "object": { + "type": "Identifier", + "start": 1088, + "end": 1095, + "loc": { + "start": { + "line": 37, + "column": 8 + }, + "end": { + "line": 37, + "column": 15 + }, + "identifierName": "Boolean" + }, + "name": "Boolean" + }, + "property": { + "type": "Identifier", + "start": 1096, + "end": 1105, + "loc": { + "start": { + "line": 37, + "column": 16 + }, + "end": { + "line": 37, + "column": 25 + }, + "identifierName": "prototype" + }, + "name": "prototype" + }, + "computed": false + } + }, + { + "type": "SwitchCase", + "start": 1328, + "end": 1621, + "loc": { + "start": { + "line": 44, + "column": 3 + }, + "end": { + "line": 53, + "column": 6 + } + }, + "consequent": [ + { + "type": "IfStatement", + "start": 1356, + "end": 1511, + "loc": { + "start": { + "line": 45, + "column": 4 + }, + "end": { + "line": 48, + "column": 7 + } + }, + "test": { + "type": "BinaryExpression", + "start": 1360, + "end": 1378, + "loc": { + "start": { + "line": 45, + "column": 8 + }, + "end": { + "line": 45, + "column": 26 + } + }, + "left": { + "type": "Identifier", + "start": 1360, + "end": 1364, + "loc": { + "start": { + "line": 45, + "column": 8 + }, + "end": { + "line": 45, + "column": 12 + }, + "identifierName": "base" + }, + "name": "base" + }, + "operator": "!==", + "right": { + "type": "Identifier", + "start": 1369, + "end": 1378, + "loc": { + "start": { + "line": 45, + "column": 17 + }, + "end": { + "line": 45, + "column": 26 + }, + "identifierName": "undefined" + }, + "name": "undefined" + } + }, + "consequent": { + "type": "ThrowStatement", + "start": 1385, + "end": 1511, + "loc": { + "start": { + "line": 46, + "column": 5 + }, + "end": { + "line": 48, + "column": 7 + } + }, + "argument": { + "type": "NewExpression", + "start": 1391, + "end": 1510, + "loc": { + "start": { + "line": 46, + "column": 11 + }, + "end": { + "line": 48, + "column": 6 + } + }, + "callee": { + "type": "Identifier", + "start": 1395, + "end": 1405, + "loc": { + "start": { + "line": 46, + "column": 15 + }, + "end": { + "line": 46, + "column": 25 + }, + "identifierName": "ValueError" + }, + "name": "ValueError" + }, + "arguments": [ + { + "type": "StringLiteral", + "start": 1413, + "end": 1502, + "loc": { + "start": { + "line": 47, + "column": 6 + }, + "end": { + "line": 47, + "column": 95 + } + }, + "extra": { + "rawValue": "IntegerRing#from: using the base parameter does not make sense when passing an Integer.", + "raw": "'IntegerRing#from: using the base parameter does not make sense when passing an Integer.'" + }, + "value": "IntegerRing#from: using the base parameter does not make sense when passing an Integer." + } + ] + } + }, + "alternate": null + }, + { + "type": "ReturnStatement", + "start": 1516, + "end": 1621, + "loc": { + "start": { + "line": 49, + "column": 4 + }, + "end": { + "line": 53, + "column": 6 + } + }, + "argument": { + "type": "NewExpression", + "start": 1523, + "end": 1620, + "loc": { + "start": { + "line": 49, + "column": 11 + }, + "end": { + "line": 53, + "column": 5 + } + }, + "callee": { + "type": "Identifier", + "start": 1527, + "end": 1534, + "loc": { + "start": { + "line": 49, + "column": 15 + }, + "end": { + "line": 49, + "column": 22 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 1541, + "end": 1553, + "loc": { + "start": { + "line": 50, + "column": 5 + }, + "end": { + "line": 50, + "column": 17 + } + }, + "object": { + "type": "Identifier", + "start": 1541, + "end": 1547, + "loc": { + "start": { + "line": 50, + "column": 5 + }, + "end": { + "line": 50, + "column": 11 + }, + "identifierName": "object" + }, + "name": "object" + }, + "property": { + "type": "Identifier", + "start": 1548, + "end": 1553, + "loc": { + "start": { + "line": 50, + "column": 12 + }, + "end": { + "line": 50, + "column": 17 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + { + "type": "BinaryExpression", + "start": 1560, + "end": 1593, + "loc": { + "start": { + "line": 51, + "column": 5 + }, + "end": { + "line": 51, + "column": 38 + } + }, + "left": { + "type": "MemberExpression", + "start": 1560, + "end": 1579, + "loc": { + "start": { + "line": 51, + "column": 5 + }, + "end": { + "line": 51, + "column": 24 + } + }, + "object": { + "type": "Identifier", + "start": 1560, + "end": 1566, + "loc": { + "start": { + "line": 51, + "column": 5 + }, + "end": { + "line": 51, + "column": 11 + }, + "identifierName": "object" + }, + "name": "object" + }, + "property": { + "type": "Identifier", + "start": 1567, + "end": 1579, + "loc": { + "start": { + "line": 51, + "column": 12 + }, + "end": { + "line": 51, + "column": 24 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + }, + "operator": "^", + "right": { + "type": "Identifier", + "start": 1582, + "end": 1593, + "loc": { + "start": { + "line": 51, + "column": 27 + }, + "end": { + "line": 51, + "column": 38 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + } + }, + { + "type": "MemberExpression", + "start": 1600, + "end": 1613, + "loc": { + "start": { + "line": 52, + "column": 5 + }, + "end": { + "line": 52, + "column": 18 + } + }, + "object": { + "type": "Identifier", + "start": 1600, + "end": 1606, + "loc": { + "start": { + "line": 52, + "column": 5 + }, + "end": { + "line": 52, + "column": 11 + }, + "identifierName": "object" + }, + "name": "object" + }, + "property": { + "type": "Identifier", + "start": 1607, + "end": 1613, + "loc": { + "start": { + "line": 52, + "column": 12 + }, + "end": { + "line": 52, + "column": 18 + }, + "identifierName": "_limbs" + }, + "name": "_limbs" + }, + "computed": false + } + ] + } + } + ], + "test": { + "type": "MemberExpression", + "start": 1333, + "end": 1350, + "loc": { + "start": { + "line": 44, + "column": 8 + }, + "end": { + "line": 44, + "column": 25 + } + }, + "object": { + "type": "Identifier", + "start": 1333, + "end": 1340, + "loc": { + "start": { + "line": 44, + "column": 8 + }, + "end": { + "line": 44, + "column": 15 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "property": { + "type": "Identifier", + "start": 1341, + "end": 1350, + "loc": { + "start": { + "line": 44, + "column": 16 + }, + "end": { + "line": 44, + "column": 25 + }, + "identifierName": "prototype" + }, + "name": "prototype" + }, + "computed": false + } + }, + { + "type": "SwitchCase", + "start": 1626, + "end": 1737, + "loc": { + "start": { + "line": 55, + "column": 3 + }, + "end": { + "line": 58, + "column": 6 + } + }, + "consequent": [ + { + "type": "ThrowStatement", + "start": 1639, + "end": 1737, + "loc": { + "start": { + "line": 56, + "column": 4 + }, + "end": { + "line": 58, + "column": 6 + } + }, + "argument": { + "type": "NewExpression", + "start": 1645, + "end": 1736, + "loc": { + "start": { + "line": 56, + "column": 10 + }, + "end": { + "line": 58, + "column": 5 + } + }, + "callee": { + "type": "Identifier", + "start": 1649, + "end": 1658, + "loc": { + "start": { + "line": 56, + "column": 14 + }, + "end": { + "line": 56, + "column": 23 + }, + "identifierName": "TypeError" + }, + "name": "TypeError" + }, + "arguments": [ + { + "type": "TemplateLiteral", + "start": 1665, + "end": 1729, + "loc": { + "start": { + "line": 57, + "column": 5 + }, + "end": { + "line": 57, + "column": 69 + } + }, + "expressions": [ + { + "type": "MemberExpression", + "start": 1699, + "end": 1727, + "loc": { + "start": { + "line": 57, + "column": 39 + }, + "end": { + "line": 57, + "column": 67 + } + }, + "object": { + "type": "MemberExpression", + "start": 1699, + "end": 1717, + "loc": { + "start": { + "line": 57, + "column": 39 + }, + "end": { + "line": 57, + "column": 57 + } + }, + "object": { + "type": "Identifier", + "start": 1699, + "end": 1705, + "loc": { + "start": { + "line": 57, + "column": 39 + }, + "end": { + "line": 57, + "column": 45 + }, + "identifierName": "object" + }, + "name": "object" + }, + "property": { + "type": "Identifier", + "start": 1706, + "end": 1717, + "loc": { + "start": { + "line": 57, + "column": 46 + }, + "end": { + "line": 57, + "column": 57 + }, + "identifierName": "constructor" + }, + "name": "constructor" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 1718, + "end": 1727, + "loc": { + "start": { + "line": 57, + "column": 58 + }, + "end": { + "line": 57, + "column": 67 + }, + "identifierName": "prototype" + }, + "name": "prototype" + }, + "computed": false + } + ], + "quasis": [ + { + "type": "TemplateElement", + "start": 1666, + "end": 1697, + "loc": { + "start": { + "line": 57, + "column": 6 + }, + "end": { + "line": 57, + "column": 37 + } + }, + "value": { + "raw": "IntegerRing#from cannot handle ", + "cooked": "IntegerRing#from cannot handle " + }, + "tail": false + }, + { + "type": "TemplateElement", + "start": 1728, + "end": 1728, + "loc": { + "start": { + "line": 57, + "column": 68 + }, + "end": { + "line": 57, + "column": 68 + } + }, + "value": { + "raw": "", + "cooked": "" + }, + "tail": true + } + ] + } + ] + } + } + ], + "test": null + } + ] + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 1747, + "end": 1953, + "loc": { + "start": { + "line": 62, + "column": 1 + }, + "end": { + "line": 68, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 1747, + "end": 1758, + "loc": { + "start": { + "line": 62, + "column": 1 + }, + "end": { + "line": 62, + "column": 12 + }, + "identifierName": "from_number" + }, + "name": "from_number" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 1759, + "end": 1765, + "loc": { + "start": { + "line": 62, + "column": 13 + }, + "end": { + "line": 62, + "column": 19 + }, + "identifierName": "number" + }, + "name": "number" + }, + { + "type": "AssignmentPattern", + "start": 1767, + "end": 1782, + "loc": { + "start": { + "line": 62, + "column": 21 + }, + "end": { + "line": 62, + "column": 36 + } + }, + "left": { + "type": "Identifier", + "start": 1767, + "end": 1778, + "loc": { + "start": { + "line": 62, + "column": 21 + }, + "end": { + "line": 62, + "column": 32 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + }, + "right": { + "type": "NumericLiteral", + "start": 1781, + "end": 1782, + "loc": { + "start": { + "line": 62, + "column": 35 + }, + "end": { + "line": 62, + "column": 36 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + ], + "body": { + "type": "BlockStatement", + "start": 1784, + "end": 1953, + "loc": { + "start": { + "line": 62, + "column": 38 + }, + "end": { + "line": 68, + "column": 2 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 1788, + "end": 1823, + "loc": { + "start": { + "line": 63, + "column": 2 + }, + "end": { + "line": 63, + "column": 37 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 1794, + "end": 1822, + "loc": { + "start": { + "line": 63, + "column": 8 + }, + "end": { + "line": 63, + "column": 36 + } + }, + "id": { + "type": "Identifier", + "start": 1794, + "end": 1799, + "loc": { + "start": { + "line": 63, + "column": 8 + }, + "end": { + "line": 63, + "column": 13 + }, + "identifierName": "dirty" + }, + "name": "dirty" + }, + "init": { + "type": "CallExpression", + "start": 1802, + "end": 1822, + "loc": { + "start": { + "line": 63, + "column": 16 + }, + "end": { + "line": 63, + "column": 36 + } + }, + "callee": { + "type": "Identifier", + "start": 1802, + "end": 1814, + "loc": { + "start": { + "line": 63, + "column": 16 + }, + "end": { + "line": 63, + "column": 28 + }, + "identifierName": "_from_number" + }, + "name": "_from_number" + }, + "arguments": [ + { + "type": "Identifier", + "start": 1815, + "end": 1821, + "loc": { + "start": { + "line": 63, + "column": 29 + }, + "end": { + "line": 63, + "column": 35 + }, + "identifierName": "number" + }, + "name": "number" + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 1827, + "end": 1874, + "loc": { + "start": { + "line": 65, + "column": 2 + }, + "end": { + "line": 65, + "column": 49 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 1833, + "end": 1873, + "loc": { + "start": { + "line": 65, + "column": 8 + }, + "end": { + "line": 65, + "column": 48 + } + }, + "id": { + "type": "Identifier", + "start": 1833, + "end": 1838, + "loc": { + "start": { + "line": 65, + "column": 8 + }, + "end": { + "line": 65, + "column": 13 + }, + "identifierName": "limbs" + }, + "name": "limbs" + }, + "init": { + "type": "CallExpression", + "start": 1841, + "end": 1873, + "loc": { + "start": { + "line": 65, + "column": 16 + }, + "end": { + "line": 65, + "column": 48 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1841, + "end": 1861, + "loc": { + "start": { + "line": 65, + "column": 16 + }, + "end": { + "line": 65, + "column": 36 + } + }, + "object": { + "type": "Identifier", + "start": 1841, + "end": 1846, + "loc": { + "start": { + "line": 65, + "column": 16 + }, + "end": { + "line": 65, + "column": 21 + }, + "identifierName": "dirty" + }, + "name": "dirty" + }, + "property": { + "type": "Identifier", + "start": 1847, + "end": 1861, + "loc": { + "start": { + "line": 65, + "column": 22 + }, + "end": { + "line": 65, + "column": 36 + }, + "identifierName": "_limbs_in_base" + }, + "name": "_limbs_in_base" + }, + "computed": false + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 1862, + "end": 1872, + "loc": { + "start": { + "line": 65, + "column": 37 + }, + "end": { + "line": 65, + "column": 47 + } + }, + "object": { + "type": "ThisExpression", + "start": 1862, + "end": 1866, + "loc": { + "start": { + "line": 65, + "column": 37 + }, + "end": { + "line": 65, + "column": 41 + } + } + }, + "property": { + "type": "Identifier", + "start": 1867, + "end": 1872, + "loc": { + "start": { + "line": 65, + "column": 42 + }, + "end": { + "line": 65, + "column": 47 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "ReturnStatement", + "start": 1878, + "end": 1950, + "loc": { + "start": { + "line": 67, + "column": 2 + }, + "end": { + "line": 67, + "column": 74 + } + }, + "argument": { + "type": "NewExpression", + "start": 1885, + "end": 1949, + "loc": { + "start": { + "line": 67, + "column": 9 + }, + "end": { + "line": 67, + "column": 73 + } + }, + "callee": { + "type": "Identifier", + "start": 1889, + "end": 1896, + "loc": { + "start": { + "line": 67, + "column": 13 + }, + "end": { + "line": 67, + "column": 20 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 1897, + "end": 1907, + "loc": { + "start": { + "line": 67, + "column": 21 + }, + "end": { + "line": 67, + "column": 31 + } + }, + "object": { + "type": "ThisExpression", + "start": 1897, + "end": 1901, + "loc": { + "start": { + "line": 67, + "column": 21 + }, + "end": { + "line": 67, + "column": 25 + } + } + }, + "property": { + "type": "Identifier", + "start": 1902, + "end": 1907, + "loc": { + "start": { + "line": 67, + "column": 26 + }, + "end": { + "line": 67, + "column": 31 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + { + "type": "BinaryExpression", + "start": 1909, + "end": 1941, + "loc": { + "start": { + "line": 67, + "column": 33 + }, + "end": { + "line": 67, + "column": 65 + } + }, + "left": { + "type": "Identifier", + "start": 1909, + "end": 1920, + "loc": { + "start": { + "line": 67, + "column": 33 + }, + "end": { + "line": 67, + "column": 44 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + }, + "operator": "^", + "right": { + "type": "MemberExpression", + "start": 1923, + "end": 1941, + "loc": { + "start": { + "line": 67, + "column": 47 + }, + "end": { + "line": 67, + "column": 65 + } + }, + "object": { + "type": "Identifier", + "start": 1923, + "end": 1928, + "loc": { + "start": { + "line": 67, + "column": 47 + }, + "end": { + "line": 67, + "column": 52 + }, + "identifierName": "dirty" + }, + "name": "dirty" + }, + "property": { + "type": "Identifier", + "start": 1929, + "end": 1941, + "loc": { + "start": { + "line": 67, + "column": 53 + }, + "end": { + "line": 67, + "column": 65 + }, + "identifierName": "_is_negative" + }, + "name": "_is_negative" + }, + "computed": false + } + }, + { + "type": "Identifier", + "start": 1943, + "end": 1948, + "loc": { + "start": { + "line": 67, + "column": 67 + }, + "end": { + "line": 67, + "column": 72 + }, + "identifierName": "limbs" + }, + "name": "limbs" + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 1956, + "end": 2472, + "loc": { + "start": { + "line": 70, + "column": 1 + }, + "end": { + "line": 87, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 1956, + "end": 1967, + "loc": { + "start": { + "line": 70, + "column": 1 + }, + "end": { + "line": 70, + "column": 12 + }, + "identifierName": "from_string" + }, + "name": "from_string" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 1968, + "end": 1974, + "loc": { + "start": { + "line": 70, + "column": 13 + }, + "end": { + "line": 70, + "column": 19 + }, + "identifierName": "string" + }, + "name": "string" + }, + { + "type": "AssignmentPattern", + "start": 1976, + "end": 1985, + "loc": { + "start": { + "line": 70, + "column": 21 + }, + "end": { + "line": 70, + "column": 30 + } + }, + "left": { + "type": "Identifier", + "start": 1976, + "end": 1980, + "loc": { + "start": { + "line": 70, + "column": 21 + }, + "end": { + "line": 70, + "column": 25 + }, + "identifierName": "base" + }, + "name": "base" + }, + "right": { + "type": "NumericLiteral", + "start": 1983, + "end": 1985, + "loc": { + "start": { + "line": 70, + "column": 28 + }, + "end": { + "line": 70, + "column": 30 + } + }, + "extra": { + "rawValue": 10, + "raw": "10" + }, + "value": 10 + } + }, + { + "type": "AssignmentPattern", + "start": 1987, + "end": 2002, + "loc": { + "start": { + "line": 70, + "column": 32 + }, + "end": { + "line": 70, + "column": 47 + } + }, + "left": { + "type": "Identifier", + "start": 1987, + "end": 1998, + "loc": { + "start": { + "line": 70, + "column": 32 + }, + "end": { + "line": 70, + "column": 43 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + }, + "right": { + "type": "NumericLiteral", + "start": 2001, + "end": 2002, + "loc": { + "start": { + "line": 70, + "column": 46 + }, + "end": { + "line": 70, + "column": 47 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + ], + "body": { + "type": "BlockStatement", + "start": 2004, + "end": 2472, + "loc": { + "start": { + "line": 70, + "column": 49 + }, + "end": { + "line": 87, + "column": 2 + } + }, + "body": [ + { + "type": "IfStatement", + "start": 2008, + "end": 2121, + "loc": { + "start": { + "line": 71, + "column": 2 + }, + "end": { + "line": 74, + "column": 5 + } + }, + "test": { + "type": "BinaryExpression", + "start": 2012, + "end": 2031, + "loc": { + "start": { + "line": 71, + "column": 6 + }, + "end": { + "line": 71, + "column": 25 + } + }, + "left": { + "type": "MemberExpression", + "start": 2012, + "end": 2025, + "loc": { + "start": { + "line": 71, + "column": 6 + }, + "end": { + "line": 71, + "column": 19 + } + }, + "object": { + "type": "Identifier", + "start": 2012, + "end": 2018, + "loc": { + "start": { + "line": 71, + "column": 6 + }, + "end": { + "line": 71, + "column": 12 + }, + "identifierName": "string" + }, + "name": "string" + }, + "property": { + "type": "Identifier", + "start": 2019, + "end": 2025, + "loc": { + "start": { + "line": 71, + "column": 13 + }, + "end": { + "line": 71, + "column": 19 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + "operator": "===", + "right": { + "type": "NumericLiteral", + "start": 2030, + "end": 2031, + "loc": { + "start": { + "line": 71, + "column": 24 + }, + "end": { + "line": 71, + "column": 25 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + }, + "consequent": { + "type": "ThrowStatement", + "start": 2036, + "end": 2121, + "loc": { + "start": { + "line": 72, + "column": 3 + }, + "end": { + "line": 74, + "column": 5 + } + }, + "argument": { + "type": "NewExpression", + "start": 2042, + "end": 2120, + "loc": { + "start": { + "line": 72, + "column": 9 + }, + "end": { + "line": 74, + "column": 4 + } + }, + "callee": { + "type": "Identifier", + "start": 2046, + "end": 2056, + "loc": { + "start": { + "line": 72, + "column": 13 + }, + "end": { + "line": 72, + "column": 23 + }, + "identifierName": "ValueError" + }, + "name": "ValueError" + }, + "arguments": [ + { + "type": "StringLiteral", + "start": 2062, + "end": 2114, + "loc": { + "start": { + "line": 73, + "column": 4 + }, + "end": { + "line": 73, + "column": 56 + } + }, + "extra": { + "rawValue": "IntegerRing#from_string cannot parse empty string.", + "raw": "'IntegerRing#from_string cannot parse empty string.'" + }, + "value": "IntegerRing#from_string cannot parse empty string." + } + ] + } + }, + "alternate": null + }, + { + "type": "IfStatement", + "start": 2125, + "end": 2212, + "loc": { + "start": { + "line": 76, + "column": 2 + }, + "end": { + "line": 77, + "column": 64 + } + }, + "test": { + "type": "BinaryExpression", + "start": 2129, + "end": 2146, + "loc": { + "start": { + "line": 76, + "column": 6 + }, + "end": { + "line": 76, + "column": 23 + } + }, + "left": { + "type": "MemberExpression", + "start": 2129, + "end": 2138, + "loc": { + "start": { + "line": 76, + "column": 6 + }, + "end": { + "line": 76, + "column": 15 + } + }, + "object": { + "type": "Identifier", + "start": 2129, + "end": 2135, + "loc": { + "start": { + "line": 76, + "column": 6 + }, + "end": { + "line": 76, + "column": 12 + }, + "identifierName": "string" + }, + "name": "string" + }, + "property": { + "type": "NumericLiteral", + "start": 2136, + "end": 2137, + "loc": { + "start": { + "line": 76, + "column": 13 + }, + "end": { + "line": 76, + "column": 14 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + "computed": true + }, + "operator": "===", + "right": { + "type": "StringLiteral", + "start": 2143, + "end": 2146, + "loc": { + "start": { + "line": 76, + "column": 20 + }, + "end": { + "line": 76, + "column": 23 + } + }, + "extra": { + "rawValue": "-", + "raw": "'-'" + }, + "value": "-" + } + }, + "consequent": { + "type": "ReturnStatement", + "start": 2151, + "end": 2212, + "loc": { + "start": { + "line": 77, + "column": 3 + }, + "end": { + "line": 77, + "column": 64 + } + }, + "argument": { + "type": "CallExpression", + "start": 2158, + "end": 2211, + "loc": { + "start": { + "line": 77, + "column": 10 + }, + "end": { + "line": 77, + "column": 63 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2158, + "end": 2174, + "loc": { + "start": { + "line": 77, + "column": 10 + }, + "end": { + "line": 77, + "column": 26 + } + }, + "object": { + "type": "ThisExpression", + "start": 2158, + "end": 2162, + "loc": { + "start": { + "line": 77, + "column": 10 + }, + "end": { + "line": 77, + "column": 14 + } + } + }, + "property": { + "type": "Identifier", + "start": 2163, + "end": 2174, + "loc": { + "start": { + "line": 77, + "column": 15 + }, + "end": { + "line": 77, + "column": 26 + }, + "identifierName": "from_string" + }, + "name": "from_string" + }, + "computed": false + }, + "arguments": [ + { + "type": "CallExpression", + "start": 2175, + "end": 2190, + "loc": { + "start": { + "line": 77, + "column": 27 + }, + "end": { + "line": 77, + "column": 42 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2175, + "end": 2187, + "loc": { + "start": { + "line": 77, + "column": 27 + }, + "end": { + "line": 77, + "column": 39 + } + }, + "object": { + "type": "Identifier", + "start": 2175, + "end": 2181, + "loc": { + "start": { + "line": 77, + "column": 27 + }, + "end": { + "line": 77, + "column": 33 + }, + "identifierName": "string" + }, + "name": "string" + }, + "property": { + "type": "Identifier", + "start": 2182, + "end": 2187, + "loc": { + "start": { + "line": 77, + "column": 34 + }, + "end": { + "line": 77, + "column": 39 + }, + "identifierName": "slice" + }, + "name": "slice" + }, + "computed": false + }, + "arguments": [ + { + "type": "NumericLiteral", + "start": 2188, + "end": 2189, + "loc": { + "start": { + "line": 77, + "column": 40 + }, + "end": { + "line": 77, + "column": 41 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + } + ] + }, + { + "type": "Identifier", + "start": 2192, + "end": 2196, + "loc": { + "start": { + "line": 77, + "column": 44 + }, + "end": { + "line": 77, + "column": 48 + }, + "identifierName": "base" + }, + "name": "base" + }, + { + "type": "UnaryExpression", + "start": 2198, + "end": 2210, + "loc": { + "start": { + "line": 77, + "column": 50 + }, + "end": { + "line": 77, + "column": 62 + } + }, + "operator": "~", + "prefix": true, + "argument": { + "type": "Identifier", + "start": 2199, + "end": 2210, + "loc": { + "start": { + "line": 77, + "column": 51 + }, + "end": { + "line": 77, + "column": 62 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + }, + "extra": { + "parenthesizedArgument": false + } + } + ] + } + }, + "alternate": null + }, + { + "type": "IfStatement", + "start": 2216, + "end": 2302, + "loc": { + "start": { + "line": 79, + "column": 2 + }, + "end": { + "line": 80, + "column": 63 + } + }, + "test": { + "type": "BinaryExpression", + "start": 2220, + "end": 2237, + "loc": { + "start": { + "line": 79, + "column": 6 + }, + "end": { + "line": 79, + "column": 23 + } + }, + "left": { + "type": "MemberExpression", + "start": 2220, + "end": 2229, + "loc": { + "start": { + "line": 79, + "column": 6 + }, + "end": { + "line": 79, + "column": 15 + } + }, + "object": { + "type": "Identifier", + "start": 2220, + "end": 2226, + "loc": { + "start": { + "line": 79, + "column": 6 + }, + "end": { + "line": 79, + "column": 12 + }, + "identifierName": "string" + }, + "name": "string" + }, + "property": { + "type": "NumericLiteral", + "start": 2227, + "end": 2228, + "loc": { + "start": { + "line": 79, + "column": 13 + }, + "end": { + "line": 79, + "column": 14 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + "computed": true + }, + "operator": "===", + "right": { + "type": "StringLiteral", + "start": 2234, + "end": 2237, + "loc": { + "start": { + "line": 79, + "column": 20 + }, + "end": { + "line": 79, + "column": 23 + } + }, + "extra": { + "rawValue": "+", + "raw": "'+'" + }, + "value": "+" + } + }, + "consequent": { + "type": "ReturnStatement", + "start": 2242, + "end": 2302, + "loc": { + "start": { + "line": 80, + "column": 3 + }, + "end": { + "line": 80, + "column": 63 + } + }, + "argument": { + "type": "CallExpression", + "start": 2249, + "end": 2301, + "loc": { + "start": { + "line": 80, + "column": 10 + }, + "end": { + "line": 80, + "column": 62 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2249, + "end": 2265, + "loc": { + "start": { + "line": 80, + "column": 10 + }, + "end": { + "line": 80, + "column": 26 + } + }, + "object": { + "type": "ThisExpression", + "start": 2249, + "end": 2253, + "loc": { + "start": { + "line": 80, + "column": 10 + }, + "end": { + "line": 80, + "column": 14 + } + } + }, + "property": { + "type": "Identifier", + "start": 2254, + "end": 2265, + "loc": { + "start": { + "line": 80, + "column": 15 + }, + "end": { + "line": 80, + "column": 26 + }, + "identifierName": "from_string" + }, + "name": "from_string" + }, + "computed": false + }, + "arguments": [ + { + "type": "CallExpression", + "start": 2266, + "end": 2281, + "loc": { + "start": { + "line": 80, + "column": 27 + }, + "end": { + "line": 80, + "column": 42 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2266, + "end": 2278, + "loc": { + "start": { + "line": 80, + "column": 27 + }, + "end": { + "line": 80, + "column": 39 + } + }, + "object": { + "type": "Identifier", + "start": 2266, + "end": 2272, + "loc": { + "start": { + "line": 80, + "column": 27 + }, + "end": { + "line": 80, + "column": 33 + }, + "identifierName": "string" + }, + "name": "string" + }, + "property": { + "type": "Identifier", + "start": 2273, + "end": 2278, + "loc": { + "start": { + "line": 80, + "column": 34 + }, + "end": { + "line": 80, + "column": 39 + }, + "identifierName": "slice" + }, + "name": "slice" + }, + "computed": false + }, + "arguments": [ + { + "type": "NumericLiteral", + "start": 2279, + "end": 2280, + "loc": { + "start": { + "line": 80, + "column": 40 + }, + "end": { + "line": 80, + "column": 41 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + } + ] + }, + { + "type": "Identifier", + "start": 2283, + "end": 2287, + "loc": { + "start": { + "line": 80, + "column": 44 + }, + "end": { + "line": 80, + "column": 48 + }, + "identifierName": "base" + }, + "name": "base" + }, + { + "type": "Identifier", + "start": 2289, + "end": 2300, + "loc": { + "start": { + "line": 80, + "column": 50 + }, + "end": { + "line": 80, + "column": 61 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + } + ] + } + }, + "alternate": null + }, + { + "type": "VariableDeclaration", + "start": 2306, + "end": 2352, + "loc": { + "start": { + "line": 82, + "column": 2 + }, + "end": { + "line": 82, + "column": 48 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 2312, + "end": 2351, + "loc": { + "start": { + "line": 82, + "column": 8 + }, + "end": { + "line": 82, + "column": 47 + } + }, + "id": { + "type": "Identifier", + "start": 2312, + "end": 2317, + "loc": { + "start": { + "line": 82, + "column": 8 + }, + "end": { + "line": 82, + "column": 13 + }, + "identifierName": "limbs" + }, + "name": "limbs" + }, + "init": { + "type": "CallExpression", + "start": 2320, + "end": 2351, + "loc": { + "start": { + "line": 82, + "column": 16 + }, + "end": { + "line": 82, + "column": 47 + } + }, + "callee": { + "type": "Identifier", + "start": 2320, + "end": 2325, + "loc": { + "start": { + "line": 82, + "column": 16 + }, + "end": { + "line": 82, + "column": 21 + }, + "identifierName": "parse" + }, + "name": "parse" + }, + "arguments": [ + { + "type": "Identifier", + "start": 2326, + "end": 2330, + "loc": { + "start": { + "line": 82, + "column": 22 + }, + "end": { + "line": 82, + "column": 26 + }, + "identifierName": "base" + }, + "name": "base" + }, + { + "type": "MemberExpression", + "start": 2332, + "end": 2342, + "loc": { + "start": { + "line": 82, + "column": 28 + }, + "end": { + "line": 82, + "column": 38 + } + }, + "object": { + "type": "ThisExpression", + "start": 2332, + "end": 2336, + "loc": { + "start": { + "line": 82, + "column": 28 + }, + "end": { + "line": 82, + "column": 32 + } + } + }, + "property": { + "type": "Identifier", + "start": 2337, + "end": 2342, + "loc": { + "start": { + "line": 82, + "column": 33 + }, + "end": { + "line": 82, + "column": 38 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 2344, + "end": 2350, + "loc": { + "start": { + "line": 82, + "column": 40 + }, + "end": { + "line": 82, + "column": 46 + }, + "identifierName": "string" + }, + "name": "string" + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "IfStatement", + "start": 2356, + "end": 2414, + "loc": { + "start": { + "line": 84, + "column": 2 + }, + "end": { + "line": 84, + "column": 60 + } + }, + "test": { + "type": "LogicalExpression", + "start": 2360, + "end": 2396, + "loc": { + "start": { + "line": 84, + "column": 6 + }, + "end": { + "line": 84, + "column": 42 + } + }, + "left": { + "type": "BinaryExpression", + "start": 2360, + "end": 2378, + "loc": { + "start": { + "line": 84, + "column": 6 + }, + "end": { + "line": 84, + "column": 24 + } + }, + "left": { + "type": "MemberExpression", + "start": 2360, + "end": 2372, + "loc": { + "start": { + "line": 84, + "column": 6 + }, + "end": { + "line": 84, + "column": 18 + } + }, + "object": { + "type": "Identifier", + "start": 2360, + "end": 2365, + "loc": { + "start": { + "line": 84, + "column": 6 + }, + "end": { + "line": 84, + "column": 11 + }, + "identifierName": "limbs" + }, + "name": "limbs" + }, + "property": { + "type": "Identifier", + "start": 2366, + "end": 2372, + "loc": { + "start": { + "line": 84, + "column": 12 + }, + "end": { + "line": 84, + "column": 18 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + }, + "operator": "===", + "right": { + "type": "NumericLiteral", + "start": 2377, + "end": 2378, + "loc": { + "start": { + "line": 84, + "column": 23 + }, + "end": { + "line": 84, + "column": 24 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + } + }, + "operator": "&&", + "right": { + "type": "BinaryExpression", + "start": 2382, + "end": 2396, + "loc": { + "start": { + "line": 84, + "column": 28 + }, + "end": { + "line": 84, + "column": 42 + } + }, + "left": { + "type": "MemberExpression", + "start": 2382, + "end": 2390, + "loc": { + "start": { + "line": 84, + "column": 28 + }, + "end": { + "line": 84, + "column": 36 + } + }, + "object": { + "type": "Identifier", + "start": 2382, + "end": 2387, + "loc": { + "start": { + "line": 84, + "column": 28 + }, + "end": { + "line": 84, + "column": 33 + }, + "identifierName": "limbs" + }, + "name": "limbs" + }, + "property": { + "type": "NumericLiteral", + "start": 2388, + "end": 2389, + "loc": { + "start": { + "line": 84, + "column": 34 + }, + "end": { + "line": 84, + "column": 35 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + "computed": true + }, + "operator": "===", + "right": { + "type": "NumericLiteral", + "start": 2395, + "end": 2396, + "loc": { + "start": { + "line": 84, + "column": 41 + }, + "end": { + "line": 84, + "column": 42 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + }, + "consequent": { + "type": "ExpressionStatement", + "start": 2398, + "end": 2414, + "loc": { + "start": { + "line": 84, + "column": 44 + }, + "end": { + "line": 84, + "column": 60 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 2398, + "end": 2413, + "loc": { + "start": { + "line": 84, + "column": 44 + }, + "end": { + "line": 84, + "column": 59 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 2398, + "end": 2409, + "loc": { + "start": { + "line": 84, + "column": 44 + }, + "end": { + "line": 84, + "column": 55 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + }, + "right": { + "type": "NumericLiteral", + "start": 2412, + "end": 2413, + "loc": { + "start": { + "line": 84, + "column": 58 + }, + "end": { + "line": 84, + "column": 59 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + }, + "alternate": null + }, + { + "type": "ReturnStatement", + "start": 2418, + "end": 2469, + "loc": { + "start": { + "line": 86, + "column": 2 + }, + "end": { + "line": 86, + "column": 53 + } + }, + "argument": { + "type": "NewExpression", + "start": 2425, + "end": 2468, + "loc": { + "start": { + "line": 86, + "column": 9 + }, + "end": { + "line": 86, + "column": 52 + } + }, + "callee": { + "type": "Identifier", + "start": 2429, + "end": 2436, + "loc": { + "start": { + "line": 86, + "column": 13 + }, + "end": { + "line": 86, + "column": 20 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 2437, + "end": 2447, + "loc": { + "start": { + "line": 86, + "column": 21 + }, + "end": { + "line": 86, + "column": 31 + } + }, + "object": { + "type": "ThisExpression", + "start": 2437, + "end": 2441, + "loc": { + "start": { + "line": 86, + "column": 21 + }, + "end": { + "line": 86, + "column": 25 + } + } + }, + "property": { + "type": "Identifier", + "start": 2442, + "end": 2447, + "loc": { + "start": { + "line": 86, + "column": 26 + }, + "end": { + "line": 86, + "column": 31 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 2449, + "end": 2460, + "loc": { + "start": { + "line": 86, + "column": 33 + }, + "end": { + "line": 86, + "column": 44 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + }, + { + "type": "Identifier", + "start": 2462, + "end": 2467, + "loc": { + "start": { + "line": 86, + "column": 46 + }, + "end": { + "line": 86, + "column": 51 + }, + "identifierName": "limbs" + }, + "name": "limbs" + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 2475, + "end": 2680, + "loc": { + "start": { + "line": 89, + "column": 1 + }, + "end": { + "line": 99, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 2475, + "end": 2486, + "loc": { + "start": { + "line": 89, + "column": 1 + }, + "end": { + "line": 89, + "column": 12 + }, + "identifierName": "from_digits" + }, + "name": "from_digits" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 2487, + "end": 2493, + "loc": { + "start": { + "line": 89, + "column": 13 + }, + "end": { + "line": 89, + "column": 19 + }, + "identifierName": "digits" + }, + "name": "digits" + }, + { + "type": "Identifier", + "start": 2495, + "end": 2499, + "loc": { + "start": { + "line": 89, + "column": 21 + }, + "end": { + "line": 89, + "column": 25 + }, + "identifierName": "base" + }, + "name": "base" + }, + { + "type": "Identifier", + "start": 2501, + "end": 2512, + "loc": { + "start": { + "line": 89, + "column": 27 + }, + "end": { + "line": 89, + "column": 38 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + } + ], + "body": { + "type": "BlockStatement", + "start": 2514, + "end": 2680, + "loc": { + "start": { + "line": 89, + "column": 40 + }, + "end": { + "line": 99, + "column": 2 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 2518, + "end": 2622, + "loc": { + "start": { + "line": 90, + "column": 2 + }, + "end": { + "line": 96, + "column": 4 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 2524, + "end": 2621, + "loc": { + "start": { + "line": 90, + "column": 8 + }, + "end": { + "line": 96, + "column": 3 + } + }, + "id": { + "type": "Identifier", + "start": 2524, + "end": 2529, + "loc": { + "start": { + "line": 90, + "column": 8 + }, + "end": { + "line": 90, + "column": 13 + }, + "identifierName": "limbs" + }, + "name": "limbs" + }, + "init": { + "type": "CallExpression", + "start": 2532, + "end": 2621, + "loc": { + "start": { + "line": 90, + "column": 16 + }, + "end": { + "line": 96, + "column": 3 + } + }, + "callee": { + "type": "Identifier", + "start": 2532, + "end": 2539, + "loc": { + "start": { + "line": 90, + "column": 16 + }, + "end": { + "line": 90, + "column": 23 + }, + "identifierName": "convert" + }, + "name": "convert" + }, + "arguments": [ + { + "type": "Identifier", + "start": 2544, + "end": 2548, + "loc": { + "start": { + "line": 91, + "column": 3 + }, + "end": { + "line": 91, + "column": 7 + }, + "identifierName": "base" + }, + "name": "base" + }, + { + "type": "MemberExpression", + "start": 2553, + "end": 2563, + "loc": { + "start": { + "line": 92, + "column": 3 + }, + "end": { + "line": 92, + "column": 13 + } + }, + "object": { + "type": "ThisExpression", + "start": 2553, + "end": 2557, + "loc": { + "start": { + "line": 92, + "column": 3 + }, + "end": { + "line": 92, + "column": 7 + } + } + }, + "property": { + "type": "Identifier", + "start": 2558, + "end": 2563, + "loc": { + "start": { + "line": 92, + "column": 8 + }, + "end": { + "line": 92, + "column": 13 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + { + "type": "CallExpression", + "start": 2568, + "end": 2592, + "loc": { + "start": { + "line": 93, + "column": 3 + }, + "end": { + "line": 93, + "column": 27 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2568, + "end": 2590, + "loc": { + "start": { + "line": 93, + "column": 3 + }, + "end": { + "line": 93, + "column": 25 + } + }, + "object": { + "type": "CallExpression", + "start": 2568, + "end": 2582, + "loc": { + "start": { + "line": 93, + "column": 3 + }, + "end": { + "line": 93, + "column": 17 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2568, + "end": 2580, + "loc": { + "start": { + "line": 93, + "column": 3 + }, + "end": { + "line": 93, + "column": 15 + } + }, + "object": { + "type": "Identifier", + "start": 2568, + "end": 2574, + "loc": { + "start": { + "line": 93, + "column": 3 + }, + "end": { + "line": 93, + "column": 9 + }, + "identifierName": "digits" + }, + "name": "digits" + }, + "property": { + "type": "Identifier", + "start": 2575, + "end": 2580, + "loc": { + "start": { + "line": 93, + "column": 10 + }, + "end": { + "line": 93, + "column": 15 + }, + "identifierName": "slice" + }, + "name": "slice" + }, + "computed": false + }, + "arguments": [] + }, + "property": { + "type": "Identifier", + "start": 2583, + "end": 2590, + "loc": { + "start": { + "line": 93, + "column": 18 + }, + "end": { + "line": 93, + "column": 25 + }, + "identifierName": "reverse" + }, + "name": "reverse" + }, + "computed": false + }, + "arguments": [] + }, + { + "type": "NumericLiteral", + "start": 2597, + "end": 2598, + "loc": { + "start": { + "line": 94, + "column": 3 + }, + "end": { + "line": 94, + "column": 4 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "MemberExpression", + "start": 2603, + "end": 2616, + "loc": { + "start": { + "line": 95, + "column": 3 + }, + "end": { + "line": 95, + "column": 16 + } + }, + "object": { + "type": "Identifier", + "start": 2603, + "end": 2609, + "loc": { + "start": { + "line": 95, + "column": 3 + }, + "end": { + "line": 95, + "column": 9 + }, + "identifierName": "digits" + }, + "name": "digits" + }, + "property": { + "type": "Identifier", + "start": 2610, + "end": 2616, + "loc": { + "start": { + "line": 95, + "column": 10 + }, + "end": { + "line": 95, + "column": 16 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "ReturnStatement", + "start": 2626, + "end": 2677, + "loc": { + "start": { + "line": 98, + "column": 2 + }, + "end": { + "line": 98, + "column": 53 + } + }, + "argument": { + "type": "NewExpression", + "start": 2633, + "end": 2676, + "loc": { + "start": { + "line": 98, + "column": 9 + }, + "end": { + "line": 98, + "column": 52 + } + }, + "callee": { + "type": "Identifier", + "start": 2637, + "end": 2644, + "loc": { + "start": { + "line": 98, + "column": 13 + }, + "end": { + "line": 98, + "column": 20 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 2645, + "end": 2655, + "loc": { + "start": { + "line": 98, + "column": 21 + }, + "end": { + "line": 98, + "column": 31 + } + }, + "object": { + "type": "ThisExpression", + "start": 2645, + "end": 2649, + "loc": { + "start": { + "line": 98, + "column": 21 + }, + "end": { + "line": 98, + "column": 25 + } + } + }, + "property": { + "type": "Identifier", + "start": 2650, + "end": 2655, + "loc": { + "start": { + "line": 98, + "column": 26 + }, + "end": { + "line": 98, + "column": 31 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 2657, + "end": 2668, + "loc": { + "start": { + "line": 98, + "column": 33 + }, + "end": { + "line": 98, + "column": 44 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + }, + { + "type": "Identifier", + "start": 2670, + "end": 2675, + "loc": { + "start": { + "line": 98, + "column": 46 + }, + "end": { + "line": 98, + "column": 51 + }, + "identifierName": "limbs" + }, + "name": "limbs" + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 2683, + "end": 2718, + "loc": { + "start": { + "line": 101, + "column": 1 + }, + "end": { + "line": 103, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 2683, + "end": 2691, + "loc": { + "start": { + "line": 101, + "column": 1 + }, + "end": { + "line": 101, + "column": 9 + }, + "identifierName": "toString" + }, + "name": "toString" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 2694, + "end": 2718, + "loc": { + "start": { + "line": 101, + "column": 12 + }, + "end": { + "line": 103, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 2698, + "end": 2715, + "loc": { + "start": { + "line": 102, + "column": 2 + }, + "end": { + "line": 102, + "column": 19 + } + }, + "argument": { + "type": "MemberExpression", + "start": 2705, + "end": 2714, + "loc": { + "start": { + "line": 102, + "column": 9 + }, + "end": { + "line": 102, + "column": 18 + } + }, + "object": { + "type": "ThisExpression", + "start": 2705, + "end": 2709, + "loc": { + "start": { + "line": 102, + "column": 9 + }, + "end": { + "line": 102, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 2710, + "end": 2714, + "loc": { + "start": { + "line": 102, + "column": 14 + }, + "end": { + "line": 102, + "column": 18 + }, + "identifierName": "name" + }, + "name": "name" + }, + "computed": false + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 2721, + "end": 2820, + "loc": { + "start": { + "line": 105, + "column": 1 + }, + "end": { + "line": 108, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 2721, + "end": 2723, + "loc": { + "start": { + "line": 105, + "column": 1 + }, + "end": { + "line": 105, + "column": 3 + }, + "identifierName": "$0" + }, + "name": "$0" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 2726, + "end": 2820, + "loc": { + "start": { + "line": 105, + "column": 6 + }, + "end": { + "line": 108, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 2778, + "end": 2817, + "loc": { + "start": { + "line": 107, + "column": 2 + }, + "end": { + "line": 107, + "column": 41 + } + }, + "argument": { + "type": "NewExpression", + "start": 2785, + "end": 2816, + "loc": { + "start": { + "line": 107, + "column": 9 + }, + "end": { + "line": 107, + "column": 40 + } + }, + "callee": { + "type": "Identifier", + "start": 2789, + "end": 2796, + "loc": { + "start": { + "line": 107, + "column": 13 + }, + "end": { + "line": 107, + "column": 20 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 2797, + "end": 2807, + "loc": { + "start": { + "line": 107, + "column": 21 + }, + "end": { + "line": 107, + "column": 31 + } + }, + "object": { + "type": "ThisExpression", + "start": 2797, + "end": 2801, + "loc": { + "start": { + "line": 107, + "column": 21 + }, + "end": { + "line": 107, + "column": 25 + } + } + }, + "property": { + "type": "Identifier", + "start": 2802, + "end": 2807, + "loc": { + "start": { + "line": 107, + "column": 26 + }, + "end": { + "line": 107, + "column": 31 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + { + "type": "NumericLiteral", + "start": 2809, + "end": 2810, + "loc": { + "start": { + "line": 107, + "column": 33 + }, + "end": { + "line": 107, + "column": 34 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "ArrayExpression", + "start": 2812, + "end": 2815, + "loc": { + "start": { + "line": 107, + "column": 36 + }, + "end": { + "line": 107, + "column": 39 + } + }, + "elements": [ + { + "type": "NumericLiteral", + "start": 2813, + "end": 2814, + "loc": { + "start": { + "line": 107, + "column": 37 + }, + "end": { + "line": 107, + "column": 38 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + ] + } + ], + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " TODO Could we use an empty array instead ?", + "start": 2730, + "end": 2775, + "loc": { + "start": { + "line": 106, + "column": 2 + }, + "end": { + "line": 106, + "column": 47 + } + } + } + ] + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 2823, + "end": 2874, + "loc": { + "start": { + "line": 110, + "column": 1 + }, + "end": { + "line": 112, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 2823, + "end": 2825, + "loc": { + "start": { + "line": 110, + "column": 1 + }, + "end": { + "line": 110, + "column": 3 + }, + "identifierName": "$1" + }, + "name": "$1" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 2828, + "end": 2874, + "loc": { + "start": { + "line": 110, + "column": 6 + }, + "end": { + "line": 112, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 2832, + "end": 2871, + "loc": { + "start": { + "line": 111, + "column": 2 + }, + "end": { + "line": 111, + "column": 41 + } + }, + "argument": { + "type": "NewExpression", + "start": 2839, + "end": 2870, + "loc": { + "start": { + "line": 111, + "column": 9 + }, + "end": { + "line": 111, + "column": 40 + } + }, + "callee": { + "type": "Identifier", + "start": 2843, + "end": 2850, + "loc": { + "start": { + "line": 111, + "column": 13 + }, + "end": { + "line": 111, + "column": 20 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 2851, + "end": 2861, + "loc": { + "start": { + "line": 111, + "column": 21 + }, + "end": { + "line": 111, + "column": 31 + } + }, + "object": { + "type": "ThisExpression", + "start": 2851, + "end": 2855, + "loc": { + "start": { + "line": 111, + "column": 21 + }, + "end": { + "line": 111, + "column": 25 + } + } + }, + "property": { + "type": "Identifier", + "start": 2856, + "end": 2861, + "loc": { + "start": { + "line": 111, + "column": 26 + }, + "end": { + "line": 111, + "column": 31 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + { + "type": "NumericLiteral", + "start": 2863, + "end": 2864, + "loc": { + "start": { + "line": 111, + "column": 33 + }, + "end": { + "line": 111, + "column": 34 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + { + "type": "ArrayExpression", + "start": 2866, + "end": 2869, + "loc": { + "start": { + "line": 111, + "column": 36 + }, + "end": { + "line": 111, + "column": 39 + } + }, + "elements": [ + { + "type": "NumericLiteral", + "start": 2867, + "end": 2868, + "loc": { + "start": { + "line": 111, + "column": 37 + }, + "end": { + "line": 111, + "column": 38 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + } + ] + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 2877, + "end": 2930, + "loc": { + "start": { + "line": 114, + "column": 1 + }, + "end": { + "line": 116, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 2877, + "end": 2880, + "loc": { + "start": { + "line": 114, + "column": 1 + }, + "end": { + "line": 114, + "column": 4 + }, + "identifierName": "$_1" + }, + "name": "$_1" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 2883, + "end": 2930, + "loc": { + "start": { + "line": 114, + "column": 7 + }, + "end": { + "line": 116, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 2887, + "end": 2927, + "loc": { + "start": { + "line": 115, + "column": 2 + }, + "end": { + "line": 115, + "column": 42 + } + }, + "argument": { + "type": "NewExpression", + "start": 2894, + "end": 2926, + "loc": { + "start": { + "line": 115, + "column": 9 + }, + "end": { + "line": 115, + "column": 41 + } + }, + "callee": { + "type": "Identifier", + "start": 2898, + "end": 2905, + "loc": { + "start": { + "line": 115, + "column": 13 + }, + "end": { + "line": 115, + "column": 20 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 2906, + "end": 2916, + "loc": { + "start": { + "line": 115, + "column": 21 + }, + "end": { + "line": 115, + "column": 31 + } + }, + "object": { + "type": "ThisExpression", + "start": 2906, + "end": 2910, + "loc": { + "start": { + "line": 115, + "column": 21 + }, + "end": { + "line": 115, + "column": 25 + } + } + }, + "property": { + "type": "Identifier", + "start": 2911, + "end": 2916, + "loc": { + "start": { + "line": 115, + "column": 26 + }, + "end": { + "line": 115, + "column": 31 + }, + "identifierName": "_base" + }, + "name": "_base" + }, + "computed": false + }, + { + "type": "UnaryExpression", + "start": 2918, + "end": 2920, + "loc": { + "start": { + "line": 115, + "column": 33 + }, + "end": { + "line": 115, + "column": 35 + } + }, + "operator": "-", + "prefix": true, + "argument": { + "type": "NumericLiteral", + "start": 2919, + "end": 2920, + "loc": { + "start": { + "line": 115, + "column": 34 + }, + "end": { + "line": 115, + "column": 35 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + "extra": { + "parenthesizedArgument": false + } + }, + { + "type": "ArrayExpression", + "start": 2922, + "end": 2925, + "loc": { + "start": { + "line": 115, + "column": 37 + }, + "end": { + "line": 115, + "column": 40 + } + }, + "elements": [ + { + "type": "NumericLiteral", + "start": 2923, + "end": 2924, + "loc": { + "start": { + "line": 115, + "column": 38 + }, + "end": { + "line": 115, + "column": 39 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + } + ] + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 2933, + "end": 3015, + "loc": { + "start": { + "line": 118, + "column": 1 + }, + "end": { + "line": 121, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 2933, + "end": 2936, + "loc": { + "start": { + "line": 118, + "column": 1 + }, + "end": { + "line": 118, + "column": 4 + }, + "identifierName": "has" + }, + "name": "has" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 2937, + "end": 2938, + "loc": { + "start": { + "line": 118, + "column": 5 + }, + "end": { + "line": 118, + "column": 6 + }, + "identifierName": "x" + }, + "name": "x" + } + ], + "body": { + "type": "BlockStatement", + "start": 2940, + "end": 3015, + "loc": { + "start": { + "line": 118, + "column": 8 + }, + "end": { + "line": 121, + "column": 2 + } + }, + "body": [ + { + "type": "IfStatement", + "start": 2944, + "end": 2982, + "loc": { + "start": { + "line": 119, + "column": 2 + }, + "end": { + "line": 119, + "column": 40 + } + }, + "test": { + "type": "BinaryExpression", + "start": 2948, + "end": 2968, + "loc": { + "start": { + "line": 119, + "column": 6 + }, + "end": { + "line": 119, + "column": 26 + } + }, + "left": { + "type": "Identifier", + "start": 2948, + "end": 2949, + "loc": { + "start": { + "line": 119, + "column": 6 + }, + "end": { + "line": 119, + "column": 7 + }, + "identifierName": "x" + }, + "name": "x" + }, + "operator": "instanceof", + "right": { + "type": "Identifier", + "start": 2961, + "end": 2968, + "loc": { + "start": { + "line": 119, + "column": 19 + }, + "end": { + "line": 119, + "column": 26 + }, + "identifierName": "Integer" + }, + "name": "Integer" + } + }, + "consequent": { + "type": "ReturnStatement", + "start": 2970, + "end": 2982, + "loc": { + "start": { + "line": 119, + "column": 28 + }, + "end": { + "line": 119, + "column": 40 + } + }, + "argument": { + "type": "BooleanLiteral", + "start": 2977, + "end": 2981, + "loc": { + "start": { + "line": 119, + "column": 35 + }, + "end": { + "line": 119, + "column": 39 + } + }, + "value": true + } + }, + "alternate": null + }, + { + "type": "ReturnStatement", + "start": 2985, + "end": 3012, + "loc": { + "start": { + "line": 120, + "column": 2 + }, + "end": { + "line": 120, + "column": 29 + } + }, + "argument": { + "type": "CallExpression", + "start": 2992, + "end": 3011, + "loc": { + "start": { + "line": 120, + "column": 9 + }, + "end": { + "line": 120, + "column": 28 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2992, + "end": 3008, + "loc": { + "start": { + "line": 120, + "column": 9 + }, + "end": { + "line": 120, + "column": 25 + } + }, + "object": { + "type": "Identifier", + "start": 2992, + "end": 2998, + "loc": { + "start": { + "line": 120, + "column": 9 + }, + "end": { + "line": 120, + "column": 15 + }, + "identifierName": "Number" + }, + "name": "Number" + }, + "property": { + "type": "Identifier", + "start": 2999, + "end": 3008, + "loc": { + "start": { + "line": 120, + "column": 16 + }, + "end": { + "line": 120, + "column": 25 + }, + "identifierName": "isInteger" + }, + "name": "isInteger" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 3009, + "end": 3010, + "loc": { + "start": { + "line": 120, + "column": 26 + }, + "end": { + "line": 120, + "column": 27 + }, + "identifierName": "x" + }, + "name": "x" + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 3018, + "end": 3058, + "loc": { + "start": { + "line": 123, + "column": 1 + }, + "end": { + "line": 125, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 3018, + "end": 3021, + "loc": { + "start": { + "line": 123, + "column": 1 + }, + "end": { + "line": 123, + "column": 4 + }, + "identifierName": "min" + }, + "name": "min" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 3022, + "end": 3023, + "loc": { + "start": { + "line": 123, + "column": 5 + }, + "end": { + "line": 123, + "column": 6 + }, + "identifierName": "a" + }, + "name": "a" + }, + { + "type": "Identifier", + "start": 3025, + "end": 3026, + "loc": { + "start": { + "line": 123, + "column": 8 + }, + "end": { + "line": 123, + "column": 9 + }, + "identifierName": "b" + }, + "name": "b" + } + ], + "body": { + "type": "BlockStatement", + "start": 3028, + "end": 3058, + "loc": { + "start": { + "line": 123, + "column": 11 + }, + "end": { + "line": 125, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 3032, + "end": 3055, + "loc": { + "start": { + "line": 124, + "column": 2 + }, + "end": { + "line": 124, + "column": 25 + } + }, + "argument": { + "type": "ConditionalExpression", + "start": 3039, + "end": 3054, + "loc": { + "start": { + "line": 124, + "column": 9 + }, + "end": { + "line": 124, + "column": 24 + } + }, + "test": { + "type": "CallExpression", + "start": 3039, + "end": 3046, + "loc": { + "start": { + "line": 124, + "column": 9 + }, + "end": { + "line": 124, + "column": 16 + } + }, + "callee": { + "type": "MemberExpression", + "start": 3039, + "end": 3043, + "loc": { + "start": { + "line": 124, + "column": 9 + }, + "end": { + "line": 124, + "column": 13 + } + }, + "object": { + "type": "Identifier", + "start": 3039, + "end": 3040, + "loc": { + "start": { + "line": 124, + "column": 9 + }, + "end": { + "line": 124, + "column": 10 + }, + "identifierName": "a" + }, + "name": "a" + }, + "property": { + "type": "Identifier", + "start": 3041, + "end": 3043, + "loc": { + "start": { + "line": 124, + "column": 11 + }, + "end": { + "line": 124, + "column": 13 + }, + "identifierName": "le" + }, + "name": "le" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 3044, + "end": 3045, + "loc": { + "start": { + "line": 124, + "column": 14 + }, + "end": { + "line": 124, + "column": 15 + }, + "identifierName": "b" + }, + "name": "b" + } + ] + }, + "consequent": { + "type": "Identifier", + "start": 3049, + "end": 3050, + "loc": { + "start": { + "line": 124, + "column": 19 + }, + "end": { + "line": 124, + "column": 20 + }, + "identifierName": "a" + }, + "name": "a" + }, + "alternate": { + "type": "Identifier", + "start": 3053, + "end": 3054, + "loc": { + "start": { + "line": 124, + "column": 23 + }, + "end": { + "line": 124, + "column": 24 + }, + "identifierName": "b" + }, + "name": "b" + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 3061, + "end": 3101, + "loc": { + "start": { + "line": 127, + "column": 1 + }, + "end": { + "line": 129, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 3061, + "end": 3064, + "loc": { + "start": { + "line": 127, + "column": 1 + }, + "end": { + "line": 127, + "column": 4 + }, + "identifierName": "max" + }, + "name": "max" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 3065, + "end": 3066, + "loc": { + "start": { + "line": 127, + "column": 5 + }, + "end": { + "line": 127, + "column": 6 + }, + "identifierName": "a" + }, + "name": "a" + }, + { + "type": "Identifier", + "start": 3068, + "end": 3069, + "loc": { + "start": { + "line": 127, + "column": 8 + }, + "end": { + "line": 127, + "column": 9 + }, + "identifierName": "b" + }, + "name": "b" + } + ], + "body": { + "type": "BlockStatement", + "start": 3071, + "end": 3101, + "loc": { + "start": { + "line": 127, + "column": 11 + }, + "end": { + "line": 129, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 3075, + "end": 3098, + "loc": { + "start": { + "line": 128, + "column": 2 + }, + "end": { + "line": 128, + "column": 25 + } + }, + "argument": { + "type": "ConditionalExpression", + "start": 3082, + "end": 3097, + "loc": { + "start": { + "line": 128, + "column": 9 + }, + "end": { + "line": 128, + "column": 24 + } + }, + "test": { + "type": "CallExpression", + "start": 3082, + "end": 3089, + "loc": { + "start": { + "line": 128, + "column": 9 + }, + "end": { + "line": 128, + "column": 16 + } + }, + "callee": { + "type": "MemberExpression", + "start": 3082, + "end": 3086, + "loc": { + "start": { + "line": 128, + "column": 9 + }, + "end": { + "line": 128, + "column": 13 + } + }, + "object": { + "type": "Identifier", + "start": 3082, + "end": 3083, + "loc": { + "start": { + "line": 128, + "column": 9 + }, + "end": { + "line": 128, + "column": 10 + }, + "identifierName": "a" + }, + "name": "a" + }, + "property": { + "type": "Identifier", + "start": 3084, + "end": 3086, + "loc": { + "start": { + "line": 128, + "column": 11 + }, + "end": { + "line": 128, + "column": 13 + }, + "identifierName": "ge" + }, + "name": "ge" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 3087, + "end": 3088, + "loc": { + "start": { + "line": 128, + "column": 14 + }, + "end": { + "line": 128, + "column": 15 + }, + "identifierName": "b" + }, + "name": "b" + } + ] + }, + "consequent": { + "type": "Identifier", + "start": 3092, + "end": 3093, + "loc": { + "start": { + "line": 128, + "column": 19 + }, + "end": { + "line": 128, + "column": 20 + }, + "identifierName": "a" + }, + "name": "a" + }, + "alternate": { + "type": "Identifier", + "start": 3096, + "end": 3097, + "loc": { + "start": { + "line": 128, + "column": 23 + }, + "end": { + "line": 128, + "column": 24 + }, + "identifierName": "b" + }, + "name": "b" + } + } + } + ], + "directives": [] + } + } + ] + }, + "leadingComments": [], + "trailingComments": [] + } + } + ], + "directives": [] + }, + "comments": [ + { + "type": "CommentLine", + "value": " TODO Could we use an empty array instead ?", + "start": 2730, + "end": 2775, + "loc": { + "start": { + "line": 106, + "column": 2 + }, + "end": { + "line": 106, + "column": 47 + } + } + } + ], + "tokens": [ + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 0, + "end": 6, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7, + "end": 8, + "loc": { + "start": { + "line": 1, + "column": 7 + }, + "end": { + "line": 1, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "parse", + "start": 8, + "end": 13, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 13 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 13, + "end": 14, + "loc": { + "start": { + "line": 1, + "column": 13 + }, + "end": { + "line": 1, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "convert", + "start": 15, + "end": 22, + "loc": { + "start": { + "line": 1, + "column": 15 + }, + "end": { + "line": 1, + "column": 22 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 22, + "end": 23, + "loc": { + "start": { + "line": 1, + "column": 22 + }, + "end": { + "line": 1, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 24, + "end": 28, + "loc": { + "start": { + "line": 1, + "column": 24 + }, + "end": { + "line": 1, + "column": 28 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "@aureooms/js-integer-big-endian", + "start": 29, + "end": 62, + "loc": { + "start": { + "line": 1, + "column": 29 + }, + "end": { + "line": 1, + "column": 62 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 62, + "end": 63, + "loc": { + "start": { + "line": 1, + "column": 62 + }, + "end": { + "line": 1, + "column": 63 + } + } + }, + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 64, + "end": 70, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 71, + "end": 72, + "loc": { + "start": { + "line": 2, + "column": 7 + }, + "end": { + "line": 2, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "TypeError", + "start": 72, + "end": 81, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 17 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 81, + "end": 82, + "loc": { + "start": { + "line": 2, + "column": 17 + }, + "end": { + "line": 2, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ValueError", + "start": 83, + "end": 93, + "loc": { + "start": { + "line": 2, + "column": 19 + }, + "end": { + "line": 2, + "column": 29 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 93, + "end": 94, + "loc": { + "start": { + "line": 2, + "column": 29 + }, + "end": { + "line": 2, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 95, + "end": 99, + "loc": { + "start": { + "line": 2, + "column": 31 + }, + "end": { + "line": 2, + "column": 35 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "@aureooms/js-error", + "start": 100, + "end": 120, + "loc": { + "start": { + "line": 2, + "column": 36 + }, + "end": { + "line": 2, + "column": 56 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 120, + "end": 121, + "loc": { + "start": { + "line": 2, + "column": 56 + }, + "end": { + "line": 2, + "column": 57 + } + } + }, + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 123, + "end": 129, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 4, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 130, + "end": 131, + "loc": { + "start": { + "line": 4, + "column": 7 + }, + "end": { + "line": 4, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 131, + "end": 138, + "loc": { + "start": { + "line": 4, + "column": 8 + }, + "end": { + "line": 4, + "column": 15 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 138, + "end": 139, + "loc": { + "start": { + "line": 4, + "column": 15 + }, + "end": { + "line": 4, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 140, + "end": 144, + "loc": { + "start": { + "line": 4, + "column": 17 + }, + "end": { + "line": 4, + "column": 21 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./Integer.js", + "start": 145, + "end": 159, + "loc": { + "start": { + "line": 4, + "column": 22 + }, + "end": { + "line": 4, + "column": 36 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 159, + "end": 160, + "loc": { + "start": { + "line": 4, + "column": 36 + }, + "end": { + "line": 4, + "column": 37 + } + } + }, + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 161, + "end": 167, + "loc": { + "start": { + "line": 5, + "column": 0 + }, + "end": { + "line": 5, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 168, + "end": 169, + "loc": { + "start": { + "line": 5, + "column": 7 + }, + "end": { + "line": 5, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "DEFAULT_DISPLAY_BASE", + "start": 169, + "end": 189, + "loc": { + "start": { + "line": 5, + "column": 8 + }, + "end": { + "line": 5, + "column": 28 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 189, + "end": 190, + "loc": { + "start": { + "line": 5, + "column": 28 + }, + "end": { + "line": 5, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 191, + "end": 195, + "loc": { + "start": { + "line": 5, + "column": 30 + }, + "end": { + "line": 5, + "column": 34 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./DEFAULT_DISPLAY_BASE.js", + "start": 196, + "end": 223, + "loc": { + "start": { + "line": 5, + "column": 35 + }, + "end": { + "line": 5, + "column": 62 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 223, + "end": 224, + "loc": { + "start": { + "line": 5, + "column": 62 + }, + "end": { + "line": 5, + "column": 63 + } + } + }, + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 225, + "end": 231, + "loc": { + "start": { + "line": 6, + "column": 0 + }, + "end": { + "line": 6, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 232, + "end": 233, + "loc": { + "start": { + "line": 6, + "column": 7 + }, + "end": { + "line": 6, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_from_number", + "start": 233, + "end": 245, + "loc": { + "start": { + "line": 6, + "column": 8 + }, + "end": { + "line": 6, + "column": 20 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 245, + "end": 246, + "loc": { + "start": { + "line": 6, + "column": 20 + }, + "end": { + "line": 6, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 247, + "end": 251, + "loc": { + "start": { + "line": 6, + "column": 22 + }, + "end": { + "line": 6, + "column": 26 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./_from_number.js", + "start": 252, + "end": 271, + "loc": { + "start": { + "line": 6, + "column": 27 + }, + "end": { + "line": 6, + "column": 46 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 271, + "end": 272, + "loc": { + "start": { + "line": 6, + "column": 46 + }, + "end": { + "line": 6, + "column": 47 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 274, + "end": 280, + "loc": { + "start": { + "line": 8, + "column": 0 + }, + "end": { + "line": 8, + "column": 6 + } + } + }, + { + "type": { + "label": "class", + "keyword": "class", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "class", + "start": 281, + "end": 286, + "loc": { + "start": { + "line": 8, + "column": 7 + }, + "end": { + "line": 8, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "IntegerRing", + "start": 287, + "end": 298, + "loc": { + "start": { + "line": 8, + "column": 13 + }, + "end": { + "line": 8, + "column": 24 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 299, + "end": 300, + "loc": { + "start": { + "line": 8, + "column": 25 + }, + "end": { + "line": 8, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "constructor", + "start": 302, + "end": 313, + "loc": { + "start": { + "line": 9, + "column": 1 + }, + "end": { + "line": 9, + "column": 12 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 313, + "end": 314, + "loc": { + "start": { + "line": 9, + "column": 12 + }, + "end": { + "line": 9, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "name", + "start": 314, + "end": 318, + "loc": { + "start": { + "line": 9, + "column": 13 + }, + "end": { + "line": 9, + "column": 17 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 318, + "end": 319, + "loc": { + "start": { + "line": 9, + "column": 17 + }, + "end": { + "line": 9, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 320, + "end": 324, + "loc": { + "start": { + "line": 9, + "column": 19 + }, + "end": { + "line": 9, + "column": 23 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 324, + "end": 325, + "loc": { + "start": { + "line": 9, + "column": 23 + }, + "end": { + "line": 9, + "column": 24 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 326, + "end": 327, + "loc": { + "start": { + "line": 9, + "column": 25 + }, + "end": { + "line": 9, + "column": 26 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 330, + "end": 334, + "loc": { + "start": { + "line": 10, + "column": 2 + }, + "end": { + "line": 10, + "column": 6 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 334, + "end": 335, + "loc": { + "start": { + "line": 10, + "column": 6 + }, + "end": { + "line": 10, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "name", + "start": 335, + "end": 339, + "loc": { + "start": { + "line": 10, + "column": 7 + }, + "end": { + "line": 10, + "column": 11 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 340, + "end": 341, + "loc": { + "start": { + "line": 10, + "column": 12 + }, + "end": { + "line": 10, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "name", + "start": 342, + "end": 346, + "loc": { + "start": { + "line": 10, + "column": 14 + }, + "end": { + "line": 10, + "column": 18 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 346, + "end": 347, + "loc": { + "start": { + "line": 10, + "column": 18 + }, + "end": { + "line": 10, + "column": 19 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 350, + "end": 354, + "loc": { + "start": { + "line": 11, + "column": 2 + }, + "end": { + "line": 11, + "column": 6 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 354, + "end": 355, + "loc": { + "start": { + "line": 11, + "column": 6 + }, + "end": { + "line": 11, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 355, + "end": 360, + "loc": { + "start": { + "line": 11, + "column": 7 + }, + "end": { + "line": 11, + "column": 12 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 361, + "end": 362, + "loc": { + "start": { + "line": 11, + "column": 13 + }, + "end": { + "line": 11, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 363, + "end": 367, + "loc": { + "start": { + "line": 11, + "column": 15 + }, + "end": { + "line": 11, + "column": 19 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 367, + "end": 368, + "loc": { + "start": { + "line": 11, + "column": 19 + }, + "end": { + "line": 11, + "column": 20 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 370, + "end": 371, + "loc": { + "start": { + "line": 12, + "column": 1 + }, + "end": { + "line": 12, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "characteristic", + "start": 374, + "end": 388, + "loc": { + "start": { + "line": 14, + "column": 1 + }, + "end": { + "line": 14, + "column": 15 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 388, + "end": 389, + "loc": { + "start": { + "line": 14, + "column": 15 + }, + "end": { + "line": 14, + "column": 16 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 389, + "end": 390, + "loc": { + "start": { + "line": 14, + "column": 16 + }, + "end": { + "line": 14, + "column": 17 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 391, + "end": 392, + "loc": { + "start": { + "line": 14, + "column": 18 + }, + "end": { + "line": 14, + "column": 19 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 395, + "end": 401, + "loc": { + "start": { + "line": 15, + "column": 2 + }, + "end": { + "line": 15, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 402, + "end": 406, + "loc": { + "start": { + "line": 15, + "column": 9 + }, + "end": { + "line": 15, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 406, + "end": 407, + "loc": { + "start": { + "line": 15, + "column": 13 + }, + "end": { + "line": 15, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "$0", + "start": 407, + "end": 409, + "loc": { + "start": { + "line": 15, + "column": 14 + }, + "end": { + "line": 15, + "column": 16 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 409, + "end": 410, + "loc": { + "start": { + "line": 15, + "column": 16 + }, + "end": { + "line": 15, + "column": 17 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 410, + "end": 411, + "loc": { + "start": { + "line": 15, + "column": 17 + }, + "end": { + "line": 15, + "column": 18 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 411, + "end": 412, + "loc": { + "start": { + "line": 15, + "column": 18 + }, + "end": { + "line": 15, + "column": 19 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 414, + "end": 415, + "loc": { + "start": { + "line": 16, + "column": 1 + }, + "end": { + "line": 16, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 418, + "end": 422, + "loc": { + "start": { + "line": 18, + "column": 1 + }, + "end": { + "line": 18, + "column": 5 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 422, + "end": 423, + "loc": { + "start": { + "line": 18, + "column": 5 + }, + "end": { + "line": 18, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "object", + "start": 423, + "end": 429, + "loc": { + "start": { + "line": 18, + "column": 6 + }, + "end": { + "line": 18, + "column": 12 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 429, + "end": 430, + "loc": { + "start": { + "line": 18, + "column": 12 + }, + "end": { + "line": 18, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 431, + "end": 435, + "loc": { + "start": { + "line": 18, + "column": 14 + }, + "end": { + "line": 18, + "column": 18 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 436, + "end": 437, + "loc": { + "start": { + "line": 18, + "column": 19 + }, + "end": { + "line": 18, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "undefined", + "start": 438, + "end": 447, + "loc": { + "start": { + "line": 18, + "column": 21 + }, + "end": { + "line": 18, + "column": 30 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 447, + "end": 448, + "loc": { + "start": { + "line": 18, + "column": 30 + }, + "end": { + "line": 18, + "column": 31 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 449, + "end": 460, + "loc": { + "start": { + "line": 18, + "column": 32 + }, + "end": { + "line": 18, + "column": 43 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 461, + "end": 462, + "loc": { + "start": { + "line": 18, + "column": 44 + }, + "end": { + "line": 18, + "column": 45 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 463, + "end": 464, + "loc": { + "start": { + "line": 18, + "column": 46 + }, + "end": { + "line": 18, + "column": 47 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 464, + "end": 465, + "loc": { + "start": { + "line": 18, + "column": 47 + }, + "end": { + "line": 18, + "column": 48 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 466, + "end": 467, + "loc": { + "start": { + "line": 18, + "column": 49 + }, + "end": { + "line": 18, + "column": 50 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 470, + "end": 472, + "loc": { + "start": { + "line": 19, + "column": 2 + }, + "end": { + "line": 19, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 473, + "end": 474, + "loc": { + "start": { + "line": 19, + "column": 5 + }, + "end": { + "line": 19, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "object", + "start": 474, + "end": 480, + "loc": { + "start": { + "line": 19, + "column": 6 + }, + "end": { + "line": 19, + "column": 12 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "===", + "start": 481, + "end": 484, + "loc": { + "start": { + "line": 19, + "column": 13 + }, + "end": { + "line": 19, + "column": 16 + } + } + }, + { + "type": { + "label": "null", + "keyword": "null", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "null", + "start": 485, + "end": 489, + "loc": { + "start": { + "line": 19, + "column": 17 + }, + "end": { + "line": 19, + "column": 21 + } + } + }, + { + "type": { + "label": "||", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 1, + "updateContext": null + }, + "value": "||", + "start": 490, + "end": 492, + "loc": { + "start": { + "line": 19, + "column": 22 + }, + "end": { + "line": 19, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "object", + "start": 493, + "end": 499, + "loc": { + "start": { + "line": 19, + "column": 25 + }, + "end": { + "line": 19, + "column": 31 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "===", + "start": 500, + "end": 503, + "loc": { + "start": { + "line": 19, + "column": 32 + }, + "end": { + "line": 19, + "column": 35 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "undefined", + "start": 504, + "end": 513, + "loc": { + "start": { + "line": 19, + "column": 36 + }, + "end": { + "line": 19, + "column": 45 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 513, + "end": 514, + "loc": { + "start": { + "line": 19, + "column": 45 + }, + "end": { + "line": 19, + "column": 46 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 515, + "end": 521, + "loc": { + "start": { + "line": 19, + "column": 47 + }, + "end": { + "line": 19, + "column": 53 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 522, + "end": 526, + "loc": { + "start": { + "line": 19, + "column": 54 + }, + "end": { + "line": 19, + "column": 58 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 526, + "end": 527, + "loc": { + "start": { + "line": 19, + "column": 58 + }, + "end": { + "line": 19, + "column": 59 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "$0", + "start": 527, + "end": 529, + "loc": { + "start": { + "line": 19, + "column": 59 + }, + "end": { + "line": 19, + "column": 61 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 529, + "end": 530, + "loc": { + "start": { + "line": 19, + "column": 61 + }, + "end": { + "line": 19, + "column": 62 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 530, + "end": 531, + "loc": { + "start": { + "line": 19, + "column": 62 + }, + "end": { + "line": 19, + "column": 63 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 531, + "end": 532, + "loc": { + "start": { + "line": 19, + "column": 63 + }, + "end": { + "line": 19, + "column": 64 + } + } + }, + { + "type": { + "label": "switch", + "keyword": "switch", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "switch", + "start": 536, + "end": 542, + "loc": { + "start": { + "line": 21, + "column": 2 + }, + "end": { + "line": 21, + "column": 8 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 543, + "end": 544, + "loc": { + "start": { + "line": 21, + "column": 9 + }, + "end": { + "line": 21, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "object", + "start": 544, + "end": 550, + "loc": { + "start": { + "line": 21, + "column": 10 + }, + "end": { + "line": 21, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 550, + "end": 551, + "loc": { + "start": { + "line": 21, + "column": 16 + }, + "end": { + "line": 21, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "constructor", + "start": 551, + "end": 562, + "loc": { + "start": { + "line": 21, + "column": 17 + }, + "end": { + "line": 21, + "column": 28 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 562, + "end": 563, + "loc": { + "start": { + "line": 21, + "column": 28 + }, + "end": { + "line": 21, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "prototype", + "start": 563, + "end": 572, + "loc": { + "start": { + "line": 21, + "column": 29 + }, + "end": { + "line": 21, + "column": 38 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 572, + "end": 573, + "loc": { + "start": { + "line": 21, + "column": 38 + }, + "end": { + "line": 21, + "column": 39 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 574, + "end": 575, + "loc": { + "start": { + "line": 21, + "column": 40 + }, + "end": { + "line": 21, + "column": 41 + } + } + }, + { + "type": { + "label": "case", + "keyword": "case", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "case", + "start": 579, + "end": 583, + "loc": { + "start": { + "line": 22, + "column": 3 + }, + "end": { + "line": 22, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Number", + "start": 584, + "end": 590, + "loc": { + "start": { + "line": 22, + "column": 8 + }, + "end": { + "line": 22, + "column": 14 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 590, + "end": 591, + "loc": { + "start": { + "line": 22, + "column": 14 + }, + "end": { + "line": 22, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "prototype", + "start": 591, + "end": 600, + "loc": { + "start": { + "line": 22, + "column": 15 + }, + "end": { + "line": 22, + "column": 24 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 600, + "end": 601, + "loc": { + "start": { + "line": 22, + "column": 24 + }, + "end": { + "line": 22, + "column": 25 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 606, + "end": 608, + "loc": { + "start": { + "line": 23, + "column": 4 + }, + "end": { + "line": 23, + "column": 6 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 609, + "end": 610, + "loc": { + "start": { + "line": 23, + "column": 7 + }, + "end": { + "line": 23, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 610, + "end": 614, + "loc": { + "start": { + "line": 23, + "column": 8 + }, + "end": { + "line": 23, + "column": 12 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "!==", + "start": 615, + "end": 618, + "loc": { + "start": { + "line": 23, + "column": 13 + }, + "end": { + "line": 23, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "undefined", + "start": 619, + "end": 628, + "loc": { + "start": { + "line": 23, + "column": 17 + }, + "end": { + "line": 23, + "column": 26 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 628, + "end": 629, + "loc": { + "start": { + "line": 23, + "column": 26 + }, + "end": { + "line": 23, + "column": 27 + } + } + }, + { + "type": { + "label": "throw", + "keyword": "throw", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "throw", + "start": 635, + "end": 640, + "loc": { + "start": { + "line": 24, + "column": 5 + }, + "end": { + "line": 24, + "column": 10 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 641, + "end": 644, + "loc": { + "start": { + "line": 24, + "column": 11 + }, + "end": { + "line": 24, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ValueError", + "start": 645, + "end": 655, + "loc": { + "start": { + "line": 24, + "column": 15 + }, + "end": { + "line": 24, + "column": 25 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 655, + "end": 656, + "loc": { + "start": { + "line": 24, + "column": 25 + }, + "end": { + "line": 24, + "column": 26 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "IntegerRing#from: using the base parameter does not make sense when passing a Number.", + "start": 663, + "end": 750, + "loc": { + "start": { + "line": 25, + "column": 6 + }, + "end": { + "line": 25, + "column": 93 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 750, + "end": 751, + "loc": { + "start": { + "line": 25, + "column": 93 + }, + "end": { + "line": 25, + "column": 94 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 757, + "end": 758, + "loc": { + "start": { + "line": 26, + "column": 5 + }, + "end": { + "line": 26, + "column": 6 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 758, + "end": 759, + "loc": { + "start": { + "line": 26, + "column": 6 + }, + "end": { + "line": 26, + "column": 7 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 764, + "end": 770, + "loc": { + "start": { + "line": 27, + "column": 4 + }, + "end": { + "line": 27, + "column": 10 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 771, + "end": 775, + "loc": { + "start": { + "line": 27, + "column": 11 + }, + "end": { + "line": 27, + "column": 15 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 775, + "end": 776, + "loc": { + "start": { + "line": 27, + "column": 15 + }, + "end": { + "line": 27, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from_number", + "start": 776, + "end": 787, + "loc": { + "start": { + "line": 27, + "column": 16 + }, + "end": { + "line": 27, + "column": 27 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 787, + "end": 788, + "loc": { + "start": { + "line": 27, + "column": 27 + }, + "end": { + "line": 27, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "object", + "start": 788, + "end": 794, + "loc": { + "start": { + "line": 27, + "column": 28 + }, + "end": { + "line": 27, + "column": 34 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 794, + "end": 795, + "loc": { + "start": { + "line": 27, + "column": 34 + }, + "end": { + "line": 27, + "column": 35 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 796, + "end": 807, + "loc": { + "start": { + "line": 27, + "column": 36 + }, + "end": { + "line": 27, + "column": 47 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 807, + "end": 808, + "loc": { + "start": { + "line": 27, + "column": 47 + }, + "end": { + "line": 27, + "column": 48 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 808, + "end": 809, + "loc": { + "start": { + "line": 27, + "column": 48 + }, + "end": { + "line": 27, + "column": 49 + } + } + }, + { + "type": { + "label": "case", + "keyword": "case", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "case", + "start": 814, + "end": 818, + "loc": { + "start": { + "line": 29, + "column": 3 + }, + "end": { + "line": 29, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "String", + "start": 819, + "end": 825, + "loc": { + "start": { + "line": 29, + "column": 8 + }, + "end": { + "line": 29, + "column": 14 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 825, + "end": 826, + "loc": { + "start": { + "line": 29, + "column": 14 + }, + "end": { + "line": 29, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "prototype", + "start": 826, + "end": 835, + "loc": { + "start": { + "line": 29, + "column": 15 + }, + "end": { + "line": 29, + "column": 24 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 835, + "end": 836, + "loc": { + "start": { + "line": 29, + "column": 24 + }, + "end": { + "line": 29, + "column": 25 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 841, + "end": 843, + "loc": { + "start": { + "line": 30, + "column": 4 + }, + "end": { + "line": 30, + "column": 6 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 844, + "end": 845, + "loc": { + "start": { + "line": 30, + "column": 7 + }, + "end": { + "line": 30, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 845, + "end": 849, + "loc": { + "start": { + "line": 30, + "column": 8 + }, + "end": { + "line": 30, + "column": 12 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "===", + "start": 850, + "end": 853, + "loc": { + "start": { + "line": 30, + "column": 13 + }, + "end": { + "line": 30, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "undefined", + "start": 854, + "end": 863, + "loc": { + "start": { + "line": 30, + "column": 17 + }, + "end": { + "line": 30, + "column": 26 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 863, + "end": 864, + "loc": { + "start": { + "line": 30, + "column": 26 + }, + "end": { + "line": 30, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 865, + "end": 869, + "loc": { + "start": { + "line": 30, + "column": 28 + }, + "end": { + "line": 30, + "column": 32 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 870, + "end": 871, + "loc": { + "start": { + "line": 30, + "column": 33 + }, + "end": { + "line": 30, + "column": 34 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "DEFAULT_DISPLAY_BASE", + "start": 872, + "end": 892, + "loc": { + "start": { + "line": 30, + "column": 35 + }, + "end": { + "line": 30, + "column": 55 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 892, + "end": 893, + "loc": { + "start": { + "line": 30, + "column": 55 + }, + "end": { + "line": 30, + "column": 56 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 898, + "end": 904, + "loc": { + "start": { + "line": 31, + "column": 4 + }, + "end": { + "line": 31, + "column": 10 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 905, + "end": 909, + "loc": { + "start": { + "line": 31, + "column": 11 + }, + "end": { + "line": 31, + "column": 15 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 909, + "end": 910, + "loc": { + "start": { + "line": 31, + "column": 15 + }, + "end": { + "line": 31, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from_string", + "start": 910, + "end": 921, + "loc": { + "start": { + "line": 31, + "column": 16 + }, + "end": { + "line": 31, + "column": 27 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 921, + "end": 922, + "loc": { + "start": { + "line": 31, + "column": 27 + }, + "end": { + "line": 31, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "object", + "start": 922, + "end": 928, + "loc": { + "start": { + "line": 31, + "column": 28 + }, + "end": { + "line": 31, + "column": 34 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 928, + "end": 929, + "loc": { + "start": { + "line": 31, + "column": 34 + }, + "end": { + "line": 31, + "column": 35 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 930, + "end": 934, + "loc": { + "start": { + "line": 31, + "column": 36 + }, + "end": { + "line": 31, + "column": 40 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 934, + "end": 935, + "loc": { + "start": { + "line": 31, + "column": 40 + }, + "end": { + "line": 31, + "column": 41 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 936, + "end": 947, + "loc": { + "start": { + "line": 31, + "column": 42 + }, + "end": { + "line": 31, + "column": 53 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 947, + "end": 948, + "loc": { + "start": { + "line": 31, + "column": 53 + }, + "end": { + "line": 31, + "column": 54 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 948, + "end": 949, + "loc": { + "start": { + "line": 31, + "column": 54 + }, + "end": { + "line": 31, + "column": 55 + } + } + }, + { + "type": { + "label": "case", + "keyword": "case", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "case", + "start": 954, + "end": 958, + "loc": { + "start": { + "line": 33, + "column": 3 + }, + "end": { + "line": 33, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Array", + "start": 959, + "end": 964, + "loc": { + "start": { + "line": 33, + "column": 8 + }, + "end": { + "line": 33, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 964, + "end": 965, + "loc": { + "start": { + "line": 33, + "column": 13 + }, + "end": { + "line": 33, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "prototype", + "start": 965, + "end": 974, + "loc": { + "start": { + "line": 33, + "column": 14 + }, + "end": { + "line": 33, + "column": 23 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 974, + "end": 975, + "loc": { + "start": { + "line": 33, + "column": 23 + }, + "end": { + "line": 33, + "column": 24 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 980, + "end": 982, + "loc": { + "start": { + "line": 34, + "column": 4 + }, + "end": { + "line": 34, + "column": 6 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 983, + "end": 984, + "loc": { + "start": { + "line": 34, + "column": 7 + }, + "end": { + "line": 34, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 984, + "end": 988, + "loc": { + "start": { + "line": 34, + "column": 8 + }, + "end": { + "line": 34, + "column": 12 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "===", + "start": 989, + "end": 992, + "loc": { + "start": { + "line": 34, + "column": 13 + }, + "end": { + "line": 34, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "undefined", + "start": 993, + "end": 1002, + "loc": { + "start": { + "line": 34, + "column": 17 + }, + "end": { + "line": 34, + "column": 26 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1002, + "end": 1003, + "loc": { + "start": { + "line": 34, + "column": 26 + }, + "end": { + "line": 34, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 1004, + "end": 1008, + "loc": { + "start": { + "line": 34, + "column": 28 + }, + "end": { + "line": 34, + "column": 32 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 1009, + "end": 1010, + "loc": { + "start": { + "line": 34, + "column": 33 + }, + "end": { + "line": 34, + "column": 34 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1011, + "end": 1015, + "loc": { + "start": { + "line": 34, + "column": 35 + }, + "end": { + "line": 34, + "column": 39 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1015, + "end": 1016, + "loc": { + "start": { + "line": 34, + "column": 39 + }, + "end": { + "line": 34, + "column": 40 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 1016, + "end": 1021, + "loc": { + "start": { + "line": 34, + "column": 40 + }, + "end": { + "line": 34, + "column": 45 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1021, + "end": 1022, + "loc": { + "start": { + "line": 34, + "column": 45 + }, + "end": { + "line": 34, + "column": 46 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1027, + "end": 1033, + "loc": { + "start": { + "line": 35, + "column": 4 + }, + "end": { + "line": 35, + "column": 10 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1034, + "end": 1038, + "loc": { + "start": { + "line": 35, + "column": 11 + }, + "end": { + "line": 35, + "column": 15 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1038, + "end": 1039, + "loc": { + "start": { + "line": 35, + "column": 15 + }, + "end": { + "line": 35, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from_digits", + "start": 1039, + "end": 1050, + "loc": { + "start": { + "line": 35, + "column": 16 + }, + "end": { + "line": 35, + "column": 27 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1050, + "end": 1051, + "loc": { + "start": { + "line": 35, + "column": 27 + }, + "end": { + "line": 35, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "object", + "start": 1051, + "end": 1057, + "loc": { + "start": { + "line": 35, + "column": 28 + }, + "end": { + "line": 35, + "column": 34 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1057, + "end": 1058, + "loc": { + "start": { + "line": 35, + "column": 34 + }, + "end": { + "line": 35, + "column": 35 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 1059, + "end": 1063, + "loc": { + "start": { + "line": 35, + "column": 36 + }, + "end": { + "line": 35, + "column": 40 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1063, + "end": 1064, + "loc": { + "start": { + "line": 35, + "column": 40 + }, + "end": { + "line": 35, + "column": 41 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 1065, + "end": 1076, + "loc": { + "start": { + "line": 35, + "column": 42 + }, + "end": { + "line": 35, + "column": 53 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1076, + "end": 1077, + "loc": { + "start": { + "line": 35, + "column": 53 + }, + "end": { + "line": 35, + "column": 54 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1077, + "end": 1078, + "loc": { + "start": { + "line": 35, + "column": 54 + }, + "end": { + "line": 35, + "column": 55 + } + } + }, + { + "type": { + "label": "case", + "keyword": "case", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "case", + "start": 1083, + "end": 1087, + "loc": { + "start": { + "line": 37, + "column": 3 + }, + "end": { + "line": 37, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Boolean", + "start": 1088, + "end": 1095, + "loc": { + "start": { + "line": 37, + "column": 8 + }, + "end": { + "line": 37, + "column": 15 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1095, + "end": 1096, + "loc": { + "start": { + "line": 37, + "column": 15 + }, + "end": { + "line": 37, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "prototype", + "start": 1096, + "end": 1105, + "loc": { + "start": { + "line": 37, + "column": 16 + }, + "end": { + "line": 37, + "column": 25 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1105, + "end": 1106, + "loc": { + "start": { + "line": 37, + "column": 25 + }, + "end": { + "line": 37, + "column": 26 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 1111, + "end": 1113, + "loc": { + "start": { + "line": 38, + "column": 4 + }, + "end": { + "line": 38, + "column": 6 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1114, + "end": 1115, + "loc": { + "start": { + "line": 38, + "column": 7 + }, + "end": { + "line": 38, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 1115, + "end": 1119, + "loc": { + "start": { + "line": 38, + "column": 8 + }, + "end": { + "line": 38, + "column": 12 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "!==", + "start": 1120, + "end": 1123, + "loc": { + "start": { + "line": 38, + "column": 13 + }, + "end": { + "line": 38, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "undefined", + "start": 1124, + "end": 1133, + "loc": { + "start": { + "line": 38, + "column": 17 + }, + "end": { + "line": 38, + "column": 26 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1133, + "end": 1134, + "loc": { + "start": { + "line": 38, + "column": 26 + }, + "end": { + "line": 38, + "column": 27 + } + } + }, + { + "type": { + "label": "throw", + "keyword": "throw", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "throw", + "start": 1140, + "end": 1145, + "loc": { + "start": { + "line": 39, + "column": 5 + }, + "end": { + "line": 39, + "column": 10 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 1146, + "end": 1149, + "loc": { + "start": { + "line": 39, + "column": 11 + }, + "end": { + "line": 39, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ValueError", + "start": 1150, + "end": 1160, + "loc": { + "start": { + "line": 39, + "column": 15 + }, + "end": { + "line": 39, + "column": 25 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1160, + "end": 1161, + "loc": { + "start": { + "line": 39, + "column": 25 + }, + "end": { + "line": 39, + "column": 26 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "IntegerRing#from: using the base parameter does not make sense when passing a Boolean.", + "start": 1168, + "end": 1256, + "loc": { + "start": { + "line": 40, + "column": 6 + }, + "end": { + "line": 40, + "column": 94 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1256, + "end": 1257, + "loc": { + "start": { + "line": 40, + "column": 94 + }, + "end": { + "line": 40, + "column": 95 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1263, + "end": 1264, + "loc": { + "start": { + "line": 41, + "column": 5 + }, + "end": { + "line": 41, + "column": 6 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1264, + "end": 1265, + "loc": { + "start": { + "line": 41, + "column": 6 + }, + "end": { + "line": 41, + "column": 7 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1270, + "end": 1276, + "loc": { + "start": { + "line": 42, + "column": 4 + }, + "end": { + "line": 42, + "column": 10 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1277, + "end": 1281, + "loc": { + "start": { + "line": 42, + "column": 11 + }, + "end": { + "line": 42, + "column": 15 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1281, + "end": 1282, + "loc": { + "start": { + "line": 42, + "column": 15 + }, + "end": { + "line": 42, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from_number", + "start": 1282, + "end": 1293, + "loc": { + "start": { + "line": 42, + "column": 16 + }, + "end": { + "line": 42, + "column": 27 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1293, + "end": 1294, + "loc": { + "start": { + "line": 42, + "column": 27 + }, + "end": { + "line": 42, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Number", + "start": 1294, + "end": 1300, + "loc": { + "start": { + "line": 42, + "column": 28 + }, + "end": { + "line": 42, + "column": 34 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1300, + "end": 1301, + "loc": { + "start": { + "line": 42, + "column": 34 + }, + "end": { + "line": 42, + "column": 35 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "object", + "start": 1301, + "end": 1307, + "loc": { + "start": { + "line": 42, + "column": 35 + }, + "end": { + "line": 42, + "column": 41 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1307, + "end": 1308, + "loc": { + "start": { + "line": 42, + "column": 41 + }, + "end": { + "line": 42, + "column": 42 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1308, + "end": 1309, + "loc": { + "start": { + "line": 42, + "column": 42 + }, + "end": { + "line": 42, + "column": 43 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 1310, + "end": 1321, + "loc": { + "start": { + "line": 42, + "column": 44 + }, + "end": { + "line": 42, + "column": 55 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1321, + "end": 1322, + "loc": { + "start": { + "line": 42, + "column": 55 + }, + "end": { + "line": 42, + "column": 56 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1322, + "end": 1323, + "loc": { + "start": { + "line": 42, + "column": 56 + }, + "end": { + "line": 42, + "column": 57 + } + } + }, + { + "type": { + "label": "case", + "keyword": "case", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "case", + "start": 1328, + "end": 1332, + "loc": { + "start": { + "line": 44, + "column": 3 + }, + "end": { + "line": 44, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 1333, + "end": 1340, + "loc": { + "start": { + "line": 44, + "column": 8 + }, + "end": { + "line": 44, + "column": 15 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1340, + "end": 1341, + "loc": { + "start": { + "line": 44, + "column": 15 + }, + "end": { + "line": 44, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "prototype", + "start": 1341, + "end": 1350, + "loc": { + "start": { + "line": 44, + "column": 16 + }, + "end": { + "line": 44, + "column": 25 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1350, + "end": 1351, + "loc": { + "start": { + "line": 44, + "column": 25 + }, + "end": { + "line": 44, + "column": 26 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 1356, + "end": 1358, + "loc": { + "start": { + "line": 45, + "column": 4 + }, + "end": { + "line": 45, + "column": 6 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1359, + "end": 1360, + "loc": { + "start": { + "line": 45, + "column": 7 + }, + "end": { + "line": 45, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 1360, + "end": 1364, + "loc": { + "start": { + "line": 45, + "column": 8 + }, + "end": { + "line": 45, + "column": 12 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "!==", + "start": 1365, + "end": 1368, + "loc": { + "start": { + "line": 45, + "column": 13 + }, + "end": { + "line": 45, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "undefined", + "start": 1369, + "end": 1378, + "loc": { + "start": { + "line": 45, + "column": 17 + }, + "end": { + "line": 45, + "column": 26 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1378, + "end": 1379, + "loc": { + "start": { + "line": 45, + "column": 26 + }, + "end": { + "line": 45, + "column": 27 + } + } + }, + { + "type": { + "label": "throw", + "keyword": "throw", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "throw", + "start": 1385, + "end": 1390, + "loc": { + "start": { + "line": 46, + "column": 5 + }, + "end": { + "line": 46, + "column": 10 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 1391, + "end": 1394, + "loc": { + "start": { + "line": 46, + "column": 11 + }, + "end": { + "line": 46, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ValueError", + "start": 1395, + "end": 1405, + "loc": { + "start": { + "line": 46, + "column": 15 + }, + "end": { + "line": 46, + "column": 25 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1405, + "end": 1406, + "loc": { + "start": { + "line": 46, + "column": 25 + }, + "end": { + "line": 46, + "column": 26 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "IntegerRing#from: using the base parameter does not make sense when passing an Integer.", + "start": 1413, + "end": 1502, + "loc": { + "start": { + "line": 47, + "column": 6 + }, + "end": { + "line": 47, + "column": 95 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1502, + "end": 1503, + "loc": { + "start": { + "line": 47, + "column": 95 + }, + "end": { + "line": 47, + "column": 96 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1509, + "end": 1510, + "loc": { + "start": { + "line": 48, + "column": 5 + }, + "end": { + "line": 48, + "column": 6 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1510, + "end": 1511, + "loc": { + "start": { + "line": 48, + "column": 6 + }, + "end": { + "line": 48, + "column": 7 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1516, + "end": 1522, + "loc": { + "start": { + "line": 49, + "column": 4 + }, + "end": { + "line": 49, + "column": 10 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 1523, + "end": 1526, + "loc": { + "start": { + "line": 49, + "column": 11 + }, + "end": { + "line": 49, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 1527, + "end": 1534, + "loc": { + "start": { + "line": 49, + "column": 15 + }, + "end": { + "line": 49, + "column": 22 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1534, + "end": 1535, + "loc": { + "start": { + "line": 49, + "column": 22 + }, + "end": { + "line": 49, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "object", + "start": 1541, + "end": 1547, + "loc": { + "start": { + "line": 50, + "column": 5 + }, + "end": { + "line": 50, + "column": 11 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1547, + "end": 1548, + "loc": { + "start": { + "line": 50, + "column": 11 + }, + "end": { + "line": 50, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 1548, + "end": 1553, + "loc": { + "start": { + "line": 50, + "column": 12 + }, + "end": { + "line": 50, + "column": 17 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1553, + "end": 1554, + "loc": { + "start": { + "line": 50, + "column": 17 + }, + "end": { + "line": 50, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "object", + "start": 1560, + "end": 1566, + "loc": { + "start": { + "line": 51, + "column": 5 + }, + "end": { + "line": 51, + "column": 11 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1566, + "end": 1567, + "loc": { + "start": { + "line": 51, + "column": 11 + }, + "end": { + "line": 51, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 1567, + "end": 1579, + "loc": { + "start": { + "line": 51, + "column": 12 + }, + "end": { + "line": 51, + "column": 24 + } + } + }, + { + "type": { + "label": "^", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 4, + "updateContext": null + }, + "value": "^", + "start": 1580, + "end": 1581, + "loc": { + "start": { + "line": 51, + "column": 25 + }, + "end": { + "line": 51, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 1582, + "end": 1593, + "loc": { + "start": { + "line": 51, + "column": 27 + }, + "end": { + "line": 51, + "column": 38 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1593, + "end": 1594, + "loc": { + "start": { + "line": 51, + "column": 38 + }, + "end": { + "line": 51, + "column": 39 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "object", + "start": 1600, + "end": 1606, + "loc": { + "start": { + "line": 52, + "column": 5 + }, + "end": { + "line": 52, + "column": 11 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1606, + "end": 1607, + "loc": { + "start": { + "line": 52, + "column": 11 + }, + "end": { + "line": 52, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs", + "start": 1607, + "end": 1613, + "loc": { + "start": { + "line": 52, + "column": 12 + }, + "end": { + "line": 52, + "column": 18 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1613, + "end": 1614, + "loc": { + "start": { + "line": 52, + "column": 18 + }, + "end": { + "line": 52, + "column": 19 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1619, + "end": 1620, + "loc": { + "start": { + "line": 53, + "column": 4 + }, + "end": { + "line": 53, + "column": 5 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1620, + "end": 1621, + "loc": { + "start": { + "line": 53, + "column": 5 + }, + "end": { + "line": 53, + "column": 6 + } + } + }, + { + "type": { + "label": "default", + "keyword": "default", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "default", + "start": 1626, + "end": 1633, + "loc": { + "start": { + "line": 55, + "column": 3 + }, + "end": { + "line": 55, + "column": 10 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1633, + "end": 1634, + "loc": { + "start": { + "line": 55, + "column": 10 + }, + "end": { + "line": 55, + "column": 11 + } + } + }, + { + "type": { + "label": "throw", + "keyword": "throw", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "throw", + "start": 1639, + "end": 1644, + "loc": { + "start": { + "line": 56, + "column": 4 + }, + "end": { + "line": 56, + "column": 9 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 1645, + "end": 1648, + "loc": { + "start": { + "line": 56, + "column": 10 + }, + "end": { + "line": 56, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "TypeError", + "start": 1649, + "end": 1658, + "loc": { + "start": { + "line": 56, + "column": 14 + }, + "end": { + "line": 56, + "column": 23 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1658, + "end": 1659, + "loc": { + "start": { + "line": 56, + "column": 23 + }, + "end": { + "line": 56, + "column": 24 + } + } + }, + { + "type": { + "label": "`", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1665, + "end": 1666, + "loc": { + "start": { + "line": 57, + "column": 5 + }, + "end": { + "line": 57, + "column": 6 + } + } + }, + { + "type": { + "label": "template", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "IntegerRing#from cannot handle ", + "start": 1666, + "end": 1697, + "loc": { + "start": { + "line": 57, + "column": 6 + }, + "end": { + "line": 57, + "column": 37 + } + } + }, + { + "type": { + "label": "${", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1697, + "end": 1699, + "loc": { + "start": { + "line": 57, + "column": 37 + }, + "end": { + "line": 57, + "column": 39 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "object", + "start": 1699, + "end": 1705, + "loc": { + "start": { + "line": 57, + "column": 39 + }, + "end": { + "line": 57, + "column": 45 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1705, + "end": 1706, + "loc": { + "start": { + "line": 57, + "column": 45 + }, + "end": { + "line": 57, + "column": 46 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "constructor", + "start": 1706, + "end": 1717, + "loc": { + "start": { + "line": 57, + "column": 46 + }, + "end": { + "line": 57, + "column": 57 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1717, + "end": 1718, + "loc": { + "start": { + "line": 57, + "column": 57 + }, + "end": { + "line": 57, + "column": 58 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "prototype", + "start": 1718, + "end": 1727, + "loc": { + "start": { + "line": 57, + "column": 58 + }, + "end": { + "line": 57, + "column": 67 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1727, + "end": 1728, + "loc": { + "start": { + "line": 57, + "column": 67 + }, + "end": { + "line": 57, + "column": 68 + } + } + }, + { + "type": { + "label": "template", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "", + "start": 1728, + "end": 1728, + "loc": { + "start": { + "line": 57, + "column": 68 + }, + "end": { + "line": 57, + "column": 68 + } + } + }, + { + "type": { + "label": "`", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1728, + "end": 1729, + "loc": { + "start": { + "line": 57, + "column": 68 + }, + "end": { + "line": 57, + "column": 69 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1729, + "end": 1730, + "loc": { + "start": { + "line": 57, + "column": 69 + }, + "end": { + "line": 57, + "column": 70 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1735, + "end": 1736, + "loc": { + "start": { + "line": 58, + "column": 4 + }, + "end": { + "line": 58, + "column": 5 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1736, + "end": 1737, + "loc": { + "start": { + "line": 58, + "column": 5 + }, + "end": { + "line": 58, + "column": 6 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1740, + "end": 1741, + "loc": { + "start": { + "line": 59, + "column": 2 + }, + "end": { + "line": 59, + "column": 3 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1743, + "end": 1744, + "loc": { + "start": { + "line": 60, + "column": 1 + }, + "end": { + "line": 60, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from_number", + "start": 1747, + "end": 1758, + "loc": { + "start": { + "line": 62, + "column": 1 + }, + "end": { + "line": 62, + "column": 12 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1758, + "end": 1759, + "loc": { + "start": { + "line": 62, + "column": 12 + }, + "end": { + "line": 62, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 1759, + "end": 1765, + "loc": { + "start": { + "line": 62, + "column": 13 + }, + "end": { + "line": 62, + "column": 19 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1765, + "end": 1766, + "loc": { + "start": { + "line": 62, + "column": 19 + }, + "end": { + "line": 62, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 1767, + "end": 1778, + "loc": { + "start": { + "line": 62, + "column": 21 + }, + "end": { + "line": 62, + "column": 32 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 1779, + "end": 1780, + "loc": { + "start": { + "line": 62, + "column": 33 + }, + "end": { + "line": 62, + "column": 34 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 1781, + "end": 1782, + "loc": { + "start": { + "line": 62, + "column": 35 + }, + "end": { + "line": 62, + "column": 36 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1782, + "end": 1783, + "loc": { + "start": { + "line": 62, + "column": 36 + }, + "end": { + "line": 62, + "column": 37 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1784, + "end": 1785, + "loc": { + "start": { + "line": 62, + "column": 38 + }, + "end": { + "line": 62, + "column": 39 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 1788, + "end": 1793, + "loc": { + "start": { + "line": 63, + "column": 2 + }, + "end": { + "line": 63, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "dirty", + "start": 1794, + "end": 1799, + "loc": { + "start": { + "line": 63, + "column": 8 + }, + "end": { + "line": 63, + "column": 13 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 1800, + "end": 1801, + "loc": { + "start": { + "line": 63, + "column": 14 + }, + "end": { + "line": 63, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_from_number", + "start": 1802, + "end": 1814, + "loc": { + "start": { + "line": 63, + "column": 16 + }, + "end": { + "line": 63, + "column": 28 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1814, + "end": 1815, + "loc": { + "start": { + "line": 63, + "column": 28 + }, + "end": { + "line": 63, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 1815, + "end": 1821, + "loc": { + "start": { + "line": 63, + "column": 29 + }, + "end": { + "line": 63, + "column": 35 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1821, + "end": 1822, + "loc": { + "start": { + "line": 63, + "column": 35 + }, + "end": { + "line": 63, + "column": 36 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1822, + "end": 1823, + "loc": { + "start": { + "line": 63, + "column": 36 + }, + "end": { + "line": 63, + "column": 37 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 1827, + "end": 1832, + "loc": { + "start": { + "line": 65, + "column": 2 + }, + "end": { + "line": 65, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "limbs", + "start": 1833, + "end": 1838, + "loc": { + "start": { + "line": 65, + "column": 8 + }, + "end": { + "line": 65, + "column": 13 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 1839, + "end": 1840, + "loc": { + "start": { + "line": 65, + "column": 14 + }, + "end": { + "line": 65, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "dirty", + "start": 1841, + "end": 1846, + "loc": { + "start": { + "line": 65, + "column": 16 + }, + "end": { + "line": 65, + "column": 21 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1846, + "end": 1847, + "loc": { + "start": { + "line": 65, + "column": 21 + }, + "end": { + "line": 65, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_limbs_in_base", + "start": 1847, + "end": 1861, + "loc": { + "start": { + "line": 65, + "column": 22 + }, + "end": { + "line": 65, + "column": 36 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1861, + "end": 1862, + "loc": { + "start": { + "line": 65, + "column": 36 + }, + "end": { + "line": 65, + "column": 37 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1862, + "end": 1866, + "loc": { + "start": { + "line": 65, + "column": 37 + }, + "end": { + "line": 65, + "column": 41 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1866, + "end": 1867, + "loc": { + "start": { + "line": 65, + "column": 41 + }, + "end": { + "line": 65, + "column": 42 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 1867, + "end": 1872, + "loc": { + "start": { + "line": 65, + "column": 42 + }, + "end": { + "line": 65, + "column": 47 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1872, + "end": 1873, + "loc": { + "start": { + "line": 65, + "column": 47 + }, + "end": { + "line": 65, + "column": 48 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1873, + "end": 1874, + "loc": { + "start": { + "line": 65, + "column": 48 + }, + "end": { + "line": 65, + "column": 49 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1878, + "end": 1884, + "loc": { + "start": { + "line": 67, + "column": 2 + }, + "end": { + "line": 67, + "column": 8 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 1885, + "end": 1888, + "loc": { + "start": { + "line": 67, + "column": 9 + }, + "end": { + "line": 67, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 1889, + "end": 1896, + "loc": { + "start": { + "line": 67, + "column": 13 + }, + "end": { + "line": 67, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1896, + "end": 1897, + "loc": { + "start": { + "line": 67, + "column": 20 + }, + "end": { + "line": 67, + "column": 21 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 1897, + "end": 1901, + "loc": { + "start": { + "line": 67, + "column": 21 + }, + "end": { + "line": 67, + "column": 25 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1901, + "end": 1902, + "loc": { + "start": { + "line": 67, + "column": 25 + }, + "end": { + "line": 67, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 1902, + "end": 1907, + "loc": { + "start": { + "line": 67, + "column": 26 + }, + "end": { + "line": 67, + "column": 31 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1907, + "end": 1908, + "loc": { + "start": { + "line": 67, + "column": 31 + }, + "end": { + "line": 67, + "column": 32 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 1909, + "end": 1920, + "loc": { + "start": { + "line": 67, + "column": 33 + }, + "end": { + "line": 67, + "column": 44 + } + } + }, + { + "type": { + "label": "^", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 4, + "updateContext": null + }, + "value": "^", + "start": 1921, + "end": 1922, + "loc": { + "start": { + "line": 67, + "column": 45 + }, + "end": { + "line": 67, + "column": 46 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "dirty", + "start": 1923, + "end": 1928, + "loc": { + "start": { + "line": 67, + "column": 47 + }, + "end": { + "line": 67, + "column": 52 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1928, + "end": 1929, + "loc": { + "start": { + "line": 67, + "column": 52 + }, + "end": { + "line": 67, + "column": 53 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_is_negative", + "start": 1929, + "end": 1941, + "loc": { + "start": { + "line": 67, + "column": 53 + }, + "end": { + "line": 67, + "column": 65 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1941, + "end": 1942, + "loc": { + "start": { + "line": 67, + "column": 65 + }, + "end": { + "line": 67, + "column": 66 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "limbs", + "start": 1943, + "end": 1948, + "loc": { + "start": { + "line": 67, + "column": 67 + }, + "end": { + "line": 67, + "column": 72 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1948, + "end": 1949, + "loc": { + "start": { + "line": 67, + "column": 72 + }, + "end": { + "line": 67, + "column": 73 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1949, + "end": 1950, + "loc": { + "start": { + "line": 67, + "column": 73 + }, + "end": { + "line": 67, + "column": 74 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1952, + "end": 1953, + "loc": { + "start": { + "line": 68, + "column": 1 + }, + "end": { + "line": 68, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from_string", + "start": 1956, + "end": 1967, + "loc": { + "start": { + "line": 70, + "column": 1 + }, + "end": { + "line": 70, + "column": 12 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1967, + "end": 1968, + "loc": { + "start": { + "line": 70, + "column": 12 + }, + "end": { + "line": 70, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "string", + "start": 1968, + "end": 1974, + "loc": { + "start": { + "line": 70, + "column": 13 + }, + "end": { + "line": 70, + "column": 19 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1974, + "end": 1975, + "loc": { + "start": { + "line": 70, + "column": 19 + }, + "end": { + "line": 70, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 1976, + "end": 1980, + "loc": { + "start": { + "line": 70, + "column": 21 + }, + "end": { + "line": 70, + "column": 25 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 1981, + "end": 1982, + "loc": { + "start": { + "line": 70, + "column": 26 + }, + "end": { + "line": 70, + "column": 27 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 10, + "start": 1983, + "end": 1985, + "loc": { + "start": { + "line": 70, + "column": 28 + }, + "end": { + "line": 70, + "column": 30 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1985, + "end": 1986, + "loc": { + "start": { + "line": 70, + "column": 30 + }, + "end": { + "line": 70, + "column": 31 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 1987, + "end": 1998, + "loc": { + "start": { + "line": 70, + "column": 32 + }, + "end": { + "line": 70, + "column": 43 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 1999, + "end": 2000, + "loc": { + "start": { + "line": 70, + "column": 44 + }, + "end": { + "line": 70, + "column": 45 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 2001, + "end": 2002, + "loc": { + "start": { + "line": 70, + "column": 46 + }, + "end": { + "line": 70, + "column": 47 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2002, + "end": 2003, + "loc": { + "start": { + "line": 70, + "column": 47 + }, + "end": { + "line": 70, + "column": 48 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2004, + "end": 2005, + "loc": { + "start": { + "line": 70, + "column": 49 + }, + "end": { + "line": 70, + "column": 50 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 2008, + "end": 2010, + "loc": { + "start": { + "line": 71, + "column": 2 + }, + "end": { + "line": 71, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2011, + "end": 2012, + "loc": { + "start": { + "line": 71, + "column": 5 + }, + "end": { + "line": 71, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "string", + "start": 2012, + "end": 2018, + "loc": { + "start": { + "line": 71, + "column": 6 + }, + "end": { + "line": 71, + "column": 12 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2018, + "end": 2019, + "loc": { + "start": { + "line": 71, + "column": 12 + }, + "end": { + "line": 71, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 2019, + "end": 2025, + "loc": { + "start": { + "line": 71, + "column": 13 + }, + "end": { + "line": 71, + "column": 19 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "===", + "start": 2026, + "end": 2029, + "loc": { + "start": { + "line": 71, + "column": 20 + }, + "end": { + "line": 71, + "column": 23 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 2030, + "end": 2031, + "loc": { + "start": { + "line": 71, + "column": 24 + }, + "end": { + "line": 71, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2031, + "end": 2032, + "loc": { + "start": { + "line": 71, + "column": 25 + }, + "end": { + "line": 71, + "column": 26 + } + } + }, + { + "type": { + "label": "throw", + "keyword": "throw", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "throw", + "start": 2036, + "end": 2041, + "loc": { + "start": { + "line": 72, + "column": 3 + }, + "end": { + "line": 72, + "column": 8 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 2042, + "end": 2045, + "loc": { + "start": { + "line": 72, + "column": 9 + }, + "end": { + "line": 72, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ValueError", + "start": 2046, + "end": 2056, + "loc": { + "start": { + "line": 72, + "column": 13 + }, + "end": { + "line": 72, + "column": 23 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2056, + "end": 2057, + "loc": { + "start": { + "line": 72, + "column": 23 + }, + "end": { + "line": 72, + "column": 24 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "IntegerRing#from_string cannot parse empty string.", + "start": 2062, + "end": 2114, + "loc": { + "start": { + "line": 73, + "column": 4 + }, + "end": { + "line": 73, + "column": 56 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2114, + "end": 2115, + "loc": { + "start": { + "line": 73, + "column": 56 + }, + "end": { + "line": 73, + "column": 57 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2119, + "end": 2120, + "loc": { + "start": { + "line": 74, + "column": 3 + }, + "end": { + "line": 74, + "column": 4 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2120, + "end": 2121, + "loc": { + "start": { + "line": 74, + "column": 4 + }, + "end": { + "line": 74, + "column": 5 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 2125, + "end": 2127, + "loc": { + "start": { + "line": 76, + "column": 2 + }, + "end": { + "line": 76, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2128, + "end": 2129, + "loc": { + "start": { + "line": 76, + "column": 5 + }, + "end": { + "line": 76, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "string", + "start": 2129, + "end": 2135, + "loc": { + "start": { + "line": 76, + "column": 6 + }, + "end": { + "line": 76, + "column": 12 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2135, + "end": 2136, + "loc": { + "start": { + "line": 76, + "column": 12 + }, + "end": { + "line": 76, + "column": 13 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 2136, + "end": 2137, + "loc": { + "start": { + "line": 76, + "column": 13 + }, + "end": { + "line": 76, + "column": 14 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2137, + "end": 2138, + "loc": { + "start": { + "line": 76, + "column": 14 + }, + "end": { + "line": 76, + "column": 15 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "===", + "start": 2139, + "end": 2142, + "loc": { + "start": { + "line": 76, + "column": 16 + }, + "end": { + "line": 76, + "column": 19 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "-", + "start": 2143, + "end": 2146, + "loc": { + "start": { + "line": 76, + "column": 20 + }, + "end": { + "line": 76, + "column": 23 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2146, + "end": 2147, + "loc": { + "start": { + "line": 76, + "column": 23 + }, + "end": { + "line": 76, + "column": 24 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2151, + "end": 2157, + "loc": { + "start": { + "line": 77, + "column": 3 + }, + "end": { + "line": 77, + "column": 9 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2158, + "end": 2162, + "loc": { + "start": { + "line": 77, + "column": 10 + }, + "end": { + "line": 77, + "column": 14 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2162, + "end": 2163, + "loc": { + "start": { + "line": 77, + "column": 14 + }, + "end": { + "line": 77, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from_string", + "start": 2163, + "end": 2174, + "loc": { + "start": { + "line": 77, + "column": 15 + }, + "end": { + "line": 77, + "column": 26 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2174, + "end": 2175, + "loc": { + "start": { + "line": 77, + "column": 26 + }, + "end": { + "line": 77, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "string", + "start": 2175, + "end": 2181, + "loc": { + "start": { + "line": 77, + "column": 27 + }, + "end": { + "line": 77, + "column": 33 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2181, + "end": 2182, + "loc": { + "start": { + "line": 77, + "column": 33 + }, + "end": { + "line": 77, + "column": 34 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "slice", + "start": 2182, + "end": 2187, + "loc": { + "start": { + "line": 77, + "column": 34 + }, + "end": { + "line": 77, + "column": 39 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2187, + "end": 2188, + "loc": { + "start": { + "line": 77, + "column": 39 + }, + "end": { + "line": 77, + "column": 40 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 2188, + "end": 2189, + "loc": { + "start": { + "line": 77, + "column": 40 + }, + "end": { + "line": 77, + "column": 41 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2189, + "end": 2190, + "loc": { + "start": { + "line": 77, + "column": 41 + }, + "end": { + "line": 77, + "column": 42 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2190, + "end": 2191, + "loc": { + "start": { + "line": 77, + "column": 42 + }, + "end": { + "line": 77, + "column": 43 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 2192, + "end": 2196, + "loc": { + "start": { + "line": 77, + "column": 44 + }, + "end": { + "line": 77, + "column": 48 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2196, + "end": 2197, + "loc": { + "start": { + "line": 77, + "column": 48 + }, + "end": { + "line": 77, + "column": 49 + } + } + }, + { + "type": { + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "~", + "start": 2198, + "end": 2199, + "loc": { + "start": { + "line": 77, + "column": 50 + }, + "end": { + "line": 77, + "column": 51 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 2199, + "end": 2210, + "loc": { + "start": { + "line": 77, + "column": 51 + }, + "end": { + "line": 77, + "column": 62 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2210, + "end": 2211, + "loc": { + "start": { + "line": 77, + "column": 62 + }, + "end": { + "line": 77, + "column": 63 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2211, + "end": 2212, + "loc": { + "start": { + "line": 77, + "column": 63 + }, + "end": { + "line": 77, + "column": 64 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 2216, + "end": 2218, + "loc": { + "start": { + "line": 79, + "column": 2 + }, + "end": { + "line": 79, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2219, + "end": 2220, + "loc": { + "start": { + "line": 79, + "column": 5 + }, + "end": { + "line": 79, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "string", + "start": 2220, + "end": 2226, + "loc": { + "start": { + "line": 79, + "column": 6 + }, + "end": { + "line": 79, + "column": 12 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2226, + "end": 2227, + "loc": { + "start": { + "line": 79, + "column": 12 + }, + "end": { + "line": 79, + "column": 13 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 2227, + "end": 2228, + "loc": { + "start": { + "line": 79, + "column": 13 + }, + "end": { + "line": 79, + "column": 14 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2228, + "end": 2229, + "loc": { + "start": { + "line": 79, + "column": 14 + }, + "end": { + "line": 79, + "column": 15 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "===", + "start": 2230, + "end": 2233, + "loc": { + "start": { + "line": 79, + "column": 16 + }, + "end": { + "line": 79, + "column": 19 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "+", + "start": 2234, + "end": 2237, + "loc": { + "start": { + "line": 79, + "column": 20 + }, + "end": { + "line": 79, + "column": 23 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2237, + "end": 2238, + "loc": { + "start": { + "line": 79, + "column": 23 + }, + "end": { + "line": 79, + "column": 24 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2242, + "end": 2248, + "loc": { + "start": { + "line": 80, + "column": 3 + }, + "end": { + "line": 80, + "column": 9 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2249, + "end": 2253, + "loc": { + "start": { + "line": 80, + "column": 10 + }, + "end": { + "line": 80, + "column": 14 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2253, + "end": 2254, + "loc": { + "start": { + "line": 80, + "column": 14 + }, + "end": { + "line": 80, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from_string", + "start": 2254, + "end": 2265, + "loc": { + "start": { + "line": 80, + "column": 15 + }, + "end": { + "line": 80, + "column": 26 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2265, + "end": 2266, + "loc": { + "start": { + "line": 80, + "column": 26 + }, + "end": { + "line": 80, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "string", + "start": 2266, + "end": 2272, + "loc": { + "start": { + "line": 80, + "column": 27 + }, + "end": { + "line": 80, + "column": 33 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2272, + "end": 2273, + "loc": { + "start": { + "line": 80, + "column": 33 + }, + "end": { + "line": 80, + "column": 34 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "slice", + "start": 2273, + "end": 2278, + "loc": { + "start": { + "line": 80, + "column": 34 + }, + "end": { + "line": 80, + "column": 39 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2278, + "end": 2279, + "loc": { + "start": { + "line": 80, + "column": 39 + }, + "end": { + "line": 80, + "column": 40 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 2279, + "end": 2280, + "loc": { + "start": { + "line": 80, + "column": 40 + }, + "end": { + "line": 80, + "column": 41 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2280, + "end": 2281, + "loc": { + "start": { + "line": 80, + "column": 41 + }, + "end": { + "line": 80, + "column": 42 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2281, + "end": 2282, + "loc": { + "start": { + "line": 80, + "column": 42 + }, + "end": { + "line": 80, + "column": 43 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 2283, + "end": 2287, + "loc": { + "start": { + "line": 80, + "column": 44 + }, + "end": { + "line": 80, + "column": 48 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2287, + "end": 2288, + "loc": { + "start": { + "line": 80, + "column": 48 + }, + "end": { + "line": 80, + "column": 49 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 2289, + "end": 2300, + "loc": { + "start": { + "line": 80, + "column": 50 + }, + "end": { + "line": 80, + "column": 61 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2300, + "end": 2301, + "loc": { + "start": { + "line": 80, + "column": 61 + }, + "end": { + "line": 80, + "column": 62 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2301, + "end": 2302, + "loc": { + "start": { + "line": 80, + "column": 62 + }, + "end": { + "line": 80, + "column": 63 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 2306, + "end": 2311, + "loc": { + "start": { + "line": 82, + "column": 2 + }, + "end": { + "line": 82, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "limbs", + "start": 2312, + "end": 2317, + "loc": { + "start": { + "line": 82, + "column": 8 + }, + "end": { + "line": 82, + "column": 13 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 2318, + "end": 2319, + "loc": { + "start": { + "line": 82, + "column": 14 + }, + "end": { + "line": 82, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "parse", + "start": 2320, + "end": 2325, + "loc": { + "start": { + "line": 82, + "column": 16 + }, + "end": { + "line": 82, + "column": 21 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2325, + "end": 2326, + "loc": { + "start": { + "line": 82, + "column": 21 + }, + "end": { + "line": 82, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 2326, + "end": 2330, + "loc": { + "start": { + "line": 82, + "column": 22 + }, + "end": { + "line": 82, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2330, + "end": 2331, + "loc": { + "start": { + "line": 82, + "column": 26 + }, + "end": { + "line": 82, + "column": 27 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2332, + "end": 2336, + "loc": { + "start": { + "line": 82, + "column": 28 + }, + "end": { + "line": 82, + "column": 32 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2336, + "end": 2337, + "loc": { + "start": { + "line": 82, + "column": 32 + }, + "end": { + "line": 82, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 2337, + "end": 2342, + "loc": { + "start": { + "line": 82, + "column": 33 + }, + "end": { + "line": 82, + "column": 38 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2342, + "end": 2343, + "loc": { + "start": { + "line": 82, + "column": 38 + }, + "end": { + "line": 82, + "column": 39 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "string", + "start": 2344, + "end": 2350, + "loc": { + "start": { + "line": 82, + "column": 40 + }, + "end": { + "line": 82, + "column": 46 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2350, + "end": 2351, + "loc": { + "start": { + "line": 82, + "column": 46 + }, + "end": { + "line": 82, + "column": 47 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2351, + "end": 2352, + "loc": { + "start": { + "line": 82, + "column": 47 + }, + "end": { + "line": 82, + "column": 48 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 2356, + "end": 2358, + "loc": { + "start": { + "line": 84, + "column": 2 + }, + "end": { + "line": 84, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2359, + "end": 2360, + "loc": { + "start": { + "line": 84, + "column": 5 + }, + "end": { + "line": 84, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "limbs", + "start": 2360, + "end": 2365, + "loc": { + "start": { + "line": 84, + "column": 6 + }, + "end": { + "line": 84, + "column": 11 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2365, + "end": 2366, + "loc": { + "start": { + "line": 84, + "column": 11 + }, + "end": { + "line": 84, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 2366, + "end": 2372, + "loc": { + "start": { + "line": 84, + "column": 12 + }, + "end": { + "line": 84, + "column": 18 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "===", + "start": 2373, + "end": 2376, + "loc": { + "start": { + "line": 84, + "column": 19 + }, + "end": { + "line": 84, + "column": 22 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 2377, + "end": 2378, + "loc": { + "start": { + "line": 84, + "column": 23 + }, + "end": { + "line": 84, + "column": 24 + } + } + }, + { + "type": { + "label": "&&", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 2, + "updateContext": null + }, + "value": "&&", + "start": 2379, + "end": 2381, + "loc": { + "start": { + "line": 84, + "column": 25 + }, + "end": { + "line": 84, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "limbs", + "start": 2382, + "end": 2387, + "loc": { + "start": { + "line": 84, + "column": 28 + }, + "end": { + "line": 84, + "column": 33 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2387, + "end": 2388, + "loc": { + "start": { + "line": 84, + "column": 33 + }, + "end": { + "line": 84, + "column": 34 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 2388, + "end": 2389, + "loc": { + "start": { + "line": 84, + "column": 34 + }, + "end": { + "line": 84, + "column": 35 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2389, + "end": 2390, + "loc": { + "start": { + "line": 84, + "column": 35 + }, + "end": { + "line": 84, + "column": 36 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "===", + "start": 2391, + "end": 2394, + "loc": { + "start": { + "line": 84, + "column": 37 + }, + "end": { + "line": 84, + "column": 40 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 2395, + "end": 2396, + "loc": { + "start": { + "line": 84, + "column": 41 + }, + "end": { + "line": 84, + "column": 42 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2396, + "end": 2397, + "loc": { + "start": { + "line": 84, + "column": 42 + }, + "end": { + "line": 84, + "column": 43 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 2398, + "end": 2409, + "loc": { + "start": { + "line": 84, + "column": 44 + }, + "end": { + "line": 84, + "column": 55 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 2410, + "end": 2411, + "loc": { + "start": { + "line": 84, + "column": 56 + }, + "end": { + "line": 84, + "column": 57 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 2412, + "end": 2413, + "loc": { + "start": { + "line": 84, + "column": 58 + }, + "end": { + "line": 84, + "column": 59 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2413, + "end": 2414, + "loc": { + "start": { + "line": 84, + "column": 59 + }, + "end": { + "line": 84, + "column": 60 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2418, + "end": 2424, + "loc": { + "start": { + "line": 86, + "column": 2 + }, + "end": { + "line": 86, + "column": 8 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 2425, + "end": 2428, + "loc": { + "start": { + "line": 86, + "column": 9 + }, + "end": { + "line": 86, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 2429, + "end": 2436, + "loc": { + "start": { + "line": 86, + "column": 13 + }, + "end": { + "line": 86, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2436, + "end": 2437, + "loc": { + "start": { + "line": 86, + "column": 20 + }, + "end": { + "line": 86, + "column": 21 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2437, + "end": 2441, + "loc": { + "start": { + "line": 86, + "column": 21 + }, + "end": { + "line": 86, + "column": 25 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2441, + "end": 2442, + "loc": { + "start": { + "line": 86, + "column": 25 + }, + "end": { + "line": 86, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 2442, + "end": 2447, + "loc": { + "start": { + "line": 86, + "column": 26 + }, + "end": { + "line": 86, + "column": 31 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2447, + "end": 2448, + "loc": { + "start": { + "line": 86, + "column": 31 + }, + "end": { + "line": 86, + "column": 32 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 2449, + "end": 2460, + "loc": { + "start": { + "line": 86, + "column": 33 + }, + "end": { + "line": 86, + "column": 44 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2460, + "end": 2461, + "loc": { + "start": { + "line": 86, + "column": 44 + }, + "end": { + "line": 86, + "column": 45 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "limbs", + "start": 2462, + "end": 2467, + "loc": { + "start": { + "line": 86, + "column": 46 + }, + "end": { + "line": 86, + "column": 51 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2467, + "end": 2468, + "loc": { + "start": { + "line": 86, + "column": 51 + }, + "end": { + "line": 86, + "column": 52 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2468, + "end": 2469, + "loc": { + "start": { + "line": 86, + "column": 52 + }, + "end": { + "line": 86, + "column": 53 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2471, + "end": 2472, + "loc": { + "start": { + "line": 87, + "column": 1 + }, + "end": { + "line": 87, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from_digits", + "start": 2475, + "end": 2486, + "loc": { + "start": { + "line": 89, + "column": 1 + }, + "end": { + "line": 89, + "column": 12 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2486, + "end": 2487, + "loc": { + "start": { + "line": 89, + "column": 12 + }, + "end": { + "line": 89, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "digits", + "start": 2487, + "end": 2493, + "loc": { + "start": { + "line": 89, + "column": 13 + }, + "end": { + "line": 89, + "column": 19 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2493, + "end": 2494, + "loc": { + "start": { + "line": 89, + "column": 19 + }, + "end": { + "line": 89, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 2495, + "end": 2499, + "loc": { + "start": { + "line": 89, + "column": 21 + }, + "end": { + "line": 89, + "column": 25 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2499, + "end": 2500, + "loc": { + "start": { + "line": 89, + "column": 25 + }, + "end": { + "line": 89, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 2501, + "end": 2512, + "loc": { + "start": { + "line": 89, + "column": 27 + }, + "end": { + "line": 89, + "column": 38 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2512, + "end": 2513, + "loc": { + "start": { + "line": 89, + "column": 38 + }, + "end": { + "line": 89, + "column": 39 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2514, + "end": 2515, + "loc": { + "start": { + "line": 89, + "column": 40 + }, + "end": { + "line": 89, + "column": 41 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 2518, + "end": 2523, + "loc": { + "start": { + "line": 90, + "column": 2 + }, + "end": { + "line": 90, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "limbs", + "start": 2524, + "end": 2529, + "loc": { + "start": { + "line": 90, + "column": 8 + }, + "end": { + "line": 90, + "column": 13 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 2530, + "end": 2531, + "loc": { + "start": { + "line": 90, + "column": 14 + }, + "end": { + "line": 90, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "convert", + "start": 2532, + "end": 2539, + "loc": { + "start": { + "line": 90, + "column": 16 + }, + "end": { + "line": 90, + "column": 23 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2539, + "end": 2540, + "loc": { + "start": { + "line": 90, + "column": 23 + }, + "end": { + "line": 90, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 2544, + "end": 2548, + "loc": { + "start": { + "line": 91, + "column": 3 + }, + "end": { + "line": 91, + "column": 7 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2548, + "end": 2549, + "loc": { + "start": { + "line": 91, + "column": 7 + }, + "end": { + "line": 91, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2553, + "end": 2557, + "loc": { + "start": { + "line": 92, + "column": 3 + }, + "end": { + "line": 92, + "column": 7 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2557, + "end": 2558, + "loc": { + "start": { + "line": 92, + "column": 7 + }, + "end": { + "line": 92, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 2558, + "end": 2563, + "loc": { + "start": { + "line": 92, + "column": 8 + }, + "end": { + "line": 92, + "column": 13 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2563, + "end": 2564, + "loc": { + "start": { + "line": 92, + "column": 13 + }, + "end": { + "line": 92, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "digits", + "start": 2568, + "end": 2574, + "loc": { + "start": { + "line": 93, + "column": 3 + }, + "end": { + "line": 93, + "column": 9 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2574, + "end": 2575, + "loc": { + "start": { + "line": 93, + "column": 9 + }, + "end": { + "line": 93, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "slice", + "start": 2575, + "end": 2580, + "loc": { + "start": { + "line": 93, + "column": 10 + }, + "end": { + "line": 93, + "column": 15 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2580, + "end": 2581, + "loc": { + "start": { + "line": 93, + "column": 15 + }, + "end": { + "line": 93, + "column": 16 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2581, + "end": 2582, + "loc": { + "start": { + "line": 93, + "column": 16 + }, + "end": { + "line": 93, + "column": 17 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2582, + "end": 2583, + "loc": { + "start": { + "line": 93, + "column": 17 + }, + "end": { + "line": 93, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "reverse", + "start": 2583, + "end": 2590, + "loc": { + "start": { + "line": 93, + "column": 18 + }, + "end": { + "line": 93, + "column": 25 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2590, + "end": 2591, + "loc": { + "start": { + "line": 93, + "column": 25 + }, + "end": { + "line": 93, + "column": 26 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2591, + "end": 2592, + "loc": { + "start": { + "line": 93, + "column": 26 + }, + "end": { + "line": 93, + "column": 27 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2592, + "end": 2593, + "loc": { + "start": { + "line": 93, + "column": 27 + }, + "end": { + "line": 93, + "column": 28 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 2597, + "end": 2598, + "loc": { + "start": { + "line": 94, + "column": 3 + }, + "end": { + "line": 94, + "column": 4 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2598, + "end": 2599, + "loc": { + "start": { + "line": 94, + "column": 4 + }, + "end": { + "line": 94, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "digits", + "start": 2603, + "end": 2609, + "loc": { + "start": { + "line": 95, + "column": 3 + }, + "end": { + "line": 95, + "column": 9 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2609, + "end": 2610, + "loc": { + "start": { + "line": 95, + "column": 9 + }, + "end": { + "line": 95, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 2610, + "end": 2616, + "loc": { + "start": { + "line": 95, + "column": 10 + }, + "end": { + "line": 95, + "column": 16 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2616, + "end": 2617, + "loc": { + "start": { + "line": 95, + "column": 16 + }, + "end": { + "line": 95, + "column": 17 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2620, + "end": 2621, + "loc": { + "start": { + "line": 96, + "column": 2 + }, + "end": { + "line": 96, + "column": 3 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2621, + "end": 2622, + "loc": { + "start": { + "line": 96, + "column": 3 + }, + "end": { + "line": 96, + "column": 4 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2626, + "end": 2632, + "loc": { + "start": { + "line": 98, + "column": 2 + }, + "end": { + "line": 98, + "column": 8 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 2633, + "end": 2636, + "loc": { + "start": { + "line": 98, + "column": 9 + }, + "end": { + "line": 98, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 2637, + "end": 2644, + "loc": { + "start": { + "line": 98, + "column": 13 + }, + "end": { + "line": 98, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2644, + "end": 2645, + "loc": { + "start": { + "line": 98, + "column": 20 + }, + "end": { + "line": 98, + "column": 21 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2645, + "end": 2649, + "loc": { + "start": { + "line": 98, + "column": 21 + }, + "end": { + "line": 98, + "column": 25 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2649, + "end": 2650, + "loc": { + "start": { + "line": 98, + "column": 25 + }, + "end": { + "line": 98, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 2650, + "end": 2655, + "loc": { + "start": { + "line": 98, + "column": 26 + }, + "end": { + "line": 98, + "column": 31 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2655, + "end": 2656, + "loc": { + "start": { + "line": 98, + "column": 31 + }, + "end": { + "line": 98, + "column": 32 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 2657, + "end": 2668, + "loc": { + "start": { + "line": 98, + "column": 33 + }, + "end": { + "line": 98, + "column": 44 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2668, + "end": 2669, + "loc": { + "start": { + "line": 98, + "column": 44 + }, + "end": { + "line": 98, + "column": 45 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "limbs", + "start": 2670, + "end": 2675, + "loc": { + "start": { + "line": 98, + "column": 46 + }, + "end": { + "line": 98, + "column": 51 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2675, + "end": 2676, + "loc": { + "start": { + "line": 98, + "column": 51 + }, + "end": { + "line": 98, + "column": 52 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2676, + "end": 2677, + "loc": { + "start": { + "line": 98, + "column": 52 + }, + "end": { + "line": 98, + "column": 53 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2679, + "end": 2680, + "loc": { + "start": { + "line": 99, + "column": 1 + }, + "end": { + "line": 99, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "toString", + "start": 2683, + "end": 2691, + "loc": { + "start": { + "line": 101, + "column": 1 + }, + "end": { + "line": 101, + "column": 9 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2691, + "end": 2692, + "loc": { + "start": { + "line": 101, + "column": 9 + }, + "end": { + "line": 101, + "column": 10 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2692, + "end": 2693, + "loc": { + "start": { + "line": 101, + "column": 10 + }, + "end": { + "line": 101, + "column": 11 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2694, + "end": 2695, + "loc": { + "start": { + "line": 101, + "column": 12 + }, + "end": { + "line": 101, + "column": 13 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2698, + "end": 2704, + "loc": { + "start": { + "line": 102, + "column": 2 + }, + "end": { + "line": 102, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2705, + "end": 2709, + "loc": { + "start": { + "line": 102, + "column": 9 + }, + "end": { + "line": 102, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2709, + "end": 2710, + "loc": { + "start": { + "line": 102, + "column": 13 + }, + "end": { + "line": 102, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "name", + "start": 2710, + "end": 2714, + "loc": { + "start": { + "line": 102, + "column": 14 + }, + "end": { + "line": 102, + "column": 18 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2714, + "end": 2715, + "loc": { + "start": { + "line": 102, + "column": 18 + }, + "end": { + "line": 102, + "column": 19 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2717, + "end": 2718, + "loc": { + "start": { + "line": 103, + "column": 1 + }, + "end": { + "line": 103, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "$0", + "start": 2721, + "end": 2723, + "loc": { + "start": { + "line": 105, + "column": 1 + }, + "end": { + "line": 105, + "column": 3 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2723, + "end": 2724, + "loc": { + "start": { + "line": 105, + "column": 3 + }, + "end": { + "line": 105, + "column": 4 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2724, + "end": 2725, + "loc": { + "start": { + "line": 105, + "column": 4 + }, + "end": { + "line": 105, + "column": 5 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2726, + "end": 2727, + "loc": { + "start": { + "line": 105, + "column": 6 + }, + "end": { + "line": 105, + "column": 7 + } + } + }, + { + "type": "CommentLine", + "value": " TODO Could we use an empty array instead ?", + "start": 2730, + "end": 2775, + "loc": { + "start": { + "line": 106, + "column": 2 + }, + "end": { + "line": 106, + "column": 47 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2778, + "end": 2784, + "loc": { + "start": { + "line": 107, + "column": 2 + }, + "end": { + "line": 107, + "column": 8 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 2785, + "end": 2788, + "loc": { + "start": { + "line": 107, + "column": 9 + }, + "end": { + "line": 107, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 2789, + "end": 2796, + "loc": { + "start": { + "line": 107, + "column": 13 + }, + "end": { + "line": 107, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2796, + "end": 2797, + "loc": { + "start": { + "line": 107, + "column": 20 + }, + "end": { + "line": 107, + "column": 21 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2797, + "end": 2801, + "loc": { + "start": { + "line": 107, + "column": 21 + }, + "end": { + "line": 107, + "column": 25 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2801, + "end": 2802, + "loc": { + "start": { + "line": 107, + "column": 25 + }, + "end": { + "line": 107, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 2802, + "end": 2807, + "loc": { + "start": { + "line": 107, + "column": 26 + }, + "end": { + "line": 107, + "column": 31 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2807, + "end": 2808, + "loc": { + "start": { + "line": 107, + "column": 31 + }, + "end": { + "line": 107, + "column": 32 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 2809, + "end": 2810, + "loc": { + "start": { + "line": 107, + "column": 33 + }, + "end": { + "line": 107, + "column": 34 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2810, + "end": 2811, + "loc": { + "start": { + "line": 107, + "column": 34 + }, + "end": { + "line": 107, + "column": 35 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2812, + "end": 2813, + "loc": { + "start": { + "line": 107, + "column": 36 + }, + "end": { + "line": 107, + "column": 37 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 2813, + "end": 2814, + "loc": { + "start": { + "line": 107, + "column": 37 + }, + "end": { + "line": 107, + "column": 38 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2814, + "end": 2815, + "loc": { + "start": { + "line": 107, + "column": 38 + }, + "end": { + "line": 107, + "column": 39 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2815, + "end": 2816, + "loc": { + "start": { + "line": 107, + "column": 39 + }, + "end": { + "line": 107, + "column": 40 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2816, + "end": 2817, + "loc": { + "start": { + "line": 107, + "column": 40 + }, + "end": { + "line": 107, + "column": 41 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2819, + "end": 2820, + "loc": { + "start": { + "line": 108, + "column": 1 + }, + "end": { + "line": 108, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "$1", + "start": 2823, + "end": 2825, + "loc": { + "start": { + "line": 110, + "column": 1 + }, + "end": { + "line": 110, + "column": 3 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2825, + "end": 2826, + "loc": { + "start": { + "line": 110, + "column": 3 + }, + "end": { + "line": 110, + "column": 4 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2826, + "end": 2827, + "loc": { + "start": { + "line": 110, + "column": 4 + }, + "end": { + "line": 110, + "column": 5 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2828, + "end": 2829, + "loc": { + "start": { + "line": 110, + "column": 6 + }, + "end": { + "line": 110, + "column": 7 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2832, + "end": 2838, + "loc": { + "start": { + "line": 111, + "column": 2 + }, + "end": { + "line": 111, + "column": 8 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 2839, + "end": 2842, + "loc": { + "start": { + "line": 111, + "column": 9 + }, + "end": { + "line": 111, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 2843, + "end": 2850, + "loc": { + "start": { + "line": 111, + "column": 13 + }, + "end": { + "line": 111, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2850, + "end": 2851, + "loc": { + "start": { + "line": 111, + "column": 20 + }, + "end": { + "line": 111, + "column": 21 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2851, + "end": 2855, + "loc": { + "start": { + "line": 111, + "column": 21 + }, + "end": { + "line": 111, + "column": 25 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2855, + "end": 2856, + "loc": { + "start": { + "line": 111, + "column": 25 + }, + "end": { + "line": 111, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 2856, + "end": 2861, + "loc": { + "start": { + "line": 111, + "column": 26 + }, + "end": { + "line": 111, + "column": 31 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2861, + "end": 2862, + "loc": { + "start": { + "line": 111, + "column": 31 + }, + "end": { + "line": 111, + "column": 32 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 2863, + "end": 2864, + "loc": { + "start": { + "line": 111, + "column": 33 + }, + "end": { + "line": 111, + "column": 34 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2864, + "end": 2865, + "loc": { + "start": { + "line": 111, + "column": 34 + }, + "end": { + "line": 111, + "column": 35 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2866, + "end": 2867, + "loc": { + "start": { + "line": 111, + "column": 36 + }, + "end": { + "line": 111, + "column": 37 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 2867, + "end": 2868, + "loc": { + "start": { + "line": 111, + "column": 37 + }, + "end": { + "line": 111, + "column": 38 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2868, + "end": 2869, + "loc": { + "start": { + "line": 111, + "column": 38 + }, + "end": { + "line": 111, + "column": 39 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2869, + "end": 2870, + "loc": { + "start": { + "line": 111, + "column": 39 + }, + "end": { + "line": 111, + "column": 40 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2870, + "end": 2871, + "loc": { + "start": { + "line": 111, + "column": 40 + }, + "end": { + "line": 111, + "column": 41 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2873, + "end": 2874, + "loc": { + "start": { + "line": 112, + "column": 1 + }, + "end": { + "line": 112, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "$_1", + "start": 2877, + "end": 2880, + "loc": { + "start": { + "line": 114, + "column": 1 + }, + "end": { + "line": 114, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2880, + "end": 2881, + "loc": { + "start": { + "line": 114, + "column": 4 + }, + "end": { + "line": 114, + "column": 5 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2881, + "end": 2882, + "loc": { + "start": { + "line": 114, + "column": 5 + }, + "end": { + "line": 114, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2883, + "end": 2884, + "loc": { + "start": { + "line": 114, + "column": 7 + }, + "end": { + "line": 114, + "column": 8 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2887, + "end": 2893, + "loc": { + "start": { + "line": 115, + "column": 2 + }, + "end": { + "line": 115, + "column": 8 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 2894, + "end": 2897, + "loc": { + "start": { + "line": 115, + "column": 9 + }, + "end": { + "line": 115, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 2898, + "end": 2905, + "loc": { + "start": { + "line": 115, + "column": 13 + }, + "end": { + "line": 115, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2905, + "end": 2906, + "loc": { + "start": { + "line": 115, + "column": 20 + }, + "end": { + "line": 115, + "column": 21 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 2906, + "end": 2910, + "loc": { + "start": { + "line": 115, + "column": 21 + }, + "end": { + "line": 115, + "column": 25 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2910, + "end": 2911, + "loc": { + "start": { + "line": 115, + "column": 25 + }, + "end": { + "line": 115, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_base", + "start": 2911, + "end": 2916, + "loc": { + "start": { + "line": 115, + "column": 26 + }, + "end": { + "line": 115, + "column": 31 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2916, + "end": 2917, + "loc": { + "start": { + "line": 115, + "column": 31 + }, + "end": { + "line": 115, + "column": 32 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 2918, + "end": 2919, + "loc": { + "start": { + "line": 115, + "column": 33 + }, + "end": { + "line": 115, + "column": 34 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 2919, + "end": 2920, + "loc": { + "start": { + "line": 115, + "column": 34 + }, + "end": { + "line": 115, + "column": 35 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2920, + "end": 2921, + "loc": { + "start": { + "line": 115, + "column": 35 + }, + "end": { + "line": 115, + "column": 36 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2922, + "end": 2923, + "loc": { + "start": { + "line": 115, + "column": 37 + }, + "end": { + "line": 115, + "column": 38 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 2923, + "end": 2924, + "loc": { + "start": { + "line": 115, + "column": 38 + }, + "end": { + "line": 115, + "column": 39 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2924, + "end": 2925, + "loc": { + "start": { + "line": 115, + "column": 39 + }, + "end": { + "line": 115, + "column": 40 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2925, + "end": 2926, + "loc": { + "start": { + "line": 115, + "column": 40 + }, + "end": { + "line": 115, + "column": 41 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2926, + "end": 2927, + "loc": { + "start": { + "line": 115, + "column": 41 + }, + "end": { + "line": 115, + "column": 42 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2929, + "end": 2930, + "loc": { + "start": { + "line": 116, + "column": 1 + }, + "end": { + "line": 116, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "has", + "start": 2933, + "end": 2936, + "loc": { + "start": { + "line": 118, + "column": 1 + }, + "end": { + "line": 118, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2936, + "end": 2937, + "loc": { + "start": { + "line": 118, + "column": 4 + }, + "end": { + "line": 118, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "x", + "start": 2937, + "end": 2938, + "loc": { + "start": { + "line": 118, + "column": 5 + }, + "end": { + "line": 118, + "column": 6 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2938, + "end": 2939, + "loc": { + "start": { + "line": 118, + "column": 6 + }, + "end": { + "line": 118, + "column": 7 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2940, + "end": 2941, + "loc": { + "start": { + "line": 118, + "column": 8 + }, + "end": { + "line": 118, + "column": 9 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 2944, + "end": 2946, + "loc": { + "start": { + "line": 119, + "column": 2 + }, + "end": { + "line": 119, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2947, + "end": 2948, + "loc": { + "start": { + "line": 119, + "column": 5 + }, + "end": { + "line": 119, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "x", + "start": 2948, + "end": 2949, + "loc": { + "start": { + "line": 119, + "column": 6 + }, + "end": { + "line": 119, + "column": 7 + } + } + }, + { + "type": { + "label": "instanceof", + "keyword": "instanceof", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": "instanceof", + "start": 2950, + "end": 2960, + "loc": { + "start": { + "line": 119, + "column": 8 + }, + "end": { + "line": 119, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 2961, + "end": 2968, + "loc": { + "start": { + "line": 119, + "column": 19 + }, + "end": { + "line": 119, + "column": 26 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2968, + "end": 2969, + "loc": { + "start": { + "line": 119, + "column": 26 + }, + "end": { + "line": 119, + "column": 27 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2970, + "end": 2976, + "loc": { + "start": { + "line": 119, + "column": 28 + }, + "end": { + "line": 119, + "column": 34 + } + } + }, + { + "type": { + "label": "true", + "keyword": "true", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "true", + "start": 2977, + "end": 2981, + "loc": { + "start": { + "line": 119, + "column": 35 + }, + "end": { + "line": 119, + "column": 39 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2981, + "end": 2982, + "loc": { + "start": { + "line": 119, + "column": 39 + }, + "end": { + "line": 119, + "column": 40 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2985, + "end": 2991, + "loc": { + "start": { + "line": 120, + "column": 2 + }, + "end": { + "line": 120, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Number", + "start": 2992, + "end": 2998, + "loc": { + "start": { + "line": 120, + "column": 9 + }, + "end": { + "line": 120, + "column": 15 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2998, + "end": 2999, + "loc": { + "start": { + "line": 120, + "column": 15 + }, + "end": { + "line": 120, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "isInteger", + "start": 2999, + "end": 3008, + "loc": { + "start": { + "line": 120, + "column": 16 + }, + "end": { + "line": 120, + "column": 25 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3008, + "end": 3009, + "loc": { + "start": { + "line": 120, + "column": 25 + }, + "end": { + "line": 120, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "x", + "start": 3009, + "end": 3010, + "loc": { + "start": { + "line": 120, + "column": 26 + }, + "end": { + "line": 120, + "column": 27 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3010, + "end": 3011, + "loc": { + "start": { + "line": 120, + "column": 27 + }, + "end": { + "line": 120, + "column": 28 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3011, + "end": 3012, + "loc": { + "start": { + "line": 120, + "column": 28 + }, + "end": { + "line": 120, + "column": 29 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3014, + "end": 3015, + "loc": { + "start": { + "line": 121, + "column": 1 + }, + "end": { + "line": 121, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "min", + "start": 3018, + "end": 3021, + "loc": { + "start": { + "line": 123, + "column": 1 + }, + "end": { + "line": 123, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3021, + "end": 3022, + "loc": { + "start": { + "line": 123, + "column": 4 + }, + "end": { + "line": 123, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 3022, + "end": 3023, + "loc": { + "start": { + "line": 123, + "column": 5 + }, + "end": { + "line": 123, + "column": 6 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3023, + "end": 3024, + "loc": { + "start": { + "line": 123, + "column": 6 + }, + "end": { + "line": 123, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 3025, + "end": 3026, + "loc": { + "start": { + "line": 123, + "column": 8 + }, + "end": { + "line": 123, + "column": 9 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3026, + "end": 3027, + "loc": { + "start": { + "line": 123, + "column": 9 + }, + "end": { + "line": 123, + "column": 10 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3028, + "end": 3029, + "loc": { + "start": { + "line": 123, + "column": 11 + }, + "end": { + "line": 123, + "column": 12 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 3032, + "end": 3038, + "loc": { + "start": { + "line": 124, + "column": 2 + }, + "end": { + "line": 124, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 3039, + "end": 3040, + "loc": { + "start": { + "line": 124, + "column": 9 + }, + "end": { + "line": 124, + "column": 10 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3040, + "end": 3041, + "loc": { + "start": { + "line": 124, + "column": 10 + }, + "end": { + "line": 124, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "le", + "start": 3041, + "end": 3043, + "loc": { + "start": { + "line": 124, + "column": 11 + }, + "end": { + "line": 124, + "column": 13 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3043, + "end": 3044, + "loc": { + "start": { + "line": 124, + "column": 13 + }, + "end": { + "line": 124, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 3044, + "end": 3045, + "loc": { + "start": { + "line": 124, + "column": 14 + }, + "end": { + "line": 124, + "column": 15 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3045, + "end": 3046, + "loc": { + "start": { + "line": 124, + "column": 15 + }, + "end": { + "line": 124, + "column": 16 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3047, + "end": 3048, + "loc": { + "start": { + "line": 124, + "column": 17 + }, + "end": { + "line": 124, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 3049, + "end": 3050, + "loc": { + "start": { + "line": 124, + "column": 19 + }, + "end": { + "line": 124, + "column": 20 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3051, + "end": 3052, + "loc": { + "start": { + "line": 124, + "column": 21 + }, + "end": { + "line": 124, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 3053, + "end": 3054, + "loc": { + "start": { + "line": 124, + "column": 23 + }, + "end": { + "line": 124, + "column": 24 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3054, + "end": 3055, + "loc": { + "start": { + "line": 124, + "column": 24 + }, + "end": { + "line": 124, + "column": 25 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3057, + "end": 3058, + "loc": { + "start": { + "line": 125, + "column": 1 + }, + "end": { + "line": 125, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "max", + "start": 3061, + "end": 3064, + "loc": { + "start": { + "line": 127, + "column": 1 + }, + "end": { + "line": 127, + "column": 4 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3064, + "end": 3065, + "loc": { + "start": { + "line": 127, + "column": 4 + }, + "end": { + "line": 127, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 3065, + "end": 3066, + "loc": { + "start": { + "line": 127, + "column": 5 + }, + "end": { + "line": 127, + "column": 6 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3066, + "end": 3067, + "loc": { + "start": { + "line": 127, + "column": 6 + }, + "end": { + "line": 127, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 3068, + "end": 3069, + "loc": { + "start": { + "line": 127, + "column": 8 + }, + "end": { + "line": 127, + "column": 9 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3069, + "end": 3070, + "loc": { + "start": { + "line": 127, + "column": 9 + }, + "end": { + "line": 127, + "column": 10 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3071, + "end": 3072, + "loc": { + "start": { + "line": 127, + "column": 11 + }, + "end": { + "line": 127, + "column": 12 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 3075, + "end": 3081, + "loc": { + "start": { + "line": 128, + "column": 2 + }, + "end": { + "line": 128, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 3082, + "end": 3083, + "loc": { + "start": { + "line": 128, + "column": 9 + }, + "end": { + "line": 128, + "column": 10 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3083, + "end": 3084, + "loc": { + "start": { + "line": 128, + "column": 10 + }, + "end": { + "line": 128, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ge", + "start": 3084, + "end": 3086, + "loc": { + "start": { + "line": 128, + "column": 11 + }, + "end": { + "line": 128, + "column": 13 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3086, + "end": 3087, + "loc": { + "start": { + "line": 128, + "column": 13 + }, + "end": { + "line": 128, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 3087, + "end": 3088, + "loc": { + "start": { + "line": 128, + "column": 14 + }, + "end": { + "line": 128, + "column": 15 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3088, + "end": 3089, + "loc": { + "start": { + "line": 128, + "column": 15 + }, + "end": { + "line": 128, + "column": 16 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3090, + "end": 3091, + "loc": { + "start": { + "line": 128, + "column": 17 + }, + "end": { + "line": 128, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "a", + "start": 3092, + "end": 3093, + "loc": { + "start": { + "line": 128, + "column": 19 + }, + "end": { + "line": 128, + "column": 20 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3094, + "end": 3095, + "loc": { + "start": { + "line": 128, + "column": 21 + }, + "end": { + "line": 128, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "b", + "start": 3096, + "end": 3097, + "loc": { + "start": { + "line": 128, + "column": 23 + }, + "end": { + "line": 128, + "column": 24 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3097, + "end": 3098, + "loc": { + "start": { + "line": 128, + "column": 24 + }, + "end": { + "line": 128, + "column": 25 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3100, + "end": 3101, + "loc": { + "start": { + "line": 129, + "column": 1 + }, + "end": { + "line": 129, + "column": 2 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3102, + "end": 3103, + "loc": { + "start": { + "line": 130, + "column": 0 + }, + "end": { + "line": 130, + "column": 1 + } + } + }, + { + "type": { + "label": "eof", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3104, + "end": 3104, + "loc": { + "start": { + "line": 131, + "column": 0 + }, + "end": { + "line": 131, + "column": 0 + } + } + } + ] +} \ No newline at end of file diff --git a/ast/source/ZZ.js.json b/ast/source/ZZ.js.json new file mode 100644 index 0000000..e5e7702 --- /dev/null +++ b/ast/source/ZZ.js.json @@ -0,0 +1,1059 @@ +{ + "type": "File", + "start": 0, + "end": 205, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 5, + "column": 0 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 205, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 5, + "column": 0 + } + }, + "sourceType": "module", + "body": [ + { + "type": "ImportDeclaration", + "start": 0, + "end": 77, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 77 + } + }, + "specifiers": [ + { + "type": "ImportSpecifier", + "start": 8, + "end": 35, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 35 + } + }, + "imported": { + "type": "Identifier", + "start": 8, + "end": 35, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 35 + }, + "identifierName": "DEFAULT_REPRESENTATION_BASE" + }, + "name": "DEFAULT_REPRESENTATION_BASE" + }, + "local": { + "type": "Identifier", + "start": 8, + "end": 35, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 35 + }, + "identifierName": "DEFAULT_REPRESENTATION_BASE" + }, + "name": "DEFAULT_REPRESENTATION_BASE" + } + } + ], + "source": { + "type": "StringLiteral", + "start": 42, + "end": 76, + "loc": { + "start": { + "line": 1, + "column": 42 + }, + "end": { + "line": 1, + "column": 76 + } + }, + "extra": { + "rawValue": "./DEFAULT_REPRESENTATION_BASE.js", + "raw": "'./DEFAULT_REPRESENTATION_BASE.js'" + }, + "value": "./DEFAULT_REPRESENTATION_BASE.js" + } + }, + { + "type": "ImportDeclaration", + "start": 78, + "end": 123, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 45 + } + }, + "specifiers": [ + { + "type": "ImportSpecifier", + "start": 86, + "end": 97, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 19 + } + }, + "imported": { + "type": "Identifier", + "start": 86, + "end": 97, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 19 + }, + "identifierName": "IntegerRing" + }, + "name": "IntegerRing" + }, + "local": { + "type": "Identifier", + "start": 86, + "end": 97, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 19 + }, + "identifierName": "IntegerRing" + }, + "name": "IntegerRing" + } + } + ], + "source": { + "type": "StringLiteral", + "start": 104, + "end": 122, + "loc": { + "start": { + "line": 2, + "column": 26 + }, + "end": { + "line": 2, + "column": 44 + } + }, + "extra": { + "rawValue": "./IntegerRing.js", + "raw": "'./IntegerRing.js'" + }, + "value": "./IntegerRing.js" + } + }, + { + "type": "ExportNamedDeclaration", + "start": 125, + "end": 204, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 4, + "column": 79 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "VariableDeclaration", + "start": 132, + "end": 204, + "loc": { + "start": { + "line": 4, + "column": 7 + }, + "end": { + "line": 4, + "column": 79 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 138, + "end": 203, + "loc": { + "start": { + "line": 4, + "column": 13 + }, + "end": { + "line": 4, + "column": 78 + } + }, + "id": { + "type": "Identifier", + "start": 138, + "end": 140, + "loc": { + "start": { + "line": 4, + "column": 13 + }, + "end": { + "line": 4, + "column": 15 + }, + "identifierName": "ZZ" + }, + "name": "ZZ" + }, + "init": { + "type": "NewExpression", + "start": 143, + "end": 203, + "loc": { + "start": { + "line": 4, + "column": 18 + }, + "end": { + "line": 4, + "column": 78 + } + }, + "callee": { + "type": "Identifier", + "start": 147, + "end": 158, + "loc": { + "start": { + "line": 4, + "column": 22 + }, + "end": { + "line": 4, + "column": 33 + }, + "identifierName": "IntegerRing" + }, + "name": "IntegerRing" + }, + "arguments": [ + { + "type": "StringLiteral", + "start": 159, + "end": 173, + "loc": { + "start": { + "line": 4, + "column": 34 + }, + "end": { + "line": 4, + "column": 48 + } + }, + "extra": { + "rawValue": "Integer Ring", + "raw": "'Integer Ring'" + }, + "value": "Integer Ring" + }, + { + "type": "Identifier", + "start": 175, + "end": 202, + "loc": { + "start": { + "line": 4, + "column": 50 + }, + "end": { + "line": 4, + "column": 77 + }, + "identifierName": "DEFAULT_REPRESENTATION_BASE" + }, + "name": "DEFAULT_REPRESENTATION_BASE" + } + ] + } + } + ], + "kind": "const", + "leadingComments": [], + "trailingComments": [] + } + } + ], + "directives": [] + }, + "comments": [], + "tokens": [ + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 0, + "end": 6, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7, + "end": 8, + "loc": { + "start": { + "line": 1, + "column": 7 + }, + "end": { + "line": 1, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "DEFAULT_REPRESENTATION_BASE", + "start": 8, + "end": 35, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 35 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 35, + "end": 36, + "loc": { + "start": { + "line": 1, + "column": 35 + }, + "end": { + "line": 1, + "column": 36 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 37, + "end": 41, + "loc": { + "start": { + "line": 1, + "column": 37 + }, + "end": { + "line": 1, + "column": 41 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./DEFAULT_REPRESENTATION_BASE.js", + "start": 42, + "end": 76, + "loc": { + "start": { + "line": 1, + "column": 42 + }, + "end": { + "line": 1, + "column": 76 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 76, + "end": 77, + "loc": { + "start": { + "line": 1, + "column": 76 + }, + "end": { + "line": 1, + "column": 77 + } + } + }, + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 78, + "end": 84, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 85, + "end": 86, + "loc": { + "start": { + "line": 2, + "column": 7 + }, + "end": { + "line": 2, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "IntegerRing", + "start": 86, + "end": 97, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 19 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 97, + "end": 98, + "loc": { + "start": { + "line": 2, + "column": 19 + }, + "end": { + "line": 2, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 99, + "end": 103, + "loc": { + "start": { + "line": 2, + "column": 21 + }, + "end": { + "line": 2, + "column": 25 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./IntegerRing.js", + "start": 104, + "end": 122, + "loc": { + "start": { + "line": 2, + "column": 26 + }, + "end": { + "line": 2, + "column": 44 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 122, + "end": 123, + "loc": { + "start": { + "line": 2, + "column": 44 + }, + "end": { + "line": 2, + "column": 45 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 125, + "end": 131, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 4, + "column": 6 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 132, + "end": 137, + "loc": { + "start": { + "line": 4, + "column": 7 + }, + "end": { + "line": 4, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ZZ", + "start": 138, + "end": 140, + "loc": { + "start": { + "line": 4, + "column": 13 + }, + "end": { + "line": 4, + "column": 15 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 141, + "end": 142, + "loc": { + "start": { + "line": 4, + "column": 16 + }, + "end": { + "line": 4, + "column": 17 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 143, + "end": 146, + "loc": { + "start": { + "line": 4, + "column": 18 + }, + "end": { + "line": 4, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "IntegerRing", + "start": 147, + "end": 158, + "loc": { + "start": { + "line": 4, + "column": 22 + }, + "end": { + "line": 4, + "column": 33 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 158, + "end": 159, + "loc": { + "start": { + "line": 4, + "column": 33 + }, + "end": { + "line": 4, + "column": 34 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "Integer Ring", + "start": 159, + "end": 173, + "loc": { + "start": { + "line": 4, + "column": 34 + }, + "end": { + "line": 4, + "column": 48 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 173, + "end": 174, + "loc": { + "start": { + "line": 4, + "column": 48 + }, + "end": { + "line": 4, + "column": 49 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "DEFAULT_REPRESENTATION_BASE", + "start": 175, + "end": 202, + "loc": { + "start": { + "line": 4, + "column": 50 + }, + "end": { + "line": 4, + "column": 77 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 202, + "end": 203, + "loc": { + "start": { + "line": 4, + "column": 77 + }, + "end": { + "line": 4, + "column": 78 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 203, + "end": 204, + "loc": { + "start": { + "line": 4, + "column": 78 + }, + "end": { + "line": 4, + "column": 79 + } + } + }, + { + "type": { + "label": "eof", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 205, + "end": 205, + "loc": { + "start": { + "line": 5, + "column": 0 + }, + "end": { + "line": 5, + "column": 0 + } + } + } + ] +} \ No newline at end of file diff --git a/ast/source/ZeroDivisionError.js.json b/ast/source/ZeroDivisionError.js.json new file mode 100644 index 0000000..54c8a67 --- /dev/null +++ b/ast/source/ZeroDivisionError.js.json @@ -0,0 +1,928 @@ +{ + "type": "File", + "start": 0, + "end": 113, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 6, + "column": 0 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 113, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 6, + "column": 0 + } + }, + "sourceType": "module", + "body": [ + { + "type": "ExportNamedDeclaration", + "start": 0, + "end": 112, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 5, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "ClassDeclaration", + "start": 7, + "end": 112, + "loc": { + "start": { + "line": 1, + "column": 7 + }, + "end": { + "line": 5, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 13, + "end": 30, + "loc": { + "start": { + "line": 1, + "column": 13 + }, + "end": { + "line": 1, + "column": 30 + }, + "identifierName": "ZeroDivisionError" + }, + "name": "ZeroDivisionError" + }, + "superClass": { + "type": "Identifier", + "start": 39, + "end": 44, + "loc": { + "start": { + "line": 1, + "column": 39 + }, + "end": { + "line": 1, + "column": 44 + }, + "identifierName": "Error" + }, + "name": "Error" + }, + "body": { + "type": "ClassBody", + "start": 45, + "end": 112, + "loc": { + "start": { + "line": 1, + "column": 45 + }, + "end": { + "line": 5, + "column": 1 + } + }, + "body": [ + { + "type": "ClassMethod", + "start": 48, + "end": 110, + "loc": { + "start": { + "line": 2, + "column": 1 + }, + "end": { + "line": 4, + "column": 2 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 48, + "end": 56, + "loc": { + "start": { + "line": 2, + "column": 1 + }, + "end": { + "line": 2, + "column": 9 + }, + "identifierName": "toString" + }, + "name": "toString" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 59, + "end": 110, + "loc": { + "start": { + "line": 2, + "column": 12 + }, + "end": { + "line": 4, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 63, + "end": 107, + "loc": { + "start": { + "line": 3, + "column": 2 + }, + "end": { + "line": 3, + "column": 46 + } + }, + "argument": { + "type": "TemplateLiteral", + "start": 70, + "end": 106, + "loc": { + "start": { + "line": 3, + "column": 9 + }, + "end": { + "line": 3, + "column": 45 + } + }, + "expressions": [ + { + "type": "MemberExpression", + "start": 92, + "end": 104, + "loc": { + "start": { + "line": 3, + "column": 31 + }, + "end": { + "line": 3, + "column": 43 + } + }, + "object": { + "type": "ThisExpression", + "start": 92, + "end": 96, + "loc": { + "start": { + "line": 3, + "column": 31 + }, + "end": { + "line": 3, + "column": 35 + } + } + }, + "property": { + "type": "Identifier", + "start": 97, + "end": 104, + "loc": { + "start": { + "line": 3, + "column": 36 + }, + "end": { + "line": 3, + "column": 43 + }, + "identifierName": "message" + }, + "name": "message" + }, + "computed": false + } + ], + "quasis": [ + { + "type": "TemplateElement", + "start": 71, + "end": 90, + "loc": { + "start": { + "line": 3, + "column": 10 + }, + "end": { + "line": 3, + "column": 29 + } + }, + "value": { + "raw": "ZeroDivisionError: ", + "cooked": "ZeroDivisionError: " + }, + "tail": false + }, + { + "type": "TemplateElement", + "start": 105, + "end": 105, + "loc": { + "start": { + "line": 3, + "column": 44 + }, + "end": { + "line": 3, + "column": 44 + } + }, + "value": { + "raw": "", + "cooked": "" + }, + "tail": true + } + ] + } + } + ], + "directives": [] + } + } + ] + }, + "leadingComments": [], + "trailingComments": [] + } + } + ], + "directives": [] + }, + "comments": [], + "tokens": [ + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 0, + "end": 6, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 6 + } + } + }, + { + "type": { + "label": "class", + "keyword": "class", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "class", + "start": 7, + "end": 12, + "loc": { + "start": { + "line": 1, + "column": 7 + }, + "end": { + "line": 1, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ZeroDivisionError", + "start": 13, + "end": 30, + "loc": { + "start": { + "line": 1, + "column": 13 + }, + "end": { + "line": 1, + "column": 30 + } + } + }, + { + "type": { + "label": "extends", + "keyword": "extends", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "extends", + "start": 31, + "end": 38, + "loc": { + "start": { + "line": 1, + "column": 31 + }, + "end": { + "line": 1, + "column": 38 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Error", + "start": 39, + "end": 44, + "loc": { + "start": { + "line": 1, + "column": 39 + }, + "end": { + "line": 1, + "column": 44 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 45, + "end": 46, + "loc": { + "start": { + "line": 1, + "column": 45 + }, + "end": { + "line": 1, + "column": 46 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "toString", + "start": 48, + "end": 56, + "loc": { + "start": { + "line": 2, + "column": 1 + }, + "end": { + "line": 2, + "column": 9 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 56, + "end": 57, + "loc": { + "start": { + "line": 2, + "column": 9 + }, + "end": { + "line": 2, + "column": 10 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 57, + "end": 58, + "loc": { + "start": { + "line": 2, + "column": 10 + }, + "end": { + "line": 2, + "column": 11 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 59, + "end": 60, + "loc": { + "start": { + "line": 2, + "column": 12 + }, + "end": { + "line": 2, + "column": 13 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 63, + "end": 69, + "loc": { + "start": { + "line": 3, + "column": 2 + }, + "end": { + "line": 3, + "column": 8 + } + } + }, + { + "type": { + "label": "`", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 70, + "end": 71, + "loc": { + "start": { + "line": 3, + "column": 9 + }, + "end": { + "line": 3, + "column": 10 + } + } + }, + { + "type": { + "label": "template", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "ZeroDivisionError: ", + "start": 71, + "end": 90, + "loc": { + "start": { + "line": 3, + "column": 10 + }, + "end": { + "line": 3, + "column": 29 + } + } + }, + { + "type": { + "label": "${", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 90, + "end": 92, + "loc": { + "start": { + "line": 3, + "column": 29 + }, + "end": { + "line": 3, + "column": 31 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 92, + "end": 96, + "loc": { + "start": { + "line": 3, + "column": 31 + }, + "end": { + "line": 3, + "column": 35 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 96, + "end": 97, + "loc": { + "start": { + "line": 3, + "column": 35 + }, + "end": { + "line": 3, + "column": 36 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "message", + "start": 97, + "end": 104, + "loc": { + "start": { + "line": 3, + "column": 36 + }, + "end": { + "line": 3, + "column": 43 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 104, + "end": 105, + "loc": { + "start": { + "line": 3, + "column": 43 + }, + "end": { + "line": 3, + "column": 44 + } + } + }, + { + "type": { + "label": "template", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "", + "start": 105, + "end": 105, + "loc": { + "start": { + "line": 3, + "column": 44 + }, + "end": { + "line": 3, + "column": 44 + } + } + }, + { + "type": { + "label": "`", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 105, + "end": 106, + "loc": { + "start": { + "line": 3, + "column": 44 + }, + "end": { + "line": 3, + "column": 45 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 106, + "end": 107, + "loc": { + "start": { + "line": 3, + "column": 45 + }, + "end": { + "line": 3, + "column": 46 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 109, + "end": 110, + "loc": { + "start": { + "line": 4, + "column": 1 + }, + "end": { + "line": 4, + "column": 2 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 111, + "end": 112, + "loc": { + "start": { + "line": 5, + "column": 0 + }, + "end": { + "line": 5, + "column": 1 + } + } + }, + { + "type": { + "label": "eof", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 113, + "end": 113, + "loc": { + "start": { + "line": 6, + "column": 0 + }, + "end": { + "line": 6, + "column": 0 + } + } + } + ] +} \ No newline at end of file diff --git a/ast/source/_from_number.js.json b/ast/source/_from_number.js.json new file mode 100644 index 0000000..0d5c457 --- /dev/null +++ b/ast/source/_from_number.js.json @@ -0,0 +1,3313 @@ +{ + "type": "File", + "start": 0, + "end": 346, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 11, + "column": 0 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 346, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 11, + "column": 0 + } + }, + "sourceType": "module", + "body": [ + { + "type": "ImportDeclaration", + "start": 0, + "end": 37, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 37 + } + }, + "specifiers": [ + { + "type": "ImportSpecifier", + "start": 8, + "end": 15, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 15 + } + }, + "imported": { + "type": "Identifier", + "start": 8, + "end": 15, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 15 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "local": { + "type": "Identifier", + "start": 8, + "end": 15, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 15 + }, + "identifierName": "Integer" + }, + "name": "Integer" + } + } + ], + "source": { + "type": "StringLiteral", + "start": 22, + "end": 36, + "loc": { + "start": { + "line": 1, + "column": 22 + }, + "end": { + "line": 1, + "column": 36 + } + }, + "extra": { + "rawValue": "./Integer.js", + "raw": "'./Integer.js'" + }, + "value": "./Integer.js" + } + }, + { + "type": "ImportDeclaration", + "start": 38, + "end": 76, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 38 + } + }, + "specifiers": [ + { + "type": "ImportSpecifier", + "start": 46, + "end": 54, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 16 + } + }, + "imported": { + "type": "Identifier", + "start": 46, + "end": 54, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 16 + }, + "identifierName": "MAX_BASE" + }, + "name": "MAX_BASE" + }, + "local": { + "type": "Identifier", + "start": 46, + "end": 54, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 16 + }, + "identifierName": "MAX_BASE" + }, + "name": "MAX_BASE" + } + } + ], + "source": { + "type": "StringLiteral", + "start": 61, + "end": 75, + "loc": { + "start": { + "line": 2, + "column": 23 + }, + "end": { + "line": 2, + "column": 37 + } + }, + "extra": { + "rawValue": "./_limits.js", + "raw": "'./_limits.js'" + }, + "value": "./_limits.js" + } + }, + { + "type": "ExportNamedDeclaration", + "start": 78, + "end": 345, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 10, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 85, + "end": 345, + "loc": { + "start": { + "line": 4, + "column": 7 + }, + "end": { + "line": 10, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 94, + "end": 106, + "loc": { + "start": { + "line": 4, + "column": 16 + }, + "end": { + "line": 4, + "column": 28 + }, + "identifierName": "_from_number" + }, + "name": "_from_number" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 107, + "end": 113, + "loc": { + "start": { + "line": 4, + "column": 29 + }, + "end": { + "line": 4, + "column": 35 + }, + "identifierName": "number" + }, + "name": "number" + } + ], + "body": { + "type": "BlockStatement", + "start": 115, + "end": 345, + "loc": { + "start": { + "line": 4, + "column": 37 + }, + "end": { + "line": 10, + "column": 1 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 118, + "end": 159, + "loc": { + "start": { + "line": 5, + "column": 1 + }, + "end": { + "line": 5, + "column": 42 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 124, + "end": 158, + "loc": { + "start": { + "line": 5, + "column": 7 + }, + "end": { + "line": 5, + "column": 41 + } + }, + "id": { + "type": "Identifier", + "start": 124, + "end": 125, + "loc": { + "start": { + "line": 5, + "column": 7 + }, + "end": { + "line": 5, + "column": 8 + }, + "identifierName": "x" + }, + "name": "x" + }, + "init": { + "type": "ConditionalExpression", + "start": 128, + "end": 158, + "loc": { + "start": { + "line": 5, + "column": 11 + }, + "end": { + "line": 5, + "column": 41 + } + }, + "test": { + "type": "BinaryExpression", + "start": 128, + "end": 139, + "loc": { + "start": { + "line": 5, + "column": 11 + }, + "end": { + "line": 5, + "column": 22 + } + }, + "left": { + "type": "Identifier", + "start": 128, + "end": 134, + "loc": { + "start": { + "line": 5, + "column": 11 + }, + "end": { + "line": 5, + "column": 17 + }, + "identifierName": "number" + }, + "name": "number" + }, + "operator": ">=", + "right": { + "type": "NumericLiteral", + "start": 138, + "end": 139, + "loc": { + "start": { + "line": 5, + "column": 21 + }, + "end": { + "line": 5, + "column": 22 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + }, + "consequent": { + "type": "Identifier", + "start": 142, + "end": 148, + "loc": { + "start": { + "line": 5, + "column": 25 + }, + "end": { + "line": 5, + "column": 31 + }, + "identifierName": "number" + }, + "name": "number" + }, + "alternate": { + "type": "UnaryExpression", + "start": 151, + "end": 158, + "loc": { + "start": { + "line": 5, + "column": 34 + }, + "end": { + "line": 5, + "column": 41 + } + }, + "operator": "-", + "prefix": true, + "argument": { + "type": "Identifier", + "start": 152, + "end": 158, + "loc": { + "start": { + "line": 5, + "column": 35 + }, + "end": { + "line": 5, + "column": 41 + }, + "identifierName": "number" + }, + "name": "number" + }, + "extra": { + "parenthesizedArgument": false + } + } + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 161, + "end": 202, + "loc": { + "start": { + "line": 6, + "column": 1 + }, + "end": { + "line": 6, + "column": 42 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 167, + "end": 201, + "loc": { + "start": { + "line": 6, + "column": 7 + }, + "end": { + "line": 6, + "column": 41 + } + }, + "id": { + "type": "Identifier", + "start": 167, + "end": 178, + "loc": { + "start": { + "line": 6, + "column": 7 + }, + "end": { + "line": 6, + "column": 18 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + }, + "init": { + "type": "ConditionalExpression", + "start": 181, + "end": 201, + "loc": { + "start": { + "line": 6, + "column": 21 + }, + "end": { + "line": 6, + "column": 41 + } + }, + "test": { + "type": "BinaryExpression", + "start": 181, + "end": 192, + "loc": { + "start": { + "line": 6, + "column": 21 + }, + "end": { + "line": 6, + "column": 32 + } + }, + "left": { + "type": "Identifier", + "start": 181, + "end": 187, + "loc": { + "start": { + "line": 6, + "column": 21 + }, + "end": { + "line": 6, + "column": 27 + }, + "identifierName": "number" + }, + "name": "number" + }, + "operator": ">=", + "right": { + "type": "NumericLiteral", + "start": 191, + "end": 192, + "loc": { + "start": { + "line": 6, + "column": 31 + }, + "end": { + "line": 6, + "column": 32 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + }, + "consequent": { + "type": "NumericLiteral", + "start": 195, + "end": 196, + "loc": { + "start": { + "line": 6, + "column": 35 + }, + "end": { + "line": 6, + "column": 36 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + "alternate": { + "type": "UnaryExpression", + "start": 199, + "end": 201, + "loc": { + "start": { + "line": 6, + "column": 39 + }, + "end": { + "line": 6, + "column": 41 + } + }, + "operator": "-", + "prefix": true, + "argument": { + "type": "NumericLiteral", + "start": 200, + "end": 201, + "loc": { + "start": { + "line": 6, + "column": 40 + }, + "end": { + "line": 6, + "column": 41 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + "extra": { + "parenthesizedArgument": false + } + } + } + } + ], + "kind": "const" + }, + { + "type": "ReturnStatement", + "start": 204, + "end": 343, + "loc": { + "start": { + "line": 7, + "column": 1 + }, + "end": { + "line": 9, + "column": 75 + } + }, + "argument": { + "type": "ConditionalExpression", + "start": 211, + "end": 342, + "loc": { + "start": { + "line": 7, + "column": 8 + }, + "end": { + "line": 9, + "column": 74 + } + }, + "test": { + "type": "BinaryExpression", + "start": 211, + "end": 223, + "loc": { + "start": { + "line": 7, + "column": 8 + }, + "end": { + "line": 7, + "column": 20 + } + }, + "left": { + "type": "Identifier", + "start": 211, + "end": 212, + "loc": { + "start": { + "line": 7, + "column": 8 + }, + "end": { + "line": 7, + "column": 9 + }, + "identifierName": "x" + }, + "name": "x" + }, + "operator": "<", + "right": { + "type": "Identifier", + "start": 215, + "end": 223, + "loc": { + "start": { + "line": 7, + "column": 12 + }, + "end": { + "line": 7, + "column": 20 + }, + "identifierName": "MAX_BASE" + }, + "name": "MAX_BASE" + } + }, + "consequent": { + "type": "NewExpression", + "start": 228, + "end": 267, + "loc": { + "start": { + "line": 8, + "column": 4 + }, + "end": { + "line": 8, + "column": 43 + } + }, + "callee": { + "type": "Identifier", + "start": 232, + "end": 239, + "loc": { + "start": { + "line": 8, + "column": 8 + }, + "end": { + "line": 8, + "column": 15 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "Identifier", + "start": 240, + "end": 248, + "loc": { + "start": { + "line": 8, + "column": 16 + }, + "end": { + "line": 8, + "column": 24 + }, + "identifierName": "MAX_BASE" + }, + "name": "MAX_BASE" + }, + { + "type": "Identifier", + "start": 250, + "end": 261, + "loc": { + "start": { + "line": 8, + "column": 26 + }, + "end": { + "line": 8, + "column": 37 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + }, + { + "type": "ArrayExpression", + "start": 263, + "end": 266, + "loc": { + "start": { + "line": 8, + "column": 39 + }, + "end": { + "line": 8, + "column": 42 + } + }, + "elements": [ + { + "type": "Identifier", + "start": 264, + "end": 265, + "loc": { + "start": { + "line": 8, + "column": 40 + }, + "end": { + "line": 8, + "column": 41 + }, + "identifierName": "x" + }, + "name": "x" + } + ] + } + ] + }, + "alternate": { + "type": "NewExpression", + "start": 272, + "end": 342, + "loc": { + "start": { + "line": 9, + "column": 4 + }, + "end": { + "line": 9, + "column": 74 + } + }, + "callee": { + "type": "Identifier", + "start": 276, + "end": 283, + "loc": { + "start": { + "line": 9, + "column": 8 + }, + "end": { + "line": 9, + "column": 15 + }, + "identifierName": "Integer" + }, + "name": "Integer" + }, + "arguments": [ + { + "type": "Identifier", + "start": 284, + "end": 292, + "loc": { + "start": { + "line": 9, + "column": 16 + }, + "end": { + "line": 9, + "column": 24 + }, + "identifierName": "MAX_BASE" + }, + "name": "MAX_BASE" + }, + { + "type": "Identifier", + "start": 294, + "end": 305, + "loc": { + "start": { + "line": 9, + "column": 26 + }, + "end": { + "line": 9, + "column": 37 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + }, + { + "type": "ArrayExpression", + "start": 307, + "end": 341, + "loc": { + "start": { + "line": 9, + "column": 39 + }, + "end": { + "line": 9, + "column": 73 + } + }, + "elements": [ + { + "type": "BinaryExpression", + "start": 308, + "end": 326, + "loc": { + "start": { + "line": 9, + "column": 40 + }, + "end": { + "line": 9, + "column": 58 + } + }, + "left": { + "type": "BinaryExpression", + "start": 309, + "end": 321, + "loc": { + "start": { + "line": 9, + "column": 41 + }, + "end": { + "line": 9, + "column": 53 + } + }, + "left": { + "type": "Identifier", + "start": 309, + "end": 310, + "loc": { + "start": { + "line": 9, + "column": 41 + }, + "end": { + "line": 9, + "column": 42 + }, + "identifierName": "x" + }, + "name": "x" + }, + "operator": "/", + "right": { + "type": "Identifier", + "start": 313, + "end": 321, + "loc": { + "start": { + "line": 9, + "column": 45 + }, + "end": { + "line": 9, + "column": 53 + }, + "identifierName": "MAX_BASE" + }, + "name": "MAX_BASE" + }, + "extra": { + "parenthesized": true, + "parenStart": 308 + } + }, + "operator": "|", + "right": { + "type": "NumericLiteral", + "start": 325, + "end": 326, + "loc": { + "start": { + "line": 9, + "column": 57 + }, + "end": { + "line": 9, + "column": 58 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + }, + { + "type": "BinaryExpression", + "start": 328, + "end": 340, + "loc": { + "start": { + "line": 9, + "column": 60 + }, + "end": { + "line": 9, + "column": 72 + } + }, + "left": { + "type": "Identifier", + "start": 328, + "end": 329, + "loc": { + "start": { + "line": 9, + "column": 60 + }, + "end": { + "line": 9, + "column": 61 + }, + "identifierName": "x" + }, + "name": "x" + }, + "operator": "%", + "right": { + "type": "Identifier", + "start": 332, + "end": 340, + "loc": { + "start": { + "line": 9, + "column": 64 + }, + "end": { + "line": 9, + "column": 72 + }, + "identifierName": "MAX_BASE" + }, + "name": "MAX_BASE" + } + } + ] + } + ] + } + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + } + ], + "directives": [] + }, + "comments": [], + "tokens": [ + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 0, + "end": 6, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7, + "end": 8, + "loc": { + "start": { + "line": 1, + "column": 7 + }, + "end": { + "line": 1, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 8, + "end": 15, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 15 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 15, + "end": 16, + "loc": { + "start": { + "line": 1, + "column": 15 + }, + "end": { + "line": 1, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 17, + "end": 21, + "loc": { + "start": { + "line": 1, + "column": 17 + }, + "end": { + "line": 1, + "column": 21 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./Integer.js", + "start": 22, + "end": 36, + "loc": { + "start": { + "line": 1, + "column": 22 + }, + "end": { + "line": 1, + "column": 36 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 36, + "end": 37, + "loc": { + "start": { + "line": 1, + "column": 36 + }, + "end": { + "line": 1, + "column": 37 + } + } + }, + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 38, + "end": 44, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 45, + "end": 46, + "loc": { + "start": { + "line": 2, + "column": 7 + }, + "end": { + "line": 2, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MAX_BASE", + "start": 46, + "end": 54, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 16 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 54, + "end": 55, + "loc": { + "start": { + "line": 2, + "column": 16 + }, + "end": { + "line": 2, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 56, + "end": 60, + "loc": { + "start": { + "line": 2, + "column": 18 + }, + "end": { + "line": 2, + "column": 22 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./_limits.js", + "start": 61, + "end": 75, + "loc": { + "start": { + "line": 2, + "column": 23 + }, + "end": { + "line": 2, + "column": 37 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 75, + "end": 76, + "loc": { + "start": { + "line": 2, + "column": 37 + }, + "end": { + "line": 2, + "column": 38 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 78, + "end": 84, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 4, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 85, + "end": 93, + "loc": { + "start": { + "line": 4, + "column": 7 + }, + "end": { + "line": 4, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_from_number", + "start": 94, + "end": 106, + "loc": { + "start": { + "line": 4, + "column": 16 + }, + "end": { + "line": 4, + "column": 28 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 106, + "end": 107, + "loc": { + "start": { + "line": 4, + "column": 28 + }, + "end": { + "line": 4, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 107, + "end": 113, + "loc": { + "start": { + "line": 4, + "column": 29 + }, + "end": { + "line": 4, + "column": 35 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 113, + "end": 114, + "loc": { + "start": { + "line": 4, + "column": 35 + }, + "end": { + "line": 4, + "column": 36 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 115, + "end": 116, + "loc": { + "start": { + "line": 4, + "column": 37 + }, + "end": { + "line": 4, + "column": 38 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 118, + "end": 123, + "loc": { + "start": { + "line": 5, + "column": 1 + }, + "end": { + "line": 5, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "x", + "start": 124, + "end": 125, + "loc": { + "start": { + "line": 5, + "column": 7 + }, + "end": { + "line": 5, + "column": 8 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 126, + "end": 127, + "loc": { + "start": { + "line": 5, + "column": 9 + }, + "end": { + "line": 5, + "column": 10 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 128, + "end": 134, + "loc": { + "start": { + "line": 5, + "column": 11 + }, + "end": { + "line": 5, + "column": 17 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": ">=", + "start": 135, + "end": 137, + "loc": { + "start": { + "line": 5, + "column": 18 + }, + "end": { + "line": 5, + "column": 20 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 138, + "end": 139, + "loc": { + "start": { + "line": 5, + "column": 21 + }, + "end": { + "line": 5, + "column": 22 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 140, + "end": 141, + "loc": { + "start": { + "line": 5, + "column": 23 + }, + "end": { + "line": 5, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 142, + "end": 148, + "loc": { + "start": { + "line": 5, + "column": 25 + }, + "end": { + "line": 5, + "column": 31 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 149, + "end": 150, + "loc": { + "start": { + "line": 5, + "column": 32 + }, + "end": { + "line": 5, + "column": 33 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 151, + "end": 152, + "loc": { + "start": { + "line": 5, + "column": 34 + }, + "end": { + "line": 5, + "column": 35 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 152, + "end": 158, + "loc": { + "start": { + "line": 5, + "column": 35 + }, + "end": { + "line": 5, + "column": 41 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 158, + "end": 159, + "loc": { + "start": { + "line": 5, + "column": 41 + }, + "end": { + "line": 5, + "column": 42 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 161, + "end": 166, + "loc": { + "start": { + "line": 6, + "column": 1 + }, + "end": { + "line": 6, + "column": 6 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 167, + "end": 178, + "loc": { + "start": { + "line": 6, + "column": 7 + }, + "end": { + "line": 6, + "column": 18 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 179, + "end": 180, + "loc": { + "start": { + "line": 6, + "column": 19 + }, + "end": { + "line": 6, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "number", + "start": 181, + "end": 187, + "loc": { + "start": { + "line": 6, + "column": 21 + }, + "end": { + "line": 6, + "column": 27 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": ">=", + "start": 188, + "end": 190, + "loc": { + "start": { + "line": 6, + "column": 28 + }, + "end": { + "line": 6, + "column": 30 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 191, + "end": 192, + "loc": { + "start": { + "line": 6, + "column": 31 + }, + "end": { + "line": 6, + "column": 32 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 193, + "end": 194, + "loc": { + "start": { + "line": 6, + "column": 33 + }, + "end": { + "line": 6, + "column": 34 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 195, + "end": 196, + "loc": { + "start": { + "line": 6, + "column": 35 + }, + "end": { + "line": 6, + "column": 36 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 197, + "end": 198, + "loc": { + "start": { + "line": 6, + "column": 37 + }, + "end": { + "line": 6, + "column": 38 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "-", + "start": 199, + "end": 200, + "loc": { + "start": { + "line": 6, + "column": 39 + }, + "end": { + "line": 6, + "column": 40 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 200, + "end": 201, + "loc": { + "start": { + "line": 6, + "column": 40 + }, + "end": { + "line": 6, + "column": 41 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 201, + "end": 202, + "loc": { + "start": { + "line": 6, + "column": 41 + }, + "end": { + "line": 6, + "column": 42 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 204, + "end": 210, + "loc": { + "start": { + "line": 7, + "column": 1 + }, + "end": { + "line": 7, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "x", + "start": 211, + "end": 212, + "loc": { + "start": { + "line": 7, + "column": 8 + }, + "end": { + "line": 7, + "column": 9 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": "<", + "start": 213, + "end": 214, + "loc": { + "start": { + "line": 7, + "column": 10 + }, + "end": { + "line": 7, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MAX_BASE", + "start": 215, + "end": 223, + "loc": { + "start": { + "line": 7, + "column": 12 + }, + "end": { + "line": 7, + "column": 20 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 226, + "end": 227, + "loc": { + "start": { + "line": 8, + "column": 2 + }, + "end": { + "line": 8, + "column": 3 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 228, + "end": 231, + "loc": { + "start": { + "line": 8, + "column": 4 + }, + "end": { + "line": 8, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 232, + "end": 239, + "loc": { + "start": { + "line": 8, + "column": 8 + }, + "end": { + "line": 8, + "column": 15 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 239, + "end": 240, + "loc": { + "start": { + "line": 8, + "column": 15 + }, + "end": { + "line": 8, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MAX_BASE", + "start": 240, + "end": 248, + "loc": { + "start": { + "line": 8, + "column": 16 + }, + "end": { + "line": 8, + "column": 24 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 248, + "end": 249, + "loc": { + "start": { + "line": 8, + "column": 24 + }, + "end": { + "line": 8, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 250, + "end": 261, + "loc": { + "start": { + "line": 8, + "column": 26 + }, + "end": { + "line": 8, + "column": 37 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 261, + "end": 262, + "loc": { + "start": { + "line": 8, + "column": 37 + }, + "end": { + "line": 8, + "column": 38 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 263, + "end": 264, + "loc": { + "start": { + "line": 8, + "column": 39 + }, + "end": { + "line": 8, + "column": 40 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "x", + "start": 264, + "end": 265, + "loc": { + "start": { + "line": 8, + "column": 40 + }, + "end": { + "line": 8, + "column": 41 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 265, + "end": 266, + "loc": { + "start": { + "line": 8, + "column": 41 + }, + "end": { + "line": 8, + "column": 42 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 266, + "end": 267, + "loc": { + "start": { + "line": 8, + "column": 42 + }, + "end": { + "line": 8, + "column": 43 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 270, + "end": 271, + "loc": { + "start": { + "line": 9, + "column": 2 + }, + "end": { + "line": 9, + "column": 3 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 272, + "end": 275, + "loc": { + "start": { + "line": 9, + "column": 4 + }, + "end": { + "line": 9, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Integer", + "start": 276, + "end": 283, + "loc": { + "start": { + "line": 9, + "column": 8 + }, + "end": { + "line": 9, + "column": 15 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 283, + "end": 284, + "loc": { + "start": { + "line": 9, + "column": 15 + }, + "end": { + "line": 9, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MAX_BASE", + "start": 284, + "end": 292, + "loc": { + "start": { + "line": 9, + "column": 16 + }, + "end": { + "line": 9, + "column": 24 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 292, + "end": 293, + "loc": { + "start": { + "line": 9, + "column": 24 + }, + "end": { + "line": 9, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 294, + "end": 305, + "loc": { + "start": { + "line": 9, + "column": 26 + }, + "end": { + "line": 9, + "column": 37 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 305, + "end": 306, + "loc": { + "start": { + "line": 9, + "column": 37 + }, + "end": { + "line": 9, + "column": 38 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 307, + "end": 308, + "loc": { + "start": { + "line": 9, + "column": 39 + }, + "end": { + "line": 9, + "column": 40 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 308, + "end": 309, + "loc": { + "start": { + "line": 9, + "column": 40 + }, + "end": { + "line": 9, + "column": 41 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "x", + "start": 309, + "end": 310, + "loc": { + "start": { + "line": 9, + "column": 41 + }, + "end": { + "line": 9, + "column": 42 + } + } + }, + { + "type": { + "label": "/", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 10, + "updateContext": null + }, + "value": "/", + "start": 311, + "end": 312, + "loc": { + "start": { + "line": 9, + "column": 43 + }, + "end": { + "line": 9, + "column": 44 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MAX_BASE", + "start": 313, + "end": 321, + "loc": { + "start": { + "line": 9, + "column": 45 + }, + "end": { + "line": 9, + "column": 53 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 321, + "end": 322, + "loc": { + "start": { + "line": 9, + "column": 53 + }, + "end": { + "line": 9, + "column": 54 + } + } + }, + { + "type": { + "label": "|", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 3, + "updateContext": null + }, + "value": "|", + "start": 323, + "end": 324, + "loc": { + "start": { + "line": 9, + "column": 55 + }, + "end": { + "line": 9, + "column": 56 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 325, + "end": 326, + "loc": { + "start": { + "line": 9, + "column": 57 + }, + "end": { + "line": 9, + "column": 58 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 326, + "end": 327, + "loc": { + "start": { + "line": 9, + "column": 58 + }, + "end": { + "line": 9, + "column": 59 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "x", + "start": 328, + "end": 329, + "loc": { + "start": { + "line": 9, + "column": 60 + }, + "end": { + "line": 9, + "column": 61 + } + } + }, + { + "type": { + "label": "%", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 10, + "updateContext": null + }, + "value": "%", + "start": 330, + "end": 331, + "loc": { + "start": { + "line": 9, + "column": 62 + }, + "end": { + "line": 9, + "column": 63 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MAX_BASE", + "start": 332, + "end": 340, + "loc": { + "start": { + "line": 9, + "column": 64 + }, + "end": { + "line": 9, + "column": 72 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 340, + "end": 341, + "loc": { + "start": { + "line": 9, + "column": 72 + }, + "end": { + "line": 9, + "column": 73 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 341, + "end": 342, + "loc": { + "start": { + "line": 9, + "column": 73 + }, + "end": { + "line": 9, + "column": 74 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 342, + "end": 343, + "loc": { + "start": { + "line": 9, + "column": 74 + }, + "end": { + "line": 9, + "column": 75 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 344, + "end": 345, + "loc": { + "start": { + "line": 10, + "column": 0 + }, + "end": { + "line": 10, + "column": 1 + } + } + }, + { + "type": { + "label": "eof", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 346, + "end": 346, + "loc": { + "start": { + "line": 11, + "column": 0 + }, + "end": { + "line": 11, + "column": 0 + } + } + } + ] +} \ No newline at end of file diff --git a/ast/source/_limits.js.json b/ast/source/_limits.js.json new file mode 100644 index 0000000..d398616 --- /dev/null +++ b/ast/source/_limits.js.json @@ -0,0 +1,1795 @@ +{ + "type": "File", + "start": 0, + "end": 196, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 5, + "column": 0 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 196, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 5, + "column": 0 + } + }, + "sourceType": "module", + "body": [ + { + "type": "ExportNamedDeclaration", + "start": 0, + "end": 50, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 50 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "VariableDeclaration", + "start": 7, + "end": 50, + "loc": { + "start": { + "line": 1, + "column": 7 + }, + "end": { + "line": 1, + "column": 50 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 13, + "end": 49, + "loc": { + "start": { + "line": 1, + "column": 13 + }, + "end": { + "line": 1, + "column": 49 + } + }, + "id": { + "type": "Identifier", + "start": 13, + "end": 23, + "loc": { + "start": { + "line": 1, + "column": 13 + }, + "end": { + "line": 1, + "column": 23 + }, + "identifierName": "MAX_NUMBER" + }, + "name": "MAX_NUMBER" + }, + "init": { + "type": "MemberExpression", + "start": 26, + "end": 49, + "loc": { + "start": { + "line": 1, + "column": 26 + }, + "end": { + "line": 1, + "column": 49 + } + }, + "object": { + "type": "Identifier", + "start": 26, + "end": 32, + "loc": { + "start": { + "line": 1, + "column": 26 + }, + "end": { + "line": 1, + "column": 32 + }, + "identifierName": "Number" + }, + "name": "Number" + }, + "property": { + "type": "Identifier", + "start": 33, + "end": 49, + "loc": { + "start": { + "line": 1, + "column": 33 + }, + "end": { + "line": 1, + "column": 49 + }, + "identifierName": "MAX_SAFE_INTEGER" + }, + "name": "MAX_SAFE_INTEGER" + }, + "computed": false + } + } + ], + "kind": "const", + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 51, + "end": 101, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 50 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "VariableDeclaration", + "start": 58, + "end": 101, + "loc": { + "start": { + "line": 2, + "column": 7 + }, + "end": { + "line": 2, + "column": 50 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 64, + "end": 100, + "loc": { + "start": { + "line": 2, + "column": 13 + }, + "end": { + "line": 2, + "column": 49 + } + }, + "id": { + "type": "Identifier", + "start": 64, + "end": 74, + "loc": { + "start": { + "line": 2, + "column": 13 + }, + "end": { + "line": 2, + "column": 23 + }, + "identifierName": "MIN_NUMBER" + }, + "name": "MIN_NUMBER" + }, + "init": { + "type": "MemberExpression", + "start": 77, + "end": 100, + "loc": { + "start": { + "line": 2, + "column": 26 + }, + "end": { + "line": 2, + "column": 49 + } + }, + "object": { + "type": "Identifier", + "start": 77, + "end": 83, + "loc": { + "start": { + "line": 2, + "column": 26 + }, + "end": { + "line": 2, + "column": 32 + }, + "identifierName": "Number" + }, + "name": "Number" + }, + "property": { + "type": "Identifier", + "start": 84, + "end": 100, + "loc": { + "start": { + "line": 2, + "column": 33 + }, + "end": { + "line": 2, + "column": 49 + }, + "identifierName": "MIN_SAFE_INTEGER" + }, + "name": "MIN_SAFE_INTEGER" + }, + "computed": false + } + } + ], + "kind": "const", + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 102, + "end": 128, + "loc": { + "start": { + "line": 3, + "column": 0 + }, + "end": { + "line": 3, + "column": 26 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "VariableDeclaration", + "start": 109, + "end": 128, + "loc": { + "start": { + "line": 3, + "column": 7 + }, + "end": { + "line": 3, + "column": 26 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 115, + "end": 127, + "loc": { + "start": { + "line": 3, + "column": 13 + }, + "end": { + "line": 3, + "column": 25 + } + }, + "id": { + "type": "Identifier", + "start": 115, + "end": 123, + "loc": { + "start": { + "line": 3, + "column": 13 + }, + "end": { + "line": 3, + "column": 21 + }, + "identifierName": "MIN_BASE" + }, + "name": "MIN_BASE" + }, + "init": { + "type": "NumericLiteral", + "start": 126, + "end": 127, + "loc": { + "start": { + "line": 3, + "column": 24 + }, + "end": { + "line": 3, + "column": 25 + } + }, + "extra": { + "rawValue": 2, + "raw": "2" + }, + "value": 2 + } + } + ], + "kind": "const", + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 129, + "end": 195, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 4, + "column": 66 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "VariableDeclaration", + "start": 136, + "end": 195, + "loc": { + "start": { + "line": 4, + "column": 7 + }, + "end": { + "line": 4, + "column": 66 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 142, + "end": 194, + "loc": { + "start": { + "line": 4, + "column": 13 + }, + "end": { + "line": 4, + "column": 65 + } + }, + "id": { + "type": "Identifier", + "start": 142, + "end": 150, + "loc": { + "start": { + "line": 4, + "column": 13 + }, + "end": { + "line": 4, + "column": 21 + }, + "identifierName": "MAX_BASE" + }, + "name": "MAX_BASE" + }, + "init": { + "type": "BinaryExpression", + "start": 153, + "end": 194, + "loc": { + "start": { + "line": 4, + "column": 24 + }, + "end": { + "line": 4, + "column": 65 + } + }, + "left": { + "type": "CallExpression", + "start": 153, + "end": 190, + "loc": { + "start": { + "line": 4, + "column": 24 + }, + "end": { + "line": 4, + "column": 61 + } + }, + "callee": { + "type": "MemberExpression", + "start": 153, + "end": 163, + "loc": { + "start": { + "line": 4, + "column": 24 + }, + "end": { + "line": 4, + "column": 34 + } + }, + "object": { + "type": "Identifier", + "start": 153, + "end": 157, + "loc": { + "start": { + "line": 4, + "column": 24 + }, + "end": { + "line": 4, + "column": 28 + }, + "identifierName": "Math" + }, + "name": "Math" + }, + "property": { + "type": "Identifier", + "start": 158, + "end": 163, + "loc": { + "start": { + "line": 4, + "column": 29 + }, + "end": { + "line": 4, + "column": 34 + }, + "identifierName": "floor" + }, + "name": "floor" + }, + "computed": false + }, + "arguments": [ + { + "type": "CallExpression", + "start": 164, + "end": 189, + "loc": { + "start": { + "line": 4, + "column": 35 + }, + "end": { + "line": 4, + "column": 60 + } + }, + "callee": { + "type": "MemberExpression", + "start": 164, + "end": 173, + "loc": { + "start": { + "line": 4, + "column": 35 + }, + "end": { + "line": 4, + "column": 44 + } + }, + "object": { + "type": "Identifier", + "start": 164, + "end": 168, + "loc": { + "start": { + "line": 4, + "column": 35 + }, + "end": { + "line": 4, + "column": 39 + }, + "identifierName": "Math" + }, + "name": "Math" + }, + "property": { + "type": "Identifier", + "start": 169, + "end": 173, + "loc": { + "start": { + "line": 4, + "column": 40 + }, + "end": { + "line": 4, + "column": 44 + }, + "identifierName": "sqrt" + }, + "name": "sqrt" + }, + "computed": false + }, + "arguments": [ + { + "type": "BinaryExpression", + "start": 174, + "end": 188, + "loc": { + "start": { + "line": 4, + "column": 45 + }, + "end": { + "line": 4, + "column": 59 + } + }, + "left": { + "type": "Identifier", + "start": 174, + "end": 184, + "loc": { + "start": { + "line": 4, + "column": 45 + }, + "end": { + "line": 4, + "column": 55 + }, + "identifierName": "MAX_NUMBER" + }, + "name": "MAX_NUMBER" + }, + "operator": "+", + "right": { + "type": "NumericLiteral", + "start": 187, + "end": 188, + "loc": { + "start": { + "line": 4, + "column": 58 + }, + "end": { + "line": 4, + "column": 59 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + } + } + ] + } + ] + }, + "operator": "|", + "right": { + "type": "NumericLiteral", + "start": 193, + "end": 194, + "loc": { + "start": { + "line": 4, + "column": 64 + }, + "end": { + "line": 4, + "column": 65 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + } + ], + "kind": "const", + "leadingComments": [], + "trailingComments": [] + } + } + ], + "directives": [] + }, + "comments": [], + "tokens": [ + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 0, + "end": 6, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 6 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 7, + "end": 12, + "loc": { + "start": { + "line": 1, + "column": 7 + }, + "end": { + "line": 1, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MAX_NUMBER", + "start": 13, + "end": 23, + "loc": { + "start": { + "line": 1, + "column": 13 + }, + "end": { + "line": 1, + "column": 23 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 24, + "end": 25, + "loc": { + "start": { + "line": 1, + "column": 24 + }, + "end": { + "line": 1, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Number", + "start": 26, + "end": 32, + "loc": { + "start": { + "line": 1, + "column": 26 + }, + "end": { + "line": 1, + "column": 32 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 32, + "end": 33, + "loc": { + "start": { + "line": 1, + "column": 32 + }, + "end": { + "line": 1, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MAX_SAFE_INTEGER", + "start": 33, + "end": 49, + "loc": { + "start": { + "line": 1, + "column": 33 + }, + "end": { + "line": 1, + "column": 49 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 49, + "end": 50, + "loc": { + "start": { + "line": 1, + "column": 49 + }, + "end": { + "line": 1, + "column": 50 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 51, + "end": 57, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 6 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 58, + "end": 63, + "loc": { + "start": { + "line": 2, + "column": 7 + }, + "end": { + "line": 2, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MIN_NUMBER", + "start": 64, + "end": 74, + "loc": { + "start": { + "line": 2, + "column": 13 + }, + "end": { + "line": 2, + "column": 23 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 75, + "end": 76, + "loc": { + "start": { + "line": 2, + "column": 24 + }, + "end": { + "line": 2, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Number", + "start": 77, + "end": 83, + "loc": { + "start": { + "line": 2, + "column": 26 + }, + "end": { + "line": 2, + "column": 32 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 83, + "end": 84, + "loc": { + "start": { + "line": 2, + "column": 32 + }, + "end": { + "line": 2, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MIN_SAFE_INTEGER", + "start": 84, + "end": 100, + "loc": { + "start": { + "line": 2, + "column": 33 + }, + "end": { + "line": 2, + "column": 49 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 100, + "end": 101, + "loc": { + "start": { + "line": 2, + "column": 49 + }, + "end": { + "line": 2, + "column": 50 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 102, + "end": 108, + "loc": { + "start": { + "line": 3, + "column": 0 + }, + "end": { + "line": 3, + "column": 6 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 109, + "end": 114, + "loc": { + "start": { + "line": 3, + "column": 7 + }, + "end": { + "line": 3, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MIN_BASE", + "start": 115, + "end": 123, + "loc": { + "start": { + "line": 3, + "column": 13 + }, + "end": { + "line": 3, + "column": 21 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 124, + "end": 125, + "loc": { + "start": { + "line": 3, + "column": 22 + }, + "end": { + "line": 3, + "column": 23 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 2, + "start": 126, + "end": 127, + "loc": { + "start": { + "line": 3, + "column": 24 + }, + "end": { + "line": 3, + "column": 25 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 127, + "end": 128, + "loc": { + "start": { + "line": 3, + "column": 25 + }, + "end": { + "line": 3, + "column": 26 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 129, + "end": 135, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 4, + "column": 6 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 136, + "end": 141, + "loc": { + "start": { + "line": 4, + "column": 7 + }, + "end": { + "line": 4, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MAX_BASE", + "start": 142, + "end": 150, + "loc": { + "start": { + "line": 4, + "column": 13 + }, + "end": { + "line": 4, + "column": 21 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 151, + "end": 152, + "loc": { + "start": { + "line": 4, + "column": 22 + }, + "end": { + "line": 4, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Math", + "start": 153, + "end": 157, + "loc": { + "start": { + "line": 4, + "column": 24 + }, + "end": { + "line": 4, + "column": 28 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 157, + "end": 158, + "loc": { + "start": { + "line": 4, + "column": 28 + }, + "end": { + "line": 4, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "floor", + "start": 158, + "end": 163, + "loc": { + "start": { + "line": 4, + "column": 29 + }, + "end": { + "line": 4, + "column": 34 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 163, + "end": 164, + "loc": { + "start": { + "line": 4, + "column": 34 + }, + "end": { + "line": 4, + "column": 35 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Math", + "start": 164, + "end": 168, + "loc": { + "start": { + "line": 4, + "column": 35 + }, + "end": { + "line": 4, + "column": 39 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 168, + "end": 169, + "loc": { + "start": { + "line": 4, + "column": 39 + }, + "end": { + "line": 4, + "column": 40 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "sqrt", + "start": 169, + "end": 173, + "loc": { + "start": { + "line": 4, + "column": 40 + }, + "end": { + "line": 4, + "column": 44 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 173, + "end": 174, + "loc": { + "start": { + "line": 4, + "column": 44 + }, + "end": { + "line": 4, + "column": 45 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MAX_NUMBER", + "start": 174, + "end": 184, + "loc": { + "start": { + "line": 4, + "column": 45 + }, + "end": { + "line": 4, + "column": 55 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "+", + "start": 185, + "end": 186, + "loc": { + "start": { + "line": 4, + "column": 56 + }, + "end": { + "line": 4, + "column": 57 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 187, + "end": 188, + "loc": { + "start": { + "line": 4, + "column": 58 + }, + "end": { + "line": 4, + "column": 59 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 188, + "end": 189, + "loc": { + "start": { + "line": 4, + "column": 59 + }, + "end": { + "line": 4, + "column": 60 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 189, + "end": 190, + "loc": { + "start": { + "line": 4, + "column": 60 + }, + "end": { + "line": 4, + "column": 61 + } + } + }, + { + "type": { + "label": "|", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 3, + "updateContext": null + }, + "value": "|", + "start": 191, + "end": 192, + "loc": { + "start": { + "line": 4, + "column": 62 + }, + "end": { + "line": 4, + "column": 63 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 193, + "end": 194, + "loc": { + "start": { + "line": 4, + "column": 64 + }, + "end": { + "line": 4, + "column": 65 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 194, + "end": 195, + "loc": { + "start": { + "line": 4, + "column": 65 + }, + "end": { + "line": 4, + "column": 66 + } + } + }, + { + "type": { + "label": "eof", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 196, + "end": 196, + "loc": { + "start": { + "line": 5, + "column": 0 + }, + "end": { + "line": 5, + "column": 0 + } + } + } + ] +} \ No newline at end of file diff --git a/ast/source/index.js.json b/ast/source/index.js.json new file mode 100644 index 0000000..9eb7d58 --- /dev/null +++ b/ast/source/index.js.json @@ -0,0 +1,1415 @@ +{ + "type": "File", + "start": 0, + "end": 282, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 9, + "column": 0 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 282, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 9, + "column": 0 + } + }, + "sourceType": "module", + "body": [ + { + "type": "ExportAllDeclaration", + "start": 0, + "end": 42, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 42 + } + }, + "source": { + "type": "StringLiteral", + "start": 14, + "end": 41, + "loc": { + "start": { + "line": 1, + "column": 14 + }, + "end": { + "line": 1, + "column": 41 + } + }, + "extra": { + "rawValue": "./DEFAULT_DISPLAY_BASE.js", + "raw": "'./DEFAULT_DISPLAY_BASE.js'" + }, + "value": "./DEFAULT_DISPLAY_BASE.js" + } + }, + { + "type": "ExportAllDeclaration", + "start": 43, + "end": 92, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 49 + } + }, + "source": { + "type": "StringLiteral", + "start": 57, + "end": 91, + "loc": { + "start": { + "line": 2, + "column": 14 + }, + "end": { + "line": 2, + "column": 48 + } + }, + "extra": { + "rawValue": "./DEFAULT_REPRESENTATION_BASE.js", + "raw": "'./DEFAULT_REPRESENTATION_BASE.js'" + }, + "value": "./DEFAULT_REPRESENTATION_BASE.js" + } + }, + { + "type": "ExportAllDeclaration", + "start": 93, + "end": 122, + "loc": { + "start": { + "line": 3, + "column": 0 + }, + "end": { + "line": 3, + "column": 29 + } + }, + "source": { + "type": "StringLiteral", + "start": 107, + "end": 121, + "loc": { + "start": { + "line": 3, + "column": 14 + }, + "end": { + "line": 3, + "column": 28 + } + }, + "extra": { + "rawValue": "./Integer.js", + "raw": "'./Integer.js'" + }, + "value": "./Integer.js" + } + }, + { + "type": "ExportAllDeclaration", + "start": 123, + "end": 156, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 4, + "column": 33 + } + }, + "source": { + "type": "StringLiteral", + "start": 137, + "end": 155, + "loc": { + "start": { + "line": 4, + "column": 14 + }, + "end": { + "line": 4, + "column": 32 + } + }, + "extra": { + "rawValue": "./IntegerRing.js", + "raw": "'./IntegerRing.js'" + }, + "value": "./IntegerRing.js" + } + }, + { + "type": "ExportAllDeclaration", + "start": 157, + "end": 181, + "loc": { + "start": { + "line": 5, + "column": 0 + }, + "end": { + "line": 5, + "column": 24 + } + }, + "source": { + "type": "StringLiteral", + "start": 171, + "end": 180, + "loc": { + "start": { + "line": 5, + "column": 14 + }, + "end": { + "line": 5, + "column": 23 + } + }, + "extra": { + "rawValue": "./ZZ.js", + "raw": "'./ZZ.js'" + }, + "value": "./ZZ.js" + } + }, + { + "type": "ExportAllDeclaration", + "start": 182, + "end": 221, + "loc": { + "start": { + "line": 6, + "column": 0 + }, + "end": { + "line": 6, + "column": 39 + } + }, + "source": { + "type": "StringLiteral", + "start": 196, + "end": 220, + "loc": { + "start": { + "line": 6, + "column": 14 + }, + "end": { + "line": 6, + "column": 38 + } + }, + "extra": { + "rawValue": "./ZeroDivisionError.js", + "raw": "'./ZeroDivisionError.js'" + }, + "value": "./ZeroDivisionError.js" + } + }, + { + "type": "ExportAllDeclaration", + "start": 222, + "end": 251, + "loc": { + "start": { + "line": 7, + "column": 0 + }, + "end": { + "line": 7, + "column": 29 + } + }, + "source": { + "type": "StringLiteral", + "start": 236, + "end": 250, + "loc": { + "start": { + "line": 7, + "column": 14 + }, + "end": { + "line": 7, + "column": 28 + } + }, + "extra": { + "rawValue": "./integer.js", + "raw": "'./integer.js'" + }, + "value": "./integer.js" + } + }, + { + "type": "ExportAllDeclaration", + "start": 252, + "end": 281, + "loc": { + "start": { + "line": 8, + "column": 0 + }, + "end": { + "line": 8, + "column": 29 + } + }, + "source": { + "type": "StringLiteral", + "start": 266, + "end": 280, + "loc": { + "start": { + "line": 8, + "column": 14 + }, + "end": { + "line": 8, + "column": 28 + } + }, + "extra": { + "rawValue": "./_limits.js", + "raw": "'./_limits.js'" + }, + "value": "./_limits.js" + } + } + ], + "directives": [] + }, + "comments": [], + "tokens": [ + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 0, + "end": 6, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 6 + } + } + }, + { + "type": { + "label": "*", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 10, + "updateContext": null + }, + "value": "*", + "start": 7, + "end": 8, + "loc": { + "start": { + "line": 1, + "column": 7 + }, + "end": { + "line": 1, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 9, + "end": 13, + "loc": { + "start": { + "line": 1, + "column": 9 + }, + "end": { + "line": 1, + "column": 13 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./DEFAULT_DISPLAY_BASE.js", + "start": 14, + "end": 41, + "loc": { + "start": { + "line": 1, + "column": 14 + }, + "end": { + "line": 1, + "column": 41 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 41, + "end": 42, + "loc": { + "start": { + "line": 1, + "column": 41 + }, + "end": { + "line": 1, + "column": 42 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 43, + "end": 49, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 6 + } + } + }, + { + "type": { + "label": "*", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 10, + "updateContext": null + }, + "value": "*", + "start": 50, + "end": 51, + "loc": { + "start": { + "line": 2, + "column": 7 + }, + "end": { + "line": 2, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 52, + "end": 56, + "loc": { + "start": { + "line": 2, + "column": 9 + }, + "end": { + "line": 2, + "column": 13 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./DEFAULT_REPRESENTATION_BASE.js", + "start": 57, + "end": 91, + "loc": { + "start": { + "line": 2, + "column": 14 + }, + "end": { + "line": 2, + "column": 48 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 91, + "end": 92, + "loc": { + "start": { + "line": 2, + "column": 48 + }, + "end": { + "line": 2, + "column": 49 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 93, + "end": 99, + "loc": { + "start": { + "line": 3, + "column": 0 + }, + "end": { + "line": 3, + "column": 6 + } + } + }, + { + "type": { + "label": "*", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 10, + "updateContext": null + }, + "value": "*", + "start": 100, + "end": 101, + "loc": { + "start": { + "line": 3, + "column": 7 + }, + "end": { + "line": 3, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 102, + "end": 106, + "loc": { + "start": { + "line": 3, + "column": 9 + }, + "end": { + "line": 3, + "column": 13 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./Integer.js", + "start": 107, + "end": 121, + "loc": { + "start": { + "line": 3, + "column": 14 + }, + "end": { + "line": 3, + "column": 28 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 121, + "end": 122, + "loc": { + "start": { + "line": 3, + "column": 28 + }, + "end": { + "line": 3, + "column": 29 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 123, + "end": 129, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 4, + "column": 6 + } + } + }, + { + "type": { + "label": "*", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 10, + "updateContext": null + }, + "value": "*", + "start": 130, + "end": 131, + "loc": { + "start": { + "line": 4, + "column": 7 + }, + "end": { + "line": 4, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 132, + "end": 136, + "loc": { + "start": { + "line": 4, + "column": 9 + }, + "end": { + "line": 4, + "column": 13 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./IntegerRing.js", + "start": 137, + "end": 155, + "loc": { + "start": { + "line": 4, + "column": 14 + }, + "end": { + "line": 4, + "column": 32 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 155, + "end": 156, + "loc": { + "start": { + "line": 4, + "column": 32 + }, + "end": { + "line": 4, + "column": 33 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 157, + "end": 163, + "loc": { + "start": { + "line": 5, + "column": 0 + }, + "end": { + "line": 5, + "column": 6 + } + } + }, + { + "type": { + "label": "*", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 10, + "updateContext": null + }, + "value": "*", + "start": 164, + "end": 165, + "loc": { + "start": { + "line": 5, + "column": 7 + }, + "end": { + "line": 5, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 166, + "end": 170, + "loc": { + "start": { + "line": 5, + "column": 9 + }, + "end": { + "line": 5, + "column": 13 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./ZZ.js", + "start": 171, + "end": 180, + "loc": { + "start": { + "line": 5, + "column": 14 + }, + "end": { + "line": 5, + "column": 23 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 180, + "end": 181, + "loc": { + "start": { + "line": 5, + "column": 23 + }, + "end": { + "line": 5, + "column": 24 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 182, + "end": 188, + "loc": { + "start": { + "line": 6, + "column": 0 + }, + "end": { + "line": 6, + "column": 6 + } + } + }, + { + "type": { + "label": "*", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 10, + "updateContext": null + }, + "value": "*", + "start": 189, + "end": 190, + "loc": { + "start": { + "line": 6, + "column": 7 + }, + "end": { + "line": 6, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 191, + "end": 195, + "loc": { + "start": { + "line": 6, + "column": 9 + }, + "end": { + "line": 6, + "column": 13 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./ZeroDivisionError.js", + "start": 196, + "end": 220, + "loc": { + "start": { + "line": 6, + "column": 14 + }, + "end": { + "line": 6, + "column": 38 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 220, + "end": 221, + "loc": { + "start": { + "line": 6, + "column": 38 + }, + "end": { + "line": 6, + "column": 39 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 222, + "end": 228, + "loc": { + "start": { + "line": 7, + "column": 0 + }, + "end": { + "line": 7, + "column": 6 + } + } + }, + { + "type": { + "label": "*", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 10, + "updateContext": null + }, + "value": "*", + "start": 229, + "end": 230, + "loc": { + "start": { + "line": 7, + "column": 7 + }, + "end": { + "line": 7, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 231, + "end": 235, + "loc": { + "start": { + "line": 7, + "column": 9 + }, + "end": { + "line": 7, + "column": 13 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./integer.js", + "start": 236, + "end": 250, + "loc": { + "start": { + "line": 7, + "column": 14 + }, + "end": { + "line": 7, + "column": 28 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 250, + "end": 251, + "loc": { + "start": { + "line": 7, + "column": 28 + }, + "end": { + "line": 7, + "column": 29 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 252, + "end": 258, + "loc": { + "start": { + "line": 8, + "column": 0 + }, + "end": { + "line": 8, + "column": 6 + } + } + }, + { + "type": { + "label": "*", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 10, + "updateContext": null + }, + "value": "*", + "start": 259, + "end": 260, + "loc": { + "start": { + "line": 8, + "column": 7 + }, + "end": { + "line": 8, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 261, + "end": 265, + "loc": { + "start": { + "line": 8, + "column": 9 + }, + "end": { + "line": 8, + "column": 13 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./_limits.js", + "start": 266, + "end": 280, + "loc": { + "start": { + "line": 8, + "column": 14 + }, + "end": { + "line": 8, + "column": 28 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 280, + "end": 281, + "loc": { + "start": { + "line": 8, + "column": 28 + }, + "end": { + "line": 8, + "column": 29 + } + } + }, + { + "type": { + "label": "eof", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 282, + "end": 282, + "loc": { + "start": { + "line": 9, + "column": 0 + }, + "end": { + "line": 9, + "column": 0 + } + } + } + ] +} \ No newline at end of file diff --git a/ast/source/integer.js.json b/ast/source/integer.js.json new file mode 100644 index 0000000..2333724 --- /dev/null +++ b/ast/source/integer.js.json @@ -0,0 +1,22838 @@ +{ + "type": "File", + "start": 0, + "end": 2394, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 135, + "column": 0 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 2394, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 135, + "column": 0 + } + }, + "sourceType": "module", + "body": [ + { + "type": "ImportDeclaration", + "start": 0, + "end": 63, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 63 + } + }, + "specifiers": [ + { + "type": "ImportSpecifier", + "start": 8, + "end": 28, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 28 + } + }, + "imported": { + "type": "Identifier", + "start": 8, + "end": 28, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 28 + }, + "identifierName": "DEFAULT_DISPLAY_BASE" + }, + "name": "DEFAULT_DISPLAY_BASE" + }, + "local": { + "type": "Identifier", + "start": 8, + "end": 28, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 28 + }, + "identifierName": "DEFAULT_DISPLAY_BASE" + }, + "name": "DEFAULT_DISPLAY_BASE" + } + } + ], + "source": { + "type": "StringLiteral", + "start": 35, + "end": 62, + "loc": { + "start": { + "line": 1, + "column": 35 + }, + "end": { + "line": 1, + "column": 62 + } + }, + "extra": { + "rawValue": "./DEFAULT_DISPLAY_BASE.js", + "raw": "'./DEFAULT_DISPLAY_BASE.js'" + }, + "value": "./DEFAULT_DISPLAY_BASE.js" + } + }, + { + "type": "ImportDeclaration", + "start": 64, + "end": 91, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 27 + } + }, + "specifiers": [ + { + "type": "ImportSpecifier", + "start": 72, + "end": 74, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 10 + } + }, + "imported": { + "type": "Identifier", + "start": 72, + "end": 74, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 10 + }, + "identifierName": "ZZ" + }, + "name": "ZZ" + }, + "local": { + "type": "Identifier", + "start": 72, + "end": 74, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 10 + }, + "identifierName": "ZZ" + }, + "name": "ZZ" + } + } + ], + "source": { + "type": "StringLiteral", + "start": 81, + "end": 90, + "loc": { + "start": { + "line": 2, + "column": 17 + }, + "end": { + "line": 2, + "column": 26 + } + }, + "extra": { + "rawValue": "./ZZ.js", + "raw": "'./ZZ.js'" + }, + "value": "./ZZ.js" + } + }, + { + "type": "ExportNamedDeclaration", + "start": 93, + "end": 134, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 6, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 100, + "end": 134, + "loc": { + "start": { + "line": 4, + "column": 7 + }, + "end": { + "line": 6, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 109, + "end": 111, + "loc": { + "start": { + "line": 4, + "column": 16 + }, + "end": { + "line": 4, + "column": 18 + }, + "identifierName": "$0" + }, + "name": "$0" + }, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 114, + "end": 134, + "loc": { + "start": { + "line": 4, + "column": 21 + }, + "end": { + "line": 6, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 117, + "end": 132, + "loc": { + "start": { + "line": 5, + "column": 1 + }, + "end": { + "line": 5, + "column": 16 + } + }, + "argument": { + "type": "CallExpression", + "start": 124, + "end": 131, + "loc": { + "start": { + "line": 5, + "column": 8 + }, + "end": { + "line": 5, + "column": 15 + } + }, + "callee": { + "type": "MemberExpression", + "start": 124, + "end": 129, + "loc": { + "start": { + "line": 5, + "column": 8 + }, + "end": { + "line": 5, + "column": 13 + } + }, + "object": { + "type": "Identifier", + "start": 124, + "end": 126, + "loc": { + "start": { + "line": 5, + "column": 8 + }, + "end": { + "line": 5, + "column": 10 + }, + "identifierName": "ZZ" + }, + "name": "ZZ" + }, + "property": { + "type": "Identifier", + "start": 127, + "end": 129, + "loc": { + "start": { + "line": 5, + "column": 11 + }, + "end": { + "line": 5, + "column": 13 + }, + "identifierName": "$0" + }, + "name": "$0" + }, + "computed": false + }, + "arguments": [] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 136, + "end": 177, + "loc": { + "start": { + "line": 8, + "column": 0 + }, + "end": { + "line": 10, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 143, + "end": 177, + "loc": { + "start": { + "line": 8, + "column": 7 + }, + "end": { + "line": 10, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 152, + "end": 154, + "loc": { + "start": { + "line": 8, + "column": 16 + }, + "end": { + "line": 8, + "column": 18 + }, + "identifierName": "$1" + }, + "name": "$1" + }, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 157, + "end": 177, + "loc": { + "start": { + "line": 8, + "column": 21 + }, + "end": { + "line": 10, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 160, + "end": 175, + "loc": { + "start": { + "line": 9, + "column": 1 + }, + "end": { + "line": 9, + "column": 16 + } + }, + "argument": { + "type": "CallExpression", + "start": 167, + "end": 174, + "loc": { + "start": { + "line": 9, + "column": 8 + }, + "end": { + "line": 9, + "column": 15 + } + }, + "callee": { + "type": "MemberExpression", + "start": 167, + "end": 172, + "loc": { + "start": { + "line": 9, + "column": 8 + }, + "end": { + "line": 9, + "column": 13 + } + }, + "object": { + "type": "Identifier", + "start": 167, + "end": 169, + "loc": { + "start": { + "line": 9, + "column": 8 + }, + "end": { + "line": 9, + "column": 10 + }, + "identifierName": "ZZ" + }, + "name": "ZZ" + }, + "property": { + "type": "Identifier", + "start": 170, + "end": 172, + "loc": { + "start": { + "line": 9, + "column": 11 + }, + "end": { + "line": 9, + "column": 13 + }, + "identifierName": "$1" + }, + "name": "$1" + }, + "computed": false + }, + "arguments": [] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 179, + "end": 222, + "loc": { + "start": { + "line": 12, + "column": 0 + }, + "end": { + "line": 14, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 186, + "end": 222, + "loc": { + "start": { + "line": 12, + "column": 7 + }, + "end": { + "line": 14, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 195, + "end": 198, + "loc": { + "start": { + "line": 12, + "column": 16 + }, + "end": { + "line": 12, + "column": 19 + }, + "identifierName": "$_1" + }, + "name": "$_1" + }, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 201, + "end": 222, + "loc": { + "start": { + "line": 12, + "column": 22 + }, + "end": { + "line": 14, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 204, + "end": 220, + "loc": { + "start": { + "line": 13, + "column": 1 + }, + "end": { + "line": 13, + "column": 17 + } + }, + "argument": { + "type": "CallExpression", + "start": 211, + "end": 219, + "loc": { + "start": { + "line": 13, + "column": 8 + }, + "end": { + "line": 13, + "column": 16 + } + }, + "callee": { + "type": "MemberExpression", + "start": 211, + "end": 217, + "loc": { + "start": { + "line": 13, + "column": 8 + }, + "end": { + "line": 13, + "column": 14 + } + }, + "object": { + "type": "Identifier", + "start": 211, + "end": 213, + "loc": { + "start": { + "line": 13, + "column": 8 + }, + "end": { + "line": 13, + "column": 10 + }, + "identifierName": "ZZ" + }, + "name": "ZZ" + }, + "property": { + "type": "Identifier", + "start": 214, + "end": 217, + "loc": { + "start": { + "line": 13, + "column": 11 + }, + "end": { + "line": 13, + "column": 14 + }, + "identifierName": "$_1" + }, + "name": "$_1" + }, + "computed": false + }, + "arguments": [] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 224, + "end": 336, + "loc": { + "start": { + "line": 16, + "column": 0 + }, + "end": { + "line": 18, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 231, + "end": 336, + "loc": { + "start": { + "line": 16, + "column": 7 + }, + "end": { + "line": 18, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 240, + "end": 245, + "loc": { + "start": { + "line": 16, + "column": 16 + }, + "end": { + "line": 16, + "column": 21 + }, + "identifierName": "parse" + }, + "name": "parse" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 246, + "end": 252, + "loc": { + "start": { + "line": 16, + "column": 22 + }, + "end": { + "line": 16, + "column": 28 + }, + "identifierName": "object" + }, + "name": "object" + }, + { + "type": "AssignmentPattern", + "start": 254, + "end": 270, + "loc": { + "start": { + "line": 16, + "column": 30 + }, + "end": { + "line": 16, + "column": 46 + } + }, + "left": { + "type": "Identifier", + "start": 254, + "end": 258, + "loc": { + "start": { + "line": 16, + "column": 30 + }, + "end": { + "line": 16, + "column": 34 + }, + "identifierName": "base" + }, + "name": "base" + }, + "right": { + "type": "Identifier", + "start": 261, + "end": 270, + "loc": { + "start": { + "line": 16, + "column": 37 + }, + "end": { + "line": 16, + "column": 46 + }, + "identifierName": "undefined" + }, + "name": "undefined" + } + }, + { + "type": "AssignmentPattern", + "start": 272, + "end": 287, + "loc": { + "start": { + "line": 16, + "column": 48 + }, + "end": { + "line": 16, + "column": 63 + } + }, + "left": { + "type": "Identifier", + "start": 272, + "end": 283, + "loc": { + "start": { + "line": 16, + "column": 48 + }, + "end": { + "line": 16, + "column": 59 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + }, + "right": { + "type": "NumericLiteral", + "start": 286, + "end": 287, + "loc": { + "start": { + "line": 16, + "column": 62 + }, + "end": { + "line": 16, + "column": 63 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + ], + "body": { + "type": "BlockStatement", + "start": 289, + "end": 336, + "loc": { + "start": { + "line": 16, + "column": 65 + }, + "end": { + "line": 18, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 292, + "end": 334, + "loc": { + "start": { + "line": 17, + "column": 1 + }, + "end": { + "line": 17, + "column": 43 + } + }, + "argument": { + "type": "CallExpression", + "start": 299, + "end": 333, + "loc": { + "start": { + "line": 17, + "column": 8 + }, + "end": { + "line": 17, + "column": 42 + } + }, + "callee": { + "type": "MemberExpression", + "start": 299, + "end": 306, + "loc": { + "start": { + "line": 17, + "column": 8 + }, + "end": { + "line": 17, + "column": 15 + } + }, + "object": { + "type": "Identifier", + "start": 299, + "end": 301, + "loc": { + "start": { + "line": 17, + "column": 8 + }, + "end": { + "line": 17, + "column": 10 + }, + "identifierName": "ZZ" + }, + "name": "ZZ" + }, + "property": { + "type": "Identifier", + "start": 302, + "end": 306, + "loc": { + "start": { + "line": 17, + "column": 11 + }, + "end": { + "line": 17, + "column": 15 + }, + "identifierName": "from" + }, + "name": "from" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 307, + "end": 313, + "loc": { + "start": { + "line": 17, + "column": 16 + }, + "end": { + "line": 17, + "column": 22 + }, + "identifierName": "object" + }, + "name": "object" + }, + { + "type": "Identifier", + "start": 315, + "end": 319, + "loc": { + "start": { + "line": 17, + "column": 24 + }, + "end": { + "line": 17, + "column": 28 + }, + "identifierName": "base" + }, + "name": "base" + }, + { + "type": "Identifier", + "start": 321, + "end": 332, + "loc": { + "start": { + "line": 17, + "column": 30 + }, + "end": { + "line": 17, + "column": 41 + }, + "identifierName": "is_negative" + }, + "name": "is_negative" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 338, + "end": 437, + "loc": { + "start": { + "line": 20, + "column": 0 + }, + "end": { + "line": 22, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 345, + "end": 437, + "loc": { + "start": { + "line": 20, + "column": 7 + }, + "end": { + "line": 22, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 354, + "end": 363, + "loc": { + "start": { + "line": 20, + "column": 16 + }, + "end": { + "line": 20, + "column": 25 + }, + "identifierName": "stringify" + }, + "name": "stringify" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 364, + "end": 371, + "loc": { + "start": { + "line": 20, + "column": 26 + }, + "end": { + "line": 20, + "column": 33 + }, + "identifierName": "integer" + }, + "name": "integer" + }, + { + "type": "AssignmentPattern", + "start": 373, + "end": 400, + "loc": { + "start": { + "line": 20, + "column": 35 + }, + "end": { + "line": 20, + "column": 62 + } + }, + "left": { + "type": "Identifier", + "start": 373, + "end": 377, + "loc": { + "start": { + "line": 20, + "column": 35 + }, + "end": { + "line": 20, + "column": 39 + }, + "identifierName": "base" + }, + "name": "base" + }, + "right": { + "type": "Identifier", + "start": 380, + "end": 400, + "loc": { + "start": { + "line": 20, + "column": 42 + }, + "end": { + "line": 20, + "column": 62 + }, + "identifierName": "DEFAULT_DISPLAY_BASE" + }, + "name": "DEFAULT_DISPLAY_BASE" + } + } + ], + "body": { + "type": "BlockStatement", + "start": 402, + "end": 437, + "loc": { + "start": { + "line": 20, + "column": 64 + }, + "end": { + "line": 22, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 405, + "end": 435, + "loc": { + "start": { + "line": 21, + "column": 1 + }, + "end": { + "line": 21, + "column": 31 + } + }, + "argument": { + "type": "CallExpression", + "start": 412, + "end": 434, + "loc": { + "start": { + "line": 21, + "column": 8 + }, + "end": { + "line": 21, + "column": 30 + } + }, + "callee": { + "type": "MemberExpression", + "start": 412, + "end": 428, + "loc": { + "start": { + "line": 21, + "column": 8 + }, + "end": { + "line": 21, + "column": 24 + } + }, + "object": { + "type": "Identifier", + "start": 412, + "end": 419, + "loc": { + "start": { + "line": 21, + "column": 8 + }, + "end": { + "line": 21, + "column": 15 + }, + "identifierName": "integer" + }, + "name": "integer" + }, + "property": { + "type": "Identifier", + "start": 420, + "end": 428, + "loc": { + "start": { + "line": 21, + "column": 16 + }, + "end": { + "line": 21, + "column": 24 + }, + "identifierName": "toString" + }, + "name": "toString" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 429, + "end": 433, + "loc": { + "start": { + "line": 21, + "column": 25 + }, + "end": { + "line": 21, + "column": 29 + }, + "identifierName": "base" + }, + "name": "base" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 439, + "end": 504, + "loc": { + "start": { + "line": 24, + "column": 0 + }, + "end": { + "line": 26, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 446, + "end": 504, + "loc": { + "start": { + "line": 24, + "column": 7 + }, + "end": { + "line": 26, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 455, + "end": 458, + "loc": { + "start": { + "line": 24, + "column": 16 + }, + "end": { + "line": 24, + "column": 19 + }, + "identifierName": "add" + }, + "name": "add" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 459, + "end": 464, + "loc": { + "start": { + "line": 24, + "column": 20 + }, + "end": { + "line": 24, + "column": 25 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 466, + "end": 472, + "loc": { + "start": { + "line": 24, + "column": 27 + }, + "end": { + "line": 24, + "column": 33 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 474, + "end": 504, + "loc": { + "start": { + "line": 24, + "column": 35 + }, + "end": { + "line": 26, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 477, + "end": 502, + "loc": { + "start": { + "line": 25, + "column": 1 + }, + "end": { + "line": 25, + "column": 26 + } + }, + "argument": { + "type": "CallExpression", + "start": 484, + "end": 501, + "loc": { + "start": { + "line": 25, + "column": 8 + }, + "end": { + "line": 25, + "column": 25 + } + }, + "callee": { + "type": "MemberExpression", + "start": 484, + "end": 493, + "loc": { + "start": { + "line": 25, + "column": 8 + }, + "end": { + "line": 25, + "column": 17 + } + }, + "object": { + "type": "Identifier", + "start": 484, + "end": 489, + "loc": { + "start": { + "line": 25, + "column": 8 + }, + "end": { + "line": 25, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 490, + "end": 493, + "loc": { + "start": { + "line": 25, + "column": 14 + }, + "end": { + "line": 25, + "column": 17 + }, + "identifierName": "add" + }, + "name": "add" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 494, + "end": 500, + "loc": { + "start": { + "line": 25, + "column": 18 + }, + "end": { + "line": 25, + "column": 24 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 506, + "end": 573, + "loc": { + "start": { + "line": 28, + "column": 0 + }, + "end": { + "line": 30, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 513, + "end": 573, + "loc": { + "start": { + "line": 28, + "column": 7 + }, + "end": { + "line": 30, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 522, + "end": 526, + "loc": { + "start": { + "line": 28, + "column": 16 + }, + "end": { + "line": 28, + "column": 20 + }, + "identifierName": "iadd" + }, + "name": "iadd" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 527, + "end": 532, + "loc": { + "start": { + "line": 28, + "column": 21 + }, + "end": { + "line": 28, + "column": 26 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 534, + "end": 540, + "loc": { + "start": { + "line": 28, + "column": 28 + }, + "end": { + "line": 28, + "column": 34 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 542, + "end": 573, + "loc": { + "start": { + "line": 28, + "column": 36 + }, + "end": { + "line": 30, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 545, + "end": 571, + "loc": { + "start": { + "line": 29, + "column": 1 + }, + "end": { + "line": 29, + "column": 27 + } + }, + "argument": { + "type": "CallExpression", + "start": 552, + "end": 570, + "loc": { + "start": { + "line": 29, + "column": 8 + }, + "end": { + "line": 29, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 552, + "end": 562, + "loc": { + "start": { + "line": 29, + "column": 8 + }, + "end": { + "line": 29, + "column": 18 + } + }, + "object": { + "type": "Identifier", + "start": 552, + "end": 557, + "loc": { + "start": { + "line": 29, + "column": 8 + }, + "end": { + "line": 29, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 558, + "end": 562, + "loc": { + "start": { + "line": 29, + "column": 14 + }, + "end": { + "line": 29, + "column": 18 + }, + "identifierName": "iadd" + }, + "name": "iadd" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 563, + "end": 569, + "loc": { + "start": { + "line": 29, + "column": 19 + }, + "end": { + "line": 29, + "column": 25 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 575, + "end": 640, + "loc": { + "start": { + "line": 32, + "column": 0 + }, + "end": { + "line": 34, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 582, + "end": 640, + "loc": { + "start": { + "line": 32, + "column": 7 + }, + "end": { + "line": 34, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 591, + "end": 594, + "loc": { + "start": { + "line": 32, + "column": 16 + }, + "end": { + "line": 32, + "column": 19 + }, + "identifierName": "sub" + }, + "name": "sub" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 595, + "end": 600, + "loc": { + "start": { + "line": 32, + "column": 20 + }, + "end": { + "line": 32, + "column": 25 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 602, + "end": 608, + "loc": { + "start": { + "line": 32, + "column": 27 + }, + "end": { + "line": 32, + "column": 33 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 610, + "end": 640, + "loc": { + "start": { + "line": 32, + "column": 35 + }, + "end": { + "line": 34, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 613, + "end": 638, + "loc": { + "start": { + "line": 33, + "column": 1 + }, + "end": { + "line": 33, + "column": 26 + } + }, + "argument": { + "type": "CallExpression", + "start": 620, + "end": 637, + "loc": { + "start": { + "line": 33, + "column": 8 + }, + "end": { + "line": 33, + "column": 25 + } + }, + "callee": { + "type": "MemberExpression", + "start": 620, + "end": 629, + "loc": { + "start": { + "line": 33, + "column": 8 + }, + "end": { + "line": 33, + "column": 17 + } + }, + "object": { + "type": "Identifier", + "start": 620, + "end": 625, + "loc": { + "start": { + "line": 33, + "column": 8 + }, + "end": { + "line": 33, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 626, + "end": 629, + "loc": { + "start": { + "line": 33, + "column": 14 + }, + "end": { + "line": 33, + "column": 17 + }, + "identifierName": "sub" + }, + "name": "sub" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 630, + "end": 636, + "loc": { + "start": { + "line": 33, + "column": 18 + }, + "end": { + "line": 33, + "column": 24 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 642, + "end": 709, + "loc": { + "start": { + "line": 36, + "column": 0 + }, + "end": { + "line": 38, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 649, + "end": 709, + "loc": { + "start": { + "line": 36, + "column": 7 + }, + "end": { + "line": 38, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 658, + "end": 662, + "loc": { + "start": { + "line": 36, + "column": 16 + }, + "end": { + "line": 36, + "column": 20 + }, + "identifierName": "isub" + }, + "name": "isub" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 663, + "end": 668, + "loc": { + "start": { + "line": 36, + "column": 21 + }, + "end": { + "line": 36, + "column": 26 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 670, + "end": 676, + "loc": { + "start": { + "line": 36, + "column": 28 + }, + "end": { + "line": 36, + "column": 34 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 678, + "end": 709, + "loc": { + "start": { + "line": 36, + "column": 36 + }, + "end": { + "line": 38, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 681, + "end": 707, + "loc": { + "start": { + "line": 37, + "column": 1 + }, + "end": { + "line": 37, + "column": 27 + } + }, + "argument": { + "type": "CallExpression", + "start": 688, + "end": 706, + "loc": { + "start": { + "line": 37, + "column": 8 + }, + "end": { + "line": 37, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 688, + "end": 698, + "loc": { + "start": { + "line": 37, + "column": 8 + }, + "end": { + "line": 37, + "column": 18 + } + }, + "object": { + "type": "Identifier", + "start": 688, + "end": 693, + "loc": { + "start": { + "line": 37, + "column": 8 + }, + "end": { + "line": 37, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 694, + "end": 698, + "loc": { + "start": { + "line": 37, + "column": 14 + }, + "end": { + "line": 37, + "column": 18 + }, + "identifierName": "isub" + }, + "name": "isub" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 699, + "end": 705, + "loc": { + "start": { + "line": 37, + "column": 19 + }, + "end": { + "line": 37, + "column": 25 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 711, + "end": 776, + "loc": { + "start": { + "line": 40, + "column": 0 + }, + "end": { + "line": 42, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 718, + "end": 776, + "loc": { + "start": { + "line": 40, + "column": 7 + }, + "end": { + "line": 42, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 727, + "end": 730, + "loc": { + "start": { + "line": 40, + "column": 16 + }, + "end": { + "line": 40, + "column": 19 + }, + "identifierName": "mul" + }, + "name": "mul" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 731, + "end": 736, + "loc": { + "start": { + "line": 40, + "column": 20 + }, + "end": { + "line": 40, + "column": 25 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 738, + "end": 744, + "loc": { + "start": { + "line": 40, + "column": 27 + }, + "end": { + "line": 40, + "column": 33 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 746, + "end": 776, + "loc": { + "start": { + "line": 40, + "column": 35 + }, + "end": { + "line": 42, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 749, + "end": 774, + "loc": { + "start": { + "line": 41, + "column": 1 + }, + "end": { + "line": 41, + "column": 26 + } + }, + "argument": { + "type": "CallExpression", + "start": 756, + "end": 773, + "loc": { + "start": { + "line": 41, + "column": 8 + }, + "end": { + "line": 41, + "column": 25 + } + }, + "callee": { + "type": "MemberExpression", + "start": 756, + "end": 765, + "loc": { + "start": { + "line": 41, + "column": 8 + }, + "end": { + "line": 41, + "column": 17 + } + }, + "object": { + "type": "Identifier", + "start": 756, + "end": 761, + "loc": { + "start": { + "line": 41, + "column": 8 + }, + "end": { + "line": 41, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 762, + "end": 765, + "loc": { + "start": { + "line": 41, + "column": 14 + }, + "end": { + "line": 41, + "column": 17 + }, + "identifierName": "mul" + }, + "name": "mul" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 766, + "end": 772, + "loc": { + "start": { + "line": 41, + "column": 18 + }, + "end": { + "line": 41, + "column": 24 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 778, + "end": 845, + "loc": { + "start": { + "line": 44, + "column": 0 + }, + "end": { + "line": 46, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 785, + "end": 845, + "loc": { + "start": { + "line": 44, + "column": 7 + }, + "end": { + "line": 46, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 794, + "end": 798, + "loc": { + "start": { + "line": 44, + "column": 16 + }, + "end": { + "line": 44, + "column": 20 + }, + "identifierName": "imul" + }, + "name": "imul" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 799, + "end": 804, + "loc": { + "start": { + "line": 44, + "column": 21 + }, + "end": { + "line": 44, + "column": 26 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 806, + "end": 812, + "loc": { + "start": { + "line": 44, + "column": 28 + }, + "end": { + "line": 44, + "column": 34 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 814, + "end": 845, + "loc": { + "start": { + "line": 44, + "column": 36 + }, + "end": { + "line": 46, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 817, + "end": 843, + "loc": { + "start": { + "line": 45, + "column": 1 + }, + "end": { + "line": 45, + "column": 27 + } + }, + "argument": { + "type": "CallExpression", + "start": 824, + "end": 842, + "loc": { + "start": { + "line": 45, + "column": 8 + }, + "end": { + "line": 45, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 824, + "end": 834, + "loc": { + "start": { + "line": 45, + "column": 8 + }, + "end": { + "line": 45, + "column": 18 + } + }, + "object": { + "type": "Identifier", + "start": 824, + "end": 829, + "loc": { + "start": { + "line": 45, + "column": 8 + }, + "end": { + "line": 45, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 830, + "end": 834, + "loc": { + "start": { + "line": 45, + "column": 14 + }, + "end": { + "line": 45, + "column": 18 + }, + "identifierName": "imul" + }, + "name": "imul" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 835, + "end": 841, + "loc": { + "start": { + "line": 45, + "column": 19 + }, + "end": { + "line": 45, + "column": 25 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 847, + "end": 912, + "loc": { + "start": { + "line": 48, + "column": 0 + }, + "end": { + "line": 50, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 854, + "end": 912, + "loc": { + "start": { + "line": 48, + "column": 7 + }, + "end": { + "line": 50, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 863, + "end": 866, + "loc": { + "start": { + "line": 48, + "column": 16 + }, + "end": { + "line": 48, + "column": 19 + }, + "identifierName": "pow" + }, + "name": "pow" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 867, + "end": 872, + "loc": { + "start": { + "line": 48, + "column": 20 + }, + "end": { + "line": 48, + "column": 25 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 874, + "end": 880, + "loc": { + "start": { + "line": 48, + "column": 27 + }, + "end": { + "line": 48, + "column": 33 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 882, + "end": 912, + "loc": { + "start": { + "line": 48, + "column": 35 + }, + "end": { + "line": 50, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 885, + "end": 910, + "loc": { + "start": { + "line": 49, + "column": 1 + }, + "end": { + "line": 49, + "column": 26 + } + }, + "argument": { + "type": "CallExpression", + "start": 892, + "end": 909, + "loc": { + "start": { + "line": 49, + "column": 8 + }, + "end": { + "line": 49, + "column": 25 + } + }, + "callee": { + "type": "MemberExpression", + "start": 892, + "end": 901, + "loc": { + "start": { + "line": 49, + "column": 8 + }, + "end": { + "line": 49, + "column": 17 + } + }, + "object": { + "type": "Identifier", + "start": 892, + "end": 897, + "loc": { + "start": { + "line": 49, + "column": 8 + }, + "end": { + "line": 49, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 898, + "end": 901, + "loc": { + "start": { + "line": 49, + "column": 14 + }, + "end": { + "line": 49, + "column": 17 + }, + "identifierName": "pow" + }, + "name": "pow" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 902, + "end": 908, + "loc": { + "start": { + "line": 49, + "column": 18 + }, + "end": { + "line": 49, + "column": 24 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 914, + "end": 981, + "loc": { + "start": { + "line": 52, + "column": 0 + }, + "end": { + "line": 54, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 921, + "end": 981, + "loc": { + "start": { + "line": 52, + "column": 7 + }, + "end": { + "line": 54, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 930, + "end": 934, + "loc": { + "start": { + "line": 52, + "column": 16 + }, + "end": { + "line": 52, + "column": 20 + }, + "identifierName": "ipow" + }, + "name": "ipow" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 935, + "end": 940, + "loc": { + "start": { + "line": 52, + "column": 21 + }, + "end": { + "line": 52, + "column": 26 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 942, + "end": 948, + "loc": { + "start": { + "line": 52, + "column": 28 + }, + "end": { + "line": 52, + "column": 34 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 950, + "end": 981, + "loc": { + "start": { + "line": 52, + "column": 36 + }, + "end": { + "line": 54, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 953, + "end": 979, + "loc": { + "start": { + "line": 53, + "column": 1 + }, + "end": { + "line": 53, + "column": 27 + } + }, + "argument": { + "type": "CallExpression", + "start": 960, + "end": 978, + "loc": { + "start": { + "line": 53, + "column": 8 + }, + "end": { + "line": 53, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 960, + "end": 970, + "loc": { + "start": { + "line": 53, + "column": 8 + }, + "end": { + "line": 53, + "column": 18 + } + }, + "object": { + "type": "Identifier", + "start": 960, + "end": 965, + "loc": { + "start": { + "line": 53, + "column": 8 + }, + "end": { + "line": 53, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 966, + "end": 970, + "loc": { + "start": { + "line": 53, + "column": 14 + }, + "end": { + "line": 53, + "column": 18 + }, + "identifierName": "ipow" + }, + "name": "ipow" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 971, + "end": 977, + "loc": { + "start": { + "line": 53, + "column": 19 + }, + "end": { + "line": 53, + "column": 25 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 983, + "end": 1048, + "loc": { + "start": { + "line": 56, + "column": 0 + }, + "end": { + "line": 58, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 990, + "end": 1048, + "loc": { + "start": { + "line": 56, + "column": 7 + }, + "end": { + "line": 58, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 999, + "end": 1002, + "loc": { + "start": { + "line": 56, + "column": 16 + }, + "end": { + "line": 56, + "column": 19 + }, + "identifierName": "div" + }, + "name": "div" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 1003, + "end": 1008, + "loc": { + "start": { + "line": 56, + "column": 20 + }, + "end": { + "line": 56, + "column": 25 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 1010, + "end": 1016, + "loc": { + "start": { + "line": 56, + "column": 27 + }, + "end": { + "line": 56, + "column": 33 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 1018, + "end": 1048, + "loc": { + "start": { + "line": 56, + "column": 35 + }, + "end": { + "line": 58, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 1021, + "end": 1046, + "loc": { + "start": { + "line": 57, + "column": 1 + }, + "end": { + "line": 57, + "column": 26 + } + }, + "argument": { + "type": "CallExpression", + "start": 1028, + "end": 1045, + "loc": { + "start": { + "line": 57, + "column": 8 + }, + "end": { + "line": 57, + "column": 25 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1028, + "end": 1037, + "loc": { + "start": { + "line": 57, + "column": 8 + }, + "end": { + "line": 57, + "column": 17 + } + }, + "object": { + "type": "Identifier", + "start": 1028, + "end": 1033, + "loc": { + "start": { + "line": 57, + "column": 8 + }, + "end": { + "line": 57, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 1034, + "end": 1037, + "loc": { + "start": { + "line": 57, + "column": 14 + }, + "end": { + "line": 57, + "column": 17 + }, + "identifierName": "div" + }, + "name": "div" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 1038, + "end": 1044, + "loc": { + "start": { + "line": 57, + "column": 18 + }, + "end": { + "line": 57, + "column": 24 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 1050, + "end": 1117, + "loc": { + "start": { + "line": 60, + "column": 0 + }, + "end": { + "line": 62, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 1057, + "end": 1117, + "loc": { + "start": { + "line": 60, + "column": 7 + }, + "end": { + "line": 62, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 1066, + "end": 1070, + "loc": { + "start": { + "line": 60, + "column": 16 + }, + "end": { + "line": 60, + "column": 20 + }, + "identifierName": "idiv" + }, + "name": "idiv" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 1071, + "end": 1076, + "loc": { + "start": { + "line": 60, + "column": 21 + }, + "end": { + "line": 60, + "column": 26 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 1078, + "end": 1084, + "loc": { + "start": { + "line": 60, + "column": 28 + }, + "end": { + "line": 60, + "column": 34 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 1086, + "end": 1117, + "loc": { + "start": { + "line": 60, + "column": 36 + }, + "end": { + "line": 62, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 1089, + "end": 1115, + "loc": { + "start": { + "line": 61, + "column": 1 + }, + "end": { + "line": 61, + "column": 27 + } + }, + "argument": { + "type": "CallExpression", + "start": 1096, + "end": 1114, + "loc": { + "start": { + "line": 61, + "column": 8 + }, + "end": { + "line": 61, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1096, + "end": 1106, + "loc": { + "start": { + "line": 61, + "column": 8 + }, + "end": { + "line": 61, + "column": 18 + } + }, + "object": { + "type": "Identifier", + "start": 1096, + "end": 1101, + "loc": { + "start": { + "line": 61, + "column": 8 + }, + "end": { + "line": 61, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 1102, + "end": 1106, + "loc": { + "start": { + "line": 61, + "column": 14 + }, + "end": { + "line": 61, + "column": 18 + }, + "identifierName": "idiv" + }, + "name": "idiv" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 1107, + "end": 1113, + "loc": { + "start": { + "line": 61, + "column": 19 + }, + "end": { + "line": 61, + "column": 25 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 1119, + "end": 1184, + "loc": { + "start": { + "line": 64, + "column": 0 + }, + "end": { + "line": 66, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 1126, + "end": 1184, + "loc": { + "start": { + "line": 64, + "column": 7 + }, + "end": { + "line": 66, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 1135, + "end": 1138, + "loc": { + "start": { + "line": 64, + "column": 16 + }, + "end": { + "line": 64, + "column": 19 + }, + "identifierName": "mod" + }, + "name": "mod" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 1139, + "end": 1144, + "loc": { + "start": { + "line": 64, + "column": 20 + }, + "end": { + "line": 64, + "column": 25 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 1146, + "end": 1152, + "loc": { + "start": { + "line": 64, + "column": 27 + }, + "end": { + "line": 64, + "column": 33 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 1154, + "end": 1184, + "loc": { + "start": { + "line": 64, + "column": 35 + }, + "end": { + "line": 66, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 1157, + "end": 1182, + "loc": { + "start": { + "line": 65, + "column": 1 + }, + "end": { + "line": 65, + "column": 26 + } + }, + "argument": { + "type": "CallExpression", + "start": 1164, + "end": 1181, + "loc": { + "start": { + "line": 65, + "column": 8 + }, + "end": { + "line": 65, + "column": 25 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1164, + "end": 1173, + "loc": { + "start": { + "line": 65, + "column": 8 + }, + "end": { + "line": 65, + "column": 17 + } + }, + "object": { + "type": "Identifier", + "start": 1164, + "end": 1169, + "loc": { + "start": { + "line": 65, + "column": 8 + }, + "end": { + "line": 65, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 1170, + "end": 1173, + "loc": { + "start": { + "line": 65, + "column": 14 + }, + "end": { + "line": 65, + "column": 17 + }, + "identifierName": "mod" + }, + "name": "mod" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 1174, + "end": 1180, + "loc": { + "start": { + "line": 65, + "column": 18 + }, + "end": { + "line": 65, + "column": 24 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 1186, + "end": 1253, + "loc": { + "start": { + "line": 68, + "column": 0 + }, + "end": { + "line": 70, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 1193, + "end": 1253, + "loc": { + "start": { + "line": 68, + "column": 7 + }, + "end": { + "line": 70, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 1202, + "end": 1206, + "loc": { + "start": { + "line": 68, + "column": 16 + }, + "end": { + "line": 68, + "column": 20 + }, + "identifierName": "imod" + }, + "name": "imod" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 1207, + "end": 1212, + "loc": { + "start": { + "line": 68, + "column": 21 + }, + "end": { + "line": 68, + "column": 26 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 1214, + "end": 1220, + "loc": { + "start": { + "line": 68, + "column": 28 + }, + "end": { + "line": 68, + "column": 34 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 1222, + "end": 1253, + "loc": { + "start": { + "line": 68, + "column": 36 + }, + "end": { + "line": 70, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 1225, + "end": 1251, + "loc": { + "start": { + "line": 69, + "column": 1 + }, + "end": { + "line": 69, + "column": 27 + } + }, + "argument": { + "type": "CallExpression", + "start": 1232, + "end": 1250, + "loc": { + "start": { + "line": 69, + "column": 8 + }, + "end": { + "line": 69, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1232, + "end": 1242, + "loc": { + "start": { + "line": 69, + "column": 8 + }, + "end": { + "line": 69, + "column": 18 + } + }, + "object": { + "type": "Identifier", + "start": 1232, + "end": 1237, + "loc": { + "start": { + "line": 69, + "column": 8 + }, + "end": { + "line": 69, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 1238, + "end": 1242, + "loc": { + "start": { + "line": 69, + "column": 14 + }, + "end": { + "line": 69, + "column": 18 + }, + "identifierName": "imod" + }, + "name": "imod" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 1243, + "end": 1249, + "loc": { + "start": { + "line": 69, + "column": 19 + }, + "end": { + "line": 69, + "column": 25 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 1255, + "end": 1326, + "loc": { + "start": { + "line": 72, + "column": 0 + }, + "end": { + "line": 74, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 1262, + "end": 1326, + "loc": { + "start": { + "line": 72, + "column": 7 + }, + "end": { + "line": 74, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 1271, + "end": 1277, + "loc": { + "start": { + "line": 72, + "column": 16 + }, + "end": { + "line": 72, + "column": 22 + }, + "identifierName": "divmod" + }, + "name": "divmod" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 1278, + "end": 1283, + "loc": { + "start": { + "line": 72, + "column": 23 + }, + "end": { + "line": 72, + "column": 28 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 1285, + "end": 1291, + "loc": { + "start": { + "line": 72, + "column": 30 + }, + "end": { + "line": 72, + "column": 36 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 1293, + "end": 1326, + "loc": { + "start": { + "line": 72, + "column": 38 + }, + "end": { + "line": 74, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 1296, + "end": 1324, + "loc": { + "start": { + "line": 73, + "column": 1 + }, + "end": { + "line": 73, + "column": 29 + } + }, + "argument": { + "type": "CallExpression", + "start": 1303, + "end": 1323, + "loc": { + "start": { + "line": 73, + "column": 8 + }, + "end": { + "line": 73, + "column": 28 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1303, + "end": 1315, + "loc": { + "start": { + "line": 73, + "column": 8 + }, + "end": { + "line": 73, + "column": 20 + } + }, + "object": { + "type": "Identifier", + "start": 1303, + "end": 1308, + "loc": { + "start": { + "line": 73, + "column": 8 + }, + "end": { + "line": 73, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 1309, + "end": 1315, + "loc": { + "start": { + "line": 73, + "column": 14 + }, + "end": { + "line": 73, + "column": 20 + }, + "identifierName": "divmod" + }, + "name": "divmod" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 1316, + "end": 1322, + "loc": { + "start": { + "line": 73, + "column": 21 + }, + "end": { + "line": 73, + "column": 27 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 1328, + "end": 1401, + "loc": { + "start": { + "line": 76, + "column": 0 + }, + "end": { + "line": 78, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 1335, + "end": 1401, + "loc": { + "start": { + "line": 76, + "column": 7 + }, + "end": { + "line": 78, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 1344, + "end": 1351, + "loc": { + "start": { + "line": 76, + "column": 16 + }, + "end": { + "line": 76, + "column": 23 + }, + "identifierName": "idivmod" + }, + "name": "idivmod" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 1352, + "end": 1357, + "loc": { + "start": { + "line": 76, + "column": 24 + }, + "end": { + "line": 76, + "column": 29 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 1359, + "end": 1365, + "loc": { + "start": { + "line": 76, + "column": 31 + }, + "end": { + "line": 76, + "column": 37 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 1367, + "end": 1401, + "loc": { + "start": { + "line": 76, + "column": 39 + }, + "end": { + "line": 78, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 1370, + "end": 1399, + "loc": { + "start": { + "line": 77, + "column": 1 + }, + "end": { + "line": 77, + "column": 30 + } + }, + "argument": { + "type": "CallExpression", + "start": 1377, + "end": 1398, + "loc": { + "start": { + "line": 77, + "column": 8 + }, + "end": { + "line": 77, + "column": 29 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1377, + "end": 1390, + "loc": { + "start": { + "line": 77, + "column": 8 + }, + "end": { + "line": 77, + "column": 21 + } + }, + "object": { + "type": "Identifier", + "start": 1377, + "end": 1382, + "loc": { + "start": { + "line": 77, + "column": 8 + }, + "end": { + "line": 77, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 1383, + "end": 1390, + "loc": { + "start": { + "line": 77, + "column": 14 + }, + "end": { + "line": 77, + "column": 21 + }, + "identifierName": "idivmod" + }, + "name": "idivmod" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 1391, + "end": 1397, + "loc": { + "start": { + "line": 77, + "column": 22 + }, + "end": { + "line": 77, + "column": 28 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 1403, + "end": 1470, + "loc": { + "start": { + "line": 80, + "column": 0 + }, + "end": { + "line": 82, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 1410, + "end": 1470, + "loc": { + "start": { + "line": 80, + "column": 7 + }, + "end": { + "line": 82, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 1419, + "end": 1423, + "loc": { + "start": { + "line": 80, + "column": 16 + }, + "end": { + "line": 80, + "column": 20 + }, + "identifierName": "addn" + }, + "name": "addn" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 1424, + "end": 1429, + "loc": { + "start": { + "line": 80, + "column": 21 + }, + "end": { + "line": 80, + "column": 26 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 1431, + "end": 1437, + "loc": { + "start": { + "line": 80, + "column": 28 + }, + "end": { + "line": 80, + "column": 34 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 1439, + "end": 1470, + "loc": { + "start": { + "line": 80, + "column": 36 + }, + "end": { + "line": 82, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 1442, + "end": 1468, + "loc": { + "start": { + "line": 81, + "column": 1 + }, + "end": { + "line": 81, + "column": 27 + } + }, + "argument": { + "type": "CallExpression", + "start": 1449, + "end": 1467, + "loc": { + "start": { + "line": 81, + "column": 8 + }, + "end": { + "line": 81, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1449, + "end": 1459, + "loc": { + "start": { + "line": 81, + "column": 8 + }, + "end": { + "line": 81, + "column": 18 + } + }, + "object": { + "type": "Identifier", + "start": 1449, + "end": 1454, + "loc": { + "start": { + "line": 81, + "column": 8 + }, + "end": { + "line": 81, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 1455, + "end": 1459, + "loc": { + "start": { + "line": 81, + "column": 14 + }, + "end": { + "line": 81, + "column": 18 + }, + "identifierName": "addn" + }, + "name": "addn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 1460, + "end": 1466, + "loc": { + "start": { + "line": 81, + "column": 19 + }, + "end": { + "line": 81, + "column": 25 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 1472, + "end": 1541, + "loc": { + "start": { + "line": 84, + "column": 0 + }, + "end": { + "line": 86, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 1479, + "end": 1541, + "loc": { + "start": { + "line": 84, + "column": 7 + }, + "end": { + "line": 86, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 1488, + "end": 1493, + "loc": { + "start": { + "line": 84, + "column": 16 + }, + "end": { + "line": 84, + "column": 21 + }, + "identifierName": "iaddn" + }, + "name": "iaddn" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 1494, + "end": 1499, + "loc": { + "start": { + "line": 84, + "column": 22 + }, + "end": { + "line": 84, + "column": 27 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 1501, + "end": 1507, + "loc": { + "start": { + "line": 84, + "column": 29 + }, + "end": { + "line": 84, + "column": 35 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 1509, + "end": 1541, + "loc": { + "start": { + "line": 84, + "column": 37 + }, + "end": { + "line": 86, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 1512, + "end": 1539, + "loc": { + "start": { + "line": 85, + "column": 1 + }, + "end": { + "line": 85, + "column": 28 + } + }, + "argument": { + "type": "CallExpression", + "start": 1519, + "end": 1538, + "loc": { + "start": { + "line": 85, + "column": 8 + }, + "end": { + "line": 85, + "column": 27 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1519, + "end": 1530, + "loc": { + "start": { + "line": 85, + "column": 8 + }, + "end": { + "line": 85, + "column": 19 + } + }, + "object": { + "type": "Identifier", + "start": 1519, + "end": 1524, + "loc": { + "start": { + "line": 85, + "column": 8 + }, + "end": { + "line": 85, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 1525, + "end": 1530, + "loc": { + "start": { + "line": 85, + "column": 14 + }, + "end": { + "line": 85, + "column": 19 + }, + "identifierName": "iaddn" + }, + "name": "iaddn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 1531, + "end": 1537, + "loc": { + "start": { + "line": 85, + "column": 20 + }, + "end": { + "line": 85, + "column": 26 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 1543, + "end": 1610, + "loc": { + "start": { + "line": 88, + "column": 0 + }, + "end": { + "line": 90, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 1550, + "end": 1610, + "loc": { + "start": { + "line": 88, + "column": 7 + }, + "end": { + "line": 90, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 1559, + "end": 1563, + "loc": { + "start": { + "line": 88, + "column": 16 + }, + "end": { + "line": 88, + "column": 20 + }, + "identifierName": "subn" + }, + "name": "subn" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 1564, + "end": 1569, + "loc": { + "start": { + "line": 88, + "column": 21 + }, + "end": { + "line": 88, + "column": 26 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 1571, + "end": 1577, + "loc": { + "start": { + "line": 88, + "column": 28 + }, + "end": { + "line": 88, + "column": 34 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 1579, + "end": 1610, + "loc": { + "start": { + "line": 88, + "column": 36 + }, + "end": { + "line": 90, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 1582, + "end": 1608, + "loc": { + "start": { + "line": 89, + "column": 1 + }, + "end": { + "line": 89, + "column": 27 + } + }, + "argument": { + "type": "CallExpression", + "start": 1589, + "end": 1607, + "loc": { + "start": { + "line": 89, + "column": 8 + }, + "end": { + "line": 89, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1589, + "end": 1599, + "loc": { + "start": { + "line": 89, + "column": 8 + }, + "end": { + "line": 89, + "column": 18 + } + }, + "object": { + "type": "Identifier", + "start": 1589, + "end": 1594, + "loc": { + "start": { + "line": 89, + "column": 8 + }, + "end": { + "line": 89, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 1595, + "end": 1599, + "loc": { + "start": { + "line": 89, + "column": 14 + }, + "end": { + "line": 89, + "column": 18 + }, + "identifierName": "subn" + }, + "name": "subn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 1600, + "end": 1606, + "loc": { + "start": { + "line": 89, + "column": 19 + }, + "end": { + "line": 89, + "column": 25 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 1612, + "end": 1681, + "loc": { + "start": { + "line": 92, + "column": 0 + }, + "end": { + "line": 94, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 1619, + "end": 1681, + "loc": { + "start": { + "line": 92, + "column": 7 + }, + "end": { + "line": 94, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 1628, + "end": 1633, + "loc": { + "start": { + "line": 92, + "column": 16 + }, + "end": { + "line": 92, + "column": 21 + }, + "identifierName": "isubn" + }, + "name": "isubn" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 1634, + "end": 1639, + "loc": { + "start": { + "line": 92, + "column": 22 + }, + "end": { + "line": 92, + "column": 27 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 1641, + "end": 1647, + "loc": { + "start": { + "line": 92, + "column": 29 + }, + "end": { + "line": 92, + "column": 35 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 1649, + "end": 1681, + "loc": { + "start": { + "line": 92, + "column": 37 + }, + "end": { + "line": 94, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 1652, + "end": 1679, + "loc": { + "start": { + "line": 93, + "column": 1 + }, + "end": { + "line": 93, + "column": 28 + } + }, + "argument": { + "type": "CallExpression", + "start": 1659, + "end": 1678, + "loc": { + "start": { + "line": 93, + "column": 8 + }, + "end": { + "line": 93, + "column": 27 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1659, + "end": 1670, + "loc": { + "start": { + "line": 93, + "column": 8 + }, + "end": { + "line": 93, + "column": 19 + } + }, + "object": { + "type": "Identifier", + "start": 1659, + "end": 1664, + "loc": { + "start": { + "line": 93, + "column": 8 + }, + "end": { + "line": 93, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 1665, + "end": 1670, + "loc": { + "start": { + "line": 93, + "column": 14 + }, + "end": { + "line": 93, + "column": 19 + }, + "identifierName": "isubn" + }, + "name": "isubn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 1671, + "end": 1677, + "loc": { + "start": { + "line": 93, + "column": 20 + }, + "end": { + "line": 93, + "column": 26 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 1683, + "end": 1750, + "loc": { + "start": { + "line": 96, + "column": 0 + }, + "end": { + "line": 98, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 1690, + "end": 1750, + "loc": { + "start": { + "line": 96, + "column": 7 + }, + "end": { + "line": 98, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 1699, + "end": 1703, + "loc": { + "start": { + "line": 96, + "column": 16 + }, + "end": { + "line": 96, + "column": 20 + }, + "identifierName": "muln" + }, + "name": "muln" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 1704, + "end": 1709, + "loc": { + "start": { + "line": 96, + "column": 21 + }, + "end": { + "line": 96, + "column": 26 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 1711, + "end": 1717, + "loc": { + "start": { + "line": 96, + "column": 28 + }, + "end": { + "line": 96, + "column": 34 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 1719, + "end": 1750, + "loc": { + "start": { + "line": 96, + "column": 36 + }, + "end": { + "line": 98, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 1722, + "end": 1748, + "loc": { + "start": { + "line": 97, + "column": 1 + }, + "end": { + "line": 97, + "column": 27 + } + }, + "argument": { + "type": "CallExpression", + "start": 1729, + "end": 1747, + "loc": { + "start": { + "line": 97, + "column": 8 + }, + "end": { + "line": 97, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1729, + "end": 1739, + "loc": { + "start": { + "line": 97, + "column": 8 + }, + "end": { + "line": 97, + "column": 18 + } + }, + "object": { + "type": "Identifier", + "start": 1729, + "end": 1734, + "loc": { + "start": { + "line": 97, + "column": 8 + }, + "end": { + "line": 97, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 1735, + "end": 1739, + "loc": { + "start": { + "line": 97, + "column": 14 + }, + "end": { + "line": 97, + "column": 18 + }, + "identifierName": "muln" + }, + "name": "muln" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 1740, + "end": 1746, + "loc": { + "start": { + "line": 97, + "column": 19 + }, + "end": { + "line": 97, + "column": 25 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 1752, + "end": 1821, + "loc": { + "start": { + "line": 100, + "column": 0 + }, + "end": { + "line": 102, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 1759, + "end": 1821, + "loc": { + "start": { + "line": 100, + "column": 7 + }, + "end": { + "line": 102, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 1768, + "end": 1773, + "loc": { + "start": { + "line": 100, + "column": 16 + }, + "end": { + "line": 100, + "column": 21 + }, + "identifierName": "imuln" + }, + "name": "imuln" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 1774, + "end": 1779, + "loc": { + "start": { + "line": 100, + "column": 22 + }, + "end": { + "line": 100, + "column": 27 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 1781, + "end": 1787, + "loc": { + "start": { + "line": 100, + "column": 29 + }, + "end": { + "line": 100, + "column": 35 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 1789, + "end": 1821, + "loc": { + "start": { + "line": 100, + "column": 37 + }, + "end": { + "line": 102, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 1792, + "end": 1819, + "loc": { + "start": { + "line": 101, + "column": 1 + }, + "end": { + "line": 101, + "column": 28 + } + }, + "argument": { + "type": "CallExpression", + "start": 1799, + "end": 1818, + "loc": { + "start": { + "line": 101, + "column": 8 + }, + "end": { + "line": 101, + "column": 27 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1799, + "end": 1810, + "loc": { + "start": { + "line": 101, + "column": 8 + }, + "end": { + "line": 101, + "column": 19 + } + }, + "object": { + "type": "Identifier", + "start": 1799, + "end": 1804, + "loc": { + "start": { + "line": 101, + "column": 8 + }, + "end": { + "line": 101, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 1805, + "end": 1810, + "loc": { + "start": { + "line": 101, + "column": 14 + }, + "end": { + "line": 101, + "column": 19 + }, + "identifierName": "imuln" + }, + "name": "imuln" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 1811, + "end": 1817, + "loc": { + "start": { + "line": 101, + "column": 20 + }, + "end": { + "line": 101, + "column": 26 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 1823, + "end": 1890, + "loc": { + "start": { + "line": 104, + "column": 0 + }, + "end": { + "line": 106, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 1830, + "end": 1890, + "loc": { + "start": { + "line": 104, + "column": 7 + }, + "end": { + "line": 106, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 1839, + "end": 1843, + "loc": { + "start": { + "line": 104, + "column": 16 + }, + "end": { + "line": 104, + "column": 20 + }, + "identifierName": "pown" + }, + "name": "pown" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 1844, + "end": 1849, + "loc": { + "start": { + "line": 104, + "column": 21 + }, + "end": { + "line": 104, + "column": 26 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 1851, + "end": 1857, + "loc": { + "start": { + "line": 104, + "column": 28 + }, + "end": { + "line": 104, + "column": 34 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 1859, + "end": 1890, + "loc": { + "start": { + "line": 104, + "column": 36 + }, + "end": { + "line": 106, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 1862, + "end": 1888, + "loc": { + "start": { + "line": 105, + "column": 1 + }, + "end": { + "line": 105, + "column": 27 + } + }, + "argument": { + "type": "CallExpression", + "start": 1869, + "end": 1887, + "loc": { + "start": { + "line": 105, + "column": 8 + }, + "end": { + "line": 105, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1869, + "end": 1879, + "loc": { + "start": { + "line": 105, + "column": 8 + }, + "end": { + "line": 105, + "column": 18 + } + }, + "object": { + "type": "Identifier", + "start": 1869, + "end": 1874, + "loc": { + "start": { + "line": 105, + "column": 8 + }, + "end": { + "line": 105, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 1875, + "end": 1879, + "loc": { + "start": { + "line": 105, + "column": 14 + }, + "end": { + "line": 105, + "column": 18 + }, + "identifierName": "pown" + }, + "name": "pown" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 1880, + "end": 1886, + "loc": { + "start": { + "line": 105, + "column": 19 + }, + "end": { + "line": 105, + "column": 25 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 1892, + "end": 1961, + "loc": { + "start": { + "line": 108, + "column": 0 + }, + "end": { + "line": 110, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 1899, + "end": 1961, + "loc": { + "start": { + "line": 108, + "column": 7 + }, + "end": { + "line": 110, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 1908, + "end": 1913, + "loc": { + "start": { + "line": 108, + "column": 16 + }, + "end": { + "line": 108, + "column": 21 + }, + "identifierName": "ipown" + }, + "name": "ipown" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 1914, + "end": 1919, + "loc": { + "start": { + "line": 108, + "column": 22 + }, + "end": { + "line": 108, + "column": 27 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 1921, + "end": 1927, + "loc": { + "start": { + "line": 108, + "column": 29 + }, + "end": { + "line": 108, + "column": 35 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 1929, + "end": 1961, + "loc": { + "start": { + "line": 108, + "column": 37 + }, + "end": { + "line": 110, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 1932, + "end": 1959, + "loc": { + "start": { + "line": 109, + "column": 1 + }, + "end": { + "line": 109, + "column": 28 + } + }, + "argument": { + "type": "CallExpression", + "start": 1939, + "end": 1958, + "loc": { + "start": { + "line": 109, + "column": 8 + }, + "end": { + "line": 109, + "column": 27 + } + }, + "callee": { + "type": "MemberExpression", + "start": 1939, + "end": 1950, + "loc": { + "start": { + "line": 109, + "column": 8 + }, + "end": { + "line": 109, + "column": 19 + } + }, + "object": { + "type": "Identifier", + "start": 1939, + "end": 1944, + "loc": { + "start": { + "line": 109, + "column": 8 + }, + "end": { + "line": 109, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 1945, + "end": 1950, + "loc": { + "start": { + "line": 109, + "column": 14 + }, + "end": { + "line": 109, + "column": 19 + }, + "identifierName": "ipown" + }, + "name": "ipown" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 1951, + "end": 1957, + "loc": { + "start": { + "line": 109, + "column": 20 + }, + "end": { + "line": 109, + "column": 26 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 1963, + "end": 2030, + "loc": { + "start": { + "line": 112, + "column": 0 + }, + "end": { + "line": 114, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 1970, + "end": 2030, + "loc": { + "start": { + "line": 112, + "column": 7 + }, + "end": { + "line": 114, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 1979, + "end": 1983, + "loc": { + "start": { + "line": 112, + "column": 16 + }, + "end": { + "line": 112, + "column": 20 + }, + "identifierName": "divn" + }, + "name": "divn" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 1984, + "end": 1989, + "loc": { + "start": { + "line": 112, + "column": 21 + }, + "end": { + "line": 112, + "column": 26 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 1991, + "end": 1997, + "loc": { + "start": { + "line": 112, + "column": 28 + }, + "end": { + "line": 112, + "column": 34 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 1999, + "end": 2030, + "loc": { + "start": { + "line": 112, + "column": 36 + }, + "end": { + "line": 114, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 2002, + "end": 2028, + "loc": { + "start": { + "line": 113, + "column": 1 + }, + "end": { + "line": 113, + "column": 27 + } + }, + "argument": { + "type": "CallExpression", + "start": 2009, + "end": 2027, + "loc": { + "start": { + "line": 113, + "column": 8 + }, + "end": { + "line": 113, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2009, + "end": 2019, + "loc": { + "start": { + "line": 113, + "column": 8 + }, + "end": { + "line": 113, + "column": 18 + } + }, + "object": { + "type": "Identifier", + "start": 2009, + "end": 2014, + "loc": { + "start": { + "line": 113, + "column": 8 + }, + "end": { + "line": 113, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 2015, + "end": 2019, + "loc": { + "start": { + "line": 113, + "column": 14 + }, + "end": { + "line": 113, + "column": 18 + }, + "identifierName": "divn" + }, + "name": "divn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 2020, + "end": 2026, + "loc": { + "start": { + "line": 113, + "column": 19 + }, + "end": { + "line": 113, + "column": 25 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 2032, + "end": 2101, + "loc": { + "start": { + "line": 116, + "column": 0 + }, + "end": { + "line": 118, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 2039, + "end": 2101, + "loc": { + "start": { + "line": 116, + "column": 7 + }, + "end": { + "line": 118, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 2048, + "end": 2053, + "loc": { + "start": { + "line": 116, + "column": 16 + }, + "end": { + "line": 116, + "column": 21 + }, + "identifierName": "idivn" + }, + "name": "idivn" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 2054, + "end": 2059, + "loc": { + "start": { + "line": 116, + "column": 22 + }, + "end": { + "line": 116, + "column": 27 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 2061, + "end": 2067, + "loc": { + "start": { + "line": 116, + "column": 29 + }, + "end": { + "line": 116, + "column": 35 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 2069, + "end": 2101, + "loc": { + "start": { + "line": 116, + "column": 37 + }, + "end": { + "line": 118, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 2072, + "end": 2099, + "loc": { + "start": { + "line": 117, + "column": 1 + }, + "end": { + "line": 117, + "column": 28 + } + }, + "argument": { + "type": "CallExpression", + "start": 2079, + "end": 2098, + "loc": { + "start": { + "line": 117, + "column": 8 + }, + "end": { + "line": 117, + "column": 27 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2079, + "end": 2090, + "loc": { + "start": { + "line": 117, + "column": 8 + }, + "end": { + "line": 117, + "column": 19 + } + }, + "object": { + "type": "Identifier", + "start": 2079, + "end": 2084, + "loc": { + "start": { + "line": 117, + "column": 8 + }, + "end": { + "line": 117, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 2085, + "end": 2090, + "loc": { + "start": { + "line": 117, + "column": 14 + }, + "end": { + "line": 117, + "column": 19 + }, + "identifierName": "idivn" + }, + "name": "idivn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 2091, + "end": 2097, + "loc": { + "start": { + "line": 117, + "column": 20 + }, + "end": { + "line": 117, + "column": 26 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 2103, + "end": 2170, + "loc": { + "start": { + "line": 120, + "column": 0 + }, + "end": { + "line": 122, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 2110, + "end": 2170, + "loc": { + "start": { + "line": 120, + "column": 7 + }, + "end": { + "line": 122, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 2119, + "end": 2123, + "loc": { + "start": { + "line": 120, + "column": 16 + }, + "end": { + "line": 120, + "column": 20 + }, + "identifierName": "modn" + }, + "name": "modn" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 2124, + "end": 2129, + "loc": { + "start": { + "line": 120, + "column": 21 + }, + "end": { + "line": 120, + "column": 26 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 2131, + "end": 2137, + "loc": { + "start": { + "line": 120, + "column": 28 + }, + "end": { + "line": 120, + "column": 34 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 2139, + "end": 2170, + "loc": { + "start": { + "line": 120, + "column": 36 + }, + "end": { + "line": 122, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 2142, + "end": 2168, + "loc": { + "start": { + "line": 121, + "column": 1 + }, + "end": { + "line": 121, + "column": 27 + } + }, + "argument": { + "type": "CallExpression", + "start": 2149, + "end": 2167, + "loc": { + "start": { + "line": 121, + "column": 8 + }, + "end": { + "line": 121, + "column": 26 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2149, + "end": 2159, + "loc": { + "start": { + "line": 121, + "column": 8 + }, + "end": { + "line": 121, + "column": 18 + } + }, + "object": { + "type": "Identifier", + "start": 2149, + "end": 2154, + "loc": { + "start": { + "line": 121, + "column": 8 + }, + "end": { + "line": 121, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 2155, + "end": 2159, + "loc": { + "start": { + "line": 121, + "column": 14 + }, + "end": { + "line": 121, + "column": 18 + }, + "identifierName": "modn" + }, + "name": "modn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 2160, + "end": 2166, + "loc": { + "start": { + "line": 121, + "column": 19 + }, + "end": { + "line": 121, + "column": 25 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 2172, + "end": 2241, + "loc": { + "start": { + "line": 124, + "column": 0 + }, + "end": { + "line": 126, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 2179, + "end": 2241, + "loc": { + "start": { + "line": 124, + "column": 7 + }, + "end": { + "line": 126, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 2188, + "end": 2193, + "loc": { + "start": { + "line": 124, + "column": 16 + }, + "end": { + "line": 124, + "column": 21 + }, + "identifierName": "imodn" + }, + "name": "imodn" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 2194, + "end": 2199, + "loc": { + "start": { + "line": 124, + "column": 22 + }, + "end": { + "line": 124, + "column": 27 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 2201, + "end": 2207, + "loc": { + "start": { + "line": 124, + "column": 29 + }, + "end": { + "line": 124, + "column": 35 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 2209, + "end": 2241, + "loc": { + "start": { + "line": 124, + "column": 37 + }, + "end": { + "line": 126, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 2212, + "end": 2239, + "loc": { + "start": { + "line": 125, + "column": 1 + }, + "end": { + "line": 125, + "column": 28 + } + }, + "argument": { + "type": "CallExpression", + "start": 2219, + "end": 2238, + "loc": { + "start": { + "line": 125, + "column": 8 + }, + "end": { + "line": 125, + "column": 27 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2219, + "end": 2230, + "loc": { + "start": { + "line": 125, + "column": 8 + }, + "end": { + "line": 125, + "column": 19 + } + }, + "object": { + "type": "Identifier", + "start": 2219, + "end": 2224, + "loc": { + "start": { + "line": 125, + "column": 8 + }, + "end": { + "line": 125, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 2225, + "end": 2230, + "loc": { + "start": { + "line": 125, + "column": 14 + }, + "end": { + "line": 125, + "column": 19 + }, + "identifierName": "imodn" + }, + "name": "imodn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 2231, + "end": 2237, + "loc": { + "start": { + "line": 125, + "column": 20 + }, + "end": { + "line": 125, + "column": 26 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 2243, + "end": 2316, + "loc": { + "start": { + "line": 128, + "column": 0 + }, + "end": { + "line": 130, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 2250, + "end": 2316, + "loc": { + "start": { + "line": 128, + "column": 7 + }, + "end": { + "line": 130, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 2259, + "end": 2266, + "loc": { + "start": { + "line": 128, + "column": 16 + }, + "end": { + "line": 128, + "column": 23 + }, + "identifierName": "divmodn" + }, + "name": "divmodn" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 2267, + "end": 2272, + "loc": { + "start": { + "line": 128, + "column": 24 + }, + "end": { + "line": 128, + "column": 29 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 2274, + "end": 2280, + "loc": { + "start": { + "line": 128, + "column": 31 + }, + "end": { + "line": 128, + "column": 37 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 2282, + "end": 2316, + "loc": { + "start": { + "line": 128, + "column": 39 + }, + "end": { + "line": 130, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 2285, + "end": 2314, + "loc": { + "start": { + "line": 129, + "column": 1 + }, + "end": { + "line": 129, + "column": 30 + } + }, + "argument": { + "type": "CallExpression", + "start": 2292, + "end": 2313, + "loc": { + "start": { + "line": 129, + "column": 8 + }, + "end": { + "line": 129, + "column": 29 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2292, + "end": 2305, + "loc": { + "start": { + "line": 129, + "column": 8 + }, + "end": { + "line": 129, + "column": 21 + } + }, + "object": { + "type": "Identifier", + "start": 2292, + "end": 2297, + "loc": { + "start": { + "line": 129, + "column": 8 + }, + "end": { + "line": 129, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 2298, + "end": 2305, + "loc": { + "start": { + "line": 129, + "column": 14 + }, + "end": { + "line": 129, + "column": 21 + }, + "identifierName": "divmodn" + }, + "name": "divmodn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 2306, + "end": 2312, + "loc": { + "start": { + "line": 129, + "column": 22 + }, + "end": { + "line": 129, + "column": 28 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + }, + { + "type": "ExportNamedDeclaration", + "start": 2318, + "end": 2393, + "loc": { + "start": { + "line": 132, + "column": 0 + }, + "end": { + "line": 134, + "column": 1 + } + }, + "specifiers": [], + "source": null, + "declaration": { + "type": "FunctionDeclaration", + "start": 2325, + "end": 2393, + "loc": { + "start": { + "line": 132, + "column": 7 + }, + "end": { + "line": 134, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 2334, + "end": 2342, + "loc": { + "start": { + "line": 132, + "column": 16 + }, + "end": { + "line": 132, + "column": 24 + }, + "identifierName": "idivmodn" + }, + "name": "idivmodn" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 2343, + "end": 2348, + "loc": { + "start": { + "line": 132, + "column": 25 + }, + "end": { + "line": 132, + "column": 30 + }, + "identifierName": "first" + }, + "name": "first" + }, + { + "type": "Identifier", + "start": 2350, + "end": 2356, + "loc": { + "start": { + "line": 132, + "column": 32 + }, + "end": { + "line": 132, + "column": 38 + }, + "identifierName": "second" + }, + "name": "second" + } + ], + "body": { + "type": "BlockStatement", + "start": 2358, + "end": 2393, + "loc": { + "start": { + "line": 132, + "column": 40 + }, + "end": { + "line": 134, + "column": 1 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 2361, + "end": 2391, + "loc": { + "start": { + "line": 133, + "column": 1 + }, + "end": { + "line": 133, + "column": 31 + } + }, + "argument": { + "type": "CallExpression", + "start": 2368, + "end": 2390, + "loc": { + "start": { + "line": 133, + "column": 8 + }, + "end": { + "line": 133, + "column": 30 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2368, + "end": 2382, + "loc": { + "start": { + "line": 133, + "column": 8 + }, + "end": { + "line": 133, + "column": 22 + } + }, + "object": { + "type": "Identifier", + "start": 2368, + "end": 2373, + "loc": { + "start": { + "line": 133, + "column": 8 + }, + "end": { + "line": 133, + "column": 13 + }, + "identifierName": "first" + }, + "name": "first" + }, + "property": { + "type": "Identifier", + "start": 2374, + "end": 2382, + "loc": { + "start": { + "line": 133, + "column": 14 + }, + "end": { + "line": 133, + "column": 22 + }, + "identifierName": "idivmodn" + }, + "name": "idivmodn" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 2383, + "end": 2389, + "loc": { + "start": { + "line": 133, + "column": 23 + }, + "end": { + "line": 133, + "column": 29 + }, + "identifierName": "second" + }, + "name": "second" + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [], + "trailingComments": [] + } + } + ], + "directives": [] + }, + "comments": [], + "tokens": [ + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 0, + "end": 6, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7, + "end": 8, + "loc": { + "start": { + "line": 1, + "column": 7 + }, + "end": { + "line": 1, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "DEFAULT_DISPLAY_BASE", + "start": 8, + "end": 28, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 28 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 28, + "end": 29, + "loc": { + "start": { + "line": 1, + "column": 28 + }, + "end": { + "line": 1, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 30, + "end": 34, + "loc": { + "start": { + "line": 1, + "column": 30 + }, + "end": { + "line": 1, + "column": 34 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./DEFAULT_DISPLAY_BASE.js", + "start": 35, + "end": 62, + "loc": { + "start": { + "line": 1, + "column": 35 + }, + "end": { + "line": 1, + "column": 62 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 62, + "end": 63, + "loc": { + "start": { + "line": 1, + "column": 62 + }, + "end": { + "line": 1, + "column": 63 + } + } + }, + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 64, + "end": 70, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 71, + "end": 72, + "loc": { + "start": { + "line": 2, + "column": 7 + }, + "end": { + "line": 2, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ZZ", + "start": 72, + "end": 74, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 10 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 74, + "end": 75, + "loc": { + "start": { + "line": 2, + "column": 10 + }, + "end": { + "line": 2, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 76, + "end": 80, + "loc": { + "start": { + "line": 2, + "column": 12 + }, + "end": { + "line": 2, + "column": 16 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./ZZ.js", + "start": 81, + "end": 90, + "loc": { + "start": { + "line": 2, + "column": 17 + }, + "end": { + "line": 2, + "column": 26 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 90, + "end": 91, + "loc": { + "start": { + "line": 2, + "column": 26 + }, + "end": { + "line": 2, + "column": 27 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 93, + "end": 99, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 4, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 100, + "end": 108, + "loc": { + "start": { + "line": 4, + "column": 7 + }, + "end": { + "line": 4, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "$0", + "start": 109, + "end": 111, + "loc": { + "start": { + "line": 4, + "column": 16 + }, + "end": { + "line": 4, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 111, + "end": 112, + "loc": { + "start": { + "line": 4, + "column": 18 + }, + "end": { + "line": 4, + "column": 19 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 112, + "end": 113, + "loc": { + "start": { + "line": 4, + "column": 19 + }, + "end": { + "line": 4, + "column": 20 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 114, + "end": 115, + "loc": { + "start": { + "line": 4, + "column": 21 + }, + "end": { + "line": 4, + "column": 22 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 117, + "end": 123, + "loc": { + "start": { + "line": 5, + "column": 1 + }, + "end": { + "line": 5, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ZZ", + "start": 124, + "end": 126, + "loc": { + "start": { + "line": 5, + "column": 8 + }, + "end": { + "line": 5, + "column": 10 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 126, + "end": 127, + "loc": { + "start": { + "line": 5, + "column": 10 + }, + "end": { + "line": 5, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "$0", + "start": 127, + "end": 129, + "loc": { + "start": { + "line": 5, + "column": 11 + }, + "end": { + "line": 5, + "column": 13 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 129, + "end": 130, + "loc": { + "start": { + "line": 5, + "column": 13 + }, + "end": { + "line": 5, + "column": 14 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 130, + "end": 131, + "loc": { + "start": { + "line": 5, + "column": 14 + }, + "end": { + "line": 5, + "column": 15 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 131, + "end": 132, + "loc": { + "start": { + "line": 5, + "column": 15 + }, + "end": { + "line": 5, + "column": 16 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 133, + "end": 134, + "loc": { + "start": { + "line": 6, + "column": 0 + }, + "end": { + "line": 6, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 136, + "end": 142, + "loc": { + "start": { + "line": 8, + "column": 0 + }, + "end": { + "line": 8, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 143, + "end": 151, + "loc": { + "start": { + "line": 8, + "column": 7 + }, + "end": { + "line": 8, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "$1", + "start": 152, + "end": 154, + "loc": { + "start": { + "line": 8, + "column": 16 + }, + "end": { + "line": 8, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 154, + "end": 155, + "loc": { + "start": { + "line": 8, + "column": 18 + }, + "end": { + "line": 8, + "column": 19 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 155, + "end": 156, + "loc": { + "start": { + "line": 8, + "column": 19 + }, + "end": { + "line": 8, + "column": 20 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 157, + "end": 158, + "loc": { + "start": { + "line": 8, + "column": 21 + }, + "end": { + "line": 8, + "column": 22 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 160, + "end": 166, + "loc": { + "start": { + "line": 9, + "column": 1 + }, + "end": { + "line": 9, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ZZ", + "start": 167, + "end": 169, + "loc": { + "start": { + "line": 9, + "column": 8 + }, + "end": { + "line": 9, + "column": 10 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 169, + "end": 170, + "loc": { + "start": { + "line": 9, + "column": 10 + }, + "end": { + "line": 9, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "$1", + "start": 170, + "end": 172, + "loc": { + "start": { + "line": 9, + "column": 11 + }, + "end": { + "line": 9, + "column": 13 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 172, + "end": 173, + "loc": { + "start": { + "line": 9, + "column": 13 + }, + "end": { + "line": 9, + "column": 14 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 173, + "end": 174, + "loc": { + "start": { + "line": 9, + "column": 14 + }, + "end": { + "line": 9, + "column": 15 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 174, + "end": 175, + "loc": { + "start": { + "line": 9, + "column": 15 + }, + "end": { + "line": 9, + "column": 16 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 176, + "end": 177, + "loc": { + "start": { + "line": 10, + "column": 0 + }, + "end": { + "line": 10, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 179, + "end": 185, + "loc": { + "start": { + "line": 12, + "column": 0 + }, + "end": { + "line": 12, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 186, + "end": 194, + "loc": { + "start": { + "line": 12, + "column": 7 + }, + "end": { + "line": 12, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "$_1", + "start": 195, + "end": 198, + "loc": { + "start": { + "line": 12, + "column": 16 + }, + "end": { + "line": 12, + "column": 19 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 198, + "end": 199, + "loc": { + "start": { + "line": 12, + "column": 19 + }, + "end": { + "line": 12, + "column": 20 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 199, + "end": 200, + "loc": { + "start": { + "line": 12, + "column": 20 + }, + "end": { + "line": 12, + "column": 21 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 201, + "end": 202, + "loc": { + "start": { + "line": 12, + "column": 22 + }, + "end": { + "line": 12, + "column": 23 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 204, + "end": 210, + "loc": { + "start": { + "line": 13, + "column": 1 + }, + "end": { + "line": 13, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ZZ", + "start": 211, + "end": 213, + "loc": { + "start": { + "line": 13, + "column": 8 + }, + "end": { + "line": 13, + "column": 10 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 213, + "end": 214, + "loc": { + "start": { + "line": 13, + "column": 10 + }, + "end": { + "line": 13, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "$_1", + "start": 214, + "end": 217, + "loc": { + "start": { + "line": 13, + "column": 11 + }, + "end": { + "line": 13, + "column": 14 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 217, + "end": 218, + "loc": { + "start": { + "line": 13, + "column": 14 + }, + "end": { + "line": 13, + "column": 15 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 218, + "end": 219, + "loc": { + "start": { + "line": 13, + "column": 15 + }, + "end": { + "line": 13, + "column": 16 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 219, + "end": 220, + "loc": { + "start": { + "line": 13, + "column": 16 + }, + "end": { + "line": 13, + "column": 17 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 221, + "end": 222, + "loc": { + "start": { + "line": 14, + "column": 0 + }, + "end": { + "line": 14, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 224, + "end": 230, + "loc": { + "start": { + "line": 16, + "column": 0 + }, + "end": { + "line": 16, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 231, + "end": 239, + "loc": { + "start": { + "line": 16, + "column": 7 + }, + "end": { + "line": 16, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "parse", + "start": 240, + "end": 245, + "loc": { + "start": { + "line": 16, + "column": 16 + }, + "end": { + "line": 16, + "column": 21 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 245, + "end": 246, + "loc": { + "start": { + "line": 16, + "column": 21 + }, + "end": { + "line": 16, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "object", + "start": 246, + "end": 252, + "loc": { + "start": { + "line": 16, + "column": 22 + }, + "end": { + "line": 16, + "column": 28 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 252, + "end": 253, + "loc": { + "start": { + "line": 16, + "column": 28 + }, + "end": { + "line": 16, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 254, + "end": 258, + "loc": { + "start": { + "line": 16, + "column": 30 + }, + "end": { + "line": 16, + "column": 34 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 259, + "end": 260, + "loc": { + "start": { + "line": 16, + "column": 35 + }, + "end": { + "line": 16, + "column": 36 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "undefined", + "start": 261, + "end": 270, + "loc": { + "start": { + "line": 16, + "column": 37 + }, + "end": { + "line": 16, + "column": 46 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 270, + "end": 271, + "loc": { + "start": { + "line": 16, + "column": 46 + }, + "end": { + "line": 16, + "column": 47 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 272, + "end": 283, + "loc": { + "start": { + "line": 16, + "column": 48 + }, + "end": { + "line": 16, + "column": 59 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 284, + "end": 285, + "loc": { + "start": { + "line": 16, + "column": 60 + }, + "end": { + "line": 16, + "column": 61 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 286, + "end": 287, + "loc": { + "start": { + "line": 16, + "column": 62 + }, + "end": { + "line": 16, + "column": 63 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 287, + "end": 288, + "loc": { + "start": { + "line": 16, + "column": 63 + }, + "end": { + "line": 16, + "column": 64 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 289, + "end": 290, + "loc": { + "start": { + "line": 16, + "column": 65 + }, + "end": { + "line": 16, + "column": 66 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 292, + "end": 298, + "loc": { + "start": { + "line": 17, + "column": 1 + }, + "end": { + "line": 17, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ZZ", + "start": 299, + "end": 301, + "loc": { + "start": { + "line": 17, + "column": 8 + }, + "end": { + "line": 17, + "column": 10 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 301, + "end": 302, + "loc": { + "start": { + "line": 17, + "column": 10 + }, + "end": { + "line": 17, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 302, + "end": 306, + "loc": { + "start": { + "line": 17, + "column": 11 + }, + "end": { + "line": 17, + "column": 15 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 306, + "end": 307, + "loc": { + "start": { + "line": 17, + "column": 15 + }, + "end": { + "line": 17, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "object", + "start": 307, + "end": 313, + "loc": { + "start": { + "line": 17, + "column": 16 + }, + "end": { + "line": 17, + "column": 22 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 313, + "end": 314, + "loc": { + "start": { + "line": 17, + "column": 22 + }, + "end": { + "line": 17, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 315, + "end": 319, + "loc": { + "start": { + "line": 17, + "column": 24 + }, + "end": { + "line": 17, + "column": 28 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 319, + "end": 320, + "loc": { + "start": { + "line": 17, + "column": 28 + }, + "end": { + "line": 17, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "is_negative", + "start": 321, + "end": 332, + "loc": { + "start": { + "line": 17, + "column": 30 + }, + "end": { + "line": 17, + "column": 41 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 332, + "end": 333, + "loc": { + "start": { + "line": 17, + "column": 41 + }, + "end": { + "line": 17, + "column": 42 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 333, + "end": 334, + "loc": { + "start": { + "line": 17, + "column": 42 + }, + "end": { + "line": 17, + "column": 43 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 335, + "end": 336, + "loc": { + "start": { + "line": 18, + "column": 0 + }, + "end": { + "line": 18, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 338, + "end": 344, + "loc": { + "start": { + "line": 20, + "column": 0 + }, + "end": { + "line": 20, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 345, + "end": 353, + "loc": { + "start": { + "line": 20, + "column": 7 + }, + "end": { + "line": 20, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "stringify", + "start": 354, + "end": 363, + "loc": { + "start": { + "line": 20, + "column": 16 + }, + "end": { + "line": 20, + "column": 25 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 363, + "end": 364, + "loc": { + "start": { + "line": 20, + "column": 25 + }, + "end": { + "line": 20, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "integer", + "start": 364, + "end": 371, + "loc": { + "start": { + "line": 20, + "column": 26 + }, + "end": { + "line": 20, + "column": 33 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 371, + "end": 372, + "loc": { + "start": { + "line": 20, + "column": 33 + }, + "end": { + "line": 20, + "column": 34 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 373, + "end": 377, + "loc": { + "start": { + "line": 20, + "column": 35 + }, + "end": { + "line": 20, + "column": 39 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 378, + "end": 379, + "loc": { + "start": { + "line": 20, + "column": 40 + }, + "end": { + "line": 20, + "column": 41 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "DEFAULT_DISPLAY_BASE", + "start": 380, + "end": 400, + "loc": { + "start": { + "line": 20, + "column": 42 + }, + "end": { + "line": 20, + "column": 62 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 400, + "end": 401, + "loc": { + "start": { + "line": 20, + "column": 62 + }, + "end": { + "line": 20, + "column": 63 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 402, + "end": 403, + "loc": { + "start": { + "line": 20, + "column": 64 + }, + "end": { + "line": 20, + "column": 65 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 405, + "end": 411, + "loc": { + "start": { + "line": 21, + "column": 1 + }, + "end": { + "line": 21, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "integer", + "start": 412, + "end": 419, + "loc": { + "start": { + "line": 21, + "column": 8 + }, + "end": { + "line": 21, + "column": 15 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 419, + "end": 420, + "loc": { + "start": { + "line": 21, + "column": 15 + }, + "end": { + "line": 21, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "toString", + "start": 420, + "end": 428, + "loc": { + "start": { + "line": 21, + "column": 16 + }, + "end": { + "line": 21, + "column": 24 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 428, + "end": 429, + "loc": { + "start": { + "line": 21, + "column": 24 + }, + "end": { + "line": 21, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "base", + "start": 429, + "end": 433, + "loc": { + "start": { + "line": 21, + "column": 25 + }, + "end": { + "line": 21, + "column": 29 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 433, + "end": 434, + "loc": { + "start": { + "line": 21, + "column": 29 + }, + "end": { + "line": 21, + "column": 30 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 434, + "end": 435, + "loc": { + "start": { + "line": 21, + "column": 30 + }, + "end": { + "line": 21, + "column": 31 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 436, + "end": 437, + "loc": { + "start": { + "line": 22, + "column": 0 + }, + "end": { + "line": 22, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 439, + "end": 445, + "loc": { + "start": { + "line": 24, + "column": 0 + }, + "end": { + "line": 24, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 446, + "end": 454, + "loc": { + "start": { + "line": 24, + "column": 7 + }, + "end": { + "line": 24, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "add", + "start": 455, + "end": 458, + "loc": { + "start": { + "line": 24, + "column": 16 + }, + "end": { + "line": 24, + "column": 19 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 458, + "end": 459, + "loc": { + "start": { + "line": 24, + "column": 19 + }, + "end": { + "line": 24, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 459, + "end": 464, + "loc": { + "start": { + "line": 24, + "column": 20 + }, + "end": { + "line": 24, + "column": 25 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 464, + "end": 465, + "loc": { + "start": { + "line": 24, + "column": 25 + }, + "end": { + "line": 24, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 466, + "end": 472, + "loc": { + "start": { + "line": 24, + "column": 27 + }, + "end": { + "line": 24, + "column": 33 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 472, + "end": 473, + "loc": { + "start": { + "line": 24, + "column": 33 + }, + "end": { + "line": 24, + "column": 34 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 474, + "end": 475, + "loc": { + "start": { + "line": 24, + "column": 35 + }, + "end": { + "line": 24, + "column": 36 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 477, + "end": 483, + "loc": { + "start": { + "line": 25, + "column": 1 + }, + "end": { + "line": 25, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 484, + "end": 489, + "loc": { + "start": { + "line": 25, + "column": 8 + }, + "end": { + "line": 25, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 489, + "end": 490, + "loc": { + "start": { + "line": 25, + "column": 13 + }, + "end": { + "line": 25, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "add", + "start": 490, + "end": 493, + "loc": { + "start": { + "line": 25, + "column": 14 + }, + "end": { + "line": 25, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 493, + "end": 494, + "loc": { + "start": { + "line": 25, + "column": 17 + }, + "end": { + "line": 25, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 494, + "end": 500, + "loc": { + "start": { + "line": 25, + "column": 18 + }, + "end": { + "line": 25, + "column": 24 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 500, + "end": 501, + "loc": { + "start": { + "line": 25, + "column": 24 + }, + "end": { + "line": 25, + "column": 25 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 501, + "end": 502, + "loc": { + "start": { + "line": 25, + "column": 25 + }, + "end": { + "line": 25, + "column": 26 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 503, + "end": 504, + "loc": { + "start": { + "line": 26, + "column": 0 + }, + "end": { + "line": 26, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 506, + "end": 512, + "loc": { + "start": { + "line": 28, + "column": 0 + }, + "end": { + "line": 28, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 513, + "end": 521, + "loc": { + "start": { + "line": 28, + "column": 7 + }, + "end": { + "line": 28, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "iadd", + "start": 522, + "end": 526, + "loc": { + "start": { + "line": 28, + "column": 16 + }, + "end": { + "line": 28, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 526, + "end": 527, + "loc": { + "start": { + "line": 28, + "column": 20 + }, + "end": { + "line": 28, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 527, + "end": 532, + "loc": { + "start": { + "line": 28, + "column": 21 + }, + "end": { + "line": 28, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 532, + "end": 533, + "loc": { + "start": { + "line": 28, + "column": 26 + }, + "end": { + "line": 28, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 534, + "end": 540, + "loc": { + "start": { + "line": 28, + "column": 28 + }, + "end": { + "line": 28, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 540, + "end": 541, + "loc": { + "start": { + "line": 28, + "column": 34 + }, + "end": { + "line": 28, + "column": 35 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 542, + "end": 543, + "loc": { + "start": { + "line": 28, + "column": 36 + }, + "end": { + "line": 28, + "column": 37 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 545, + "end": 551, + "loc": { + "start": { + "line": 29, + "column": 1 + }, + "end": { + "line": 29, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 552, + "end": 557, + "loc": { + "start": { + "line": 29, + "column": 8 + }, + "end": { + "line": 29, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 557, + "end": 558, + "loc": { + "start": { + "line": 29, + "column": 13 + }, + "end": { + "line": 29, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "iadd", + "start": 558, + "end": 562, + "loc": { + "start": { + "line": 29, + "column": 14 + }, + "end": { + "line": 29, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 562, + "end": 563, + "loc": { + "start": { + "line": 29, + "column": 18 + }, + "end": { + "line": 29, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 563, + "end": 569, + "loc": { + "start": { + "line": 29, + "column": 19 + }, + "end": { + "line": 29, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 569, + "end": 570, + "loc": { + "start": { + "line": 29, + "column": 25 + }, + "end": { + "line": 29, + "column": 26 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 570, + "end": 571, + "loc": { + "start": { + "line": 29, + "column": 26 + }, + "end": { + "line": 29, + "column": 27 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 572, + "end": 573, + "loc": { + "start": { + "line": 30, + "column": 0 + }, + "end": { + "line": 30, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 575, + "end": 581, + "loc": { + "start": { + "line": 32, + "column": 0 + }, + "end": { + "line": 32, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 582, + "end": 590, + "loc": { + "start": { + "line": 32, + "column": 7 + }, + "end": { + "line": 32, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "sub", + "start": 591, + "end": 594, + "loc": { + "start": { + "line": 32, + "column": 16 + }, + "end": { + "line": 32, + "column": 19 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 594, + "end": 595, + "loc": { + "start": { + "line": 32, + "column": 19 + }, + "end": { + "line": 32, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 595, + "end": 600, + "loc": { + "start": { + "line": 32, + "column": 20 + }, + "end": { + "line": 32, + "column": 25 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 600, + "end": 601, + "loc": { + "start": { + "line": 32, + "column": 25 + }, + "end": { + "line": 32, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 602, + "end": 608, + "loc": { + "start": { + "line": 32, + "column": 27 + }, + "end": { + "line": 32, + "column": 33 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 608, + "end": 609, + "loc": { + "start": { + "line": 32, + "column": 33 + }, + "end": { + "line": 32, + "column": 34 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 610, + "end": 611, + "loc": { + "start": { + "line": 32, + "column": 35 + }, + "end": { + "line": 32, + "column": 36 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 613, + "end": 619, + "loc": { + "start": { + "line": 33, + "column": 1 + }, + "end": { + "line": 33, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 620, + "end": 625, + "loc": { + "start": { + "line": 33, + "column": 8 + }, + "end": { + "line": 33, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 625, + "end": 626, + "loc": { + "start": { + "line": 33, + "column": 13 + }, + "end": { + "line": 33, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "sub", + "start": 626, + "end": 629, + "loc": { + "start": { + "line": 33, + "column": 14 + }, + "end": { + "line": 33, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 629, + "end": 630, + "loc": { + "start": { + "line": 33, + "column": 17 + }, + "end": { + "line": 33, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 630, + "end": 636, + "loc": { + "start": { + "line": 33, + "column": 18 + }, + "end": { + "line": 33, + "column": 24 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 636, + "end": 637, + "loc": { + "start": { + "line": 33, + "column": 24 + }, + "end": { + "line": 33, + "column": 25 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 637, + "end": 638, + "loc": { + "start": { + "line": 33, + "column": 25 + }, + "end": { + "line": 33, + "column": 26 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 639, + "end": 640, + "loc": { + "start": { + "line": 34, + "column": 0 + }, + "end": { + "line": 34, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 642, + "end": 648, + "loc": { + "start": { + "line": 36, + "column": 0 + }, + "end": { + "line": 36, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 649, + "end": 657, + "loc": { + "start": { + "line": 36, + "column": 7 + }, + "end": { + "line": 36, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "isub", + "start": 658, + "end": 662, + "loc": { + "start": { + "line": 36, + "column": 16 + }, + "end": { + "line": 36, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 662, + "end": 663, + "loc": { + "start": { + "line": 36, + "column": 20 + }, + "end": { + "line": 36, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 663, + "end": 668, + "loc": { + "start": { + "line": 36, + "column": 21 + }, + "end": { + "line": 36, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 668, + "end": 669, + "loc": { + "start": { + "line": 36, + "column": 26 + }, + "end": { + "line": 36, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 670, + "end": 676, + "loc": { + "start": { + "line": 36, + "column": 28 + }, + "end": { + "line": 36, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 676, + "end": 677, + "loc": { + "start": { + "line": 36, + "column": 34 + }, + "end": { + "line": 36, + "column": 35 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 678, + "end": 679, + "loc": { + "start": { + "line": 36, + "column": 36 + }, + "end": { + "line": 36, + "column": 37 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 681, + "end": 687, + "loc": { + "start": { + "line": 37, + "column": 1 + }, + "end": { + "line": 37, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 688, + "end": 693, + "loc": { + "start": { + "line": 37, + "column": 8 + }, + "end": { + "line": 37, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 693, + "end": 694, + "loc": { + "start": { + "line": 37, + "column": 13 + }, + "end": { + "line": 37, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "isub", + "start": 694, + "end": 698, + "loc": { + "start": { + "line": 37, + "column": 14 + }, + "end": { + "line": 37, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 698, + "end": 699, + "loc": { + "start": { + "line": 37, + "column": 18 + }, + "end": { + "line": 37, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 699, + "end": 705, + "loc": { + "start": { + "line": 37, + "column": 19 + }, + "end": { + "line": 37, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 705, + "end": 706, + "loc": { + "start": { + "line": 37, + "column": 25 + }, + "end": { + "line": 37, + "column": 26 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 706, + "end": 707, + "loc": { + "start": { + "line": 37, + "column": 26 + }, + "end": { + "line": 37, + "column": 27 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 708, + "end": 709, + "loc": { + "start": { + "line": 38, + "column": 0 + }, + "end": { + "line": 38, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 711, + "end": 717, + "loc": { + "start": { + "line": 40, + "column": 0 + }, + "end": { + "line": 40, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 718, + "end": 726, + "loc": { + "start": { + "line": 40, + "column": 7 + }, + "end": { + "line": 40, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "mul", + "start": 727, + "end": 730, + "loc": { + "start": { + "line": 40, + "column": 16 + }, + "end": { + "line": 40, + "column": 19 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 730, + "end": 731, + "loc": { + "start": { + "line": 40, + "column": 19 + }, + "end": { + "line": 40, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 731, + "end": 736, + "loc": { + "start": { + "line": 40, + "column": 20 + }, + "end": { + "line": 40, + "column": 25 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 736, + "end": 737, + "loc": { + "start": { + "line": 40, + "column": 25 + }, + "end": { + "line": 40, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 738, + "end": 744, + "loc": { + "start": { + "line": 40, + "column": 27 + }, + "end": { + "line": 40, + "column": 33 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 744, + "end": 745, + "loc": { + "start": { + "line": 40, + "column": 33 + }, + "end": { + "line": 40, + "column": 34 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 746, + "end": 747, + "loc": { + "start": { + "line": 40, + "column": 35 + }, + "end": { + "line": 40, + "column": 36 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 749, + "end": 755, + "loc": { + "start": { + "line": 41, + "column": 1 + }, + "end": { + "line": 41, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 756, + "end": 761, + "loc": { + "start": { + "line": 41, + "column": 8 + }, + "end": { + "line": 41, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 761, + "end": 762, + "loc": { + "start": { + "line": 41, + "column": 13 + }, + "end": { + "line": 41, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "mul", + "start": 762, + "end": 765, + "loc": { + "start": { + "line": 41, + "column": 14 + }, + "end": { + "line": 41, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 765, + "end": 766, + "loc": { + "start": { + "line": 41, + "column": 17 + }, + "end": { + "line": 41, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 766, + "end": 772, + "loc": { + "start": { + "line": 41, + "column": 18 + }, + "end": { + "line": 41, + "column": 24 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 772, + "end": 773, + "loc": { + "start": { + "line": 41, + "column": 24 + }, + "end": { + "line": 41, + "column": 25 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 773, + "end": 774, + "loc": { + "start": { + "line": 41, + "column": 25 + }, + "end": { + "line": 41, + "column": 26 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 775, + "end": 776, + "loc": { + "start": { + "line": 42, + "column": 0 + }, + "end": { + "line": 42, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 778, + "end": 784, + "loc": { + "start": { + "line": 44, + "column": 0 + }, + "end": { + "line": 44, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 785, + "end": 793, + "loc": { + "start": { + "line": 44, + "column": 7 + }, + "end": { + "line": 44, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "imul", + "start": 794, + "end": 798, + "loc": { + "start": { + "line": 44, + "column": 16 + }, + "end": { + "line": 44, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 798, + "end": 799, + "loc": { + "start": { + "line": 44, + "column": 20 + }, + "end": { + "line": 44, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 799, + "end": 804, + "loc": { + "start": { + "line": 44, + "column": 21 + }, + "end": { + "line": 44, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 804, + "end": 805, + "loc": { + "start": { + "line": 44, + "column": 26 + }, + "end": { + "line": 44, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 806, + "end": 812, + "loc": { + "start": { + "line": 44, + "column": 28 + }, + "end": { + "line": 44, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 812, + "end": 813, + "loc": { + "start": { + "line": 44, + "column": 34 + }, + "end": { + "line": 44, + "column": 35 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 814, + "end": 815, + "loc": { + "start": { + "line": 44, + "column": 36 + }, + "end": { + "line": 44, + "column": 37 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 817, + "end": 823, + "loc": { + "start": { + "line": 45, + "column": 1 + }, + "end": { + "line": 45, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 824, + "end": 829, + "loc": { + "start": { + "line": 45, + "column": 8 + }, + "end": { + "line": 45, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 829, + "end": 830, + "loc": { + "start": { + "line": 45, + "column": 13 + }, + "end": { + "line": 45, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "imul", + "start": 830, + "end": 834, + "loc": { + "start": { + "line": 45, + "column": 14 + }, + "end": { + "line": 45, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 834, + "end": 835, + "loc": { + "start": { + "line": 45, + "column": 18 + }, + "end": { + "line": 45, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 835, + "end": 841, + "loc": { + "start": { + "line": 45, + "column": 19 + }, + "end": { + "line": 45, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 841, + "end": 842, + "loc": { + "start": { + "line": 45, + "column": 25 + }, + "end": { + "line": 45, + "column": 26 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 842, + "end": 843, + "loc": { + "start": { + "line": 45, + "column": 26 + }, + "end": { + "line": 45, + "column": 27 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 844, + "end": 845, + "loc": { + "start": { + "line": 46, + "column": 0 + }, + "end": { + "line": 46, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 847, + "end": 853, + "loc": { + "start": { + "line": 48, + "column": 0 + }, + "end": { + "line": 48, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 854, + "end": 862, + "loc": { + "start": { + "line": 48, + "column": 7 + }, + "end": { + "line": 48, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "pow", + "start": 863, + "end": 866, + "loc": { + "start": { + "line": 48, + "column": 16 + }, + "end": { + "line": 48, + "column": 19 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 866, + "end": 867, + "loc": { + "start": { + "line": 48, + "column": 19 + }, + "end": { + "line": 48, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 867, + "end": 872, + "loc": { + "start": { + "line": 48, + "column": 20 + }, + "end": { + "line": 48, + "column": 25 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 872, + "end": 873, + "loc": { + "start": { + "line": 48, + "column": 25 + }, + "end": { + "line": 48, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 874, + "end": 880, + "loc": { + "start": { + "line": 48, + "column": 27 + }, + "end": { + "line": 48, + "column": 33 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 880, + "end": 881, + "loc": { + "start": { + "line": 48, + "column": 33 + }, + "end": { + "line": 48, + "column": 34 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 882, + "end": 883, + "loc": { + "start": { + "line": 48, + "column": 35 + }, + "end": { + "line": 48, + "column": 36 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 885, + "end": 891, + "loc": { + "start": { + "line": 49, + "column": 1 + }, + "end": { + "line": 49, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 892, + "end": 897, + "loc": { + "start": { + "line": 49, + "column": 8 + }, + "end": { + "line": 49, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 897, + "end": 898, + "loc": { + "start": { + "line": 49, + "column": 13 + }, + "end": { + "line": 49, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "pow", + "start": 898, + "end": 901, + "loc": { + "start": { + "line": 49, + "column": 14 + }, + "end": { + "line": 49, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 901, + "end": 902, + "loc": { + "start": { + "line": 49, + "column": 17 + }, + "end": { + "line": 49, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 902, + "end": 908, + "loc": { + "start": { + "line": 49, + "column": 18 + }, + "end": { + "line": 49, + "column": 24 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 908, + "end": 909, + "loc": { + "start": { + "line": 49, + "column": 24 + }, + "end": { + "line": 49, + "column": 25 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 909, + "end": 910, + "loc": { + "start": { + "line": 49, + "column": 25 + }, + "end": { + "line": 49, + "column": 26 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 911, + "end": 912, + "loc": { + "start": { + "line": 50, + "column": 0 + }, + "end": { + "line": 50, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 914, + "end": 920, + "loc": { + "start": { + "line": 52, + "column": 0 + }, + "end": { + "line": 52, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 921, + "end": 929, + "loc": { + "start": { + "line": 52, + "column": 7 + }, + "end": { + "line": 52, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ipow", + "start": 930, + "end": 934, + "loc": { + "start": { + "line": 52, + "column": 16 + }, + "end": { + "line": 52, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 934, + "end": 935, + "loc": { + "start": { + "line": 52, + "column": 20 + }, + "end": { + "line": 52, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 935, + "end": 940, + "loc": { + "start": { + "line": 52, + "column": 21 + }, + "end": { + "line": 52, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 940, + "end": 941, + "loc": { + "start": { + "line": 52, + "column": 26 + }, + "end": { + "line": 52, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 942, + "end": 948, + "loc": { + "start": { + "line": 52, + "column": 28 + }, + "end": { + "line": 52, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 948, + "end": 949, + "loc": { + "start": { + "line": 52, + "column": 34 + }, + "end": { + "line": 52, + "column": 35 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 950, + "end": 951, + "loc": { + "start": { + "line": 52, + "column": 36 + }, + "end": { + "line": 52, + "column": 37 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 953, + "end": 959, + "loc": { + "start": { + "line": 53, + "column": 1 + }, + "end": { + "line": 53, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 960, + "end": 965, + "loc": { + "start": { + "line": 53, + "column": 8 + }, + "end": { + "line": 53, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 965, + "end": 966, + "loc": { + "start": { + "line": 53, + "column": 13 + }, + "end": { + "line": 53, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ipow", + "start": 966, + "end": 970, + "loc": { + "start": { + "line": 53, + "column": 14 + }, + "end": { + "line": 53, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 970, + "end": 971, + "loc": { + "start": { + "line": 53, + "column": 18 + }, + "end": { + "line": 53, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 971, + "end": 977, + "loc": { + "start": { + "line": 53, + "column": 19 + }, + "end": { + "line": 53, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 977, + "end": 978, + "loc": { + "start": { + "line": 53, + "column": 25 + }, + "end": { + "line": 53, + "column": 26 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 978, + "end": 979, + "loc": { + "start": { + "line": 53, + "column": 26 + }, + "end": { + "line": 53, + "column": 27 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 980, + "end": 981, + "loc": { + "start": { + "line": 54, + "column": 0 + }, + "end": { + "line": 54, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 983, + "end": 989, + "loc": { + "start": { + "line": 56, + "column": 0 + }, + "end": { + "line": 56, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 990, + "end": 998, + "loc": { + "start": { + "line": 56, + "column": 7 + }, + "end": { + "line": 56, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "div", + "start": 999, + "end": 1002, + "loc": { + "start": { + "line": 56, + "column": 16 + }, + "end": { + "line": 56, + "column": 19 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1002, + "end": 1003, + "loc": { + "start": { + "line": 56, + "column": 19 + }, + "end": { + "line": 56, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1003, + "end": 1008, + "loc": { + "start": { + "line": 56, + "column": 20 + }, + "end": { + "line": 56, + "column": 25 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1008, + "end": 1009, + "loc": { + "start": { + "line": 56, + "column": 25 + }, + "end": { + "line": 56, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1010, + "end": 1016, + "loc": { + "start": { + "line": 56, + "column": 27 + }, + "end": { + "line": 56, + "column": 33 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1016, + "end": 1017, + "loc": { + "start": { + "line": 56, + "column": 33 + }, + "end": { + "line": 56, + "column": 34 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1018, + "end": 1019, + "loc": { + "start": { + "line": 56, + "column": 35 + }, + "end": { + "line": 56, + "column": 36 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1021, + "end": 1027, + "loc": { + "start": { + "line": 57, + "column": 1 + }, + "end": { + "line": 57, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1028, + "end": 1033, + "loc": { + "start": { + "line": 57, + "column": 8 + }, + "end": { + "line": 57, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1033, + "end": 1034, + "loc": { + "start": { + "line": 57, + "column": 13 + }, + "end": { + "line": 57, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "div", + "start": 1034, + "end": 1037, + "loc": { + "start": { + "line": 57, + "column": 14 + }, + "end": { + "line": 57, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1037, + "end": 1038, + "loc": { + "start": { + "line": 57, + "column": 17 + }, + "end": { + "line": 57, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1038, + "end": 1044, + "loc": { + "start": { + "line": 57, + "column": 18 + }, + "end": { + "line": 57, + "column": 24 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1044, + "end": 1045, + "loc": { + "start": { + "line": 57, + "column": 24 + }, + "end": { + "line": 57, + "column": 25 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1045, + "end": 1046, + "loc": { + "start": { + "line": 57, + "column": 25 + }, + "end": { + "line": 57, + "column": 26 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1047, + "end": 1048, + "loc": { + "start": { + "line": 58, + "column": 0 + }, + "end": { + "line": 58, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 1050, + "end": 1056, + "loc": { + "start": { + "line": 60, + "column": 0 + }, + "end": { + "line": 60, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 1057, + "end": 1065, + "loc": { + "start": { + "line": 60, + "column": 7 + }, + "end": { + "line": 60, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "idiv", + "start": 1066, + "end": 1070, + "loc": { + "start": { + "line": 60, + "column": 16 + }, + "end": { + "line": 60, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1070, + "end": 1071, + "loc": { + "start": { + "line": 60, + "column": 20 + }, + "end": { + "line": 60, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1071, + "end": 1076, + "loc": { + "start": { + "line": 60, + "column": 21 + }, + "end": { + "line": 60, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1076, + "end": 1077, + "loc": { + "start": { + "line": 60, + "column": 26 + }, + "end": { + "line": 60, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1078, + "end": 1084, + "loc": { + "start": { + "line": 60, + "column": 28 + }, + "end": { + "line": 60, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1084, + "end": 1085, + "loc": { + "start": { + "line": 60, + "column": 34 + }, + "end": { + "line": 60, + "column": 35 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1086, + "end": 1087, + "loc": { + "start": { + "line": 60, + "column": 36 + }, + "end": { + "line": 60, + "column": 37 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1089, + "end": 1095, + "loc": { + "start": { + "line": 61, + "column": 1 + }, + "end": { + "line": 61, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1096, + "end": 1101, + "loc": { + "start": { + "line": 61, + "column": 8 + }, + "end": { + "line": 61, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1101, + "end": 1102, + "loc": { + "start": { + "line": 61, + "column": 13 + }, + "end": { + "line": 61, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "idiv", + "start": 1102, + "end": 1106, + "loc": { + "start": { + "line": 61, + "column": 14 + }, + "end": { + "line": 61, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1106, + "end": 1107, + "loc": { + "start": { + "line": 61, + "column": 18 + }, + "end": { + "line": 61, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1107, + "end": 1113, + "loc": { + "start": { + "line": 61, + "column": 19 + }, + "end": { + "line": 61, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1113, + "end": 1114, + "loc": { + "start": { + "line": 61, + "column": 25 + }, + "end": { + "line": 61, + "column": 26 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1114, + "end": 1115, + "loc": { + "start": { + "line": 61, + "column": 26 + }, + "end": { + "line": 61, + "column": 27 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1116, + "end": 1117, + "loc": { + "start": { + "line": 62, + "column": 0 + }, + "end": { + "line": 62, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 1119, + "end": 1125, + "loc": { + "start": { + "line": 64, + "column": 0 + }, + "end": { + "line": 64, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 1126, + "end": 1134, + "loc": { + "start": { + "line": 64, + "column": 7 + }, + "end": { + "line": 64, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "mod", + "start": 1135, + "end": 1138, + "loc": { + "start": { + "line": 64, + "column": 16 + }, + "end": { + "line": 64, + "column": 19 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1138, + "end": 1139, + "loc": { + "start": { + "line": 64, + "column": 19 + }, + "end": { + "line": 64, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1139, + "end": 1144, + "loc": { + "start": { + "line": 64, + "column": 20 + }, + "end": { + "line": 64, + "column": 25 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1144, + "end": 1145, + "loc": { + "start": { + "line": 64, + "column": 25 + }, + "end": { + "line": 64, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1146, + "end": 1152, + "loc": { + "start": { + "line": 64, + "column": 27 + }, + "end": { + "line": 64, + "column": 33 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1152, + "end": 1153, + "loc": { + "start": { + "line": 64, + "column": 33 + }, + "end": { + "line": 64, + "column": 34 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1154, + "end": 1155, + "loc": { + "start": { + "line": 64, + "column": 35 + }, + "end": { + "line": 64, + "column": 36 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1157, + "end": 1163, + "loc": { + "start": { + "line": 65, + "column": 1 + }, + "end": { + "line": 65, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1164, + "end": 1169, + "loc": { + "start": { + "line": 65, + "column": 8 + }, + "end": { + "line": 65, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1169, + "end": 1170, + "loc": { + "start": { + "line": 65, + "column": 13 + }, + "end": { + "line": 65, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "mod", + "start": 1170, + "end": 1173, + "loc": { + "start": { + "line": 65, + "column": 14 + }, + "end": { + "line": 65, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1173, + "end": 1174, + "loc": { + "start": { + "line": 65, + "column": 17 + }, + "end": { + "line": 65, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1174, + "end": 1180, + "loc": { + "start": { + "line": 65, + "column": 18 + }, + "end": { + "line": 65, + "column": 24 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1180, + "end": 1181, + "loc": { + "start": { + "line": 65, + "column": 24 + }, + "end": { + "line": 65, + "column": 25 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1181, + "end": 1182, + "loc": { + "start": { + "line": 65, + "column": 25 + }, + "end": { + "line": 65, + "column": 26 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1183, + "end": 1184, + "loc": { + "start": { + "line": 66, + "column": 0 + }, + "end": { + "line": 66, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 1186, + "end": 1192, + "loc": { + "start": { + "line": 68, + "column": 0 + }, + "end": { + "line": 68, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 1193, + "end": 1201, + "loc": { + "start": { + "line": 68, + "column": 7 + }, + "end": { + "line": 68, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "imod", + "start": 1202, + "end": 1206, + "loc": { + "start": { + "line": 68, + "column": 16 + }, + "end": { + "line": 68, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1206, + "end": 1207, + "loc": { + "start": { + "line": 68, + "column": 20 + }, + "end": { + "line": 68, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1207, + "end": 1212, + "loc": { + "start": { + "line": 68, + "column": 21 + }, + "end": { + "line": 68, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1212, + "end": 1213, + "loc": { + "start": { + "line": 68, + "column": 26 + }, + "end": { + "line": 68, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1214, + "end": 1220, + "loc": { + "start": { + "line": 68, + "column": 28 + }, + "end": { + "line": 68, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1220, + "end": 1221, + "loc": { + "start": { + "line": 68, + "column": 34 + }, + "end": { + "line": 68, + "column": 35 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1222, + "end": 1223, + "loc": { + "start": { + "line": 68, + "column": 36 + }, + "end": { + "line": 68, + "column": 37 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1225, + "end": 1231, + "loc": { + "start": { + "line": 69, + "column": 1 + }, + "end": { + "line": 69, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1232, + "end": 1237, + "loc": { + "start": { + "line": 69, + "column": 8 + }, + "end": { + "line": 69, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1237, + "end": 1238, + "loc": { + "start": { + "line": 69, + "column": 13 + }, + "end": { + "line": 69, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "imod", + "start": 1238, + "end": 1242, + "loc": { + "start": { + "line": 69, + "column": 14 + }, + "end": { + "line": 69, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1242, + "end": 1243, + "loc": { + "start": { + "line": 69, + "column": 18 + }, + "end": { + "line": 69, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1243, + "end": 1249, + "loc": { + "start": { + "line": 69, + "column": 19 + }, + "end": { + "line": 69, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1249, + "end": 1250, + "loc": { + "start": { + "line": 69, + "column": 25 + }, + "end": { + "line": 69, + "column": 26 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1250, + "end": 1251, + "loc": { + "start": { + "line": 69, + "column": 26 + }, + "end": { + "line": 69, + "column": 27 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1252, + "end": 1253, + "loc": { + "start": { + "line": 70, + "column": 0 + }, + "end": { + "line": 70, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 1255, + "end": 1261, + "loc": { + "start": { + "line": 72, + "column": 0 + }, + "end": { + "line": 72, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 1262, + "end": 1270, + "loc": { + "start": { + "line": 72, + "column": 7 + }, + "end": { + "line": 72, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "divmod", + "start": 1271, + "end": 1277, + "loc": { + "start": { + "line": 72, + "column": 16 + }, + "end": { + "line": 72, + "column": 22 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1277, + "end": 1278, + "loc": { + "start": { + "line": 72, + "column": 22 + }, + "end": { + "line": 72, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1278, + "end": 1283, + "loc": { + "start": { + "line": 72, + "column": 23 + }, + "end": { + "line": 72, + "column": 28 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1283, + "end": 1284, + "loc": { + "start": { + "line": 72, + "column": 28 + }, + "end": { + "line": 72, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1285, + "end": 1291, + "loc": { + "start": { + "line": 72, + "column": 30 + }, + "end": { + "line": 72, + "column": 36 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1291, + "end": 1292, + "loc": { + "start": { + "line": 72, + "column": 36 + }, + "end": { + "line": 72, + "column": 37 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1293, + "end": 1294, + "loc": { + "start": { + "line": 72, + "column": 38 + }, + "end": { + "line": 72, + "column": 39 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1296, + "end": 1302, + "loc": { + "start": { + "line": 73, + "column": 1 + }, + "end": { + "line": 73, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1303, + "end": 1308, + "loc": { + "start": { + "line": 73, + "column": 8 + }, + "end": { + "line": 73, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1308, + "end": 1309, + "loc": { + "start": { + "line": 73, + "column": 13 + }, + "end": { + "line": 73, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "divmod", + "start": 1309, + "end": 1315, + "loc": { + "start": { + "line": 73, + "column": 14 + }, + "end": { + "line": 73, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1315, + "end": 1316, + "loc": { + "start": { + "line": 73, + "column": 20 + }, + "end": { + "line": 73, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1316, + "end": 1322, + "loc": { + "start": { + "line": 73, + "column": 21 + }, + "end": { + "line": 73, + "column": 27 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1322, + "end": 1323, + "loc": { + "start": { + "line": 73, + "column": 27 + }, + "end": { + "line": 73, + "column": 28 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1323, + "end": 1324, + "loc": { + "start": { + "line": 73, + "column": 28 + }, + "end": { + "line": 73, + "column": 29 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1325, + "end": 1326, + "loc": { + "start": { + "line": 74, + "column": 0 + }, + "end": { + "line": 74, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 1328, + "end": 1334, + "loc": { + "start": { + "line": 76, + "column": 0 + }, + "end": { + "line": 76, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 1335, + "end": 1343, + "loc": { + "start": { + "line": 76, + "column": 7 + }, + "end": { + "line": 76, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "idivmod", + "start": 1344, + "end": 1351, + "loc": { + "start": { + "line": 76, + "column": 16 + }, + "end": { + "line": 76, + "column": 23 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1351, + "end": 1352, + "loc": { + "start": { + "line": 76, + "column": 23 + }, + "end": { + "line": 76, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1352, + "end": 1357, + "loc": { + "start": { + "line": 76, + "column": 24 + }, + "end": { + "line": 76, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1357, + "end": 1358, + "loc": { + "start": { + "line": 76, + "column": 29 + }, + "end": { + "line": 76, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1359, + "end": 1365, + "loc": { + "start": { + "line": 76, + "column": 31 + }, + "end": { + "line": 76, + "column": 37 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1365, + "end": 1366, + "loc": { + "start": { + "line": 76, + "column": 37 + }, + "end": { + "line": 76, + "column": 38 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1367, + "end": 1368, + "loc": { + "start": { + "line": 76, + "column": 39 + }, + "end": { + "line": 76, + "column": 40 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1370, + "end": 1376, + "loc": { + "start": { + "line": 77, + "column": 1 + }, + "end": { + "line": 77, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1377, + "end": 1382, + "loc": { + "start": { + "line": 77, + "column": 8 + }, + "end": { + "line": 77, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1382, + "end": 1383, + "loc": { + "start": { + "line": 77, + "column": 13 + }, + "end": { + "line": 77, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "idivmod", + "start": 1383, + "end": 1390, + "loc": { + "start": { + "line": 77, + "column": 14 + }, + "end": { + "line": 77, + "column": 21 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1390, + "end": 1391, + "loc": { + "start": { + "line": 77, + "column": 21 + }, + "end": { + "line": 77, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1391, + "end": 1397, + "loc": { + "start": { + "line": 77, + "column": 22 + }, + "end": { + "line": 77, + "column": 28 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1397, + "end": 1398, + "loc": { + "start": { + "line": 77, + "column": 28 + }, + "end": { + "line": 77, + "column": 29 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1398, + "end": 1399, + "loc": { + "start": { + "line": 77, + "column": 29 + }, + "end": { + "line": 77, + "column": 30 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1400, + "end": 1401, + "loc": { + "start": { + "line": 78, + "column": 0 + }, + "end": { + "line": 78, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 1403, + "end": 1409, + "loc": { + "start": { + "line": 80, + "column": 0 + }, + "end": { + "line": 80, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 1410, + "end": 1418, + "loc": { + "start": { + "line": 80, + "column": 7 + }, + "end": { + "line": 80, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "addn", + "start": 1419, + "end": 1423, + "loc": { + "start": { + "line": 80, + "column": 16 + }, + "end": { + "line": 80, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1423, + "end": 1424, + "loc": { + "start": { + "line": 80, + "column": 20 + }, + "end": { + "line": 80, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1424, + "end": 1429, + "loc": { + "start": { + "line": 80, + "column": 21 + }, + "end": { + "line": 80, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1429, + "end": 1430, + "loc": { + "start": { + "line": 80, + "column": 26 + }, + "end": { + "line": 80, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1431, + "end": 1437, + "loc": { + "start": { + "line": 80, + "column": 28 + }, + "end": { + "line": 80, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1437, + "end": 1438, + "loc": { + "start": { + "line": 80, + "column": 34 + }, + "end": { + "line": 80, + "column": 35 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1439, + "end": 1440, + "loc": { + "start": { + "line": 80, + "column": 36 + }, + "end": { + "line": 80, + "column": 37 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1442, + "end": 1448, + "loc": { + "start": { + "line": 81, + "column": 1 + }, + "end": { + "line": 81, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1449, + "end": 1454, + "loc": { + "start": { + "line": 81, + "column": 8 + }, + "end": { + "line": 81, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1454, + "end": 1455, + "loc": { + "start": { + "line": 81, + "column": 13 + }, + "end": { + "line": 81, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "addn", + "start": 1455, + "end": 1459, + "loc": { + "start": { + "line": 81, + "column": 14 + }, + "end": { + "line": 81, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1459, + "end": 1460, + "loc": { + "start": { + "line": 81, + "column": 18 + }, + "end": { + "line": 81, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1460, + "end": 1466, + "loc": { + "start": { + "line": 81, + "column": 19 + }, + "end": { + "line": 81, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1466, + "end": 1467, + "loc": { + "start": { + "line": 81, + "column": 25 + }, + "end": { + "line": 81, + "column": 26 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1467, + "end": 1468, + "loc": { + "start": { + "line": 81, + "column": 26 + }, + "end": { + "line": 81, + "column": 27 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1469, + "end": 1470, + "loc": { + "start": { + "line": 82, + "column": 0 + }, + "end": { + "line": 82, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 1472, + "end": 1478, + "loc": { + "start": { + "line": 84, + "column": 0 + }, + "end": { + "line": 84, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 1479, + "end": 1487, + "loc": { + "start": { + "line": 84, + "column": 7 + }, + "end": { + "line": 84, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "iaddn", + "start": 1488, + "end": 1493, + "loc": { + "start": { + "line": 84, + "column": 16 + }, + "end": { + "line": 84, + "column": 21 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1493, + "end": 1494, + "loc": { + "start": { + "line": 84, + "column": 21 + }, + "end": { + "line": 84, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1494, + "end": 1499, + "loc": { + "start": { + "line": 84, + "column": 22 + }, + "end": { + "line": 84, + "column": 27 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1499, + "end": 1500, + "loc": { + "start": { + "line": 84, + "column": 27 + }, + "end": { + "line": 84, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1501, + "end": 1507, + "loc": { + "start": { + "line": 84, + "column": 29 + }, + "end": { + "line": 84, + "column": 35 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1507, + "end": 1508, + "loc": { + "start": { + "line": 84, + "column": 35 + }, + "end": { + "line": 84, + "column": 36 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1509, + "end": 1510, + "loc": { + "start": { + "line": 84, + "column": 37 + }, + "end": { + "line": 84, + "column": 38 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1512, + "end": 1518, + "loc": { + "start": { + "line": 85, + "column": 1 + }, + "end": { + "line": 85, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1519, + "end": 1524, + "loc": { + "start": { + "line": 85, + "column": 8 + }, + "end": { + "line": 85, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1524, + "end": 1525, + "loc": { + "start": { + "line": 85, + "column": 13 + }, + "end": { + "line": 85, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "iaddn", + "start": 1525, + "end": 1530, + "loc": { + "start": { + "line": 85, + "column": 14 + }, + "end": { + "line": 85, + "column": 19 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1530, + "end": 1531, + "loc": { + "start": { + "line": 85, + "column": 19 + }, + "end": { + "line": 85, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1531, + "end": 1537, + "loc": { + "start": { + "line": 85, + "column": 20 + }, + "end": { + "line": 85, + "column": 26 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1537, + "end": 1538, + "loc": { + "start": { + "line": 85, + "column": 26 + }, + "end": { + "line": 85, + "column": 27 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1538, + "end": 1539, + "loc": { + "start": { + "line": 85, + "column": 27 + }, + "end": { + "line": 85, + "column": 28 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1540, + "end": 1541, + "loc": { + "start": { + "line": 86, + "column": 0 + }, + "end": { + "line": 86, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 1543, + "end": 1549, + "loc": { + "start": { + "line": 88, + "column": 0 + }, + "end": { + "line": 88, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 1550, + "end": 1558, + "loc": { + "start": { + "line": 88, + "column": 7 + }, + "end": { + "line": 88, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "subn", + "start": 1559, + "end": 1563, + "loc": { + "start": { + "line": 88, + "column": 16 + }, + "end": { + "line": 88, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1563, + "end": 1564, + "loc": { + "start": { + "line": 88, + "column": 20 + }, + "end": { + "line": 88, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1564, + "end": 1569, + "loc": { + "start": { + "line": 88, + "column": 21 + }, + "end": { + "line": 88, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1569, + "end": 1570, + "loc": { + "start": { + "line": 88, + "column": 26 + }, + "end": { + "line": 88, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1571, + "end": 1577, + "loc": { + "start": { + "line": 88, + "column": 28 + }, + "end": { + "line": 88, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1577, + "end": 1578, + "loc": { + "start": { + "line": 88, + "column": 34 + }, + "end": { + "line": 88, + "column": 35 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1579, + "end": 1580, + "loc": { + "start": { + "line": 88, + "column": 36 + }, + "end": { + "line": 88, + "column": 37 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1582, + "end": 1588, + "loc": { + "start": { + "line": 89, + "column": 1 + }, + "end": { + "line": 89, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1589, + "end": 1594, + "loc": { + "start": { + "line": 89, + "column": 8 + }, + "end": { + "line": 89, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1594, + "end": 1595, + "loc": { + "start": { + "line": 89, + "column": 13 + }, + "end": { + "line": 89, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "subn", + "start": 1595, + "end": 1599, + "loc": { + "start": { + "line": 89, + "column": 14 + }, + "end": { + "line": 89, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1599, + "end": 1600, + "loc": { + "start": { + "line": 89, + "column": 18 + }, + "end": { + "line": 89, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1600, + "end": 1606, + "loc": { + "start": { + "line": 89, + "column": 19 + }, + "end": { + "line": 89, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1606, + "end": 1607, + "loc": { + "start": { + "line": 89, + "column": 25 + }, + "end": { + "line": 89, + "column": 26 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1607, + "end": 1608, + "loc": { + "start": { + "line": 89, + "column": 26 + }, + "end": { + "line": 89, + "column": 27 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1609, + "end": 1610, + "loc": { + "start": { + "line": 90, + "column": 0 + }, + "end": { + "line": 90, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 1612, + "end": 1618, + "loc": { + "start": { + "line": 92, + "column": 0 + }, + "end": { + "line": 92, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 1619, + "end": 1627, + "loc": { + "start": { + "line": 92, + "column": 7 + }, + "end": { + "line": 92, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "isubn", + "start": 1628, + "end": 1633, + "loc": { + "start": { + "line": 92, + "column": 16 + }, + "end": { + "line": 92, + "column": 21 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1633, + "end": 1634, + "loc": { + "start": { + "line": 92, + "column": 21 + }, + "end": { + "line": 92, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1634, + "end": 1639, + "loc": { + "start": { + "line": 92, + "column": 22 + }, + "end": { + "line": 92, + "column": 27 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1639, + "end": 1640, + "loc": { + "start": { + "line": 92, + "column": 27 + }, + "end": { + "line": 92, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1641, + "end": 1647, + "loc": { + "start": { + "line": 92, + "column": 29 + }, + "end": { + "line": 92, + "column": 35 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1647, + "end": 1648, + "loc": { + "start": { + "line": 92, + "column": 35 + }, + "end": { + "line": 92, + "column": 36 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1649, + "end": 1650, + "loc": { + "start": { + "line": 92, + "column": 37 + }, + "end": { + "line": 92, + "column": 38 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1652, + "end": 1658, + "loc": { + "start": { + "line": 93, + "column": 1 + }, + "end": { + "line": 93, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1659, + "end": 1664, + "loc": { + "start": { + "line": 93, + "column": 8 + }, + "end": { + "line": 93, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1664, + "end": 1665, + "loc": { + "start": { + "line": 93, + "column": 13 + }, + "end": { + "line": 93, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "isubn", + "start": 1665, + "end": 1670, + "loc": { + "start": { + "line": 93, + "column": 14 + }, + "end": { + "line": 93, + "column": 19 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1670, + "end": 1671, + "loc": { + "start": { + "line": 93, + "column": 19 + }, + "end": { + "line": 93, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1671, + "end": 1677, + "loc": { + "start": { + "line": 93, + "column": 20 + }, + "end": { + "line": 93, + "column": 26 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1677, + "end": 1678, + "loc": { + "start": { + "line": 93, + "column": 26 + }, + "end": { + "line": 93, + "column": 27 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1678, + "end": 1679, + "loc": { + "start": { + "line": 93, + "column": 27 + }, + "end": { + "line": 93, + "column": 28 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1680, + "end": 1681, + "loc": { + "start": { + "line": 94, + "column": 0 + }, + "end": { + "line": 94, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 1683, + "end": 1689, + "loc": { + "start": { + "line": 96, + "column": 0 + }, + "end": { + "line": 96, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 1690, + "end": 1698, + "loc": { + "start": { + "line": 96, + "column": 7 + }, + "end": { + "line": 96, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "muln", + "start": 1699, + "end": 1703, + "loc": { + "start": { + "line": 96, + "column": 16 + }, + "end": { + "line": 96, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1703, + "end": 1704, + "loc": { + "start": { + "line": 96, + "column": 20 + }, + "end": { + "line": 96, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1704, + "end": 1709, + "loc": { + "start": { + "line": 96, + "column": 21 + }, + "end": { + "line": 96, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1709, + "end": 1710, + "loc": { + "start": { + "line": 96, + "column": 26 + }, + "end": { + "line": 96, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1711, + "end": 1717, + "loc": { + "start": { + "line": 96, + "column": 28 + }, + "end": { + "line": 96, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1717, + "end": 1718, + "loc": { + "start": { + "line": 96, + "column": 34 + }, + "end": { + "line": 96, + "column": 35 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1719, + "end": 1720, + "loc": { + "start": { + "line": 96, + "column": 36 + }, + "end": { + "line": 96, + "column": 37 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1722, + "end": 1728, + "loc": { + "start": { + "line": 97, + "column": 1 + }, + "end": { + "line": 97, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1729, + "end": 1734, + "loc": { + "start": { + "line": 97, + "column": 8 + }, + "end": { + "line": 97, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1734, + "end": 1735, + "loc": { + "start": { + "line": 97, + "column": 13 + }, + "end": { + "line": 97, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "muln", + "start": 1735, + "end": 1739, + "loc": { + "start": { + "line": 97, + "column": 14 + }, + "end": { + "line": 97, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1739, + "end": 1740, + "loc": { + "start": { + "line": 97, + "column": 18 + }, + "end": { + "line": 97, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1740, + "end": 1746, + "loc": { + "start": { + "line": 97, + "column": 19 + }, + "end": { + "line": 97, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1746, + "end": 1747, + "loc": { + "start": { + "line": 97, + "column": 25 + }, + "end": { + "line": 97, + "column": 26 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1747, + "end": 1748, + "loc": { + "start": { + "line": 97, + "column": 26 + }, + "end": { + "line": 97, + "column": 27 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1749, + "end": 1750, + "loc": { + "start": { + "line": 98, + "column": 0 + }, + "end": { + "line": 98, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 1752, + "end": 1758, + "loc": { + "start": { + "line": 100, + "column": 0 + }, + "end": { + "line": 100, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 1759, + "end": 1767, + "loc": { + "start": { + "line": 100, + "column": 7 + }, + "end": { + "line": 100, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "imuln", + "start": 1768, + "end": 1773, + "loc": { + "start": { + "line": 100, + "column": 16 + }, + "end": { + "line": 100, + "column": 21 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1773, + "end": 1774, + "loc": { + "start": { + "line": 100, + "column": 21 + }, + "end": { + "line": 100, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1774, + "end": 1779, + "loc": { + "start": { + "line": 100, + "column": 22 + }, + "end": { + "line": 100, + "column": 27 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1779, + "end": 1780, + "loc": { + "start": { + "line": 100, + "column": 27 + }, + "end": { + "line": 100, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1781, + "end": 1787, + "loc": { + "start": { + "line": 100, + "column": 29 + }, + "end": { + "line": 100, + "column": 35 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1787, + "end": 1788, + "loc": { + "start": { + "line": 100, + "column": 35 + }, + "end": { + "line": 100, + "column": 36 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1789, + "end": 1790, + "loc": { + "start": { + "line": 100, + "column": 37 + }, + "end": { + "line": 100, + "column": 38 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1792, + "end": 1798, + "loc": { + "start": { + "line": 101, + "column": 1 + }, + "end": { + "line": 101, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1799, + "end": 1804, + "loc": { + "start": { + "line": 101, + "column": 8 + }, + "end": { + "line": 101, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1804, + "end": 1805, + "loc": { + "start": { + "line": 101, + "column": 13 + }, + "end": { + "line": 101, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "imuln", + "start": 1805, + "end": 1810, + "loc": { + "start": { + "line": 101, + "column": 14 + }, + "end": { + "line": 101, + "column": 19 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1810, + "end": 1811, + "loc": { + "start": { + "line": 101, + "column": 19 + }, + "end": { + "line": 101, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1811, + "end": 1817, + "loc": { + "start": { + "line": 101, + "column": 20 + }, + "end": { + "line": 101, + "column": 26 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1817, + "end": 1818, + "loc": { + "start": { + "line": 101, + "column": 26 + }, + "end": { + "line": 101, + "column": 27 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1818, + "end": 1819, + "loc": { + "start": { + "line": 101, + "column": 27 + }, + "end": { + "line": 101, + "column": 28 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1820, + "end": 1821, + "loc": { + "start": { + "line": 102, + "column": 0 + }, + "end": { + "line": 102, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 1823, + "end": 1829, + "loc": { + "start": { + "line": 104, + "column": 0 + }, + "end": { + "line": 104, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 1830, + "end": 1838, + "loc": { + "start": { + "line": 104, + "column": 7 + }, + "end": { + "line": 104, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "pown", + "start": 1839, + "end": 1843, + "loc": { + "start": { + "line": 104, + "column": 16 + }, + "end": { + "line": 104, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1843, + "end": 1844, + "loc": { + "start": { + "line": 104, + "column": 20 + }, + "end": { + "line": 104, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1844, + "end": 1849, + "loc": { + "start": { + "line": 104, + "column": 21 + }, + "end": { + "line": 104, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1849, + "end": 1850, + "loc": { + "start": { + "line": 104, + "column": 26 + }, + "end": { + "line": 104, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1851, + "end": 1857, + "loc": { + "start": { + "line": 104, + "column": 28 + }, + "end": { + "line": 104, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1857, + "end": 1858, + "loc": { + "start": { + "line": 104, + "column": 34 + }, + "end": { + "line": 104, + "column": 35 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1859, + "end": 1860, + "loc": { + "start": { + "line": 104, + "column": 36 + }, + "end": { + "line": 104, + "column": 37 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1862, + "end": 1868, + "loc": { + "start": { + "line": 105, + "column": 1 + }, + "end": { + "line": 105, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1869, + "end": 1874, + "loc": { + "start": { + "line": 105, + "column": 8 + }, + "end": { + "line": 105, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1874, + "end": 1875, + "loc": { + "start": { + "line": 105, + "column": 13 + }, + "end": { + "line": 105, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "pown", + "start": 1875, + "end": 1879, + "loc": { + "start": { + "line": 105, + "column": 14 + }, + "end": { + "line": 105, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1879, + "end": 1880, + "loc": { + "start": { + "line": 105, + "column": 18 + }, + "end": { + "line": 105, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1880, + "end": 1886, + "loc": { + "start": { + "line": 105, + "column": 19 + }, + "end": { + "line": 105, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1886, + "end": 1887, + "loc": { + "start": { + "line": 105, + "column": 25 + }, + "end": { + "line": 105, + "column": 26 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1887, + "end": 1888, + "loc": { + "start": { + "line": 105, + "column": 26 + }, + "end": { + "line": 105, + "column": 27 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1889, + "end": 1890, + "loc": { + "start": { + "line": 106, + "column": 0 + }, + "end": { + "line": 106, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 1892, + "end": 1898, + "loc": { + "start": { + "line": 108, + "column": 0 + }, + "end": { + "line": 108, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 1899, + "end": 1907, + "loc": { + "start": { + "line": 108, + "column": 7 + }, + "end": { + "line": 108, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ipown", + "start": 1908, + "end": 1913, + "loc": { + "start": { + "line": 108, + "column": 16 + }, + "end": { + "line": 108, + "column": 21 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1913, + "end": 1914, + "loc": { + "start": { + "line": 108, + "column": 21 + }, + "end": { + "line": 108, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1914, + "end": 1919, + "loc": { + "start": { + "line": 108, + "column": 22 + }, + "end": { + "line": 108, + "column": 27 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1919, + "end": 1920, + "loc": { + "start": { + "line": 108, + "column": 27 + }, + "end": { + "line": 108, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1921, + "end": 1927, + "loc": { + "start": { + "line": 108, + "column": 29 + }, + "end": { + "line": 108, + "column": 35 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1927, + "end": 1928, + "loc": { + "start": { + "line": 108, + "column": 35 + }, + "end": { + "line": 108, + "column": 36 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1929, + "end": 1930, + "loc": { + "start": { + "line": 108, + "column": 37 + }, + "end": { + "line": 108, + "column": 38 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 1932, + "end": 1938, + "loc": { + "start": { + "line": 109, + "column": 1 + }, + "end": { + "line": 109, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1939, + "end": 1944, + "loc": { + "start": { + "line": 109, + "column": 8 + }, + "end": { + "line": 109, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1944, + "end": 1945, + "loc": { + "start": { + "line": 109, + "column": 13 + }, + "end": { + "line": 109, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ipown", + "start": 1945, + "end": 1950, + "loc": { + "start": { + "line": 109, + "column": 14 + }, + "end": { + "line": 109, + "column": 19 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1950, + "end": 1951, + "loc": { + "start": { + "line": 109, + "column": 19 + }, + "end": { + "line": 109, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1951, + "end": 1957, + "loc": { + "start": { + "line": 109, + "column": 20 + }, + "end": { + "line": 109, + "column": 26 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1957, + "end": 1958, + "loc": { + "start": { + "line": 109, + "column": 26 + }, + "end": { + "line": 109, + "column": 27 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1958, + "end": 1959, + "loc": { + "start": { + "line": 109, + "column": 27 + }, + "end": { + "line": 109, + "column": 28 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1960, + "end": 1961, + "loc": { + "start": { + "line": 110, + "column": 0 + }, + "end": { + "line": 110, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 1963, + "end": 1969, + "loc": { + "start": { + "line": 112, + "column": 0 + }, + "end": { + "line": 112, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 1970, + "end": 1978, + "loc": { + "start": { + "line": 112, + "column": 7 + }, + "end": { + "line": 112, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "divn", + "start": 1979, + "end": 1983, + "loc": { + "start": { + "line": 112, + "column": 16 + }, + "end": { + "line": 112, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1983, + "end": 1984, + "loc": { + "start": { + "line": 112, + "column": 20 + }, + "end": { + "line": 112, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 1984, + "end": 1989, + "loc": { + "start": { + "line": 112, + "column": 21 + }, + "end": { + "line": 112, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1989, + "end": 1990, + "loc": { + "start": { + "line": 112, + "column": 26 + }, + "end": { + "line": 112, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 1991, + "end": 1997, + "loc": { + "start": { + "line": 112, + "column": 28 + }, + "end": { + "line": 112, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1997, + "end": 1998, + "loc": { + "start": { + "line": 112, + "column": 34 + }, + "end": { + "line": 112, + "column": 35 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1999, + "end": 2000, + "loc": { + "start": { + "line": 112, + "column": 36 + }, + "end": { + "line": 112, + "column": 37 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2002, + "end": 2008, + "loc": { + "start": { + "line": 113, + "column": 1 + }, + "end": { + "line": 113, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 2009, + "end": 2014, + "loc": { + "start": { + "line": 113, + "column": 8 + }, + "end": { + "line": 113, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2014, + "end": 2015, + "loc": { + "start": { + "line": 113, + "column": 13 + }, + "end": { + "line": 113, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "divn", + "start": 2015, + "end": 2019, + "loc": { + "start": { + "line": 113, + "column": 14 + }, + "end": { + "line": 113, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2019, + "end": 2020, + "loc": { + "start": { + "line": 113, + "column": 18 + }, + "end": { + "line": 113, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 2020, + "end": 2026, + "loc": { + "start": { + "line": 113, + "column": 19 + }, + "end": { + "line": 113, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2026, + "end": 2027, + "loc": { + "start": { + "line": 113, + "column": 25 + }, + "end": { + "line": 113, + "column": 26 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2027, + "end": 2028, + "loc": { + "start": { + "line": 113, + "column": 26 + }, + "end": { + "line": 113, + "column": 27 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2029, + "end": 2030, + "loc": { + "start": { + "line": 114, + "column": 0 + }, + "end": { + "line": 114, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 2032, + "end": 2038, + "loc": { + "start": { + "line": 116, + "column": 0 + }, + "end": { + "line": 116, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 2039, + "end": 2047, + "loc": { + "start": { + "line": 116, + "column": 7 + }, + "end": { + "line": 116, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "idivn", + "start": 2048, + "end": 2053, + "loc": { + "start": { + "line": 116, + "column": 16 + }, + "end": { + "line": 116, + "column": 21 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2053, + "end": 2054, + "loc": { + "start": { + "line": 116, + "column": 21 + }, + "end": { + "line": 116, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 2054, + "end": 2059, + "loc": { + "start": { + "line": 116, + "column": 22 + }, + "end": { + "line": 116, + "column": 27 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2059, + "end": 2060, + "loc": { + "start": { + "line": 116, + "column": 27 + }, + "end": { + "line": 116, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 2061, + "end": 2067, + "loc": { + "start": { + "line": 116, + "column": 29 + }, + "end": { + "line": 116, + "column": 35 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2067, + "end": 2068, + "loc": { + "start": { + "line": 116, + "column": 35 + }, + "end": { + "line": 116, + "column": 36 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2069, + "end": 2070, + "loc": { + "start": { + "line": 116, + "column": 37 + }, + "end": { + "line": 116, + "column": 38 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2072, + "end": 2078, + "loc": { + "start": { + "line": 117, + "column": 1 + }, + "end": { + "line": 117, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 2079, + "end": 2084, + "loc": { + "start": { + "line": 117, + "column": 8 + }, + "end": { + "line": 117, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2084, + "end": 2085, + "loc": { + "start": { + "line": 117, + "column": 13 + }, + "end": { + "line": 117, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "idivn", + "start": 2085, + "end": 2090, + "loc": { + "start": { + "line": 117, + "column": 14 + }, + "end": { + "line": 117, + "column": 19 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2090, + "end": 2091, + "loc": { + "start": { + "line": 117, + "column": 19 + }, + "end": { + "line": 117, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 2091, + "end": 2097, + "loc": { + "start": { + "line": 117, + "column": 20 + }, + "end": { + "line": 117, + "column": 26 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2097, + "end": 2098, + "loc": { + "start": { + "line": 117, + "column": 26 + }, + "end": { + "line": 117, + "column": 27 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2098, + "end": 2099, + "loc": { + "start": { + "line": 117, + "column": 27 + }, + "end": { + "line": 117, + "column": 28 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2100, + "end": 2101, + "loc": { + "start": { + "line": 118, + "column": 0 + }, + "end": { + "line": 118, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 2103, + "end": 2109, + "loc": { + "start": { + "line": 120, + "column": 0 + }, + "end": { + "line": 120, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 2110, + "end": 2118, + "loc": { + "start": { + "line": 120, + "column": 7 + }, + "end": { + "line": 120, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "modn", + "start": 2119, + "end": 2123, + "loc": { + "start": { + "line": 120, + "column": 16 + }, + "end": { + "line": 120, + "column": 20 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2123, + "end": 2124, + "loc": { + "start": { + "line": 120, + "column": 20 + }, + "end": { + "line": 120, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 2124, + "end": 2129, + "loc": { + "start": { + "line": 120, + "column": 21 + }, + "end": { + "line": 120, + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2129, + "end": 2130, + "loc": { + "start": { + "line": 120, + "column": 26 + }, + "end": { + "line": 120, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 2131, + "end": 2137, + "loc": { + "start": { + "line": 120, + "column": 28 + }, + "end": { + "line": 120, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2137, + "end": 2138, + "loc": { + "start": { + "line": 120, + "column": 34 + }, + "end": { + "line": 120, + "column": 35 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2139, + "end": 2140, + "loc": { + "start": { + "line": 120, + "column": 36 + }, + "end": { + "line": 120, + "column": 37 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2142, + "end": 2148, + "loc": { + "start": { + "line": 121, + "column": 1 + }, + "end": { + "line": 121, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 2149, + "end": 2154, + "loc": { + "start": { + "line": 121, + "column": 8 + }, + "end": { + "line": 121, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2154, + "end": 2155, + "loc": { + "start": { + "line": 121, + "column": 13 + }, + "end": { + "line": 121, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "modn", + "start": 2155, + "end": 2159, + "loc": { + "start": { + "line": 121, + "column": 14 + }, + "end": { + "line": 121, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2159, + "end": 2160, + "loc": { + "start": { + "line": 121, + "column": 18 + }, + "end": { + "line": 121, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 2160, + "end": 2166, + "loc": { + "start": { + "line": 121, + "column": 19 + }, + "end": { + "line": 121, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2166, + "end": 2167, + "loc": { + "start": { + "line": 121, + "column": 25 + }, + "end": { + "line": 121, + "column": 26 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2167, + "end": 2168, + "loc": { + "start": { + "line": 121, + "column": 26 + }, + "end": { + "line": 121, + "column": 27 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2169, + "end": 2170, + "loc": { + "start": { + "line": 122, + "column": 0 + }, + "end": { + "line": 122, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 2172, + "end": 2178, + "loc": { + "start": { + "line": 124, + "column": 0 + }, + "end": { + "line": 124, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 2179, + "end": 2187, + "loc": { + "start": { + "line": 124, + "column": 7 + }, + "end": { + "line": 124, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "imodn", + "start": 2188, + "end": 2193, + "loc": { + "start": { + "line": 124, + "column": 16 + }, + "end": { + "line": 124, + "column": 21 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2193, + "end": 2194, + "loc": { + "start": { + "line": 124, + "column": 21 + }, + "end": { + "line": 124, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 2194, + "end": 2199, + "loc": { + "start": { + "line": 124, + "column": 22 + }, + "end": { + "line": 124, + "column": 27 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2199, + "end": 2200, + "loc": { + "start": { + "line": 124, + "column": 27 + }, + "end": { + "line": 124, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 2201, + "end": 2207, + "loc": { + "start": { + "line": 124, + "column": 29 + }, + "end": { + "line": 124, + "column": 35 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2207, + "end": 2208, + "loc": { + "start": { + "line": 124, + "column": 35 + }, + "end": { + "line": 124, + "column": 36 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2209, + "end": 2210, + "loc": { + "start": { + "line": 124, + "column": 37 + }, + "end": { + "line": 124, + "column": 38 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2212, + "end": 2218, + "loc": { + "start": { + "line": 125, + "column": 1 + }, + "end": { + "line": 125, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 2219, + "end": 2224, + "loc": { + "start": { + "line": 125, + "column": 8 + }, + "end": { + "line": 125, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2224, + "end": 2225, + "loc": { + "start": { + "line": 125, + "column": 13 + }, + "end": { + "line": 125, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "imodn", + "start": 2225, + "end": 2230, + "loc": { + "start": { + "line": 125, + "column": 14 + }, + "end": { + "line": 125, + "column": 19 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2230, + "end": 2231, + "loc": { + "start": { + "line": 125, + "column": 19 + }, + "end": { + "line": 125, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 2231, + "end": 2237, + "loc": { + "start": { + "line": 125, + "column": 20 + }, + "end": { + "line": 125, + "column": 26 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2237, + "end": 2238, + "loc": { + "start": { + "line": 125, + "column": 26 + }, + "end": { + "line": 125, + "column": 27 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2238, + "end": 2239, + "loc": { + "start": { + "line": 125, + "column": 27 + }, + "end": { + "line": 125, + "column": 28 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2240, + "end": 2241, + "loc": { + "start": { + "line": 126, + "column": 0 + }, + "end": { + "line": 126, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 2243, + "end": 2249, + "loc": { + "start": { + "line": 128, + "column": 0 + }, + "end": { + "line": 128, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 2250, + "end": 2258, + "loc": { + "start": { + "line": 128, + "column": 7 + }, + "end": { + "line": 128, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "divmodn", + "start": 2259, + "end": 2266, + "loc": { + "start": { + "line": 128, + "column": 16 + }, + "end": { + "line": 128, + "column": 23 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2266, + "end": 2267, + "loc": { + "start": { + "line": 128, + "column": 23 + }, + "end": { + "line": 128, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 2267, + "end": 2272, + "loc": { + "start": { + "line": 128, + "column": 24 + }, + "end": { + "line": 128, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2272, + "end": 2273, + "loc": { + "start": { + "line": 128, + "column": 29 + }, + "end": { + "line": 128, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 2274, + "end": 2280, + "loc": { + "start": { + "line": 128, + "column": 31 + }, + "end": { + "line": 128, + "column": 37 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2280, + "end": 2281, + "loc": { + "start": { + "line": 128, + "column": 37 + }, + "end": { + "line": 128, + "column": 38 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2282, + "end": 2283, + "loc": { + "start": { + "line": 128, + "column": 39 + }, + "end": { + "line": 128, + "column": 40 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2285, + "end": 2291, + "loc": { + "start": { + "line": 129, + "column": 1 + }, + "end": { + "line": 129, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 2292, + "end": 2297, + "loc": { + "start": { + "line": 129, + "column": 8 + }, + "end": { + "line": 129, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2297, + "end": 2298, + "loc": { + "start": { + "line": 129, + "column": 13 + }, + "end": { + "line": 129, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "divmodn", + "start": 2298, + "end": 2305, + "loc": { + "start": { + "line": 129, + "column": 14 + }, + "end": { + "line": 129, + "column": 21 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2305, + "end": 2306, + "loc": { + "start": { + "line": 129, + "column": 21 + }, + "end": { + "line": 129, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 2306, + "end": 2312, + "loc": { + "start": { + "line": 129, + "column": 22 + }, + "end": { + "line": 129, + "column": 28 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2312, + "end": 2313, + "loc": { + "start": { + "line": 129, + "column": 28 + }, + "end": { + "line": 129, + "column": 29 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2313, + "end": 2314, + "loc": { + "start": { + "line": 129, + "column": 29 + }, + "end": { + "line": 129, + "column": 30 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2315, + "end": 2316, + "loc": { + "start": { + "line": 130, + "column": 0 + }, + "end": { + "line": 130, + "column": 1 + } + } + }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 2318, + "end": 2324, + "loc": { + "start": { + "line": 132, + "column": 0 + }, + "end": { + "line": 132, + "column": 6 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 2325, + "end": 2333, + "loc": { + "start": { + "line": 132, + "column": 7 + }, + "end": { + "line": 132, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "idivmodn", + "start": 2334, + "end": 2342, + "loc": { + "start": { + "line": 132, + "column": 16 + }, + "end": { + "line": 132, + "column": 24 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2342, + "end": 2343, + "loc": { + "start": { + "line": 132, + "column": 24 + }, + "end": { + "line": 132, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 2343, + "end": 2348, + "loc": { + "start": { + "line": 132, + "column": 25 + }, + "end": { + "line": 132, + "column": 30 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2348, + "end": 2349, + "loc": { + "start": { + "line": 132, + "column": 30 + }, + "end": { + "line": 132, + "column": 31 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 2350, + "end": 2356, + "loc": { + "start": { + "line": 132, + "column": 32 + }, + "end": { + "line": 132, + "column": 38 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2356, + "end": 2357, + "loc": { + "start": { + "line": 132, + "column": 38 + }, + "end": { + "line": 132, + "column": 39 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2358, + "end": 2359, + "loc": { + "start": { + "line": 132, + "column": 40 + }, + "end": { + "line": 132, + "column": 41 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 2361, + "end": 2367, + "loc": { + "start": { + "line": 133, + "column": 1 + }, + "end": { + "line": 133, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "first", + "start": 2368, + "end": 2373, + "loc": { + "start": { + "line": 133, + "column": 8 + }, + "end": { + "line": 133, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2373, + "end": 2374, + "loc": { + "start": { + "line": 133, + "column": 13 + }, + "end": { + "line": 133, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "idivmodn", + "start": 2374, + "end": 2382, + "loc": { + "start": { + "line": 133, + "column": 14 + }, + "end": { + "line": 133, + "column": 22 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2382, + "end": 2383, + "loc": { + "start": { + "line": 133, + "column": 22 + }, + "end": { + "line": 133, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "second", + "start": 2383, + "end": 2389, + "loc": { + "start": { + "line": 133, + "column": 23 + }, + "end": { + "line": 133, + "column": 29 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2389, + "end": 2390, + "loc": { + "start": { + "line": 133, + "column": 29 + }, + "end": { + "line": 133, + "column": 30 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2390, + "end": 2391, + "loc": { + "start": { + "line": 133, + "column": 30 + }, + "end": { + "line": 133, + "column": 31 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2392, + "end": 2393, + "loc": { + "start": { + "line": 134, + "column": 0 + }, + "end": { + "line": 134, + "column": 1 + } + } + }, + { + "type": { + "label": "eof", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2394, + "end": 2394, + "loc": { + "start": { + "line": 135, + "column": 0 + }, + "end": { + "line": 135, + "column": 0 + } + } + } + ] +} \ No newline at end of file diff --git a/badge.svg b/badge.svg new file mode 100644 index 0000000..39bdda8 --- /dev/null +++ b/badge.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + document + document + 0% + 0% + + diff --git a/class/src/Integer.js~Integer.html b/class/src/Integer.js~Integer.html new file mode 100644 index 0000000..ec1c18e --- /dev/null +++ b/class/src/Integer.js~Integer.html @@ -0,0 +1,7593 @@ + + + + + + Integer | @aureooms/js-integer + + + + + + + +
+ Home + Manual + Reference + Source + + +
+ + + +
+
import {Integer} from '@aureooms/js-integer/src/Integer.js'
+ public + class + + + + | source +
+ +
+

Integer

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

Constructor Summary

+ + + + + + + + + +
Public Constructor
+ public + + + + + +
+

+ + + + constructor() +

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

Member Summary

+ + + + + + + + + + + + + + + + + + + +
Private Members
+ private + + + + + +
+

+ + + + _base: * +

+
+
+ + + +
+
+ + +
+ private + + + + + +
+

+ + + + _is_negative: * +

+
+
+ + + +
+
+ + +
+ private + + + + + +
+

+ + + + _limbs: * +

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

Method Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Public Methods
+ public + + + + + +
+

+ + + + abs(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + add(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + addn(number: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + bin(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + bits(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + clone(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + cmp(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + cmpn(number: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + digits(base: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + div(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + divide_knowing_divisible_by(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + divides(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + divmod(other: *): undefined[] +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + divmodn(number: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + divn(number: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + divround(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + egcd(other: *): {"gcd": *, "x": *, "y": *, "u": *, "v": *} +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + eq(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + eqn(number: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + gcd(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + ge(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + gen(number: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + gt(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + gtn(number: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + hex(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + iabs(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + iadd(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + iaddn(number: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + idiv(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + idivmod(other: *): undefined[] +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + idivmodn(number: *): undefined[] +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + idivn(number: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + imod(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + imodn(number: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + imul(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + imuln(number: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + ipow(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + ipown(number: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + iseven(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + isnegative(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + isnonnegative(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + isnonpositive(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + isnonzero(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + isodd(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + isone(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + ispositive(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + isquare(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + isub(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + isubn(number: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + iszero(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + le(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + len(number: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + lt(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + ltn(number: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + mod(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + modn(number: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + move(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + mul(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + muln(number: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + ne(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + negate(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + nen(number: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + oct(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + opposite(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + parity(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + pow(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + pown(x: Number): Integer +

+
+
+ + +

Computes this raised to the xth power.

+
+
+
+ + +
+ public + + + + + +
+

+ + + + sign(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + square(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + sub(other: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + subn(number: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + toJSON(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + toNumber(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + toString(base: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + valueOf(): * +

+
+
+ + + +
+
+ + +
+ + + + + + + + + + +
Private Methods
+ private + + + + + +
+

+ + + + _limbs_in_base(base: *): * +

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

Public Constructors

+ +
+

+ public + + + + + + constructor() + + + + source + +

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

Private Members

+ +
+

+ private + + + + + + _base: * + + + + source + +

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

+ private + + + + + + _is_negative: * + + + + source + +

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

+ private + + + + + + _limbs: * + + + + source + +

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

Public Methods

+ +
+

+ public + + + + + + abs(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + add(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + addn(number: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + bin(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + bits(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + clone(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + cmp(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + cmpn(number: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + digits(base: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
base*
  • optional
  • +
  • default: DEFAULT_DISPLAY_BASE
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + div(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + divide_knowing_divisible_by(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + divides(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + divmod(other: *): undefined[] + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
undefined[]
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + divmodn(number: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + divn(number: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + divround(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + egcd(other: *): {"gcd": *, "x": *, "y": *, "u": *, "v": *} + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
{"gcd": *, "x": *, "y": *, "u": *, "v": *}
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + eq(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + eqn(number: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + gcd(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + ge(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + gen(number: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + gt(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + gtn(number: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + hex(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + iabs(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + iadd(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + iaddn(number: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + idiv(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + idivmod(other: *): undefined[] + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
undefined[]
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + idivmodn(number: *): undefined[] + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
+
+
+ +
+

Return:

+ + + + + + + +
undefined[]
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + idivn(number: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + imod(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + imodn(number: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + imul(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + imuln(number: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + ipow(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + ipown(number: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + iseven(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + isnegative(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + isnonnegative(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + isnonpositive(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + isnonzero(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + isodd(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + isone(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + ispositive(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + isquare(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + isub(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + isubn(number: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + iszero(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + le(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + len(number: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + lt(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + ltn(number: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + mod(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + modn(number: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + move(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + mul(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + muln(number: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + ne(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + negate(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + nen(number: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + oct(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + opposite(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + parity(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + pow(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + pown(x: Number): Integer + + + + source + +

+ + + + +

Computes this raised to the xth power. +x is a double smaller or equal to 2^53.

+
+ + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
xNumber

The power to raise this to.

+
+
+
+ +
+

Return:

+ + + + + + + +
Integer

this ^ x

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

+ public + + + + + + sign(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + square(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + sub(other: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
other*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + subn(number: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + toJSON(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + toNumber(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + toString(base: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
base*
  • optional
  • +
  • default: DEFAULT_DISPLAY_BASE
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + valueOf(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+

Private Methods

+ +
+

+ private + + + + + + _limbs_in_base(base: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
base*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + diff --git a/class/src/IntegerRing.js~IntegerRing.html b/class/src/IntegerRing.js~IntegerRing.html new file mode 100644 index 0000000..dadee76 --- /dev/null +++ b/class/src/IntegerRing.js~IntegerRing.html @@ -0,0 +1,1562 @@ + + + + + + IntegerRing | @aureooms/js-integer + + + + + + + +
+ Home + Manual + Reference + Source + + +
+ + + +
+
import {IntegerRing} from '@aureooms/js-integer/src/IntegerRing.js'
+ public + class + + + + | source +
+ +
+

IntegerRing

+ +
+ You can directly use an instance of this class. + + ZZ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + +

Constructor Summary

+ + + + + + + + + +
Public Constructor
+ public + + + + + +
+

+ + + + constructor() +

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

Member Summary

+ + + + + + + + + +
Public Members
+ public + + + + + +
+

+ + + + name: * +

+
+
+ + + +
+
+ + +
+ + + + + + + + + + +
Private Members
+ private + + + + + +
+

+ + + + _base: * +

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

Method Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Public Methods
+ public + + + + + +
+

+ + + + $0(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + $1(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + $_1(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + characteristic(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + from(object: *, base: *, is_negative: number): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + from_digits(digits: *, base: *, is_negative: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + from_number(number: *, is_negative: number): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + from_string(string: *, base: number, is_negative: number): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + has(x: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + max(a: *, b: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + min(a: *, b: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + toString(): * +

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

Public Constructors

+ +
+

+ public + + + + + + constructor() + + + + source + +

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

Public Members

+ +
+

+ public + + + + + + name: * + + + + source + +

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

Private Members

+ +
+

+ private + + + + + + _base: * + + + + source + +

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

Public Methods

+ +
+

+ public + + + + + + $0(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + $1(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + $_1(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + characteristic(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + from(object: *, base: *, is_negative: number): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
object*
base*
  • optional
  • +
  • default: undefined
is_negativenumber
  • optional
  • +
  • default: 0
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + from_digits(digits: *, base: *, is_negative: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
digits*
base*
is_negative*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + from_number(number: *, is_negative: number): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
is_negativenumber
  • optional
  • +
  • default: 0
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + from_string(string: *, base: number, is_negative: number): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
string*
basenumber
  • optional
  • +
  • default: 10
is_negativenumber
  • optional
  • +
  • default: 0
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + has(x: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
x*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + max(a: *, b: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
a*
b*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + min(a: *, b: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
a*
b*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + toString(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + diff --git a/class/src/ZeroDivisionError.js~ZeroDivisionError.html b/class/src/ZeroDivisionError.js~ZeroDivisionError.html new file mode 100644 index 0000000..39946a2 --- /dev/null +++ b/class/src/ZeroDivisionError.js~ZeroDivisionError.html @@ -0,0 +1,237 @@ + + + + + + ZeroDivisionError | @aureooms/js-integer + + + + + + + +
+ Home + Manual + Reference + Source + + +
+ + + +
+
import {ZeroDivisionError} from '@aureooms/js-integer/src/ZeroDivisionError.js'
+ public + class + + + + | source +
+ +
+

ZeroDivisionError

+ + + + + +

Extends:

Error → ZeroDivisionError
+ + + + + + + + + + + + + + + + + + + +
+ + + + + +

Method Summary

+ + + + + + + + + +
Public Methods
+ public + + + + + +
+

+ + + + toString(): string +

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

Public Methods

+ +
+

+ public + + + + + + toString(): string + + + + source + +

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

Return:

+ + + + + + + +
string
+
+
+
+ + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + diff --git a/coverage.json b/coverage.json new file mode 100644 index 0000000..c46b6a6 --- /dev/null +++ b/coverage.json @@ -0,0 +1,200 @@ +{ + "coverage": "0.71%", + "expectCount": 140, + "actualCount": 1, + "files": { + "src/DEFAULT_DISPLAY_BASE.js": { + "expectCount": 1, + "actualCount": 0, + "undocumentLines": [ + 1 + ] + }, + "src/DEFAULT_REPRESENTATION_BASE.js": { + "expectCount": 1, + "actualCount": 0, + "undocumentLines": [ + 13 + ] + }, + "src/Integer.js": { + "expectCount": 81, + "actualCount": 1, + "undocumentLines": [ + 30, + 31, + 32, + 33, + 34, + 37, + 44, + 48, + 55, + 69, + 90, + 95, + 100, + 105, + 141, + 146, + 150, + 154, + 169, + 174, + 178, + 200, + 204, + 209, + 214, + 220, + 226, + 230, + 234, + 239, + 243, + 247, + 251, + 256, + 260, + 267, + 315, + 321, + 325, + 330, + 334, + 339, + 343, + 347, + 351, + 355, + 360, + 364, + 368, + 372, + 376, + 380, + 386, + 390, + 394, + 398, + 402, + 406, + 410, + 422, + 426, + 430, + 435, + 455, + 459, + 463, + 467, + 471, + 475, + 479, + 483, + 487, + 491, + 495, + 499, + 503, + 507, + 517, + 566, + 592 + ] + }, + "src/IntegerRing.js": { + "expectCount": 16, + "actualCount": 0, + "undocumentLines": [ + 8, + 9, + 10, + 11, + 14, + 18, + 62, + 70, + 89, + 101, + 105, + 110, + 114, + 118, + 123, + 127 + ] + }, + "src/ZZ.js": { + "expectCount": 1, + "actualCount": 0, + "undocumentLines": [ + 4 + ] + }, + "src/ZeroDivisionError.js": { + "expectCount": 2, + "actualCount": 0, + "undocumentLines": [ + 1, + 2 + ] + }, + "src/_from_number.js": { + "expectCount": 1, + "actualCount": 0, + "undocumentLines": [ + 4 + ] + }, + "src/_limits.js": { + "expectCount": 4, + "actualCount": 0, + "undocumentLines": [ + 1, + 2, + 3, + 4 + ] + }, + "src/integer.js": { + "expectCount": 33, + "actualCount": 0, + "undocumentLines": [ + 4, + 8, + 12, + 16, + 20, + 24, + 28, + 32, + 36, + 40, + 44, + 48, + 52, + 56, + 60, + 64, + 68, + 72, + 76, + 80, + 84, + 88, + 92, + 96, + 100, + 104, + 108, + 112, + 116, + 120, + 124, + 128, + 132 + ] + } + } +} \ No newline at end of file diff --git a/css/github.css b/css/github.css new file mode 100644 index 0000000..db9ca23 --- /dev/null +++ b/css/github.css @@ -0,0 +1,83 @@ +/* github markdown */ +.github-markdown { + font-size: 16px; +} + +.github-markdown h1, +.github-markdown h2, +.github-markdown h3, +.github-markdown h4, +.github-markdown h5 { + margin-top: 1em; + margin-bottom: 16px; + font-weight: bold; + padding: 0; +} + +.github-markdown h1:nth-of-type(1) { + margin-top: 0; +} + +.github-markdown h1 { + font-size: 2em; + padding-bottom: 0.3em; +} + +.github-markdown h2 { + font-size: 1.75em; + padding-bottom: 0.3em; +} + +.github-markdown h3 { + font-size: 1.5em; +} + +.github-markdown h4 { + font-size: 1.25em; +} + +.github-markdown h5 { + font-size: 1em; +} + +.github-markdown ul, .github-markdown ol { + padding-left: 2em; +} + +.github-markdown pre > code { + font-size: 0.85em; +} + +.github-markdown table { + margin-bottom: 1em; + border-collapse: collapse; + border-spacing: 0; +} + +.github-markdown table tr { + background-color: #fff; + border-top: 1px solid #ccc; +} + +.github-markdown table th, +.github-markdown table td { + padding: 6px 13px; + border: 1px solid #ddd; +} + +.github-markdown table tr:nth-child(2n) { + background-color: #f8f8f8; +} + +.github-markdown hr { + border-right: 0; + border-bottom: 1px solid #e5e5e5; + border-left: 0; + border-top: 0; +} + +/** badge(.svg) does not have border */ +.github-markdown img:not([src*=".svg"]) { + max-width: 100%; + box-shadow: 1px 1px 1px rgba(0,0,0,0.5); +} diff --git a/css/identifiers.css b/css/identifiers.css new file mode 100644 index 0000000..52c8461 --- /dev/null +++ b/css/identifiers.css @@ -0,0 +1,37 @@ +.identifiers-wrap { + display: flex; + align-items: flex-start; +} + +.identifier-dir-tree { + background: #fff; + border: solid 1px #ddd; + border-radius: 0.25em; + top: 52px; + position: -webkit-sticky; + position: sticky; + max-height: calc(100vh - 155px); + overflow-y: scroll; + min-width: 200px; + margin-left: 1em; +} + +.identifier-dir-tree-header { + padding: 0.5em; + background-color: #fafafa; + border-bottom: solid 1px #ddd; +} + +.identifier-dir-tree-content { + padding: 0 0.5em 0; +} + +.identifier-dir-tree-content > div { + padding-top: 0.25em; + padding-bottom: 0.25em; +} + +.identifier-dir-tree-content a { + color: inherit; +} + diff --git a/css/manual.css b/css/manual.css new file mode 100644 index 0000000..138a07f --- /dev/null +++ b/css/manual.css @@ -0,0 +1,134 @@ +.github-markdown .manual-toc { + padding-left: 0; +} + +.manual-index .manual-cards { + display: flex; + flex-wrap: wrap; +} + +.manual-index .manual-card-wrap { + width: 280px; + padding: 10px 20px 10px 0; + box-sizing: border-box; +} + +.manual-index .manual-card-wrap > h1 { + margin: 0; + font-size: 1em; + font-weight: 600; + padding: 0.2em 0 0.2em 0.5em; + border-radius: 0.1em 0.1em 0 0; + border: none; +} + +.manual-index .manual-card-wrap > h1 span { + color: #555; +} + +.manual-index .manual-card { + height: 200px; + overflow: hidden; + border: solid 1px rgba(230, 230, 230, 0.84); + border-radius: 0 0 0.1em 0.1em; + padding: 8px; + position: relative; +} + +.manual-index .manual-card > div { + transform: scale(0.4); + transform-origin: 0 0; + width: 250%; +} + +.manual-index .manual-card > a { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(210, 210, 210, 0.1); +} + +.manual-index .manual-card > a:hover { + background: none; +} + +.manual-index .manual-badge { + margin: 0; +} + +.manual-index .manual-user-index { + margin-bottom: 1em; + border-bottom: solid 1px #ddd; +} + +.manual-root .navigation { + padding-left: 4px; + margin-top: 4px; +} + +.navigation .manual-toc-root > div { + padding-left: 0.25em; + padding-right: 0.75em; +} + +.github-markdown .manual-toc-title a { + color: inherit; +} + +.manual-breadcrumb-list { + font-size: 0.8em; + margin-bottom: 1em; +} + +.manual-toc-title a:hover { + color: #039BE5; +} + +.manual-toc li { + margin: 0.75em 0; + list-style-type: none; +} + +.navigation .manual-toc [class^="indent-h"] a { + color: #666; +} + +.navigation .manual-toc .indent-h1 a { + color: #555; + font-weight: 600; + display: block; +} + +.manual-toc .indent-h1 { + display: block; + margin: 0.4em 0 0 0.25em; + padding: 0.2em 0 0.2em 0.5em; + border-radius: 0.1em; +} + +.manual-root .navigation .manual-toc li:not(.indent-h1) { + margin-top: 0.5em; +} + +.manual-toc .indent-h2 { + display: none; + margin-left: 1.5em; +} +.manual-toc .indent-h3 { + display: none; + margin-left: 2.5em; +} +.manual-toc .indent-h4 { + display: none; + margin-left: 3.5em; +} +.manual-toc .indent-h5 { + display: none; + margin-left: 4.5em; +} + +.manual-nav li { + margin: 0.75em 0; +} diff --git a/css/prettify-tomorrow.css b/css/prettify-tomorrow.css new file mode 100644 index 0000000..b6f92a7 --- /dev/null +++ b/css/prettify-tomorrow.css @@ -0,0 +1,132 @@ +/* Tomorrow Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* Pretty printing styles. Used with prettify.js. */ +/* SPAN elements with the classes below are added by prettyprint. */ +/* plain text */ +.pln { + color: #4d4d4c; } + +@media screen { + /* string content */ + .str { + color: #718c00; } + + /* a keyword */ + .kwd { + color: #8959a8; } + + /* a comment */ + .com { + color: #8e908c; } + + /* a type name */ + .typ { + color: #4271ae; } + + /* a literal value */ + .lit { + color: #f5871f; } + + /* punctuation */ + .pun { + color: #4d4d4c; } + + /* lisp open bracket */ + .opn { + color: #4d4d4c; } + + /* lisp close bracket */ + .clo { + color: #4d4d4c; } + + /* a markup tag name */ + .tag { + color: #c82829; } + + /* a markup attribute name */ + .atn { + color: #f5871f; } + + /* a markup attribute value */ + .atv { + color: #3e999f; } + + /* a declaration */ + .dec { + color: #f5871f; } + + /* a variable name */ + .var { + color: #c82829; } + + /* a function name */ + .fun { + color: #4271ae; } } +/* Use higher contrast and text-weight for printable form. */ +@media print, projection { + .str { + color: #060; } + + .kwd { + color: #006; + font-weight: bold; } + + .com { + color: #600; + font-style: italic; } + + .typ { + color: #404; + font-weight: bold; } + + .lit { + color: #044; } + + .pun, .opn, .clo { + color: #440; } + + .tag { + color: #006; + font-weight: bold; } + + .atn { + color: #404; } + + .atv { + color: #060; } } +/* Style */ +/* +pre.prettyprint { + background: white; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 12px; + line-height: 1.5; + border: 1px solid #ccc; + padding: 10px; } +*/ + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; } + +/* IE indents via margin-left */ +li.L0, +li.L1, +li.L2, +li.L3, +li.L4, +li.L5, +li.L6, +li.L7, +li.L8, +li.L9 { + /* */ } + +/* Alternate shading for lines */ +li.L1, +li.L3, +li.L5, +li.L7, +li.L9 { + /* */ } diff --git a/css/search.css b/css/search.css new file mode 100644 index 0000000..9940a54 --- /dev/null +++ b/css/search.css @@ -0,0 +1,84 @@ +/* search box */ +.search-box { + position: absolute; + top: 10px; + right: 50px; + padding-right: 8px; + padding-bottom: 10px; + line-height: normal; + font-size: 12px; +} + +.search-box img { + width: 20px; + vertical-align: top; +} + +.search-input { + display: inline; + visibility: hidden; + width: 0; + padding: 2px; + height: 1.5em; + outline: none; + background: transparent; + border: 1px #0af; + border-style: none none solid none; + vertical-align: bottom; +} + +.search-input-edge { + display: none; + width: 1px; + height: 5px; + background-color: #0af; + vertical-align: bottom; +} + +.search-result { + position: absolute; + display: none; + height: 600px; + width: 100%; + padding: 0; + margin-top: 5px; + margin-left: 24px; + background: white; + box-shadow: 1px 1px 4px rgb(0,0,0); + white-space: nowrap; + overflow-y: scroll; +} + +.search-result-import-path { + color: #aaa; + font-size: 12px; +} + +.search-result li { + list-style: none; + padding: 2px 4px; +} + +.search-result li a { + display: block; +} + +.search-result li.selected { + background: #ddd; +} + +.search-result li.search-separator { + background: rgb(37, 138, 175); + color: white; +} + +.search-box.active .search-input { + visibility: visible; + transition: width 0.2s ease-out; + width: 300px; +} + +.search-box.active .search-input-edge { + display: inline-block; +} + diff --git a/css/source.css b/css/source.css new file mode 100644 index 0000000..3b9c92d --- /dev/null +++ b/css/source.css @@ -0,0 +1,55 @@ +table.files-summary { + width: 100%; + margin: 10px 0; + border-spacing: 0; + border: 0; + border-collapse: collapse; + text-align: right; +} + +table.files-summary tbody tr:hover { + background: #eee; +} + +table.files-summary td:first-child, +table.files-summary td:nth-of-type(2) { + text-align: left; +} + +table.files-summary[data-use-coverage="false"] td.coverage { + display: none; +} + +table.files-summary thead { + background: #fafafa; +} + +table.files-summary td { + border: solid 1px #ddd; + padding: 4px 10px; + vertical-align: top; +} + +table.files-summary td.identifiers > span { + display: block; + margin-top: 4px; +} +table.files-summary td.identifiers > span:first-child { + margin-top: 0; +} + +table.files-summary .coverage-count { + font-size: 12px; + color: #aaa; + display: inline-block; + min-width: 40px; +} + +.total-coverage-count { + position: relative; + bottom: 2px; + font-size: 12px; + color: #666; + font-weight: 500; + padding-left: 5px; +} diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..fe3b2d9 --- /dev/null +++ b/css/style.css @@ -0,0 +1,608 @@ +@import url(https://fonts.googleapis.com/css?family=Roboto:400,300,700); +@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400italic,600,700); +@import url(./manual.css); +@import url(./source.css); +@import url(./test.css); +@import url(./identifiers.css); +@import url(./github.css); +@import url(./search.css); + +* { + margin: 0; + padding: 0; + text-decoration: none; +} + +html +{ + font-family: 'Source Sans Pro', 'Roboto', sans-serif; + overflow: auto; + /*font-size: 14px;*/ + /*color: #4d4e53;*/ + /*color: rgba(0, 0, 0, .68);*/ + color: #555; + background-color: #fff; +} + +a { + /*color: #0095dd;*/ + /*color:rgb(37, 138, 175);*/ + color: #039BE5; +} + +code a:hover { + text-decoration: underline; +} + +ul, ol { + padding-left: 20px; +} + +ul li { + list-style: disc; + margin: 4px 0; +} + +ol li { + margin: 4px 0; +} + +h1 { + margin-bottom: 10px; + font-size: 34px; + font-weight: 300; + border-bottom: solid 1px #ddd; +} + +h2 { + margin-top: 24px; + margin-bottom: 10px; + font-size: 20px; + border-bottom: solid 1px #ddd; + font-weight: 300; +} + +h3 { + position: relative; + font-size: 16px; + margin-bottom: 12px; + padding: 4px; + font-weight: 300; +} + +details { + cursor: pointer; +} + +del { + text-decoration: line-through; +} + +p { + margin-bottom: 15px; + line-height: 1.5; +} + +code { + font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; +} + +pre > code { + display: block; +} + +pre.prettyprint, pre > code { + padding: 4px; + margin: 1em 0; + background-color: #f5f5f5; + border-radius: 3px; +} + +pre.prettyprint > code { + margin: 0; +} + +p > code, +li > code { + padding: 0.2em 0.5em; + margin: 0; + font-size: 85%; + background-color: rgba(0,0,0,0.04); + border-radius: 3px; +} + +.code { + font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; + font-size: 13px; +} + +.import-path pre.prettyprint, +.import-path pre.prettyprint code { + margin: 0; + padding: 0; + border: none; + background: white; +} + +.layout-container { + /*display: flex;*/ + /*flex-direction: row;*/ + /*justify-content: flex-start;*/ + /*align-items: stretch;*/ +} + +.layout-container > header { + display: flex; + height: 40px; + line-height: 40px; + font-size: 16px; + padding: 0 10px; + margin: 0; + position: fixed; + width: 100%; + z-index: 1; + background-color: #fafafa; + top: 0; + border-bottom: solid 1px #ddd; +} +.layout-container > header > a{ + margin: 0 5px; + color: #444; +} + +.layout-container > header > a.repo-url-github { + font-size: 0; + display: inline-block; + width: 20px; + height: 38px; + background: url("../image/github.png") no-repeat center; + background-size: 20px; + vertical-align: top; +} + +.navigation { + position: fixed; + top: 0; + left: 0; + box-sizing: border-box; + width: 250px; + height: 100%; + padding-top: 40px; + padding-left: 15px; + padding-bottom: 2em; + margin-top:1em; + overflow-x: scroll; + box-shadow: rgba(255, 255, 255, 1) -1px 0 0 inset; + border-right: 1px solid #ddd; +} + +.navigation ul { + padding: 0; +} + +.navigation li { + list-style: none; + margin: 4px 0; + white-space: nowrap; +} + +.navigation li a { + color: #666; +} + +.navigation .nav-dir-path { + display: block; + margin-top: 0.7em; + margin-bottom: 0.25em; + font-weight: 600; +} + +.kind-class, +.kind-interface, +.kind-function, +.kind-typedef, +.kind-variable, +.kind-external { + margin-left: 0.75em; + width: 1.2em; + height: 1.2em; + display: inline-block; + text-align: center; + border-radius: 0.2em; + margin-right: 0.2em; + font-weight: bold; + line-height: 1.2em; +} + +.kind-class { + color: #009800; + background-color: #bfe5bf; +} + +.kind-interface { + color: #fbca04; + background-color: #fef2c0; +} + +.kind-function { + color: #6b0090; + background-color: #d6bdde; +} + +.kind-variable { + color: #eb6420; + background-color: #fad8c7; +} + +.kind-typedef { + color: #db001e; + background-color: #edbec3; +} + +.kind-external { + color: #0738c3; + background-color: #bbcbea; +} + +.summary span[class^="kind-"] { + margin-left: 0; +} + +h1 .version, +h1 .url a { + font-size: 14px; + color: #aaa; +} + +.content { + margin-top: 40px; + margin-left: 250px; + padding: 10px 50px 10px 20px; +} + +.header-notice { + font-size: 14px; + color: #aaa; + margin: 0; +} + +.expression-extends .prettyprint { + margin-left: 10px; + background: white; +} + +.extends-chain { + border-bottom: 1px solid#ddd; + padding-bottom: 10px; + margin-bottom: 10px; +} + +.extends-chain span:nth-of-type(1) { + padding-left: 10px; +} + +.extends-chain > div { + margin: 5px 0; +} + +.description table { + font-size: 14px; + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +.description thead { + background: #999; + color: white; +} + +.description table td, +.description table th { + border: solid 1px #ddd; + padding: 4px; + font-weight: normal; +} + +.flat-list ul { + padding-left: 0; +} + +.flat-list li { + display: inline; + list-style: none; +} + +table.summary { + width: 100%; + margin: 10px 0; + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +table.summary thead { + background: #fafafa; +} + +table.summary td { + border: solid 1px #ddd; + padding: 4px 10px; +} + +table.summary tbody td:nth-child(1) { + text-align: right; + white-space: nowrap; + min-width: 64px; + vertical-align: top; +} + +table.summary tbody td:nth-child(2) { + width: 100%; + border-right: none; +} + +table.summary tbody td:nth-child(3) { + white-space: nowrap; + border-left: none; + vertical-align: top; +} + +table.summary td > div:nth-of-type(2) { + padding-top: 4px; + padding-left: 15px; +} + +table.summary td p { + margin-bottom: 0; +} + +.inherited-summary thead td { + padding-left: 2px; +} + +.inherited-summary thead a { + color: white; +} + +.inherited-summary .summary tbody { + display: none; +} + +.inherited-summary .summary .toggle { + padding: 0 4px; + font-size: 12px; + cursor: pointer; +} +.inherited-summary .summary .toggle.closed:before { + content: "▶"; +} +.inherited-summary .summary .toggle.opened:before { + content: "▼"; +} + +.member, .method { + margin-bottom: 24px; +} + +table.params { + width: 100%; + margin: 10px 0; + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +table.params thead { + background: #eee; + color: #aaa; +} + +table.params td { + padding: 4px; + border: solid 1px #ddd; +} + +table.params td p { + margin: 0; +} + +.content .detail > * { + margin: 15px 0; +} + +.content .detail > h3 { + color: black; + background-color: #f0f0f0; +} + +.content .detail > div { + margin-left: 10px; +} + +.content .detail > .import-path { + margin-top: -8px; +} + +.content .detail + .detail { + margin-top: 30px; +} + +.content .detail .throw td:first-child { + padding-right: 10px; +} + +.content .detail h4 + :not(pre) { + padding-left: 0; + margin-left: 10px; +} + +.content .detail h4 + ul li { + list-style: none; +} + +.return-param * { + display: inline; +} + +.argument-params { + margin-bottom: 20px; +} + +.return-type { + padding-right: 10px; + font-weight: normal; +} + +.return-desc { + margin-left: 10px; + margin-top: 4px; +} + +.return-desc p { + margin: 0; +} + +.deprecated, .experimental, .instance-docs { + border-left: solid 5px orange; + padding-left: 4px; + margin: 4px 0; +} + +tr.listen p, +tr.throw p, +tr.emit p{ + margin-bottom: 10px; +} + +.version, .since { + color: #aaa; +} + +h3 .right-info { + position: absolute; + right: 4px; + font-size: 14px; +} + +.version + .since:before { + content: '| '; +} + +.see { + margin-top: 10px; +} + +.see h4 { + margin: 4px 0; +} + +.content .detail h4 + .example-doc { + margin: 6px 0; +} + +.example-caption { + position: relative; + bottom: -1px; + display: inline-block; + padding: 4px; + font-style: italic; + background-color: #f5f5f5; + font-weight: bold; + border-radius: 3px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.example-caption + pre.source-code { + margin-top: 0; + border-top-left-radius: 0; +} + +footer, .file-footer { + text-align: right; + font-style: italic; + font-weight: 100; + font-size: 13px; + margin-right: 50px; + margin-left: 270px; + border-top: 1px solid #ddd; + padding-top: 30px; + margin-top: 20px; + padding-bottom: 10px; +} + +footer img { + width: 24px; + vertical-align: middle; + padding-left: 4px; + position: relative; + top: -3px; + opacity: 0.6; +} + +pre.source-code { + padding: 4px; +} + +pre.raw-source-code > code { + padding: 0; + margin: 0; + font-size: 12px; + background: #fff; + border: solid 1px #ddd; + line-height: 1.5; +} + +pre.raw-source-code > code > ol { + counter-reset:number; + list-style:none; + margin:0; + padding:0; + overflow: hidden; +} + +pre.raw-source-code > code > ol li:before { + counter-increment: number; + content: counter(number); + display: inline-block; + min-width: 3em; + color: #aaa; + text-align: right; + padding-right: 1em; +} + +pre.source-code.line-number { + padding: 0; +} + +pre.source-code ol { + background: #eee; + padding-left: 40px; +} + +pre.source-code li { + background: white; + padding-left: 4px; + list-style: decimal; + margin: 0; +} + +pre.source-code.line-number li.active { + background: rgb(255, 255, 150) !important; +} + +pre.source-code.line-number li.error-line { + background: #ffb8bf; +} + +.inner-link-active { + /*background: rgb(255, 255, 150) !important;*/ + background: #039BE5 !important; + color: #fff !important; + padding-left: 0.1em !important; +} + +.inner-link-active a { + color: inherit; +} diff --git a/css/test.css b/css/test.css new file mode 100644 index 0000000..8ce1266 --- /dev/null +++ b/css/test.css @@ -0,0 +1,58 @@ +table.test-summary thead { + background: #fafafa; +} + +table.test-summary thead .test-description { + width: 50%; +} + +table.test-summary { + width: 100%; + margin: 10px 0; + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +table.test-summary thead .test-count { + width: 3em; +} + +table.test-summary tbody tr:hover { + background-color: #eee; +} + +table.test-summary td { + border: solid 1px #ddd; + padding: 4px 10px; + vertical-align: top; +} + +table.test-summary td p { + margin: 0; +} + +table.test-summary tr.test-interface .toggle { + display: inline-block; + float: left; + margin-right: 4px; + cursor: pointer; + font-size: 0.8em; + padding-top: 0.25em; +} + +table.test-summary tr.test-interface .toggle.opened:before { + content: '▼'; +} + +table.test-summary tr.test-interface .toggle.closed:before { + content: '▶'; +} + +table.test-summary .test-target > span { + display: block; + margin-top: 4px; +} +table.test-summary .test-target > span:first-child { + margin-top: 0; +} diff --git a/doc/manual/example.md b/doc/manual/example.md deleted file mode 100644 index 476cb4e..0000000 --- a/doc/manual/example.md +++ /dev/null @@ -1,15 +0,0 @@ -# Examples - -> More examples in [the test files](https://github.com/make-github-pseudonymous-again/js-integer/tree/main/test/src). - -```js -import { ZZ } from '@aureooms/js-integer' ; - -const a = ZZ.from( 'dead' , 16 ) ; -const b = ZZ.from( '101010' , 2 ) ; - -const c = a.add(b); -console.log(c.toString()); // 57047 -``` - -**Note**: decimals are not supported in this library. diff --git a/doc/manual/installation.md b/doc/manual/installation.md deleted file mode 100644 index 16f5bec..0000000 --- a/doc/manual/installation.md +++ /dev/null @@ -1,14 +0,0 @@ -# Installation -Can be managed using -[jspm](http://jspm.io) -or [npm](https://github.com/npm/npm). - -### jspm -```terminal -jspm install npm:@aureooms/js-integer -``` - -### npm -```terminal -npm install @aureooms/js-integer --save -``` diff --git a/doc/manual/overview.md b/doc/manual/overview.md deleted file mode 100644 index 07dd0c5..0000000 --- a/doc/manual/overview.md +++ /dev/null @@ -1 +0,0 @@ -# Overview diff --git a/doc/manual/usage.md b/doc/manual/usage.md deleted file mode 100644 index e0a61b3..0000000 --- a/doc/manual/usage.md +++ /dev/null @@ -1,146 +0,0 @@ -# Usage - -Require the library where needed -```js -const { ZZ } = require( '@aureooms/js-integer' ) ; -// or -import { ZZ } from '@aureooms/js-integer' ; -``` - -## Notation - -The Notation tries to emulate the notation in [bn.js](https://github.com/indutny/bn.js). - -## Instructions - -Prefixes/postfixes are put in parens at the of the line. - - -### Initialization - -* [x] `ZZ.from(object, base = undefined, is_negative = 0)` (Base is guessed depending on object type if `undefined`, default is 10.) - -### Copying - -* [x] `a.clone()` - clone number -* [x] `a.move(b)` - copy `a`'s' properties to `b` - -> Note that we plan to be pure in the future. - - -### Comparison - -* [x] `a.cmp(b)` - compare numbers and return `-1` (a `<` b), `0` (a `=` b), or `1` (a `>` b) depending on the comparison result (`cmpn`) -* [x] `a.lt(b)` - `a` less than `b` (`n`) -* [x] `a.le(b)` - `a` less than or equals `b` (`n`) -* [x] `a.gt(b)` - `a` greater than `b` (`n`) -* [x] `a.ge(b)` - `a` greater than or equals `b` (`n`) -* [x] `a.eq(b)` - `a` equals `b` (`n`) - - -### Integer Arithmetic - -* [x] `a.negate()` - negate sign (`ineg` in bn.js) -* [x] `a.opposite()` - negate sign (`neg` in bn.js) -* [x] `a.abs()` - absolute value (`i`) - -* [x] `a.add(b)` - addition (`i`, `n`, `in`) -* [x] `a.sub(b)` - subtraction (`i`, `n`, `in`) -* [x] `a.mul(b)` - multiply (`i`, `n`, `in`) -* [x] `a.square()` - square (`i`, `sqr` in bn.js) -* [x] `a.pow(b)` - raise `a` to the power of `b` (`i`, `n`, `in`) - -* [x] `[q,r] = a.divmod(b)` - divide (`i`, `n`) -* [x] `q = a.div(b)` - division quotient (`u`, `n`) -* [x] `r = a.mod(b)` - division remained (`u`, `n`) (but no `umodn`) -* [x] `q = a.divround(b)` - rounded division - -> In the future, remove in-place operations. They make very little sense except -> in a few exceptional cases like increment/decrement. If the result is too big -> to fit in the original array we will have to resize it to make it fit anyway. -> Maybe little endianess would save the day in that case. Who knows... -> Could use an immutable flag that is set as soon as a shallow copy is made? -> Then all operations could try to run in-place if no shallow copy exists. - -### Greatest Common Divisor - -* [x] `a.gcd(b)` - GCD -* [x] `a.egcd(b)` - Extended GCD results (`{ gcd: ..., x: ..., y: ..., u: ..., v: ... }`) - - -### Modular Arithmetic - -* [ ] `ZZ(n)` - integers modulo `n` -* [ ] `ZZ(n).get(3)` - `returns the equivalence class [3]_n` -* [ ] `a.add(b)` - no comment -* [ ] `a.sub(b)` - no comment -* [ ] `a.mul(b)` - no comment -* [ ] `a.inv()` - inverse `a` modulo `n` -* [ ] `a.square()` - no comment -* [ ] `a.pow(b)` - no comment - - -### Bit operations - -We should really have two packages: - - - One for immutable, keyable, hashable integers. - - One for safe in-place word array manipulation. - -There are multiple reasons for this: - - - Some bit operations do not really care about endianess - - It only works efficiently with a radix that is a power of 2 - -Q: Does it make any sense to have those operations defined for unbounded -integers? - -The following will be implemented in a package to come. - -* [ ] `a.or(b)` - or (`i`, `u`, `iu`) -* [ ] `a.and(b)` - and (`i`, `u`, `iu`, `andln`) (NOTE: `andln` is going to be replaced with `andn` in future) -* [ ] `a.xor(b)` - xor (`i`, `u`, `iu`) -* [ ] `a.setn(b)` - set specified bit to `1` -* [ ] `a.shln(b)` - shift left (`i`, `u`, `iu`) -* [ ] `a.shrn(b)` - shift right (`i`, `u`, `iu`) -* [ ] `a.testn(b)` - test if specified bit is set -* [ ] `a.maskn(b)` - clear bits with indexes higher or equal to `b` (`i`) -* [ ] `a.bincn(b)` - add `1 << b` to the number -* [ ] `a.notn(w)` - not (for the width specified by `w`) (`i`) - -### Test - -* [x] `a.sign()` - return -1, 0, 1 -* [x] `a.iszero()` - no comments -* [x] `a.isone()` - no comments -* [x] `a.ispositive()` - no comments -* [x] `a.isnegative()` - no comments -* [x] `a.isnonnegative()` - no comments -* [x] `a.isnonpositive()` - no comments -* [x] `a.iseven()` - no comments -* [x] `a.isodd()` - no comments -* [x] `a.divides(b)` - no comments - -### Utilities - -* [x] `ZZ.has(object)` - returns true if the supplied `object` is an integer. -* [x] `ZZ.max(a, b)` - return `a` if `a` larger than `b`. -* [x] `ZZ.min(a, b)` - return `a` if `a` smaller than `b`. -* [ ] `a.bitLength()` - get number of bits occupied -* [ ] `a.zeroBits()` - return number of less-significant consequent zero bits (example: `1010000` has 4 zero bits) -* [ ] `a.byteLength()` - return number of bytes occupied -* [ ] `a.toTwos(width)` - convert to two's complement representation, where `width` is bit width -* [ ] `a.fromTwos(width)` - convert from two's complement representation, where `width` is the bit width - -### Conversion -* [x] `a.toString(base=10)` - convert to base-string (No zero padding, this is up to you) -* [x] `a.bin()` - alias for `a.toString(2)` -* [x] `a.oct()` - alias for `a.toString(8)` -* [x] `a.hex()` - alias for `a.toString(16)` -* [x] `d = a.digits(base=10)` - returns little endian array of digits in given base so that d[0] is the first digit, d[1] the second, etc. -* [x] `a.bin()` - alias for `a.digits(2)`. -* [x] `a.valueOf()` - convert to Javascript Number (limited to 53 bits `toNumber` in bn.js) -* [x] `a.toJSON()` - convert to JSON compatible hex string (alias of `toString(16)`) -* [ ] `a.to(type, endian, length)` - convert to an instance of `type`, which must behave like an `Array` (`toArrayLike` in bn.js) -* [ ] `a.toArray(endian, length)` - convert to byte `Array`, and optionally zero pad to length, throwing if already exceeding -* [ ] `a.toBuffer(endian, length)` - convert to Node.js Buffer (if available). For compatibility with browserify and similar tools, use this instead: `a.toArrayLike(Buffer, endian, length)` diff --git a/file/src/DEFAULT_DISPLAY_BASE.js.html b/file/src/DEFAULT_DISPLAY_BASE.js.html new file mode 100644 index 0000000..c26b39a --- /dev/null +++ b/file/src/DEFAULT_DISPLAY_BASE.js.html @@ -0,0 +1,98 @@ + + + + + + src/DEFAULT_DISPLAY_BASE.js | @aureooms/js-integer + + + + + + + +
+ Home + Manual + Reference + Source + + +
+ + + +

src/DEFAULT_DISPLAY_BASE.js

+
export const DEFAULT_DISPLAY_BASE = 10;
+
+ +
+ + + + + + + + + + + + diff --git a/file/src/DEFAULT_REPRESENTATION_BASE.js.html b/file/src/DEFAULT_REPRESENTATION_BASE.js.html new file mode 100644 index 0000000..a53d643 --- /dev/null +++ b/file/src/DEFAULT_REPRESENTATION_BASE.js.html @@ -0,0 +1,110 @@ + + + + + + src/DEFAULT_REPRESENTATION_BASE.js | @aureooms/js-integer + + + + + + + +
+ Home + Manual + Reference + Source + + +
+ + + +

src/DEFAULT_REPRESENTATION_BASE.js

+
// Import { DEFAULT_DISPLAY_BASE } from './' ;
+import {MAX_BASE} from './_limits.js';
+
+/*
+ * Biggest power of DEFAULT_DISPLAY_BASE whose square holds in a single double
+ * with full precision. For working correctly with multiplication algorithms
+ * and for fast base DEFAULT_DISPLAY_BASE printing. On older machines with no
+ * native doubles, it might be worth to only use ints.
+ */
+// export const DEFAULT_REPRESENTATION_BASE = Math.pow(DEFAULT_DISPLAY_BASE,Math.floor(Math.log(Math.sqrt(Math.pow(2,53)))/Math.log(DEFAULT_DISPLAY_BASE))) ;
+// export const DEFAULT_REPRESENTATION_BASE = Math.pow(16,Math.floor(Math.log(Math.sqrt(Math.pow(2,53)))/Math.log(16))) ;
+// export const DEFAULT_REPRESENTATION_BASE = Math.pow(2,26) | 0;
+export const DEFAULT_REPRESENTATION_BASE = MAX_BASE;
+
+ +
+ + + + + + + + + + + + diff --git a/file/src/Integer.js.html b/file/src/Integer.js.html new file mode 100644 index 0000000..0c649dc --- /dev/null +++ b/file/src/Integer.js.html @@ -0,0 +1,692 @@ + + + + + + src/Integer.js | @aureooms/js-integer + + + + + + + +
+ Home + Manual + Reference + Source + + +
+ + + +

src/Integer.js

+
import {DEFAULT_DISPLAY_BASE} from './DEFAULT_DISPLAY_BASE.js';
+import {ZeroDivisionError} from './ZeroDivisionError.js';
+
+import {ValueError} from '@aureooms/js-error';
+
+import {_from_number} from './_from_number.js';
+
+import {
+	stringify,
+	convert,
+	_trim_positive,
+	_alloc,
+	_copy,
+	_zeros,
+	jz,
+	cmp,
+	eq,
+	add,
+	_sub,
+	mul,
+	_idivmod,
+	_pow_double,
+	increment,
+	euclidean_algorithm,
+	extended_euclidean_algorithm,
+} from '@aureooms/js-integer-big-endian';
+
+import {MIN_NUMBER, MAX_NUMBER, MAX_BASE} from './_limits.js';
+
+export class Integer {
+	constructor(base, is_negative, limbs) {
+		this._base = base;
+		this._is_negative = is_negative;
+		this._limbs = limbs;
+	}
+
+	move(other) {
+		other._base = this._base;
+		other._is_negative = this._is_negative;
+		other._limbs = this._limbs;
+		return other;
+	}
+
+	clone() {
+		return new Integer(this._base, this._is_negative, this._limbs);
+	}
+
+	_limbs_in_base(base) {
+		// TODO save result for later ? Maybe replace base ?
+		return this._base === base
+			? this._limbs
+			: convert(this._base, base, this._limbs, 0, this._limbs.length);
+	}
+
+	toString(base = DEFAULT_DISPLAY_BASE) {
+		if (this.iszero()) return '0';
+
+		const digits = stringify(
+			this._base,
+			base,
+			this._limbs,
+			0,
+			this._limbs.length,
+		);
+
+		return this._is_negative ? '-' + digits : digits;
+	}
+
+	add(other) {
+		if (this._is_negative !== other._is_negative) {
+			return other._is_negative
+				? this.sub(other.opposite())
+				: other.sub(this.opposite());
+		}
+
+		const result_is_negative = this._is_negative;
+		const r = this._base;
+
+		const a = this._limbs;
+
+		const b = other._limbs_in_base(r);
+
+		const c = _zeros(Math.max(a.length, b.length) + 1);
+
+		add(r, a, 0, a.length, b, 0, b.length, c, 0, c.length);
+
+		return new Integer(r, result_is_negative, c);
+	}
+
+	iadd(other) {
+		// TODO optimize but be careful with side effects
+		return this.add(other).move(this);
+	}
+
+	addn(number) {
+		// TODO optimize
+		return this.add(_from_number(number));
+	}
+
+	iaddn(number) {
+		// TODO optimize but be careful with side effects
+		return this.addn(number).move(this);
+	}
+
+	sub(other) {
+		if (this._is_negative !== other._is_negative) {
+			return other._is_negative
+				? this.add(other.opposite())
+				: this.opposite().add(other).opposite();
+		}
+		// /!\ _sub needs |c| >= |a| >= |b|
+
+		const r = this._base;
+		const a = this._limbs;
+		const aj = a.length;
+		const ai = _trim_positive(a, 0, aj);
+
+		if (ai >= aj) return other.opposite();
+
+		const b = other._limbs_in_base(r);
+		const bj = b.length;
+		const bi = _trim_positive(b, 0, bj);
+
+		if (bi >= bj) return this.clone();
+
+		if (cmp(a, ai, aj, b, bi, bj) < 0) {
+			const c = _zeros(bj - bi);
+
+			_sub(r, b, bi, bj, a, ai, aj, c, 0, c.length);
+
+			return new Integer(r, ~this._is_negative, c);
+		}
+
+		const c = _zeros(aj - ai);
+
+		_sub(r, a, ai, aj, b, bi, bj, c, 0, c.length);
+
+		return new Integer(r, this._is_negative, c);
+	}
+
+	isub(other) {
+		// TODO optimize but be careful with side effects
+		return this.sub(other).move(this);
+	}
+
+	subn(number) {
+		return this.sub(_from_number(number));
+	}
+
+	isubn(number) {
+		return this.subn(number).move(this);
+	}
+
+	mul(other) {
+		const result_is_negative = this._is_negative ^ other._is_negative;
+		const r = this._base;
+
+		const a = this._limbs;
+
+		const b = other._limbs_in_base(r);
+
+		const c = _zeros(a.length + b.length);
+
+		mul(r, a, 0, a.length, b, 0, b.length, c, 0, c.length);
+
+		return new Integer(r, result_is_negative, c);
+	}
+
+	imul(other) {
+		// TODO optimize but be careful with side effects
+		return this.mul(other).move(this);
+	}
+
+	muln(number) {
+		return this.mul(_from_number(number));
+	}
+
+	imuln(number) {
+		return this.muln(number).move(this);
+	}
+
+	/**
+	 * Computes <code>this</code> raised to the <code>x</code>th power.
+	 * <code>x</code> is a double smaller or equal to 2^53.
+	 *
+	 * @param {Number} x The power to raise <code>this</code> to.
+	 * @return {Integer} <code>this ^ x</code>
+	 */
+	pown(x) {
+		const is_negative = this._is_negative & x & 1 ? -1 : 0;
+
+		const a = this._limbs;
+		const c = _zeros(Math.max(1, a.length * x));
+
+		_pow_double(this._base, x, a, 0, a.length, c, 0, c.length);
+
+		return new Integer(this._base, is_negative, c);
+	}
+
+	pow(other) {
+		return this.pown(other.valueOf());
+	}
+
+	ipow(other) {
+		// TODO optimize but be careful with side effects
+		return this.pow(other).move(this);
+	}
+
+	ipown(number) {
+		// TODO optimize but be careful with side effects
+		return this.pown(number).move(this);
+	}
+
+	square() {
+		// TODO optimize but be careful with side effects
+		// TODO use this.mul(this) instead?
+		return this.pown(2);
+	}
+
+	isquare() {
+		// TODO optimize but be careful with side effects
+		// TODO use this.imul(this) instead?
+		return this.square().move(this);
+	}
+
+	div(other) {
+		return this.divmod(other)[0];
+	}
+
+	divn(number) {
+		return this.div(_from_number(number));
+	}
+
+	idiv(other) {
+		// TODO optimize but be careful with side effects
+		return this.div(other).move(this);
+	}
+
+	idivn(number) {
+		return this.divn(number).move(this);
+	}
+
+	mod(other) {
+		return this.divmod(other)[1];
+	}
+
+	modn(number) {
+		return this.mod(_from_number(number));
+	}
+
+	imod(other) {
+		// TODO optimize but be careful with side effects
+		return this.mod(other).move(this);
+	}
+
+	imodn(number) {
+		return this.modn(number).move(this);
+	}
+
+	divround(other) {
+		const [q, r] = this.divmod(other);
+		if (r.ge(other.divn(2).addn(other.iseven() ? 0 : 1)))
+			increment(q._base, q._limbs, 0, q._limbs.length);
+		return q;
+	}
+
+	divmod(other) {
+		if (other.iszero()) throw new ZeroDivisionError('Integer division by zero'); // Optimize
+
+		const quotient_is_negative = this._is_negative ^ other._is_negative;
+		const r = this._base;
+
+		// The underlying algorithm does not allow leading 0's so we trim them.
+		const lj = this._limbs.length;
+		const li = _trim_positive(this._limbs, 0, lj);
+
+		// Dividend is 0
+		if (li >= lj)
+			return [new Integer(this._base, 0, [0]), new Integer(this._base, 0, [0])];
+
+		// Dividend (& Remainder)
+		const D = _alloc(lj - li);
+		_copy(this._limbs, li, lj, D, 0);
+
+		// Divisor
+		const d = other._limbs_in_base(r);
+		const dj = d.length;
+		const di = _trim_positive(d, 0, dj); // Di < dj because d != 0
+
+		// Quotient
+		const q = _zeros(D.length);
+
+		_idivmod(r, D, 0, D.length, d, di, dj, q, 0, q.length);
+
+		const Q = new Integer(r, quotient_is_negative, q); // Quotient
+		const R = new Integer(r, 0, D); // Remainder
+
+		if ((this._is_negative || other._is_negative) && !jz(D, 0, D.length)) {
+			if (other._is_negative) {
+				if (this._is_negative) {
+					R.negate(); // TODO optimize
+				} else {
+					increment(r, q, 0, q.length);
+					R.iadd(other); // TODO optimize
+				}
+			} else {
+				increment(r, q, 0, q.length);
+				R.negate().iadd(other); // TODO optimize
+			}
+		}
+
+		return [Q, R];
+	}
+
+	idivmod(other) {
+		// TODO optimize but be careful with side effects
+		const [q, r] = this.divmod(other);
+		return [q, r.move(this)];
+	}
+
+	divmodn(number) {
+		return this.divmod(_from_number(number));
+	}
+
+	idivmodn(number) {
+		const [q, r] = this.divmodn(number);
+		return [q, r.move(this)];
+	}
+
+	opposite() {
+		return new Integer(this._base, ~this._is_negative, this._limbs);
+	}
+
+	negate() {
+		// TODO optimize but be careful with side effects
+		return this.opposite().move(this);
+	}
+
+	abs() {
+		return this.sign() >= 0 ? this : this.opposite();
+	}
+
+	iabs() {
+		return this.abs().move(this);
+	}
+
+	sign() {
+		return this.iszero() ? 0 : this._is_negative ? -1 : 1;
+	}
+
+	iszero() {
+		return jz(this._limbs, 0, this._limbs.length);
+	}
+
+	isone() {
+		if (this._is_negative) return false;
+		return eq(this._limbs, 0, this._limbs.length, [1], 0, 1);
+	}
+
+	isnonzero() {
+		return !this.iszero();
+	}
+
+	isnegative() {
+		return this._is_negative === -1;
+	}
+
+	ispositive() {
+		return this.sign() > 0;
+	}
+
+	isnonnegative() {
+		return !this.isnegative();
+	}
+
+	isnonpositive() {
+		return !this.ispositive();
+	}
+
+	parity() {
+		// TODO optimize this, there is a much faster way to test for parity
+		// when the base is a multiple of two
+		return this.modn(2);
+	}
+
+	iseven() {
+		return this.parity().iszero();
+	}
+
+	isodd() {
+		return !this.iseven();
+	}
+
+	bin() {
+		return this.toString(2);
+	}
+
+	oct() {
+		return this.toString(8);
+	}
+
+	hex() {
+		return this.toString(16);
+	}
+
+	toJSON() {
+		return this.hex();
+	}
+
+	digits(base = DEFAULT_DISPLAY_BASE) {
+		// TODO Once #to is implemented we can rewrite this as
+		// return this.to(LITTLE_ENDIAN, base, Array) ;
+		return convert(
+			this._base,
+			base,
+			this._limbs,
+			0,
+			this._limbs.length,
+		).reverse();
+	}
+
+	bits() {
+		return this.digits(2);
+	}
+
+	divides(other) {
+		return other.mod(this).iszero();
+	}
+
+	divide_knowing_divisible_by(other) {
+		// TODO optimize
+		return this.div(other);
+	}
+
+	cmp(other) {
+		// TODO optimize with _trim_positive
+
+		if (this.iszero()) {
+			if (other.iszero()) return 0;
+			if (other._is_negative) return 1;
+			return -1;
+		}
+
+		if (this._is_negative < other._is_negative) return -1;
+		if (this._is_negative > other._is_negative) return 1;
+
+		const a = this._limbs;
+		const b = other._limbs_in_base(this._base);
+
+		return this._is_negative === 0
+			? cmp(a, 0, a.length, b, 0, b.length)
+			: cmp(b, 0, b.length, a, 0, a.length);
+	}
+
+	cmpn(number) {
+		return this.cmp(_from_number(number));
+	}
+
+	eq(other) {
+		return this.cmp(other) === 0;
+	}
+
+	eqn(number) {
+		return this.cmpn(number) === 0;
+	}
+
+	ge(other) {
+		return this.cmp(other) >= 0;
+	}
+
+	gen(number) {
+		return this.cmpn(number) >= 0;
+	}
+
+	gt(other) {
+		return this.cmp(other) > 0;
+	}
+
+	gtn(number) {
+		return this.cmpn(number) > 0;
+	}
+
+	le(other) {
+		return this.cmp(other) <= 0;
+	}
+
+	len(number) {
+		return this.cmpn(number) <= 0;
+	}
+
+	lt(other) {
+		return this.cmp(other) < 0;
+	}
+
+	ltn(number) {
+		return this.cmpn(number) < 0;
+	}
+
+	ne(other) {
+		return this.cmp(other) !== 0;
+	}
+
+	nen(number) {
+		return this.cmpn(number) !== 0;
+	}
+
+	gcd(other) {
+		const r = this._base;
+		const a = this._limbs;
+		const b = other._limbs_in_base(r);
+		const [d, di, dj] = euclidean_algorithm(r, a, 0, a.length, b, 0, b.length);
+		const gcd = _alloc(dj - di);
+		_copy(d, di, dj, gcd, 0);
+		return new Integer(r, 0, gcd);
+	}
+
+	egcd(other) {
+		const r = this._base;
+		const a = this._limbs;
+		const b = other._limbs_in_base(r);
+		const [
+			R0,
+			R0i,
+			S0,
+			S0i,
+			T0,
+			T0i,
+			S1,
+			S1i,
+			T1,
+			T1i,
+			steps,
+		] = extended_euclidean_algorithm(r, a, 0, a.length, b, 0, b.length);
+		const gcd = _alloc(R0.length - R0i);
+		_copy(R0, R0i, R0.length, gcd, 0);
+		const x = _alloc(S0.length - S0i);
+		_copy(S0, S0i, S0.length, x, 0);
+		const y = _alloc(T0.length - T0i);
+		_copy(T0, T0i, T0.length, y, 0);
+		const u = _alloc(S1.length - S1i);
+		_copy(S1, S1i, S1.length, u, 0);
+		const v = _alloc(T1.length - T1i);
+		_copy(T1, T1i, T1.length, v, 0);
+		return {
+			// TODO use immutable zero
+			gcd: new Integer(r, 0, gcd),
+			x:
+				x.length > 0
+					? new Integer(r, this._is_negative ^ ((steps % 2) - 1), x)
+					: new Integer(r, 0, [0]),
+			y:
+				y.length > 0
+					? new Integer(r, other._is_negative ^ -(steps % 2), y)
+					: new Integer(r, 0, [0]),
+			u:
+				u.length > 0
+					? new Integer(r, this._is_negative ^ -(steps % 2), u)
+					: new Integer(r, 0, [0]),
+			v:
+				v.length > 0
+					? new Integer(r, other._is_negative ^ ((steps % 2) - 1), v)
+					: new Integer(r, 0, [0]),
+		};
+	}
+
+	valueOf() {
+		if (this.gtn(MAX_NUMBER))
+			throw new ValueError(
+				`Cannot call valueOf on Integer larger than ${MAX_NUMBER}. Got ${this.toString()}`,
+			);
+		if (this.ltn(MIN_NUMBER))
+			throw new ValueError(
+				`Cannot call valueOf on Integer smaller than ${MIN_NUMBER}. Got ${this.toString()}`,
+			);
+
+		const limbs = convert(
+			this._base,
+			MAX_BASE,
+			this._limbs,
+			0,
+			this._limbs.length,
+		);
+
+		const sign = this._is_negative ? -1 : 1;
+
+		const value =
+			limbs.length === 2 ? limbs[0] * MAX_BASE + limbs[1] : limbs[0];
+
+		return sign * value;
+	}
+
+	toNumber() {
+		return this.valueOf();
+	}
+}
+
+ +
+ + + + + + + + + + + + diff --git a/file/src/IntegerRing.js.html b/file/src/IntegerRing.js.html new file mode 100644 index 0000000..d84bb23 --- /dev/null +++ b/file/src/IntegerRing.js.html @@ -0,0 +1,227 @@ + + + + + + src/IntegerRing.js | @aureooms/js-integer + + + + + + + +
+ Home + Manual + Reference + Source + + +
+ + + +

src/IntegerRing.js

+
import {parse, convert} from '@aureooms/js-integer-big-endian';
+import {TypeError, ValueError} from '@aureooms/js-error';
+
+import {Integer} from './Integer.js';
+import {DEFAULT_DISPLAY_BASE} from './DEFAULT_DISPLAY_BASE.js';
+import {_from_number} from './_from_number.js';
+
+export class IntegerRing {
+	constructor(name, base) {
+		this.name = name;
+		this._base = base;
+	}
+
+	characteristic() {
+		return this.$0();
+	}
+
+	from(object, base = undefined, is_negative = 0) {
+		if (object === null || object === undefined) return this.$0();
+
+		switch (object.constructor.prototype) {
+			case Number.prototype:
+				if (base !== undefined)
+					throw new ValueError(
+						'IntegerRing#from: using the base parameter does not make sense when passing a Number.',
+					);
+				return this.from_number(object, is_negative);
+
+			case String.prototype:
+				if (base === undefined) base = DEFAULT_DISPLAY_BASE;
+				return this.from_string(object, base, is_negative);
+
+			case Array.prototype:
+				if (base === undefined) base = this._base;
+				return this.from_digits(object, base, is_negative);
+
+			case Boolean.prototype:
+				if (base !== undefined)
+					throw new ValueError(
+						'IntegerRing#from: using the base parameter does not make sense when passing a Boolean.',
+					);
+				return this.from_number(Number(object), is_negative);
+
+			case Integer.prototype:
+				if (base !== undefined)
+					throw new ValueError(
+						'IntegerRing#from: using the base parameter does not make sense when passing an Integer.',
+					);
+				return new Integer(
+					object._base,
+					object._is_negative ^ is_negative,
+					object._limbs,
+				);
+
+			default:
+				throw new TypeError(
+					`IntegerRing#from cannot handle ${object.constructor.prototype}`,
+				);
+		}
+	}
+
+	from_number(number, is_negative = 0) {
+		const dirty = _from_number(number);
+
+		const limbs = dirty._limbs_in_base(this._base);
+
+		return new Integer(this._base, is_negative ^ dirty._is_negative, limbs);
+	}
+
+	from_string(string, base = 10, is_negative = 0) {
+		if (string.length === 0)
+			throw new ValueError(
+				'IntegerRing#from_string cannot parse empty string.',
+			);
+
+		if (string[0] === '-')
+			return this.from_string(string.slice(1), base, ~is_negative);
+
+		if (string[0] === '+')
+			return this.from_string(string.slice(1), base, is_negative);
+
+		const limbs = parse(base, this._base, string);
+
+		if (limbs.length === 1 && limbs[0] === 0) is_negative = 0;
+
+		return new Integer(this._base, is_negative, limbs);
+	}
+
+	from_digits(digits, base, is_negative) {
+		const limbs = convert(
+			base,
+			this._base,
+			digits.slice().reverse(),
+			0,
+			digits.length,
+		);
+
+		return new Integer(this._base, is_negative, limbs);
+	}
+
+	toString() {
+		return this.name;
+	}
+
+	$0() {
+		// TODO Could we use an empty array instead ?
+		return new Integer(this._base, 0, [0]);
+	}
+
+	$1() {
+		return new Integer(this._base, 0, [1]);
+	}
+
+	$_1() {
+		return new Integer(this._base, -1, [1]);
+	}
+
+	has(x) {
+		if (x instanceof Integer) return true;
+		return Number.isInteger(x);
+	}
+
+	min(a, b) {
+		return a.le(b) ? a : b;
+	}
+
+	max(a, b) {
+		return a.ge(b) ? a : b;
+	}
+}
+
+ +
+ + + + + + + + + + + + diff --git a/file/src/ZZ.js.html b/file/src/ZZ.js.html new file mode 100644 index 0000000..1c29f2a --- /dev/null +++ b/file/src/ZZ.js.html @@ -0,0 +1,101 @@ + + + + + + src/ZZ.js | @aureooms/js-integer + + + + + + + +
+ Home + Manual + Reference + Source + + +
+ + + +

src/ZZ.js

+
import {DEFAULT_REPRESENTATION_BASE} from './DEFAULT_REPRESENTATION_BASE.js';
+import {IntegerRing} from './IntegerRing.js';
+
+export const ZZ = new IntegerRing('Integer Ring', DEFAULT_REPRESENTATION_BASE);
+
+ +
+ + + + + + + + + + + + diff --git a/file/src/ZeroDivisionError.js.html b/file/src/ZeroDivisionError.js.html new file mode 100644 index 0000000..b9050f1 --- /dev/null +++ b/file/src/ZeroDivisionError.js.html @@ -0,0 +1,102 @@ + + + + + + src/ZeroDivisionError.js | @aureooms/js-integer + + + + + + + +
+ Home + Manual + Reference + Source + + +
+ + + +

src/ZeroDivisionError.js

+
export class ZeroDivisionError extends Error {
+	toString() {
+		return `ZeroDivisionError: ${this.message}`;
+	}
+}
+
+ +
+ + + + + + + + + + + + diff --git a/file/src/_from_number.js.html b/file/src/_from_number.js.html new file mode 100644 index 0000000..515513b --- /dev/null +++ b/file/src/_from_number.js.html @@ -0,0 +1,107 @@ + + + + + + src/_from_number.js | @aureooms/js-integer + + + + + + + +
+ Home + Manual + Reference + Source + + +
+ + + +

src/_from_number.js

+
import {Integer} from './Integer.js';
+import {MAX_BASE} from './_limits.js';
+
+export function _from_number(number) {
+	const x = number >= 0 ? number : -number;
+	const is_negative = number >= 0 ? 0 : -1;
+	return x < MAX_BASE
+		? new Integer(MAX_BASE, is_negative, [x])
+		: new Integer(MAX_BASE, is_negative, [(x / MAX_BASE) | 0, x % MAX_BASE]);
+}
+
+ +
+ + + + + + + + + + + + diff --git a/file/src/_limits.js.html b/file/src/_limits.js.html new file mode 100644 index 0000000..e9a811a --- /dev/null +++ b/file/src/_limits.js.html @@ -0,0 +1,101 @@ + + + + + + src/_limits.js | @aureooms/js-integer + + + + + + + +
+ Home + Manual + Reference + Source + + +
+ + + +

src/_limits.js

+
export const MAX_NUMBER = Number.MAX_SAFE_INTEGER;
+export const MIN_NUMBER = Number.MIN_SAFE_INTEGER;
+export const MIN_BASE = 2;
+export const MAX_BASE = Math.floor(Math.sqrt(MAX_NUMBER + 1)) | 0;
+
+ +
+ + + + + + + + + + + + diff --git a/file/src/index.js.html b/file/src/index.js.html new file mode 100644 index 0000000..e025726 --- /dev/null +++ b/file/src/index.js.html @@ -0,0 +1,105 @@ + + + + + + src/index.js | @aureooms/js-integer + + + + + + + +
+ Home + Manual + Reference + Source + + +
+ + + +

src/index.js

+
export * from './DEFAULT_DISPLAY_BASE.js';
+export * from './DEFAULT_REPRESENTATION_BASE.js';
+export * from './Integer.js';
+export * from './IntegerRing.js';
+export * from './ZZ.js';
+export * from './ZeroDivisionError.js';
+export * from './integer.js';
+export * from './_limits.js';
+
+ +
+ + + + + + + + + + + + diff --git a/file/src/integer.js.html b/file/src/integer.js.html new file mode 100644 index 0000000..8fe836b --- /dev/null +++ b/file/src/integer.js.html @@ -0,0 +1,231 @@ + + + + + + src/integer.js | @aureooms/js-integer + + + + + + + +
+ Home + Manual + Reference + Source + + +
+ + + +

src/integer.js

+
import {DEFAULT_DISPLAY_BASE} from './DEFAULT_DISPLAY_BASE.js';
+import {ZZ} from './ZZ.js';
+
+export function $0() {
+	return ZZ.$0();
+}
+
+export function $1() {
+	return ZZ.$1();
+}
+
+export function $_1() {
+	return ZZ.$_1();
+}
+
+export function parse(object, base = undefined, is_negative = 0) {
+	return ZZ.from(object, base, is_negative);
+}
+
+export function stringify(integer, base = DEFAULT_DISPLAY_BASE) {
+	return integer.toString(base);
+}
+
+export function add(first, second) {
+	return first.add(second);
+}
+
+export function iadd(first, second) {
+	return first.iadd(second);
+}
+
+export function sub(first, second) {
+	return first.sub(second);
+}
+
+export function isub(first, second) {
+	return first.isub(second);
+}
+
+export function mul(first, second) {
+	return first.mul(second);
+}
+
+export function imul(first, second) {
+	return first.imul(second);
+}
+
+export function pow(first, second) {
+	return first.pow(second);
+}
+
+export function ipow(first, second) {
+	return first.ipow(second);
+}
+
+export function div(first, second) {
+	return first.div(second);
+}
+
+export function idiv(first, second) {
+	return first.idiv(second);
+}
+
+export function mod(first, second) {
+	return first.mod(second);
+}
+
+export function imod(first, second) {
+	return first.imod(second);
+}
+
+export function divmod(first, second) {
+	return first.divmod(second);
+}
+
+export function idivmod(first, second) {
+	return first.idivmod(second);
+}
+
+export function addn(first, second) {
+	return first.addn(second);
+}
+
+export function iaddn(first, second) {
+	return first.iaddn(second);
+}
+
+export function subn(first, second) {
+	return first.subn(second);
+}
+
+export function isubn(first, second) {
+	return first.isubn(second);
+}
+
+export function muln(first, second) {
+	return first.muln(second);
+}
+
+export function imuln(first, second) {
+	return first.imuln(second);
+}
+
+export function pown(first, second) {
+	return first.pown(second);
+}
+
+export function ipown(first, second) {
+	return first.ipown(second);
+}
+
+export function divn(first, second) {
+	return first.divn(second);
+}
+
+export function idivn(first, second) {
+	return first.idivn(second);
+}
+
+export function modn(first, second) {
+	return first.modn(second);
+}
+
+export function imodn(first, second) {
+	return first.imodn(second);
+}
+
+export function divmodn(first, second) {
+	return first.divmodn(second);
+}
+
+export function idivmodn(first, second) {
+	return first.idivmodn(second);
+}
+
+ +
+ + + + + + + + + + + + diff --git a/function/index.html b/function/index.html new file mode 100644 index 0000000..c794d26 --- /dev/null +++ b/function/index.html @@ -0,0 +1,3620 @@ + + + + + + Function | @aureooms/js-integer + + + + + + + +
+ Home + Manual + Reference + Source + + +
+ + + +

Function

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Static Public Summary
+ public + + + + + +
+

+ + + + $0(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + $1(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + $_1(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + add(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + addn(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + div(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + divmod(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + divmodn(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + divn(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + iadd(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + iaddn(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + idiv(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + idivmod(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + idivmodn(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + idivn(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + imod(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + imodn(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + imul(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + imuln(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + ipow(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + ipown(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + isub(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + isubn(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + mod(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + modn(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + mul(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + muln(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + parse(object: *, base: *, is_negative: number): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + pow(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + pown(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + stringify(integer: *, base: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + sub(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + + subn(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ + + + + + + + + + +
Static Private Summary
+ private + + + + + +
+

+ + + + _from_number(number: *): * +

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

Static Public

+ +
+

+ public + + + + + + $0(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + $1(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + $_1(): * + + + + source + +

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

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + add(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + addn(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + div(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + divmod(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + divmodn(first: *, second: *): * + + + + source + +

+ +
import {divmodn} from '@aureooms/js-integer/src/integer.js'
+ + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + divn(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + iadd(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + iaddn(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + idiv(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + idivmod(first: *, second: *): * + + + + source + +

+ +
import {idivmod} from '@aureooms/js-integer/src/integer.js'
+ + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + idivmodn(first: *, second: *): * + + + + source + +

+ +
import {idivmodn} from '@aureooms/js-integer/src/integer.js'
+ + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + idivn(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + imod(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + imodn(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + imul(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + imuln(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + ipow(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + ipown(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + isub(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + isubn(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + mod(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + modn(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + mul(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + muln(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + parse(object: *, base: *, is_negative: number): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
object*
base*
  • optional
  • +
  • default: undefined
is_negativenumber
  • optional
  • +
  • default: 0
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + pow(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + pown(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + stringify(integer: *, base: *): * + + + + source + +

+ +
import {stringify} from '@aureooms/js-integer/src/integer.js'
+ + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
integer*
base*
  • optional
  • +
  • default: DEFAULT_DISPLAY_BASE
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + sub(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + subn(first: *, second: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
first*
second*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+

Static Private

+ +
+

+ private + + + + + + _from_number(number: *): * + + + + source + +

+ +
import {_from_number} from '@aureooms/js-integer/src/_from_number.js'
+ + + + + + +
+

Params:

+ + + + + + + + + + + + + +
NameTypeAttributeDescription
number*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + diff --git a/identifiers.html b/identifiers.html new file mode 100644 index 0000000..3a50aa7 --- /dev/null +++ b/identifiers.html @@ -0,0 +1,1345 @@ + + + + + + Reference | @aureooms/js-integer + + + + + + + +
+ Home + Manual + Reference + Source + + +
+ + + +

References

+ +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
summary
+ public + + + + + +
+

+ C + + + Integer +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ C + + + IntegerRing +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ C + + + ZeroDivisionError +

+
+
+ + + +
+
+ + +
+ private + + + + + +
+

+ F + + + _from_number(number: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + $0(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + $1(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + $_1(): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + add(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + addn(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + div(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + divmod(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + divmodn(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + divn(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + iadd(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + iaddn(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + idiv(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + idivmod(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + idivmodn(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + idivn(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + imod(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + imodn(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + imul(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + imuln(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + ipow(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + ipown(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + isub(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + isubn(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + mod(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + modn(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + mul(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + muln(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + parse(object: *, base: *, is_negative: number): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + pow(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + pown(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + stringify(integer: *, base: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + sub(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ F + + + subn(first: *, second: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ V + + + DEFAULT_DISPLAY_BASE: number +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ V + + + DEFAULT_REPRESENTATION_BASE: * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ V + + + ZZ: IntegerRing +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ V + + + MAX_BASE: * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ V + + + MAX_NUMBER: * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ V + + + MIN_BASE: number +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ V + + + MIN_NUMBER: * +

+
+
+ + + +
+
+ + +
+
+
+
+ + +
+
+ + + + + + + + + + + + diff --git a/image/badge.svg b/image/badge.svg new file mode 100644 index 0000000..b18426b --- /dev/null +++ b/image/badge.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + document + document + @ratio@ + @ratio@ + + diff --git a/image/esdoc-logo-mini-black.png b/image/esdoc-logo-mini-black.png new file mode 100644 index 0000000..5d5f9a2 Binary files /dev/null and b/image/esdoc-logo-mini-black.png differ diff --git a/image/esdoc-logo-mini.png b/image/esdoc-logo-mini.png new file mode 100644 index 0000000..76ba5b7 Binary files /dev/null and b/image/esdoc-logo-mini.png differ diff --git a/image/github.png b/image/github.png new file mode 100644 index 0000000..ea6ff54 Binary files /dev/null and b/image/github.png differ diff --git a/image/manual-badge.svg b/image/manual-badge.svg new file mode 100644 index 0000000..4029606 --- /dev/null +++ b/image/manual-badge.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + manual + manual + @value@ + @value@ + + diff --git a/image/search.png b/image/search.png new file mode 100644 index 0000000..f5d84b6 Binary files /dev/null and b/image/search.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..2ef35fe --- /dev/null +++ b/index.html @@ -0,0 +1,143 @@ + + + + + + Home | @aureooms/js-integer + + + + + + + +
+ Home + Manual + Reference + Source + + +
+ + + +

:zzz: @aureooms/js-integer

+ + +
+ +User:Alejo2083 + +/ +CC BY-SA 3.0 +

+ +

+

Integers for JavaScript. +See docs. +Parent is @aureooms/js-algorithms.

+
import { ZZ } from '@aureooms/js-integer' ; 
+const a = ZZ.from( '2983928392839289387' ) ;
+const b = ZZ.from( '-302940923028393' ) ;
+a.mul( b ).toString( ) ; // '-903954021577363596419770144565091'
+
+

License +Version +Build +Dependencies +Dev dependencies +GitHub issues +Downloads

+

Code issues +Code maintainability +Code coverage (cov) +Code technical debt +Documentation +Package size

+

:baby: Children

The current underlying implementation uses big endian order. There is no +alternative for the moment.

+ +

:scroll: Reference

+ +
+
+ + + + + + + + + + + + diff --git a/index.json b/index.json new file mode 100644 index 0000000..22d9783 --- /dev/null +++ b/index.json @@ -0,0 +1,4497 @@ +[ + { + "__docId__": 1, + "kind": "external", + "name": "Infinity", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Infinity", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Infinity", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 2, + "kind": "external", + "name": "NaN", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~NaN", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 3, + "kind": "external", + "name": "undefined", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~undefined", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 4, + "kind": "external", + "name": "null", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~null", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 5, + "kind": "external", + "name": "Object", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Object", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 6, + "kind": "external", + "name": "object", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~object", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 7, + "kind": "external", + "name": "Function", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Function", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 8, + "kind": "external", + "name": "function", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~function", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 9, + "kind": "external", + "name": "Boolean", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Boolean", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 10, + "kind": "external", + "name": "boolean", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~boolean", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 11, + "kind": "external", + "name": "Symbol", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Symbol", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 12, + "kind": "external", + "name": "Error", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Error", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 13, + "kind": "external", + "name": "EvalError", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~EvalError", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 14, + "kind": "external", + "name": "InternalError", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/InternalError", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~InternalError", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 15, + "kind": "external", + "name": "RangeError", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~RangeError", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 16, + "kind": "external", + "name": "ReferenceError", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~ReferenceError", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 17, + "kind": "external", + "name": "SyntaxError", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~SyntaxError", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 18, + "kind": "external", + "name": "TypeError", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~TypeError", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 19, + "kind": "external", + "name": "URIError", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~URIError", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 20, + "kind": "external", + "name": "Number", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Number", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 21, + "kind": "external", + "name": "number", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~number", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 22, + "kind": "external", + "name": "Date", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Date", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 23, + "kind": "external", + "name": "String", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~String", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 24, + "kind": "external", + "name": "string", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~string", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 25, + "kind": "external", + "name": "RegExp", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~RegExp", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 26, + "kind": "external", + "name": "Array", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Array", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 27, + "kind": "external", + "name": "Int8Array", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Int8Array", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 28, + "kind": "external", + "name": "Uint8Array", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Uint8Array", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 29, + "kind": "external", + "name": "Uint8ClampedArray", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Uint8ClampedArray", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 30, + "kind": "external", + "name": "Int16Array", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Int16Array", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 31, + "kind": "external", + "name": "Uint16Array", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Uint16Array", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 32, + "kind": "external", + "name": "Int32Array", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Int32Array", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 33, + "kind": "external", + "name": "Uint32Array", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Uint32Array", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 34, + "kind": "external", + "name": "Float32Array", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Float32Array", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 35, + "kind": "external", + "name": "Float64Array", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float64Array", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Float64Array", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 36, + "kind": "external", + "name": "Map", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Map", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 37, + "kind": "external", + "name": "Set", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Set", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 38, + "kind": "external", + "name": "WeakMap", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~WeakMap", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 39, + "kind": "external", + "name": "WeakSet", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~WeakSet", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 40, + "kind": "external", + "name": "ArrayBuffer", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~ArrayBuffer", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 41, + "kind": "external", + "name": "DataView", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~DataView", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 42, + "kind": "external", + "name": "JSON", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~JSON", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 43, + "kind": "external", + "name": "Promise", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Promise", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 44, + "kind": "external", + "name": "Generator", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Generator", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 45, + "kind": "external", + "name": "GeneratorFunction", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~GeneratorFunction", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 46, + "kind": "external", + "name": "Reflect", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Reflect", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 47, + "kind": "external", + "name": "Proxy", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy", + "memberof": "src/.external-ecmascript.js", + "static": true, + "longname": "src/.external-ecmascript.js~Proxy", + "access": "public", + "description": "", + "builtinExternal": true + }, + { + "__docId__": 48, + "kind": "file", + "name": "src/DEFAULT_DISPLAY_BASE.js", + "content": "export const DEFAULT_DISPLAY_BASE = 10;\n", + "static": true, + "longname": "/home/runner/work/js-integer/js-integer/src/DEFAULT_DISPLAY_BASE.js", + "access": "public", + "description": null, + "lineNumber": 1 + }, + { + "__docId__": 49, + "kind": "variable", + "name": "DEFAULT_DISPLAY_BASE", + "memberof": "src/DEFAULT_DISPLAY_BASE.js", + "static": true, + "longname": "src/DEFAULT_DISPLAY_BASE.js~DEFAULT_DISPLAY_BASE", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/DEFAULT_DISPLAY_BASE.js", + "importStyle": "{DEFAULT_DISPLAY_BASE}", + "description": null, + "lineNumber": 1, + "undocument": true, + "type": { + "types": [ + "number" + ] + } + }, + { + "__docId__": 50, + "kind": "file", + "name": "src/DEFAULT_REPRESENTATION_BASE.js", + "content": "// Import { DEFAULT_DISPLAY_BASE } from './' ;\nimport {MAX_BASE} from './_limits.js';\n\n/*\n * Biggest power of DEFAULT_DISPLAY_BASE whose square holds in a single double\n * with full precision. For working correctly with multiplication algorithms\n * and for fast base DEFAULT_DISPLAY_BASE printing. On older machines with no\n * native doubles, it might be worth to only use ints.\n */\n// export const DEFAULT_REPRESENTATION_BASE = Math.pow(DEFAULT_DISPLAY_BASE,Math.floor(Math.log(Math.sqrt(Math.pow(2,53)))/Math.log(DEFAULT_DISPLAY_BASE))) ;\n// export const DEFAULT_REPRESENTATION_BASE = Math.pow(16,Math.floor(Math.log(Math.sqrt(Math.pow(2,53)))/Math.log(16))) ;\n// export const DEFAULT_REPRESENTATION_BASE = Math.pow(2,26) | 0;\nexport const DEFAULT_REPRESENTATION_BASE = MAX_BASE;\n", + "static": true, + "longname": "/home/runner/work/js-integer/js-integer/src/DEFAULT_REPRESENTATION_BASE.js", + "access": "public", + "description": null, + "lineNumber": 1 + }, + { + "__docId__": 51, + "kind": "variable", + "name": "DEFAULT_REPRESENTATION_BASE", + "memberof": "src/DEFAULT_REPRESENTATION_BASE.js", + "static": true, + "longname": "src/DEFAULT_REPRESENTATION_BASE.js~DEFAULT_REPRESENTATION_BASE", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/DEFAULT_REPRESENTATION_BASE.js", + "importStyle": "{DEFAULT_REPRESENTATION_BASE}", + "description": null, + "lineNumber": 13, + "undocument": true, + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 52, + "kind": "file", + "name": "src/Integer.js", + "content": "import {DEFAULT_DISPLAY_BASE} from './DEFAULT_DISPLAY_BASE.js';\nimport {ZeroDivisionError} from './ZeroDivisionError.js';\n\nimport {ValueError} from '@aureooms/js-error';\n\nimport {_from_number} from './_from_number.js';\n\nimport {\n\tstringify,\n\tconvert,\n\t_trim_positive,\n\t_alloc,\n\t_copy,\n\t_zeros,\n\tjz,\n\tcmp,\n\teq,\n\tadd,\n\t_sub,\n\tmul,\n\t_idivmod,\n\t_pow_double,\n\tincrement,\n\teuclidean_algorithm,\n\textended_euclidean_algorithm,\n} from '@aureooms/js-integer-big-endian';\n\nimport {MIN_NUMBER, MAX_NUMBER, MAX_BASE} from './_limits.js';\n\nexport class Integer {\n\tconstructor(base, is_negative, limbs) {\n\t\tthis._base = base;\n\t\tthis._is_negative = is_negative;\n\t\tthis._limbs = limbs;\n\t}\n\n\tmove(other) {\n\t\tother._base = this._base;\n\t\tother._is_negative = this._is_negative;\n\t\tother._limbs = this._limbs;\n\t\treturn other;\n\t}\n\n\tclone() {\n\t\treturn new Integer(this._base, this._is_negative, this._limbs);\n\t}\n\n\t_limbs_in_base(base) {\n\t\t// TODO save result for later ? Maybe replace base ?\n\t\treturn this._base === base\n\t\t\t? this._limbs\n\t\t\t: convert(this._base, base, this._limbs, 0, this._limbs.length);\n\t}\n\n\ttoString(base = DEFAULT_DISPLAY_BASE) {\n\t\tif (this.iszero()) return '0';\n\n\t\tconst digits = stringify(\n\t\t\tthis._base,\n\t\t\tbase,\n\t\t\tthis._limbs,\n\t\t\t0,\n\t\t\tthis._limbs.length,\n\t\t);\n\n\t\treturn this._is_negative ? '-' + digits : digits;\n\t}\n\n\tadd(other) {\n\t\tif (this._is_negative !== other._is_negative) {\n\t\t\treturn other._is_negative\n\t\t\t\t? this.sub(other.opposite())\n\t\t\t\t: other.sub(this.opposite());\n\t\t}\n\n\t\tconst result_is_negative = this._is_negative;\n\t\tconst r = this._base;\n\n\t\tconst a = this._limbs;\n\n\t\tconst b = other._limbs_in_base(r);\n\n\t\tconst c = _zeros(Math.max(a.length, b.length) + 1);\n\n\t\tadd(r, a, 0, a.length, b, 0, b.length, c, 0, c.length);\n\n\t\treturn new Integer(r, result_is_negative, c);\n\t}\n\n\tiadd(other) {\n\t\t// TODO optimize but be careful with side effects\n\t\treturn this.add(other).move(this);\n\t}\n\n\taddn(number) {\n\t\t// TODO optimize\n\t\treturn this.add(_from_number(number));\n\t}\n\n\tiaddn(number) {\n\t\t// TODO optimize but be careful with side effects\n\t\treturn this.addn(number).move(this);\n\t}\n\n\tsub(other) {\n\t\tif (this._is_negative !== other._is_negative) {\n\t\t\treturn other._is_negative\n\t\t\t\t? this.add(other.opposite())\n\t\t\t\t: this.opposite().add(other).opposite();\n\t\t}\n\t\t// /!\\ _sub needs |c| >= |a| >= |b|\n\n\t\tconst r = this._base;\n\t\tconst a = this._limbs;\n\t\tconst aj = a.length;\n\t\tconst ai = _trim_positive(a, 0, aj);\n\n\t\tif (ai >= aj) return other.opposite();\n\n\t\tconst b = other._limbs_in_base(r);\n\t\tconst bj = b.length;\n\t\tconst bi = _trim_positive(b, 0, bj);\n\n\t\tif (bi >= bj) return this.clone();\n\n\t\tif (cmp(a, ai, aj, b, bi, bj) < 0) {\n\t\t\tconst c = _zeros(bj - bi);\n\n\t\t\t_sub(r, b, bi, bj, a, ai, aj, c, 0, c.length);\n\n\t\t\treturn new Integer(r, ~this._is_negative, c);\n\t\t}\n\n\t\tconst c = _zeros(aj - ai);\n\n\t\t_sub(r, a, ai, aj, b, bi, bj, c, 0, c.length);\n\n\t\treturn new Integer(r, this._is_negative, c);\n\t}\n\n\tisub(other) {\n\t\t// TODO optimize but be careful with side effects\n\t\treturn this.sub(other).move(this);\n\t}\n\n\tsubn(number) {\n\t\treturn this.sub(_from_number(number));\n\t}\n\n\tisubn(number) {\n\t\treturn this.subn(number).move(this);\n\t}\n\n\tmul(other) {\n\t\tconst result_is_negative = this._is_negative ^ other._is_negative;\n\t\tconst r = this._base;\n\n\t\tconst a = this._limbs;\n\n\t\tconst b = other._limbs_in_base(r);\n\n\t\tconst c = _zeros(a.length + b.length);\n\n\t\tmul(r, a, 0, a.length, b, 0, b.length, c, 0, c.length);\n\n\t\treturn new Integer(r, result_is_negative, c);\n\t}\n\n\timul(other) {\n\t\t// TODO optimize but be careful with side effects\n\t\treturn this.mul(other).move(this);\n\t}\n\n\tmuln(number) {\n\t\treturn this.mul(_from_number(number));\n\t}\n\n\timuln(number) {\n\t\treturn this.muln(number).move(this);\n\t}\n\n\t/**\n\t * Computes this raised to the xth power.\n\t * x is a double smaller or equal to 2^53.\n\t *\n\t * @param {Number} x The power to raise this to.\n\t * @return {Integer} this ^ x\n\t */\n\tpown(x) {\n\t\tconst is_negative = this._is_negative & x & 1 ? -1 : 0;\n\n\t\tconst a = this._limbs;\n\t\tconst c = _zeros(Math.max(1, a.length * x));\n\n\t\t_pow_double(this._base, x, a, 0, a.length, c, 0, c.length);\n\n\t\treturn new Integer(this._base, is_negative, c);\n\t}\n\n\tpow(other) {\n\t\treturn this.pown(other.valueOf());\n\t}\n\n\tipow(other) {\n\t\t// TODO optimize but be careful with side effects\n\t\treturn this.pow(other).move(this);\n\t}\n\n\tipown(number) {\n\t\t// TODO optimize but be careful with side effects\n\t\treturn this.pown(number).move(this);\n\t}\n\n\tsquare() {\n\t\t// TODO optimize but be careful with side effects\n\t\t// TODO use this.mul(this) instead?\n\t\treturn this.pown(2);\n\t}\n\n\tisquare() {\n\t\t// TODO optimize but be careful with side effects\n\t\t// TODO use this.imul(this) instead?\n\t\treturn this.square().move(this);\n\t}\n\n\tdiv(other) {\n\t\treturn this.divmod(other)[0];\n\t}\n\n\tdivn(number) {\n\t\treturn this.div(_from_number(number));\n\t}\n\n\tidiv(other) {\n\t\t// TODO optimize but be careful with side effects\n\t\treturn this.div(other).move(this);\n\t}\n\n\tidivn(number) {\n\t\treturn this.divn(number).move(this);\n\t}\n\n\tmod(other) {\n\t\treturn this.divmod(other)[1];\n\t}\n\n\tmodn(number) {\n\t\treturn this.mod(_from_number(number));\n\t}\n\n\timod(other) {\n\t\t// TODO optimize but be careful with side effects\n\t\treturn this.mod(other).move(this);\n\t}\n\n\timodn(number) {\n\t\treturn this.modn(number).move(this);\n\t}\n\n\tdivround(other) {\n\t\tconst [q, r] = this.divmod(other);\n\t\tif (r.ge(other.divn(2).addn(other.iseven() ? 0 : 1)))\n\t\t\tincrement(q._base, q._limbs, 0, q._limbs.length);\n\t\treturn q;\n\t}\n\n\tdivmod(other) {\n\t\tif (other.iszero()) throw new ZeroDivisionError('Integer division by zero'); // Optimize\n\n\t\tconst quotient_is_negative = this._is_negative ^ other._is_negative;\n\t\tconst r = this._base;\n\n\t\t// The underlying algorithm does not allow leading 0's so we trim them.\n\t\tconst lj = this._limbs.length;\n\t\tconst li = _trim_positive(this._limbs, 0, lj);\n\n\t\t// Dividend is 0\n\t\tif (li >= lj)\n\t\t\treturn [new Integer(this._base, 0, [0]), new Integer(this._base, 0, [0])];\n\n\t\t// Dividend (& Remainder)\n\t\tconst D = _alloc(lj - li);\n\t\t_copy(this._limbs, li, lj, D, 0);\n\n\t\t// Divisor\n\t\tconst d = other._limbs_in_base(r);\n\t\tconst dj = d.length;\n\t\tconst di = _trim_positive(d, 0, dj); // Di < dj because d != 0\n\n\t\t// Quotient\n\t\tconst q = _zeros(D.length);\n\n\t\t_idivmod(r, D, 0, D.length, d, di, dj, q, 0, q.length);\n\n\t\tconst Q = new Integer(r, quotient_is_negative, q); // Quotient\n\t\tconst R = new Integer(r, 0, D); // Remainder\n\n\t\tif ((this._is_negative || other._is_negative) && !jz(D, 0, D.length)) {\n\t\t\tif (other._is_negative) {\n\t\t\t\tif (this._is_negative) {\n\t\t\t\t\tR.negate(); // TODO optimize\n\t\t\t\t} else {\n\t\t\t\t\tincrement(r, q, 0, q.length);\n\t\t\t\t\tR.iadd(other); // TODO optimize\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tincrement(r, q, 0, q.length);\n\t\t\t\tR.negate().iadd(other); // TODO optimize\n\t\t\t}\n\t\t}\n\n\t\treturn [Q, R];\n\t}\n\n\tidivmod(other) {\n\t\t// TODO optimize but be careful with side effects\n\t\tconst [q, r] = this.divmod(other);\n\t\treturn [q, r.move(this)];\n\t}\n\n\tdivmodn(number) {\n\t\treturn this.divmod(_from_number(number));\n\t}\n\n\tidivmodn(number) {\n\t\tconst [q, r] = this.divmodn(number);\n\t\treturn [q, r.move(this)];\n\t}\n\n\topposite() {\n\t\treturn new Integer(this._base, ~this._is_negative, this._limbs);\n\t}\n\n\tnegate() {\n\t\t// TODO optimize but be careful with side effects\n\t\treturn this.opposite().move(this);\n\t}\n\n\tabs() {\n\t\treturn this.sign() >= 0 ? this : this.opposite();\n\t}\n\n\tiabs() {\n\t\treturn this.abs().move(this);\n\t}\n\n\tsign() {\n\t\treturn this.iszero() ? 0 : this._is_negative ? -1 : 1;\n\t}\n\n\tiszero() {\n\t\treturn jz(this._limbs, 0, this._limbs.length);\n\t}\n\n\tisone() {\n\t\tif (this._is_negative) return false;\n\t\treturn eq(this._limbs, 0, this._limbs.length, [1], 0, 1);\n\t}\n\n\tisnonzero() {\n\t\treturn !this.iszero();\n\t}\n\n\tisnegative() {\n\t\treturn this._is_negative === -1;\n\t}\n\n\tispositive() {\n\t\treturn this.sign() > 0;\n\t}\n\n\tisnonnegative() {\n\t\treturn !this.isnegative();\n\t}\n\n\tisnonpositive() {\n\t\treturn !this.ispositive();\n\t}\n\n\tparity() {\n\t\t// TODO optimize this, there is a much faster way to test for parity\n\t\t// when the base is a multiple of two\n\t\treturn this.modn(2);\n\t}\n\n\tiseven() {\n\t\treturn this.parity().iszero();\n\t}\n\n\tisodd() {\n\t\treturn !this.iseven();\n\t}\n\n\tbin() {\n\t\treturn this.toString(2);\n\t}\n\n\toct() {\n\t\treturn this.toString(8);\n\t}\n\n\thex() {\n\t\treturn this.toString(16);\n\t}\n\n\ttoJSON() {\n\t\treturn this.hex();\n\t}\n\n\tdigits(base = DEFAULT_DISPLAY_BASE) {\n\t\t// TODO Once #to is implemented we can rewrite this as\n\t\t// return this.to(LITTLE_ENDIAN, base, Array) ;\n\t\treturn convert(\n\t\t\tthis._base,\n\t\t\tbase,\n\t\t\tthis._limbs,\n\t\t\t0,\n\t\t\tthis._limbs.length,\n\t\t).reverse();\n\t}\n\n\tbits() {\n\t\treturn this.digits(2);\n\t}\n\n\tdivides(other) {\n\t\treturn other.mod(this).iszero();\n\t}\n\n\tdivide_knowing_divisible_by(other) {\n\t\t// TODO optimize\n\t\treturn this.div(other);\n\t}\n\n\tcmp(other) {\n\t\t// TODO optimize with _trim_positive\n\n\t\tif (this.iszero()) {\n\t\t\tif (other.iszero()) return 0;\n\t\t\tif (other._is_negative) return 1;\n\t\t\treturn -1;\n\t\t}\n\n\t\tif (this._is_negative < other._is_negative) return -1;\n\t\tif (this._is_negative > other._is_negative) return 1;\n\n\t\tconst a = this._limbs;\n\t\tconst b = other._limbs_in_base(this._base);\n\n\t\treturn this._is_negative === 0\n\t\t\t? cmp(a, 0, a.length, b, 0, b.length)\n\t\t\t: cmp(b, 0, b.length, a, 0, a.length);\n\t}\n\n\tcmpn(number) {\n\t\treturn this.cmp(_from_number(number));\n\t}\n\n\teq(other) {\n\t\treturn this.cmp(other) === 0;\n\t}\n\n\teqn(number) {\n\t\treturn this.cmpn(number) === 0;\n\t}\n\n\tge(other) {\n\t\treturn this.cmp(other) >= 0;\n\t}\n\n\tgen(number) {\n\t\treturn this.cmpn(number) >= 0;\n\t}\n\n\tgt(other) {\n\t\treturn this.cmp(other) > 0;\n\t}\n\n\tgtn(number) {\n\t\treturn this.cmpn(number) > 0;\n\t}\n\n\tle(other) {\n\t\treturn this.cmp(other) <= 0;\n\t}\n\n\tlen(number) {\n\t\treturn this.cmpn(number) <= 0;\n\t}\n\n\tlt(other) {\n\t\treturn this.cmp(other) < 0;\n\t}\n\n\tltn(number) {\n\t\treturn this.cmpn(number) < 0;\n\t}\n\n\tne(other) {\n\t\treturn this.cmp(other) !== 0;\n\t}\n\n\tnen(number) {\n\t\treturn this.cmpn(number) !== 0;\n\t}\n\n\tgcd(other) {\n\t\tconst r = this._base;\n\t\tconst a = this._limbs;\n\t\tconst b = other._limbs_in_base(r);\n\t\tconst [d, di, dj] = euclidean_algorithm(r, a, 0, a.length, b, 0, b.length);\n\t\tconst gcd = _alloc(dj - di);\n\t\t_copy(d, di, dj, gcd, 0);\n\t\treturn new Integer(r, 0, gcd);\n\t}\n\n\tegcd(other) {\n\t\tconst r = this._base;\n\t\tconst a = this._limbs;\n\t\tconst b = other._limbs_in_base(r);\n\t\tconst [\n\t\t\tR0,\n\t\t\tR0i,\n\t\t\tS0,\n\t\t\tS0i,\n\t\t\tT0,\n\t\t\tT0i,\n\t\t\tS1,\n\t\t\tS1i,\n\t\t\tT1,\n\t\t\tT1i,\n\t\t\tsteps,\n\t\t] = extended_euclidean_algorithm(r, a, 0, a.length, b, 0, b.length);\n\t\tconst gcd = _alloc(R0.length - R0i);\n\t\t_copy(R0, R0i, R0.length, gcd, 0);\n\t\tconst x = _alloc(S0.length - S0i);\n\t\t_copy(S0, S0i, S0.length, x, 0);\n\t\tconst y = _alloc(T0.length - T0i);\n\t\t_copy(T0, T0i, T0.length, y, 0);\n\t\tconst u = _alloc(S1.length - S1i);\n\t\t_copy(S1, S1i, S1.length, u, 0);\n\t\tconst v = _alloc(T1.length - T1i);\n\t\t_copy(T1, T1i, T1.length, v, 0);\n\t\treturn {\n\t\t\t// TODO use immutable zero\n\t\t\tgcd: new Integer(r, 0, gcd),\n\t\t\tx:\n\t\t\t\tx.length > 0\n\t\t\t\t\t? new Integer(r, this._is_negative ^ ((steps % 2) - 1), x)\n\t\t\t\t\t: new Integer(r, 0, [0]),\n\t\t\ty:\n\t\t\t\ty.length > 0\n\t\t\t\t\t? new Integer(r, other._is_negative ^ -(steps % 2), y)\n\t\t\t\t\t: new Integer(r, 0, [0]),\n\t\t\tu:\n\t\t\t\tu.length > 0\n\t\t\t\t\t? new Integer(r, this._is_negative ^ -(steps % 2), u)\n\t\t\t\t\t: new Integer(r, 0, [0]),\n\t\t\tv:\n\t\t\t\tv.length > 0\n\t\t\t\t\t? new Integer(r, other._is_negative ^ ((steps % 2) - 1), v)\n\t\t\t\t\t: new Integer(r, 0, [0]),\n\t\t};\n\t}\n\n\tvalueOf() {\n\t\tif (this.gtn(MAX_NUMBER))\n\t\t\tthrow new ValueError(\n\t\t\t\t`Cannot call valueOf on Integer larger than ${MAX_NUMBER}. Got ${this.toString()}`,\n\t\t\t);\n\t\tif (this.ltn(MIN_NUMBER))\n\t\t\tthrow new ValueError(\n\t\t\t\t`Cannot call valueOf on Integer smaller than ${MIN_NUMBER}. Got ${this.toString()}`,\n\t\t\t);\n\n\t\tconst limbs = convert(\n\t\t\tthis._base,\n\t\t\tMAX_BASE,\n\t\t\tthis._limbs,\n\t\t\t0,\n\t\t\tthis._limbs.length,\n\t\t);\n\n\t\tconst sign = this._is_negative ? -1 : 1;\n\n\t\tconst value =\n\t\t\tlimbs.length === 2 ? limbs[0] * MAX_BASE + limbs[1] : limbs[0];\n\n\t\treturn sign * value;\n\t}\n\n\ttoNumber() {\n\t\treturn this.valueOf();\n\t}\n}\n", + "static": true, + "longname": "/home/runner/work/js-integer/js-integer/src/Integer.js", + "access": "public", + "description": null, + "lineNumber": 1 + }, + { + "__docId__": 53, + "kind": "class", + "name": "Integer", + "memberof": "src/Integer.js", + "static": true, + "longname": "src/Integer.js~Integer", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/Integer.js", + "importStyle": "{Integer}", + "description": null, + "lineNumber": 30, + "undocument": true, + "interface": false + }, + { + "__docId__": 54, + "kind": "constructor", + "name": "constructor", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#constructor", + "access": "public", + "description": null, + "lineNumber": 31, + "undocument": true + }, + { + "__docId__": 55, + "kind": "member", + "name": "_base", + "memberof": "src/Integer.js~Integer", + "static": false, + "longname": "src/Integer.js~Integer#_base", + "access": "private", + "description": null, + "lineNumber": 32, + "undocument": true, + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 56, + "kind": "member", + "name": "_is_negative", + "memberof": "src/Integer.js~Integer", + "static": false, + "longname": "src/Integer.js~Integer#_is_negative", + "access": "private", + "description": null, + "lineNumber": 33, + "undocument": true, + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 57, + "kind": "member", + "name": "_limbs", + "memberof": "src/Integer.js~Integer", + "static": false, + "longname": "src/Integer.js~Integer#_limbs", + "access": "private", + "description": null, + "lineNumber": 34, + "undocument": true, + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 58, + "kind": "method", + "name": "move", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#move", + "access": "public", + "description": null, + "lineNumber": 37, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 59, + "kind": "method", + "name": "clone", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#clone", + "access": "public", + "description": null, + "lineNumber": 44, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 60, + "kind": "method", + "name": "_limbs_in_base", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#_limbs_in_base", + "access": "private", + "description": null, + "lineNumber": 48, + "undocument": true, + "params": [ + { + "name": "base", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 61, + "kind": "method", + "name": "toString", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#toString", + "access": "public", + "description": null, + "lineNumber": 55, + "undocument": true, + "params": [ + { + "name": "base", + "optional": true, + "types": [ + "*" + ], + "defaultRaw": "DEFAULT_DISPLAY_BASE", + "defaultValue": "DEFAULT_DISPLAY_BASE" + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 62, + "kind": "method", + "name": "add", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#add", + "access": "public", + "description": null, + "lineNumber": 69, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 63, + "kind": "method", + "name": "iadd", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#iadd", + "access": "public", + "description": null, + "lineNumber": 90, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 64, + "kind": "method", + "name": "addn", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#addn", + "access": "public", + "description": null, + "lineNumber": 95, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 65, + "kind": "method", + "name": "iaddn", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#iaddn", + "access": "public", + "description": null, + "lineNumber": 100, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 66, + "kind": "method", + "name": "sub", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#sub", + "access": "public", + "description": null, + "lineNumber": 105, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 67, + "kind": "method", + "name": "isub", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#isub", + "access": "public", + "description": null, + "lineNumber": 141, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 68, + "kind": "method", + "name": "subn", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#subn", + "access": "public", + "description": null, + "lineNumber": 146, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 69, + "kind": "method", + "name": "isubn", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#isubn", + "access": "public", + "description": null, + "lineNumber": 150, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 70, + "kind": "method", + "name": "mul", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#mul", + "access": "public", + "description": null, + "lineNumber": 154, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 71, + "kind": "method", + "name": "imul", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#imul", + "access": "public", + "description": null, + "lineNumber": 169, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 72, + "kind": "method", + "name": "muln", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#muln", + "access": "public", + "description": null, + "lineNumber": 174, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 73, + "kind": "method", + "name": "imuln", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#imuln", + "access": "public", + "description": null, + "lineNumber": 178, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 74, + "kind": "method", + "name": "pown", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#pown", + "access": "public", + "description": "Computes this raised to the xth power.\nx is a double smaller or equal to 2^53.", + "lineNumber": 189, + "params": [ + { + "nullable": null, + "types": [ + "Number" + ], + "spread": false, + "optional": false, + "name": "x", + "description": "The power to raise this to." + } + ], + "return": { + "nullable": null, + "types": [ + "Integer" + ], + "spread": false, + "description": "this ^ x" + } + }, + { + "__docId__": 75, + "kind": "method", + "name": "pow", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#pow", + "access": "public", + "description": null, + "lineNumber": 200, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 76, + "kind": "method", + "name": "ipow", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#ipow", + "access": "public", + "description": null, + "lineNumber": 204, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 77, + "kind": "method", + "name": "ipown", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#ipown", + "access": "public", + "description": null, + "lineNumber": 209, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 78, + "kind": "method", + "name": "square", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#square", + "access": "public", + "description": null, + "lineNumber": 214, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 79, + "kind": "method", + "name": "isquare", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#isquare", + "access": "public", + "description": null, + "lineNumber": 220, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 80, + "kind": "method", + "name": "div", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#div", + "access": "public", + "description": null, + "lineNumber": 226, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 81, + "kind": "method", + "name": "divn", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#divn", + "access": "public", + "description": null, + "lineNumber": 230, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 82, + "kind": "method", + "name": "idiv", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#idiv", + "access": "public", + "description": null, + "lineNumber": 234, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 83, + "kind": "method", + "name": "idivn", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#idivn", + "access": "public", + "description": null, + "lineNumber": 239, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 84, + "kind": "method", + "name": "mod", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#mod", + "access": "public", + "description": null, + "lineNumber": 243, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 85, + "kind": "method", + "name": "modn", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#modn", + "access": "public", + "description": null, + "lineNumber": 247, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 86, + "kind": "method", + "name": "imod", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#imod", + "access": "public", + "description": null, + "lineNumber": 251, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 87, + "kind": "method", + "name": "imodn", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#imodn", + "access": "public", + "description": null, + "lineNumber": 256, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 88, + "kind": "method", + "name": "divround", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#divround", + "access": "public", + "description": null, + "lineNumber": 260, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 89, + "kind": "method", + "name": "divmod", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#divmod", + "access": "public", + "description": null, + "lineNumber": 267, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "undefined[]" + ] + } + }, + { + "__docId__": 90, + "kind": "method", + "name": "idivmod", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#idivmod", + "access": "public", + "description": null, + "lineNumber": 315, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "undefined[]" + ] + } + }, + { + "__docId__": 91, + "kind": "method", + "name": "divmodn", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#divmodn", + "access": "public", + "description": null, + "lineNumber": 321, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 92, + "kind": "method", + "name": "idivmodn", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#idivmodn", + "access": "public", + "description": null, + "lineNumber": 325, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "undefined[]" + ] + } + }, + { + "__docId__": 93, + "kind": "method", + "name": "opposite", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#opposite", + "access": "public", + "description": null, + "lineNumber": 330, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 94, + "kind": "method", + "name": "negate", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#negate", + "access": "public", + "description": null, + "lineNumber": 334, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 95, + "kind": "method", + "name": "abs", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#abs", + "access": "public", + "description": null, + "lineNumber": 339, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 96, + "kind": "method", + "name": "iabs", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#iabs", + "access": "public", + "description": null, + "lineNumber": 343, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 97, + "kind": "method", + "name": "sign", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#sign", + "access": "public", + "description": null, + "lineNumber": 347, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 98, + "kind": "method", + "name": "iszero", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#iszero", + "access": "public", + "description": null, + "lineNumber": 351, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 99, + "kind": "method", + "name": "isone", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#isone", + "access": "public", + "description": null, + "lineNumber": 355, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 100, + "kind": "method", + "name": "isnonzero", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#isnonzero", + "access": "public", + "description": null, + "lineNumber": 360, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 101, + "kind": "method", + "name": "isnegative", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#isnegative", + "access": "public", + "description": null, + "lineNumber": 364, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 102, + "kind": "method", + "name": "ispositive", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#ispositive", + "access": "public", + "description": null, + "lineNumber": 368, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 103, + "kind": "method", + "name": "isnonnegative", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#isnonnegative", + "access": "public", + "description": null, + "lineNumber": 372, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 104, + "kind": "method", + "name": "isnonpositive", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#isnonpositive", + "access": "public", + "description": null, + "lineNumber": 376, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 105, + "kind": "method", + "name": "parity", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#parity", + "access": "public", + "description": null, + "lineNumber": 380, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 106, + "kind": "method", + "name": "iseven", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#iseven", + "access": "public", + "description": null, + "lineNumber": 386, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 107, + "kind": "method", + "name": "isodd", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#isodd", + "access": "public", + "description": null, + "lineNumber": 390, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 108, + "kind": "method", + "name": "bin", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#bin", + "access": "public", + "description": null, + "lineNumber": 394, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 109, + "kind": "method", + "name": "oct", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#oct", + "access": "public", + "description": null, + "lineNumber": 398, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 110, + "kind": "method", + "name": "hex", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#hex", + "access": "public", + "description": null, + "lineNumber": 402, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 111, + "kind": "method", + "name": "toJSON", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#toJSON", + "access": "public", + "description": null, + "lineNumber": 406, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 112, + "kind": "method", + "name": "digits", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#digits", + "access": "public", + "description": null, + "lineNumber": 410, + "undocument": true, + "params": [ + { + "name": "base", + "optional": true, + "types": [ + "*" + ], + "defaultRaw": "DEFAULT_DISPLAY_BASE", + "defaultValue": "DEFAULT_DISPLAY_BASE" + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 113, + "kind": "method", + "name": "bits", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#bits", + "access": "public", + "description": null, + "lineNumber": 422, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 114, + "kind": "method", + "name": "divides", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#divides", + "access": "public", + "description": null, + "lineNumber": 426, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 115, + "kind": "method", + "name": "divide_knowing_divisible_by", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#divide_knowing_divisible_by", + "access": "public", + "description": null, + "lineNumber": 430, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 116, + "kind": "method", + "name": "cmp", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#cmp", + "access": "public", + "description": null, + "lineNumber": 435, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 117, + "kind": "method", + "name": "cmpn", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#cmpn", + "access": "public", + "description": null, + "lineNumber": 455, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 118, + "kind": "method", + "name": "eq", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#eq", + "access": "public", + "description": null, + "lineNumber": 459, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 119, + "kind": "method", + "name": "eqn", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#eqn", + "access": "public", + "description": null, + "lineNumber": 463, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 120, + "kind": "method", + "name": "ge", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#ge", + "access": "public", + "description": null, + "lineNumber": 467, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 121, + "kind": "method", + "name": "gen", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#gen", + "access": "public", + "description": null, + "lineNumber": 471, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 122, + "kind": "method", + "name": "gt", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#gt", + "access": "public", + "description": null, + "lineNumber": 475, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 123, + "kind": "method", + "name": "gtn", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#gtn", + "access": "public", + "description": null, + "lineNumber": 479, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 124, + "kind": "method", + "name": "le", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#le", + "access": "public", + "description": null, + "lineNumber": 483, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 125, + "kind": "method", + "name": "len", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#len", + "access": "public", + "description": null, + "lineNumber": 487, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 126, + "kind": "method", + "name": "lt", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#lt", + "access": "public", + "description": null, + "lineNumber": 491, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 127, + "kind": "method", + "name": "ltn", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#ltn", + "access": "public", + "description": null, + "lineNumber": 495, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 128, + "kind": "method", + "name": "ne", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#ne", + "access": "public", + "description": null, + "lineNumber": 499, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 129, + "kind": "method", + "name": "nen", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#nen", + "access": "public", + "description": null, + "lineNumber": 503, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 130, + "kind": "method", + "name": "gcd", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#gcd", + "access": "public", + "description": null, + "lineNumber": 507, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 131, + "kind": "method", + "name": "egcd", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#egcd", + "access": "public", + "description": null, + "lineNumber": 517, + "undocument": true, + "params": [ + { + "name": "other", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "{\"gcd\": *, \"x\": *, \"y\": *, \"u\": *, \"v\": *}" + ] + } + }, + { + "__docId__": 132, + "kind": "method", + "name": "valueOf", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#valueOf", + "access": "public", + "description": null, + "lineNumber": 566, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 133, + "kind": "method", + "name": "toNumber", + "memberof": "src/Integer.js~Integer", + "generator": false, + "async": false, + "static": false, + "longname": "src/Integer.js~Integer#toNumber", + "access": "public", + "description": null, + "lineNumber": 592, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 134, + "kind": "file", + "name": "src/IntegerRing.js", + "content": "import {parse, convert} from '@aureooms/js-integer-big-endian';\nimport {TypeError, ValueError} from '@aureooms/js-error';\n\nimport {Integer} from './Integer.js';\nimport {DEFAULT_DISPLAY_BASE} from './DEFAULT_DISPLAY_BASE.js';\nimport {_from_number} from './_from_number.js';\n\nexport class IntegerRing {\n\tconstructor(name, base) {\n\t\tthis.name = name;\n\t\tthis._base = base;\n\t}\n\n\tcharacteristic() {\n\t\treturn this.$0();\n\t}\n\n\tfrom(object, base = undefined, is_negative = 0) {\n\t\tif (object === null || object === undefined) return this.$0();\n\n\t\tswitch (object.constructor.prototype) {\n\t\t\tcase Number.prototype:\n\t\t\t\tif (base !== undefined)\n\t\t\t\t\tthrow new ValueError(\n\t\t\t\t\t\t'IntegerRing#from: using the base parameter does not make sense when passing a Number.',\n\t\t\t\t\t);\n\t\t\t\treturn this.from_number(object, is_negative);\n\n\t\t\tcase String.prototype:\n\t\t\t\tif (base === undefined) base = DEFAULT_DISPLAY_BASE;\n\t\t\t\treturn this.from_string(object, base, is_negative);\n\n\t\t\tcase Array.prototype:\n\t\t\t\tif (base === undefined) base = this._base;\n\t\t\t\treturn this.from_digits(object, base, is_negative);\n\n\t\t\tcase Boolean.prototype:\n\t\t\t\tif (base !== undefined)\n\t\t\t\t\tthrow new ValueError(\n\t\t\t\t\t\t'IntegerRing#from: using the base parameter does not make sense when passing a Boolean.',\n\t\t\t\t\t);\n\t\t\t\treturn this.from_number(Number(object), is_negative);\n\n\t\t\tcase Integer.prototype:\n\t\t\t\tif (base !== undefined)\n\t\t\t\t\tthrow new ValueError(\n\t\t\t\t\t\t'IntegerRing#from: using the base parameter does not make sense when passing an Integer.',\n\t\t\t\t\t);\n\t\t\t\treturn new Integer(\n\t\t\t\t\tobject._base,\n\t\t\t\t\tobject._is_negative ^ is_negative,\n\t\t\t\t\tobject._limbs,\n\t\t\t\t);\n\n\t\t\tdefault:\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`IntegerRing#from cannot handle ${object.constructor.prototype}`,\n\t\t\t\t);\n\t\t}\n\t}\n\n\tfrom_number(number, is_negative = 0) {\n\t\tconst dirty = _from_number(number);\n\n\t\tconst limbs = dirty._limbs_in_base(this._base);\n\n\t\treturn new Integer(this._base, is_negative ^ dirty._is_negative, limbs);\n\t}\n\n\tfrom_string(string, base = 10, is_negative = 0) {\n\t\tif (string.length === 0)\n\t\t\tthrow new ValueError(\n\t\t\t\t'IntegerRing#from_string cannot parse empty string.',\n\t\t\t);\n\n\t\tif (string[0] === '-')\n\t\t\treturn this.from_string(string.slice(1), base, ~is_negative);\n\n\t\tif (string[0] === '+')\n\t\t\treturn this.from_string(string.slice(1), base, is_negative);\n\n\t\tconst limbs = parse(base, this._base, string);\n\n\t\tif (limbs.length === 1 && limbs[0] === 0) is_negative = 0;\n\n\t\treturn new Integer(this._base, is_negative, limbs);\n\t}\n\n\tfrom_digits(digits, base, is_negative) {\n\t\tconst limbs = convert(\n\t\t\tbase,\n\t\t\tthis._base,\n\t\t\tdigits.slice().reverse(),\n\t\t\t0,\n\t\t\tdigits.length,\n\t\t);\n\n\t\treturn new Integer(this._base, is_negative, limbs);\n\t}\n\n\ttoString() {\n\t\treturn this.name;\n\t}\n\n\t$0() {\n\t\t// TODO Could we use an empty array instead ?\n\t\treturn new Integer(this._base, 0, [0]);\n\t}\n\n\t$1() {\n\t\treturn new Integer(this._base, 0, [1]);\n\t}\n\n\t$_1() {\n\t\treturn new Integer(this._base, -1, [1]);\n\t}\n\n\thas(x) {\n\t\tif (x instanceof Integer) return true;\n\t\treturn Number.isInteger(x);\n\t}\n\n\tmin(a, b) {\n\t\treturn a.le(b) ? a : b;\n\t}\n\n\tmax(a, b) {\n\t\treturn a.ge(b) ? a : b;\n\t}\n}\n", + "static": true, + "longname": "/home/runner/work/js-integer/js-integer/src/IntegerRing.js", + "access": "public", + "description": null, + "lineNumber": 1 + }, + { + "__docId__": 135, + "kind": "class", + "name": "IntegerRing", + "memberof": "src/IntegerRing.js", + "static": true, + "longname": "src/IntegerRing.js~IntegerRing", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/IntegerRing.js", + "importStyle": "{IntegerRing}", + "description": null, + "lineNumber": 8, + "undocument": true, + "interface": false + }, + { + "__docId__": 136, + "kind": "constructor", + "name": "constructor", + "memberof": "src/IntegerRing.js~IntegerRing", + "generator": false, + "async": false, + "static": false, + "longname": "src/IntegerRing.js~IntegerRing#constructor", + "access": "public", + "description": null, + "lineNumber": 9, + "undocument": true + }, + { + "__docId__": 137, + "kind": "member", + "name": "name", + "memberof": "src/IntegerRing.js~IntegerRing", + "static": false, + "longname": "src/IntegerRing.js~IntegerRing#name", + "access": "public", + "description": null, + "lineNumber": 10, + "undocument": true, + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 138, + "kind": "member", + "name": "_base", + "memberof": "src/IntegerRing.js~IntegerRing", + "static": false, + "longname": "src/IntegerRing.js~IntegerRing#_base", + "access": "private", + "description": null, + "lineNumber": 11, + "undocument": true, + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 139, + "kind": "method", + "name": "characteristic", + "memberof": "src/IntegerRing.js~IntegerRing", + "generator": false, + "async": false, + "static": false, + "longname": "src/IntegerRing.js~IntegerRing#characteristic", + "access": "public", + "description": null, + "lineNumber": 14, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 140, + "kind": "method", + "name": "from", + "memberof": "src/IntegerRing.js~IntegerRing", + "generator": false, + "async": false, + "static": false, + "longname": "src/IntegerRing.js~IntegerRing#from", + "access": "public", + "description": null, + "lineNumber": 18, + "undocument": true, + "params": [ + { + "name": "object", + "types": [ + "*" + ] + }, + { + "name": "base", + "optional": true, + "types": [ + "*" + ], + "defaultRaw": "undefined", + "defaultValue": "undefined" + }, + { + "name": "is_negative", + "optional": true, + "types": [ + "number" + ], + "defaultRaw": 0, + "defaultValue": "0" + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 141, + "kind": "method", + "name": "from_number", + "memberof": "src/IntegerRing.js~IntegerRing", + "generator": false, + "async": false, + "static": false, + "longname": "src/IntegerRing.js~IntegerRing#from_number", + "access": "public", + "description": null, + "lineNumber": 62, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + }, + { + "name": "is_negative", + "optional": true, + "types": [ + "number" + ], + "defaultRaw": 0, + "defaultValue": "0" + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 142, + "kind": "method", + "name": "from_string", + "memberof": "src/IntegerRing.js~IntegerRing", + "generator": false, + "async": false, + "static": false, + "longname": "src/IntegerRing.js~IntegerRing#from_string", + "access": "public", + "description": null, + "lineNumber": 70, + "undocument": true, + "params": [ + { + "name": "string", + "types": [ + "*" + ] + }, + { + "name": "base", + "optional": true, + "types": [ + "number" + ], + "defaultRaw": 10, + "defaultValue": "10" + }, + { + "name": "is_negative", + "optional": true, + "types": [ + "number" + ], + "defaultRaw": 0, + "defaultValue": "0" + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 143, + "kind": "method", + "name": "from_digits", + "memberof": "src/IntegerRing.js~IntegerRing", + "generator": false, + "async": false, + "static": false, + "longname": "src/IntegerRing.js~IntegerRing#from_digits", + "access": "public", + "description": null, + "lineNumber": 89, + "undocument": true, + "params": [ + { + "name": "digits", + "types": [ + "*" + ] + }, + { + "name": "base", + "types": [ + "*" + ] + }, + { + "name": "is_negative", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 144, + "kind": "method", + "name": "toString", + "memberof": "src/IntegerRing.js~IntegerRing", + "generator": false, + "async": false, + "static": false, + "longname": "src/IntegerRing.js~IntegerRing#toString", + "access": "public", + "description": null, + "lineNumber": 101, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 145, + "kind": "method", + "name": "$0", + "memberof": "src/IntegerRing.js~IntegerRing", + "generator": false, + "async": false, + "static": false, + "longname": "src/IntegerRing.js~IntegerRing#$0", + "access": "public", + "description": null, + "lineNumber": 105, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 146, + "kind": "method", + "name": "$1", + "memberof": "src/IntegerRing.js~IntegerRing", + "generator": false, + "async": false, + "static": false, + "longname": "src/IntegerRing.js~IntegerRing#$1", + "access": "public", + "description": null, + "lineNumber": 110, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 147, + "kind": "method", + "name": "$_1", + "memberof": "src/IntegerRing.js~IntegerRing", + "generator": false, + "async": false, + "static": false, + "longname": "src/IntegerRing.js~IntegerRing#$_1", + "access": "public", + "description": null, + "lineNumber": 114, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 148, + "kind": "method", + "name": "has", + "memberof": "src/IntegerRing.js~IntegerRing", + "generator": false, + "async": false, + "static": false, + "longname": "src/IntegerRing.js~IntegerRing#has", + "access": "public", + "description": null, + "lineNumber": 118, + "undocument": true, + "params": [ + { + "name": "x", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 149, + "kind": "method", + "name": "min", + "memberof": "src/IntegerRing.js~IntegerRing", + "generator": false, + "async": false, + "static": false, + "longname": "src/IntegerRing.js~IntegerRing#min", + "access": "public", + "description": null, + "lineNumber": 123, + "undocument": true, + "params": [ + { + "name": "a", + "types": [ + "*" + ] + }, + { + "name": "b", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 150, + "kind": "method", + "name": "max", + "memberof": "src/IntegerRing.js~IntegerRing", + "generator": false, + "async": false, + "static": false, + "longname": "src/IntegerRing.js~IntegerRing#max", + "access": "public", + "description": null, + "lineNumber": 127, + "undocument": true, + "params": [ + { + "name": "a", + "types": [ + "*" + ] + }, + { + "name": "b", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 151, + "kind": "file", + "name": "src/ZZ.js", + "content": "import {DEFAULT_REPRESENTATION_BASE} from './DEFAULT_REPRESENTATION_BASE.js';\nimport {IntegerRing} from './IntegerRing.js';\n\nexport const ZZ = new IntegerRing('Integer Ring', DEFAULT_REPRESENTATION_BASE);\n", + "static": true, + "longname": "/home/runner/work/js-integer/js-integer/src/ZZ.js", + "access": "public", + "description": null, + "lineNumber": 1 + }, + { + "__docId__": 152, + "kind": "variable", + "name": "ZZ", + "memberof": "src/ZZ.js", + "static": true, + "longname": "src/ZZ.js~ZZ", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/ZZ.js", + "importStyle": "{ZZ}", + "description": null, + "lineNumber": 4, + "undocument": true, + "type": { + "types": [ + "src/IntegerRing.js~IntegerRing" + ] + } + }, + { + "__docId__": 153, + "kind": "file", + "name": "src/ZeroDivisionError.js", + "content": "export class ZeroDivisionError extends Error {\n\ttoString() {\n\t\treturn `ZeroDivisionError: ${this.message}`;\n\t}\n}\n", + "static": true, + "longname": "/home/runner/work/js-integer/js-integer/src/ZeroDivisionError.js", + "access": "public", + "description": null, + "lineNumber": 1 + }, + { + "__docId__": 154, + "kind": "class", + "name": "ZeroDivisionError", + "memberof": "src/ZeroDivisionError.js", + "static": true, + "longname": "src/ZeroDivisionError.js~ZeroDivisionError", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/ZeroDivisionError.js", + "importStyle": "{ZeroDivisionError}", + "description": null, + "lineNumber": 1, + "undocument": true, + "interface": false, + "extends": [ + "Error" + ] + }, + { + "__docId__": 155, + "kind": "method", + "name": "toString", + "memberof": "src/ZeroDivisionError.js~ZeroDivisionError", + "generator": false, + "async": false, + "static": false, + "longname": "src/ZeroDivisionError.js~ZeroDivisionError#toString", + "access": "public", + "description": null, + "lineNumber": 2, + "undocument": true, + "params": [], + "return": { + "types": [ + "string" + ] + } + }, + { + "__docId__": 156, + "kind": "file", + "name": "src/_from_number.js", + "content": "import {Integer} from './Integer.js';\nimport {MAX_BASE} from './_limits.js';\n\nexport function _from_number(number) {\n\tconst x = number >= 0 ? number : -number;\n\tconst is_negative = number >= 0 ? 0 : -1;\n\treturn x < MAX_BASE\n\t\t? new Integer(MAX_BASE, is_negative, [x])\n\t\t: new Integer(MAX_BASE, is_negative, [(x / MAX_BASE) | 0, x % MAX_BASE]);\n}\n", + "static": true, + "longname": "/home/runner/work/js-integer/js-integer/src/_from_number.js", + "access": "public", + "description": null, + "lineNumber": 1 + }, + { + "__docId__": 157, + "kind": "function", + "name": "_from_number", + "memberof": "src/_from_number.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/_from_number.js~_from_number", + "access": "private", + "export": true, + "importPath": "@aureooms/js-integer/src/_from_number.js", + "importStyle": "{_from_number}", + "description": null, + "lineNumber": 4, + "undocument": true, + "params": [ + { + "name": "number", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 158, + "kind": "file", + "name": "src/_limits.js", + "content": "export const MAX_NUMBER = Number.MAX_SAFE_INTEGER;\nexport const MIN_NUMBER = Number.MIN_SAFE_INTEGER;\nexport const MIN_BASE = 2;\nexport const MAX_BASE = Math.floor(Math.sqrt(MAX_NUMBER + 1)) | 0;\n", + "static": true, + "longname": "/home/runner/work/js-integer/js-integer/src/_limits.js", + "access": "public", + "description": null, + "lineNumber": 1 + }, + { + "__docId__": 159, + "kind": "variable", + "name": "MAX_NUMBER", + "memberof": "src/_limits.js", + "static": true, + "longname": "src/_limits.js~MAX_NUMBER", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/_limits.js", + "importStyle": "{MAX_NUMBER}", + "description": null, + "lineNumber": 1, + "undocument": true, + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 160, + "kind": "variable", + "name": "MIN_NUMBER", + "memberof": "src/_limits.js", + "static": true, + "longname": "src/_limits.js~MIN_NUMBER", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/_limits.js", + "importStyle": "{MIN_NUMBER}", + "description": null, + "lineNumber": 2, + "undocument": true, + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 161, + "kind": "variable", + "name": "MIN_BASE", + "memberof": "src/_limits.js", + "static": true, + "longname": "src/_limits.js~MIN_BASE", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/_limits.js", + "importStyle": "{MIN_BASE}", + "description": null, + "lineNumber": 3, + "undocument": true, + "type": { + "types": [ + "number" + ] + } + }, + { + "__docId__": 162, + "kind": "variable", + "name": "MAX_BASE", + "memberof": "src/_limits.js", + "static": true, + "longname": "src/_limits.js~MAX_BASE", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/_limits.js", + "importStyle": "{MAX_BASE}", + "description": null, + "lineNumber": 4, + "undocument": true, + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 163, + "kind": "file", + "name": "src/index.js", + "content": "export * from './DEFAULT_DISPLAY_BASE.js';\nexport * from './DEFAULT_REPRESENTATION_BASE.js';\nexport * from './Integer.js';\nexport * from './IntegerRing.js';\nexport * from './ZZ.js';\nexport * from './ZeroDivisionError.js';\nexport * from './integer.js';\nexport * from './_limits.js';\n", + "static": true, + "longname": "/home/runner/work/js-integer/js-integer/src/index.js", + "access": "public", + "description": null, + "lineNumber": 1 + }, + { + "__docId__": 164, + "kind": "file", + "name": "src/integer.js", + "content": "import {DEFAULT_DISPLAY_BASE} from './DEFAULT_DISPLAY_BASE.js';\nimport {ZZ} from './ZZ.js';\n\nexport function $0() {\n\treturn ZZ.$0();\n}\n\nexport function $1() {\n\treturn ZZ.$1();\n}\n\nexport function $_1() {\n\treturn ZZ.$_1();\n}\n\nexport function parse(object, base = undefined, is_negative = 0) {\n\treturn ZZ.from(object, base, is_negative);\n}\n\nexport function stringify(integer, base = DEFAULT_DISPLAY_BASE) {\n\treturn integer.toString(base);\n}\n\nexport function add(first, second) {\n\treturn first.add(second);\n}\n\nexport function iadd(first, second) {\n\treturn first.iadd(second);\n}\n\nexport function sub(first, second) {\n\treturn first.sub(second);\n}\n\nexport function isub(first, second) {\n\treturn first.isub(second);\n}\n\nexport function mul(first, second) {\n\treturn first.mul(second);\n}\n\nexport function imul(first, second) {\n\treturn first.imul(second);\n}\n\nexport function pow(first, second) {\n\treturn first.pow(second);\n}\n\nexport function ipow(first, second) {\n\treturn first.ipow(second);\n}\n\nexport function div(first, second) {\n\treturn first.div(second);\n}\n\nexport function idiv(first, second) {\n\treturn first.idiv(second);\n}\n\nexport function mod(first, second) {\n\treturn first.mod(second);\n}\n\nexport function imod(first, second) {\n\treturn first.imod(second);\n}\n\nexport function divmod(first, second) {\n\treturn first.divmod(second);\n}\n\nexport function idivmod(first, second) {\n\treturn first.idivmod(second);\n}\n\nexport function addn(first, second) {\n\treturn first.addn(second);\n}\n\nexport function iaddn(first, second) {\n\treturn first.iaddn(second);\n}\n\nexport function subn(first, second) {\n\treturn first.subn(second);\n}\n\nexport function isubn(first, second) {\n\treturn first.isubn(second);\n}\n\nexport function muln(first, second) {\n\treturn first.muln(second);\n}\n\nexport function imuln(first, second) {\n\treturn first.imuln(second);\n}\n\nexport function pown(first, second) {\n\treturn first.pown(second);\n}\n\nexport function ipown(first, second) {\n\treturn first.ipown(second);\n}\n\nexport function divn(first, second) {\n\treturn first.divn(second);\n}\n\nexport function idivn(first, second) {\n\treturn first.idivn(second);\n}\n\nexport function modn(first, second) {\n\treturn first.modn(second);\n}\n\nexport function imodn(first, second) {\n\treturn first.imodn(second);\n}\n\nexport function divmodn(first, second) {\n\treturn first.divmodn(second);\n}\n\nexport function idivmodn(first, second) {\n\treturn first.idivmodn(second);\n}\n", + "static": true, + "longname": "/home/runner/work/js-integer/js-integer/src/integer.js", + "access": "public", + "description": null, + "lineNumber": 1 + }, + { + "__docId__": 165, + "kind": "function", + "name": "$0", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~$0", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{$0}", + "description": null, + "lineNumber": 4, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 166, + "kind": "function", + "name": "$1", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~$1", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{$1}", + "description": null, + "lineNumber": 8, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 167, + "kind": "function", + "name": "$_1", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~$_1", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{$_1}", + "description": null, + "lineNumber": 12, + "undocument": true, + "params": [], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 168, + "kind": "function", + "name": "parse", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~parse", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{parse}", + "description": null, + "lineNumber": 16, + "undocument": true, + "params": [ + { + "name": "object", + "types": [ + "*" + ] + }, + { + "name": "base", + "optional": true, + "types": [ + "*" + ], + "defaultRaw": "undefined", + "defaultValue": "undefined" + }, + { + "name": "is_negative", + "optional": true, + "types": [ + "number" + ], + "defaultRaw": 0, + "defaultValue": "0" + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 169, + "kind": "function", + "name": "stringify", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~stringify", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{stringify}", + "description": null, + "lineNumber": 20, + "undocument": true, + "params": [ + { + "name": "integer", + "types": [ + "*" + ] + }, + { + "name": "base", + "optional": true, + "types": [ + "*" + ], + "defaultRaw": "DEFAULT_DISPLAY_BASE", + "defaultValue": "DEFAULT_DISPLAY_BASE" + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 170, + "kind": "function", + "name": "add", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~add", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{add}", + "description": null, + "lineNumber": 24, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 171, + "kind": "function", + "name": "iadd", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~iadd", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{iadd}", + "description": null, + "lineNumber": 28, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 172, + "kind": "function", + "name": "sub", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~sub", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{sub}", + "description": null, + "lineNumber": 32, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 173, + "kind": "function", + "name": "isub", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~isub", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{isub}", + "description": null, + "lineNumber": 36, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 174, + "kind": "function", + "name": "mul", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~mul", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{mul}", + "description": null, + "lineNumber": 40, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 175, + "kind": "function", + "name": "imul", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~imul", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{imul}", + "description": null, + "lineNumber": 44, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 176, + "kind": "function", + "name": "pow", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~pow", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{pow}", + "description": null, + "lineNumber": 48, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 177, + "kind": "function", + "name": "ipow", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~ipow", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{ipow}", + "description": null, + "lineNumber": 52, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 178, + "kind": "function", + "name": "div", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~div", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{div}", + "description": null, + "lineNumber": 56, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 179, + "kind": "function", + "name": "idiv", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~idiv", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{idiv}", + "description": null, + "lineNumber": 60, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 180, + "kind": "function", + "name": "mod", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~mod", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{mod}", + "description": null, + "lineNumber": 64, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 181, + "kind": "function", + "name": "imod", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~imod", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{imod}", + "description": null, + "lineNumber": 68, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 182, + "kind": "function", + "name": "divmod", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~divmod", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{divmod}", + "description": null, + "lineNumber": 72, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 183, + "kind": "function", + "name": "idivmod", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~idivmod", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{idivmod}", + "description": null, + "lineNumber": 76, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 184, + "kind": "function", + "name": "addn", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~addn", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{addn}", + "description": null, + "lineNumber": 80, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 185, + "kind": "function", + "name": "iaddn", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~iaddn", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{iaddn}", + "description": null, + "lineNumber": 84, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 186, + "kind": "function", + "name": "subn", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~subn", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{subn}", + "description": null, + "lineNumber": 88, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 187, + "kind": "function", + "name": "isubn", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~isubn", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{isubn}", + "description": null, + "lineNumber": 92, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 188, + "kind": "function", + "name": "muln", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~muln", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{muln}", + "description": null, + "lineNumber": 96, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 189, + "kind": "function", + "name": "imuln", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~imuln", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{imuln}", + "description": null, + "lineNumber": 100, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 190, + "kind": "function", + "name": "pown", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~pown", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{pown}", + "description": null, + "lineNumber": 104, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 191, + "kind": "function", + "name": "ipown", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~ipown", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{ipown}", + "description": null, + "lineNumber": 108, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 192, + "kind": "function", + "name": "divn", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~divn", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{divn}", + "description": null, + "lineNumber": 112, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 193, + "kind": "function", + "name": "idivn", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~idivn", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{idivn}", + "description": null, + "lineNumber": 116, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 194, + "kind": "function", + "name": "modn", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~modn", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{modn}", + "description": null, + "lineNumber": 120, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 195, + "kind": "function", + "name": "imodn", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~imodn", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{imodn}", + "description": null, + "lineNumber": 124, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 196, + "kind": "function", + "name": "divmodn", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~divmodn", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{divmodn}", + "description": null, + "lineNumber": 128, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 197, + "kind": "function", + "name": "idivmodn", + "memberof": "src/integer.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/integer.js~idivmodn", + "access": "public", + "export": true, + "importPath": "@aureooms/js-integer/src/integer.js", + "importStyle": "{idivmodn}", + "description": null, + "lineNumber": 132, + "undocument": true, + "params": [ + { + "name": "first", + "types": [ + "*" + ] + }, + { + "name": "second", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + } + }, + { + "kind": "index", + "content": ":zzz: [@aureooms/js-integer](https://aureooms.github.io/js-integer)\n==\n\n

\n\n\"The\n
\n\nUser:Alejo2083\n\n/\nCC BY-SA 3.0\n

\n\nIntegers for JavaScript.\nSee [docs](https://aureooms.github.io/js-integer).\nParent is [@aureooms/js-algorithms](https://github.com/aureooms/js-algorithms).\n\n```js\nimport { ZZ } from '@aureooms/js-integer' ; \nconst a = ZZ.from( '2983928392839289387' ) ;\nconst b = ZZ.from( '-302940923028393' ) ;\na.mul( b ).toString( ) ; // '-903954021577363596419770144565091'\n```\n\n[![License](https://img.shields.io/github/license/aureooms/js-integer.svg)](https://raw.githubusercontent.com/aureooms/js-integer/main/LICENSE)\n[![Version](https://img.shields.io/npm/v/@aureooms/js-integer.svg)](https://www.npmjs.org/package/@aureooms/js-integer)\n[![Build](https://img.shields.io/travis/aureooms/js-integer/main.svg)](https://travis-ci.com/aureooms/js-integer/branches)\n[![Dependencies](https://img.shields.io/david/aureooms/js-integer.svg)](https://david-dm.org/aureooms/js-integer)\n[![Dev dependencies](https://img.shields.io/david/dev/aureooms/js-integer.svg)](https://david-dm.org/aureooms/js-integer?type=dev)\n[![GitHub issues](https://img.shields.io/github/issues/aureooms/js-integer.svg)](https://github.com/aureooms/js-integer/issues)\n[![Downloads](https://img.shields.io/npm/dm/@aureooms/js-integer.svg)](https://www.npmjs.org/package/@aureooms/js-integer)\n\n[![Code issues](https://img.shields.io/codeclimate/issues/aureooms/js-integer.svg)](https://codeclimate.com/github/aureooms/js-integer/issues)\n[![Code maintainability](https://img.shields.io/codeclimate/maintainability/aureooms/js-integer.svg)](https://codeclimate.com/github/aureooms/js-integer/trends/churn)\n[![Code coverage (cov)](https://img.shields.io/codecov/c/gh/aureooms/js-integer/main.svg)](https://codecov.io/gh/aureooms/js-integer)\n[![Code technical debt](https://img.shields.io/codeclimate/tech-debt/aureooms/js-integer.svg)](https://codeclimate.com/github/aureooms/js-integer/trends/technical_debt)\n[![Documentation](https://aureooms.github.io/js-integer/badge.svg)](https://aureooms.github.io/js-integer/source.html)\n[![Package size](https://img.shields.io/bundlephobia/minzip/@aureooms/js-integer)](https://bundlephobia.com/result?p=@aureooms/js-integer)\n\n## :baby: Children\n\nThe current underlying implementation uses big endian order. There is no\nalternative for the moment.\n\n - [ ] [BigInt](https://developer.mozilla.org/en-US/docs/Glossary/BigInt)\n - [x] [@aureooms/js-integer-big-endian](https://github.com/aureooms/js-integer-big-endian)\n - [ ] [@aureooms/js-integer-little-endian](https://github.com/aureooms/js-integer-little-endian)\n\n## :scroll: Reference\n\n - [The GNU Multiple Precision Arithmetic Library](https://gmplib.org/)\n - https://gmplib.org/gmp-man-6.0.0a.pdf\n - https://en.wikipedia.org/wiki/Sch%C3%B6nhage%E2%80%93Strassen_algorithm\n\n## :link: Links\n - [Similar work on GitHub](https://github.com/search?l=JavaScript&o=desc&q=bigint&s=stars&type=Repositories)\n", + "longname": "/home/runner/work/js-integer/js-integer/README.md", + "name": "./README.md", + "static": true, + "access": "public" + }, + { + "kind": "packageJSON", + "content": "{\n \"name\": \"@aureooms/js-integer\",\n \"description\": \"Integers for JavaScript\",\n \"version\": \"10.0.1\",\n \"license\": \"AGPL-3.0\",\n \"author\": \"Aurélien Ooms \",\n \"homepage\": \"https://aureooms.github.io/js-integer\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/aureooms/js-integer\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/aureooms/js-integer/issues\"\n },\n \"keywords\": [\n \"abitrary\",\n \"addition\",\n \"algorithm\",\n \"arithmetic\",\n \"big\",\n \"big-int\",\n \"big-integer\",\n \"big-integers\",\n \"big-num\",\n \"big-number\",\n \"big-numbers\",\n \"bigint\",\n \"biginteger\",\n \"bigintegers\",\n \"bignum\",\n \"bignumber\",\n \"bignumbers\",\n \"bn\",\n \"bn.js\",\n \"complexity\",\n \"division\",\n \"exact\",\n \"exponentiation\",\n \"gcd\",\n \"integer\",\n \"javascript\",\n \"js\",\n \"jsbn\",\n \"library\",\n \"logic\",\n \"mpa\",\n \"multi-precision\",\n \"multiplication\",\n \"number\",\n \"precision\",\n \"subtraction\"\n ],\n \"sideEffects\": false,\n \"source\": \"src/index.js\",\n \"main\": \"dist/index.js\",\n \"module\": \"dist/index.module.js\",\n \"umd:main\": \"dist/index.umd.js\",\n \"unpkg\": \"dist/index.umd.js\",\n \"exports\": {\n \".\": {\n \"browser\": \"./dist/index.module.js\",\n \"umd\": \"./dist/index.umd.js\",\n \"require\": \"./dist/index.js\",\n \"default\": \"./dist/index.modern.js\"\n }\n },\n \"files\": [\n \"dist\"\n ],\n \"scripts\": {\n \"build\": \"NODE_ENV=production microbundle\",\n \"build-docs\": \"esdoc\",\n \"build-gh-pages\": \"npm run build-docs\",\n \"commit-msg\": \"commitlint --edit\",\n \"cover\": \"c8 --all --src src --reporter=lcov npm test\",\n \"debug\": \"NODE_ENV=debug npm run test -- -st --fail-fast\",\n \"dev\": \"npm run lint-config-and-fix && npm run lint-and-fix && npm run cover -- -- -st --fail-fast\",\n \"install-hooks\": \"husky install\",\n \"lint\": \"xo\",\n \"lint-and-fix\": \"npm run lint -- --fix\",\n \"lint-config\": \"fixpack --dryRun\",\n \"lint-config-and-fix\": \"fixpack || fixpack\",\n \"postinstall\": \"npm run install-hooks\",\n \"postpublish\": \"pinst --enable\",\n \"precommit\": \"lint-staged\",\n \"prepare\": \"npm run build\",\n \"prepublishOnly\": \"pinst --disable\",\n \"release\": \"np --message ':hatching_chick: release: Bumping to v%s.'\",\n \"test\": \"ava\",\n \"travis\": \"npm run lint-config && npm run lint && npm run cover\"\n },\n \"dependencies\": {\n \"@aureooms/js-error\": \"^5.0.2\",\n \"@aureooms/js-integer-big-endian\": \"^11.0.1\"\n },\n \"devDependencies\": {\n \"@aureooms/js-algorithms\": \"3.0.7\",\n \"@aureooms/js-array\": \"4.0.0\",\n \"@aureooms/js-itertools\": \"5.0.2\",\n \"@aureooms/js-operator\": \"1.0.2\",\n \"@aureooms/js-random\": \"2.0.0\",\n \"@aureooms/js-string\": \"1.0.0\",\n \"@babel/core\": \"7.13.10\",\n \"@babel/preset-env\": \"7.13.12\",\n \"@babel/register\": \"7.13.8\",\n \"@commitlint/cli\": \"12.0.1\",\n \"@js-library/commitlint-config\": \"0.0.4\",\n \"ava\": \"3.15.0\",\n \"babel-plugin-transform-remove-console\": \"6.9.4\",\n \"babel-plugin-unassert\": \"3.0.1\",\n \"babel-preset-power-assert\": \"3.0.0\",\n \"c8\": \"7.6.0\",\n \"coveralls\": \"3.1.0\",\n \"esdoc\": \"1.1.0\",\n \"esdoc-inject-script-plugin\": \"1.0.0\",\n \"esdoc-inject-style-plugin\": \"1.0.0\",\n \"esdoc-standard-plugin\": \"1.0.0\",\n \"fixpack\": \"4.0.0\",\n \"husky\": \"5.2.0\",\n \"lint-staged\": \"10.5.4\",\n \"microbundle\": \"0.13.0\",\n \"np\": \"7.4.0\",\n \"pinst\": \"2.1.6\",\n \"power-assert\": \"1.6.1\",\n \"regenerator-runtime\": \"0.13.7\",\n \"xo\": \"0.38.2\"\n },\n \"ava\": {\n \"files\": [\n \"test/src/**/*\"\n ],\n \"require\": [\n \"regenerator-runtime/runtime\",\n \"@babel/register\"\n ],\n \"timeout\": \"10m\",\n \"concurrency\": 8\n },\n \"babel\": {\n \"sourceMaps\": true,\n \"presets\": [\n [\n \"@babel/preset-env\",\n {\n \"targets\": [\n \"defaults\",\n \"maintained node versions\"\n ]\n }\n ]\n ],\n \"env\": {\n \"debug\": {\n \"presets\": [\n [\n \"@babel/preset-env\",\n {\n \"targets\": \"current node\"\n }\n ],\n \"babel-preset-power-assert\"\n ]\n },\n \"test\": {\n \"presets\": [\n [\n \"@babel/preset-env\",\n {\n \"targets\": \"current node\"\n }\n ],\n \"babel-preset-power-assert\"\n ],\n \"plugins\": [\n [\n \"transform-remove-console\",\n {\n \"exclude\": [\n \"log\",\n \"error\",\n \"warn\"\n ]\n }\n ]\n ]\n },\n \"development\": {\n \"presets\": [\n \"babel-preset-power-assert\"\n ],\n \"plugins\": [\n [\n \"transform-remove-console\",\n {\n \"exclude\": [\n \"log\",\n \"error\",\n \"warn\"\n ]\n }\n ]\n ]\n },\n \"production\": {\n \"plugins\": [\n \"babel-plugin-unassert\",\n [\n \"transform-remove-console\",\n {\n \"exclude\": [\n \"log\",\n \"error\",\n \"warn\"\n ]\n }\n ]\n ]\n }\n }\n },\n \"lint-staged\": {\n \"*.js\": [\n \"npm run lint-and-fix\"\n ],\n \"package.json\": [\n \"npm run lint-config-and-fix\"\n ]\n },\n \"prettier\": {\n \"trailingComma\": \"all\"\n },\n \"xo\": {\n \"prettier\": true,\n \"plugins\": [\n \"unicorn\"\n ],\n \"rules\": {\n \"unicorn/filename-case\": \"off\",\n \"camelcase\": \"off\",\n \"unicorn/prevent-abbreviations\": \"off\",\n \"no-constant-condition\": \"off\",\n \"unicorn/prefer-math-trunc\": \"off\",\n \"unicorn/no-new-array\": \"off\"\n },\n \"overrides\": [\n {\n \"files\": [\n \"doc/**\"\n ],\n \"env\": \"browser\"\n }\n ]\n }\n}\n", + "longname": "/home/runner/work/js-integer/js-integer/package.json", + "name": "package.json", + "static": true, + "access": "public" + }, + { + "kind": "manualIndex", + "globalIndex": false, + "content": null, + "longname": "", + "static": true, + "access": "public" + }, + { + "kind": "manual", + "longname": "/home/runner/work/js-integer/js-integer/doc/manual/overview.md", + "name": "./doc/manual/overview.md", + "content": "# Overview\n", + "static": true, + "access": "public" + }, + { + "kind": "manual", + "longname": "/home/runner/work/js-integer/js-integer/doc/manual/installation.md", + "name": "./doc/manual/installation.md", + "content": "# Installation\nCan be managed using\n[jspm](http://jspm.io)\nor [npm](https://github.com/npm/npm).\n\n### jspm\n```terminal\njspm install npm:@aureooms/js-integer\n```\n\n### npm\n```terminal\nnpm install @aureooms/js-integer --save\n```\n", + "static": true, + "access": "public" + }, + { + "kind": "manual", + "longname": "/home/runner/work/js-integer/js-integer/doc/manual/usage.md", + "name": "./doc/manual/usage.md", + "content": "# Usage\n\nThe code needs a ES2015+ polyfill to work, for example\n[regenerator-runtime/runtime](https://babeljs.io/docs/usage/polyfill).\n```js\nrequire( 'regenerator-runtime/runtime' ) ;\n// or\nimport 'regenerator-runtime/runtime.js' ;\n```\n\nThen\n```js\nconst integer = require( '@aureooms/js-integer' ) ;\n// or\nimport * as integer from '@aureooms/js-integer' ;\n```\n\n## Notation\n\nThe Notation tries to emulate the notation in [bn.js](https://github.com/indutny/bn.js).\n\n## Instructions\n\nPrefixes/postfixes are put in parens at the of the line.\n\n\n### Initialization\n\n* [x] `ZZ.from(object, base = undefined, is_negative = 0)` (Base is guessed depending on object type if `undefined`, default is 10.)\n\n### Copying\n\n* [x] `a.clone()` - clone number\n* [x] `a.move(b)` - copy `a`'s' properties to `b`\n\n> Note that we plan to be pure in the future.\n\n\n### Comparison\n\n* [x] `a.cmp(b)` - compare numbers and return `-1` (a `<` b), `0` (a `=` b), or `1` (a `>` b) depending on the comparison result (`cmpn`)\n* [x] `a.lt(b)` - `a` less than `b` (`n`)\n* [x] `a.le(b)` - `a` less than or equals `b` (`n`)\n* [x] `a.gt(b)` - `a` greater than `b` (`n`)\n* [x] `a.ge(b)` - `a` greater than or equals `b` (`n`)\n* [x] `a.eq(b)` - `a` equals `b` (`n`)\n\n\n### Integer Arithmetic\n\n* [x] `a.negate()` - negate sign (`ineg` in bn.js)\n* [x] `a.opposite()` - negate sign (`neg` in bn.js)\n* [x] `a.abs()` - absolute value (`i`)\n\n* [x] `a.add(b)` - addition (`i`, `n`, `in`)\n* [x] `a.sub(b)` - subtraction (`i`, `n`, `in`)\n* [x] `a.mul(b)` - multiply (`i`, `n`, `in`)\n* [x] `a.square()` - square (`i`, `sqr` in bn.js)\n* [x] `a.pow(b)` - raise `a` to the power of `b` (`i`, `n`, `in`)\n\n* [x] `[q,r] = a.divmod(b)` - divide (`i`, `n`)\n* [x] `q = a.div(b)` - division quotient (`u`, `n`)\n* [x] `r = a.mod(b)` - division remained (`u`, `n`) (but no `umodn`)\n* [x] `q = a.divround(b)` - rounded division\n\n> In the future, remove in-place operations. They make very little sense except\n> in a few exceptional cases like increment/decrement. If the result is too big\n> to fit in the original array we will have to resize it to make it fit anyway.\n> Maybe little endianess would save the day in that case. Who knows...\n> Could use an immutable flag that is set as soon as a shallow copy is made?\n> Then all operations could try to run in-place if no shallow copy exists.\n\n### Greatest Common Divisor\n\n* [x] `a.gcd(b)` - GCD\n* [x] `a.egcd(b)` - Extended GCD results (`{ gcd: ..., x: ..., y: ..., u: ..., v: ... }`)\n\n\n### Modular Arithmetic\n\n* [ ] `ZZ(n)` - integers modulo `n`\n* [ ] `ZZ(n).get(3)` - `returns the equivalence class [3]_n`\n* [ ] `a.add(b)` - no comment\n* [ ] `a.sub(b)` - no comment\n* [ ] `a.mul(b)` - no comment\n* [ ] `a.inv()` - inverse `a` modulo `n`\n* [ ] `a.square()` - no comment\n* [ ] `a.pow(b)` - no comment\n\n\n### Bit operations\n\nWe should really have two packages:\n\n - One for immutable, keyable, hashable integers.\n - One for safe in-place word array manipulation.\n\nThere are multiple reasons for this:\n\n - Some bit operations do not really care about endianess\n - It only works efficiently with a radix that is a power of 2\n\nQ: Does it make any sense to have those operations defined for unbounded\nintegers?\n\nThe following will be implemented in a package to come.\n\n* [ ] `a.or(b)` - or (`i`, `u`, `iu`)\n* [ ] `a.and(b)` - and (`i`, `u`, `iu`, `andln`) (NOTE: `andln` is going to be replaced with `andn` in future)\n* [ ] `a.xor(b)` - xor (`i`, `u`, `iu`)\n* [ ] `a.setn(b)` - set specified bit to `1`\n* [ ] `a.shln(b)` - shift left (`i`, `u`, `iu`)\n* [ ] `a.shrn(b)` - shift right (`i`, `u`, `iu`)\n* [ ] `a.testn(b)` - test if specified bit is set\n* [ ] `a.maskn(b)` - clear bits with indexes higher or equal to `b` (`i`)\n* [ ] `a.bincn(b)` - add `1 << b` to the number\n* [ ] `a.notn(w)` - not (for the width specified by `w`) (`i`)\n\n### Test\n\n* [x] `a.sign()` - return -1, 0, 1\n* [x] `a.iszero()` - no comments\n* [x] `a.isone()` - no comments\n* [x] `a.ispositive()` - no comments\n* [x] `a.isnegative()` - no comments\n* [x] `a.isnonnegative()` - no comments\n* [x] `a.isnonpositive()` - no comments\n* [x] `a.iseven()` - no comments\n* [x] `a.isodd()` - no comments\n* [x] `a.divides(b)` - no comments\n\n### Utilities\n\n* [x] `ZZ.has(object)` - returns true if the supplied `object` is an integer.\n* [x] `ZZ.max(a, b)` - return `a` if `a` larger than `b`.\n* [x] `ZZ.min(a, b)` - return `a` if `a` smaller than `b`.\n* [ ] `a.bitLength()` - get number of bits occupied\n* [ ] `a.zeroBits()` - return number of less-significant consequent zero bits (example: `1010000` has 4 zero bits)\n* [ ] `a.byteLength()` - return number of bytes occupied\n* [ ] `a.toTwos(width)` - convert to two's complement representation, where `width` is bit width\n* [ ] `a.fromTwos(width)` - convert from two's complement representation, where `width` is the bit width\n\n### Conversion\n* [x] `a.toString(base=10)` - convert to base-string (No zero padding, this is up to you)\n* [x] `a.bin()` - alias for `a.toString(2)`\n* [x] `a.oct()` - alias for `a.toString(8)`\n* [x] `a.hex()` - alias for `a.toString(16)`\n* [x] `d = a.digits(base=10)` - returns little endian array of digits in given base so that d[0] is the first digit, d[1] the second, etc.\n* [x] `a.bin()` - alias for `a.digits(2)`.\n* [x] `a.valueOf()` - convert to Javascript Number (limited to 53 bits `toNumber` in bn.js)\n* [x] `a.toJSON()` - convert to JSON compatible hex string (alias of `toString(16)`)\n* [ ] `a.to(type, endian, length)` - convert to an instance of `type`, which must behave like an `Array` (`toArrayLike` in bn.js)\n* [ ] `a.toArray(endian, length)` - convert to byte `Array`, and optionally zero pad to length, throwing if already exceeding\n* [ ] `a.toBuffer(endian, length)` - convert to Node.js Buffer (if available). For compatibility with browserify and similar tools, use this instead: `a.toArrayLike(Buffer, endian, length)`\n", + "static": true, + "access": "public" + }, + { + "kind": "manual", + "longname": "/home/runner/work/js-integer/js-integer/doc/manual/example.md", + "name": "./doc/manual/example.md", + "content": "# Examples\n\n> More examples in [the test files](https://github.com/aureooms/js-integer/tree/main/test/src).\n\n```js\nimport { ZZ } from '@aureooms/js-integer' ;\n\nconst a = ZZ.from( 'dead' , 16 ) ;\nconst b = ZZ.from( '101010' , 2 ) ;\n\nconst c = a.add(b);\nconsole.log(c.toString()); // 57047\n```\n\n**Note**: decimals are not supported in this library.\n", + "static": true, + "access": "public" + } +] \ No newline at end of file diff --git a/doc/css/style.css b/inject/css/0-style.css similarity index 100% rename from doc/css/style.css rename to inject/css/0-style.css diff --git a/doc/scripts/header.js b/inject/script/0-header.js similarity index 90% rename from doc/scripts/header.js rename to inject/script/0-header.js index 8cdb565..525d627 100644 --- a/doc/scripts/header.js +++ b/inject/script/0-header.js @@ -17,8 +17,7 @@ domReady(() => { header.insertBefore(projectname, header.firstChild); const testlink = document.querySelector('header > a[data-ice="testLink"]'); - testlink.href = - 'https://coveralls.io/github/make-github-pseudonymous-again/js-integer'; + testlink.href = 'https://coveralls.io/github/aureooms/js-integer'; testlink.target = '_BLANK'; const searchBox = document.querySelector('.search-box'); diff --git a/lint.json b/lint.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/lint.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/mangle.json b/mangle.json deleted file mode 100644 index fa06ea5..0000000 --- a/mangle.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "minify": { - "mangle": { - "properties": { - "regex": "^_[^_]", - "reserved": [ - "_zeros", - "_trim_positive", - "_sub", - "_pow_double", - "_alloc", - "_copy", - "_idivmod" - ] - } - } - }, - "props": { - "props": { - "$_base": "r", - "$_is_negative": "s", - "$_limbs": "l", - "$_limbs_in_base": "c" - } - } -} \ No newline at end of file diff --git a/manual/example.html b/manual/example.html new file mode 100644 index 0000000..36c4aac --- /dev/null +++ b/manual/example.html @@ -0,0 +1,99 @@ + + + + + + Manual | @aureooms/js-integer + + + + + + + +
+ Home + Manual + Reference + Source + + +
+ + + +

Examples

+

More examples in the test files.

+
+
import { ZZ } from '@aureooms/js-integer' ;
+
+const a = ZZ.from( 'dead' , 16 ) ;
+const b = ZZ.from( '101010' , 2 ) ;
+
+const c = a.add(b);
+console.log(c.toString()); // 57047
+
+

Note: decimals are not supported in this library.

+
+
+ + + + + + + + + + + + diff --git a/manual/index.html b/manual/index.html new file mode 100644 index 0000000..98885de --- /dev/null +++ b/manual/index.html @@ -0,0 +1,239 @@ + + + + + + Manual | @aureooms/js-integer + + + + + + + +
+ Home + Manual + Reference + Source + + +
+ + + +
+ + + + +
+ +
+
+

Overview

+ +
+
+
+
+

Installation

Can be managed using +jspm +or npm.

jspm

jspm install npm:@aureooms/js-integer
+

npm

npm install @aureooms/js-integer --save
+
+ +
+
+
+
+

Usage

The code needs a ES2015+ polyfill to work, for example +regenerator-runtime/runtime.

require( 'regenerator-runtime/runtime' ) ;
+// or
+import 'regenerator-runtime/runtime.js' ;
+

Then

const integer = require( '@aureooms/js-integer' ) ;
+// or
+import * as integer from '@aureooms/js-integer' ;
+

Notation

The Notation tries to emulate the notation in bn.js.

Instructions

Prefixes/postfixes are put in parens at the of the line.

Initialization

    +
  • [x] ZZ.from(object, base = undefined, is_negative = 0) (Base is guessed depending on object type if undefined, default is 10.)
  • +

Copying

    +
  • [x] a.clone() - clone number
  • +
  • [x] a.move(b) - copy a's' properties to b
  • +
+

Note that we plan to be pure in the future.

+

Comparison

    +
  • [x] a.cmp(b) - compare numbers and return -1 (a < b), 0 (a = b), or 1 (a > b) depending on the comparison result (cmpn)
  • +
  • [x] a.lt(b) - a less than b (n)
  • +
  • [x] a.le(b) - a less than or equals b (n)
  • +
  • [x] a.gt(b) - a greater than b (n)
  • +
  • [x] a.ge(b) - a greater than or equals b (n)
  • +
  • [x] a.eq(b) - a equals b (n)
  • +

Integer Arithmetic

    +
  • [x] a.negate() - negate sign (ineg in bn.js)
  • +
  • [x] a.opposite() - negate sign (neg in bn.js)
  • +
  • [x] a.abs() - absolute value (i)

    +
  • +
  • [x] a.add(b) - addition (i, n, in)

    +
  • +
  • [x] a.sub(b) - subtraction (i, n, in)
  • +
  • [x] a.mul(b) - multiply (i, n, in)
  • +
  • [x] a.square() - square (i, sqr in bn.js)
  • +
  • [x] a.pow(b) - raise a to the power of b (i, n, in)

    +
  • +
  • [x] [q,r] = a.divmod(b) - divide (i, n)

    +
  • +
  • [x] q = a.div(b) - division quotient (u, n)
  • +
  • [x] r = a.mod(b) - division remained (u, n) (but no umodn)
  • +
  • [x] q = a.divround(b) - rounded division
  • +
+

In the future, remove in-place operations. They make very little sense except +in a few exceptional cases like increment/decrement. If the result is too big +to fit in the original array we will have to resize it to make it fit anyway. +Maybe little endianess would save the day in that case. Who knows... +Could use an immutable flag that is set as soon as a shallow copy is made? +Then all operations could try to run in-place if no shallow copy exists.

+

Greatest Common Divisor

    +
  • [x] a.gcd(b) - GCD
  • +
  • [x] a.egcd(b) - Extended GCD results ({ gcd: ..., x: ..., y: ..., u: ..., v: ... })
  • +

Modular Arithmetic

    +
  • [ ] ZZ(n) - integers modulo n
  • +
  • [ ] ZZ(n).get(3) - returns the equivalence class [3]_n
  • +
  • [ ] a.add(b) - no comment
  • +
  • [ ] a.sub(b) - no comment
  • +
  • [ ] a.mul(b) - no comment
  • +
  • [ ] a.inv() - inverse a modulo n
  • +
  • [ ] a.square() - no comment
  • +
  • [ ] a.pow(b) - no comment
  • +

Bit operations

We should really have two packages:

    +
  • One for immutable, keyable, hashable integers.
  • +
  • One for safe in-place word array manipulation.
  • +

There are multiple reasons for this:

    +
  • Some bit operations do not really care about endianess
  • +
  • It only works efficiently with a radix that is a power of 2
  • +

Q: Does it make any sense to have those operations defined for unbounded +integers?

The following will be implemented in a package to come.

    +
  • [ ] a.or(b) - or (i, u, iu)
  • +
  • [ ] a.and(b) - and (i, u, iu, andln) (NOTE: andln is going to be replaced with andn in future)
  • +
  • [ ] a.xor(b) - xor (i, u, iu)
  • +
  • [ ] a.setn(b) - set specified bit to 1
  • +
  • [ ] a.shln(b) - shift left (i, u, iu)
  • +
  • [ ] a.shrn(b) - shift right (i, u, iu)
  • +
  • [ ] a.testn(b) - test if specified bit is set
  • +
  • [ ] a.maskn(b) - clear bits with indexes higher or equal to b (i)
  • +
  • [ ] a.bincn(b) - add 1 << b to the number
  • +
  • [ ] a.notn(w) - not (for the width specified by w) (i)
  • +

Test

    +
  • [x] a.sign() - return -1, 0, 1
  • +
  • [x] a.iszero() - no comments
  • +
  • [x] a.isone() - no comments
  • +
  • [x] a.ispositive() - no comments
  • +
  • [x] a.isnegative() - no comments
  • +
  • [x] a.isnonnegative() - no comments
  • +
  • [x] a.isnonpositive() - no comments
  • +
  • [x] a.iseven() - no comments
  • +
  • [x] a.isodd() - no comments
  • +
  • [x] a.divides(b) - no comments
  • +

Utilities

    +
  • [x] ZZ.has(object) - returns true if the supplied object is an integer.
  • +
  • [x] ZZ.max(a, b) - return a if a larger than b.
  • +
  • [x] ZZ.min(a, b) - return a if a smaller than b.
  • +
  • [ ] a.bitLength() - get number of bits occupied
  • +
  • [ ] a.zeroBits() - return number of less-significant consequent zero bits (example: 1010000 has 4 zero bits)
  • +
  • [ ] a.byteLength() - return number of bytes occupied
  • +
  • [ ] a.toTwos(width) - convert to two's complement representation, where width is bit width
  • +
  • [ ] a.fromTwos(width) - convert from two's complement representation, where width is the bit width
  • +

Conversion

    +
  • [x] a.toString(base=10) - convert to base-string (No zero padding, this is up to you)
  • +
  • [x] a.bin() - alias for a.toString(2)
  • +
  • [x] a.oct() - alias for a.toString(8)
  • +
  • [x] a.hex() - alias for a.toString(16)
  • +
  • [x] d = a.digits(base=10) - returns little endian array of digits in given base so that d[0] is the first digit, d[1] the second, etc.
  • +
  • [x] a.bin() - alias for a.digits(2).
  • +
  • [x] a.valueOf() - convert to Javascript Number (limited to 53 bits toNumber in bn.js)
  • +
  • [x] a.toJSON() - convert to JSON compatible hex string (alias of toString(16))
  • +
  • [ ] a.to(type, endian, length) - convert to an instance of type, which must behave like an Array (toArrayLike in bn.js)
  • +
  • [ ] a.toArray(endian, length) - convert to byte Array, and optionally zero pad to length, throwing if already exceeding
  • +
  • [ ] a.toBuffer(endian, length) - convert to Node.js Buffer (if available). For compatibility with browserify and similar tools, use this instead: a.toArrayLike(Buffer, endian, length)
  • +
+ +
+
+
+
+

Examples

+

More examples in the test files.

+
import { ZZ } from '@aureooms/js-integer' ;
+
+const a = ZZ.from( 'dead' , 16 ) ;
+const b = ZZ.from( '101010' , 2 ) ;
+
+const c = a.add(b);
+console.log(c.toString()); // 57047
+

Note: decimals are not supported in this library.

+ +
+
+
+
+
+ + + + + + + + + + + + diff --git a/manual/installation.html b/manual/installation.html new file mode 100644 index 0000000..e101705 --- /dev/null +++ b/manual/installation.html @@ -0,0 +1,94 @@ + + + + + + Manual | @aureooms/js-integer + + + + + + + +
+ Home + Manual + Reference + Source + + +
+ + + +

Installation

Can be managed using +jspm +or npm.

+

jspm

jspm install npm:@aureooms/js-integer
+
+

npm

npm install @aureooms/js-integer --save
+
+
+
+ + + + + + + + + + + + diff --git a/manual/overview.html b/manual/overview.html new file mode 100644 index 0000000..c6a104b --- /dev/null +++ b/manual/overview.html @@ -0,0 +1,87 @@ + + + + + + Manual | @aureooms/js-integer + + + + + + + +
+ Home + Manual + Reference + Source + + +
+ + + +

Overview

+
+ + + + + + + + + + + + diff --git a/manual/usage.html b/manual/usage.html new file mode 100644 index 0000000..47f10d4 --- /dev/null +++ b/manual/usage.html @@ -0,0 +1,218 @@ + + + + + + Manual | @aureooms/js-integer + + + + + + + +
+ Home + Manual + Reference + Source + + +
+ + + +

Usage

The code needs a ES2015+ polyfill to work, for example +regenerator-runtime/runtime.

+
require( 'regenerator-runtime/runtime' ) ;
+// or
+import 'regenerator-runtime/runtime.js' ;
+
+

Then

+
const integer = require( '@aureooms/js-integer' ) ;
+// or
+import * as integer from '@aureooms/js-integer' ;
+
+

Notation

The Notation tries to emulate the notation in bn.js.

+

Instructions

Prefixes/postfixes are put in parens at the of the line.

+

Initialization

    +
  • [x] ZZ.from(object, base = undefined, is_negative = 0) (Base is guessed depending on object type if undefined, default is 10.)
  • +
+

Copying

    +
  • [x] a.clone() - clone number
  • +
  • [x] a.move(b) - copy a's' properties to b
  • +
+
+

Note that we plan to be pure in the future.

+
+

Comparison

    +
  • [x] a.cmp(b) - compare numbers and return -1 (a < b), 0 (a = b), or 1 (a > b) depending on the comparison result (cmpn)
  • +
  • [x] a.lt(b) - a less than b (n)
  • +
  • [x] a.le(b) - a less than or equals b (n)
  • +
  • [x] a.gt(b) - a greater than b (n)
  • +
  • [x] a.ge(b) - a greater than or equals b (n)
  • +
  • [x] a.eq(b) - a equals b (n)
  • +
+

Integer Arithmetic

    +
  • [x] a.negate() - negate sign (ineg in bn.js)
  • +
  • [x] a.opposite() - negate sign (neg in bn.js)
  • +
  • [x] a.abs() - absolute value (i)

    +
  • +
  • [x] a.add(b) - addition (i, n, in)

    +
  • +
  • [x] a.sub(b) - subtraction (i, n, in)
  • +
  • [x] a.mul(b) - multiply (i, n, in)
  • +
  • [x] a.square() - square (i, sqr in bn.js)
  • +
  • [x] a.pow(b) - raise a to the power of b (i, n, in)

    +
  • +
  • [x] [q,r] = a.divmod(b) - divide (i, n)

    +
  • +
  • [x] q = a.div(b) - division quotient (u, n)
  • +
  • [x] r = a.mod(b) - division remained (u, n) (but no umodn)
  • +
  • [x] q = a.divround(b) - rounded division
  • +
+
+

In the future, remove in-place operations. They make very little sense except +in a few exceptional cases like increment/decrement. If the result is too big +to fit in the original array we will have to resize it to make it fit anyway. +Maybe little endianess would save the day in that case. Who knows... +Could use an immutable flag that is set as soon as a shallow copy is made? +Then all operations could try to run in-place if no shallow copy exists.

+
+

Greatest Common Divisor

    +
  • [x] a.gcd(b) - GCD
  • +
  • [x] a.egcd(b) - Extended GCD results ({ gcd: ..., x: ..., y: ..., u: ..., v: ... })
  • +
+

Modular Arithmetic

    +
  • [ ] ZZ(n) - integers modulo n
  • +
  • [ ] ZZ(n).get(3) - returns the equivalence class [3]_n
  • +
  • [ ] a.add(b) - no comment
  • +
  • [ ] a.sub(b) - no comment
  • +
  • [ ] a.mul(b) - no comment
  • +
  • [ ] a.inv() - inverse a modulo n
  • +
  • [ ] a.square() - no comment
  • +
  • [ ] a.pow(b) - no comment
  • +
+

Bit operations

We should really have two packages:

+
    +
  • One for immutable, keyable, hashable integers.
  • +
  • One for safe in-place word array manipulation.
  • +
+

There are multiple reasons for this:

+
    +
  • Some bit operations do not really care about endianess
  • +
  • It only works efficiently with a radix that is a power of 2
  • +
+

Q: Does it make any sense to have those operations defined for unbounded +integers?

+

The following will be implemented in a package to come.

+
    +
  • [ ] a.or(b) - or (i, u, iu)
  • +
  • [ ] a.and(b) - and (i, u, iu, andln) (NOTE: andln is going to be replaced with andn in future)
  • +
  • [ ] a.xor(b) - xor (i, u, iu)
  • +
  • [ ] a.setn(b) - set specified bit to 1
  • +
  • [ ] a.shln(b) - shift left (i, u, iu)
  • +
  • [ ] a.shrn(b) - shift right (i, u, iu)
  • +
  • [ ] a.testn(b) - test if specified bit is set
  • +
  • [ ] a.maskn(b) - clear bits with indexes higher or equal to b (i)
  • +
  • [ ] a.bincn(b) - add 1 << b to the number
  • +
  • [ ] a.notn(w) - not (for the width specified by w) (i)
  • +
+

Test

    +
  • [x] a.sign() - return -1, 0, 1
  • +
  • [x] a.iszero() - no comments
  • +
  • [x] a.isone() - no comments
  • +
  • [x] a.ispositive() - no comments
  • +
  • [x] a.isnegative() - no comments
  • +
  • [x] a.isnonnegative() - no comments
  • +
  • [x] a.isnonpositive() - no comments
  • +
  • [x] a.iseven() - no comments
  • +
  • [x] a.isodd() - no comments
  • +
  • [x] a.divides(b) - no comments
  • +
+

Utilities

    +
  • [x] ZZ.has(object) - returns true if the supplied object is an integer.
  • +
  • [x] ZZ.max(a, b) - return a if a larger than b.
  • +
  • [x] ZZ.min(a, b) - return a if a smaller than b.
  • +
  • [ ] a.bitLength() - get number of bits occupied
  • +
  • [ ] a.zeroBits() - return number of less-significant consequent zero bits (example: 1010000 has 4 zero bits)
  • +
  • [ ] a.byteLength() - return number of bytes occupied
  • +
  • [ ] a.toTwos(width) - convert to two's complement representation, where width is bit width
  • +
  • [ ] a.fromTwos(width) - convert from two's complement representation, where width is the bit width
  • +
+

Conversion

    +
  • [x] a.toString(base=10) - convert to base-string (No zero padding, this is up to you)
  • +
  • [x] a.bin() - alias for a.toString(2)
  • +
  • [x] a.oct() - alias for a.toString(8)
  • +
  • [x] a.hex() - alias for a.toString(16)
  • +
  • [x] d = a.digits(base=10) - returns little endian array of digits in given base so that d[0] is the first digit, d[1] the second, etc.
  • +
  • [x] a.bin() - alias for a.digits(2).
  • +
  • [x] a.valueOf() - convert to Javascript Number (limited to 53 bits toNumber in bn.js)
  • +
  • [x] a.toJSON() - convert to JSON compatible hex string (alias of toString(16))
  • +
  • [ ] a.to(type, endian, length) - convert to an instance of type, which must behave like an Array (toArrayLike in bn.js)
  • +
  • [ ] a.toArray(endian, length) - convert to byte Array, and optionally zero pad to length, throwing if already exceeding
  • +
  • [ ] a.toBuffer(endian, length) - convert to Node.js Buffer (if available). For compatibility with browserify and similar tools, use this instead: a.toArrayLike(Buffer, endian, length)
  • +
+
+
+ + + + + + + + + + + + diff --git a/package.json b/package.json deleted file mode 100644 index 54801bc..0000000 --- a/package.json +++ /dev/null @@ -1,250 +0,0 @@ -{ - "name": "@aureooms/js-integer", - "description": "Integers for JavaScript", - "version": "10.0.1", - "license": "AGPL-3.0", - "author": "Aurélien Ooms ", - "homepage": "https://make-github-pseudonymous-again.github.io/js-integer", - "repository": { - "type": "git", - "url": "https://github.com/make-github-pseudonymous-again/js-integer" - }, - "bugs": { - "url": "https://github.com/make-github-pseudonymous-again/js-integer/issues" - }, - "keywords": [ - "abitrary", - "addition", - "algorithm", - "arithmetic", - "big", - "big-int", - "big-integer", - "big-integers", - "big-num", - "big-number", - "big-numbers", - "bigint", - "biginteger", - "bigintegers", - "bignum", - "bignumber", - "bignumbers", - "bn", - "bn.js", - "complexity", - "division", - "exact", - "exponentiation", - "gcd", - "integer", - "javascript", - "js", - "jsbn", - "library", - "logic", - "mpa", - "multi-precision", - "multiplication", - "number", - "precision", - "subtraction" - ], - "sideEffects": false, - "source": "src/index.js", - "main": "dist/index.js", - "module": "dist/index.module.js", - "umd:main": "dist/index.umd.js", - "unpkg": "dist/index.umd.js", - "exports": { - ".": { - "browser": "./dist/index.module.js", - "umd": "./dist/index.umd.js", - "require": "./dist/index.js", - "default": "./dist/index.modern.js" - } - }, - "files": [ - "dist" - ], - "scripts": { - "build": "NODE_ENV=production microbundle", - "build-docs": "esdoc", - "build-gh-pages": "npm run build-docs", - "commit-msg": "commitlint --edit", - "cover": "c8 --all --src src --reporter=lcov npm test", - "debug": "NODE_ENV=debug npm run test -- -st --fail-fast", - "dev": "npm run lint-config-and-fix && npm run lint-and-fix && npm run cover -- -- -st --fail-fast", - "install-hooks": "husky install", - "lint": "xo", - "lint-and-fix": "npm run lint -- --fix", - "lint-config": "fixpack --dryRun", - "lint-config-and-fix": "fixpack || fixpack", - "postinstall": "npm run install-hooks", - "postpublish": "pinst --enable", - "precommit": "lint-staged", - "prepare": "npm run build", - "prepublishOnly": "pinst --disable", - "release": "np --message ':hatching_chick: release: Bumping to v%s.'", - "test": "ava", - "travis": "npm run lint-config && npm run lint && npm run cover" - }, - "dependencies": { - "@aureooms/js-error": "^5.0.2", - "@aureooms/js-integer-big-endian": "^11.0.1" - }, - "devDependencies": { - "@aureooms/js-itertools": "5.0.2", - "@aureooms/js-random": "2.0.0", - "@babel/core": "7.13.10", - "@babel/preset-env": "7.13.12", - "@babel/register": "7.13.8", - "@commitlint/cli": "12.0.1", - "@js-library/commitlint-config": "0.0.4", - "ava": "3.15.0", - "babel-plugin-transform-remove-console": "6.9.4", - "babel-plugin-unassert": "3.0.1", - "babel-preset-power-assert": "3.0.0", - "c8": "7.6.0", - "coveralls": "3.1.0", - "esdoc": "1.1.0", - "esdoc-inject-script-plugin": "1.0.0", - "esdoc-inject-style-plugin": "1.0.0", - "esdoc-standard-plugin": "1.0.0", - "fixpack": "4.0.0", - "husky": "5.2.0", - "lint-staged": "10.5.4", - "microbundle": "0.13.0", - "np": "7.4.0", - "pinst": "2.1.6", - "power-assert": "1.6.1", - "regenerator-runtime": "0.13.7", - "xo": "0.38.2" - }, - "ava": { - "files": [ - "test/src/**/*" - ], - "require": [ - "regenerator-runtime/runtime", - "@babel/register" - ], - "timeout": "10m", - "concurrency": 8 - }, - "babel": { - "sourceMaps": true, - "presets": [ - [ - "@babel/preset-env", - { - "targets": [ - "defaults", - "maintained node versions" - ] - } - ] - ], - "env": { - "debug": { - "presets": [ - [ - "@babel/preset-env", - { - "targets": "current node" - } - ], - "babel-preset-power-assert" - ] - }, - "test": { - "presets": [ - [ - "@babel/preset-env", - { - "targets": "current node" - } - ], - "babel-preset-power-assert" - ], - "plugins": [ - [ - "transform-remove-console", - { - "exclude": [ - "log", - "error", - "warn" - ] - } - ] - ] - }, - "development": { - "presets": [ - "babel-preset-power-assert" - ], - "plugins": [ - [ - "transform-remove-console", - { - "exclude": [ - "log", - "error", - "warn" - ] - } - ] - ] - }, - "production": { - "plugins": [ - "babel-plugin-unassert", - [ - "transform-remove-console", - { - "exclude": [ - "log", - "error", - "warn" - ] - } - ] - ] - } - } - }, - "lint-staged": { - "*.js": [ - "npm run lint-and-fix" - ], - "package.json": [ - "npm run lint-config-and-fix" - ] - }, - "prettier": { - "trailingComma": "all" - }, - "xo": { - "prettier": true, - "plugins": [ - "unicorn" - ], - "rules": { - "unicorn/filename-case": "off", - "camelcase": "off", - "unicorn/prevent-abbreviations": "off", - "no-constant-condition": "off", - "unicorn/prefer-math-trunc": "off", - "unicorn/no-new-array": "off" - }, - "overrides": [ - { - "files": [ - "doc/**" - ], - "env": "browser" - } - ] - } -} diff --git a/renovate.json b/renovate.json deleted file mode 100644 index 3e0cba6..0000000 --- a/renovate.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": [ - "github>make-github-pseudonymous-again/renovate-config-js-library" - ] -} diff --git a/script/inherited-summary.js b/script/inherited-summary.js new file mode 100644 index 0000000..0a35b6d --- /dev/null +++ b/script/inherited-summary.js @@ -0,0 +1,28 @@ +(function(){ + function toggle(ev) { + var button = ev.target; + var parent = ev.target.parentElement; + while(parent) { + if (parent.tagName === 'TABLE' && parent.classList.contains('summary')) break; + parent = parent.parentElement; + } + + if (!parent) return; + + var tbody = parent.querySelector('tbody'); + if (button.classList.contains('opened')) { + button.classList.remove('opened'); + button.classList.add('closed'); + tbody.style.display = 'none'; + } else { + button.classList.remove('closed'); + button.classList.add('opened'); + tbody.style.display = 'block'; + } + } + + var buttons = document.querySelectorAll('.inherited-summary thead .toggle'); + for (var i = 0; i < buttons.length; i++) { + buttons[i].addEventListener('click', toggle); + } +})(); diff --git a/script/inner-link.js b/script/inner-link.js new file mode 100644 index 0000000..ad1c942 --- /dev/null +++ b/script/inner-link.js @@ -0,0 +1,32 @@ +// inner link(#foo) can not correctly scroll, because page has fixed header, +// so, I manually scroll. +(function(){ + var matched = location.hash.match(/errorLines=([\d,]+)/); + if (matched) return; + + function adjust() { + window.scrollBy(0, -55); + var el = document.querySelector('.inner-link-active'); + if (el) el.classList.remove('inner-link-active'); + + // ``[ ] . ' " @`` are not valid in DOM id. so must escape these. + var id = location.hash.replace(/([\[\].'"@$])/g, '\\$1'); + var el = document.querySelector(id); + if (el) el.classList.add('inner-link-active'); + } + + window.addEventListener('hashchange', adjust); + + if (location.hash) { + setTimeout(adjust, 0); + } +})(); + +(function(){ + var els = document.querySelectorAll('[href^="#"]'); + var href = location.href.replace(/#.*$/, ''); // remove existed hash + for (var i = 0; i < els.length; i++) { + var el = els[i]; + el.href = href + el.getAttribute('href'); // because el.href is absolute path + } +})(); diff --git a/script/manual.js b/script/manual.js new file mode 100644 index 0000000..de0bfe2 --- /dev/null +++ b/script/manual.js @@ -0,0 +1,12 @@ +(function(){ + var matched = location.pathname.match(/\/(manual\/.*\.html)$/); + if (!matched) return; + + var currentName = matched[1]; + var cssClass = '.navigation .manual-toc li[data-link="' + currentName + '"]'; + var styleText = cssClass + '{ display: block; }\n'; + styleText += cssClass + '.indent-h1 a { color: #039BE5 }'; + var style = document.createElement('style'); + style.textContent = styleText; + document.querySelector('head').appendChild(style); +})(); diff --git a/script/patch-for-local.js b/script/patch-for-local.js new file mode 100644 index 0000000..5756d13 --- /dev/null +++ b/script/patch-for-local.js @@ -0,0 +1,8 @@ +(function(){ + if (location.protocol === 'file:') { + var elms = document.querySelectorAll('a[href="./"]'); + for (var i = 0; i < elms.length; i++) { + elms[i].href = './index.html'; + } + } +})(); diff --git a/script/prettify/Apache-License-2.0.txt b/script/prettify/Apache-License-2.0.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/script/prettify/Apache-License-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/script/prettify/prettify.js b/script/prettify/prettify.js new file mode 100755 index 0000000..3b74b5b --- /dev/null +++ b/script/prettify/prettify.js @@ -0,0 +1,46 @@ +!function(){/* + + Copyright (C) 2006 Google Inc. + + 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. +*/ +window.PR_SHOULD_USE_CONTINUATION=!0; +(function(){function T(a){function d(e){var b=e.charCodeAt(0);if(92!==b)return b;var a=e.charAt(1);return(b=w[a])?b:"0"<=a&&"7">=a?parseInt(e.substring(1),8):"u"===a||"x"===a?parseInt(e.substring(2),16):e.charCodeAt(1)}function f(e){if(32>e)return(16>e?"\\x0":"\\x")+e.toString(16);e=String.fromCharCode(e);return"\\"===e||"-"===e||"]"===e||"^"===e?"\\"+e:e}function b(e){var b=e.substring(1,e.length-1).match(/\\u[0-9A-Fa-f]{4}|\\x[0-9A-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\s\S]|-|[^-\\]/g);e= +[];var a="^"===b[0],c=["["];a&&c.push("^");for(var a=a?1:0,g=b.length;ak||122k||90k||122h[0]&&(h[1]+1>h[0]&&c.push("-"),c.push(f(h[1])));c.push("]");return c.join("")}function v(e){for(var a=e.source.match(/(?:\[(?:[^\x5C\x5D]|\\[\s\S])*\]|\\u[A-Fa-f0-9]{4}|\\x[A-Fa-f0-9]{2}|\\[0-9]+|\\[^ux0-9]|\(\?[:!=]|[\(\)\^]|[^\x5B\x5C\(\)\^]+)/g),c=a.length,d=[],g=0,h=0;g/,null])):d.push(["com",/^#[^\r\n]*/,null,"#"]));a.cStyleComments&&(f.push(["com",/^\/\/[^\r\n]*/,null]),f.push(["com",/^\/\*[\s\S]*?(?:\*\/|$)/,null]));if(b=a.regexLiterals){var v=(b=1|\\/=?|::?|<>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*("+ +("/(?=[^/*"+b+"])(?:[^/\\x5B\\x5C"+b+"]|\\x5C"+v+"|\\x5B(?:[^\\x5C\\x5D"+b+"]|\\x5C"+v+")*(?:\\x5D|$))+/")+")")])}(b=a.types)&&f.push(["typ",b]);b=(""+a.keywords).replace(/^ | $/g,"");b.length&&f.push(["kwd",new RegExp("^(?:"+b.replace(/[\s,]+/g,"|")+")\\b"),null]);d.push(["pln",/^\s+/,null," \r\n\t\u00a0"]);b="^.[^\\s\\w.$@'\"`/\\\\]*";a.regexLiterals&&(b+="(?!s*/)");f.push(["lit",/^@[a-z_$][a-z_$@0-9]*/i,null],["typ",/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],["pln",/^[a-z_$][a-z_$@0-9]*/i, +null],["lit",/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,null,"0123456789"],["pln",/^\\[\s\S]?/,null],["pun",new RegExp(b),null]);return G(d,f)}function L(a,d,f){function b(a){var c=a.nodeType;if(1==c&&!A.test(a.className))if("br"===a.nodeName)v(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((3==c||4==c)&&f){var d=a.nodeValue,q=d.match(n);q&&(c=d.substring(0,q.index),a.nodeValue=c,(d=d.substring(q.index+q[0].length))&& +a.parentNode.insertBefore(l.createTextNode(d),a.nextSibling),v(a),c||a.parentNode.removeChild(a))}}function v(a){function b(a,c){var d=c?a.cloneNode(!1):a,k=a.parentNode;if(k){var k=b(k,1),e=a.nextSibling;k.appendChild(d);for(var f=e;f;f=e)e=f.nextSibling,k.appendChild(f)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;a=b(a.nextSibling,0);for(var d;(d=a.parentNode)&&1===d.nodeType;)a=d;c.push(a)}for(var A=/(?:^|\s)nocode(?:\s|$)/,n=/\r\n?|\n/,l=a.ownerDocument,m=l.createElement("li");a.firstChild;)m.appendChild(a.firstChild); +for(var c=[m],p=0;p=+v[1],d=/\n/g,A=a.a,n=A.length,f=0,l=a.c,m=l.length,b=0,c=a.g,p=c.length,w=0;c[p]=n;var r,e;for(e=r=0;e=h&&(b+=2);f>=k&&(w+=2)}}finally{g&&(g.style.display=a)}}catch(x){E.console&&console.log(x&&x.stack||x)}}var E=window,C=["break,continue,do,else,for,if,return,while"], +F=[[C,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,restrict,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],H=[F,"alignas,alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,noexcept,noreturn,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"], +O=[F,"abstract,assert,boolean,byte,extends,finally,final,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"],P=[F,"abstract,add,alias,as,ascending,async,await,base,bool,by,byte,checked,decimal,delegate,descending,dynamic,event,finally,fixed,foreach,from,get,global,group,implicit,in,interface,internal,into,is,join,let,lock,null,object,out,override,orderby,params,partial,readonly,ref,remove,sbyte,sealed,select,set,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,value,var,virtual,where,yield"], +F=[F,"abstract,async,await,constructor,debugger,enum,eval,export,function,get,implements,instanceof,interface,let,null,set,undefined,var,with,yield,Infinity,NaN"],Q=[C,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],R=[C,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],C=[C,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"], +S=/^(DIR|FILE|array|vector|(de|priority_)?queue|(forward_)?list|stack|(const_)?(reverse_)?iterator|(unordered_)?(multi)?(set|map)|bitset|u?(int|float)\d*)\b/,W=/\S/,X=y({keywords:[H,P,O,F,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",Q,R,C],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),I={};t(X,["default-code"]);t(G([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),"default-markup htm html mxml xhtml xml xsl".split(" "));t(G([["pln",/^[\s]+/,null," \t\r\n"],["atv",/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null, +"\"'"]],[["tag",/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],["pun",/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);t(G([],[["atv",/^[\s\S]+/]]),["uq.val"]);t(y({keywords:H, +hashComments:!0,cStyleComments:!0,types:S}),"c cc cpp cxx cyc m".split(" "));t(y({keywords:"null,true,false"}),["json"]);t(y({keywords:P,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:S}),["cs"]);t(y({keywords:O,cStyleComments:!0}),["java"]);t(y({keywords:C,hashComments:!0,multiLineStrings:!0}),["bash","bsh","csh","sh"]);t(y({keywords:Q,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py","python"]);t(y({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END", +hashComments:!0,multiLineStrings:!0,regexLiterals:2}),["perl","pl","pm"]);t(y({keywords:R,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb","ruby"]);t(y({keywords:F,cStyleComments:!0,regexLiterals:!0}),["javascript","js","ts","typescript"]);t(y({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0, +regexLiterals:!0}),["coffee"]);t(G([],[["str",/^[\s\S]+/]]),["regex"]);var Y=E.PR={createSimpleLexer:G,registerLangHandler:t,sourceDecorator:y,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ",prettyPrintOne:E.prettyPrintOne=function(a,d,f){f=f||!1;d=d||null;var b=document.createElement("div");b.innerHTML="
"+a+"
"; +b=b.firstChild;f&&L(b,f,!0);M({j:d,m:f,h:b,l:1,a:null,i:null,c:null,g:null});return b.innerHTML},prettyPrint:E.prettyPrint=function(a,d){function f(){for(var b=E.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;p' + pair[2] + ''); + } + } + + var innerHTML = ''; + for (kind in html) { + var list = html[kind]; + if (!list.length) continue; + innerHTML += '
  • ' + kind + '
  • \n' + list.join('\n'); + } + result.innerHTML = innerHTML; + if (innerHTML) result.style.display = 'block'; + selectedIndex = -1; + }); + + // down, up and enter key are pressed, select search result. + input.addEventListener('keydown', function(ev){ + if (ev.keyCode === 40) { + // arrow down + var current = result.children[selectedIndex]; + var selected = result.children[selectedIndex + 1]; + if (selected && selected.classList.contains('search-separator')) { + var selected = result.children[selectedIndex + 2]; + selectedIndex++; + } + + if (selected) { + if (current) current.classList.remove('selected'); + selectedIndex++; + selected.classList.add('selected'); + } + } else if (ev.keyCode === 38) { + // arrow up + var current = result.children[selectedIndex]; + var selected = result.children[selectedIndex - 1]; + if (selected && selected.classList.contains('search-separator')) { + var selected = result.children[selectedIndex - 2]; + selectedIndex--; + } + + if (selected) { + if (current) current.classList.remove('selected'); + selectedIndex--; + selected.classList.add('selected'); + } + } else if (ev.keyCode === 13) { + // enter + var current = result.children[selectedIndex]; + if (current) { + var link = current.querySelector('a'); + if (link) location.href = link.href; + } + } else { + return; + } + + ev.preventDefault(); + }); + + // select search result when search result is mouse over. + result.addEventListener('mousemove', function(ev){ + var current = result.children[selectedIndex]; + if (current) current.classList.remove('selected'); + + var li = ev.target; + while (li) { + if (li.nodeName === 'LI') break; + li = li.parentElement; + } + + if (li) { + selectedIndex = Array.prototype.indexOf.call(result.children, li); + li.classList.add('selected'); + } + }); + + // clear search result when body is clicked. + document.body.addEventListener('click', function(ev){ + selectedIndex = -1; + result.style.display = 'none'; + result.innerHTML = ''; + }); + +})(); diff --git a/script/search_index.js b/script/search_index.js new file mode 100644 index 0000000..981519f --- /dev/null +++ b/script/search_index.js @@ -0,0 +1,1184 @@ +window.esdocSearchIndex = [ + [ + "@aureooms/js-integer/src/integer.js~$0", + "function/index.html#static-function-$0", + "$0 @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~$1", + "function/index.html#static-function-$1", + "$1 @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~$_1", + "function/index.html#static-function-$_1", + "$_1 @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/default_display_base.js~default_display_base", + "variable/index.html#static-variable-DEFAULT_DISPLAY_BASE", + "DEFAULT_DISPLAY_BASE @aureooms/js-integer/src/DEFAULT_DISPLAY_BASE.js", + "variable" + ], + [ + "@aureooms/js-integer/src/default_representation_base.js~default_representation_base", + "variable/index.html#static-variable-DEFAULT_REPRESENTATION_BASE", + "DEFAULT_REPRESENTATION_BASE @aureooms/js-integer/src/DEFAULT_REPRESENTATION_BASE.js", + "variable" + ], + [ + "@aureooms/js-integer/src/integer.js~integer", + "class/src/Integer.js~Integer.html", + "Integer @aureooms/js-integer/src/Integer.js", + "class" + ], + [ + "@aureooms/js-integer/src/integerring.js~integerring", + "class/src/IntegerRing.js~IntegerRing.html", + "IntegerRing @aureooms/js-integer/src/IntegerRing.js", + "class" + ], + [ + "@aureooms/js-integer/src/_limits.js~max_base", + "variable/index.html#static-variable-MAX_BASE", + "MAX_BASE @aureooms/js-integer/src/_limits.js", + "variable" + ], + [ + "@aureooms/js-integer/src/_limits.js~max_number", + "variable/index.html#static-variable-MAX_NUMBER", + "MAX_NUMBER @aureooms/js-integer/src/_limits.js", + "variable" + ], + [ + "@aureooms/js-integer/src/_limits.js~min_base", + "variable/index.html#static-variable-MIN_BASE", + "MIN_BASE @aureooms/js-integer/src/_limits.js", + "variable" + ], + [ + "@aureooms/js-integer/src/_limits.js~min_number", + "variable/index.html#static-variable-MIN_NUMBER", + "MIN_NUMBER @aureooms/js-integer/src/_limits.js", + "variable" + ], + [ + "@aureooms/js-integer/src/zz.js~zz", + "variable/index.html#static-variable-ZZ", + "ZZ @aureooms/js-integer/src/ZZ.js", + "variable" + ], + [ + "@aureooms/js-integer/src/zerodivisionerror.js~zerodivisionerror", + "class/src/ZeroDivisionError.js~ZeroDivisionError.html", + "ZeroDivisionError @aureooms/js-integer/src/ZeroDivisionError.js", + "class" + ], + [ + "@aureooms/js-integer/src/_from_number.js~_from_number", + "function/index.html#static-function-_from_number", + "_from_number @aureooms/js-integer/src/_from_number.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~add", + "function/index.html#static-function-add", + "add @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~addn", + "function/index.html#static-function-addn", + "addn @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~div", + "function/index.html#static-function-div", + "div @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~divmod", + "function/index.html#static-function-divmod", + "divmod @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~divmodn", + "function/index.html#static-function-divmodn", + "divmodn @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~divn", + "function/index.html#static-function-divn", + "divn @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~iadd", + "function/index.html#static-function-iadd", + "iadd @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~iaddn", + "function/index.html#static-function-iaddn", + "iaddn @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~idiv", + "function/index.html#static-function-idiv", + "idiv @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~idivmod", + "function/index.html#static-function-idivmod", + "idivmod @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~idivmodn", + "function/index.html#static-function-idivmodn", + "idivmodn @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~idivn", + "function/index.html#static-function-idivn", + "idivn @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~imod", + "function/index.html#static-function-imod", + "imod @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~imodn", + "function/index.html#static-function-imodn", + "imodn @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~imul", + "function/index.html#static-function-imul", + "imul @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~imuln", + "function/index.html#static-function-imuln", + "imuln @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~ipow", + "function/index.html#static-function-ipow", + "ipow @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~ipown", + "function/index.html#static-function-ipown", + "ipown @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~isub", + "function/index.html#static-function-isub", + "isub @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~isubn", + "function/index.html#static-function-isubn", + "isubn @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~mod", + "function/index.html#static-function-mod", + "mod @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~modn", + "function/index.html#static-function-modn", + "modn @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~mul", + "function/index.html#static-function-mul", + "mul @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~muln", + "function/index.html#static-function-muln", + "muln @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~parse", + "function/index.html#static-function-parse", + "parse @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~pow", + "function/index.html#static-function-pow", + "pow @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~pown", + "function/index.html#static-function-pown", + "pown @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~stringify", + "function/index.html#static-function-stringify", + "stringify @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~sub", + "function/index.html#static-function-sub", + "sub @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "@aureooms/js-integer/src/integer.js~subn", + "function/index.html#static-function-subn", + "subn @aureooms/js-integer/src/integer.js", + "function" + ], + [ + "src/.external-ecmascript.js~array", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array", + "src/.external-ecmascript.js~Array", + "external" + ], + [ + "src/.external-ecmascript.js~arraybuffer", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer", + "src/.external-ecmascript.js~ArrayBuffer", + "external" + ], + [ + "src/.external-ecmascript.js~boolean", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean", + "src/.external-ecmascript.js~Boolean", + "external" + ], + [ + "src/.external-ecmascript.js~dataview", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView", + "src/.external-ecmascript.js~DataView", + "external" + ], + [ + "src/.external-ecmascript.js~date", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date", + "src/.external-ecmascript.js~Date", + "external" + ], + [ + "src/.external-ecmascript.js~error", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error", + "src/.external-ecmascript.js~Error", + "external" + ], + [ + "src/.external-ecmascript.js~evalerror", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError", + "src/.external-ecmascript.js~EvalError", + "external" + ], + [ + "src/.external-ecmascript.js~float32array", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array", + "src/.external-ecmascript.js~Float32Array", + "external" + ], + [ + "src/.external-ecmascript.js~float64array", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float64Array", + "src/.external-ecmascript.js~Float64Array", + "external" + ], + [ + "src/.external-ecmascript.js~function", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function", + "src/.external-ecmascript.js~Function", + "external" + ], + [ + "src/.external-ecmascript.js~generator", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator", + "src/.external-ecmascript.js~Generator", + "external" + ], + [ + "src/.external-ecmascript.js~generatorfunction", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction", + "src/.external-ecmascript.js~GeneratorFunction", + "external" + ], + [ + "src/.external-ecmascript.js~infinity", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Infinity", + "src/.external-ecmascript.js~Infinity", + "external" + ], + [ + "src/.external-ecmascript.js~int16array", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array", + "src/.external-ecmascript.js~Int16Array", + "external" + ], + [ + "src/.external-ecmascript.js~int32array", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array", + "src/.external-ecmascript.js~Int32Array", + "external" + ], + [ + "src/.external-ecmascript.js~int8array", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array", + "src/.external-ecmascript.js~Int8Array", + "external" + ], + [ + "src/.external-ecmascript.js~internalerror", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/InternalError", + "src/.external-ecmascript.js~InternalError", + "external" + ], + [ + "src/.external-ecmascript.js~json", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON", + "src/.external-ecmascript.js~JSON", + "external" + ], + [ + "src/.external-ecmascript.js~map", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map", + "src/.external-ecmascript.js~Map", + "external" + ], + [ + "src/.external-ecmascript.js~nan", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN", + "src/.external-ecmascript.js~NaN", + "external" + ], + [ + "src/.external-ecmascript.js~number", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number", + "src/.external-ecmascript.js~Number", + "external" + ], + [ + "src/.external-ecmascript.js~object", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object", + "src/.external-ecmascript.js~Object", + "external" + ], + [ + "src/.external-ecmascript.js~promise", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise", + "src/.external-ecmascript.js~Promise", + "external" + ], + [ + "src/.external-ecmascript.js~proxy", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy", + "src/.external-ecmascript.js~Proxy", + "external" + ], + [ + "src/.external-ecmascript.js~rangeerror", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError", + "src/.external-ecmascript.js~RangeError", + "external" + ], + [ + "src/.external-ecmascript.js~referenceerror", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError", + "src/.external-ecmascript.js~ReferenceError", + "external" + ], + [ + "src/.external-ecmascript.js~reflect", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect", + "src/.external-ecmascript.js~Reflect", + "external" + ], + [ + "src/.external-ecmascript.js~regexp", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp", + "src/.external-ecmascript.js~RegExp", + "external" + ], + [ + "src/.external-ecmascript.js~set", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set", + "src/.external-ecmascript.js~Set", + "external" + ], + [ + "src/.external-ecmascript.js~string", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String", + "src/.external-ecmascript.js~String", + "external" + ], + [ + "src/.external-ecmascript.js~symbol", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol", + "src/.external-ecmascript.js~Symbol", + "external" + ], + [ + "src/.external-ecmascript.js~syntaxerror", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError", + "src/.external-ecmascript.js~SyntaxError", + "external" + ], + [ + "src/.external-ecmascript.js~typeerror", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError", + "src/.external-ecmascript.js~TypeError", + "external" + ], + [ + "src/.external-ecmascript.js~urierror", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError", + "src/.external-ecmascript.js~URIError", + "external" + ], + [ + "src/.external-ecmascript.js~uint16array", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array", + "src/.external-ecmascript.js~Uint16Array", + "external" + ], + [ + "src/.external-ecmascript.js~uint32array", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array", + "src/.external-ecmascript.js~Uint32Array", + "external" + ], + [ + "src/.external-ecmascript.js~uint8array", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array", + "src/.external-ecmascript.js~Uint8Array", + "external" + ], + [ + "src/.external-ecmascript.js~uint8clampedarray", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray", + "src/.external-ecmascript.js~Uint8ClampedArray", + "external" + ], + [ + "src/.external-ecmascript.js~weakmap", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap", + "src/.external-ecmascript.js~WeakMap", + "external" + ], + [ + "src/.external-ecmascript.js~weakset", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet", + "src/.external-ecmascript.js~WeakSet", + "external" + ], + [ + "src/.external-ecmascript.js~boolean", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean", + "src/.external-ecmascript.js~boolean", + "external" + ], + [ + "src/.external-ecmascript.js~function", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function", + "src/.external-ecmascript.js~function", + "external" + ], + [ + "src/.external-ecmascript.js~null", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null", + "src/.external-ecmascript.js~null", + "external" + ], + [ + "src/.external-ecmascript.js~number", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number", + "src/.external-ecmascript.js~number", + "external" + ], + [ + "src/.external-ecmascript.js~object", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object", + "src/.external-ecmascript.js~object", + "external" + ], + [ + "src/.external-ecmascript.js~string", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String", + "src/.external-ecmascript.js~string", + "external" + ], + [ + "src/.external-ecmascript.js~undefined", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined", + "src/.external-ecmascript.js~undefined", + "external" + ], + [ + "src/default_display_base.js", + "file/src/DEFAULT_DISPLAY_BASE.js.html", + "src/DEFAULT_DISPLAY_BASE.js", + "file" + ], + [ + "src/default_representation_base.js", + "file/src/DEFAULT_REPRESENTATION_BASE.js.html", + "src/DEFAULT_REPRESENTATION_BASE.js", + "file" + ], + [ + "src/integer.js", + "file/src/Integer.js.html", + "src/Integer.js", + "file" + ], + [ + "src/integer.js~integer#_base", + "class/src/Integer.js~Integer.html#instance-member-_base", + "src/Integer.js~Integer#_base", + "member" + ], + [ + "src/integer.js~integer#_is_negative", + "class/src/Integer.js~Integer.html#instance-member-_is_negative", + "src/Integer.js~Integer#_is_negative", + "member" + ], + [ + "src/integer.js~integer#_limbs", + "class/src/Integer.js~Integer.html#instance-member-_limbs", + "src/Integer.js~Integer#_limbs", + "member" + ], + [ + "src/integer.js~integer#_limbs_in_base", + "class/src/Integer.js~Integer.html#instance-method-_limbs_in_base", + "src/Integer.js~Integer#_limbs_in_base", + "method" + ], + [ + "src/integer.js~integer#abs", + "class/src/Integer.js~Integer.html#instance-method-abs", + "src/Integer.js~Integer#abs", + "method" + ], + [ + "src/integer.js~integer#add", + "class/src/Integer.js~Integer.html#instance-method-add", + "src/Integer.js~Integer#add", + "method" + ], + [ + "src/integer.js~integer#addn", + "class/src/Integer.js~Integer.html#instance-method-addn", + "src/Integer.js~Integer#addn", + "method" + ], + [ + "src/integer.js~integer#bin", + "class/src/Integer.js~Integer.html#instance-method-bin", + "src/Integer.js~Integer#bin", + "method" + ], + [ + "src/integer.js~integer#bits", + "class/src/Integer.js~Integer.html#instance-method-bits", + "src/Integer.js~Integer#bits", + "method" + ], + [ + "src/integer.js~integer#clone", + "class/src/Integer.js~Integer.html#instance-method-clone", + "src/Integer.js~Integer#clone", + "method" + ], + [ + "src/integer.js~integer#cmp", + "class/src/Integer.js~Integer.html#instance-method-cmp", + "src/Integer.js~Integer#cmp", + "method" + ], + [ + "src/integer.js~integer#cmpn", + "class/src/Integer.js~Integer.html#instance-method-cmpn", + "src/Integer.js~Integer#cmpn", + "method" + ], + [ + "src/integer.js~integer#constructor", + "class/src/Integer.js~Integer.html#instance-constructor-constructor", + "src/Integer.js~Integer#constructor", + "method" + ], + [ + "src/integer.js~integer#digits", + "class/src/Integer.js~Integer.html#instance-method-digits", + "src/Integer.js~Integer#digits", + "method" + ], + [ + "src/integer.js~integer#div", + "class/src/Integer.js~Integer.html#instance-method-div", + "src/Integer.js~Integer#div", + "method" + ], + [ + "src/integer.js~integer#divide_knowing_divisible_by", + "class/src/Integer.js~Integer.html#instance-method-divide_knowing_divisible_by", + "src/Integer.js~Integer#divide_knowing_divisible_by", + "method" + ], + [ + "src/integer.js~integer#divides", + "class/src/Integer.js~Integer.html#instance-method-divides", + "src/Integer.js~Integer#divides", + "method" + ], + [ + "src/integer.js~integer#divmod", + "class/src/Integer.js~Integer.html#instance-method-divmod", + "src/Integer.js~Integer#divmod", + "method" + ], + [ + "src/integer.js~integer#divmodn", + "class/src/Integer.js~Integer.html#instance-method-divmodn", + "src/Integer.js~Integer#divmodn", + "method" + ], + [ + "src/integer.js~integer#divn", + "class/src/Integer.js~Integer.html#instance-method-divn", + "src/Integer.js~Integer#divn", + "method" + ], + [ + "src/integer.js~integer#divround", + "class/src/Integer.js~Integer.html#instance-method-divround", + "src/Integer.js~Integer#divround", + "method" + ], + [ + "src/integer.js~integer#egcd", + "class/src/Integer.js~Integer.html#instance-method-egcd", + "src/Integer.js~Integer#egcd", + "method" + ], + [ + "src/integer.js~integer#eq", + "class/src/Integer.js~Integer.html#instance-method-eq", + "src/Integer.js~Integer#eq", + "method" + ], + [ + "src/integer.js~integer#eqn", + "class/src/Integer.js~Integer.html#instance-method-eqn", + "src/Integer.js~Integer#eqn", + "method" + ], + [ + "src/integer.js~integer#gcd", + "class/src/Integer.js~Integer.html#instance-method-gcd", + "src/Integer.js~Integer#gcd", + "method" + ], + [ + "src/integer.js~integer#ge", + "class/src/Integer.js~Integer.html#instance-method-ge", + "src/Integer.js~Integer#ge", + "method" + ], + [ + "src/integer.js~integer#gen", + "class/src/Integer.js~Integer.html#instance-method-gen", + "src/Integer.js~Integer#gen", + "method" + ], + [ + "src/integer.js~integer#gt", + "class/src/Integer.js~Integer.html#instance-method-gt", + "src/Integer.js~Integer#gt", + "method" + ], + [ + "src/integer.js~integer#gtn", + "class/src/Integer.js~Integer.html#instance-method-gtn", + "src/Integer.js~Integer#gtn", + "method" + ], + [ + "src/integer.js~integer#hex", + "class/src/Integer.js~Integer.html#instance-method-hex", + "src/Integer.js~Integer#hex", + "method" + ], + [ + "src/integer.js~integer#iabs", + "class/src/Integer.js~Integer.html#instance-method-iabs", + "src/Integer.js~Integer#iabs", + "method" + ], + [ + "src/integer.js~integer#iadd", + "class/src/Integer.js~Integer.html#instance-method-iadd", + "src/Integer.js~Integer#iadd", + "method" + ], + [ + "src/integer.js~integer#iaddn", + "class/src/Integer.js~Integer.html#instance-method-iaddn", + "src/Integer.js~Integer#iaddn", + "method" + ], + [ + "src/integer.js~integer#idiv", + "class/src/Integer.js~Integer.html#instance-method-idiv", + "src/Integer.js~Integer#idiv", + "method" + ], + [ + "src/integer.js~integer#idivmod", + "class/src/Integer.js~Integer.html#instance-method-idivmod", + "src/Integer.js~Integer#idivmod", + "method" + ], + [ + "src/integer.js~integer#idivmodn", + "class/src/Integer.js~Integer.html#instance-method-idivmodn", + "src/Integer.js~Integer#idivmodn", + "method" + ], + [ + "src/integer.js~integer#idivn", + "class/src/Integer.js~Integer.html#instance-method-idivn", + "src/Integer.js~Integer#idivn", + "method" + ], + [ + "src/integer.js~integer#imod", + "class/src/Integer.js~Integer.html#instance-method-imod", + "src/Integer.js~Integer#imod", + "method" + ], + [ + "src/integer.js~integer#imodn", + "class/src/Integer.js~Integer.html#instance-method-imodn", + "src/Integer.js~Integer#imodn", + "method" + ], + [ + "src/integer.js~integer#imul", + "class/src/Integer.js~Integer.html#instance-method-imul", + "src/Integer.js~Integer#imul", + "method" + ], + [ + "src/integer.js~integer#imuln", + "class/src/Integer.js~Integer.html#instance-method-imuln", + "src/Integer.js~Integer#imuln", + "method" + ], + [ + "src/integer.js~integer#ipow", + "class/src/Integer.js~Integer.html#instance-method-ipow", + "src/Integer.js~Integer#ipow", + "method" + ], + [ + "src/integer.js~integer#ipown", + "class/src/Integer.js~Integer.html#instance-method-ipown", + "src/Integer.js~Integer#ipown", + "method" + ], + [ + "src/integer.js~integer#iseven", + "class/src/Integer.js~Integer.html#instance-method-iseven", + "src/Integer.js~Integer#iseven", + "method" + ], + [ + "src/integer.js~integer#isnegative", + "class/src/Integer.js~Integer.html#instance-method-isnegative", + "src/Integer.js~Integer#isnegative", + "method" + ], + [ + "src/integer.js~integer#isnonnegative", + "class/src/Integer.js~Integer.html#instance-method-isnonnegative", + "src/Integer.js~Integer#isnonnegative", + "method" + ], + [ + "src/integer.js~integer#isnonpositive", + "class/src/Integer.js~Integer.html#instance-method-isnonpositive", + "src/Integer.js~Integer#isnonpositive", + "method" + ], + [ + "src/integer.js~integer#isnonzero", + "class/src/Integer.js~Integer.html#instance-method-isnonzero", + "src/Integer.js~Integer#isnonzero", + "method" + ], + [ + "src/integer.js~integer#isodd", + "class/src/Integer.js~Integer.html#instance-method-isodd", + "src/Integer.js~Integer#isodd", + "method" + ], + [ + "src/integer.js~integer#isone", + "class/src/Integer.js~Integer.html#instance-method-isone", + "src/Integer.js~Integer#isone", + "method" + ], + [ + "src/integer.js~integer#ispositive", + "class/src/Integer.js~Integer.html#instance-method-ispositive", + "src/Integer.js~Integer#ispositive", + "method" + ], + [ + "src/integer.js~integer#isquare", + "class/src/Integer.js~Integer.html#instance-method-isquare", + "src/Integer.js~Integer#isquare", + "method" + ], + [ + "src/integer.js~integer#isub", + "class/src/Integer.js~Integer.html#instance-method-isub", + "src/Integer.js~Integer#isub", + "method" + ], + [ + "src/integer.js~integer#isubn", + "class/src/Integer.js~Integer.html#instance-method-isubn", + "src/Integer.js~Integer#isubn", + "method" + ], + [ + "src/integer.js~integer#iszero", + "class/src/Integer.js~Integer.html#instance-method-iszero", + "src/Integer.js~Integer#iszero", + "method" + ], + [ + "src/integer.js~integer#le", + "class/src/Integer.js~Integer.html#instance-method-le", + "src/Integer.js~Integer#le", + "method" + ], + [ + "src/integer.js~integer#len", + "class/src/Integer.js~Integer.html#instance-method-len", + "src/Integer.js~Integer#len", + "method" + ], + [ + "src/integer.js~integer#lt", + "class/src/Integer.js~Integer.html#instance-method-lt", + "src/Integer.js~Integer#lt", + "method" + ], + [ + "src/integer.js~integer#ltn", + "class/src/Integer.js~Integer.html#instance-method-ltn", + "src/Integer.js~Integer#ltn", + "method" + ], + [ + "src/integer.js~integer#mod", + "class/src/Integer.js~Integer.html#instance-method-mod", + "src/Integer.js~Integer#mod", + "method" + ], + [ + "src/integer.js~integer#modn", + "class/src/Integer.js~Integer.html#instance-method-modn", + "src/Integer.js~Integer#modn", + "method" + ], + [ + "src/integer.js~integer#move", + "class/src/Integer.js~Integer.html#instance-method-move", + "src/Integer.js~Integer#move", + "method" + ], + [ + "src/integer.js~integer#mul", + "class/src/Integer.js~Integer.html#instance-method-mul", + "src/Integer.js~Integer#mul", + "method" + ], + [ + "src/integer.js~integer#muln", + "class/src/Integer.js~Integer.html#instance-method-muln", + "src/Integer.js~Integer#muln", + "method" + ], + [ + "src/integer.js~integer#ne", + "class/src/Integer.js~Integer.html#instance-method-ne", + "src/Integer.js~Integer#ne", + "method" + ], + [ + "src/integer.js~integer#negate", + "class/src/Integer.js~Integer.html#instance-method-negate", + "src/Integer.js~Integer#negate", + "method" + ], + [ + "src/integer.js~integer#nen", + "class/src/Integer.js~Integer.html#instance-method-nen", + "src/Integer.js~Integer#nen", + "method" + ], + [ + "src/integer.js~integer#oct", + "class/src/Integer.js~Integer.html#instance-method-oct", + "src/Integer.js~Integer#oct", + "method" + ], + [ + "src/integer.js~integer#opposite", + "class/src/Integer.js~Integer.html#instance-method-opposite", + "src/Integer.js~Integer#opposite", + "method" + ], + [ + "src/integer.js~integer#parity", + "class/src/Integer.js~Integer.html#instance-method-parity", + "src/Integer.js~Integer#parity", + "method" + ], + [ + "src/integer.js~integer#pow", + "class/src/Integer.js~Integer.html#instance-method-pow", + "src/Integer.js~Integer#pow", + "method" + ], + [ + "src/integer.js~integer#pown", + "class/src/Integer.js~Integer.html#instance-method-pown", + "src/Integer.js~Integer#pown", + "method" + ], + [ + "src/integer.js~integer#sign", + "class/src/Integer.js~Integer.html#instance-method-sign", + "src/Integer.js~Integer#sign", + "method" + ], + [ + "src/integer.js~integer#square", + "class/src/Integer.js~Integer.html#instance-method-square", + "src/Integer.js~Integer#square", + "method" + ], + [ + "src/integer.js~integer#sub", + "class/src/Integer.js~Integer.html#instance-method-sub", + "src/Integer.js~Integer#sub", + "method" + ], + [ + "src/integer.js~integer#subn", + "class/src/Integer.js~Integer.html#instance-method-subn", + "src/Integer.js~Integer#subn", + "method" + ], + [ + "src/integer.js~integer#tojson", + "class/src/Integer.js~Integer.html#instance-method-toJSON", + "src/Integer.js~Integer#toJSON", + "method" + ], + [ + "src/integer.js~integer#tonumber", + "class/src/Integer.js~Integer.html#instance-method-toNumber", + "src/Integer.js~Integer#toNumber", + "method" + ], + [ + "src/integer.js~integer#tostring", + "class/src/Integer.js~Integer.html#instance-method-toString", + "src/Integer.js~Integer#toString", + "method" + ], + [ + "src/integer.js~integer#valueof", + "class/src/Integer.js~Integer.html#instance-method-valueOf", + "src/Integer.js~Integer#valueOf", + "method" + ], + [ + "src/integerring.js", + "file/src/IntegerRing.js.html", + "src/IntegerRing.js", + "file" + ], + [ + "src/integerring.js~integerring#$0", + "class/src/IntegerRing.js~IntegerRing.html#instance-method-$0", + "src/IntegerRing.js~IntegerRing#$0", + "method" + ], + [ + "src/integerring.js~integerring#$1", + "class/src/IntegerRing.js~IntegerRing.html#instance-method-$1", + "src/IntegerRing.js~IntegerRing#$1", + "method" + ], + [ + "src/integerring.js~integerring#$_1", + "class/src/IntegerRing.js~IntegerRing.html#instance-method-$_1", + "src/IntegerRing.js~IntegerRing#$_1", + "method" + ], + [ + "src/integerring.js~integerring#_base", + "class/src/IntegerRing.js~IntegerRing.html#instance-member-_base", + "src/IntegerRing.js~IntegerRing#_base", + "member" + ], + [ + "src/integerring.js~integerring#characteristic", + "class/src/IntegerRing.js~IntegerRing.html#instance-method-characteristic", + "src/IntegerRing.js~IntegerRing#characteristic", + "method" + ], + [ + "src/integerring.js~integerring#constructor", + "class/src/IntegerRing.js~IntegerRing.html#instance-constructor-constructor", + "src/IntegerRing.js~IntegerRing#constructor", + "method" + ], + [ + "src/integerring.js~integerring#from", + "class/src/IntegerRing.js~IntegerRing.html#instance-method-from", + "src/IntegerRing.js~IntegerRing#from", + "method" + ], + [ + "src/integerring.js~integerring#from_digits", + "class/src/IntegerRing.js~IntegerRing.html#instance-method-from_digits", + "src/IntegerRing.js~IntegerRing#from_digits", + "method" + ], + [ + "src/integerring.js~integerring#from_number", + "class/src/IntegerRing.js~IntegerRing.html#instance-method-from_number", + "src/IntegerRing.js~IntegerRing#from_number", + "method" + ], + [ + "src/integerring.js~integerring#from_string", + "class/src/IntegerRing.js~IntegerRing.html#instance-method-from_string", + "src/IntegerRing.js~IntegerRing#from_string", + "method" + ], + [ + "src/integerring.js~integerring#has", + "class/src/IntegerRing.js~IntegerRing.html#instance-method-has", + "src/IntegerRing.js~IntegerRing#has", + "method" + ], + [ + "src/integerring.js~integerring#max", + "class/src/IntegerRing.js~IntegerRing.html#instance-method-max", + "src/IntegerRing.js~IntegerRing#max", + "method" + ], + [ + "src/integerring.js~integerring#min", + "class/src/IntegerRing.js~IntegerRing.html#instance-method-min", + "src/IntegerRing.js~IntegerRing#min", + "method" + ], + [ + "src/integerring.js~integerring#name", + "class/src/IntegerRing.js~IntegerRing.html#instance-member-name", + "src/IntegerRing.js~IntegerRing#name", + "member" + ], + [ + "src/integerring.js~integerring#tostring", + "class/src/IntegerRing.js~IntegerRing.html#instance-method-toString", + "src/IntegerRing.js~IntegerRing#toString", + "method" + ], + [ + "src/zz.js", + "file/src/ZZ.js.html", + "src/ZZ.js", + "file" + ], + [ + "src/zerodivisionerror.js", + "file/src/ZeroDivisionError.js.html", + "src/ZeroDivisionError.js", + "file" + ], + [ + "src/zerodivisionerror.js~zerodivisionerror#tostring", + "class/src/ZeroDivisionError.js~ZeroDivisionError.html#instance-method-toString", + "src/ZeroDivisionError.js~ZeroDivisionError#toString", + "method" + ], + [ + "src/_from_number.js", + "file/src/_from_number.js.html", + "src/_from_number.js", + "file" + ], + [ + "src/_limits.js", + "file/src/_limits.js.html", + "src/_limits.js", + "file" + ], + [ + "src/index.js", + "file/src/index.js.html", + "src/index.js", + "file" + ], + [ + "src/integer.js", + "file/src/integer.js.html", + "src/integer.js", + "file" + ] +] \ No newline at end of file diff --git a/script/test-summary.js b/script/test-summary.js new file mode 100644 index 0000000..2abad3b --- /dev/null +++ b/script/test-summary.js @@ -0,0 +1,54 @@ +(function(){ + function toggle(ev) { + var button = ev.target; + var parent = ev.target.parentElement; + while(parent) { + if (parent.tagName === 'TR' && parent.classList.contains('test-interface')) break; + parent = parent.parentElement; + } + + if (!parent) return; + + var direction; + if (button.classList.contains('opened')) { + button.classList.remove('opened'); + button.classList.add('closed'); + direction = 'closed'; + } else { + button.classList.remove('closed'); + button.classList.add('opened'); + direction = 'opened'; + } + + var targetDepth = parseInt(parent.dataset.testDepth, 10) + 1; + var nextElement = parent.nextElementSibling; + while (nextElement) { + var depth = parseInt(nextElement.dataset.testDepth, 10); + if (depth >= targetDepth) { + if (direction === 'opened') { + if (depth === targetDepth) nextElement.style.display = ''; + } else if (direction === 'closed') { + nextElement.style.display = 'none'; + var innerButton = nextElement.querySelector('.toggle'); + if (innerButton && innerButton.classList.contains('opened')) { + innerButton.classList.remove('opened'); + innerButton.classList.add('closed'); + } + } + } else { + break; + } + nextElement = nextElement.nextElementSibling; + } + } + + var buttons = document.querySelectorAll('.test-summary tr.test-interface .toggle'); + for (var i = 0; i < buttons.length; i++) { + buttons[i].addEventListener('click', toggle); + } + + var topDescribes = document.querySelectorAll('.test-summary tr[data-test-depth="0"]'); + for (var i = 0; i < topDescribes.length; i++) { + topDescribes[i].style.display = ''; + } +})(); diff --git a/source.html b/source.html new file mode 100644 index 0000000..0a947c8 --- /dev/null +++ b/source.html @@ -0,0 +1,226 @@ + + + + + + Source | @aureooms/js-integer + + + + + + + +
    + Home + Manual + Reference + Source + + +
    + + + +

    Source 1/140

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FileIdentifierDocumentSizeLinesUpdated
    src/DEFAULT_DISPLAY_BASE.jsDEFAULT_DISPLAY_BASE0 %0/140 byte12021-03-03 19:41:04 (UTC)
    src/DEFAULT_REPRESENTATION_BASE.jsDEFAULT_REPRESENTATION_BASE0 %0/1782 byte132021-03-03 19:41:04 (UTC)
    src/Integer.jsInteger1 %1/8111906 byte5952021-03-03 19:41:04 (UTC)
    src/IntegerRing.jsIntegerRing0 %0/163104 byte1302021-03-03 19:41:04 (UTC)
    src/ZZ.jsZZ0 %0/1205 byte42021-03-03 19:41:04 (UTC)
    src/ZeroDivisionError.jsZeroDivisionError0 %0/2113 byte52021-03-03 19:41:04 (UTC)
    src/_from_number.js_from_number0 %0/1346 byte102021-03-03 19:41:04 (UTC)
    src/_limits.jsMAX_BASE +MAX_NUMBER +MIN_BASE +MIN_NUMBER0 %0/4196 byte42021-03-03 19:41:04 (UTC)
    src/index.js--282 byte82021-03-03 19:41:04 (UTC)
    src/integer.js$0 +$1 +$_1 +add +addn +div +divmod +divmodn +divn +iadd +iaddn +idiv +idivmod +idivmodn +idivn +imod +imodn +imul +imuln +ipow +ipown +isub +isubn +mod +modn +mul +muln +parse +pow +pown +stringify +sub +subn0 %0/332394 byte1342021-03-03 19:41:04 (UTC)
    +
    + + + + + + + + + + + + diff --git a/src/DEFAULT_DISPLAY_BASE.js b/src/DEFAULT_DISPLAY_BASE.js deleted file mode 100644 index a90c9e4..0000000 --- a/src/DEFAULT_DISPLAY_BASE.js +++ /dev/null @@ -1 +0,0 @@ -export const DEFAULT_DISPLAY_BASE = 10; diff --git a/src/DEFAULT_REPRESENTATION_BASE.js b/src/DEFAULT_REPRESENTATION_BASE.js deleted file mode 100644 index 08d6798..0000000 --- a/src/DEFAULT_REPRESENTATION_BASE.js +++ /dev/null @@ -1,13 +0,0 @@ -// Import { DEFAULT_DISPLAY_BASE } from './' ; -import {MAX_BASE} from './_limits.js'; - -/* - * Biggest power of DEFAULT_DISPLAY_BASE whose square holds in a single double - * with full precision. For working correctly with multiplication algorithms - * and for fast base DEFAULT_DISPLAY_BASE printing. On older machines with no - * native doubles, it might be worth to only use ints. - */ -// export const DEFAULT_REPRESENTATION_BASE = Math.pow(DEFAULT_DISPLAY_BASE,Math.floor(Math.log(Math.sqrt(Math.pow(2,53)))/Math.log(DEFAULT_DISPLAY_BASE))) ; -// export const DEFAULT_REPRESENTATION_BASE = Math.pow(16,Math.floor(Math.log(Math.sqrt(Math.pow(2,53)))/Math.log(16))) ; -// export const DEFAULT_REPRESENTATION_BASE = Math.pow(2,26) | 0; -export const DEFAULT_REPRESENTATION_BASE = MAX_BASE; diff --git a/src/Integer.js b/src/Integer.js deleted file mode 100644 index 268aff2..0000000 --- a/src/Integer.js +++ /dev/null @@ -1,595 +0,0 @@ -import {DEFAULT_DISPLAY_BASE} from './DEFAULT_DISPLAY_BASE.js'; -import {ZeroDivisionError} from './ZeroDivisionError.js'; - -import {ValueError} from '@aureooms/js-error'; - -import {_from_number} from './_from_number.js'; - -import { - stringify, - convert, - _trim_positive, - _alloc, - _copy, - _zeros, - jz, - cmp, - eq, - add, - _sub, - mul, - _idivmod, - _pow_double, - increment, - euclidean_algorithm, - extended_euclidean_algorithm, -} from '@aureooms/js-integer-big-endian'; - -import {MIN_NUMBER, MAX_NUMBER, MAX_BASE} from './_limits.js'; - -export class Integer { - constructor(base, is_negative, limbs) { - this._base = base; - this._is_negative = is_negative; - this._limbs = limbs; - } - - move(other) { - other._base = this._base; - other._is_negative = this._is_negative; - other._limbs = this._limbs; - return other; - } - - clone() { - return new Integer(this._base, this._is_negative, this._limbs); - } - - _limbs_in_base(base) { - // TODO save result for later ? Maybe replace base ? - return this._base === base - ? this._limbs - : convert(this._base, base, this._limbs, 0, this._limbs.length); - } - - toString(base = DEFAULT_DISPLAY_BASE) { - if (this.iszero()) return '0'; - - const digits = stringify( - this._base, - base, - this._limbs, - 0, - this._limbs.length, - ); - - return this._is_negative ? '-' + digits : digits; - } - - add(other) { - if (this._is_negative !== other._is_negative) { - return other._is_negative - ? this.sub(other.opposite()) - : other.sub(this.opposite()); - } - - const result_is_negative = this._is_negative; - const r = this._base; - - const a = this._limbs; - - const b = other._limbs_in_base(r); - - const c = _zeros(Math.max(a.length, b.length) + 1); - - add(r, a, 0, a.length, b, 0, b.length, c, 0, c.length); - - return new Integer(r, result_is_negative, c); - } - - iadd(other) { - // TODO optimize but be careful with side effects - return this.add(other).move(this); - } - - addn(number) { - // TODO optimize - return this.add(_from_number(number)); - } - - iaddn(number) { - // TODO optimize but be careful with side effects - return this.addn(number).move(this); - } - - sub(other) { - if (this._is_negative !== other._is_negative) { - return other._is_negative - ? this.add(other.opposite()) - : this.opposite().add(other).opposite(); - } - // /!\ _sub needs |c| >= |a| >= |b| - - const r = this._base; - const a = this._limbs; - const aj = a.length; - const ai = _trim_positive(a, 0, aj); - - if (ai >= aj) return other.opposite(); - - const b = other._limbs_in_base(r); - const bj = b.length; - const bi = _trim_positive(b, 0, bj); - - if (bi >= bj) return this.clone(); - - if (cmp(a, ai, aj, b, bi, bj) < 0) { - const c = _zeros(bj - bi); - - _sub(r, b, bi, bj, a, ai, aj, c, 0, c.length); - - return new Integer(r, ~this._is_negative, c); - } - - const c = _zeros(aj - ai); - - _sub(r, a, ai, aj, b, bi, bj, c, 0, c.length); - - return new Integer(r, this._is_negative, c); - } - - isub(other) { - // TODO optimize but be careful with side effects - return this.sub(other).move(this); - } - - subn(number) { - return this.sub(_from_number(number)); - } - - isubn(number) { - return this.subn(number).move(this); - } - - mul(other) { - const result_is_negative = this._is_negative ^ other._is_negative; - const r = this._base; - - const a = this._limbs; - - const b = other._limbs_in_base(r); - - const c = _zeros(a.length + b.length); - - mul(r, a, 0, a.length, b, 0, b.length, c, 0, c.length); - - return new Integer(r, result_is_negative, c); - } - - imul(other) { - // TODO optimize but be careful with side effects - return this.mul(other).move(this); - } - - muln(number) { - return this.mul(_from_number(number)); - } - - imuln(number) { - return this.muln(number).move(this); - } - - /** - * Computes this raised to the xth power. - * x is a double smaller or equal to 2^53. - * - * @param {Number} x The power to raise this to. - * @return {Integer} this ^ x - */ - pown(x) { - const is_negative = this._is_negative & x & 1 ? -1 : 0; - - const a = this._limbs; - const c = _zeros(Math.max(1, a.length * x)); - - _pow_double(this._base, x, a, 0, a.length, c, 0, c.length); - - return new Integer(this._base, is_negative, c); - } - - pow(other) { - return this.pown(other.valueOf()); - } - - ipow(other) { - // TODO optimize but be careful with side effects - return this.pow(other).move(this); - } - - ipown(number) { - // TODO optimize but be careful with side effects - return this.pown(number).move(this); - } - - square() { - // TODO optimize but be careful with side effects - // TODO use this.mul(this) instead? - return this.pown(2); - } - - isquare() { - // TODO optimize but be careful with side effects - // TODO use this.imul(this) instead? - return this.square().move(this); - } - - div(other) { - return this.divmod(other)[0]; - } - - divn(number) { - return this.div(_from_number(number)); - } - - idiv(other) { - // TODO optimize but be careful with side effects - return this.div(other).move(this); - } - - idivn(number) { - return this.divn(number).move(this); - } - - mod(other) { - return this.divmod(other)[1]; - } - - modn(number) { - return this.mod(_from_number(number)); - } - - imod(other) { - // TODO optimize but be careful with side effects - return this.mod(other).move(this); - } - - imodn(number) { - return this.modn(number).move(this); - } - - divround(other) { - const [q, r] = this.divmod(other); - if (r.ge(other.divn(2).addn(other.iseven() ? 0 : 1))) - increment(q._base, q._limbs, 0, q._limbs.length); - return q; - } - - divmod(other) { - if (other.iszero()) throw new ZeroDivisionError('Integer division by zero'); // Optimize - - const quotient_is_negative = this._is_negative ^ other._is_negative; - const r = this._base; - - // The underlying algorithm does not allow leading 0's so we trim them. - const lj = this._limbs.length; - const li = _trim_positive(this._limbs, 0, lj); - - // Dividend is 0 - if (li >= lj) - return [new Integer(this._base, 0, [0]), new Integer(this._base, 0, [0])]; - - // Dividend (& Remainder) - const D = _alloc(lj - li); - _copy(this._limbs, li, lj, D, 0); - - // Divisor - const d = other._limbs_in_base(r); - const dj = d.length; - const di = _trim_positive(d, 0, dj); // Di < dj because d != 0 - - // Quotient - const q = _zeros(D.length); - - _idivmod(r, D, 0, D.length, d, di, dj, q, 0, q.length); - - const Q = new Integer(r, quotient_is_negative, q); // Quotient - const R = new Integer(r, 0, D); // Remainder - - if ((this._is_negative || other._is_negative) && !jz(D, 0, D.length)) { - if (other._is_negative) { - if (this._is_negative) { - R.negate(); // TODO optimize - } else { - increment(r, q, 0, q.length); - R.iadd(other); // TODO optimize - } - } else { - increment(r, q, 0, q.length); - R.negate().iadd(other); // TODO optimize - } - } - - return [Q, R]; - } - - idivmod(other) { - // TODO optimize but be careful with side effects - const [q, r] = this.divmod(other); - return [q, r.move(this)]; - } - - divmodn(number) { - return this.divmod(_from_number(number)); - } - - idivmodn(number) { - const [q, r] = this.divmodn(number); - return [q, r.move(this)]; - } - - opposite() { - return new Integer(this._base, ~this._is_negative, this._limbs); - } - - negate() { - // TODO optimize but be careful with side effects - return this.opposite().move(this); - } - - abs() { - return this.sign() >= 0 ? this : this.opposite(); - } - - iabs() { - return this.abs().move(this); - } - - sign() { - return this.iszero() ? 0 : this._is_negative ? -1 : 1; - } - - iszero() { - return jz(this._limbs, 0, this._limbs.length); - } - - isone() { - if (this._is_negative) return false; - return eq(this._limbs, 0, this._limbs.length, [1], 0, 1); - } - - isnonzero() { - return !this.iszero(); - } - - isnegative() { - return this._is_negative === -1; - } - - ispositive() { - return this.sign() > 0; - } - - isnonnegative() { - return !this.isnegative(); - } - - isnonpositive() { - return !this.ispositive(); - } - - parity() { - // TODO optimize this, there is a much faster way to test for parity - // when the base is a multiple of two - return this.modn(2); - } - - iseven() { - return this.parity().iszero(); - } - - isodd() { - return !this.iseven(); - } - - bin() { - return this.toString(2); - } - - oct() { - return this.toString(8); - } - - hex() { - return this.toString(16); - } - - toJSON() { - return this.hex(); - } - - digits(base = DEFAULT_DISPLAY_BASE) { - // TODO Once #to is implemented we can rewrite this as - // return this.to(LITTLE_ENDIAN, base, Array) ; - return convert( - this._base, - base, - this._limbs, - 0, - this._limbs.length, - ).reverse(); - } - - bits() { - return this.digits(2); - } - - divides(other) { - return other.mod(this).iszero(); - } - - divide_knowing_divisible_by(other) { - // TODO optimize - return this.div(other); - } - - cmp(other) { - // TODO optimize with _trim_positive - - if (this.iszero()) { - if (other.iszero()) return 0; - if (other._is_negative) return 1; - return -1; - } - - if (this._is_negative < other._is_negative) return -1; - if (this._is_negative > other._is_negative) return 1; - - const a = this._limbs; - const b = other._limbs_in_base(this._base); - - return this._is_negative === 0 - ? cmp(a, 0, a.length, b, 0, b.length) - : cmp(b, 0, b.length, a, 0, a.length); - } - - cmpn(number) { - return this.cmp(_from_number(number)); - } - - eq(other) { - return this.cmp(other) === 0; - } - - eqn(number) { - return this.cmpn(number) === 0; - } - - ge(other) { - return this.cmp(other) >= 0; - } - - gen(number) { - return this.cmpn(number) >= 0; - } - - gt(other) { - return this.cmp(other) > 0; - } - - gtn(number) { - return this.cmpn(number) > 0; - } - - le(other) { - return this.cmp(other) <= 0; - } - - len(number) { - return this.cmpn(number) <= 0; - } - - lt(other) { - return this.cmp(other) < 0; - } - - ltn(number) { - return this.cmpn(number) < 0; - } - - ne(other) { - return this.cmp(other) !== 0; - } - - nen(number) { - return this.cmpn(number) !== 0; - } - - gcd(other) { - const r = this._base; - const a = this._limbs; - const b = other._limbs_in_base(r); - const [d, di, dj] = euclidean_algorithm(r, a, 0, a.length, b, 0, b.length); - const gcd = _alloc(dj - di); - _copy(d, di, dj, gcd, 0); - return new Integer(r, 0, gcd); - } - - egcd(other) { - const r = this._base; - const a = this._limbs; - const b = other._limbs_in_base(r); - const [ - R0, - R0i, - S0, - S0i, - T0, - T0i, - S1, - S1i, - T1, - T1i, - steps, - ] = extended_euclidean_algorithm(r, a, 0, a.length, b, 0, b.length); - const gcd = _alloc(R0.length - R0i); - _copy(R0, R0i, R0.length, gcd, 0); - const x = _alloc(S0.length - S0i); - _copy(S0, S0i, S0.length, x, 0); - const y = _alloc(T0.length - T0i); - _copy(T0, T0i, T0.length, y, 0); - const u = _alloc(S1.length - S1i); - _copy(S1, S1i, S1.length, u, 0); - const v = _alloc(T1.length - T1i); - _copy(T1, T1i, T1.length, v, 0); - return { - // TODO use immutable zero - gcd: new Integer(r, 0, gcd), - x: - x.length > 0 - ? new Integer(r, this._is_negative ^ ((steps % 2) - 1), x) - : new Integer(r, 0, [0]), - y: - y.length > 0 - ? new Integer(r, other._is_negative ^ -(steps % 2), y) - : new Integer(r, 0, [0]), - u: - u.length > 0 - ? new Integer(r, this._is_negative ^ -(steps % 2), u) - : new Integer(r, 0, [0]), - v: - v.length > 0 - ? new Integer(r, other._is_negative ^ ((steps % 2) - 1), v) - : new Integer(r, 0, [0]), - }; - } - - valueOf() { - if (this.gtn(MAX_NUMBER)) - throw new ValueError( - `Cannot call valueOf on Integer larger than ${MAX_NUMBER}. Got ${this.toString()}`, - ); - if (this.ltn(MIN_NUMBER)) - throw new ValueError( - `Cannot call valueOf on Integer smaller than ${MIN_NUMBER}. Got ${this.toString()}`, - ); - - const limbs = convert( - this._base, - MAX_BASE, - this._limbs, - 0, - this._limbs.length, - ); - - const sign = this._is_negative ? -1 : 1; - - const value = - limbs.length === 2 ? limbs[0] * MAX_BASE + limbs[1] : limbs[0]; - - return sign * value; - } - - toNumber() { - return this.valueOf(); - } -} diff --git a/src/IntegerRing.js b/src/IntegerRing.js deleted file mode 100644 index a38d21b..0000000 --- a/src/IntegerRing.js +++ /dev/null @@ -1,130 +0,0 @@ -import {parse, convert} from '@aureooms/js-integer-big-endian'; -import {TypeError, ValueError} from '@aureooms/js-error'; - -import {Integer} from './Integer.js'; -import {DEFAULT_DISPLAY_BASE} from './DEFAULT_DISPLAY_BASE.js'; -import {_from_number} from './_from_number.js'; - -export class IntegerRing { - constructor(name, base) { - this.name = name; - this._base = base; - } - - characteristic() { - return this.$0(); - } - - from(object, base = undefined, is_negative = 0) { - if (object === null || object === undefined) return this.$0(); - - switch (object.constructor.prototype) { - case Number.prototype: - if (base !== undefined) - throw new ValueError( - 'IntegerRing#from: using the base parameter does not make sense when passing a Number.', - ); - return this.from_number(object, is_negative); - - case String.prototype: - if (base === undefined) base = DEFAULT_DISPLAY_BASE; - return this.from_string(object, base, is_negative); - - case Array.prototype: - if (base === undefined) base = this._base; - return this.from_digits(object, base, is_negative); - - case Boolean.prototype: - if (base !== undefined) - throw new ValueError( - 'IntegerRing#from: using the base parameter does not make sense when passing a Boolean.', - ); - return this.from_number(Number(object), is_negative); - - case Integer.prototype: - if (base !== undefined) - throw new ValueError( - 'IntegerRing#from: using the base parameter does not make sense when passing an Integer.', - ); - return new Integer( - object._base, - object._is_negative ^ is_negative, - object._limbs, - ); - - default: - throw new TypeError( - `IntegerRing#from cannot handle ${object.constructor.prototype}`, - ); - } - } - - from_number(number, is_negative = 0) { - const dirty = _from_number(number); - - const limbs = dirty._limbs_in_base(this._base); - - return new Integer(this._base, is_negative ^ dirty._is_negative, limbs); - } - - from_string(string, base = 10, is_negative = 0) { - if (string.length === 0) - throw new ValueError( - 'IntegerRing#from_string cannot parse empty string.', - ); - - if (string[0] === '-') - return this.from_string(string.slice(1), base, ~is_negative); - - if (string[0] === '+') - return this.from_string(string.slice(1), base, is_negative); - - const limbs = parse(base, this._base, string); - - if (limbs.length === 1 && limbs[0] === 0) is_negative = 0; - - return new Integer(this._base, is_negative, limbs); - } - - from_digits(digits, base, is_negative) { - const limbs = convert( - base, - this._base, - digits.slice().reverse(), - 0, - digits.length, - ); - - return new Integer(this._base, is_negative, limbs); - } - - toString() { - return this.name; - } - - $0() { - // TODO Could we use an empty array instead ? - return new Integer(this._base, 0, [0]); - } - - $1() { - return new Integer(this._base, 0, [1]); - } - - $_1() { - return new Integer(this._base, -1, [1]); - } - - has(x) { - if (x instanceof Integer) return true; - return Number.isInteger(x); - } - - min(a, b) { - return a.le(b) ? a : b; - } - - max(a, b) { - return a.ge(b) ? a : b; - } -} diff --git a/src/ZZ.js b/src/ZZ.js deleted file mode 100644 index 5c56a5d..0000000 --- a/src/ZZ.js +++ /dev/null @@ -1,4 +0,0 @@ -import {DEFAULT_REPRESENTATION_BASE} from './DEFAULT_REPRESENTATION_BASE.js'; -import {IntegerRing} from './IntegerRing.js'; - -export const ZZ = new IntegerRing('Integer Ring', DEFAULT_REPRESENTATION_BASE); diff --git a/src/ZeroDivisionError.js b/src/ZeroDivisionError.js deleted file mode 100644 index adc082a..0000000 --- a/src/ZeroDivisionError.js +++ /dev/null @@ -1,5 +0,0 @@ -export class ZeroDivisionError extends Error { - toString() { - return `ZeroDivisionError: ${this.message}`; - } -} diff --git a/src/_from_number.js b/src/_from_number.js deleted file mode 100644 index a6659db..0000000 --- a/src/_from_number.js +++ /dev/null @@ -1,10 +0,0 @@ -import {Integer} from './Integer.js'; -import {MAX_BASE} from './_limits.js'; - -export function _from_number(number) { - const x = number >= 0 ? number : -number; - const is_negative = number >= 0 ? 0 : -1; - return x < MAX_BASE - ? new Integer(MAX_BASE, is_negative, [x]) - : new Integer(MAX_BASE, is_negative, [(x / MAX_BASE) | 0, x % MAX_BASE]); -} diff --git a/src/_limits.js b/src/_limits.js deleted file mode 100644 index 73a2b53..0000000 --- a/src/_limits.js +++ /dev/null @@ -1,4 +0,0 @@ -export const MAX_NUMBER = Number.MAX_SAFE_INTEGER; -export const MIN_NUMBER = Number.MIN_SAFE_INTEGER; -export const MIN_BASE = 2; -export const MAX_BASE = Math.floor(Math.sqrt(MAX_NUMBER + 1)) | 0; diff --git a/src/index.js b/src/index.js deleted file mode 100644 index 52e282a..0000000 --- a/src/index.js +++ /dev/null @@ -1,8 +0,0 @@ -export * from './DEFAULT_DISPLAY_BASE.js'; -export * from './DEFAULT_REPRESENTATION_BASE.js'; -export * from './Integer.js'; -export * from './IntegerRing.js'; -export * from './ZZ.js'; -export * from './ZeroDivisionError.js'; -export * from './integer.js'; -export * from './_limits.js'; diff --git a/src/integer.js b/src/integer.js deleted file mode 100644 index 0e52ff7..0000000 --- a/src/integer.js +++ /dev/null @@ -1,134 +0,0 @@ -import {DEFAULT_DISPLAY_BASE} from './DEFAULT_DISPLAY_BASE.js'; -import {ZZ} from './ZZ.js'; - -export function $0() { - return ZZ.$0(); -} - -export function $1() { - return ZZ.$1(); -} - -export function $_1() { - return ZZ.$_1(); -} - -export function parse(object, base = undefined, is_negative = 0) { - return ZZ.from(object, base, is_negative); -} - -export function stringify(integer, base = DEFAULT_DISPLAY_BASE) { - return integer.toString(base); -} - -export function add(first, second) { - return first.add(second); -} - -export function iadd(first, second) { - return first.iadd(second); -} - -export function sub(first, second) { - return first.sub(second); -} - -export function isub(first, second) { - return first.isub(second); -} - -export function mul(first, second) { - return first.mul(second); -} - -export function imul(first, second) { - return first.imul(second); -} - -export function pow(first, second) { - return first.pow(second); -} - -export function ipow(first, second) { - return first.ipow(second); -} - -export function div(first, second) { - return first.div(second); -} - -export function idiv(first, second) { - return first.idiv(second); -} - -export function mod(first, second) { - return first.mod(second); -} - -export function imod(first, second) { - return first.imod(second); -} - -export function divmod(first, second) { - return first.divmod(second); -} - -export function idivmod(first, second) { - return first.idivmod(second); -} - -export function addn(first, second) { - return first.addn(second); -} - -export function iaddn(first, second) { - return first.iaddn(second); -} - -export function subn(first, second) { - return first.subn(second); -} - -export function isubn(first, second) { - return first.isubn(second); -} - -export function muln(first, second) { - return first.muln(second); -} - -export function imuln(first, second) { - return first.imuln(second); -} - -export function pown(first, second) { - return first.pown(second); -} - -export function ipown(first, second) { - return first.ipown(second); -} - -export function divn(first, second) { - return first.divn(second); -} - -export function idivn(first, second) { - return first.idivn(second); -} - -export function modn(first, second) { - return first.modn(second); -} - -export function imodn(first, second) { - return first.imodn(second); -} - -export function divmodn(first, second) { - return first.divmodn(second); -} - -export function idivmodn(first, second) { - return first.idivmodn(second); -} diff --git a/test/generate.py b/test/generate.py deleted file mode 100644 index a56b608..0000000 --- a/test/generate.py +++ /dev/null @@ -1,198 +0,0 @@ -from math import ceil -from math import sqrt - -MAX_NUMBER = 2**53 - 1 -MIN_NUMBER = -2**53 - -LARGEST_BASE = ceil(sqrt(MAX_NUMBER)) -LARGEST_LIMB = LARGEST_BASE - 1 - -print('MAX_NUMBER', MAX_NUMBER) -print('MIN_NUMBER', MIN_NUMBER) -print('LARGEST_BASE', LARGEST_BASE) -print('LARGEST_LIMB', LARGEST_LIMB) - -assert(LARGEST_LIMB ** 2 < MAX_NUMBER) - -hugenumbers = sorted([ - LARGEST_LIMB , - LARGEST_BASE , - 91**7 , - 2**30 , - 3**50 , -]) - -smallnumbers = sorted([ 1 , 3 , 7 , 9 , 11 , 17 , 22 , 24 , 27 , 29 , 1234 , 5678 ]) - -zero = [0] - -arithmetic = { - 'add' : { - 'numbers' : zero + smallnumbers + hugenumbers , - 'apply' : lambda a,b: (a+b,) , - 'str' : '+' - } , - 'sub' : { - 'numbers' : zero + smallnumbers + hugenumbers , - 'apply' : lambda a,b: (a-b,) , - 'str' : '-' - } , - 'mul' : { - 'numbers' : zero + smallnumbers + hugenumbers , - 'apply' : lambda a,b: (a*b,) , - 'str' : '*' - } , - 'pow' : { - 'left' : zero + smallnumbers + hugenumbers , - 'right' : zero + smallnumbers , - 'apply' : lambda a,b: (a**b,) , - 'str' : '^' - } , - 'div' : { - 'left' : zero + smallnumbers + hugenumbers , - 'right' : smallnumbers + hugenumbers , - 'apply' : lambda a,b: (a//b,) , - 'str' : '/' - } , - 'mod' : { - 'left' : zero + smallnumbers + hugenumbers , - 'right' : smallnumbers + hugenumbers , - 'apply' : lambda a,b: (a%b,) , - 'str' : '%' - } , - 'divmod' : { - 'left' : zero + smallnumbers + hugenumbers , - 'right' : smallnumbers + hugenumbers , - 'apply' : lambda a, b: (a // b, a % b) , - 'str' : '/%' - } , -} - -def write ( f , left, right , name , t , ispow = False , isn = False , isi = False) : - - outputsize = 2 if 'divmod' in name else 1 - - f.write("import test from 'ava' ;\n") - f.write("import {{ parse , stringify , {} }} from '../../../../src' ;\n\n".format(name)) - - f.write("const fmt = x => x.length <= 40 ? x : x.slice(0,19) + '..' + x.slice(-19);\n\n") - - if outputsize == 2 : - - if isn : - - f.write("""function macro ( t , A , B , C , D ) {{ - const a = parse( A ) ; - const [c, d] = {}( a , B ) ; - t.is( stringify( a ) , {} ) ; - t.is( stringify( c ) , C ) ; - t.is( stringify( d ) , D ) ; -}}\n\n""".format( name , 'D' if isi else 'A' ) ) - - else: - - f.write("""function macro ( t , A , B , C , D ) {{ - const a = parse( A ) ; - const b = parse( B ) ; - const [c, d] = {}( a , b ) ; - t.is( stringify( a ) , {} ) ; - t.is( stringify( b ) , B ) ; - t.is( stringify( c ) , C ) ; - t.is( stringify( d ) , D ) ; -}}\n\n""".format( name , 'D' if isi else 'A' ) ) - - else : - - if isn : - - f.write("""function macro ( t , A , B , C ) {{ - const a = parse( A ) ; - const c = {}( a , B ) ; - t.is( stringify( a ) , {} ) ; - t.is( stringify( c ) , C ) ; -}}\n\n""".format( name , 'C' if isi else 'A' ) ) - - else: - - f.write("""function macro ( t , A , B , C ) {{ - const a = parse( A ) ; - const b = parse( B ) ; - const c = {}( a , b ) ; - t.is( stringify( a ) , {} ) ; - t.is( stringify( b ) , B ) ; - t.is( stringify( c ) , C ) ; -}}\n\n""".format( name , 'C' if isi else 'A' ) ) - - - if outputsize == 2 : - - if isn: - f.write("macro.title = ( _ , A , B , C , D ) => `{}(${{fmt(A)}},${{B}}) = [${{fmt(C)}},${{fmt(D)}}]` ;\n\n".format(name)) - LINE = "test( macro , '{}' , {} , '{}' , '{}' ) ;\n" - else: - f.write("macro.title = ( _ , A , B , C , D ) => `{}(${{fmt(A)}},${{fmt(B)}}) = [${{fmt(C)}},${{fmt(D)}}]` ;\n\n".format(name)) - LINE = "test( macro , '{}' , '{}' , '{}' , '{}' ) ;\n" - - else: - - if isn: - f.write("macro.title = ( _ , A , B , C ) => `{}(${{fmt(A)}},${{B}}) = ${{fmt(C)}}` ;\n\n".format(name)) - LINE = "test( macro , '{}' , {} , '{}' ) ;\n" - else: - f.write("macro.title = ( _ , A , B , C ) => `{}(${{fmt(A)}},${{fmt(B)}}) = ${{fmt(C)}}` ;\n\n".format(name)) - LINE = "test( macro , '{}' , '{}' , '{}' ) ;\n" - - for a in left : - - for b in right : - - x = a - y = b - c = t( x , y ) - if not isn or MIN_NUMBER <= y <= MAX_NUMBER: - f.write(LINE.format(x,y,*c)) - - if a != 0: - x = -a - y = b - c = t( x , y ) - if not isn or MIN_NUMBER <= y <= MAX_NUMBER: - f.write(LINE.format(x,y,*c)) - - if not ispow: - - if b != 0: - x = a - y = -b - c = t( x , y ) - if not isn or MIN_NUMBER <= y <= MAX_NUMBER: - f.write(LINE.format(x,y,*c)) - - if a != 0: - x = -a - y = -b - c = t( x , y ) - if not isn or MIN_NUMBER <= y <= MAX_NUMBER: - f.write(LINE.format(x,y,*c)) - -def open_and_write ( opname , t , left , right , **kwargs ) : - with open( 'test/src/integer/arithmetic/{}.js'.format(opname) , 'w' ) as f : - write( f , left , right , opname , t , **kwargs ) - -for name , op in arithmetic.items(): - - t = op['apply'] - - left = op.get('left', op.get('numbers')) - right = op.get('right', op.get('numbers')) - - ispow = name == 'pow' - - # standard op - open_and_write( name , t , left , right , ispow = ispow ) - # in-place op - open_and_write( 'i' + name , t , left , right , isi = True , ispow = ispow ) - # standard op with number arg - open_and_write( name + 'n' , t , left , right , isn = True , ispow = ispow ) - # in-place op with number arg - open_and_write( 'i' + name + 'n' , t , left , right , isi = True , isn = True , ispow = ispow ) diff --git a/test/src/Integer/abs.js b/test/src/Integer/abs.js deleted file mode 100644 index c9c8f7a..0000000 --- a/test/src/Integer/abs.js +++ /dev/null @@ -1,18 +0,0 @@ -import test from 'ava'; -import {ZZ} from '../../../src/index.js'; - -function macro(t, x) { - t.is(x.toString().replace(/-/, ''), ZZ.from(x).iabs().toString()); -} - -macro.title = (providedTitle, x) => `${x}^2 = ${x * x}`; - -test(macro, -1); -test(macro, 0); -test(macro, 1); -test(macro, 2); -test(macro, 777); -test(macro, -17321983); - -test(macro, '-729482732476982648726149821745982176489127458124719264742194'); -test(macro, '62393657923765943267853265893279658365'); diff --git a/test/src/Integer/arithmetic.js b/test/src/Integer/arithmetic.js deleted file mode 100644 index a395980..0000000 --- a/test/src/Integer/arithmetic.js +++ /dev/null @@ -1,290 +0,0 @@ -import test from 'ava'; - -import {ZZ, ZeroDivisionError} from '../../../src/index.js'; - -test('simple operations with 12 and 20', (t) => { - const a = ZZ.from(12); - const b = ZZ.from(20); - - t.is(a.add(b).toString(), '32'); - t.is(b.add(a).toString(), '32'); - - t.is(a.sub(b).toString(), '-8'); - t.is(b.sub(a).toString(), '8'); - - t.is(a.mul(b).toString(), '240'); - t.is(b.mul(a).toString(), '240'); - - t.is(a.div(b).toString(), '0'); - t.is(b.div(a).toString(), '1'); - - t.is(a.mod(b).toString(), '12'); - t.is(b.mod(a).toString(), '8'); -}); - -test('simple operations with -12 and -20', (t) => { - const a = ZZ.from(-12); - const b = ZZ.from(-20); - - t.is(a.add(b).toString(), '-32'); - t.is(b.add(a).toString(), '-32'); - - t.is(a.sub(b).toString(), '8'); - t.is(b.sub(a).toString(), '-8'); - - t.is(a.mul(b).toString(), '240'); - t.is(b.mul(a).toString(), '240'); - - t.is(a.div(b).toString(), '0'); - t.is(b.div(a).toString(), '1'); - - t.is(a.mod(b).toString(), '-12'); - t.is(b.mod(a).toString(), '-8'); -}); - -test('simple operations with 12 and -20', (t) => { - const a = ZZ.from(12); - const b = ZZ.from(-20); - - t.is(a.add(b).toString(), '-8'); - t.is(b.add(a).toString(), '-8'); - - t.is(a.sub(b).toString(), '32'); - t.is(b.sub(a).toString(), '-32'); - - t.is(a.mul(b).toString(), '-240'); - t.is(b.mul(a).toString(), '-240'); - - t.is(a.div(b).toString(), '-1'); - t.is(b.div(a).toString(), '-2'); - - t.is(a.mod(b).toString(), '-8'); - t.is(b.mod(a).toString(), '4'); -}); - -test('simple operations with -12 and 20', (t) => { - const a = ZZ.from(-12); - const b = ZZ.from(20); - - t.is(a.add(b).toString(), '8'); - t.is(b.add(a).toString(), '8'); - - t.is(a.sub(b).toString(), '-32'); - t.is(b.sub(a).toString(), '32'); - - t.is(a.mul(b).toString(), '-240'); - t.is(b.mul(a).toString(), '-240'); - - t.is(a.div(b).toString(), '-1'); - t.is(b.div(a).toString(), '-2'); - - t.is(a.mod(b).toString(), '8'); - t.is(b.mod(a).toString(), '-4'); -}); - -test('multiply two large numbers', (t) => { - const a = ZZ.from('2983928392839289387'); - const b = ZZ.from('-302940923028393'); - - t.is(a.mul(b).toString(), '-903954021577363596419770144565091'); -}); - -test('simple in-place operations with 12 and 20', (t) => { - const a = ZZ.from(12); - const b = ZZ.from(20); - - t.is(a.iadd(b).toString(), '32'); - t.is(b.iadd(a).toString(), '52'); - - t.is(a.isub(b).toString(), '-20'); - t.is(b.isub(a).toString(), '72'); - - t.is(a.imul(b).toString(), '-1440'); - t.is(b.imul(a).toString(), '-103680'); - - t.is(a.idiv(b).toString(), '0'); - t.throws(() => b.idiv(a).toString(), {instanceOf: ZeroDivisionError}); - - t.is(a.imod(b).toString(), '0'); - t.throws(() => b.imod(a).toString(), {instanceOf: ZeroDivisionError}); -}); - -test('simple in-place operations with -12 and -20', (t) => { - const a = ZZ.from(-12); - const b = ZZ.from(-20); - - t.is(a.iadd(b).toString(), '-32'); - t.is(b.iadd(a).toString(), '-52'); - - t.is(a.isub(b).toString(), '20'); - t.is(b.isub(a).toString(), '-72'); - - t.is(a.imul(b).toString(), '-1440'); - t.is(b.imul(a).toString(), '103680'); - - t.is(a.idiv(b).toString(), '-1'); - t.is(b.idiv(a).toString(), '-103680'); - - t.is(a.imod(b).toString(), '-1'); - t.is(b.imod(a).toString(), '0'); -}); - -test('simple in-place operations with 12 and -20', (t) => { - const a = ZZ.from(12); - const b = ZZ.from(-20); - - t.is(a.iadd(b).toString(), '-8'); - t.is(b.iadd(a).toString(), '-28'); - - t.is(a.isub(b).toString(), '20'); - t.is(b.isub(a).toString(), '-48'); - - t.is(a.imul(b).toString(), '-960'); - t.is(b.imul(a).toString(), '46080'); - - t.is(a.idiv(b).toString(), '-1'); - t.is(b.idiv(a).toString(), '-46080'); - - t.is(a.imod(b).toString(), '-1'); - t.is(b.imod(a).toString(), '0'); -}); - -test('simple in-place operations with -12 and 20', (t) => { - const a = ZZ.from(-12); - const b = ZZ.from(20); - - t.is(a.iadd(b).toString(), '8'); - t.is(b.iadd(a).toString(), '28'); - - t.is(a.isub(b).toString(), '-20'); - t.is(b.isub(a).toString(), '48'); - - t.is(a.imul(b).toString(), '-960'); - t.is(b.imul(a).toString(), '-46080'); - - t.is(a.idiv(b).toString(), '0'); - t.throws(() => b.idiv(a).toString(), {instanceOf: ZeroDivisionError}); - - t.is(a.imod(b).toString(), '0'); - t.throws(() => b.imod(a).toString(), {instanceOf: ZeroDivisionError}); -}); - -test('multiply two large numbers in-place', (t) => { - const A = '2983928392839289387'; - const B = '-302940923028393'; - - const a = ZZ.from(A); - const b = ZZ.from(B); - - t.is(a.imul(b).toString(), '-903954021577363596419770144565091'); - t.is(a.toString(), '-903954021577363596419770144565091'); - t.is(b.toString(), B); -}); - -test('add and subtract with 0', (t) => { - const a = ZZ.from('9999999999999999', 10); - const b = ZZ.$0(); - - t.is(a.sub(b).toString(10), '9999999999999999'); - t.is(a.sub(a).toString(10), '0'); - t.is(b.sub(a).toString(10), '-9999999999999999'); - t.is(b.sub(b).toString(10), '0'); -}); - -test('catch ZeroDivisionError', (t) => { - t.plan(1); - - try { - ZZ.$1().div(ZZ.$0()); - } catch (error) { - t.is(error.toString().slice(0, 17), 'ZeroDivisionError'); - } -}); - -test('simple in-place operations with 12 and 20 ', (t) => { - const a = ZZ.from(12); - const b = ZZ.from(20); - - t.is(a.iaddn(b.valueOf()).toString(), '32'); - t.is(b.iaddn(a.valueOf()).toString(), '52'); - - t.is(a.isubn(b.valueOf()).toString(), '-20'); - t.is(b.isubn(a.valueOf()).toString(), '72'); - - t.is(a.imuln(b.valueOf()).toString(), '-1440'); - t.is(b.imuln(a.valueOf()).toString(), '-103680'); - - t.is(a.idivn(b.valueOf()).toString(), '0'); - t.throws(() => b.idivn(a.valueOf()).toString(), { - instanceOf: ZeroDivisionError, - }); - - t.is(a.imodn(b).toString(), '0'); - t.throws(() => b.imodn(a.valueOf()).toString(), { - instanceOf: ZeroDivisionError, - }); -}); - -test('simple in-place operations with -12 and -20 ', (t) => { - const a = ZZ.from(-12); - const b = ZZ.from(-20); - - t.is(a.iaddn(b.valueOf()).toString(), '-32'); - t.is(b.iaddn(a.valueOf()).toString(), '-52'); - - t.is(a.isubn(b.valueOf()).toString(), '20'); - t.is(b.isubn(a.valueOf()).toString(), '-72'); - - t.is(a.imuln(b.valueOf()).toString(), '-1440'); - t.is(b.imuln(a.valueOf()).toString(), '103680'); - - t.is(a.idivn(b.valueOf()).toString(), '-1'); - t.is(b.idivn(a.valueOf()).toString(), '-103680'); - - t.is(a.imodn(b.valueOf()).toString(), '-1'); - t.is(b.imodn(a.valueOf()).toString(), '0'); -}); - -test('simple in-place operations with 12 and -20 ', (t) => { - const a = ZZ.from(12); - const b = ZZ.from(-20); - - t.is(a.iaddn(b.valueOf()).toString(), '-8'); - t.is(b.iaddn(a.valueOf()).toString(), '-28'); - - t.is(a.isubn(b.valueOf()).toString(), '20'); - t.is(b.isubn(a.valueOf()).toString(), '-48'); - - t.is(a.imuln(b.valueOf()).toString(), '-960'); - t.is(b.imuln(a.valueOf()).toString(), '46080'); - - t.is(a.idivn(b.valueOf()).toString(), '-1'); - t.is(b.idivn(a.valueOf()).toString(), '-46080'); - - t.is(a.imodn(b.valueOf()).toString(), '-1'); - t.is(b.imodn(a.valueOf()).toString(), '0'); -}); - -test('simple in-place operations with -12 and 20 ', (t) => { - const a = ZZ.from(-12); - const b = ZZ.from(20); - - t.is(a.iaddn(b.valueOf()).toString(), '8'); - t.is(b.iaddn(a.valueOf()).toString(), '28'); - - t.is(a.isubn(b.valueOf()).toString(), '-20'); - t.is(b.isubn(a.valueOf()).toString(), '48'); - - t.is(a.imuln(b.valueOf()).toString(), '-960'); - t.is(b.imuln(a.valueOf()).toString(), '-46080'); - - t.is(a.idivn(b.valueOf()).toString(), '0'); - t.throws(() => b.idivn(a.valueOf()).toString(), { - instanceOf: ZeroDivisionError, - }); - - t.is(a.imodn(b.valueOf()).toString(), '0'); - t.throws(() => b.imodn(a.valueOf()).toString(), { - instanceOf: ZeroDivisionError, - }); -}); diff --git a/test/src/Integer/clone.js b/test/src/Integer/clone.js deleted file mode 100644 index 7abc92b..0000000 --- a/test/src/Integer/clone.js +++ /dev/null @@ -1,27 +0,0 @@ -import test from 'ava'; -import {ZZ} from '../../../src/index.js'; - -test('Integer#copy', (t) => { - const s = '34998403804830'; - - const a = ZZ.from(s); - const b = a.clone(); - - t.is(a.toString(), s); - t.is(b.toString(), s); - - a.negate(); - - t.is(a.toString(), '-' + s); - t.is(b.toString(), s); - - a.isub(a); - - t.is(a.toString(), '0'); - t.is(b.toString(), s); - - a.iadd(b); - - t.is(a.toString(), s); - t.is(b.toString(), s); -}); diff --git a/test/src/Integer/compare.js b/test/src/Integer/compare.js deleted file mode 100644 index 484597d..0000000 --- a/test/src/Integer/compare.js +++ /dev/null @@ -1,14 +0,0 @@ -import test from 'ava'; - -import {ZZ} from '../../../src/index.js'; - -test('compare', (t) => { - t.is(ZZ.from(-1).cmpn(1), -1); - t.true(ZZ.from(-1).ltn(1)); - t.true(ZZ.from(-1).gtn(-2)); - t.true(ZZ.from(-1).len(1)); - t.true(ZZ.from(-1).len(-1)); - t.true(ZZ.from(7).gen(3)); - t.true(ZZ.from(13).eqn(13)); - t.true(ZZ.from(13).nen(14)); -}); diff --git a/test/src/Integer/digits.js b/test/src/Integer/digits.js deleted file mode 100644 index 42b7c2b..0000000 --- a/test/src/Integer/digits.js +++ /dev/null @@ -1,176 +0,0 @@ -import test from 'ava'; - -import {ZZ} from '../../../src/index.js'; - -test('ZZ.from(3).pow(50).digits()', (t) => { - t.deepEqual(ZZ.from(3).pow(50).digits(), [ - 9, - 4, - 2, - 0, - 7, - 7, - 8, - 8, - 5, - 2, - 5, - 8, - 1, - 9, - 6, - 7, - 8, - 9, - 7, - 9, - 8, - 7, - 1, - 7, - ]); -}); - -test('ZZ.from(3).pow(50).bits()', (t) => { - t.deepEqual(ZZ.from(3).pow(50).bits(), [ - 1, - 0, - 0, - 1, - 0, - 0, - 1, - 1, - 1, - 1, - 0, - 0, - 0, - 1, - 1, - 1, - 1, - 0, - 1, - 1, - 1, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 1, - 0, - 1, - 0, - 0, - 1, - 1, - 0, - 1, - 1, - 0, - 1, - 1, - 0, - 0, - 0, - 0, - 1, - 1, - 1, - 1, - 1, - 1, - 0, - 0, - 1, - 0, - 1, - 0, - 1, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - 0, - 0, - 1, - ]); -}); - -test('ZZ.from(3).pow(50).digits(8)', (t) => { - t.deepEqual(ZZ.from(3).pow(50).digits(8), [ - 1, - 1, - 7, - 1, - 6, - 3, - 7, - 4, - 0, - 2, - 7, - 7, - 2, - 6, - 6, - 6, - 0, - 6, - 7, - 1, - 5, - 2, - 1, - 0, - 0, - 3, - 2, - ]); -}); - -test('ZZ.from(3).pow(50).digits(16)', (t) => { - t.deepEqual(ZZ.from(3).pow(50).digits(16), [ - 9, - 12, - 3, - 14, - 13, - 9, - 0, - 13, - 15, - 2, - 11, - 13, - 0, - 15, - 3, - 5, - 5, - 0, - 8, - 9, - ]); -}); - -// TODO test side effects of computing digits in an other base diff --git a/test/src/Integer/divide_knowing_divisible_by.js b/test/src/Integer/divide_knowing_divisible_by.js deleted file mode 100644 index 44d2d44..0000000 --- a/test/src/Integer/divide_knowing_divisible_by.js +++ /dev/null @@ -1,50 +0,0 @@ -import test from 'ava'; - -import {ZZ} from '../../../src/index.js'; - -function macro(t, a, b, q) { - const A = ZZ.from(a); - const B = ZZ.from(b); - const Q = A.divide_knowing_divisible_by(B); - - t.is(q.toString(), Q.toString()); - t.is(a.toString(), A.toString()); - t.is(b.toString(), B.toString()); -} - -macro.title = (providedTitle, a, b, q) => - providedTitle || `${a} divide_knowing_divisible_by ${b} = ${q}`; - -test(macro, 3, 1, 3); -test(macro, '123', 3, 41); -test(macro, 15, 5, 3); -test(macro, 17, 17, 1); -test(macro, 18, 6, 3); - -test( - macro, - '-7244741064308655582166346607524458070674504593046523339005489416933659838435253944103203222937740081100645849', - '10633823966279326983230456482242756607', - '-681292175541205709486531011694243236571309860372760091522256581907552807', -); - -test( - macro, - '-7244741064308655582166346607524458070674504593046523339005489416933659838435253944103203222937740081100645849', - '-681292175541205709486531011694243236571309860372760091522256581907552807', - '10633823966279326983230456482242756607', -); - -test( - macro, - '7244741064308655582166346607524458070674504593046523339005489416933659838435253944103203222937740081100645849', - '-10633823966279326983230456482242756607', - '-681292175541205709486531011694243236571309860372760091522256581907552807', -); - -test( - macro, - '7244741064308655582166346607524458070674504593046523339005489416933659838435253944103203222937740081100645849', - '-681292175541205709486531011694243236571309860372760091522256581907552807', - '-10633823966279326983230456482242756607', -); diff --git a/test/src/Integer/divides.js b/test/src/Integer/divides.js deleted file mode 100644 index becd7a6..0000000 --- a/test/src/Integer/divides.js +++ /dev/null @@ -1,23 +0,0 @@ -import test from 'ava'; -import {ZZ, ZeroDivisionError} from '../../../src/index.js'; - -function macro(t, a, b, expected) { - t.is(expected, ZZ.from(a).divides(ZZ.from(b))); -} - -macro.title = (providedTitle, a, b, expected) => - expected ? `${a} divides ${b}` : `${a} does not divide ${b}`; - -test('zero.divides(x) throws', (t) => { - t.throws(() => ZZ.$0().divides(ZZ.from(1)), {instanceOf: ZeroDivisionError}); -}); - -test(macro, 2, 4, true); -test(macro, 7, 14, true); -test(macro, 1, '290843274237498327402783497239472937493274092479327', true); -test(macro, -1, '290843274237498327402783497239472937493274092479327', true); -test(macro, 1, '-290843274237498327402783497239472937493274092479327', true); -test(macro, -1, '-290843274237498327402783497239472937493274092479327', true); - -test(macro, 2, 3, false); -test(macro, 4, 2, false); diff --git a/test/src/Integer/divmod.js b/test/src/Integer/divmod.js deleted file mode 100644 index aa6f7c1..0000000 --- a/test/src/Integer/divmod.js +++ /dev/null @@ -1,31 +0,0 @@ -import test from 'ava'; - -import {ZZ, ZeroDivisionError} from '../../../src/index.js'; - -function macro(t, a, b, q, r) { - const A = ZZ.from(a); - const B = ZZ.from(b); - const [Q, R] = A.idivmod(B); - - t.is(q.toString(), Q.toString()); - t.is(r.toString(), R.toString()); - t.is(r.toString(), A.toString()); -} - -macro.title = (providedTitle, a, b, q, r) => `${a} idivmod ${b} = [${q}, ${r}]`; - -test('x.idivmod(0) throws', (t) => { - t.throws(() => ZZ.from(-123).idivmod(ZZ.from(0)), { - instanceOf: ZeroDivisionError, - }); -}); - -test(macro, 3, 2, 1, 1); -test(macro, '123', 2, 61, 1); -test(macro, 15, 7, 2, 1); -test(macro, 17, 7, 2, 3); -test(macro, 18, 7, 2, 4); -test(macro, 20, 7, 2, 6); -test(macro, 21, 7, 3, 0); -test(macro, 22, 7, 3, 1); -test(macro, 27, 7, 3, 6); diff --git a/test/src/Integer/divround.js b/test/src/Integer/divround.js deleted file mode 100644 index 7fd96f6..0000000 --- a/test/src/Integer/divround.js +++ /dev/null @@ -1,26 +0,0 @@ -import test from 'ava'; - -import {ZZ, ZeroDivisionError} from '../../../src/index.js'; - -function macro(t, a, b, expected) { - t.is(expected.toString(), ZZ.from(a).divround(ZZ.from(b)).toString()); -} - -macro.title = (providedTitle, a, b, expected) => - `${a} divround ${b} = ${expected}`; - -test('x.divround(0) throws', (t) => { - t.throws(() => ZZ.from(-123).divround(ZZ.from(0)), { - instanceOf: ZeroDivisionError, - }); -}); - -test(macro, 3, 2, 2); -test(macro, '123', 2, 62); -test(macro, 15, 7, 2); -test(macro, 17, 7, 2); -test(macro, 18, 7, 3); -test(macro, 20, 7, 3); -test(macro, 21, 7, 3); -test(macro, 22, 7, 3); -test(macro, 27, 7, 4); diff --git a/test/src/Integer/egcd.js b/test/src/Integer/egcd.js deleted file mode 100644 index a1bf317..0000000 --- a/test/src/Integer/egcd.js +++ /dev/null @@ -1,423 +0,0 @@ -import test from 'ava'; - -import {ZZ} from '../../../src/index.js'; - -function macro(t, a, b, expected) { - const {gcd, x, y, u, v} = a.egcd(b); - - t.deepEqual( - { - gcd: expected.gcd.toString(), - x: expected.x.toString(), - y: expected.y.toString(), - u: expected.u.toString(), - v: expected.v.toString(), - }, - { - gcd: gcd.toString(), - x: x.toString(), - y: y.toString(), - u: u.toString(), - v: v.toString(), - }, - ); - - t.true(a.mul(x).add(b.mul(y)).eq(gcd)); - t.true(a.mul(u).add(b.mul(v)).iszero()); -} - -macro.title = (providedTitle, a, b, {gcd, x, y, u, v}) => - `egcd(${a.toString()},${b.toString()}) = ${gcd.toString()} = ${x.toString()} * ${a.toString()} + ${y.toString()} * ${b.toString()} AND ${u.toString()} * ${a.toString()} + ${v.toString()} * ${b.toString()} = 0`; - -test(macro, ZZ.$0(), ZZ.$0(), { - gcd: ZZ.$0(), - x: ZZ.$1(), - y: ZZ.$0(), - u: ZZ.$0(), - v: ZZ.$1(), -}); - -test(macro, ZZ.$1(), ZZ.$0(), { - gcd: ZZ.$1(), - x: ZZ.$1(), - y: ZZ.$0(), - u: ZZ.$0(), - v: ZZ.$1(), -}); - -test(macro, ZZ.$_1(), ZZ.$0(), { - gcd: ZZ.$1(), - x: ZZ.$_1(), - y: ZZ.$0(), - u: ZZ.$0(), - v: ZZ.$1(), -}); - -test(macro, ZZ.$0(), ZZ.$1(), { - gcd: ZZ.$1(), - x: ZZ.$0(), - y: ZZ.$1(), - u: ZZ.$1(), - v: ZZ.$0(), -}); - -test(macro, ZZ.$1(), ZZ.$1(), { - gcd: ZZ.$1(), - x: ZZ.$0(), - y: ZZ.$1(), - u: ZZ.$1(), - v: ZZ.$_1(), -}); - -test(macro, ZZ.$1(), ZZ.$_1(), { - gcd: ZZ.$1(), - x: ZZ.$0(), - y: ZZ.$_1(), - u: ZZ.$1(), - v: ZZ.$1(), -}); - -test(macro, ZZ.$_1(), ZZ.$1(), { - gcd: ZZ.$1(), - x: ZZ.$0(), - y: ZZ.$1(), - u: ZZ.$_1(), - v: ZZ.$_1(), -}); - -test(macro, ZZ.$_1(), ZZ.$_1(), { - gcd: ZZ.$1(), - x: ZZ.$0(), - y: ZZ.$_1(), - u: ZZ.$_1(), - v: ZZ.$1(), -}); - -test(macro, ZZ.from(2), ZZ.from(2), { - gcd: ZZ.from(2), - x: ZZ.$0(), - y: ZZ.$1(), - u: ZZ.$1(), - v: ZZ.$_1(), -}); - -test(macro, ZZ.from(2), ZZ.from(3), { - gcd: ZZ.$1(), - x: ZZ.$_1(), - y: ZZ.$1(), - u: ZZ.from(3), - v: ZZ.from(-2), -}); - -test(macro, ZZ.from(3), ZZ.from(4), { - gcd: ZZ.$1(), - x: ZZ.$_1(), - y: ZZ.$1(), - u: ZZ.from(4), - v: ZZ.from(-3), -}); - -test(macro, ZZ.from(2), ZZ.from(4), { - gcd: ZZ.from(2), - x: ZZ.$1(), - y: ZZ.$0(), - u: ZZ.from(-2), - v: ZZ.from(1), -}); - -test(macro, ZZ.from(73218321), ZZ.from(73218321), { - gcd: ZZ.from(73218321), - x: ZZ.$0(), - y: ZZ.$1(), - u: ZZ.$1(), - v: ZZ.$_1(), -}); - -test(macro, ZZ.from('240'), ZZ.from('46'), { - gcd: ZZ.from('2'), - x: ZZ.from('-9'), - y: ZZ.from('47'), - u: ZZ.from('23'), - v: ZZ.from('-120'), -}); - -test(macro, ZZ.from('999'), ZZ.from('1'), { - gcd: ZZ.from('1'), - x: ZZ.from('0'), - y: ZZ.from('1'), - u: ZZ.from('1'), - v: ZZ.from('-999'), -}); - -test(macro, ZZ.from('999'), ZZ.from('2'), { - gcd: ZZ.from('1'), - x: ZZ.from('1'), - y: ZZ.from('-499'), - u: ZZ.from('-2'), - v: ZZ.from('999'), -}); - -test(macro, ZZ.from('999'), ZZ.from('3'), { - gcd: ZZ.from('3'), - x: ZZ.from('0'), - y: ZZ.from('1'), - u: ZZ.from('1'), - v: ZZ.from('-333'), -}); - -test(macro, ZZ.from('999'), ZZ.from('4'), { - gcd: ZZ.from('1'), - x: ZZ.from('-1'), - y: ZZ.from('250'), - u: ZZ.from('4'), - v: ZZ.from('-999'), -}); - -test(macro, ZZ.from('999'), ZZ.from('5'), { - gcd: ZZ.from('1'), - x: ZZ.from('-1'), - y: ZZ.from('200'), - u: ZZ.from('5'), - v: ZZ.from('-999'), -}); - -test(macro, ZZ.from('999'), ZZ.from('6'), { - gcd: ZZ.from('3'), - x: ZZ.from('1'), - y: ZZ.from('-166'), - u: ZZ.from('-2'), - v: ZZ.from('333'), -}); - -test( - macro, - ZZ.from('182719837289124387095732094932857943'), - ZZ.from('218379128372'), - { - gcd: ZZ.from('1'), - x: ZZ.from('76391188915'), - y: ZZ.from('-63917214584236084614404336195015177'), - u: ZZ.from('-218379128372'), - v: ZZ.from('182719837289124387095732094932857943'), - }, -); - -test( - macro, - ZZ.from('89798763754892653453379597352537489494736'), - ZZ.from('978'), - { - gcd: ZZ.from('6'), - x: ZZ.from('57'), - y: ZZ.from('-5233670280193130109246050152448503988957'), - u: ZZ.from('-163'), - v: ZZ.from('14966460625815442242229932892089581582456'), - }, -); - -test( - macro, - ZZ.from('1234567891011121314151617181920212223242526272829'), - ZZ.from('1221'), - { - gcd: ZZ.from('3'), - x: ZZ.from('96'), - y: ZZ.from('-97066762929621331825188574499869265709486095161'), - u: ZZ.from('-407'), - v: ZZ.from('411522630337040438050539060640070741080842090943'), - }, -); - -test( - macro, - ZZ.from('8918391893892839282938092838273908'), - ZZ.from('9238902830982083209836079238902830'), - { - gcd: ZZ.from('18'), - x: ZZ.from('-196260821226532250117922974202329'), - y: ZZ.from('189452248728694447618227772406725'), - u: ZZ.from('513272379499004622768671068827935'), - v: ZZ.from('-495466216327379960163227379904106'), - }, -); - -test( - macro, - ZZ.from( - '37650526072328171936695291762250209370684337226819795603338569781977444693437332193180866661042770508342415236941382410000000000000000', - ), - ZZ.from( - '5696107759173612435215985096515090524728819689625373634782109911819800000000', - ), - { - gcd: ZZ.from( - '12272004900965151087327615491240194950486574150898137749184200000000', - ), - x: ZZ.from('144546941'), - y: ZZ.from( - '-955436343708733262264503439145449113981822054797863712652831187021', - ), - u: ZZ.from('-464154619'), - v: ZZ.from( - '3068001225241287771831903872810048737621643537724534437296050000000', - ), - }, -); - -test( - macro, - ZZ.from( - '67119411938628137065042623053470295860352899292113831399681459932104429712541137526114591678492374912832861154037280650094772951318333', - ), - ZZ.from( - '48179292498495773577650761587652514616005124004102188905857708802854991702951275654450870129244763211021514910115253990099546035191850322100208219724128209064592', - ), - { - gcd: ZZ.from( - '52310721570994454309603316505452077132504750494613585448247191340916543146521771411345313270814742631', - ), - x: ZZ.from('-296597046898323364982738776313288773735618113657314569865757'), - y: ZZ.from('413194514451840753795917890556861'), - u: ZZ.from('921021370984308903809270483207432932984032809428309483208432'), - v: ZZ.from('-1283090921380921830183472943789243'), - }, -); - -test( - macro, - ZZ.from( - '432098403928041873297392719837982749873983279473289479327493284793287498162393740164165983274864832164875183264', - ), - ZZ.from( - '7326498326418236481264389164986482164387619823741294681431648376821468213648217649873214639821', - ), - { - gcd: ZZ.from('1'), - x: ZZ.from( - '-70043170308577841790901973523044584915855330486448613200408375753217211410942292553022335592', - ), - y: ZZ.from( - '4130969632145217993835085987649256842613363564725738267141839343576749111824609588437426577104148903196635909', - ), - u: ZZ.from( - '7326498326418236481264389164986482164387619823741294681431648376821468213648217649873214639821', - ), - v: ZZ.from( - '-432098403928041873297392719837982749873983279473289479327493284793287498162393740164165983274864832164875183264', - ), - }, -); - -test( - macro, - ZZ.from( - '432098403928041873297392719837982749873983279473289479327493284793287498162393740164165983274864832164875183264', - ), - ZZ.from( - '73264983264182364812643891649864821643876198237412946814316483768214682136482176498573214639821208', - ), - { - gcd: ZZ.from('776'), - x: ZZ.from( - '-41694456345076671794355149523694764177222151506203366353494197000190744202549435308862685363723', - ), - y: ZZ.from( - '245903393909088985240590322881406144770470086821972948207378985268602417576411281642626798219110113136324431', - ), - u: ZZ.from( - '94413638227039129913200891301372192840046647213161013935974850216771497598559505797130431236883', - ), - v: ZZ.from( - '-556827840113456022290454535873689110662349586950115308411718150506813786291744510520832452673794886810406164', - ), - }, -); - -test( - macro, - ZZ.from( - '27464428722379302537066207419729547039001666019484342119914191943374771553192802830064910464708682216', - ), - ZZ.from( - '1235538557263503135080009921155585529085345118770499482621630836795609586373233972978224047042123566', - ), - { - gcd: ZZ.from('74997500588773686591299665516865519759664950655978'), - x: ZZ.from('-7538724761555610090827422120944030717270450777967'), - y: ZZ.from('167576129173946225301933673091336299297968056079975'), - u: ZZ.from('16474396447399073360821991087445637049163796086747'), - v: ZZ.from('-366204586909799364719352460854718749306649209643172'), - }, -); - -test( - macro, - ZZ.from( - '-27464428722379302537066207419729547039001666019484342119914191943374771553192802830064910464708682216', - ), - ZZ.from( - '1235538557263503135080009921155585529085345118770499482621630836795609586373233972978224047042123566', - ), - { - gcd: ZZ.from('74997500588773686591299665516865519759664950655978'), - x: ZZ.from('7538724761555610090827422120944030717270450777967'), - y: ZZ.from('167576129173946225301933673091336299297968056079975'), - u: ZZ.from('-16474396447399073360821991087445637049163796086747'), - v: ZZ.from('-366204586909799364719352460854718749306649209643172'), - }, -); - -test( - macro, - ZZ.from( - '27464428722379302537066207419729547039001666019484342119914191943374771553192802830064910464708682216', - ), - ZZ.from( - '-1235538557263503135080009921155585529085345118770499482621630836795609586373233972978224047042123566', - ), - { - gcd: ZZ.from('74997500588773686591299665516865519759664950655978'), - x: ZZ.from('-7538724761555610090827422120944030717270450777967'), - y: ZZ.from('-167576129173946225301933673091336299297968056079975'), - u: ZZ.from('16474396447399073360821991087445637049163796086747'), - v: ZZ.from('366204586909799364719352460854718749306649209643172'), - }, -); - -test( - macro, - ZZ.from( - '-27464428722379302537066207419729547039001666019484342119914191943374771553192802830064910464708682216', - ), - ZZ.from( - '-1235538557263503135080009921155585529085345118770499482621630836795609586373233972978224047042123566', - ), - { - gcd: ZZ.from('74997500588773686591299665516865519759664950655978'), - x: ZZ.from('7538724761555610090827422120944030717270450777967'), - y: ZZ.from('-167576129173946225301933673091336299297968056079975'), - u: ZZ.from('-16474396447399073360821991087445637049163796086747'), - v: ZZ.from('366204586909799364719352460854718749306649209643172'), - }, -); - -test( - macro, - ZZ.from( - '27464428722379302537066207419729547039001666019484342119914191943374771553192802830064910464708682216', - ), - ZZ.from( - '27464428722379302537066207419729547039001666019484342119914191943374771553192802830064910464708682216', - ), - { - gcd: ZZ.from( - '27464428722379302537066207419729547039001666019484342119914191943374771553192802830064910464708682216', - ), - x: ZZ.$0(), - y: ZZ.$1(), - u: ZZ.$1(), - v: ZZ.$_1(), - }, -); - -// Test generated with https://github.com/aureooms-research/gcd diff --git a/test/src/Integer/gcd.js b/test/src/Integer/gcd.js deleted file mode 100644 index 0f807dd..0000000 --- a/test/src/Integer/gcd.js +++ /dev/null @@ -1,98 +0,0 @@ -import test from 'ava'; - -import {ZZ} from '../../../src/index.js'; - -function macro(t, a, b, c) { - t.is(c.toString(), a.gcd(b).toString()); -} - -macro.title = (providedTitle, a, b, c) => - `gcd(${a.toString()},${b.toString()}) = ${c.toString()}`; - -test(macro, ZZ.$0(), ZZ.$0(), ZZ.$0()); -test(macro, ZZ.$1(), ZZ.$0(), ZZ.$1()); -test(macro, ZZ.$0(), ZZ.$1(), ZZ.$1()); -test(macro, ZZ.$1(), ZZ.$1(), ZZ.$1()); -test(macro, ZZ.from(2), ZZ.from(3), ZZ.$1()); -test(macro, ZZ.from(3), ZZ.from(4), ZZ.$1()); -test(macro, ZZ.from(2), ZZ.from(4), ZZ.from(2)); -test( - macro, - ZZ.from('182719837289124387095732094932857943'), - ZZ.from(218379128372), - ZZ.$1(), -); -test( - macro, - ZZ.from('89798763754892653453379597352537489494736'), - ZZ.from(978), - ZZ.from(6), -); -test( - macro, - ZZ.from('1234567891011121314151617181920212223242526272829'), - ZZ.from(1221), - ZZ.from(3), -); -test( - macro, - ZZ.from('8918391893892839282938092838273908'), - ZZ.from('9238902830982083209836079238902830'), - ZZ.from(18), -); -test( - macro, - ZZ.from( - '37650526072328171936695291762250209370684337226819795603338569781977444693437332193180866661042770508342415236941382410000000000000000', - ), - ZZ.from( - '5696107759173612435215985096515090524728819689625373634782109911819800000000', - ), - ZZ.from( - '12272004900965151087327615491240194950486574150898137749184200000000', - ), -); - -test( - macro, - ZZ.from( - '67119411938628137065042623053470295860352899292113831399681459932104429712541137526114591678492374912832861154037280650094772951318333', - ), - ZZ.from( - '48179292498495773577650761587652514616005124004102188905857708802854991702951275654450870129244763211021514910115253990099546035191850322100208219724128209064592', - ), - ZZ.from( - '52310721570994454309603316505452077132504750494613585448247191340916543146521771411345313270814742631', - ), -); - -function auto(t, a) { - t.is(a.abs().toString(), a.gcd(a).toString()); -} - -auto.title = (providedTitle, a) => - `auto gcd(${a.toString()},${a.toString()}) = ${a.toString()}`; - -test(auto, ZZ.$0()); -test(auto, ZZ.$1()); -test(auto, ZZ.$_1()); -test(auto, ZZ.from(2)); -test(auto, ZZ.from(13280123)); -test( - auto, - ZZ.from( - '37650526072328171936695291762250209370684337226819795603338569781977444693437332193180866661042770508342415236941382410000000000000000', - ), -); - -test( - auto, - ZZ.from( - '-37650526072328171936695291762250209370684337226819795603338569781977444693437332193180866661042770508342415236941382410000000000000000', - ), -); - -test(macro, ZZ.from(-3), ZZ.from(3), ZZ.from(3)); -test(macro, ZZ.from(3), ZZ.from(-3), ZZ.from(3)); - -// Test generated with https://github.com/aureooms-research/gcd diff --git a/test/src/Integer/opposite.js b/test/src/Integer/opposite.js deleted file mode 100644 index 86fd924..0000000 --- a/test/src/Integer/opposite.js +++ /dev/null @@ -1,54 +0,0 @@ -import test from 'ava'; -import {ZZ} from '../../../src/index.js'; - -test('ZZ.$0().opposite()', (t) => { - t.is(ZZ.$0().opposite().toString(), '0'); -}); -test('ZZ.$1().opposite()', (t) => { - t.is(ZZ.$1().opposite().toString(), '-1'); -}); - -test('ZZ.from(-2).opposite()', (t) => { - t.is(ZZ.from(-2).opposite().toString(), '2'); -}); -test('ZZ.from(-1).opposite()', (t) => { - t.is(ZZ.from(-1).opposite().toString(), '1'); -}); -test('ZZ.from(0).opposite()', (t) => { - t.is(ZZ.from(0).opposite().toString(), '0'); -}); -test('ZZ.from(-0).opposite()', (t) => { - t.is(ZZ.from(-0).opposite().toString(), '0'); -}); -test('ZZ.from(1).opposite()', (t) => { - t.is(ZZ.from(1).opposite().toString(), '-1'); -}); -test('ZZ.from(2).opposite()', (t) => { - t.is(ZZ.from(2).opposite().toString(), '-2'); -}); - -test('ZZ.from("-2").opposite()', (t) => { - t.is(ZZ.from('-2').opposite().toString(), '2'); -}); -test('ZZ.from("-1").opposite()', (t) => { - t.is(ZZ.from('-1').opposite().toString(), '1'); -}); -test('ZZ.from("0").opposite()', (t) => { - t.is(ZZ.from('0').opposite().toString(), '0'); -}); -test('ZZ.from("-0").opposite()', (t) => { - t.is(ZZ.from('-0').opposite().toString(), '0'); -}); -test('ZZ.from("1").opposite()', (t) => { - t.is(ZZ.from('1').opposite().toString(), '-1'); -}); -test('ZZ.from("2").opposite()', (t) => { - t.is(ZZ.from('2').opposite().toString(), '-2'); -}); - -test('ZZ.from(3).pow(100).opposite()', (t) => { - t.is( - ZZ.from(3).pow(100).opposite().toString(), - '-515377520732011331036461129765621272702107522001', - ); -}); diff --git a/test/src/Integer/parity.js b/test/src/Integer/parity.js deleted file mode 100644 index 90ea22d..0000000 --- a/test/src/Integer/parity.js +++ /dev/null @@ -1,38 +0,0 @@ -import test from 'ava'; -import {range} from '@aureooms/js-itertools'; - -import {ZZ} from '../../../src/index.js'; - -function even(t, x) { - t.true(x.iseven()); - t.false(x.isodd()); -} - -even.title = (providedTitle, x) => `parity: ${x.toString()} is even`; - -function odd(t, x) { - t.true(x.isodd()); - t.false(x.iseven()); -} - -odd.title = (providedTitle, x) => `parity: ${x.toString()} is odd`; - -test(odd, ZZ.from('123456789')); -test(odd, ZZ.from('987654321')); -test(even, ZZ.from('9876543210')); - -test(odd, ZZ.from('ff', 16)); - -test(even, ZZ.from(2).pow(1234)); -test(odd, ZZ.from(2).pow(1234).subn(1)); - -const N = 100; -let x = ZZ.from(-N); - -// eslint-disable-next-line no-unused-vars -for (const _ of range(N)) { - test(even, x); - x = x.addn(1); - test(odd, x); - x = x.addn(1); -} diff --git a/test/src/Integer/predicates.js b/test/src/Integer/predicates.js deleted file mode 100644 index cb3b4e2..0000000 --- a/test/src/Integer/predicates.js +++ /dev/null @@ -1,329 +0,0 @@ -import test from 'ava'; -import {ZZ} from '../../../src/index.js'; - -test('ZZ.$0().iszero()', (t) => { - t.is(ZZ.$0().iszero(), true); -}); -test('ZZ.$1().iszero()', (t) => { - t.is(ZZ.$1().iszero(), false); -}); - -test('ZZ.from(-2).iszero()', (t) => { - t.is(ZZ.from(-2).iszero(), false); -}); -test('ZZ.from(-1).iszero()', (t) => { - t.is(ZZ.from(-1).iszero(), false); -}); -test('ZZ.from(0).iszero()', (t) => { - t.is(ZZ.from(0).iszero(), true); -}); -test('ZZ.from(-0).iszero()', (t) => { - t.is(ZZ.from(-0).iszero(), true); -}); -test('ZZ.from(1).iszero()', (t) => { - t.is(ZZ.from(1).iszero(), false); -}); -test('ZZ.from(2).iszero()', (t) => { - t.is(ZZ.from(2).iszero(), false); -}); - -test('ZZ.from("-2").iszero()', (t) => { - t.is(ZZ.from('-2').iszero(), false); -}); -test('ZZ.from("-1").iszero()', (t) => { - t.is(ZZ.from('-1').iszero(), false); -}); -test('ZZ.from("0").iszero()', (t) => { - t.is(ZZ.from('0').iszero(), true); -}); -test('ZZ.from("-0").iszero()', (t) => { - t.is(ZZ.from('-0').iszero(), true); -}); -test('ZZ.from("1").iszero()', (t) => { - t.is(ZZ.from('1').iszero(), false); -}); -test('ZZ.from("2").iszero()', (t) => { - t.is(ZZ.from('2').iszero(), false); -}); - -test('ZZ.$0().isone()', (t) => { - t.is(ZZ.$0().isone(), false); -}); -test('ZZ.$1().isone()', (t) => { - t.is(ZZ.$1().isone(), true); -}); - -test('ZZ.from(-2).isone()', (t) => { - t.is(ZZ.from(-2).isone(), false); -}); -test('ZZ.from(-1).isone()', (t) => { - t.is(ZZ.from(-1).isone(), false); -}); -test('ZZ.from(0).isone()', (t) => { - t.is(ZZ.from(0).isone(), false); -}); -test('ZZ.from(-0).isone()', (t) => { - t.is(ZZ.from(-0).isone(), false); -}); -test('ZZ.from(1).isone()', (t) => { - t.is(ZZ.from(1).isone(), true); -}); -test('ZZ.from(2).isone()', (t) => { - t.is(ZZ.from(2).isone(), false); -}); - -test('ZZ.from("-2").isone()', (t) => { - t.is(ZZ.from('-2').isone(), false); -}); -test('ZZ.from("-1").isone()', (t) => { - t.is(ZZ.from('-1').isone(), false); -}); -test('ZZ.from("0").isone()', (t) => { - t.is(ZZ.from('0').isone(), false); -}); -test('ZZ.from("-0").isone()', (t) => { - t.is(ZZ.from('-0').isone(), false); -}); -test('ZZ.from("1").isone()', (t) => { - t.is(ZZ.from('1').isone(), true); -}); -test('ZZ.from("2").isone()', (t) => { - t.is(ZZ.from('2').isone(), false); -}); - -test('ZZ.$0().isnonzero()', (t) => { - t.is(ZZ.$0().isnonzero(), false); -}); -test('ZZ.$1().isnonzero()', (t) => { - t.is(ZZ.$1().isnonzero(), true); -}); - -test('ZZ.from(-2).isnonzero()', (t) => { - t.is(ZZ.from(-2).isnonzero(), true); -}); -test('ZZ.from(-1).isnonzero()', (t) => { - t.is(ZZ.from(-1).isnonzero(), true); -}); -test('ZZ.from(0).isnonzero()', (t) => { - t.is(ZZ.from(0).isnonzero(), false); -}); -test('ZZ.from(-0).isnonzero()', (t) => { - t.is(ZZ.from(-0).isnonzero(), false); -}); -test('ZZ.from(1).isnonzero()', (t) => { - t.is(ZZ.from(1).isnonzero(), true); -}); -test('ZZ.from(2).isnonzero()', (t) => { - t.is(ZZ.from(2).isnonzero(), true); -}); - -test('ZZ.from("-2").isnonzero()', (t) => { - t.is(ZZ.from('-2').isnonzero(), true); -}); -test('ZZ.from("-1").isnonzero()', (t) => { - t.is(ZZ.from('-1').isnonzero(), true); -}); -test('ZZ.from("0").isnonzero()', (t) => { - t.is(ZZ.from('0').isnonzero(), false); -}); -test('ZZ.from("-0").isnonzero()', (t) => { - t.is(ZZ.from('-0').isnonzero(), false); -}); -test('ZZ.from("1").isnonzero()', (t) => { - t.is(ZZ.from('1').isnonzero(), true); -}); -test('ZZ.from("2").isnonzero()', (t) => { - t.is(ZZ.from('2').isnonzero(), true); -}); - -test('ZZ.$_1().ispositive()', (t) => { - t.is(ZZ.$_1().ispositive(), false); -}); -test('ZZ.$0().ispositive()', (t) => { - t.is(ZZ.$0().ispositive(), false); -}); -test('ZZ.$1().ispositive()', (t) => { - t.is(ZZ.$1().ispositive(), true); -}); - -test('ZZ.from(-2).ispositive()', (t) => { - t.is(ZZ.from(-2).ispositive(), false); -}); -test('ZZ.from(-1).ispositive()', (t) => { - t.is(ZZ.from(-1).ispositive(), false); -}); -test('ZZ.from(0).ispositive()', (t) => { - t.is(ZZ.from(0).ispositive(), false); -}); -test('ZZ.from(-0).ispositive()', (t) => { - t.is(ZZ.from(-0).ispositive(), false); -}); -test('ZZ.from(1).ispositive()', (t) => { - t.is(ZZ.from(1).ispositive(), true); -}); -test('ZZ.from(2).ispositive()', (t) => { - t.is(ZZ.from(2).ispositive(), true); -}); - -test('ZZ.from("-2").ispositive()', (t) => { - t.is(ZZ.from('-2').ispositive(), false); -}); -test('ZZ.from("-1").ispositive()', (t) => { - t.is(ZZ.from('-1').ispositive(), false); -}); -test('ZZ.from("0").ispositive()', (t) => { - t.is(ZZ.from('0').ispositive(), false); -}); -test('ZZ.from("-0").ispositive()', (t) => { - t.is(ZZ.from('-0').ispositive(), false); -}); -test('ZZ.from("1").ispositive()', (t) => { - t.is(ZZ.from('1').ispositive(), true); -}); -test('ZZ.from("2").ispositive()', (t) => { - t.is(ZZ.from('2').ispositive(), true); -}); - -test('ZZ.$_1().isnegative()', (t) => { - t.is(ZZ.$_1().isnegative(), true); -}); -test('ZZ.$0().isnegative()', (t) => { - t.is(ZZ.$0().isnegative(), false); -}); -test('ZZ.$1().isnegative()', (t) => { - t.is(ZZ.$1().isnegative(), false); -}); - -test('ZZ.from(-2).isnegative()', (t) => { - t.is(ZZ.from(-2).isnegative(), true); -}); -test('ZZ.from(-1).isnegative()', (t) => { - t.is(ZZ.from(-1).isnegative(), true); -}); -test('ZZ.from(0).isnegative()', (t) => { - t.is(ZZ.from(0).isnegative(), false); -}); -test('ZZ.from(-0).isnegative()', (t) => { - t.is(ZZ.from(-0).isnegative(), false); -}); -test('ZZ.from(1).isnegative()', (t) => { - t.is(ZZ.from(1).isnegative(), false); -}); -test('ZZ.from(2).isnegative()', (t) => { - t.is(ZZ.from(2).isnegative(), false); -}); - -test('ZZ.from("-2").isnegative()', (t) => { - t.is(ZZ.from('-2').isnegative(), true); -}); -test('ZZ.from("-1").isnegative()', (t) => { - t.is(ZZ.from('-1').isnegative(), true); -}); -test('ZZ.from("0").isnegative()', (t) => { - t.is(ZZ.from('0').isnegative(), false); -}); -test('ZZ.from("-0").isnegative()', (t) => { - t.is(ZZ.from('-0').isnegative(), false); -}); -test('ZZ.from("1").isnegative()', (t) => { - t.is(ZZ.from('1').isnegative(), false); -}); -test('ZZ.from("2").isnegative()', (t) => { - t.is(ZZ.from('2').isnegative(), false); -}); - -test('ZZ.$_1().isnonnegative()', (t) => { - t.is(ZZ.$_1().isnonnegative(), false); -}); -test('ZZ.$0().isnonnegative()', (t) => { - t.is(ZZ.$0().isnonnegative(), true); -}); -test('ZZ.$1().isnonnegative()', (t) => { - t.is(ZZ.$1().isnonnegative(), true); -}); - -test('ZZ.from(-2).isnonnegative()', (t) => { - t.is(ZZ.from(-2).isnonnegative(), false); -}); -test('ZZ.from(-1).isnonnegative()', (t) => { - t.is(ZZ.from(-1).isnonnegative(), false); -}); -test('ZZ.from(0).isnonnegative()', (t) => { - t.is(ZZ.from(0).isnonnegative(), true); -}); -test('ZZ.from(-0).isnonnegative()', (t) => { - t.is(ZZ.from(-0).isnonnegative(), true); -}); -test('ZZ.from(1).isnonnegative()', (t) => { - t.is(ZZ.from(1).isnonnegative(), true); -}); -test('ZZ.from(2).isnonnegative()', (t) => { - t.is(ZZ.from(2).isnonnegative(), true); -}); - -test('ZZ.from("-2").isnonnegative()', (t) => { - t.is(ZZ.from('-2').isnonnegative(), false); -}); -test('ZZ.from("-1").isnonnegative()', (t) => { - t.is(ZZ.from('-1').isnonnegative(), false); -}); -test('ZZ.from("0").isnonnegative()', (t) => { - t.is(ZZ.from('0').isnonnegative(), true); -}); -test('ZZ.from("-0").isnonnegative()', (t) => { - t.is(ZZ.from('-0').isnonnegative(), true); -}); -test('ZZ.from("1").isnonnegative()', (t) => { - t.is(ZZ.from('1').isnonnegative(), true); -}); -test('ZZ.from("2").isnonnegative()', (t) => { - t.is(ZZ.from('2').isnonnegative(), true); -}); - -test('ZZ.$_1().isnonpositive()', (t) => { - t.is(ZZ.$_1().isnonpositive(), true); -}); -test('ZZ.$0().isnonpositive()', (t) => { - t.is(ZZ.$0().isnonpositive(), true); -}); -test('ZZ.$1().isnonpositive()', (t) => { - t.is(ZZ.$1().isnonpositive(), false); -}); - -test('ZZ.from(-2).isnonpositive()', (t) => { - t.is(ZZ.from(-2).isnonpositive(), true); -}); -test('ZZ.from(-1).isnonpositive()', (t) => { - t.is(ZZ.from(-1).isnonpositive(), true); -}); -test('ZZ.from(0).isnonpositive()', (t) => { - t.is(ZZ.from(0).isnonpositive(), true); -}); -test('ZZ.from(-0).isnonpositive()', (t) => { - t.is(ZZ.from(-0).isnonpositive(), true); -}); -test('ZZ.from(1).isnonpositive()', (t) => { - t.is(ZZ.from(1).isnonpositive(), false); -}); -test('ZZ.from(2).isnonpositive()', (t) => { - t.is(ZZ.from(2).isnonpositive(), false); -}); - -test('ZZ.from("-2").isnonpositive()', (t) => { - t.is(ZZ.from('-2').isnonpositive(), true); -}); -test('ZZ.from("-1").isnonpositive()', (t) => { - t.is(ZZ.from('-1').isnonpositive(), true); -}); -test('ZZ.from("0").isnonpositive()', (t) => { - t.is(ZZ.from('0').isnonpositive(), true); -}); -test('ZZ.from("-0").isnonpositive()', (t) => { - t.is(ZZ.from('-0').isnonpositive(), true); -}); -test('ZZ.from("1").isnonpositive()', (t) => { - t.is(ZZ.from('1').isnonpositive(), false); -}); -test('ZZ.from("2").isnonpositive()', (t) => { - t.is(ZZ.from('2').isnonpositive(), false); -}); diff --git a/test/src/Integer/sign.js b/test/src/Integer/sign.js deleted file mode 100644 index e0f34b9..0000000 --- a/test/src/Integer/sign.js +++ /dev/null @@ -1,40 +0,0 @@ -import test from 'ava'; -import {ZZ} from '../../../src/index.js'; - -test('ZZ.from(-2).sign()', (t) => { - t.is(ZZ.from(-2).sign(), -1); -}); -test('ZZ.from(-1).sign()', (t) => { - t.is(ZZ.from(-1).sign(), -1); -}); -test('ZZ.from(0).sign()', (t) => { - t.is(ZZ.from(0).sign(), 0); -}); -test('ZZ.from(-0).sign()', (t) => { - t.is(ZZ.from(-0).sign(), 0); -}); -test('ZZ.from(1).sign()', (t) => { - t.is(ZZ.from(1).sign(), 1); -}); -test('ZZ.from(2).sign()', (t) => { - t.is(ZZ.from(2).sign(), 1); -}); - -test('ZZ.from("-2").sign()', (t) => { - t.is(ZZ.from('-2').sign(), -1); -}); -test('ZZ.from("-1").sign()', (t) => { - t.is(ZZ.from('-1').sign(), -1); -}); -test('ZZ.from("0").sign()', (t) => { - t.is(ZZ.from('0').sign(), 0); -}); -test('ZZ.from("-0").sign()', (t) => { - t.is(ZZ.from('-0').sign(), 0); -}); -test('ZZ.from("1").sign()', (t) => { - t.is(ZZ.from('1').sign(), 1); -}); -test('ZZ.from("2").sign()', (t) => { - t.is(ZZ.from('2').sign(), 1); -}); diff --git a/test/src/Integer/square.js b/test/src/Integer/square.js deleted file mode 100644 index bc6d7cb..0000000 --- a/test/src/Integer/square.js +++ /dev/null @@ -1,15 +0,0 @@ -import test from 'ava'; -import {ZZ} from '../../../src/index.js'; - -function number(t, x) { - t.is(x * x, ZZ.from(x).isquare().valueOf()); -} - -number.title = (providedTitle, x) => `${x}^2 = ${x * x}`; - -test(number, -1); -test(number, 0); -test(number, 1); -test(number, 2); -test(number, 777); -test(number, -17321983); diff --git a/test/src/Integer/toNumber.js b/test/src/Integer/toNumber.js deleted file mode 100644 index ab93383..0000000 --- a/test/src/Integer/toNumber.js +++ /dev/null @@ -1,47 +0,0 @@ -import test from 'ava'; - -import {randint} from '@aureooms/js-random'; -import {ValueError} from '@aureooms/js-error'; - -import {ZZ, MIN_NUMBER, MAX_NUMBER} from '../../../src/index.js'; - -function macro(t, number) { - const integer = ZZ.from(number); - t.is(number.toString(), integer.toString()); - t.is(number, integer.toNumber()); -} - -macro.title = (providedTitle, number) => `toNumber: ${number}`; - -function throws(t, string, plus) { - const integer = ZZ.from(string).addn(plus); - t.is(string, integer.subn(plus).toString()); - t.throws(() => integer.toNumber(), {instanceOf: ValueError}); -} - -throws.title = (providedTitle, string) => `toNumber: ${string} throws`; - -const tested = new Set(); -const N = 100; - -const once = (x) => { - tested.add(x); - test(macro, x); -}; - -once(0); -once(1); -once(-1); -once(MIN_NUMBER); -once(MAX_NUMBER); -once(MIN_NUMBER + 1); -once(MAX_NUMBER - 1); - -while (tested.size < N) { - const number = randint(MIN_NUMBER, MAX_NUMBER + 1); - if (tested.has(number)) continue; - once(number); -} - -test(throws, MAX_NUMBER.toString(), +1); -test(throws, MIN_NUMBER.toString(), -1); diff --git a/test/src/Integer/toString.js b/test/src/Integer/toString.js deleted file mode 100644 index 9f784b2..0000000 --- a/test/src/Integer/toString.js +++ /dev/null @@ -1,30 +0,0 @@ -import test from 'ava'; - -import {ZZ} from '../../../src/index.js'; - -test('ZZ.from(3).pow(50).toString()', (t) => { - t.is(ZZ.from(3).pow(50).toString(), '717897987691852588770249'); -}); -test('ZZ.from(3).pow(50).bin()', (t) => { - t.is( - ZZ.from(3).pow(50).bin(), - '10011000000001010101001111110000110110110010111111010000100111011110001111001001', - ); -}); -test('ZZ.from(3).pow(50).oct()', (t) => { - t.is(ZZ.from(3).pow(50).oct(), '230012517606662772047361711'); -}); -test('ZZ.from(3).pow(50).hex()', (t) => { - t.is(ZZ.from(3).pow(50).hex(), '980553f0db2fd09de3c9'); -}); -test('ZZ.from(3).pow(50).toJSON()', (t) => { - t.is(ZZ.from(3).pow(50).toJSON(), '980553f0db2fd09de3c9'); -}); - -test('toString is pure', (t) => { - const x = ZZ.from(10000); - t.is(x.toString(10), '10000'); - t.is(x.toString(10), '10000'); - t.is(x.toString(16), '2710'); - t.is(x.toString(16), '2710'); -}); diff --git a/test/src/IntegerRing/different_bases.js b/test/src/IntegerRing/different_bases.js deleted file mode 100644 index a92acc8..0000000 --- a/test/src/IntegerRing/different_bases.js +++ /dev/null @@ -1,16 +0,0 @@ -import test from 'ava'; - -import {IntegerRing} from '../../../src/index.js'; - -test('different bases', (t) => { - const R = new IntegerRing('R', 10); - const S = new IntegerRing('R', 2); - - const r = R.from([0, 7]); - const s = S.from([0, 1, 1, 0, 1]); - - t.is(r.cmp(s), 1); - t.is(r.cmp(r), 0); - t.is(s.cmp(r), -1); - t.is(s.cmp(s), 0); -}); diff --git a/test/src/ZZ/$0.js b/test/src/ZZ/$0.js deleted file mode 100644 index 86e6413..0000000 --- a/test/src/ZZ/$0.js +++ /dev/null @@ -1,124 +0,0 @@ -import test from 'ava'; - -import {ZZ} from '../../../src/index.js'; - -test('$0', (t) => { - t.is(ZZ.$0().toString(), '0'); -}); -test('$0.sign()', (t) => { - t.is(ZZ.$0().sign(), 0); -}); - -test('$0.lt(2)', (t) => { - t.true(ZZ.$0().lt(ZZ.from(2))); -}); -test('$0.le(2)', (t) => { - t.true(ZZ.$0().le(ZZ.from(2))); -}); -test('$0.eq(2)', (t) => { - t.false(ZZ.$0().eq(ZZ.from(2))); -}); -test('$0.ne(2)', (t) => { - t.true(ZZ.$0().ne(ZZ.from(2))); -}); -test('$0.ge(2)', (t) => { - t.false(ZZ.$0().ge(ZZ.from(2))); -}); -test('$0.gt(2)', (t) => { - t.false(ZZ.$0().gt(ZZ.from(2))); -}); - -test('$0.lt(1)', (t) => { - t.true(ZZ.$0().lt(ZZ.from(1))); -}); -test('$0.le(1)', (t) => { - t.true(ZZ.$0().le(ZZ.from(1))); -}); -test('$0.eq(1)', (t) => { - t.false(ZZ.$0().eq(ZZ.from(1))); -}); -test('$0.ne(1)', (t) => { - t.true(ZZ.$0().ne(ZZ.from(1))); -}); -test('$0.ge(1)', (t) => { - t.false(ZZ.$0().ge(ZZ.from(1))); -}); -test('$0.gt(1)', (t) => { - t.false(ZZ.$0().gt(ZZ.from(1))); -}); - -test('$0.lt(0)', (t) => { - t.false(ZZ.$0().lt(ZZ.from(0))); -}); -test('$0.le(0)', (t) => { - t.true(ZZ.$0().le(ZZ.from(0))); -}); -test('$0.eq(0)', (t) => { - t.true(ZZ.$0().eq(ZZ.from(0))); -}); -test('$0.ne(0)', (t) => { - t.false(ZZ.$0().ne(ZZ.from(0))); -}); -test('$0.ge(0)', (t) => { - t.true(ZZ.$0().ge(ZZ.from(0))); -}); -test('$0.gt(0)', (t) => { - t.false(ZZ.$0().gt(ZZ.from(0))); -}); - -test('$0.lt(-0)', (t) => { - t.false(ZZ.$0().lt(ZZ.from(-0))); -}); -test('$0.le(-0)', (t) => { - t.true(ZZ.$0().le(ZZ.from(-0))); -}); -test('$0.eq(-0)', (t) => { - t.true(ZZ.$0().eq(ZZ.from(-0))); -}); -test('$0.ne(-0)', (t) => { - t.false(ZZ.$0().ne(ZZ.from(-0))); -}); -test('$0.ge(-0)', (t) => { - t.true(ZZ.$0().ge(ZZ.from(-0))); -}); -test('$0.gt(-0)', (t) => { - t.false(ZZ.$0().gt(ZZ.from(-0))); -}); - -test('$0.lt("-0")', (t) => { - t.false(ZZ.$0().lt(ZZ.from('-0'))); -}); -test('$0.le("-0")', (t) => { - t.true(ZZ.$0().le(ZZ.from('-0'))); -}); -test('$0.eq("-0")', (t) => { - t.true(ZZ.$0().eq(ZZ.from('-0'))); -}); -test('$0.ne("-0")', (t) => { - t.false(ZZ.$0().ne(ZZ.from('-0'))); -}); -test('$0.ge("-0")', (t) => { - t.true(ZZ.$0().ge(ZZ.from('-0'))); -}); -test('$0.gt("-0")', (t) => { - t.false(ZZ.$0().gt(ZZ.from('-0'))); -}); - -test('$0.lt(-1)', (t) => { - t.false(ZZ.$0().lt(ZZ.from(-1))); -}); -test('$0.le(-1)', (t) => { - t.false(ZZ.$0().le(ZZ.from(-1))); -}); -test('$0.eq(-1)', (t) => { - t.false(ZZ.$0().eq(ZZ.from(-1))); -}); -test('$0.ne(-1)', (t) => { - t.true(ZZ.$0().ne(ZZ.from(-1))); -}); -test('$0.ge(-1)', (t) => { - t.true(ZZ.$0().ge(ZZ.from(-1))); -}); -test('$0.gt(-1)', (t) => { - t.true(ZZ.$0().gt(ZZ.from(-1))); -}); diff --git a/test/src/ZZ/$1.js b/test/src/ZZ/$1.js deleted file mode 100644 index b0e47fc..0000000 --- a/test/src/ZZ/$1.js +++ /dev/null @@ -1,86 +0,0 @@ -import test from 'ava'; - -import {ZZ} from '../../../src/index.js'; - -test('$1', (t) => { - t.is(ZZ.$1().toString(), '1'); -}); -test('$1.sign()', (t) => { - t.is(ZZ.$1().sign(), 1); -}); - -test('$1.lt(2)', (t) => { - t.true(ZZ.$1().lt(ZZ.from(2))); -}); -test('$1.le(2)', (t) => { - t.true(ZZ.$1().le(ZZ.from(2))); -}); -test('$1.eq(2)', (t) => { - t.false(ZZ.$1().eq(ZZ.from(2))); -}); -test('$1.ge(2)', (t) => { - t.false(ZZ.$1().ge(ZZ.from(2))); -}); -test('$1.gt(2)', (t) => { - t.false(ZZ.$1().gt(ZZ.from(2))); -}); -test('$1.ne(2)', (t) => { - t.true(ZZ.$1().ne(ZZ.from(2))); -}); - -test('$1.lt(1)', (t) => { - t.false(ZZ.$1().lt(ZZ.from(1))); -}); -test('$1.le(1)', (t) => { - t.true(ZZ.$1().le(ZZ.from(1))); -}); -test('$1.eq(1)', (t) => { - t.true(ZZ.$1().eq(ZZ.from(1))); -}); -test('$1.ge(1)', (t) => { - t.true(ZZ.$1().ge(ZZ.from(1))); -}); -test('$1.gt(1)', (t) => { - t.false(ZZ.$1().gt(ZZ.from(1))); -}); -test('$1.ne(1)', (t) => { - t.false(ZZ.$1().ne(ZZ.from(1))); -}); - -test('$1.lt(0)', (t) => { - t.false(ZZ.$1().lt(ZZ.from(0))); -}); -test('$1.le(0)', (t) => { - t.false(ZZ.$1().le(ZZ.from(0))); -}); -test('$1.eq(0)', (t) => { - t.false(ZZ.$1().eq(ZZ.from(0))); -}); -test('$1.ge(0)', (t) => { - t.true(ZZ.$1().ge(ZZ.from(0))); -}); -test('$1.gt(0)', (t) => { - t.true(ZZ.$1().gt(ZZ.from(0))); -}); -test('$1.ne(0)', (t) => { - t.true(ZZ.$1().ne(ZZ.from(0))); -}); - -test('$1.lt(-1)', (t) => { - t.false(ZZ.$1().lt(ZZ.from(-1))); -}); -test('$1.le(-1)', (t) => { - t.false(ZZ.$1().le(ZZ.from(-1))); -}); -test('$1.eq(-1)', (t) => { - t.false(ZZ.$1().eq(ZZ.from(-1))); -}); -test('$1.ge(-1)', (t) => { - t.true(ZZ.$1().ge(ZZ.from(-1))); -}); -test('$1.gt(-1)', (t) => { - t.true(ZZ.$1().gt(ZZ.from(-1))); -}); -test('$1.ne(-1)', (t) => { - t.true(ZZ.$1().ne(ZZ.from(-1))); -}); diff --git a/test/src/ZZ/$_1.js b/test/src/ZZ/$_1.js deleted file mode 100644 index 6ad4944..0000000 --- a/test/src/ZZ/$_1.js +++ /dev/null @@ -1,86 +0,0 @@ -import test from 'ava'; - -import {ZZ} from '../../../src/index.js'; - -test('$_1', (t) => { - t.is(ZZ.$_1().toString(), '-1'); -}); -test('$_1.sign()', (t) => { - t.is(ZZ.$_1().sign(), -1); -}); - -test('$_1.lt(-2)', (t) => { - t.false(ZZ.$_1().lt(ZZ.from(-2))); -}); -test('$_1.le(-2)', (t) => { - t.false(ZZ.$_1().le(ZZ.from(-2))); -}); -test('$_1.eq(-2)', (t) => { - t.false(ZZ.$_1().eq(ZZ.from(-2))); -}); -test('$_1.ge(-2)', (t) => { - t.true(ZZ.$_1().ge(ZZ.from(-2))); -}); -test('$_1.gt(-2)', (t) => { - t.true(ZZ.$_1().gt(ZZ.from(-2))); -}); -test('$_1.ne(-2)', (t) => { - t.true(ZZ.$_1().ne(ZZ.from(-2))); -}); - -test('$_1.lt(-1)', (t) => { - t.false(ZZ.$_1().lt(ZZ.from(-1))); -}); -test('$_1.le(-1)', (t) => { - t.true(ZZ.$_1().le(ZZ.from(-1))); -}); -test('$_1.eq(-1)', (t) => { - t.true(ZZ.$_1().eq(ZZ.from(-1))); -}); -test('$_1.ge(-1)', (t) => { - t.true(ZZ.$_1().ge(ZZ.from(-1))); -}); -test('$_1.gt(-1)', (t) => { - t.false(ZZ.$_1().gt(ZZ.from(-1))); -}); -test('$_1.ne(-1)', (t) => { - t.false(ZZ.$_1().ne(ZZ.from(-1))); -}); - -test('$_1.lt(0)', (t) => { - t.true(ZZ.$_1().lt(ZZ.from(0))); -}); -test('$_1.le(0)', (t) => { - t.true(ZZ.$_1().le(ZZ.from(0))); -}); -test('$_1.eq(0)', (t) => { - t.false(ZZ.$_1().eq(ZZ.from(0))); -}); -test('$_1.ge(0)', (t) => { - t.false(ZZ.$_1().ge(ZZ.from(0))); -}); -test('$_1.gt(0)', (t) => { - t.false(ZZ.$_1().gt(ZZ.from(0))); -}); -test('$_1.ne(0)', (t) => { - t.true(ZZ.$_1().ne(ZZ.from(0))); -}); - -test('$_1.lt(1)', (t) => { - t.true(ZZ.$_1().lt(ZZ.from(1))); -}); -test('$_1.le(1)', (t) => { - t.true(ZZ.$_1().le(ZZ.from(1))); -}); -test('$_1.eq(1)', (t) => { - t.false(ZZ.$_1().eq(ZZ.from(1))); -}); -test('$_1.ge(1)', (t) => { - t.false(ZZ.$_1().ge(ZZ.from(1))); -}); -test('$_1.gt(1)', (t) => { - t.false(ZZ.$_1().gt(ZZ.from(1))); -}); -test('$_1.ne(1)', (t) => { - t.true(ZZ.$_1().ne(ZZ.from(1))); -}); diff --git a/test/src/ZZ/characteristic.js b/test/src/ZZ/characteristic.js deleted file mode 100644 index b0dffda..0000000 --- a/test/src/ZZ/characteristic.js +++ /dev/null @@ -1,6 +0,0 @@ -import test from 'ava'; -import {ZZ} from '../../../src/index.js'; - -test('ZZ.characteristic()', (t) => { - t.true(ZZ.characteristic().iszero()); -}); diff --git a/test/src/ZZ/from.js b/test/src/ZZ/from.js deleted file mode 100644 index d02a1de..0000000 --- a/test/src/ZZ/from.js +++ /dev/null @@ -1,53 +0,0 @@ -import test from 'ava'; - -import { - ValueError, - TypeError, - MIN_NUMBER, - MAX_NUMBER, - ZZ, -} from '../../../src/index.js'; - -test('ZZ.from()', (t) => { - t.is(ZZ.from(null).toString(), '0'); - t.is(ZZ.from(undefined).toString(), '0'); - - t.is(ZZ.from('zz', 36).toString(36), 'zz'); - t.is(ZZ.from('3b', 16).toString(16), '3b'); - // T.is( ZZ.from('0x3b').toString(16) , '3b' ) ; - t.is(ZZ.from(ZZ.from(5).digits(3), 3).toString(), '5'); - t.is(ZZ.from(7 ** 7).toString(), '823543'); - t.is(ZZ.from(-7 & 0xff).toString(), '249'); - t.is(ZZ.from(true).toString(), '1'); - t.is(ZZ.from(false).toString(), '0'); - t.is(ZZ.from(1 === 0).toString(), '0'); - t.is(ZZ.from('+10').toString(), '10'); - - t.is(ZZ.from(7, undefined, -1).valueOf(), -7); - t.is(ZZ.from('7', 8, -1).valueOf(), -7); - t.is(ZZ.from('-7', 8, -1).valueOf(), 7); - t.is(ZZ.from('17', 8, -1).valueOf(), -15); - t.is(ZZ.from('-17', 8, -1).valueOf(), 15); - - t.is(ZZ.from([0, 1]).toString(), ZZ._base.toString()); - - t.is(MAX_NUMBER.toString(), ZZ.from(MAX_NUMBER).toString()); - t.is(MIN_NUMBER.toString(), ZZ.from(MIN_NUMBER).toString()); - - t.is(ZZ.from(ZZ.from(2, undefined, -1).pow(12)).toString(), '4096'); - t.is(ZZ.from(ZZ.from(2, undefined, 0).pow(12)).toString(), '4096'); - t.is(ZZ.from(ZZ.from(2, undefined, -1).pow(11)).toString(), '-2048'); - t.is(ZZ.from(ZZ.from(2, undefined, 0).pow(11)).toString(), '2048'); - - t.throws(() => ZZ.from({}), TypeError); - t.throws(() => ZZ.from(new Date()), TypeError); - t.throws(() => ZZ.from(new RegExp()), TypeError); - - t.throws(() => ZZ.from(''), ValueError); - t.throws(() => ZZ.from('-'), ValueError); - t.throws(() => ZZ.from('+'), ValueError); - t.throws(() => ZZ.from('+---+-+'), ValueError); - t.throws(() => ZZ.from(1, 2), ValueError); - t.throws(() => ZZ.from(true, 2), ValueError); - t.throws(() => ZZ.from(ZZ.from(17), 2), ValueError); -}); diff --git a/test/src/ZZ/has.js b/test/src/ZZ/has.js deleted file mode 100644 index 74fcf14..0000000 --- a/test/src/ZZ/has.js +++ /dev/null @@ -1,38 +0,0 @@ -import test from 'ava'; - -import {ZZ} from '../../../src/index.js'; - -const has = (t, x) => t.true(ZZ.has(x)); -has.title = (providedTitle, x) => `ZZ contains ${x.toString()}.`; - -const hasnot = (t, x) => t.false(ZZ.has(x)); -hasnot.title = (providedTitle, x) => - `ZZ does not contain ${JSON.stringify(x)}.`; - -test(has, -1); -test(has, 0); -test(has, 1); - -test(has, ZZ.from(-1234)); - -test(has, ZZ.from('98213037479498473209740509327409327492744596398574')); -test(has, ZZ.from('-98213037479849847320974050937409327492744596398574')); - -test(has, ZZ.from('3b', 16)); - -test(hasnot, '98213037479498473209740509327409327492744596398574'); -test(hasnot, '-98213037479849847320974050937409327492744596398574'); - -test(hasnot, '0'); -test(hasnot, 'ff'); -test(hasnot, 'fdsalkjflsakjfd'); - -test(hasnot, []); -test(hasnot, {}); -test(hasnot, ''); -test(hasnot, false); -test(hasnot, true); -test(hasnot, 0.1); -test(hasnot, -0.5); -test(hasnot, Math.PI); -test(hasnot, Math.E); diff --git a/test/src/ZZ/minmax.js b/test/src/ZZ/minmax.js deleted file mode 100644 index 42d2062..0000000 --- a/test/src/ZZ/minmax.js +++ /dev/null @@ -1,21 +0,0 @@ -import test from 'ava'; - -import {ZZ} from '../../../src/index.js'; - -test('minmax', (t) => { - const a = ZZ.from( - '1037193691267387921739639472846392869238466298463928649236', - ); - const b = ZZ.from('102833047307209370991273091273'); - const c = ZZ.from('-18039809213809128309123702149836492649632832'); - const d = ZZ.from(-3); - - t.is(a, ZZ.max(a, b)); - t.is(a, ZZ.max(b, a)); - t.is(b, ZZ.min(a, b)); - t.is(b, ZZ.max(b, c)); - t.is(c, ZZ.min(c, d)); - t.is(c, ZZ.min(b, c)); - t.is(d, ZZ.min(b, d)); - t.is(d, ZZ.max(d, c)); -}); diff --git a/test/src/ZZ/toString.js b/test/src/ZZ/toString.js deleted file mode 100644 index 1e7300a..0000000 --- a/test/src/ZZ/toString.js +++ /dev/null @@ -1,6 +0,0 @@ -import test from 'ava'; -import {ZZ} from '../../../src/index.js'; - -test('ZZ.toString()', (t) => { - t.is(ZZ.toString(), 'Integer Ring'); -}); diff --git a/test/src/constants/DEFAULT_REPRESENTATION_BASE.js b/test/src/constants/DEFAULT_REPRESENTATION_BASE.js deleted file mode 100644 index e31c6f8..0000000 --- a/test/src/constants/DEFAULT_REPRESENTATION_BASE.js +++ /dev/null @@ -1,7 +0,0 @@ -import test from 'ava'; - -import {DEFAULT_REPRESENTATION_BASE, MAX_BASE} from '../../../src/index.js'; - -test('DEFAULT_REPRESENTATION_BASE <= MAX_BASE', (t) => { - t.true(DEFAULT_REPRESENTATION_BASE <= MAX_BASE); -}); diff --git a/test/src/integer/arithmetic/add.js b/test/src/integer/arithmetic/add.js deleted file mode 100644 index 4ce6506..0000000 --- a/test/src/integer/arithmetic/add.js +++ /dev/null @@ -1,1391 +0,0 @@ -import test from 'ava'; -import {parse, stringify, add} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const b = parse(B); - const c = add(a, b); - t.is(stringify(a), A); - t.is(stringify(b), B); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `add(${fmt(A)},${fmt(B)}) = ${fmt(C)}`; - -test(macro, '0', '0', '0'); -test(macro, '0', '1', '1'); -test(macro, '0', '-1', '-1'); -test(macro, '0', '3', '3'); -test(macro, '0', '-3', '-3'); -test(macro, '0', '7', '7'); -test(macro, '0', '-7', '-7'); -test(macro, '0', '9', '9'); -test(macro, '0', '-9', '-9'); -test(macro, '0', '11', '11'); -test(macro, '0', '-11', '-11'); -test(macro, '0', '17', '17'); -test(macro, '0', '-17', '-17'); -test(macro, '0', '22', '22'); -test(macro, '0', '-22', '-22'); -test(macro, '0', '24', '24'); -test(macro, '0', '-24', '-24'); -test(macro, '0', '27', '27'); -test(macro, '0', '-27', '-27'); -test(macro, '0', '29', '29'); -test(macro, '0', '-29', '-29'); -test(macro, '0', '1234', '1234'); -test(macro, '0', '-1234', '-1234'); -test(macro, '0', '5678', '5678'); -test(macro, '0', '-5678', '-5678'); -test(macro, '0', '94906265', '94906265'); -test(macro, '0', '-94906265', '-94906265'); -test(macro, '0', '94906266', '94906266'); -test(macro, '0', '-94906266', '-94906266'); -test(macro, '0', '1073741824', '1073741824'); -test(macro, '0', '-1073741824', '-1073741824'); -test(macro, '0', '51676101935731', '51676101935731'); -test(macro, '0', '-51676101935731', '-51676101935731'); -test(macro, '0', '717897987691852588770249', '717897987691852588770249'); -test(macro, '0', '-717897987691852588770249', '-717897987691852588770249'); -test(macro, '1', '0', '1'); -test(macro, '-1', '0', '-1'); -test(macro, '1', '1', '2'); -test(macro, '-1', '1', '0'); -test(macro, '1', '-1', '0'); -test(macro, '-1', '-1', '-2'); -test(macro, '1', '3', '4'); -test(macro, '-1', '3', '2'); -test(macro, '1', '-3', '-2'); -test(macro, '-1', '-3', '-4'); -test(macro, '1', '7', '8'); -test(macro, '-1', '7', '6'); -test(macro, '1', '-7', '-6'); -test(macro, '-1', '-7', '-8'); -test(macro, '1', '9', '10'); -test(macro, '-1', '9', '8'); -test(macro, '1', '-9', '-8'); -test(macro, '-1', '-9', '-10'); -test(macro, '1', '11', '12'); -test(macro, '-1', '11', '10'); -test(macro, '1', '-11', '-10'); -test(macro, '-1', '-11', '-12'); -test(macro, '1', '17', '18'); -test(macro, '-1', '17', '16'); -test(macro, '1', '-17', '-16'); -test(macro, '-1', '-17', '-18'); -test(macro, '1', '22', '23'); -test(macro, '-1', '22', '21'); -test(macro, '1', '-22', '-21'); -test(macro, '-1', '-22', '-23'); -test(macro, '1', '24', '25'); -test(macro, '-1', '24', '23'); -test(macro, '1', '-24', '-23'); -test(macro, '-1', '-24', '-25'); -test(macro, '1', '27', '28'); -test(macro, '-1', '27', '26'); -test(macro, '1', '-27', '-26'); -test(macro, '-1', '-27', '-28'); -test(macro, '1', '29', '30'); -test(macro, '-1', '29', '28'); -test(macro, '1', '-29', '-28'); -test(macro, '-1', '-29', '-30'); -test(macro, '1', '1234', '1235'); -test(macro, '-1', '1234', '1233'); -test(macro, '1', '-1234', '-1233'); -test(macro, '-1', '-1234', '-1235'); -test(macro, '1', '5678', '5679'); -test(macro, '-1', '5678', '5677'); -test(macro, '1', '-5678', '-5677'); -test(macro, '-1', '-5678', '-5679'); -test(macro, '1', '94906265', '94906266'); -test(macro, '-1', '94906265', '94906264'); -test(macro, '1', '-94906265', '-94906264'); -test(macro, '-1', '-94906265', '-94906266'); -test(macro, '1', '94906266', '94906267'); -test(macro, '-1', '94906266', '94906265'); -test(macro, '1', '-94906266', '-94906265'); -test(macro, '-1', '-94906266', '-94906267'); -test(macro, '1', '1073741824', '1073741825'); -test(macro, '-1', '1073741824', '1073741823'); -test(macro, '1', '-1073741824', '-1073741823'); -test(macro, '-1', '-1073741824', '-1073741825'); -test(macro, '1', '51676101935731', '51676101935732'); -test(macro, '-1', '51676101935731', '51676101935730'); -test(macro, '1', '-51676101935731', '-51676101935730'); -test(macro, '-1', '-51676101935731', '-51676101935732'); -test(macro, '1', '717897987691852588770249', '717897987691852588770250'); -test(macro, '-1', '717897987691852588770249', '717897987691852588770248'); -test(macro, '1', '-717897987691852588770249', '-717897987691852588770248'); -test(macro, '-1', '-717897987691852588770249', '-717897987691852588770250'); -test(macro, '3', '0', '3'); -test(macro, '-3', '0', '-3'); -test(macro, '3', '1', '4'); -test(macro, '-3', '1', '-2'); -test(macro, '3', '-1', '2'); -test(macro, '-3', '-1', '-4'); -test(macro, '3', '3', '6'); -test(macro, '-3', '3', '0'); -test(macro, '3', '-3', '0'); -test(macro, '-3', '-3', '-6'); -test(macro, '3', '7', '10'); -test(macro, '-3', '7', '4'); -test(macro, '3', '-7', '-4'); -test(macro, '-3', '-7', '-10'); -test(macro, '3', '9', '12'); -test(macro, '-3', '9', '6'); -test(macro, '3', '-9', '-6'); -test(macro, '-3', '-9', '-12'); -test(macro, '3', '11', '14'); -test(macro, '-3', '11', '8'); -test(macro, '3', '-11', '-8'); -test(macro, '-3', '-11', '-14'); -test(macro, '3', '17', '20'); -test(macro, '-3', '17', '14'); -test(macro, '3', '-17', '-14'); -test(macro, '-3', '-17', '-20'); -test(macro, '3', '22', '25'); -test(macro, '-3', '22', '19'); -test(macro, '3', '-22', '-19'); -test(macro, '-3', '-22', '-25'); -test(macro, '3', '24', '27'); -test(macro, '-3', '24', '21'); -test(macro, '3', '-24', '-21'); -test(macro, '-3', '-24', '-27'); -test(macro, '3', '27', '30'); -test(macro, '-3', '27', '24'); -test(macro, '3', '-27', '-24'); -test(macro, '-3', '-27', '-30'); -test(macro, '3', '29', '32'); -test(macro, '-3', '29', '26'); -test(macro, '3', '-29', '-26'); -test(macro, '-3', '-29', '-32'); -test(macro, '3', '1234', '1237'); -test(macro, '-3', '1234', '1231'); -test(macro, '3', '-1234', '-1231'); -test(macro, '-3', '-1234', '-1237'); -test(macro, '3', '5678', '5681'); -test(macro, '-3', '5678', '5675'); -test(macro, '3', '-5678', '-5675'); -test(macro, '-3', '-5678', '-5681'); -test(macro, '3', '94906265', '94906268'); -test(macro, '-3', '94906265', '94906262'); -test(macro, '3', '-94906265', '-94906262'); -test(macro, '-3', '-94906265', '-94906268'); -test(macro, '3', '94906266', '94906269'); -test(macro, '-3', '94906266', '94906263'); -test(macro, '3', '-94906266', '-94906263'); -test(macro, '-3', '-94906266', '-94906269'); -test(macro, '3', '1073741824', '1073741827'); -test(macro, '-3', '1073741824', '1073741821'); -test(macro, '3', '-1073741824', '-1073741821'); -test(macro, '-3', '-1073741824', '-1073741827'); -test(macro, '3', '51676101935731', '51676101935734'); -test(macro, '-3', '51676101935731', '51676101935728'); -test(macro, '3', '-51676101935731', '-51676101935728'); -test(macro, '-3', '-51676101935731', '-51676101935734'); -test(macro, '3', '717897987691852588770249', '717897987691852588770252'); -test(macro, '-3', '717897987691852588770249', '717897987691852588770246'); -test(macro, '3', '-717897987691852588770249', '-717897987691852588770246'); -test(macro, '-3', '-717897987691852588770249', '-717897987691852588770252'); -test(macro, '7', '0', '7'); -test(macro, '-7', '0', '-7'); -test(macro, '7', '1', '8'); -test(macro, '-7', '1', '-6'); -test(macro, '7', '-1', '6'); -test(macro, '-7', '-1', '-8'); -test(macro, '7', '3', '10'); -test(macro, '-7', '3', '-4'); -test(macro, '7', '-3', '4'); -test(macro, '-7', '-3', '-10'); -test(macro, '7', '7', '14'); -test(macro, '-7', '7', '0'); -test(macro, '7', '-7', '0'); -test(macro, '-7', '-7', '-14'); -test(macro, '7', '9', '16'); -test(macro, '-7', '9', '2'); -test(macro, '7', '-9', '-2'); -test(macro, '-7', '-9', '-16'); -test(macro, '7', '11', '18'); -test(macro, '-7', '11', '4'); -test(macro, '7', '-11', '-4'); -test(macro, '-7', '-11', '-18'); -test(macro, '7', '17', '24'); -test(macro, '-7', '17', '10'); -test(macro, '7', '-17', '-10'); -test(macro, '-7', '-17', '-24'); -test(macro, '7', '22', '29'); -test(macro, '-7', '22', '15'); -test(macro, '7', '-22', '-15'); -test(macro, '-7', '-22', '-29'); -test(macro, '7', '24', '31'); -test(macro, '-7', '24', '17'); -test(macro, '7', '-24', '-17'); -test(macro, '-7', '-24', '-31'); -test(macro, '7', '27', '34'); -test(macro, '-7', '27', '20'); -test(macro, '7', '-27', '-20'); -test(macro, '-7', '-27', '-34'); -test(macro, '7', '29', '36'); -test(macro, '-7', '29', '22'); -test(macro, '7', '-29', '-22'); -test(macro, '-7', '-29', '-36'); -test(macro, '7', '1234', '1241'); -test(macro, '-7', '1234', '1227'); -test(macro, '7', '-1234', '-1227'); -test(macro, '-7', '-1234', '-1241'); -test(macro, '7', '5678', '5685'); -test(macro, '-7', '5678', '5671'); -test(macro, '7', '-5678', '-5671'); -test(macro, '-7', '-5678', '-5685'); -test(macro, '7', '94906265', '94906272'); -test(macro, '-7', '94906265', '94906258'); -test(macro, '7', '-94906265', '-94906258'); -test(macro, '-7', '-94906265', '-94906272'); -test(macro, '7', '94906266', '94906273'); -test(macro, '-7', '94906266', '94906259'); -test(macro, '7', '-94906266', '-94906259'); -test(macro, '-7', '-94906266', '-94906273'); -test(macro, '7', '1073741824', '1073741831'); -test(macro, '-7', '1073741824', '1073741817'); -test(macro, '7', '-1073741824', '-1073741817'); -test(macro, '-7', '-1073741824', '-1073741831'); -test(macro, '7', '51676101935731', '51676101935738'); -test(macro, '-7', '51676101935731', '51676101935724'); -test(macro, '7', '-51676101935731', '-51676101935724'); -test(macro, '-7', '-51676101935731', '-51676101935738'); -test(macro, '7', '717897987691852588770249', '717897987691852588770256'); -test(macro, '-7', '717897987691852588770249', '717897987691852588770242'); -test(macro, '7', '-717897987691852588770249', '-717897987691852588770242'); -test(macro, '-7', '-717897987691852588770249', '-717897987691852588770256'); -test(macro, '9', '0', '9'); -test(macro, '-9', '0', '-9'); -test(macro, '9', '1', '10'); -test(macro, '-9', '1', '-8'); -test(macro, '9', '-1', '8'); -test(macro, '-9', '-1', '-10'); -test(macro, '9', '3', '12'); -test(macro, '-9', '3', '-6'); -test(macro, '9', '-3', '6'); -test(macro, '-9', '-3', '-12'); -test(macro, '9', '7', '16'); -test(macro, '-9', '7', '-2'); -test(macro, '9', '-7', '2'); -test(macro, '-9', '-7', '-16'); -test(macro, '9', '9', '18'); -test(macro, '-9', '9', '0'); -test(macro, '9', '-9', '0'); -test(macro, '-9', '-9', '-18'); -test(macro, '9', '11', '20'); -test(macro, '-9', '11', '2'); -test(macro, '9', '-11', '-2'); -test(macro, '-9', '-11', '-20'); -test(macro, '9', '17', '26'); -test(macro, '-9', '17', '8'); -test(macro, '9', '-17', '-8'); -test(macro, '-9', '-17', '-26'); -test(macro, '9', '22', '31'); -test(macro, '-9', '22', '13'); -test(macro, '9', '-22', '-13'); -test(macro, '-9', '-22', '-31'); -test(macro, '9', '24', '33'); -test(macro, '-9', '24', '15'); -test(macro, '9', '-24', '-15'); -test(macro, '-9', '-24', '-33'); -test(macro, '9', '27', '36'); -test(macro, '-9', '27', '18'); -test(macro, '9', '-27', '-18'); -test(macro, '-9', '-27', '-36'); -test(macro, '9', '29', '38'); -test(macro, '-9', '29', '20'); -test(macro, '9', '-29', '-20'); -test(macro, '-9', '-29', '-38'); -test(macro, '9', '1234', '1243'); -test(macro, '-9', '1234', '1225'); -test(macro, '9', '-1234', '-1225'); -test(macro, '-9', '-1234', '-1243'); -test(macro, '9', '5678', '5687'); -test(macro, '-9', '5678', '5669'); -test(macro, '9', '-5678', '-5669'); -test(macro, '-9', '-5678', '-5687'); -test(macro, '9', '94906265', '94906274'); -test(macro, '-9', '94906265', '94906256'); -test(macro, '9', '-94906265', '-94906256'); -test(macro, '-9', '-94906265', '-94906274'); -test(macro, '9', '94906266', '94906275'); -test(macro, '-9', '94906266', '94906257'); -test(macro, '9', '-94906266', '-94906257'); -test(macro, '-9', '-94906266', '-94906275'); -test(macro, '9', '1073741824', '1073741833'); -test(macro, '-9', '1073741824', '1073741815'); -test(macro, '9', '-1073741824', '-1073741815'); -test(macro, '-9', '-1073741824', '-1073741833'); -test(macro, '9', '51676101935731', '51676101935740'); -test(macro, '-9', '51676101935731', '51676101935722'); -test(macro, '9', '-51676101935731', '-51676101935722'); -test(macro, '-9', '-51676101935731', '-51676101935740'); -test(macro, '9', '717897987691852588770249', '717897987691852588770258'); -test(macro, '-9', '717897987691852588770249', '717897987691852588770240'); -test(macro, '9', '-717897987691852588770249', '-717897987691852588770240'); -test(macro, '-9', '-717897987691852588770249', '-717897987691852588770258'); -test(macro, '11', '0', '11'); -test(macro, '-11', '0', '-11'); -test(macro, '11', '1', '12'); -test(macro, '-11', '1', '-10'); -test(macro, '11', '-1', '10'); -test(macro, '-11', '-1', '-12'); -test(macro, '11', '3', '14'); -test(macro, '-11', '3', '-8'); -test(macro, '11', '-3', '8'); -test(macro, '-11', '-3', '-14'); -test(macro, '11', '7', '18'); -test(macro, '-11', '7', '-4'); -test(macro, '11', '-7', '4'); -test(macro, '-11', '-7', '-18'); -test(macro, '11', '9', '20'); -test(macro, '-11', '9', '-2'); -test(macro, '11', '-9', '2'); -test(macro, '-11', '-9', '-20'); -test(macro, '11', '11', '22'); -test(macro, '-11', '11', '0'); -test(macro, '11', '-11', '0'); -test(macro, '-11', '-11', '-22'); -test(macro, '11', '17', '28'); -test(macro, '-11', '17', '6'); -test(macro, '11', '-17', '-6'); -test(macro, '-11', '-17', '-28'); -test(macro, '11', '22', '33'); -test(macro, '-11', '22', '11'); -test(macro, '11', '-22', '-11'); -test(macro, '-11', '-22', '-33'); -test(macro, '11', '24', '35'); -test(macro, '-11', '24', '13'); -test(macro, '11', '-24', '-13'); -test(macro, '-11', '-24', '-35'); -test(macro, '11', '27', '38'); -test(macro, '-11', '27', '16'); -test(macro, '11', '-27', '-16'); -test(macro, '-11', '-27', '-38'); -test(macro, '11', '29', '40'); -test(macro, '-11', '29', '18'); -test(macro, '11', '-29', '-18'); -test(macro, '-11', '-29', '-40'); -test(macro, '11', '1234', '1245'); -test(macro, '-11', '1234', '1223'); -test(macro, '11', '-1234', '-1223'); -test(macro, '-11', '-1234', '-1245'); -test(macro, '11', '5678', '5689'); -test(macro, '-11', '5678', '5667'); -test(macro, '11', '-5678', '-5667'); -test(macro, '-11', '-5678', '-5689'); -test(macro, '11', '94906265', '94906276'); -test(macro, '-11', '94906265', '94906254'); -test(macro, '11', '-94906265', '-94906254'); -test(macro, '-11', '-94906265', '-94906276'); -test(macro, '11', '94906266', '94906277'); -test(macro, '-11', '94906266', '94906255'); -test(macro, '11', '-94906266', '-94906255'); -test(macro, '-11', '-94906266', '-94906277'); -test(macro, '11', '1073741824', '1073741835'); -test(macro, '-11', '1073741824', '1073741813'); -test(macro, '11', '-1073741824', '-1073741813'); -test(macro, '-11', '-1073741824', '-1073741835'); -test(macro, '11', '51676101935731', '51676101935742'); -test(macro, '-11', '51676101935731', '51676101935720'); -test(macro, '11', '-51676101935731', '-51676101935720'); -test(macro, '-11', '-51676101935731', '-51676101935742'); -test(macro, '11', '717897987691852588770249', '717897987691852588770260'); -test(macro, '-11', '717897987691852588770249', '717897987691852588770238'); -test(macro, '11', '-717897987691852588770249', '-717897987691852588770238'); -test(macro, '-11', '-717897987691852588770249', '-717897987691852588770260'); -test(macro, '17', '0', '17'); -test(macro, '-17', '0', '-17'); -test(macro, '17', '1', '18'); -test(macro, '-17', '1', '-16'); -test(macro, '17', '-1', '16'); -test(macro, '-17', '-1', '-18'); -test(macro, '17', '3', '20'); -test(macro, '-17', '3', '-14'); -test(macro, '17', '-3', '14'); -test(macro, '-17', '-3', '-20'); -test(macro, '17', '7', '24'); -test(macro, '-17', '7', '-10'); -test(macro, '17', '-7', '10'); -test(macro, '-17', '-7', '-24'); -test(macro, '17', '9', '26'); -test(macro, '-17', '9', '-8'); -test(macro, '17', '-9', '8'); -test(macro, '-17', '-9', '-26'); -test(macro, '17', '11', '28'); -test(macro, '-17', '11', '-6'); -test(macro, '17', '-11', '6'); -test(macro, '-17', '-11', '-28'); -test(macro, '17', '17', '34'); -test(macro, '-17', '17', '0'); -test(macro, '17', '-17', '0'); -test(macro, '-17', '-17', '-34'); -test(macro, '17', '22', '39'); -test(macro, '-17', '22', '5'); -test(macro, '17', '-22', '-5'); -test(macro, '-17', '-22', '-39'); -test(macro, '17', '24', '41'); -test(macro, '-17', '24', '7'); -test(macro, '17', '-24', '-7'); -test(macro, '-17', '-24', '-41'); -test(macro, '17', '27', '44'); -test(macro, '-17', '27', '10'); -test(macro, '17', '-27', '-10'); -test(macro, '-17', '-27', '-44'); -test(macro, '17', '29', '46'); -test(macro, '-17', '29', '12'); -test(macro, '17', '-29', '-12'); -test(macro, '-17', '-29', '-46'); -test(macro, '17', '1234', '1251'); -test(macro, '-17', '1234', '1217'); -test(macro, '17', '-1234', '-1217'); -test(macro, '-17', '-1234', '-1251'); -test(macro, '17', '5678', '5695'); -test(macro, '-17', '5678', '5661'); -test(macro, '17', '-5678', '-5661'); -test(macro, '-17', '-5678', '-5695'); -test(macro, '17', '94906265', '94906282'); -test(macro, '-17', '94906265', '94906248'); -test(macro, '17', '-94906265', '-94906248'); -test(macro, '-17', '-94906265', '-94906282'); -test(macro, '17', '94906266', '94906283'); -test(macro, '-17', '94906266', '94906249'); -test(macro, '17', '-94906266', '-94906249'); -test(macro, '-17', '-94906266', '-94906283'); -test(macro, '17', '1073741824', '1073741841'); -test(macro, '-17', '1073741824', '1073741807'); -test(macro, '17', '-1073741824', '-1073741807'); -test(macro, '-17', '-1073741824', '-1073741841'); -test(macro, '17', '51676101935731', '51676101935748'); -test(macro, '-17', '51676101935731', '51676101935714'); -test(macro, '17', '-51676101935731', '-51676101935714'); -test(macro, '-17', '-51676101935731', '-51676101935748'); -test(macro, '17', '717897987691852588770249', '717897987691852588770266'); -test(macro, '-17', '717897987691852588770249', '717897987691852588770232'); -test(macro, '17', '-717897987691852588770249', '-717897987691852588770232'); -test(macro, '-17', '-717897987691852588770249', '-717897987691852588770266'); -test(macro, '22', '0', '22'); -test(macro, '-22', '0', '-22'); -test(macro, '22', '1', '23'); -test(macro, '-22', '1', '-21'); -test(macro, '22', '-1', '21'); -test(macro, '-22', '-1', '-23'); -test(macro, '22', '3', '25'); -test(macro, '-22', '3', '-19'); -test(macro, '22', '-3', '19'); -test(macro, '-22', '-3', '-25'); -test(macro, '22', '7', '29'); -test(macro, '-22', '7', '-15'); -test(macro, '22', '-7', '15'); -test(macro, '-22', '-7', '-29'); -test(macro, '22', '9', '31'); -test(macro, '-22', '9', '-13'); -test(macro, '22', '-9', '13'); -test(macro, '-22', '-9', '-31'); -test(macro, '22', '11', '33'); -test(macro, '-22', '11', '-11'); -test(macro, '22', '-11', '11'); -test(macro, '-22', '-11', '-33'); -test(macro, '22', '17', '39'); -test(macro, '-22', '17', '-5'); -test(macro, '22', '-17', '5'); -test(macro, '-22', '-17', '-39'); -test(macro, '22', '22', '44'); -test(macro, '-22', '22', '0'); -test(macro, '22', '-22', '0'); -test(macro, '-22', '-22', '-44'); -test(macro, '22', '24', '46'); -test(macro, '-22', '24', '2'); -test(macro, '22', '-24', '-2'); -test(macro, '-22', '-24', '-46'); -test(macro, '22', '27', '49'); -test(macro, '-22', '27', '5'); -test(macro, '22', '-27', '-5'); -test(macro, '-22', '-27', '-49'); -test(macro, '22', '29', '51'); -test(macro, '-22', '29', '7'); -test(macro, '22', '-29', '-7'); -test(macro, '-22', '-29', '-51'); -test(macro, '22', '1234', '1256'); -test(macro, '-22', '1234', '1212'); -test(macro, '22', '-1234', '-1212'); -test(macro, '-22', '-1234', '-1256'); -test(macro, '22', '5678', '5700'); -test(macro, '-22', '5678', '5656'); -test(macro, '22', '-5678', '-5656'); -test(macro, '-22', '-5678', '-5700'); -test(macro, '22', '94906265', '94906287'); -test(macro, '-22', '94906265', '94906243'); -test(macro, '22', '-94906265', '-94906243'); -test(macro, '-22', '-94906265', '-94906287'); -test(macro, '22', '94906266', '94906288'); -test(macro, '-22', '94906266', '94906244'); -test(macro, '22', '-94906266', '-94906244'); -test(macro, '-22', '-94906266', '-94906288'); -test(macro, '22', '1073741824', '1073741846'); -test(macro, '-22', '1073741824', '1073741802'); -test(macro, '22', '-1073741824', '-1073741802'); -test(macro, '-22', '-1073741824', '-1073741846'); -test(macro, '22', '51676101935731', '51676101935753'); -test(macro, '-22', '51676101935731', '51676101935709'); -test(macro, '22', '-51676101935731', '-51676101935709'); -test(macro, '-22', '-51676101935731', '-51676101935753'); -test(macro, '22', '717897987691852588770249', '717897987691852588770271'); -test(macro, '-22', '717897987691852588770249', '717897987691852588770227'); -test(macro, '22', '-717897987691852588770249', '-717897987691852588770227'); -test(macro, '-22', '-717897987691852588770249', '-717897987691852588770271'); -test(macro, '24', '0', '24'); -test(macro, '-24', '0', '-24'); -test(macro, '24', '1', '25'); -test(macro, '-24', '1', '-23'); -test(macro, '24', '-1', '23'); -test(macro, '-24', '-1', '-25'); -test(macro, '24', '3', '27'); -test(macro, '-24', '3', '-21'); -test(macro, '24', '-3', '21'); -test(macro, '-24', '-3', '-27'); -test(macro, '24', '7', '31'); -test(macro, '-24', '7', '-17'); -test(macro, '24', '-7', '17'); -test(macro, '-24', '-7', '-31'); -test(macro, '24', '9', '33'); -test(macro, '-24', '9', '-15'); -test(macro, '24', '-9', '15'); -test(macro, '-24', '-9', '-33'); -test(macro, '24', '11', '35'); -test(macro, '-24', '11', '-13'); -test(macro, '24', '-11', '13'); -test(macro, '-24', '-11', '-35'); -test(macro, '24', '17', '41'); -test(macro, '-24', '17', '-7'); -test(macro, '24', '-17', '7'); -test(macro, '-24', '-17', '-41'); -test(macro, '24', '22', '46'); -test(macro, '-24', '22', '-2'); -test(macro, '24', '-22', '2'); -test(macro, '-24', '-22', '-46'); -test(macro, '24', '24', '48'); -test(macro, '-24', '24', '0'); -test(macro, '24', '-24', '0'); -test(macro, '-24', '-24', '-48'); -test(macro, '24', '27', '51'); -test(macro, '-24', '27', '3'); -test(macro, '24', '-27', '-3'); -test(macro, '-24', '-27', '-51'); -test(macro, '24', '29', '53'); -test(macro, '-24', '29', '5'); -test(macro, '24', '-29', '-5'); -test(macro, '-24', '-29', '-53'); -test(macro, '24', '1234', '1258'); -test(macro, '-24', '1234', '1210'); -test(macro, '24', '-1234', '-1210'); -test(macro, '-24', '-1234', '-1258'); -test(macro, '24', '5678', '5702'); -test(macro, '-24', '5678', '5654'); -test(macro, '24', '-5678', '-5654'); -test(macro, '-24', '-5678', '-5702'); -test(macro, '24', '94906265', '94906289'); -test(macro, '-24', '94906265', '94906241'); -test(macro, '24', '-94906265', '-94906241'); -test(macro, '-24', '-94906265', '-94906289'); -test(macro, '24', '94906266', '94906290'); -test(macro, '-24', '94906266', '94906242'); -test(macro, '24', '-94906266', '-94906242'); -test(macro, '-24', '-94906266', '-94906290'); -test(macro, '24', '1073741824', '1073741848'); -test(macro, '-24', '1073741824', '1073741800'); -test(macro, '24', '-1073741824', '-1073741800'); -test(macro, '-24', '-1073741824', '-1073741848'); -test(macro, '24', '51676101935731', '51676101935755'); -test(macro, '-24', '51676101935731', '51676101935707'); -test(macro, '24', '-51676101935731', '-51676101935707'); -test(macro, '-24', '-51676101935731', '-51676101935755'); -test(macro, '24', '717897987691852588770249', '717897987691852588770273'); -test(macro, '-24', '717897987691852588770249', '717897987691852588770225'); -test(macro, '24', '-717897987691852588770249', '-717897987691852588770225'); -test(macro, '-24', '-717897987691852588770249', '-717897987691852588770273'); -test(macro, '27', '0', '27'); -test(macro, '-27', '0', '-27'); -test(macro, '27', '1', '28'); -test(macro, '-27', '1', '-26'); -test(macro, '27', '-1', '26'); -test(macro, '-27', '-1', '-28'); -test(macro, '27', '3', '30'); -test(macro, '-27', '3', '-24'); -test(macro, '27', '-3', '24'); -test(macro, '-27', '-3', '-30'); -test(macro, '27', '7', '34'); -test(macro, '-27', '7', '-20'); -test(macro, '27', '-7', '20'); -test(macro, '-27', '-7', '-34'); -test(macro, '27', '9', '36'); -test(macro, '-27', '9', '-18'); -test(macro, '27', '-9', '18'); -test(macro, '-27', '-9', '-36'); -test(macro, '27', '11', '38'); -test(macro, '-27', '11', '-16'); -test(macro, '27', '-11', '16'); -test(macro, '-27', '-11', '-38'); -test(macro, '27', '17', '44'); -test(macro, '-27', '17', '-10'); -test(macro, '27', '-17', '10'); -test(macro, '-27', '-17', '-44'); -test(macro, '27', '22', '49'); -test(macro, '-27', '22', '-5'); -test(macro, '27', '-22', '5'); -test(macro, '-27', '-22', '-49'); -test(macro, '27', '24', '51'); -test(macro, '-27', '24', '-3'); -test(macro, '27', '-24', '3'); -test(macro, '-27', '-24', '-51'); -test(macro, '27', '27', '54'); -test(macro, '-27', '27', '0'); -test(macro, '27', '-27', '0'); -test(macro, '-27', '-27', '-54'); -test(macro, '27', '29', '56'); -test(macro, '-27', '29', '2'); -test(macro, '27', '-29', '-2'); -test(macro, '-27', '-29', '-56'); -test(macro, '27', '1234', '1261'); -test(macro, '-27', '1234', '1207'); -test(macro, '27', '-1234', '-1207'); -test(macro, '-27', '-1234', '-1261'); -test(macro, '27', '5678', '5705'); -test(macro, '-27', '5678', '5651'); -test(macro, '27', '-5678', '-5651'); -test(macro, '-27', '-5678', '-5705'); -test(macro, '27', '94906265', '94906292'); -test(macro, '-27', '94906265', '94906238'); -test(macro, '27', '-94906265', '-94906238'); -test(macro, '-27', '-94906265', '-94906292'); -test(macro, '27', '94906266', '94906293'); -test(macro, '-27', '94906266', '94906239'); -test(macro, '27', '-94906266', '-94906239'); -test(macro, '-27', '-94906266', '-94906293'); -test(macro, '27', '1073741824', '1073741851'); -test(macro, '-27', '1073741824', '1073741797'); -test(macro, '27', '-1073741824', '-1073741797'); -test(macro, '-27', '-1073741824', '-1073741851'); -test(macro, '27', '51676101935731', '51676101935758'); -test(macro, '-27', '51676101935731', '51676101935704'); -test(macro, '27', '-51676101935731', '-51676101935704'); -test(macro, '-27', '-51676101935731', '-51676101935758'); -test(macro, '27', '717897987691852588770249', '717897987691852588770276'); -test(macro, '-27', '717897987691852588770249', '717897987691852588770222'); -test(macro, '27', '-717897987691852588770249', '-717897987691852588770222'); -test(macro, '-27', '-717897987691852588770249', '-717897987691852588770276'); -test(macro, '29', '0', '29'); -test(macro, '-29', '0', '-29'); -test(macro, '29', '1', '30'); -test(macro, '-29', '1', '-28'); -test(macro, '29', '-1', '28'); -test(macro, '-29', '-1', '-30'); -test(macro, '29', '3', '32'); -test(macro, '-29', '3', '-26'); -test(macro, '29', '-3', '26'); -test(macro, '-29', '-3', '-32'); -test(macro, '29', '7', '36'); -test(macro, '-29', '7', '-22'); -test(macro, '29', '-7', '22'); -test(macro, '-29', '-7', '-36'); -test(macro, '29', '9', '38'); -test(macro, '-29', '9', '-20'); -test(macro, '29', '-9', '20'); -test(macro, '-29', '-9', '-38'); -test(macro, '29', '11', '40'); -test(macro, '-29', '11', '-18'); -test(macro, '29', '-11', '18'); -test(macro, '-29', '-11', '-40'); -test(macro, '29', '17', '46'); -test(macro, '-29', '17', '-12'); -test(macro, '29', '-17', '12'); -test(macro, '-29', '-17', '-46'); -test(macro, '29', '22', '51'); -test(macro, '-29', '22', '-7'); -test(macro, '29', '-22', '7'); -test(macro, '-29', '-22', '-51'); -test(macro, '29', '24', '53'); -test(macro, '-29', '24', '-5'); -test(macro, '29', '-24', '5'); -test(macro, '-29', '-24', '-53'); -test(macro, '29', '27', '56'); -test(macro, '-29', '27', '-2'); -test(macro, '29', '-27', '2'); -test(macro, '-29', '-27', '-56'); -test(macro, '29', '29', '58'); -test(macro, '-29', '29', '0'); -test(macro, '29', '-29', '0'); -test(macro, '-29', '-29', '-58'); -test(macro, '29', '1234', '1263'); -test(macro, '-29', '1234', '1205'); -test(macro, '29', '-1234', '-1205'); -test(macro, '-29', '-1234', '-1263'); -test(macro, '29', '5678', '5707'); -test(macro, '-29', '5678', '5649'); -test(macro, '29', '-5678', '-5649'); -test(macro, '-29', '-5678', '-5707'); -test(macro, '29', '94906265', '94906294'); -test(macro, '-29', '94906265', '94906236'); -test(macro, '29', '-94906265', '-94906236'); -test(macro, '-29', '-94906265', '-94906294'); -test(macro, '29', '94906266', '94906295'); -test(macro, '-29', '94906266', '94906237'); -test(macro, '29', '-94906266', '-94906237'); -test(macro, '-29', '-94906266', '-94906295'); -test(macro, '29', '1073741824', '1073741853'); -test(macro, '-29', '1073741824', '1073741795'); -test(macro, '29', '-1073741824', '-1073741795'); -test(macro, '-29', '-1073741824', '-1073741853'); -test(macro, '29', '51676101935731', '51676101935760'); -test(macro, '-29', '51676101935731', '51676101935702'); -test(macro, '29', '-51676101935731', '-51676101935702'); -test(macro, '-29', '-51676101935731', '-51676101935760'); -test(macro, '29', '717897987691852588770249', '717897987691852588770278'); -test(macro, '-29', '717897987691852588770249', '717897987691852588770220'); -test(macro, '29', '-717897987691852588770249', '-717897987691852588770220'); -test(macro, '-29', '-717897987691852588770249', '-717897987691852588770278'); -test(macro, '1234', '0', '1234'); -test(macro, '-1234', '0', '-1234'); -test(macro, '1234', '1', '1235'); -test(macro, '-1234', '1', '-1233'); -test(macro, '1234', '-1', '1233'); -test(macro, '-1234', '-1', '-1235'); -test(macro, '1234', '3', '1237'); -test(macro, '-1234', '3', '-1231'); -test(macro, '1234', '-3', '1231'); -test(macro, '-1234', '-3', '-1237'); -test(macro, '1234', '7', '1241'); -test(macro, '-1234', '7', '-1227'); -test(macro, '1234', '-7', '1227'); -test(macro, '-1234', '-7', '-1241'); -test(macro, '1234', '9', '1243'); -test(macro, '-1234', '9', '-1225'); -test(macro, '1234', '-9', '1225'); -test(macro, '-1234', '-9', '-1243'); -test(macro, '1234', '11', '1245'); -test(macro, '-1234', '11', '-1223'); -test(macro, '1234', '-11', '1223'); -test(macro, '-1234', '-11', '-1245'); -test(macro, '1234', '17', '1251'); -test(macro, '-1234', '17', '-1217'); -test(macro, '1234', '-17', '1217'); -test(macro, '-1234', '-17', '-1251'); -test(macro, '1234', '22', '1256'); -test(macro, '-1234', '22', '-1212'); -test(macro, '1234', '-22', '1212'); -test(macro, '-1234', '-22', '-1256'); -test(macro, '1234', '24', '1258'); -test(macro, '-1234', '24', '-1210'); -test(macro, '1234', '-24', '1210'); -test(macro, '-1234', '-24', '-1258'); -test(macro, '1234', '27', '1261'); -test(macro, '-1234', '27', '-1207'); -test(macro, '1234', '-27', '1207'); -test(macro, '-1234', '-27', '-1261'); -test(macro, '1234', '29', '1263'); -test(macro, '-1234', '29', '-1205'); -test(macro, '1234', '-29', '1205'); -test(macro, '-1234', '-29', '-1263'); -test(macro, '1234', '1234', '2468'); -test(macro, '-1234', '1234', '0'); -test(macro, '1234', '-1234', '0'); -test(macro, '-1234', '-1234', '-2468'); -test(macro, '1234', '5678', '6912'); -test(macro, '-1234', '5678', '4444'); -test(macro, '1234', '-5678', '-4444'); -test(macro, '-1234', '-5678', '-6912'); -test(macro, '1234', '94906265', '94907499'); -test(macro, '-1234', '94906265', '94905031'); -test(macro, '1234', '-94906265', '-94905031'); -test(macro, '-1234', '-94906265', '-94907499'); -test(macro, '1234', '94906266', '94907500'); -test(macro, '-1234', '94906266', '94905032'); -test(macro, '1234', '-94906266', '-94905032'); -test(macro, '-1234', '-94906266', '-94907500'); -test(macro, '1234', '1073741824', '1073743058'); -test(macro, '-1234', '1073741824', '1073740590'); -test(macro, '1234', '-1073741824', '-1073740590'); -test(macro, '-1234', '-1073741824', '-1073743058'); -test(macro, '1234', '51676101935731', '51676101936965'); -test(macro, '-1234', '51676101935731', '51676101934497'); -test(macro, '1234', '-51676101935731', '-51676101934497'); -test(macro, '-1234', '-51676101935731', '-51676101936965'); -test(macro, '1234', '717897987691852588770249', '717897987691852588771483'); -test(macro, '-1234', '717897987691852588770249', '717897987691852588769015'); -test(macro, '1234', '-717897987691852588770249', '-717897987691852588769015'); -test(macro, '-1234', '-717897987691852588770249', '-717897987691852588771483'); -test(macro, '5678', '0', '5678'); -test(macro, '-5678', '0', '-5678'); -test(macro, '5678', '1', '5679'); -test(macro, '-5678', '1', '-5677'); -test(macro, '5678', '-1', '5677'); -test(macro, '-5678', '-1', '-5679'); -test(macro, '5678', '3', '5681'); -test(macro, '-5678', '3', '-5675'); -test(macro, '5678', '-3', '5675'); -test(macro, '-5678', '-3', '-5681'); -test(macro, '5678', '7', '5685'); -test(macro, '-5678', '7', '-5671'); -test(macro, '5678', '-7', '5671'); -test(macro, '-5678', '-7', '-5685'); -test(macro, '5678', '9', '5687'); -test(macro, '-5678', '9', '-5669'); -test(macro, '5678', '-9', '5669'); -test(macro, '-5678', '-9', '-5687'); -test(macro, '5678', '11', '5689'); -test(macro, '-5678', '11', '-5667'); -test(macro, '5678', '-11', '5667'); -test(macro, '-5678', '-11', '-5689'); -test(macro, '5678', '17', '5695'); -test(macro, '-5678', '17', '-5661'); -test(macro, '5678', '-17', '5661'); -test(macro, '-5678', '-17', '-5695'); -test(macro, '5678', '22', '5700'); -test(macro, '-5678', '22', '-5656'); -test(macro, '5678', '-22', '5656'); -test(macro, '-5678', '-22', '-5700'); -test(macro, '5678', '24', '5702'); -test(macro, '-5678', '24', '-5654'); -test(macro, '5678', '-24', '5654'); -test(macro, '-5678', '-24', '-5702'); -test(macro, '5678', '27', '5705'); -test(macro, '-5678', '27', '-5651'); -test(macro, '5678', '-27', '5651'); -test(macro, '-5678', '-27', '-5705'); -test(macro, '5678', '29', '5707'); -test(macro, '-5678', '29', '-5649'); -test(macro, '5678', '-29', '5649'); -test(macro, '-5678', '-29', '-5707'); -test(macro, '5678', '1234', '6912'); -test(macro, '-5678', '1234', '-4444'); -test(macro, '5678', '-1234', '4444'); -test(macro, '-5678', '-1234', '-6912'); -test(macro, '5678', '5678', '11356'); -test(macro, '-5678', '5678', '0'); -test(macro, '5678', '-5678', '0'); -test(macro, '-5678', '-5678', '-11356'); -test(macro, '5678', '94906265', '94911943'); -test(macro, '-5678', '94906265', '94900587'); -test(macro, '5678', '-94906265', '-94900587'); -test(macro, '-5678', '-94906265', '-94911943'); -test(macro, '5678', '94906266', '94911944'); -test(macro, '-5678', '94906266', '94900588'); -test(macro, '5678', '-94906266', '-94900588'); -test(macro, '-5678', '-94906266', '-94911944'); -test(macro, '5678', '1073741824', '1073747502'); -test(macro, '-5678', '1073741824', '1073736146'); -test(macro, '5678', '-1073741824', '-1073736146'); -test(macro, '-5678', '-1073741824', '-1073747502'); -test(macro, '5678', '51676101935731', '51676101941409'); -test(macro, '-5678', '51676101935731', '51676101930053'); -test(macro, '5678', '-51676101935731', '-51676101930053'); -test(macro, '-5678', '-51676101935731', '-51676101941409'); -test(macro, '5678', '717897987691852588770249', '717897987691852588775927'); -test(macro, '-5678', '717897987691852588770249', '717897987691852588764571'); -test(macro, '5678', '-717897987691852588770249', '-717897987691852588764571'); -test(macro, '-5678', '-717897987691852588770249', '-717897987691852588775927'); -test(macro, '94906265', '0', '94906265'); -test(macro, '-94906265', '0', '-94906265'); -test(macro, '94906265', '1', '94906266'); -test(macro, '-94906265', '1', '-94906264'); -test(macro, '94906265', '-1', '94906264'); -test(macro, '-94906265', '-1', '-94906266'); -test(macro, '94906265', '3', '94906268'); -test(macro, '-94906265', '3', '-94906262'); -test(macro, '94906265', '-3', '94906262'); -test(macro, '-94906265', '-3', '-94906268'); -test(macro, '94906265', '7', '94906272'); -test(macro, '-94906265', '7', '-94906258'); -test(macro, '94906265', '-7', '94906258'); -test(macro, '-94906265', '-7', '-94906272'); -test(macro, '94906265', '9', '94906274'); -test(macro, '-94906265', '9', '-94906256'); -test(macro, '94906265', '-9', '94906256'); -test(macro, '-94906265', '-9', '-94906274'); -test(macro, '94906265', '11', '94906276'); -test(macro, '-94906265', '11', '-94906254'); -test(macro, '94906265', '-11', '94906254'); -test(macro, '-94906265', '-11', '-94906276'); -test(macro, '94906265', '17', '94906282'); -test(macro, '-94906265', '17', '-94906248'); -test(macro, '94906265', '-17', '94906248'); -test(macro, '-94906265', '-17', '-94906282'); -test(macro, '94906265', '22', '94906287'); -test(macro, '-94906265', '22', '-94906243'); -test(macro, '94906265', '-22', '94906243'); -test(macro, '-94906265', '-22', '-94906287'); -test(macro, '94906265', '24', '94906289'); -test(macro, '-94906265', '24', '-94906241'); -test(macro, '94906265', '-24', '94906241'); -test(macro, '-94906265', '-24', '-94906289'); -test(macro, '94906265', '27', '94906292'); -test(macro, '-94906265', '27', '-94906238'); -test(macro, '94906265', '-27', '94906238'); -test(macro, '-94906265', '-27', '-94906292'); -test(macro, '94906265', '29', '94906294'); -test(macro, '-94906265', '29', '-94906236'); -test(macro, '94906265', '-29', '94906236'); -test(macro, '-94906265', '-29', '-94906294'); -test(macro, '94906265', '1234', '94907499'); -test(macro, '-94906265', '1234', '-94905031'); -test(macro, '94906265', '-1234', '94905031'); -test(macro, '-94906265', '-1234', '-94907499'); -test(macro, '94906265', '5678', '94911943'); -test(macro, '-94906265', '5678', '-94900587'); -test(macro, '94906265', '-5678', '94900587'); -test(macro, '-94906265', '-5678', '-94911943'); -test(macro, '94906265', '94906265', '189812530'); -test(macro, '-94906265', '94906265', '0'); -test(macro, '94906265', '-94906265', '0'); -test(macro, '-94906265', '-94906265', '-189812530'); -test(macro, '94906265', '94906266', '189812531'); -test(macro, '-94906265', '94906266', '1'); -test(macro, '94906265', '-94906266', '-1'); -test(macro, '-94906265', '-94906266', '-189812531'); -test(macro, '94906265', '1073741824', '1168648089'); -test(macro, '-94906265', '1073741824', '978835559'); -test(macro, '94906265', '-1073741824', '-978835559'); -test(macro, '-94906265', '-1073741824', '-1168648089'); -test(macro, '94906265', '51676101935731', '51676196841996'); -test(macro, '-94906265', '51676101935731', '51676007029466'); -test(macro, '94906265', '-51676101935731', '-51676007029466'); -test(macro, '-94906265', '-51676101935731', '-51676196841996'); -test(macro, '94906265', '717897987691852588770249', '717897987691852683676514'); -test( - macro, - '-94906265', - '717897987691852588770249', - '717897987691852493863984', -); -test( - macro, - '94906265', - '-717897987691852588770249', - '-717897987691852493863984', -); -test( - macro, - '-94906265', - '-717897987691852588770249', - '-717897987691852683676514', -); -test(macro, '94906266', '0', '94906266'); -test(macro, '-94906266', '0', '-94906266'); -test(macro, '94906266', '1', '94906267'); -test(macro, '-94906266', '1', '-94906265'); -test(macro, '94906266', '-1', '94906265'); -test(macro, '-94906266', '-1', '-94906267'); -test(macro, '94906266', '3', '94906269'); -test(macro, '-94906266', '3', '-94906263'); -test(macro, '94906266', '-3', '94906263'); -test(macro, '-94906266', '-3', '-94906269'); -test(macro, '94906266', '7', '94906273'); -test(macro, '-94906266', '7', '-94906259'); -test(macro, '94906266', '-7', '94906259'); -test(macro, '-94906266', '-7', '-94906273'); -test(macro, '94906266', '9', '94906275'); -test(macro, '-94906266', '9', '-94906257'); -test(macro, '94906266', '-9', '94906257'); -test(macro, '-94906266', '-9', '-94906275'); -test(macro, '94906266', '11', '94906277'); -test(macro, '-94906266', '11', '-94906255'); -test(macro, '94906266', '-11', '94906255'); -test(macro, '-94906266', '-11', '-94906277'); -test(macro, '94906266', '17', '94906283'); -test(macro, '-94906266', '17', '-94906249'); -test(macro, '94906266', '-17', '94906249'); -test(macro, '-94906266', '-17', '-94906283'); -test(macro, '94906266', '22', '94906288'); -test(macro, '-94906266', '22', '-94906244'); -test(macro, '94906266', '-22', '94906244'); -test(macro, '-94906266', '-22', '-94906288'); -test(macro, '94906266', '24', '94906290'); -test(macro, '-94906266', '24', '-94906242'); -test(macro, '94906266', '-24', '94906242'); -test(macro, '-94906266', '-24', '-94906290'); -test(macro, '94906266', '27', '94906293'); -test(macro, '-94906266', '27', '-94906239'); -test(macro, '94906266', '-27', '94906239'); -test(macro, '-94906266', '-27', '-94906293'); -test(macro, '94906266', '29', '94906295'); -test(macro, '-94906266', '29', '-94906237'); -test(macro, '94906266', '-29', '94906237'); -test(macro, '-94906266', '-29', '-94906295'); -test(macro, '94906266', '1234', '94907500'); -test(macro, '-94906266', '1234', '-94905032'); -test(macro, '94906266', '-1234', '94905032'); -test(macro, '-94906266', '-1234', '-94907500'); -test(macro, '94906266', '5678', '94911944'); -test(macro, '-94906266', '5678', '-94900588'); -test(macro, '94906266', '-5678', '94900588'); -test(macro, '-94906266', '-5678', '-94911944'); -test(macro, '94906266', '94906265', '189812531'); -test(macro, '-94906266', '94906265', '-1'); -test(macro, '94906266', '-94906265', '1'); -test(macro, '-94906266', '-94906265', '-189812531'); -test(macro, '94906266', '94906266', '189812532'); -test(macro, '-94906266', '94906266', '0'); -test(macro, '94906266', '-94906266', '0'); -test(macro, '-94906266', '-94906266', '-189812532'); -test(macro, '94906266', '1073741824', '1168648090'); -test(macro, '-94906266', '1073741824', '978835558'); -test(macro, '94906266', '-1073741824', '-978835558'); -test(macro, '-94906266', '-1073741824', '-1168648090'); -test(macro, '94906266', '51676101935731', '51676196841997'); -test(macro, '-94906266', '51676101935731', '51676007029465'); -test(macro, '94906266', '-51676101935731', '-51676007029465'); -test(macro, '-94906266', '-51676101935731', '-51676196841997'); -test(macro, '94906266', '717897987691852588770249', '717897987691852683676515'); -test( - macro, - '-94906266', - '717897987691852588770249', - '717897987691852493863983', -); -test( - macro, - '94906266', - '-717897987691852588770249', - '-717897987691852493863983', -); -test( - macro, - '-94906266', - '-717897987691852588770249', - '-717897987691852683676515', -); -test(macro, '1073741824', '0', '1073741824'); -test(macro, '-1073741824', '0', '-1073741824'); -test(macro, '1073741824', '1', '1073741825'); -test(macro, '-1073741824', '1', '-1073741823'); -test(macro, '1073741824', '-1', '1073741823'); -test(macro, '-1073741824', '-1', '-1073741825'); -test(macro, '1073741824', '3', '1073741827'); -test(macro, '-1073741824', '3', '-1073741821'); -test(macro, '1073741824', '-3', '1073741821'); -test(macro, '-1073741824', '-3', '-1073741827'); -test(macro, '1073741824', '7', '1073741831'); -test(macro, '-1073741824', '7', '-1073741817'); -test(macro, '1073741824', '-7', '1073741817'); -test(macro, '-1073741824', '-7', '-1073741831'); -test(macro, '1073741824', '9', '1073741833'); -test(macro, '-1073741824', '9', '-1073741815'); -test(macro, '1073741824', '-9', '1073741815'); -test(macro, '-1073741824', '-9', '-1073741833'); -test(macro, '1073741824', '11', '1073741835'); -test(macro, '-1073741824', '11', '-1073741813'); -test(macro, '1073741824', '-11', '1073741813'); -test(macro, '-1073741824', '-11', '-1073741835'); -test(macro, '1073741824', '17', '1073741841'); -test(macro, '-1073741824', '17', '-1073741807'); -test(macro, '1073741824', '-17', '1073741807'); -test(macro, '-1073741824', '-17', '-1073741841'); -test(macro, '1073741824', '22', '1073741846'); -test(macro, '-1073741824', '22', '-1073741802'); -test(macro, '1073741824', '-22', '1073741802'); -test(macro, '-1073741824', '-22', '-1073741846'); -test(macro, '1073741824', '24', '1073741848'); -test(macro, '-1073741824', '24', '-1073741800'); -test(macro, '1073741824', '-24', '1073741800'); -test(macro, '-1073741824', '-24', '-1073741848'); -test(macro, '1073741824', '27', '1073741851'); -test(macro, '-1073741824', '27', '-1073741797'); -test(macro, '1073741824', '-27', '1073741797'); -test(macro, '-1073741824', '-27', '-1073741851'); -test(macro, '1073741824', '29', '1073741853'); -test(macro, '-1073741824', '29', '-1073741795'); -test(macro, '1073741824', '-29', '1073741795'); -test(macro, '-1073741824', '-29', '-1073741853'); -test(macro, '1073741824', '1234', '1073743058'); -test(macro, '-1073741824', '1234', '-1073740590'); -test(macro, '1073741824', '-1234', '1073740590'); -test(macro, '-1073741824', '-1234', '-1073743058'); -test(macro, '1073741824', '5678', '1073747502'); -test(macro, '-1073741824', '5678', '-1073736146'); -test(macro, '1073741824', '-5678', '1073736146'); -test(macro, '-1073741824', '-5678', '-1073747502'); -test(macro, '1073741824', '94906265', '1168648089'); -test(macro, '-1073741824', '94906265', '-978835559'); -test(macro, '1073741824', '-94906265', '978835559'); -test(macro, '-1073741824', '-94906265', '-1168648089'); -test(macro, '1073741824', '94906266', '1168648090'); -test(macro, '-1073741824', '94906266', '-978835558'); -test(macro, '1073741824', '-94906266', '978835558'); -test(macro, '-1073741824', '-94906266', '-1168648090'); -test(macro, '1073741824', '1073741824', '2147483648'); -test(macro, '-1073741824', '1073741824', '0'); -test(macro, '1073741824', '-1073741824', '0'); -test(macro, '-1073741824', '-1073741824', '-2147483648'); -test(macro, '1073741824', '51676101935731', '51677175677555'); -test(macro, '-1073741824', '51676101935731', '51675028193907'); -test(macro, '1073741824', '-51676101935731', '-51675028193907'); -test(macro, '-1073741824', '-51676101935731', '-51677175677555'); -test( - macro, - '1073741824', - '717897987691852588770249', - '717897987691853662512073', -); -test( - macro, - '-1073741824', - '717897987691852588770249', - '717897987691851515028425', -); -test( - macro, - '1073741824', - '-717897987691852588770249', - '-717897987691851515028425', -); -test( - macro, - '-1073741824', - '-717897987691852588770249', - '-717897987691853662512073', -); -test(macro, '51676101935731', '0', '51676101935731'); -test(macro, '-51676101935731', '0', '-51676101935731'); -test(macro, '51676101935731', '1', '51676101935732'); -test(macro, '-51676101935731', '1', '-51676101935730'); -test(macro, '51676101935731', '-1', '51676101935730'); -test(macro, '-51676101935731', '-1', '-51676101935732'); -test(macro, '51676101935731', '3', '51676101935734'); -test(macro, '-51676101935731', '3', '-51676101935728'); -test(macro, '51676101935731', '-3', '51676101935728'); -test(macro, '-51676101935731', '-3', '-51676101935734'); -test(macro, '51676101935731', '7', '51676101935738'); -test(macro, '-51676101935731', '7', '-51676101935724'); -test(macro, '51676101935731', '-7', '51676101935724'); -test(macro, '-51676101935731', '-7', '-51676101935738'); -test(macro, '51676101935731', '9', '51676101935740'); -test(macro, '-51676101935731', '9', '-51676101935722'); -test(macro, '51676101935731', '-9', '51676101935722'); -test(macro, '-51676101935731', '-9', '-51676101935740'); -test(macro, '51676101935731', '11', '51676101935742'); -test(macro, '-51676101935731', '11', '-51676101935720'); -test(macro, '51676101935731', '-11', '51676101935720'); -test(macro, '-51676101935731', '-11', '-51676101935742'); -test(macro, '51676101935731', '17', '51676101935748'); -test(macro, '-51676101935731', '17', '-51676101935714'); -test(macro, '51676101935731', '-17', '51676101935714'); -test(macro, '-51676101935731', '-17', '-51676101935748'); -test(macro, '51676101935731', '22', '51676101935753'); -test(macro, '-51676101935731', '22', '-51676101935709'); -test(macro, '51676101935731', '-22', '51676101935709'); -test(macro, '-51676101935731', '-22', '-51676101935753'); -test(macro, '51676101935731', '24', '51676101935755'); -test(macro, '-51676101935731', '24', '-51676101935707'); -test(macro, '51676101935731', '-24', '51676101935707'); -test(macro, '-51676101935731', '-24', '-51676101935755'); -test(macro, '51676101935731', '27', '51676101935758'); -test(macro, '-51676101935731', '27', '-51676101935704'); -test(macro, '51676101935731', '-27', '51676101935704'); -test(macro, '-51676101935731', '-27', '-51676101935758'); -test(macro, '51676101935731', '29', '51676101935760'); -test(macro, '-51676101935731', '29', '-51676101935702'); -test(macro, '51676101935731', '-29', '51676101935702'); -test(macro, '-51676101935731', '-29', '-51676101935760'); -test(macro, '51676101935731', '1234', '51676101936965'); -test(macro, '-51676101935731', '1234', '-51676101934497'); -test(macro, '51676101935731', '-1234', '51676101934497'); -test(macro, '-51676101935731', '-1234', '-51676101936965'); -test(macro, '51676101935731', '5678', '51676101941409'); -test(macro, '-51676101935731', '5678', '-51676101930053'); -test(macro, '51676101935731', '-5678', '51676101930053'); -test(macro, '-51676101935731', '-5678', '-51676101941409'); -test(macro, '51676101935731', '94906265', '51676196841996'); -test(macro, '-51676101935731', '94906265', '-51676007029466'); -test(macro, '51676101935731', '-94906265', '51676007029466'); -test(macro, '-51676101935731', '-94906265', '-51676196841996'); -test(macro, '51676101935731', '94906266', '51676196841997'); -test(macro, '-51676101935731', '94906266', '-51676007029465'); -test(macro, '51676101935731', '-94906266', '51676007029465'); -test(macro, '-51676101935731', '-94906266', '-51676196841997'); -test(macro, '51676101935731', '1073741824', '51677175677555'); -test(macro, '-51676101935731', '1073741824', '-51675028193907'); -test(macro, '51676101935731', '-1073741824', '51675028193907'); -test(macro, '-51676101935731', '-1073741824', '-51677175677555'); -test(macro, '51676101935731', '51676101935731', '103352203871462'); -test(macro, '-51676101935731', '51676101935731', '0'); -test(macro, '51676101935731', '-51676101935731', '0'); -test(macro, '-51676101935731', '-51676101935731', '-103352203871462'); -test( - macro, - '51676101935731', - '717897987691852588770249', - '717897987743528690705980', -); -test( - macro, - '-51676101935731', - '717897987691852588770249', - '717897987640176486834518', -); -test( - macro, - '51676101935731', - '-717897987691852588770249', - '-717897987640176486834518', -); -test( - macro, - '-51676101935731', - '-717897987691852588770249', - '-717897987743528690705980', -); -test(macro, '717897987691852588770249', '0', '717897987691852588770249'); -test(macro, '-717897987691852588770249', '0', '-717897987691852588770249'); -test(macro, '717897987691852588770249', '1', '717897987691852588770250'); -test(macro, '-717897987691852588770249', '1', '-717897987691852588770248'); -test(macro, '717897987691852588770249', '-1', '717897987691852588770248'); -test(macro, '-717897987691852588770249', '-1', '-717897987691852588770250'); -test(macro, '717897987691852588770249', '3', '717897987691852588770252'); -test(macro, '-717897987691852588770249', '3', '-717897987691852588770246'); -test(macro, '717897987691852588770249', '-3', '717897987691852588770246'); -test(macro, '-717897987691852588770249', '-3', '-717897987691852588770252'); -test(macro, '717897987691852588770249', '7', '717897987691852588770256'); -test(macro, '-717897987691852588770249', '7', '-717897987691852588770242'); -test(macro, '717897987691852588770249', '-7', '717897987691852588770242'); -test(macro, '-717897987691852588770249', '-7', '-717897987691852588770256'); -test(macro, '717897987691852588770249', '9', '717897987691852588770258'); -test(macro, '-717897987691852588770249', '9', '-717897987691852588770240'); -test(macro, '717897987691852588770249', '-9', '717897987691852588770240'); -test(macro, '-717897987691852588770249', '-9', '-717897987691852588770258'); -test(macro, '717897987691852588770249', '11', '717897987691852588770260'); -test(macro, '-717897987691852588770249', '11', '-717897987691852588770238'); -test(macro, '717897987691852588770249', '-11', '717897987691852588770238'); -test(macro, '-717897987691852588770249', '-11', '-717897987691852588770260'); -test(macro, '717897987691852588770249', '17', '717897987691852588770266'); -test(macro, '-717897987691852588770249', '17', '-717897987691852588770232'); -test(macro, '717897987691852588770249', '-17', '717897987691852588770232'); -test(macro, '-717897987691852588770249', '-17', '-717897987691852588770266'); -test(macro, '717897987691852588770249', '22', '717897987691852588770271'); -test(macro, '-717897987691852588770249', '22', '-717897987691852588770227'); -test(macro, '717897987691852588770249', '-22', '717897987691852588770227'); -test(macro, '-717897987691852588770249', '-22', '-717897987691852588770271'); -test(macro, '717897987691852588770249', '24', '717897987691852588770273'); -test(macro, '-717897987691852588770249', '24', '-717897987691852588770225'); -test(macro, '717897987691852588770249', '-24', '717897987691852588770225'); -test(macro, '-717897987691852588770249', '-24', '-717897987691852588770273'); -test(macro, '717897987691852588770249', '27', '717897987691852588770276'); -test(macro, '-717897987691852588770249', '27', '-717897987691852588770222'); -test(macro, '717897987691852588770249', '-27', '717897987691852588770222'); -test(macro, '-717897987691852588770249', '-27', '-717897987691852588770276'); -test(macro, '717897987691852588770249', '29', '717897987691852588770278'); -test(macro, '-717897987691852588770249', '29', '-717897987691852588770220'); -test(macro, '717897987691852588770249', '-29', '717897987691852588770220'); -test(macro, '-717897987691852588770249', '-29', '-717897987691852588770278'); -test(macro, '717897987691852588770249', '1234', '717897987691852588771483'); -test(macro, '-717897987691852588770249', '1234', '-717897987691852588769015'); -test(macro, '717897987691852588770249', '-1234', '717897987691852588769015'); -test(macro, '-717897987691852588770249', '-1234', '-717897987691852588771483'); -test(macro, '717897987691852588770249', '5678', '717897987691852588775927'); -test(macro, '-717897987691852588770249', '5678', '-717897987691852588764571'); -test(macro, '717897987691852588770249', '-5678', '717897987691852588764571'); -test(macro, '-717897987691852588770249', '-5678', '-717897987691852588775927'); -test(macro, '717897987691852588770249', '94906265', '717897987691852683676514'); -test( - macro, - '-717897987691852588770249', - '94906265', - '-717897987691852493863984', -); -test( - macro, - '717897987691852588770249', - '-94906265', - '717897987691852493863984', -); -test( - macro, - '-717897987691852588770249', - '-94906265', - '-717897987691852683676514', -); -test(macro, '717897987691852588770249', '94906266', '717897987691852683676515'); -test( - macro, - '-717897987691852588770249', - '94906266', - '-717897987691852493863983', -); -test( - macro, - '717897987691852588770249', - '-94906266', - '717897987691852493863983', -); -test( - macro, - '-717897987691852588770249', - '-94906266', - '-717897987691852683676515', -); -test( - macro, - '717897987691852588770249', - '1073741824', - '717897987691853662512073', -); -test( - macro, - '-717897987691852588770249', - '1073741824', - '-717897987691851515028425', -); -test( - macro, - '717897987691852588770249', - '-1073741824', - '717897987691851515028425', -); -test( - macro, - '-717897987691852588770249', - '-1073741824', - '-717897987691853662512073', -); -test( - macro, - '717897987691852588770249', - '51676101935731', - '717897987743528690705980', -); -test( - macro, - '-717897987691852588770249', - '51676101935731', - '-717897987640176486834518', -); -test( - macro, - '717897987691852588770249', - '-51676101935731', - '717897987640176486834518', -); -test( - macro, - '-717897987691852588770249', - '-51676101935731', - '-717897987743528690705980', -); -test( - macro, - '717897987691852588770249', - '717897987691852588770249', - '1435795975383705177540498', -); -test(macro, '-717897987691852588770249', '717897987691852588770249', '0'); -test(macro, '717897987691852588770249', '-717897987691852588770249', '0'); -test( - macro, - '-717897987691852588770249', - '-717897987691852588770249', - '-1435795975383705177540498', -); diff --git a/test/src/integer/arithmetic/addn.js b/test/src/integer/arithmetic/addn.js deleted file mode 100644 index 5c771be..0000000 --- a/test/src/integer/arithmetic/addn.js +++ /dev/null @@ -1,1214 +0,0 @@ -import test from 'ava'; -import {parse, stringify, addn} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const c = addn(a, B); - t.is(stringify(a), A); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `addn(${fmt(A)},${B}) = ${fmt(C)}`; - -test(macro, '0', 0, '0'); -test(macro, '0', 1, '1'); -test(macro, '0', -1, '-1'); -test(macro, '0', 3, '3'); -test(macro, '0', -3, '-3'); -test(macro, '0', 7, '7'); -test(macro, '0', -7, '-7'); -test(macro, '0', 9, '9'); -test(macro, '0', -9, '-9'); -test(macro, '0', 11, '11'); -test(macro, '0', -11, '-11'); -test(macro, '0', 17, '17'); -test(macro, '0', -17, '-17'); -test(macro, '0', 22, '22'); -test(macro, '0', -22, '-22'); -test(macro, '0', 24, '24'); -test(macro, '0', -24, '-24'); -test(macro, '0', 27, '27'); -test(macro, '0', -27, '-27'); -test(macro, '0', 29, '29'); -test(macro, '0', -29, '-29'); -test(macro, '0', 1234, '1234'); -test(macro, '0', -1234, '-1234'); -test(macro, '0', 5678, '5678'); -test(macro, '0', -5678, '-5678'); -test(macro, '0', 94906265, '94906265'); -test(macro, '0', -94906265, '-94906265'); -test(macro, '0', 94906266, '94906266'); -test(macro, '0', -94906266, '-94906266'); -test(macro, '0', 1073741824, '1073741824'); -test(macro, '0', -1073741824, '-1073741824'); -test(macro, '0', 51676101935731, '51676101935731'); -test(macro, '0', -51676101935731, '-51676101935731'); -test(macro, '1', 0, '1'); -test(macro, '-1', 0, '-1'); -test(macro, '1', 1, '2'); -test(macro, '-1', 1, '0'); -test(macro, '1', -1, '0'); -test(macro, '-1', -1, '-2'); -test(macro, '1', 3, '4'); -test(macro, '-1', 3, '2'); -test(macro, '1', -3, '-2'); -test(macro, '-1', -3, '-4'); -test(macro, '1', 7, '8'); -test(macro, '-1', 7, '6'); -test(macro, '1', -7, '-6'); -test(macro, '-1', -7, '-8'); -test(macro, '1', 9, '10'); -test(macro, '-1', 9, '8'); -test(macro, '1', -9, '-8'); -test(macro, '-1', -9, '-10'); -test(macro, '1', 11, '12'); -test(macro, '-1', 11, '10'); -test(macro, '1', -11, '-10'); -test(macro, '-1', -11, '-12'); -test(macro, '1', 17, '18'); -test(macro, '-1', 17, '16'); -test(macro, '1', -17, '-16'); -test(macro, '-1', -17, '-18'); -test(macro, '1', 22, '23'); -test(macro, '-1', 22, '21'); -test(macro, '1', -22, '-21'); -test(macro, '-1', -22, '-23'); -test(macro, '1', 24, '25'); -test(macro, '-1', 24, '23'); -test(macro, '1', -24, '-23'); -test(macro, '-1', -24, '-25'); -test(macro, '1', 27, '28'); -test(macro, '-1', 27, '26'); -test(macro, '1', -27, '-26'); -test(macro, '-1', -27, '-28'); -test(macro, '1', 29, '30'); -test(macro, '-1', 29, '28'); -test(macro, '1', -29, '-28'); -test(macro, '-1', -29, '-30'); -test(macro, '1', 1234, '1235'); -test(macro, '-1', 1234, '1233'); -test(macro, '1', -1234, '-1233'); -test(macro, '-1', -1234, '-1235'); -test(macro, '1', 5678, '5679'); -test(macro, '-1', 5678, '5677'); -test(macro, '1', -5678, '-5677'); -test(macro, '-1', -5678, '-5679'); -test(macro, '1', 94906265, '94906266'); -test(macro, '-1', 94906265, '94906264'); -test(macro, '1', -94906265, '-94906264'); -test(macro, '-1', -94906265, '-94906266'); -test(macro, '1', 94906266, '94906267'); -test(macro, '-1', 94906266, '94906265'); -test(macro, '1', -94906266, '-94906265'); -test(macro, '-1', -94906266, '-94906267'); -test(macro, '1', 1073741824, '1073741825'); -test(macro, '-1', 1073741824, '1073741823'); -test(macro, '1', -1073741824, '-1073741823'); -test(macro, '-1', -1073741824, '-1073741825'); -test(macro, '1', 51676101935731, '51676101935732'); -test(macro, '-1', 51676101935731, '51676101935730'); -test(macro, '1', -51676101935731, '-51676101935730'); -test(macro, '-1', -51676101935731, '-51676101935732'); -test(macro, '3', 0, '3'); -test(macro, '-3', 0, '-3'); -test(macro, '3', 1, '4'); -test(macro, '-3', 1, '-2'); -test(macro, '3', -1, '2'); -test(macro, '-3', -1, '-4'); -test(macro, '3', 3, '6'); -test(macro, '-3', 3, '0'); -test(macro, '3', -3, '0'); -test(macro, '-3', -3, '-6'); -test(macro, '3', 7, '10'); -test(macro, '-3', 7, '4'); -test(macro, '3', -7, '-4'); -test(macro, '-3', -7, '-10'); -test(macro, '3', 9, '12'); -test(macro, '-3', 9, '6'); -test(macro, '3', -9, '-6'); -test(macro, '-3', -9, '-12'); -test(macro, '3', 11, '14'); -test(macro, '-3', 11, '8'); -test(macro, '3', -11, '-8'); -test(macro, '-3', -11, '-14'); -test(macro, '3', 17, '20'); -test(macro, '-3', 17, '14'); -test(macro, '3', -17, '-14'); -test(macro, '-3', -17, '-20'); -test(macro, '3', 22, '25'); -test(macro, '-3', 22, '19'); -test(macro, '3', -22, '-19'); -test(macro, '-3', -22, '-25'); -test(macro, '3', 24, '27'); -test(macro, '-3', 24, '21'); -test(macro, '3', -24, '-21'); -test(macro, '-3', -24, '-27'); -test(macro, '3', 27, '30'); -test(macro, '-3', 27, '24'); -test(macro, '3', -27, '-24'); -test(macro, '-3', -27, '-30'); -test(macro, '3', 29, '32'); -test(macro, '-3', 29, '26'); -test(macro, '3', -29, '-26'); -test(macro, '-3', -29, '-32'); -test(macro, '3', 1234, '1237'); -test(macro, '-3', 1234, '1231'); -test(macro, '3', -1234, '-1231'); -test(macro, '-3', -1234, '-1237'); -test(macro, '3', 5678, '5681'); -test(macro, '-3', 5678, '5675'); -test(macro, '3', -5678, '-5675'); -test(macro, '-3', -5678, '-5681'); -test(macro, '3', 94906265, '94906268'); -test(macro, '-3', 94906265, '94906262'); -test(macro, '3', -94906265, '-94906262'); -test(macro, '-3', -94906265, '-94906268'); -test(macro, '3', 94906266, '94906269'); -test(macro, '-3', 94906266, '94906263'); -test(macro, '3', -94906266, '-94906263'); -test(macro, '-3', -94906266, '-94906269'); -test(macro, '3', 1073741824, '1073741827'); -test(macro, '-3', 1073741824, '1073741821'); -test(macro, '3', -1073741824, '-1073741821'); -test(macro, '-3', -1073741824, '-1073741827'); -test(macro, '3', 51676101935731, '51676101935734'); -test(macro, '-3', 51676101935731, '51676101935728'); -test(macro, '3', -51676101935731, '-51676101935728'); -test(macro, '-3', -51676101935731, '-51676101935734'); -test(macro, '7', 0, '7'); -test(macro, '-7', 0, '-7'); -test(macro, '7', 1, '8'); -test(macro, '-7', 1, '-6'); -test(macro, '7', -1, '6'); -test(macro, '-7', -1, '-8'); -test(macro, '7', 3, '10'); -test(macro, '-7', 3, '-4'); -test(macro, '7', -3, '4'); -test(macro, '-7', -3, '-10'); -test(macro, '7', 7, '14'); -test(macro, '-7', 7, '0'); -test(macro, '7', -7, '0'); -test(macro, '-7', -7, '-14'); -test(macro, '7', 9, '16'); -test(macro, '-7', 9, '2'); -test(macro, '7', -9, '-2'); -test(macro, '-7', -9, '-16'); -test(macro, '7', 11, '18'); -test(macro, '-7', 11, '4'); -test(macro, '7', -11, '-4'); -test(macro, '-7', -11, '-18'); -test(macro, '7', 17, '24'); -test(macro, '-7', 17, '10'); -test(macro, '7', -17, '-10'); -test(macro, '-7', -17, '-24'); -test(macro, '7', 22, '29'); -test(macro, '-7', 22, '15'); -test(macro, '7', -22, '-15'); -test(macro, '-7', -22, '-29'); -test(macro, '7', 24, '31'); -test(macro, '-7', 24, '17'); -test(macro, '7', -24, '-17'); -test(macro, '-7', -24, '-31'); -test(macro, '7', 27, '34'); -test(macro, '-7', 27, '20'); -test(macro, '7', -27, '-20'); -test(macro, '-7', -27, '-34'); -test(macro, '7', 29, '36'); -test(macro, '-7', 29, '22'); -test(macro, '7', -29, '-22'); -test(macro, '-7', -29, '-36'); -test(macro, '7', 1234, '1241'); -test(macro, '-7', 1234, '1227'); -test(macro, '7', -1234, '-1227'); -test(macro, '-7', -1234, '-1241'); -test(macro, '7', 5678, '5685'); -test(macro, '-7', 5678, '5671'); -test(macro, '7', -5678, '-5671'); -test(macro, '-7', -5678, '-5685'); -test(macro, '7', 94906265, '94906272'); -test(macro, '-7', 94906265, '94906258'); -test(macro, '7', -94906265, '-94906258'); -test(macro, '-7', -94906265, '-94906272'); -test(macro, '7', 94906266, '94906273'); -test(macro, '-7', 94906266, '94906259'); -test(macro, '7', -94906266, '-94906259'); -test(macro, '-7', -94906266, '-94906273'); -test(macro, '7', 1073741824, '1073741831'); -test(macro, '-7', 1073741824, '1073741817'); -test(macro, '7', -1073741824, '-1073741817'); -test(macro, '-7', -1073741824, '-1073741831'); -test(macro, '7', 51676101935731, '51676101935738'); -test(macro, '-7', 51676101935731, '51676101935724'); -test(macro, '7', -51676101935731, '-51676101935724'); -test(macro, '-7', -51676101935731, '-51676101935738'); -test(macro, '9', 0, '9'); -test(macro, '-9', 0, '-9'); -test(macro, '9', 1, '10'); -test(macro, '-9', 1, '-8'); -test(macro, '9', -1, '8'); -test(macro, '-9', -1, '-10'); -test(macro, '9', 3, '12'); -test(macro, '-9', 3, '-6'); -test(macro, '9', -3, '6'); -test(macro, '-9', -3, '-12'); -test(macro, '9', 7, '16'); -test(macro, '-9', 7, '-2'); -test(macro, '9', -7, '2'); -test(macro, '-9', -7, '-16'); -test(macro, '9', 9, '18'); -test(macro, '-9', 9, '0'); -test(macro, '9', -9, '0'); -test(macro, '-9', -9, '-18'); -test(macro, '9', 11, '20'); -test(macro, '-9', 11, '2'); -test(macro, '9', -11, '-2'); -test(macro, '-9', -11, '-20'); -test(macro, '9', 17, '26'); -test(macro, '-9', 17, '8'); -test(macro, '9', -17, '-8'); -test(macro, '-9', -17, '-26'); -test(macro, '9', 22, '31'); -test(macro, '-9', 22, '13'); -test(macro, '9', -22, '-13'); -test(macro, '-9', -22, '-31'); -test(macro, '9', 24, '33'); -test(macro, '-9', 24, '15'); -test(macro, '9', -24, '-15'); -test(macro, '-9', -24, '-33'); -test(macro, '9', 27, '36'); -test(macro, '-9', 27, '18'); -test(macro, '9', -27, '-18'); -test(macro, '-9', -27, '-36'); -test(macro, '9', 29, '38'); -test(macro, '-9', 29, '20'); -test(macro, '9', -29, '-20'); -test(macro, '-9', -29, '-38'); -test(macro, '9', 1234, '1243'); -test(macro, '-9', 1234, '1225'); -test(macro, '9', -1234, '-1225'); -test(macro, '-9', -1234, '-1243'); -test(macro, '9', 5678, '5687'); -test(macro, '-9', 5678, '5669'); -test(macro, '9', -5678, '-5669'); -test(macro, '-9', -5678, '-5687'); -test(macro, '9', 94906265, '94906274'); -test(macro, '-9', 94906265, '94906256'); -test(macro, '9', -94906265, '-94906256'); -test(macro, '-9', -94906265, '-94906274'); -test(macro, '9', 94906266, '94906275'); -test(macro, '-9', 94906266, '94906257'); -test(macro, '9', -94906266, '-94906257'); -test(macro, '-9', -94906266, '-94906275'); -test(macro, '9', 1073741824, '1073741833'); -test(macro, '-9', 1073741824, '1073741815'); -test(macro, '9', -1073741824, '-1073741815'); -test(macro, '-9', -1073741824, '-1073741833'); -test(macro, '9', 51676101935731, '51676101935740'); -test(macro, '-9', 51676101935731, '51676101935722'); -test(macro, '9', -51676101935731, '-51676101935722'); -test(macro, '-9', -51676101935731, '-51676101935740'); -test(macro, '11', 0, '11'); -test(macro, '-11', 0, '-11'); -test(macro, '11', 1, '12'); -test(macro, '-11', 1, '-10'); -test(macro, '11', -1, '10'); -test(macro, '-11', -1, '-12'); -test(macro, '11', 3, '14'); -test(macro, '-11', 3, '-8'); -test(macro, '11', -3, '8'); -test(macro, '-11', -3, '-14'); -test(macro, '11', 7, '18'); -test(macro, '-11', 7, '-4'); -test(macro, '11', -7, '4'); -test(macro, '-11', -7, '-18'); -test(macro, '11', 9, '20'); -test(macro, '-11', 9, '-2'); -test(macro, '11', -9, '2'); -test(macro, '-11', -9, '-20'); -test(macro, '11', 11, '22'); -test(macro, '-11', 11, '0'); -test(macro, '11', -11, '0'); -test(macro, '-11', -11, '-22'); -test(macro, '11', 17, '28'); -test(macro, '-11', 17, '6'); -test(macro, '11', -17, '-6'); -test(macro, '-11', -17, '-28'); -test(macro, '11', 22, '33'); -test(macro, '-11', 22, '11'); -test(macro, '11', -22, '-11'); -test(macro, '-11', -22, '-33'); -test(macro, '11', 24, '35'); -test(macro, '-11', 24, '13'); -test(macro, '11', -24, '-13'); -test(macro, '-11', -24, '-35'); -test(macro, '11', 27, '38'); -test(macro, '-11', 27, '16'); -test(macro, '11', -27, '-16'); -test(macro, '-11', -27, '-38'); -test(macro, '11', 29, '40'); -test(macro, '-11', 29, '18'); -test(macro, '11', -29, '-18'); -test(macro, '-11', -29, '-40'); -test(macro, '11', 1234, '1245'); -test(macro, '-11', 1234, '1223'); -test(macro, '11', -1234, '-1223'); -test(macro, '-11', -1234, '-1245'); -test(macro, '11', 5678, '5689'); -test(macro, '-11', 5678, '5667'); -test(macro, '11', -5678, '-5667'); -test(macro, '-11', -5678, '-5689'); -test(macro, '11', 94906265, '94906276'); -test(macro, '-11', 94906265, '94906254'); -test(macro, '11', -94906265, '-94906254'); -test(macro, '-11', -94906265, '-94906276'); -test(macro, '11', 94906266, '94906277'); -test(macro, '-11', 94906266, '94906255'); -test(macro, '11', -94906266, '-94906255'); -test(macro, '-11', -94906266, '-94906277'); -test(macro, '11', 1073741824, '1073741835'); -test(macro, '-11', 1073741824, '1073741813'); -test(macro, '11', -1073741824, '-1073741813'); -test(macro, '-11', -1073741824, '-1073741835'); -test(macro, '11', 51676101935731, '51676101935742'); -test(macro, '-11', 51676101935731, '51676101935720'); -test(macro, '11', -51676101935731, '-51676101935720'); -test(macro, '-11', -51676101935731, '-51676101935742'); -test(macro, '17', 0, '17'); -test(macro, '-17', 0, '-17'); -test(macro, '17', 1, '18'); -test(macro, '-17', 1, '-16'); -test(macro, '17', -1, '16'); -test(macro, '-17', -1, '-18'); -test(macro, '17', 3, '20'); -test(macro, '-17', 3, '-14'); -test(macro, '17', -3, '14'); -test(macro, '-17', -3, '-20'); -test(macro, '17', 7, '24'); -test(macro, '-17', 7, '-10'); -test(macro, '17', -7, '10'); -test(macro, '-17', -7, '-24'); -test(macro, '17', 9, '26'); -test(macro, '-17', 9, '-8'); -test(macro, '17', -9, '8'); -test(macro, '-17', -9, '-26'); -test(macro, '17', 11, '28'); -test(macro, '-17', 11, '-6'); -test(macro, '17', -11, '6'); -test(macro, '-17', -11, '-28'); -test(macro, '17', 17, '34'); -test(macro, '-17', 17, '0'); -test(macro, '17', -17, '0'); -test(macro, '-17', -17, '-34'); -test(macro, '17', 22, '39'); -test(macro, '-17', 22, '5'); -test(macro, '17', -22, '-5'); -test(macro, '-17', -22, '-39'); -test(macro, '17', 24, '41'); -test(macro, '-17', 24, '7'); -test(macro, '17', -24, '-7'); -test(macro, '-17', -24, '-41'); -test(macro, '17', 27, '44'); -test(macro, '-17', 27, '10'); -test(macro, '17', -27, '-10'); -test(macro, '-17', -27, '-44'); -test(macro, '17', 29, '46'); -test(macro, '-17', 29, '12'); -test(macro, '17', -29, '-12'); -test(macro, '-17', -29, '-46'); -test(macro, '17', 1234, '1251'); -test(macro, '-17', 1234, '1217'); -test(macro, '17', -1234, '-1217'); -test(macro, '-17', -1234, '-1251'); -test(macro, '17', 5678, '5695'); -test(macro, '-17', 5678, '5661'); -test(macro, '17', -5678, '-5661'); -test(macro, '-17', -5678, '-5695'); -test(macro, '17', 94906265, '94906282'); -test(macro, '-17', 94906265, '94906248'); -test(macro, '17', -94906265, '-94906248'); -test(macro, '-17', -94906265, '-94906282'); -test(macro, '17', 94906266, '94906283'); -test(macro, '-17', 94906266, '94906249'); -test(macro, '17', -94906266, '-94906249'); -test(macro, '-17', -94906266, '-94906283'); -test(macro, '17', 1073741824, '1073741841'); -test(macro, '-17', 1073741824, '1073741807'); -test(macro, '17', -1073741824, '-1073741807'); -test(macro, '-17', -1073741824, '-1073741841'); -test(macro, '17', 51676101935731, '51676101935748'); -test(macro, '-17', 51676101935731, '51676101935714'); -test(macro, '17', -51676101935731, '-51676101935714'); -test(macro, '-17', -51676101935731, '-51676101935748'); -test(macro, '22', 0, '22'); -test(macro, '-22', 0, '-22'); -test(macro, '22', 1, '23'); -test(macro, '-22', 1, '-21'); -test(macro, '22', -1, '21'); -test(macro, '-22', -1, '-23'); -test(macro, '22', 3, '25'); -test(macro, '-22', 3, '-19'); -test(macro, '22', -3, '19'); -test(macro, '-22', -3, '-25'); -test(macro, '22', 7, '29'); -test(macro, '-22', 7, '-15'); -test(macro, '22', -7, '15'); -test(macro, '-22', -7, '-29'); -test(macro, '22', 9, '31'); -test(macro, '-22', 9, '-13'); -test(macro, '22', -9, '13'); -test(macro, '-22', -9, '-31'); -test(macro, '22', 11, '33'); -test(macro, '-22', 11, '-11'); -test(macro, '22', -11, '11'); -test(macro, '-22', -11, '-33'); -test(macro, '22', 17, '39'); -test(macro, '-22', 17, '-5'); -test(macro, '22', -17, '5'); -test(macro, '-22', -17, '-39'); -test(macro, '22', 22, '44'); -test(macro, '-22', 22, '0'); -test(macro, '22', -22, '0'); -test(macro, '-22', -22, '-44'); -test(macro, '22', 24, '46'); -test(macro, '-22', 24, '2'); -test(macro, '22', -24, '-2'); -test(macro, '-22', -24, '-46'); -test(macro, '22', 27, '49'); -test(macro, '-22', 27, '5'); -test(macro, '22', -27, '-5'); -test(macro, '-22', -27, '-49'); -test(macro, '22', 29, '51'); -test(macro, '-22', 29, '7'); -test(macro, '22', -29, '-7'); -test(macro, '-22', -29, '-51'); -test(macro, '22', 1234, '1256'); -test(macro, '-22', 1234, '1212'); -test(macro, '22', -1234, '-1212'); -test(macro, '-22', -1234, '-1256'); -test(macro, '22', 5678, '5700'); -test(macro, '-22', 5678, '5656'); -test(macro, '22', -5678, '-5656'); -test(macro, '-22', -5678, '-5700'); -test(macro, '22', 94906265, '94906287'); -test(macro, '-22', 94906265, '94906243'); -test(macro, '22', -94906265, '-94906243'); -test(macro, '-22', -94906265, '-94906287'); -test(macro, '22', 94906266, '94906288'); -test(macro, '-22', 94906266, '94906244'); -test(macro, '22', -94906266, '-94906244'); -test(macro, '-22', -94906266, '-94906288'); -test(macro, '22', 1073741824, '1073741846'); -test(macro, '-22', 1073741824, '1073741802'); -test(macro, '22', -1073741824, '-1073741802'); -test(macro, '-22', -1073741824, '-1073741846'); -test(macro, '22', 51676101935731, '51676101935753'); -test(macro, '-22', 51676101935731, '51676101935709'); -test(macro, '22', -51676101935731, '-51676101935709'); -test(macro, '-22', -51676101935731, '-51676101935753'); -test(macro, '24', 0, '24'); -test(macro, '-24', 0, '-24'); -test(macro, '24', 1, '25'); -test(macro, '-24', 1, '-23'); -test(macro, '24', -1, '23'); -test(macro, '-24', -1, '-25'); -test(macro, '24', 3, '27'); -test(macro, '-24', 3, '-21'); -test(macro, '24', -3, '21'); -test(macro, '-24', -3, '-27'); -test(macro, '24', 7, '31'); -test(macro, '-24', 7, '-17'); -test(macro, '24', -7, '17'); -test(macro, '-24', -7, '-31'); -test(macro, '24', 9, '33'); -test(macro, '-24', 9, '-15'); -test(macro, '24', -9, '15'); -test(macro, '-24', -9, '-33'); -test(macro, '24', 11, '35'); -test(macro, '-24', 11, '-13'); -test(macro, '24', -11, '13'); -test(macro, '-24', -11, '-35'); -test(macro, '24', 17, '41'); -test(macro, '-24', 17, '-7'); -test(macro, '24', -17, '7'); -test(macro, '-24', -17, '-41'); -test(macro, '24', 22, '46'); -test(macro, '-24', 22, '-2'); -test(macro, '24', -22, '2'); -test(macro, '-24', -22, '-46'); -test(macro, '24', 24, '48'); -test(macro, '-24', 24, '0'); -test(macro, '24', -24, '0'); -test(macro, '-24', -24, '-48'); -test(macro, '24', 27, '51'); -test(macro, '-24', 27, '3'); -test(macro, '24', -27, '-3'); -test(macro, '-24', -27, '-51'); -test(macro, '24', 29, '53'); -test(macro, '-24', 29, '5'); -test(macro, '24', -29, '-5'); -test(macro, '-24', -29, '-53'); -test(macro, '24', 1234, '1258'); -test(macro, '-24', 1234, '1210'); -test(macro, '24', -1234, '-1210'); -test(macro, '-24', -1234, '-1258'); -test(macro, '24', 5678, '5702'); -test(macro, '-24', 5678, '5654'); -test(macro, '24', -5678, '-5654'); -test(macro, '-24', -5678, '-5702'); -test(macro, '24', 94906265, '94906289'); -test(macro, '-24', 94906265, '94906241'); -test(macro, '24', -94906265, '-94906241'); -test(macro, '-24', -94906265, '-94906289'); -test(macro, '24', 94906266, '94906290'); -test(macro, '-24', 94906266, '94906242'); -test(macro, '24', -94906266, '-94906242'); -test(macro, '-24', -94906266, '-94906290'); -test(macro, '24', 1073741824, '1073741848'); -test(macro, '-24', 1073741824, '1073741800'); -test(macro, '24', -1073741824, '-1073741800'); -test(macro, '-24', -1073741824, '-1073741848'); -test(macro, '24', 51676101935731, '51676101935755'); -test(macro, '-24', 51676101935731, '51676101935707'); -test(macro, '24', -51676101935731, '-51676101935707'); -test(macro, '-24', -51676101935731, '-51676101935755'); -test(macro, '27', 0, '27'); -test(macro, '-27', 0, '-27'); -test(macro, '27', 1, '28'); -test(macro, '-27', 1, '-26'); -test(macro, '27', -1, '26'); -test(macro, '-27', -1, '-28'); -test(macro, '27', 3, '30'); -test(macro, '-27', 3, '-24'); -test(macro, '27', -3, '24'); -test(macro, '-27', -3, '-30'); -test(macro, '27', 7, '34'); -test(macro, '-27', 7, '-20'); -test(macro, '27', -7, '20'); -test(macro, '-27', -7, '-34'); -test(macro, '27', 9, '36'); -test(macro, '-27', 9, '-18'); -test(macro, '27', -9, '18'); -test(macro, '-27', -9, '-36'); -test(macro, '27', 11, '38'); -test(macro, '-27', 11, '-16'); -test(macro, '27', -11, '16'); -test(macro, '-27', -11, '-38'); -test(macro, '27', 17, '44'); -test(macro, '-27', 17, '-10'); -test(macro, '27', -17, '10'); -test(macro, '-27', -17, '-44'); -test(macro, '27', 22, '49'); -test(macro, '-27', 22, '-5'); -test(macro, '27', -22, '5'); -test(macro, '-27', -22, '-49'); -test(macro, '27', 24, '51'); -test(macro, '-27', 24, '-3'); -test(macro, '27', -24, '3'); -test(macro, '-27', -24, '-51'); -test(macro, '27', 27, '54'); -test(macro, '-27', 27, '0'); -test(macro, '27', -27, '0'); -test(macro, '-27', -27, '-54'); -test(macro, '27', 29, '56'); -test(macro, '-27', 29, '2'); -test(macro, '27', -29, '-2'); -test(macro, '-27', -29, '-56'); -test(macro, '27', 1234, '1261'); -test(macro, '-27', 1234, '1207'); -test(macro, '27', -1234, '-1207'); -test(macro, '-27', -1234, '-1261'); -test(macro, '27', 5678, '5705'); -test(macro, '-27', 5678, '5651'); -test(macro, '27', -5678, '-5651'); -test(macro, '-27', -5678, '-5705'); -test(macro, '27', 94906265, '94906292'); -test(macro, '-27', 94906265, '94906238'); -test(macro, '27', -94906265, '-94906238'); -test(macro, '-27', -94906265, '-94906292'); -test(macro, '27', 94906266, '94906293'); -test(macro, '-27', 94906266, '94906239'); -test(macro, '27', -94906266, '-94906239'); -test(macro, '-27', -94906266, '-94906293'); -test(macro, '27', 1073741824, '1073741851'); -test(macro, '-27', 1073741824, '1073741797'); -test(macro, '27', -1073741824, '-1073741797'); -test(macro, '-27', -1073741824, '-1073741851'); -test(macro, '27', 51676101935731, '51676101935758'); -test(macro, '-27', 51676101935731, '51676101935704'); -test(macro, '27', -51676101935731, '-51676101935704'); -test(macro, '-27', -51676101935731, '-51676101935758'); -test(macro, '29', 0, '29'); -test(macro, '-29', 0, '-29'); -test(macro, '29', 1, '30'); -test(macro, '-29', 1, '-28'); -test(macro, '29', -1, '28'); -test(macro, '-29', -1, '-30'); -test(macro, '29', 3, '32'); -test(macro, '-29', 3, '-26'); -test(macro, '29', -3, '26'); -test(macro, '-29', -3, '-32'); -test(macro, '29', 7, '36'); -test(macro, '-29', 7, '-22'); -test(macro, '29', -7, '22'); -test(macro, '-29', -7, '-36'); -test(macro, '29', 9, '38'); -test(macro, '-29', 9, '-20'); -test(macro, '29', -9, '20'); -test(macro, '-29', -9, '-38'); -test(macro, '29', 11, '40'); -test(macro, '-29', 11, '-18'); -test(macro, '29', -11, '18'); -test(macro, '-29', -11, '-40'); -test(macro, '29', 17, '46'); -test(macro, '-29', 17, '-12'); -test(macro, '29', -17, '12'); -test(macro, '-29', -17, '-46'); -test(macro, '29', 22, '51'); -test(macro, '-29', 22, '-7'); -test(macro, '29', -22, '7'); -test(macro, '-29', -22, '-51'); -test(macro, '29', 24, '53'); -test(macro, '-29', 24, '-5'); -test(macro, '29', -24, '5'); -test(macro, '-29', -24, '-53'); -test(macro, '29', 27, '56'); -test(macro, '-29', 27, '-2'); -test(macro, '29', -27, '2'); -test(macro, '-29', -27, '-56'); -test(macro, '29', 29, '58'); -test(macro, '-29', 29, '0'); -test(macro, '29', -29, '0'); -test(macro, '-29', -29, '-58'); -test(macro, '29', 1234, '1263'); -test(macro, '-29', 1234, '1205'); -test(macro, '29', -1234, '-1205'); -test(macro, '-29', -1234, '-1263'); -test(macro, '29', 5678, '5707'); -test(macro, '-29', 5678, '5649'); -test(macro, '29', -5678, '-5649'); -test(macro, '-29', -5678, '-5707'); -test(macro, '29', 94906265, '94906294'); -test(macro, '-29', 94906265, '94906236'); -test(macro, '29', -94906265, '-94906236'); -test(macro, '-29', -94906265, '-94906294'); -test(macro, '29', 94906266, '94906295'); -test(macro, '-29', 94906266, '94906237'); -test(macro, '29', -94906266, '-94906237'); -test(macro, '-29', -94906266, '-94906295'); -test(macro, '29', 1073741824, '1073741853'); -test(macro, '-29', 1073741824, '1073741795'); -test(macro, '29', -1073741824, '-1073741795'); -test(macro, '-29', -1073741824, '-1073741853'); -test(macro, '29', 51676101935731, '51676101935760'); -test(macro, '-29', 51676101935731, '51676101935702'); -test(macro, '29', -51676101935731, '-51676101935702'); -test(macro, '-29', -51676101935731, '-51676101935760'); -test(macro, '1234', 0, '1234'); -test(macro, '-1234', 0, '-1234'); -test(macro, '1234', 1, '1235'); -test(macro, '-1234', 1, '-1233'); -test(macro, '1234', -1, '1233'); -test(macro, '-1234', -1, '-1235'); -test(macro, '1234', 3, '1237'); -test(macro, '-1234', 3, '-1231'); -test(macro, '1234', -3, '1231'); -test(macro, '-1234', -3, '-1237'); -test(macro, '1234', 7, '1241'); -test(macro, '-1234', 7, '-1227'); -test(macro, '1234', -7, '1227'); -test(macro, '-1234', -7, '-1241'); -test(macro, '1234', 9, '1243'); -test(macro, '-1234', 9, '-1225'); -test(macro, '1234', -9, '1225'); -test(macro, '-1234', -9, '-1243'); -test(macro, '1234', 11, '1245'); -test(macro, '-1234', 11, '-1223'); -test(macro, '1234', -11, '1223'); -test(macro, '-1234', -11, '-1245'); -test(macro, '1234', 17, '1251'); -test(macro, '-1234', 17, '-1217'); -test(macro, '1234', -17, '1217'); -test(macro, '-1234', -17, '-1251'); -test(macro, '1234', 22, '1256'); -test(macro, '-1234', 22, '-1212'); -test(macro, '1234', -22, '1212'); -test(macro, '-1234', -22, '-1256'); -test(macro, '1234', 24, '1258'); -test(macro, '-1234', 24, '-1210'); -test(macro, '1234', -24, '1210'); -test(macro, '-1234', -24, '-1258'); -test(macro, '1234', 27, '1261'); -test(macro, '-1234', 27, '-1207'); -test(macro, '1234', -27, '1207'); -test(macro, '-1234', -27, '-1261'); -test(macro, '1234', 29, '1263'); -test(macro, '-1234', 29, '-1205'); -test(macro, '1234', -29, '1205'); -test(macro, '-1234', -29, '-1263'); -test(macro, '1234', 1234, '2468'); -test(macro, '-1234', 1234, '0'); -test(macro, '1234', -1234, '0'); -test(macro, '-1234', -1234, '-2468'); -test(macro, '1234', 5678, '6912'); -test(macro, '-1234', 5678, '4444'); -test(macro, '1234', -5678, '-4444'); -test(macro, '-1234', -5678, '-6912'); -test(macro, '1234', 94906265, '94907499'); -test(macro, '-1234', 94906265, '94905031'); -test(macro, '1234', -94906265, '-94905031'); -test(macro, '-1234', -94906265, '-94907499'); -test(macro, '1234', 94906266, '94907500'); -test(macro, '-1234', 94906266, '94905032'); -test(macro, '1234', -94906266, '-94905032'); -test(macro, '-1234', -94906266, '-94907500'); -test(macro, '1234', 1073741824, '1073743058'); -test(macro, '-1234', 1073741824, '1073740590'); -test(macro, '1234', -1073741824, '-1073740590'); -test(macro, '-1234', -1073741824, '-1073743058'); -test(macro, '1234', 51676101935731, '51676101936965'); -test(macro, '-1234', 51676101935731, '51676101934497'); -test(macro, '1234', -51676101935731, '-51676101934497'); -test(macro, '-1234', -51676101935731, '-51676101936965'); -test(macro, '5678', 0, '5678'); -test(macro, '-5678', 0, '-5678'); -test(macro, '5678', 1, '5679'); -test(macro, '-5678', 1, '-5677'); -test(macro, '5678', -1, '5677'); -test(macro, '-5678', -1, '-5679'); -test(macro, '5678', 3, '5681'); -test(macro, '-5678', 3, '-5675'); -test(macro, '5678', -3, '5675'); -test(macro, '-5678', -3, '-5681'); -test(macro, '5678', 7, '5685'); -test(macro, '-5678', 7, '-5671'); -test(macro, '5678', -7, '5671'); -test(macro, '-5678', -7, '-5685'); -test(macro, '5678', 9, '5687'); -test(macro, '-5678', 9, '-5669'); -test(macro, '5678', -9, '5669'); -test(macro, '-5678', -9, '-5687'); -test(macro, '5678', 11, '5689'); -test(macro, '-5678', 11, '-5667'); -test(macro, '5678', -11, '5667'); -test(macro, '-5678', -11, '-5689'); -test(macro, '5678', 17, '5695'); -test(macro, '-5678', 17, '-5661'); -test(macro, '5678', -17, '5661'); -test(macro, '-5678', -17, '-5695'); -test(macro, '5678', 22, '5700'); -test(macro, '-5678', 22, '-5656'); -test(macro, '5678', -22, '5656'); -test(macro, '-5678', -22, '-5700'); -test(macro, '5678', 24, '5702'); -test(macro, '-5678', 24, '-5654'); -test(macro, '5678', -24, '5654'); -test(macro, '-5678', -24, '-5702'); -test(macro, '5678', 27, '5705'); -test(macro, '-5678', 27, '-5651'); -test(macro, '5678', -27, '5651'); -test(macro, '-5678', -27, '-5705'); -test(macro, '5678', 29, '5707'); -test(macro, '-5678', 29, '-5649'); -test(macro, '5678', -29, '5649'); -test(macro, '-5678', -29, '-5707'); -test(macro, '5678', 1234, '6912'); -test(macro, '-5678', 1234, '-4444'); -test(macro, '5678', -1234, '4444'); -test(macro, '-5678', -1234, '-6912'); -test(macro, '5678', 5678, '11356'); -test(macro, '-5678', 5678, '0'); -test(macro, '5678', -5678, '0'); -test(macro, '-5678', -5678, '-11356'); -test(macro, '5678', 94906265, '94911943'); -test(macro, '-5678', 94906265, '94900587'); -test(macro, '5678', -94906265, '-94900587'); -test(macro, '-5678', -94906265, '-94911943'); -test(macro, '5678', 94906266, '94911944'); -test(macro, '-5678', 94906266, '94900588'); -test(macro, '5678', -94906266, '-94900588'); -test(macro, '-5678', -94906266, '-94911944'); -test(macro, '5678', 1073741824, '1073747502'); -test(macro, '-5678', 1073741824, '1073736146'); -test(macro, '5678', -1073741824, '-1073736146'); -test(macro, '-5678', -1073741824, '-1073747502'); -test(macro, '5678', 51676101935731, '51676101941409'); -test(macro, '-5678', 51676101935731, '51676101930053'); -test(macro, '5678', -51676101935731, '-51676101930053'); -test(macro, '-5678', -51676101935731, '-51676101941409'); -test(macro, '94906265', 0, '94906265'); -test(macro, '-94906265', 0, '-94906265'); -test(macro, '94906265', 1, '94906266'); -test(macro, '-94906265', 1, '-94906264'); -test(macro, '94906265', -1, '94906264'); -test(macro, '-94906265', -1, '-94906266'); -test(macro, '94906265', 3, '94906268'); -test(macro, '-94906265', 3, '-94906262'); -test(macro, '94906265', -3, '94906262'); -test(macro, '-94906265', -3, '-94906268'); -test(macro, '94906265', 7, '94906272'); -test(macro, '-94906265', 7, '-94906258'); -test(macro, '94906265', -7, '94906258'); -test(macro, '-94906265', -7, '-94906272'); -test(macro, '94906265', 9, '94906274'); -test(macro, '-94906265', 9, '-94906256'); -test(macro, '94906265', -9, '94906256'); -test(macro, '-94906265', -9, '-94906274'); -test(macro, '94906265', 11, '94906276'); -test(macro, '-94906265', 11, '-94906254'); -test(macro, '94906265', -11, '94906254'); -test(macro, '-94906265', -11, '-94906276'); -test(macro, '94906265', 17, '94906282'); -test(macro, '-94906265', 17, '-94906248'); -test(macro, '94906265', -17, '94906248'); -test(macro, '-94906265', -17, '-94906282'); -test(macro, '94906265', 22, '94906287'); -test(macro, '-94906265', 22, '-94906243'); -test(macro, '94906265', -22, '94906243'); -test(macro, '-94906265', -22, '-94906287'); -test(macro, '94906265', 24, '94906289'); -test(macro, '-94906265', 24, '-94906241'); -test(macro, '94906265', -24, '94906241'); -test(macro, '-94906265', -24, '-94906289'); -test(macro, '94906265', 27, '94906292'); -test(macro, '-94906265', 27, '-94906238'); -test(macro, '94906265', -27, '94906238'); -test(macro, '-94906265', -27, '-94906292'); -test(macro, '94906265', 29, '94906294'); -test(macro, '-94906265', 29, '-94906236'); -test(macro, '94906265', -29, '94906236'); -test(macro, '-94906265', -29, '-94906294'); -test(macro, '94906265', 1234, '94907499'); -test(macro, '-94906265', 1234, '-94905031'); -test(macro, '94906265', -1234, '94905031'); -test(macro, '-94906265', -1234, '-94907499'); -test(macro, '94906265', 5678, '94911943'); -test(macro, '-94906265', 5678, '-94900587'); -test(macro, '94906265', -5678, '94900587'); -test(macro, '-94906265', -5678, '-94911943'); -test(macro, '94906265', 94906265, '189812530'); -test(macro, '-94906265', 94906265, '0'); -test(macro, '94906265', -94906265, '0'); -test(macro, '-94906265', -94906265, '-189812530'); -test(macro, '94906265', 94906266, '189812531'); -test(macro, '-94906265', 94906266, '1'); -test(macro, '94906265', -94906266, '-1'); -test(macro, '-94906265', -94906266, '-189812531'); -test(macro, '94906265', 1073741824, '1168648089'); -test(macro, '-94906265', 1073741824, '978835559'); -test(macro, '94906265', -1073741824, '-978835559'); -test(macro, '-94906265', -1073741824, '-1168648089'); -test(macro, '94906265', 51676101935731, '51676196841996'); -test(macro, '-94906265', 51676101935731, '51676007029466'); -test(macro, '94906265', -51676101935731, '-51676007029466'); -test(macro, '-94906265', -51676101935731, '-51676196841996'); -test(macro, '94906266', 0, '94906266'); -test(macro, '-94906266', 0, '-94906266'); -test(macro, '94906266', 1, '94906267'); -test(macro, '-94906266', 1, '-94906265'); -test(macro, '94906266', -1, '94906265'); -test(macro, '-94906266', -1, '-94906267'); -test(macro, '94906266', 3, '94906269'); -test(macro, '-94906266', 3, '-94906263'); -test(macro, '94906266', -3, '94906263'); -test(macro, '-94906266', -3, '-94906269'); -test(macro, '94906266', 7, '94906273'); -test(macro, '-94906266', 7, '-94906259'); -test(macro, '94906266', -7, '94906259'); -test(macro, '-94906266', -7, '-94906273'); -test(macro, '94906266', 9, '94906275'); -test(macro, '-94906266', 9, '-94906257'); -test(macro, '94906266', -9, '94906257'); -test(macro, '-94906266', -9, '-94906275'); -test(macro, '94906266', 11, '94906277'); -test(macro, '-94906266', 11, '-94906255'); -test(macro, '94906266', -11, '94906255'); -test(macro, '-94906266', -11, '-94906277'); -test(macro, '94906266', 17, '94906283'); -test(macro, '-94906266', 17, '-94906249'); -test(macro, '94906266', -17, '94906249'); -test(macro, '-94906266', -17, '-94906283'); -test(macro, '94906266', 22, '94906288'); -test(macro, '-94906266', 22, '-94906244'); -test(macro, '94906266', -22, '94906244'); -test(macro, '-94906266', -22, '-94906288'); -test(macro, '94906266', 24, '94906290'); -test(macro, '-94906266', 24, '-94906242'); -test(macro, '94906266', -24, '94906242'); -test(macro, '-94906266', -24, '-94906290'); -test(macro, '94906266', 27, '94906293'); -test(macro, '-94906266', 27, '-94906239'); -test(macro, '94906266', -27, '94906239'); -test(macro, '-94906266', -27, '-94906293'); -test(macro, '94906266', 29, '94906295'); -test(macro, '-94906266', 29, '-94906237'); -test(macro, '94906266', -29, '94906237'); -test(macro, '-94906266', -29, '-94906295'); -test(macro, '94906266', 1234, '94907500'); -test(macro, '-94906266', 1234, '-94905032'); -test(macro, '94906266', -1234, '94905032'); -test(macro, '-94906266', -1234, '-94907500'); -test(macro, '94906266', 5678, '94911944'); -test(macro, '-94906266', 5678, '-94900588'); -test(macro, '94906266', -5678, '94900588'); -test(macro, '-94906266', -5678, '-94911944'); -test(macro, '94906266', 94906265, '189812531'); -test(macro, '-94906266', 94906265, '-1'); -test(macro, '94906266', -94906265, '1'); -test(macro, '-94906266', -94906265, '-189812531'); -test(macro, '94906266', 94906266, '189812532'); -test(macro, '-94906266', 94906266, '0'); -test(macro, '94906266', -94906266, '0'); -test(macro, '-94906266', -94906266, '-189812532'); -test(macro, '94906266', 1073741824, '1168648090'); -test(macro, '-94906266', 1073741824, '978835558'); -test(macro, '94906266', -1073741824, '-978835558'); -test(macro, '-94906266', -1073741824, '-1168648090'); -test(macro, '94906266', 51676101935731, '51676196841997'); -test(macro, '-94906266', 51676101935731, '51676007029465'); -test(macro, '94906266', -51676101935731, '-51676007029465'); -test(macro, '-94906266', -51676101935731, '-51676196841997'); -test(macro, '1073741824', 0, '1073741824'); -test(macro, '-1073741824', 0, '-1073741824'); -test(macro, '1073741824', 1, '1073741825'); -test(macro, '-1073741824', 1, '-1073741823'); -test(macro, '1073741824', -1, '1073741823'); -test(macro, '-1073741824', -1, '-1073741825'); -test(macro, '1073741824', 3, '1073741827'); -test(macro, '-1073741824', 3, '-1073741821'); -test(macro, '1073741824', -3, '1073741821'); -test(macro, '-1073741824', -3, '-1073741827'); -test(macro, '1073741824', 7, '1073741831'); -test(macro, '-1073741824', 7, '-1073741817'); -test(macro, '1073741824', -7, '1073741817'); -test(macro, '-1073741824', -7, '-1073741831'); -test(macro, '1073741824', 9, '1073741833'); -test(macro, '-1073741824', 9, '-1073741815'); -test(macro, '1073741824', -9, '1073741815'); -test(macro, '-1073741824', -9, '-1073741833'); -test(macro, '1073741824', 11, '1073741835'); -test(macro, '-1073741824', 11, '-1073741813'); -test(macro, '1073741824', -11, '1073741813'); -test(macro, '-1073741824', -11, '-1073741835'); -test(macro, '1073741824', 17, '1073741841'); -test(macro, '-1073741824', 17, '-1073741807'); -test(macro, '1073741824', -17, '1073741807'); -test(macro, '-1073741824', -17, '-1073741841'); -test(macro, '1073741824', 22, '1073741846'); -test(macro, '-1073741824', 22, '-1073741802'); -test(macro, '1073741824', -22, '1073741802'); -test(macro, '-1073741824', -22, '-1073741846'); -test(macro, '1073741824', 24, '1073741848'); -test(macro, '-1073741824', 24, '-1073741800'); -test(macro, '1073741824', -24, '1073741800'); -test(macro, '-1073741824', -24, '-1073741848'); -test(macro, '1073741824', 27, '1073741851'); -test(macro, '-1073741824', 27, '-1073741797'); -test(macro, '1073741824', -27, '1073741797'); -test(macro, '-1073741824', -27, '-1073741851'); -test(macro, '1073741824', 29, '1073741853'); -test(macro, '-1073741824', 29, '-1073741795'); -test(macro, '1073741824', -29, '1073741795'); -test(macro, '-1073741824', -29, '-1073741853'); -test(macro, '1073741824', 1234, '1073743058'); -test(macro, '-1073741824', 1234, '-1073740590'); -test(macro, '1073741824', -1234, '1073740590'); -test(macro, '-1073741824', -1234, '-1073743058'); -test(macro, '1073741824', 5678, '1073747502'); -test(macro, '-1073741824', 5678, '-1073736146'); -test(macro, '1073741824', -5678, '1073736146'); -test(macro, '-1073741824', -5678, '-1073747502'); -test(macro, '1073741824', 94906265, '1168648089'); -test(macro, '-1073741824', 94906265, '-978835559'); -test(macro, '1073741824', -94906265, '978835559'); -test(macro, '-1073741824', -94906265, '-1168648089'); -test(macro, '1073741824', 94906266, '1168648090'); -test(macro, '-1073741824', 94906266, '-978835558'); -test(macro, '1073741824', -94906266, '978835558'); -test(macro, '-1073741824', -94906266, '-1168648090'); -test(macro, '1073741824', 1073741824, '2147483648'); -test(macro, '-1073741824', 1073741824, '0'); -test(macro, '1073741824', -1073741824, '0'); -test(macro, '-1073741824', -1073741824, '-2147483648'); -test(macro, '1073741824', 51676101935731, '51677175677555'); -test(macro, '-1073741824', 51676101935731, '51675028193907'); -test(macro, '1073741824', -51676101935731, '-51675028193907'); -test(macro, '-1073741824', -51676101935731, '-51677175677555'); -test(macro, '51676101935731', 0, '51676101935731'); -test(macro, '-51676101935731', 0, '-51676101935731'); -test(macro, '51676101935731', 1, '51676101935732'); -test(macro, '-51676101935731', 1, '-51676101935730'); -test(macro, '51676101935731', -1, '51676101935730'); -test(macro, '-51676101935731', -1, '-51676101935732'); -test(macro, '51676101935731', 3, '51676101935734'); -test(macro, '-51676101935731', 3, '-51676101935728'); -test(macro, '51676101935731', -3, '51676101935728'); -test(macro, '-51676101935731', -3, '-51676101935734'); -test(macro, '51676101935731', 7, '51676101935738'); -test(macro, '-51676101935731', 7, '-51676101935724'); -test(macro, '51676101935731', -7, '51676101935724'); -test(macro, '-51676101935731', -7, '-51676101935738'); -test(macro, '51676101935731', 9, '51676101935740'); -test(macro, '-51676101935731', 9, '-51676101935722'); -test(macro, '51676101935731', -9, '51676101935722'); -test(macro, '-51676101935731', -9, '-51676101935740'); -test(macro, '51676101935731', 11, '51676101935742'); -test(macro, '-51676101935731', 11, '-51676101935720'); -test(macro, '51676101935731', -11, '51676101935720'); -test(macro, '-51676101935731', -11, '-51676101935742'); -test(macro, '51676101935731', 17, '51676101935748'); -test(macro, '-51676101935731', 17, '-51676101935714'); -test(macro, '51676101935731', -17, '51676101935714'); -test(macro, '-51676101935731', -17, '-51676101935748'); -test(macro, '51676101935731', 22, '51676101935753'); -test(macro, '-51676101935731', 22, '-51676101935709'); -test(macro, '51676101935731', -22, '51676101935709'); -test(macro, '-51676101935731', -22, '-51676101935753'); -test(macro, '51676101935731', 24, '51676101935755'); -test(macro, '-51676101935731', 24, '-51676101935707'); -test(macro, '51676101935731', -24, '51676101935707'); -test(macro, '-51676101935731', -24, '-51676101935755'); -test(macro, '51676101935731', 27, '51676101935758'); -test(macro, '-51676101935731', 27, '-51676101935704'); -test(macro, '51676101935731', -27, '51676101935704'); -test(macro, '-51676101935731', -27, '-51676101935758'); -test(macro, '51676101935731', 29, '51676101935760'); -test(macro, '-51676101935731', 29, '-51676101935702'); -test(macro, '51676101935731', -29, '51676101935702'); -test(macro, '-51676101935731', -29, '-51676101935760'); -test(macro, '51676101935731', 1234, '51676101936965'); -test(macro, '-51676101935731', 1234, '-51676101934497'); -test(macro, '51676101935731', -1234, '51676101934497'); -test(macro, '-51676101935731', -1234, '-51676101936965'); -test(macro, '51676101935731', 5678, '51676101941409'); -test(macro, '-51676101935731', 5678, '-51676101930053'); -test(macro, '51676101935731', -5678, '51676101930053'); -test(macro, '-51676101935731', -5678, '-51676101941409'); -test(macro, '51676101935731', 94906265, '51676196841996'); -test(macro, '-51676101935731', 94906265, '-51676007029466'); -test(macro, '51676101935731', -94906265, '51676007029466'); -test(macro, '-51676101935731', -94906265, '-51676196841996'); -test(macro, '51676101935731', 94906266, '51676196841997'); -test(macro, '-51676101935731', 94906266, '-51676007029465'); -test(macro, '51676101935731', -94906266, '51676007029465'); -test(macro, '-51676101935731', -94906266, '-51676196841997'); -test(macro, '51676101935731', 1073741824, '51677175677555'); -test(macro, '-51676101935731', 1073741824, '-51675028193907'); -test(macro, '51676101935731', -1073741824, '51675028193907'); -test(macro, '-51676101935731', -1073741824, '-51677175677555'); -test(macro, '51676101935731', 51676101935731, '103352203871462'); -test(macro, '-51676101935731', 51676101935731, '0'); -test(macro, '51676101935731', -51676101935731, '0'); -test(macro, '-51676101935731', -51676101935731, '-103352203871462'); -test(macro, '717897987691852588770249', 0, '717897987691852588770249'); -test(macro, '-717897987691852588770249', 0, '-717897987691852588770249'); -test(macro, '717897987691852588770249', 1, '717897987691852588770250'); -test(macro, '-717897987691852588770249', 1, '-717897987691852588770248'); -test(macro, '717897987691852588770249', -1, '717897987691852588770248'); -test(macro, '-717897987691852588770249', -1, '-717897987691852588770250'); -test(macro, '717897987691852588770249', 3, '717897987691852588770252'); -test(macro, '-717897987691852588770249', 3, '-717897987691852588770246'); -test(macro, '717897987691852588770249', -3, '717897987691852588770246'); -test(macro, '-717897987691852588770249', -3, '-717897987691852588770252'); -test(macro, '717897987691852588770249', 7, '717897987691852588770256'); -test(macro, '-717897987691852588770249', 7, '-717897987691852588770242'); -test(macro, '717897987691852588770249', -7, '717897987691852588770242'); -test(macro, '-717897987691852588770249', -7, '-717897987691852588770256'); -test(macro, '717897987691852588770249', 9, '717897987691852588770258'); -test(macro, '-717897987691852588770249', 9, '-717897987691852588770240'); -test(macro, '717897987691852588770249', -9, '717897987691852588770240'); -test(macro, '-717897987691852588770249', -9, '-717897987691852588770258'); -test(macro, '717897987691852588770249', 11, '717897987691852588770260'); -test(macro, '-717897987691852588770249', 11, '-717897987691852588770238'); -test(macro, '717897987691852588770249', -11, '717897987691852588770238'); -test(macro, '-717897987691852588770249', -11, '-717897987691852588770260'); -test(macro, '717897987691852588770249', 17, '717897987691852588770266'); -test(macro, '-717897987691852588770249', 17, '-717897987691852588770232'); -test(macro, '717897987691852588770249', -17, '717897987691852588770232'); -test(macro, '-717897987691852588770249', -17, '-717897987691852588770266'); -test(macro, '717897987691852588770249', 22, '717897987691852588770271'); -test(macro, '-717897987691852588770249', 22, '-717897987691852588770227'); -test(macro, '717897987691852588770249', -22, '717897987691852588770227'); -test(macro, '-717897987691852588770249', -22, '-717897987691852588770271'); -test(macro, '717897987691852588770249', 24, '717897987691852588770273'); -test(macro, '-717897987691852588770249', 24, '-717897987691852588770225'); -test(macro, '717897987691852588770249', -24, '717897987691852588770225'); -test(macro, '-717897987691852588770249', -24, '-717897987691852588770273'); -test(macro, '717897987691852588770249', 27, '717897987691852588770276'); -test(macro, '-717897987691852588770249', 27, '-717897987691852588770222'); -test(macro, '717897987691852588770249', -27, '717897987691852588770222'); -test(macro, '-717897987691852588770249', -27, '-717897987691852588770276'); -test(macro, '717897987691852588770249', 29, '717897987691852588770278'); -test(macro, '-717897987691852588770249', 29, '-717897987691852588770220'); -test(macro, '717897987691852588770249', -29, '717897987691852588770220'); -test(macro, '-717897987691852588770249', -29, '-717897987691852588770278'); -test(macro, '717897987691852588770249', 1234, '717897987691852588771483'); -test(macro, '-717897987691852588770249', 1234, '-717897987691852588769015'); -test(macro, '717897987691852588770249', -1234, '717897987691852588769015'); -test(macro, '-717897987691852588770249', -1234, '-717897987691852588771483'); -test(macro, '717897987691852588770249', 5678, '717897987691852588775927'); -test(macro, '-717897987691852588770249', 5678, '-717897987691852588764571'); -test(macro, '717897987691852588770249', -5678, '717897987691852588764571'); -test(macro, '-717897987691852588770249', -5678, '-717897987691852588775927'); -test(macro, '717897987691852588770249', 94906265, '717897987691852683676514'); -test(macro, '-717897987691852588770249', 94906265, '-717897987691852493863984'); -test(macro, '717897987691852588770249', -94906265, '717897987691852493863984'); -test( - macro, - '-717897987691852588770249', - -94906265, - '-717897987691852683676514', -); -test(macro, '717897987691852588770249', 94906266, '717897987691852683676515'); -test(macro, '-717897987691852588770249', 94906266, '-717897987691852493863983'); -test(macro, '717897987691852588770249', -94906266, '717897987691852493863983'); -test( - macro, - '-717897987691852588770249', - -94906266, - '-717897987691852683676515', -); -test(macro, '717897987691852588770249', 1073741824, '717897987691853662512073'); -test( - macro, - '-717897987691852588770249', - 1073741824, - '-717897987691851515028425', -); -test( - macro, - '717897987691852588770249', - -1073741824, - '717897987691851515028425', -); -test( - macro, - '-717897987691852588770249', - -1073741824, - '-717897987691853662512073', -); -test( - macro, - '717897987691852588770249', - 51676101935731, - '717897987743528690705980', -); -test( - macro, - '-717897987691852588770249', - 51676101935731, - '-717897987640176486834518', -); -test( - macro, - '717897987691852588770249', - -51676101935731, - '717897987640176486834518', -); -test( - macro, - '-717897987691852588770249', - -51676101935731, - '-717897987743528690705980', -); diff --git a/test/src/integer/arithmetic/div.js b/test/src/integer/arithmetic/div.js deleted file mode 100644 index b335e4f..0000000 --- a/test/src/integer/arithmetic/div.js +++ /dev/null @@ -1,1206 +0,0 @@ -import test from 'ava'; -import {parse, stringify, div} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const b = parse(B); - const c = div(a, b); - t.is(stringify(a), A); - t.is(stringify(b), B); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `div(${fmt(A)},${fmt(B)}) = ${fmt(C)}`; - -test(macro, '0', '1', '0'); -test(macro, '0', '-1', '0'); -test(macro, '0', '3', '0'); -test(macro, '0', '-3', '0'); -test(macro, '0', '7', '0'); -test(macro, '0', '-7', '0'); -test(macro, '0', '9', '0'); -test(macro, '0', '-9', '0'); -test(macro, '0', '11', '0'); -test(macro, '0', '-11', '0'); -test(macro, '0', '17', '0'); -test(macro, '0', '-17', '0'); -test(macro, '0', '22', '0'); -test(macro, '0', '-22', '0'); -test(macro, '0', '24', '0'); -test(macro, '0', '-24', '0'); -test(macro, '0', '27', '0'); -test(macro, '0', '-27', '0'); -test(macro, '0', '29', '0'); -test(macro, '0', '-29', '0'); -test(macro, '0', '1234', '0'); -test(macro, '0', '-1234', '0'); -test(macro, '0', '5678', '0'); -test(macro, '0', '-5678', '0'); -test(macro, '0', '94906265', '0'); -test(macro, '0', '-94906265', '0'); -test(macro, '0', '94906266', '0'); -test(macro, '0', '-94906266', '0'); -test(macro, '0', '1073741824', '0'); -test(macro, '0', '-1073741824', '0'); -test(macro, '0', '51676101935731', '0'); -test(macro, '0', '-51676101935731', '0'); -test(macro, '0', '717897987691852588770249', '0'); -test(macro, '0', '-717897987691852588770249', '0'); -test(macro, '1', '1', '1'); -test(macro, '-1', '1', '-1'); -test(macro, '1', '-1', '-1'); -test(macro, '-1', '-1', '1'); -test(macro, '1', '3', '0'); -test(macro, '-1', '3', '-1'); -test(macro, '1', '-3', '-1'); -test(macro, '-1', '-3', '0'); -test(macro, '1', '7', '0'); -test(macro, '-1', '7', '-1'); -test(macro, '1', '-7', '-1'); -test(macro, '-1', '-7', '0'); -test(macro, '1', '9', '0'); -test(macro, '-1', '9', '-1'); -test(macro, '1', '-9', '-1'); -test(macro, '-1', '-9', '0'); -test(macro, '1', '11', '0'); -test(macro, '-1', '11', '-1'); -test(macro, '1', '-11', '-1'); -test(macro, '-1', '-11', '0'); -test(macro, '1', '17', '0'); -test(macro, '-1', '17', '-1'); -test(macro, '1', '-17', '-1'); -test(macro, '-1', '-17', '0'); -test(macro, '1', '22', '0'); -test(macro, '-1', '22', '-1'); -test(macro, '1', '-22', '-1'); -test(macro, '-1', '-22', '0'); -test(macro, '1', '24', '0'); -test(macro, '-1', '24', '-1'); -test(macro, '1', '-24', '-1'); -test(macro, '-1', '-24', '0'); -test(macro, '1', '27', '0'); -test(macro, '-1', '27', '-1'); -test(macro, '1', '-27', '-1'); -test(macro, '-1', '-27', '0'); -test(macro, '1', '29', '0'); -test(macro, '-1', '29', '-1'); -test(macro, '1', '-29', '-1'); -test(macro, '-1', '-29', '0'); -test(macro, '1', '1234', '0'); -test(macro, '-1', '1234', '-1'); -test(macro, '1', '-1234', '-1'); -test(macro, '-1', '-1234', '0'); -test(macro, '1', '5678', '0'); -test(macro, '-1', '5678', '-1'); -test(macro, '1', '-5678', '-1'); -test(macro, '-1', '-5678', '0'); -test(macro, '1', '94906265', '0'); -test(macro, '-1', '94906265', '-1'); -test(macro, '1', '-94906265', '-1'); -test(macro, '-1', '-94906265', '0'); -test(macro, '1', '94906266', '0'); -test(macro, '-1', '94906266', '-1'); -test(macro, '1', '-94906266', '-1'); -test(macro, '-1', '-94906266', '0'); -test(macro, '1', '1073741824', '0'); -test(macro, '-1', '1073741824', '-1'); -test(macro, '1', '-1073741824', '-1'); -test(macro, '-1', '-1073741824', '0'); -test(macro, '1', '51676101935731', '0'); -test(macro, '-1', '51676101935731', '-1'); -test(macro, '1', '-51676101935731', '-1'); -test(macro, '-1', '-51676101935731', '0'); -test(macro, '1', '717897987691852588770249', '0'); -test(macro, '-1', '717897987691852588770249', '-1'); -test(macro, '1', '-717897987691852588770249', '-1'); -test(macro, '-1', '-717897987691852588770249', '0'); -test(macro, '3', '1', '3'); -test(macro, '-3', '1', '-3'); -test(macro, '3', '-1', '-3'); -test(macro, '-3', '-1', '3'); -test(macro, '3', '3', '1'); -test(macro, '-3', '3', '-1'); -test(macro, '3', '-3', '-1'); -test(macro, '-3', '-3', '1'); -test(macro, '3', '7', '0'); -test(macro, '-3', '7', '-1'); -test(macro, '3', '-7', '-1'); -test(macro, '-3', '-7', '0'); -test(macro, '3', '9', '0'); -test(macro, '-3', '9', '-1'); -test(macro, '3', '-9', '-1'); -test(macro, '-3', '-9', '0'); -test(macro, '3', '11', '0'); -test(macro, '-3', '11', '-1'); -test(macro, '3', '-11', '-1'); -test(macro, '-3', '-11', '0'); -test(macro, '3', '17', '0'); -test(macro, '-3', '17', '-1'); -test(macro, '3', '-17', '-1'); -test(macro, '-3', '-17', '0'); -test(macro, '3', '22', '0'); -test(macro, '-3', '22', '-1'); -test(macro, '3', '-22', '-1'); -test(macro, '-3', '-22', '0'); -test(macro, '3', '24', '0'); -test(macro, '-3', '24', '-1'); -test(macro, '3', '-24', '-1'); -test(macro, '-3', '-24', '0'); -test(macro, '3', '27', '0'); -test(macro, '-3', '27', '-1'); -test(macro, '3', '-27', '-1'); -test(macro, '-3', '-27', '0'); -test(macro, '3', '29', '0'); -test(macro, '-3', '29', '-1'); -test(macro, '3', '-29', '-1'); -test(macro, '-3', '-29', '0'); -test(macro, '3', '1234', '0'); -test(macro, '-3', '1234', '-1'); -test(macro, '3', '-1234', '-1'); -test(macro, '-3', '-1234', '0'); -test(macro, '3', '5678', '0'); -test(macro, '-3', '5678', '-1'); -test(macro, '3', '-5678', '-1'); -test(macro, '-3', '-5678', '0'); -test(macro, '3', '94906265', '0'); -test(macro, '-3', '94906265', '-1'); -test(macro, '3', '-94906265', '-1'); -test(macro, '-3', '-94906265', '0'); -test(macro, '3', '94906266', '0'); -test(macro, '-3', '94906266', '-1'); -test(macro, '3', '-94906266', '-1'); -test(macro, '-3', '-94906266', '0'); -test(macro, '3', '1073741824', '0'); -test(macro, '-3', '1073741824', '-1'); -test(macro, '3', '-1073741824', '-1'); -test(macro, '-3', '-1073741824', '0'); -test(macro, '3', '51676101935731', '0'); -test(macro, '-3', '51676101935731', '-1'); -test(macro, '3', '-51676101935731', '-1'); -test(macro, '-3', '-51676101935731', '0'); -test(macro, '3', '717897987691852588770249', '0'); -test(macro, '-3', '717897987691852588770249', '-1'); -test(macro, '3', '-717897987691852588770249', '-1'); -test(macro, '-3', '-717897987691852588770249', '0'); -test(macro, '7', '1', '7'); -test(macro, '-7', '1', '-7'); -test(macro, '7', '-1', '-7'); -test(macro, '-7', '-1', '7'); -test(macro, '7', '3', '2'); -test(macro, '-7', '3', '-3'); -test(macro, '7', '-3', '-3'); -test(macro, '-7', '-3', '2'); -test(macro, '7', '7', '1'); -test(macro, '-7', '7', '-1'); -test(macro, '7', '-7', '-1'); -test(macro, '-7', '-7', '1'); -test(macro, '7', '9', '0'); -test(macro, '-7', '9', '-1'); -test(macro, '7', '-9', '-1'); -test(macro, '-7', '-9', '0'); -test(macro, '7', '11', '0'); -test(macro, '-7', '11', '-1'); -test(macro, '7', '-11', '-1'); -test(macro, '-7', '-11', '0'); -test(macro, '7', '17', '0'); -test(macro, '-7', '17', '-1'); -test(macro, '7', '-17', '-1'); -test(macro, '-7', '-17', '0'); -test(macro, '7', '22', '0'); -test(macro, '-7', '22', '-1'); -test(macro, '7', '-22', '-1'); -test(macro, '-7', '-22', '0'); -test(macro, '7', '24', '0'); -test(macro, '-7', '24', '-1'); -test(macro, '7', '-24', '-1'); -test(macro, '-7', '-24', '0'); -test(macro, '7', '27', '0'); -test(macro, '-7', '27', '-1'); -test(macro, '7', '-27', '-1'); -test(macro, '-7', '-27', '0'); -test(macro, '7', '29', '0'); -test(macro, '-7', '29', '-1'); -test(macro, '7', '-29', '-1'); -test(macro, '-7', '-29', '0'); -test(macro, '7', '1234', '0'); -test(macro, '-7', '1234', '-1'); -test(macro, '7', '-1234', '-1'); -test(macro, '-7', '-1234', '0'); -test(macro, '7', '5678', '0'); -test(macro, '-7', '5678', '-1'); -test(macro, '7', '-5678', '-1'); -test(macro, '-7', '-5678', '0'); -test(macro, '7', '94906265', '0'); -test(macro, '-7', '94906265', '-1'); -test(macro, '7', '-94906265', '-1'); -test(macro, '-7', '-94906265', '0'); -test(macro, '7', '94906266', '0'); -test(macro, '-7', '94906266', '-1'); -test(macro, '7', '-94906266', '-1'); -test(macro, '-7', '-94906266', '0'); -test(macro, '7', '1073741824', '0'); -test(macro, '-7', '1073741824', '-1'); -test(macro, '7', '-1073741824', '-1'); -test(macro, '-7', '-1073741824', '0'); -test(macro, '7', '51676101935731', '0'); -test(macro, '-7', '51676101935731', '-1'); -test(macro, '7', '-51676101935731', '-1'); -test(macro, '-7', '-51676101935731', '0'); -test(macro, '7', '717897987691852588770249', '0'); -test(macro, '-7', '717897987691852588770249', '-1'); -test(macro, '7', '-717897987691852588770249', '-1'); -test(macro, '-7', '-717897987691852588770249', '0'); -test(macro, '9', '1', '9'); -test(macro, '-9', '1', '-9'); -test(macro, '9', '-1', '-9'); -test(macro, '-9', '-1', '9'); -test(macro, '9', '3', '3'); -test(macro, '-9', '3', '-3'); -test(macro, '9', '-3', '-3'); -test(macro, '-9', '-3', '3'); -test(macro, '9', '7', '1'); -test(macro, '-9', '7', '-2'); -test(macro, '9', '-7', '-2'); -test(macro, '-9', '-7', '1'); -test(macro, '9', '9', '1'); -test(macro, '-9', '9', '-1'); -test(macro, '9', '-9', '-1'); -test(macro, '-9', '-9', '1'); -test(macro, '9', '11', '0'); -test(macro, '-9', '11', '-1'); -test(macro, '9', '-11', '-1'); -test(macro, '-9', '-11', '0'); -test(macro, '9', '17', '0'); -test(macro, '-9', '17', '-1'); -test(macro, '9', '-17', '-1'); -test(macro, '-9', '-17', '0'); -test(macro, '9', '22', '0'); -test(macro, '-9', '22', '-1'); -test(macro, '9', '-22', '-1'); -test(macro, '-9', '-22', '0'); -test(macro, '9', '24', '0'); -test(macro, '-9', '24', '-1'); -test(macro, '9', '-24', '-1'); -test(macro, '-9', '-24', '0'); -test(macro, '9', '27', '0'); -test(macro, '-9', '27', '-1'); -test(macro, '9', '-27', '-1'); -test(macro, '-9', '-27', '0'); -test(macro, '9', '29', '0'); -test(macro, '-9', '29', '-1'); -test(macro, '9', '-29', '-1'); -test(macro, '-9', '-29', '0'); -test(macro, '9', '1234', '0'); -test(macro, '-9', '1234', '-1'); -test(macro, '9', '-1234', '-1'); -test(macro, '-9', '-1234', '0'); -test(macro, '9', '5678', '0'); -test(macro, '-9', '5678', '-1'); -test(macro, '9', '-5678', '-1'); -test(macro, '-9', '-5678', '0'); -test(macro, '9', '94906265', '0'); -test(macro, '-9', '94906265', '-1'); -test(macro, '9', '-94906265', '-1'); -test(macro, '-9', '-94906265', '0'); -test(macro, '9', '94906266', '0'); -test(macro, '-9', '94906266', '-1'); -test(macro, '9', '-94906266', '-1'); -test(macro, '-9', '-94906266', '0'); -test(macro, '9', '1073741824', '0'); -test(macro, '-9', '1073741824', '-1'); -test(macro, '9', '-1073741824', '-1'); -test(macro, '-9', '-1073741824', '0'); -test(macro, '9', '51676101935731', '0'); -test(macro, '-9', '51676101935731', '-1'); -test(macro, '9', '-51676101935731', '-1'); -test(macro, '-9', '-51676101935731', '0'); -test(macro, '9', '717897987691852588770249', '0'); -test(macro, '-9', '717897987691852588770249', '-1'); -test(macro, '9', '-717897987691852588770249', '-1'); -test(macro, '-9', '-717897987691852588770249', '0'); -test(macro, '11', '1', '11'); -test(macro, '-11', '1', '-11'); -test(macro, '11', '-1', '-11'); -test(macro, '-11', '-1', '11'); -test(macro, '11', '3', '3'); -test(macro, '-11', '3', '-4'); -test(macro, '11', '-3', '-4'); -test(macro, '-11', '-3', '3'); -test(macro, '11', '7', '1'); -test(macro, '-11', '7', '-2'); -test(macro, '11', '-7', '-2'); -test(macro, '-11', '-7', '1'); -test(macro, '11', '9', '1'); -test(macro, '-11', '9', '-2'); -test(macro, '11', '-9', '-2'); -test(macro, '-11', '-9', '1'); -test(macro, '11', '11', '1'); -test(macro, '-11', '11', '-1'); -test(macro, '11', '-11', '-1'); -test(macro, '-11', '-11', '1'); -test(macro, '11', '17', '0'); -test(macro, '-11', '17', '-1'); -test(macro, '11', '-17', '-1'); -test(macro, '-11', '-17', '0'); -test(macro, '11', '22', '0'); -test(macro, '-11', '22', '-1'); -test(macro, '11', '-22', '-1'); -test(macro, '-11', '-22', '0'); -test(macro, '11', '24', '0'); -test(macro, '-11', '24', '-1'); -test(macro, '11', '-24', '-1'); -test(macro, '-11', '-24', '0'); -test(macro, '11', '27', '0'); -test(macro, '-11', '27', '-1'); -test(macro, '11', '-27', '-1'); -test(macro, '-11', '-27', '0'); -test(macro, '11', '29', '0'); -test(macro, '-11', '29', '-1'); -test(macro, '11', '-29', '-1'); -test(macro, '-11', '-29', '0'); -test(macro, '11', '1234', '0'); -test(macro, '-11', '1234', '-1'); -test(macro, '11', '-1234', '-1'); -test(macro, '-11', '-1234', '0'); -test(macro, '11', '5678', '0'); -test(macro, '-11', '5678', '-1'); -test(macro, '11', '-5678', '-1'); -test(macro, '-11', '-5678', '0'); -test(macro, '11', '94906265', '0'); -test(macro, '-11', '94906265', '-1'); -test(macro, '11', '-94906265', '-1'); -test(macro, '-11', '-94906265', '0'); -test(macro, '11', '94906266', '0'); -test(macro, '-11', '94906266', '-1'); -test(macro, '11', '-94906266', '-1'); -test(macro, '-11', '-94906266', '0'); -test(macro, '11', '1073741824', '0'); -test(macro, '-11', '1073741824', '-1'); -test(macro, '11', '-1073741824', '-1'); -test(macro, '-11', '-1073741824', '0'); -test(macro, '11', '51676101935731', '0'); -test(macro, '-11', '51676101935731', '-1'); -test(macro, '11', '-51676101935731', '-1'); -test(macro, '-11', '-51676101935731', '0'); -test(macro, '11', '717897987691852588770249', '0'); -test(macro, '-11', '717897987691852588770249', '-1'); -test(macro, '11', '-717897987691852588770249', '-1'); -test(macro, '-11', '-717897987691852588770249', '0'); -test(macro, '17', '1', '17'); -test(macro, '-17', '1', '-17'); -test(macro, '17', '-1', '-17'); -test(macro, '-17', '-1', '17'); -test(macro, '17', '3', '5'); -test(macro, '-17', '3', '-6'); -test(macro, '17', '-3', '-6'); -test(macro, '-17', '-3', '5'); -test(macro, '17', '7', '2'); -test(macro, '-17', '7', '-3'); -test(macro, '17', '-7', '-3'); -test(macro, '-17', '-7', '2'); -test(macro, '17', '9', '1'); -test(macro, '-17', '9', '-2'); -test(macro, '17', '-9', '-2'); -test(macro, '-17', '-9', '1'); -test(macro, '17', '11', '1'); -test(macro, '-17', '11', '-2'); -test(macro, '17', '-11', '-2'); -test(macro, '-17', '-11', '1'); -test(macro, '17', '17', '1'); -test(macro, '-17', '17', '-1'); -test(macro, '17', '-17', '-1'); -test(macro, '-17', '-17', '1'); -test(macro, '17', '22', '0'); -test(macro, '-17', '22', '-1'); -test(macro, '17', '-22', '-1'); -test(macro, '-17', '-22', '0'); -test(macro, '17', '24', '0'); -test(macro, '-17', '24', '-1'); -test(macro, '17', '-24', '-1'); -test(macro, '-17', '-24', '0'); -test(macro, '17', '27', '0'); -test(macro, '-17', '27', '-1'); -test(macro, '17', '-27', '-1'); -test(macro, '-17', '-27', '0'); -test(macro, '17', '29', '0'); -test(macro, '-17', '29', '-1'); -test(macro, '17', '-29', '-1'); -test(macro, '-17', '-29', '0'); -test(macro, '17', '1234', '0'); -test(macro, '-17', '1234', '-1'); -test(macro, '17', '-1234', '-1'); -test(macro, '-17', '-1234', '0'); -test(macro, '17', '5678', '0'); -test(macro, '-17', '5678', '-1'); -test(macro, '17', '-5678', '-1'); -test(macro, '-17', '-5678', '0'); -test(macro, '17', '94906265', '0'); -test(macro, '-17', '94906265', '-1'); -test(macro, '17', '-94906265', '-1'); -test(macro, '-17', '-94906265', '0'); -test(macro, '17', '94906266', '0'); -test(macro, '-17', '94906266', '-1'); -test(macro, '17', '-94906266', '-1'); -test(macro, '-17', '-94906266', '0'); -test(macro, '17', '1073741824', '0'); -test(macro, '-17', '1073741824', '-1'); -test(macro, '17', '-1073741824', '-1'); -test(macro, '-17', '-1073741824', '0'); -test(macro, '17', '51676101935731', '0'); -test(macro, '-17', '51676101935731', '-1'); -test(macro, '17', '-51676101935731', '-1'); -test(macro, '-17', '-51676101935731', '0'); -test(macro, '17', '717897987691852588770249', '0'); -test(macro, '-17', '717897987691852588770249', '-1'); -test(macro, '17', '-717897987691852588770249', '-1'); -test(macro, '-17', '-717897987691852588770249', '0'); -test(macro, '22', '1', '22'); -test(macro, '-22', '1', '-22'); -test(macro, '22', '-1', '-22'); -test(macro, '-22', '-1', '22'); -test(macro, '22', '3', '7'); -test(macro, '-22', '3', '-8'); -test(macro, '22', '-3', '-8'); -test(macro, '-22', '-3', '7'); -test(macro, '22', '7', '3'); -test(macro, '-22', '7', '-4'); -test(macro, '22', '-7', '-4'); -test(macro, '-22', '-7', '3'); -test(macro, '22', '9', '2'); -test(macro, '-22', '9', '-3'); -test(macro, '22', '-9', '-3'); -test(macro, '-22', '-9', '2'); -test(macro, '22', '11', '2'); -test(macro, '-22', '11', '-2'); -test(macro, '22', '-11', '-2'); -test(macro, '-22', '-11', '2'); -test(macro, '22', '17', '1'); -test(macro, '-22', '17', '-2'); -test(macro, '22', '-17', '-2'); -test(macro, '-22', '-17', '1'); -test(macro, '22', '22', '1'); -test(macro, '-22', '22', '-1'); -test(macro, '22', '-22', '-1'); -test(macro, '-22', '-22', '1'); -test(macro, '22', '24', '0'); -test(macro, '-22', '24', '-1'); -test(macro, '22', '-24', '-1'); -test(macro, '-22', '-24', '0'); -test(macro, '22', '27', '0'); -test(macro, '-22', '27', '-1'); -test(macro, '22', '-27', '-1'); -test(macro, '-22', '-27', '0'); -test(macro, '22', '29', '0'); -test(macro, '-22', '29', '-1'); -test(macro, '22', '-29', '-1'); -test(macro, '-22', '-29', '0'); -test(macro, '22', '1234', '0'); -test(macro, '-22', '1234', '-1'); -test(macro, '22', '-1234', '-1'); -test(macro, '-22', '-1234', '0'); -test(macro, '22', '5678', '0'); -test(macro, '-22', '5678', '-1'); -test(macro, '22', '-5678', '-1'); -test(macro, '-22', '-5678', '0'); -test(macro, '22', '94906265', '0'); -test(macro, '-22', '94906265', '-1'); -test(macro, '22', '-94906265', '-1'); -test(macro, '-22', '-94906265', '0'); -test(macro, '22', '94906266', '0'); -test(macro, '-22', '94906266', '-1'); -test(macro, '22', '-94906266', '-1'); -test(macro, '-22', '-94906266', '0'); -test(macro, '22', '1073741824', '0'); -test(macro, '-22', '1073741824', '-1'); -test(macro, '22', '-1073741824', '-1'); -test(macro, '-22', '-1073741824', '0'); -test(macro, '22', '51676101935731', '0'); -test(macro, '-22', '51676101935731', '-1'); -test(macro, '22', '-51676101935731', '-1'); -test(macro, '-22', '-51676101935731', '0'); -test(macro, '22', '717897987691852588770249', '0'); -test(macro, '-22', '717897987691852588770249', '-1'); -test(macro, '22', '-717897987691852588770249', '-1'); -test(macro, '-22', '-717897987691852588770249', '0'); -test(macro, '24', '1', '24'); -test(macro, '-24', '1', '-24'); -test(macro, '24', '-1', '-24'); -test(macro, '-24', '-1', '24'); -test(macro, '24', '3', '8'); -test(macro, '-24', '3', '-8'); -test(macro, '24', '-3', '-8'); -test(macro, '-24', '-3', '8'); -test(macro, '24', '7', '3'); -test(macro, '-24', '7', '-4'); -test(macro, '24', '-7', '-4'); -test(macro, '-24', '-7', '3'); -test(macro, '24', '9', '2'); -test(macro, '-24', '9', '-3'); -test(macro, '24', '-9', '-3'); -test(macro, '-24', '-9', '2'); -test(macro, '24', '11', '2'); -test(macro, '-24', '11', '-3'); -test(macro, '24', '-11', '-3'); -test(macro, '-24', '-11', '2'); -test(macro, '24', '17', '1'); -test(macro, '-24', '17', '-2'); -test(macro, '24', '-17', '-2'); -test(macro, '-24', '-17', '1'); -test(macro, '24', '22', '1'); -test(macro, '-24', '22', '-2'); -test(macro, '24', '-22', '-2'); -test(macro, '-24', '-22', '1'); -test(macro, '24', '24', '1'); -test(macro, '-24', '24', '-1'); -test(macro, '24', '-24', '-1'); -test(macro, '-24', '-24', '1'); -test(macro, '24', '27', '0'); -test(macro, '-24', '27', '-1'); -test(macro, '24', '-27', '-1'); -test(macro, '-24', '-27', '0'); -test(macro, '24', '29', '0'); -test(macro, '-24', '29', '-1'); -test(macro, '24', '-29', '-1'); -test(macro, '-24', '-29', '0'); -test(macro, '24', '1234', '0'); -test(macro, '-24', '1234', '-1'); -test(macro, '24', '-1234', '-1'); -test(macro, '-24', '-1234', '0'); -test(macro, '24', '5678', '0'); -test(macro, '-24', '5678', '-1'); -test(macro, '24', '-5678', '-1'); -test(macro, '-24', '-5678', '0'); -test(macro, '24', '94906265', '0'); -test(macro, '-24', '94906265', '-1'); -test(macro, '24', '-94906265', '-1'); -test(macro, '-24', '-94906265', '0'); -test(macro, '24', '94906266', '0'); -test(macro, '-24', '94906266', '-1'); -test(macro, '24', '-94906266', '-1'); -test(macro, '-24', '-94906266', '0'); -test(macro, '24', '1073741824', '0'); -test(macro, '-24', '1073741824', '-1'); -test(macro, '24', '-1073741824', '-1'); -test(macro, '-24', '-1073741824', '0'); -test(macro, '24', '51676101935731', '0'); -test(macro, '-24', '51676101935731', '-1'); -test(macro, '24', '-51676101935731', '-1'); -test(macro, '-24', '-51676101935731', '0'); -test(macro, '24', '717897987691852588770249', '0'); -test(macro, '-24', '717897987691852588770249', '-1'); -test(macro, '24', '-717897987691852588770249', '-1'); -test(macro, '-24', '-717897987691852588770249', '0'); -test(macro, '27', '1', '27'); -test(macro, '-27', '1', '-27'); -test(macro, '27', '-1', '-27'); -test(macro, '-27', '-1', '27'); -test(macro, '27', '3', '9'); -test(macro, '-27', '3', '-9'); -test(macro, '27', '-3', '-9'); -test(macro, '-27', '-3', '9'); -test(macro, '27', '7', '3'); -test(macro, '-27', '7', '-4'); -test(macro, '27', '-7', '-4'); -test(macro, '-27', '-7', '3'); -test(macro, '27', '9', '3'); -test(macro, '-27', '9', '-3'); -test(macro, '27', '-9', '-3'); -test(macro, '-27', '-9', '3'); -test(macro, '27', '11', '2'); -test(macro, '-27', '11', '-3'); -test(macro, '27', '-11', '-3'); -test(macro, '-27', '-11', '2'); -test(macro, '27', '17', '1'); -test(macro, '-27', '17', '-2'); -test(macro, '27', '-17', '-2'); -test(macro, '-27', '-17', '1'); -test(macro, '27', '22', '1'); -test(macro, '-27', '22', '-2'); -test(macro, '27', '-22', '-2'); -test(macro, '-27', '-22', '1'); -test(macro, '27', '24', '1'); -test(macro, '-27', '24', '-2'); -test(macro, '27', '-24', '-2'); -test(macro, '-27', '-24', '1'); -test(macro, '27', '27', '1'); -test(macro, '-27', '27', '-1'); -test(macro, '27', '-27', '-1'); -test(macro, '-27', '-27', '1'); -test(macro, '27', '29', '0'); -test(macro, '-27', '29', '-1'); -test(macro, '27', '-29', '-1'); -test(macro, '-27', '-29', '0'); -test(macro, '27', '1234', '0'); -test(macro, '-27', '1234', '-1'); -test(macro, '27', '-1234', '-1'); -test(macro, '-27', '-1234', '0'); -test(macro, '27', '5678', '0'); -test(macro, '-27', '5678', '-1'); -test(macro, '27', '-5678', '-1'); -test(macro, '-27', '-5678', '0'); -test(macro, '27', '94906265', '0'); -test(macro, '-27', '94906265', '-1'); -test(macro, '27', '-94906265', '-1'); -test(macro, '-27', '-94906265', '0'); -test(macro, '27', '94906266', '0'); -test(macro, '-27', '94906266', '-1'); -test(macro, '27', '-94906266', '-1'); -test(macro, '-27', '-94906266', '0'); -test(macro, '27', '1073741824', '0'); -test(macro, '-27', '1073741824', '-1'); -test(macro, '27', '-1073741824', '-1'); -test(macro, '-27', '-1073741824', '0'); -test(macro, '27', '51676101935731', '0'); -test(macro, '-27', '51676101935731', '-1'); -test(macro, '27', '-51676101935731', '-1'); -test(macro, '-27', '-51676101935731', '0'); -test(macro, '27', '717897987691852588770249', '0'); -test(macro, '-27', '717897987691852588770249', '-1'); -test(macro, '27', '-717897987691852588770249', '-1'); -test(macro, '-27', '-717897987691852588770249', '0'); -test(macro, '29', '1', '29'); -test(macro, '-29', '1', '-29'); -test(macro, '29', '-1', '-29'); -test(macro, '-29', '-1', '29'); -test(macro, '29', '3', '9'); -test(macro, '-29', '3', '-10'); -test(macro, '29', '-3', '-10'); -test(macro, '-29', '-3', '9'); -test(macro, '29', '7', '4'); -test(macro, '-29', '7', '-5'); -test(macro, '29', '-7', '-5'); -test(macro, '-29', '-7', '4'); -test(macro, '29', '9', '3'); -test(macro, '-29', '9', '-4'); -test(macro, '29', '-9', '-4'); -test(macro, '-29', '-9', '3'); -test(macro, '29', '11', '2'); -test(macro, '-29', '11', '-3'); -test(macro, '29', '-11', '-3'); -test(macro, '-29', '-11', '2'); -test(macro, '29', '17', '1'); -test(macro, '-29', '17', '-2'); -test(macro, '29', '-17', '-2'); -test(macro, '-29', '-17', '1'); -test(macro, '29', '22', '1'); -test(macro, '-29', '22', '-2'); -test(macro, '29', '-22', '-2'); -test(macro, '-29', '-22', '1'); -test(macro, '29', '24', '1'); -test(macro, '-29', '24', '-2'); -test(macro, '29', '-24', '-2'); -test(macro, '-29', '-24', '1'); -test(macro, '29', '27', '1'); -test(macro, '-29', '27', '-2'); -test(macro, '29', '-27', '-2'); -test(macro, '-29', '-27', '1'); -test(macro, '29', '29', '1'); -test(macro, '-29', '29', '-1'); -test(macro, '29', '-29', '-1'); -test(macro, '-29', '-29', '1'); -test(macro, '29', '1234', '0'); -test(macro, '-29', '1234', '-1'); -test(macro, '29', '-1234', '-1'); -test(macro, '-29', '-1234', '0'); -test(macro, '29', '5678', '0'); -test(macro, '-29', '5678', '-1'); -test(macro, '29', '-5678', '-1'); -test(macro, '-29', '-5678', '0'); -test(macro, '29', '94906265', '0'); -test(macro, '-29', '94906265', '-1'); -test(macro, '29', '-94906265', '-1'); -test(macro, '-29', '-94906265', '0'); -test(macro, '29', '94906266', '0'); -test(macro, '-29', '94906266', '-1'); -test(macro, '29', '-94906266', '-1'); -test(macro, '-29', '-94906266', '0'); -test(macro, '29', '1073741824', '0'); -test(macro, '-29', '1073741824', '-1'); -test(macro, '29', '-1073741824', '-1'); -test(macro, '-29', '-1073741824', '0'); -test(macro, '29', '51676101935731', '0'); -test(macro, '-29', '51676101935731', '-1'); -test(macro, '29', '-51676101935731', '-1'); -test(macro, '-29', '-51676101935731', '0'); -test(macro, '29', '717897987691852588770249', '0'); -test(macro, '-29', '717897987691852588770249', '-1'); -test(macro, '29', '-717897987691852588770249', '-1'); -test(macro, '-29', '-717897987691852588770249', '0'); -test(macro, '1234', '1', '1234'); -test(macro, '-1234', '1', '-1234'); -test(macro, '1234', '-1', '-1234'); -test(macro, '-1234', '-1', '1234'); -test(macro, '1234', '3', '411'); -test(macro, '-1234', '3', '-412'); -test(macro, '1234', '-3', '-412'); -test(macro, '-1234', '-3', '411'); -test(macro, '1234', '7', '176'); -test(macro, '-1234', '7', '-177'); -test(macro, '1234', '-7', '-177'); -test(macro, '-1234', '-7', '176'); -test(macro, '1234', '9', '137'); -test(macro, '-1234', '9', '-138'); -test(macro, '1234', '-9', '-138'); -test(macro, '-1234', '-9', '137'); -test(macro, '1234', '11', '112'); -test(macro, '-1234', '11', '-113'); -test(macro, '1234', '-11', '-113'); -test(macro, '-1234', '-11', '112'); -test(macro, '1234', '17', '72'); -test(macro, '-1234', '17', '-73'); -test(macro, '1234', '-17', '-73'); -test(macro, '-1234', '-17', '72'); -test(macro, '1234', '22', '56'); -test(macro, '-1234', '22', '-57'); -test(macro, '1234', '-22', '-57'); -test(macro, '-1234', '-22', '56'); -test(macro, '1234', '24', '51'); -test(macro, '-1234', '24', '-52'); -test(macro, '1234', '-24', '-52'); -test(macro, '-1234', '-24', '51'); -test(macro, '1234', '27', '45'); -test(macro, '-1234', '27', '-46'); -test(macro, '1234', '-27', '-46'); -test(macro, '-1234', '-27', '45'); -test(macro, '1234', '29', '42'); -test(macro, '-1234', '29', '-43'); -test(macro, '1234', '-29', '-43'); -test(macro, '-1234', '-29', '42'); -test(macro, '1234', '1234', '1'); -test(macro, '-1234', '1234', '-1'); -test(macro, '1234', '-1234', '-1'); -test(macro, '-1234', '-1234', '1'); -test(macro, '1234', '5678', '0'); -test(macro, '-1234', '5678', '-1'); -test(macro, '1234', '-5678', '-1'); -test(macro, '-1234', '-5678', '0'); -test(macro, '1234', '94906265', '0'); -test(macro, '-1234', '94906265', '-1'); -test(macro, '1234', '-94906265', '-1'); -test(macro, '-1234', '-94906265', '0'); -test(macro, '1234', '94906266', '0'); -test(macro, '-1234', '94906266', '-1'); -test(macro, '1234', '-94906266', '-1'); -test(macro, '-1234', '-94906266', '0'); -test(macro, '1234', '1073741824', '0'); -test(macro, '-1234', '1073741824', '-1'); -test(macro, '1234', '-1073741824', '-1'); -test(macro, '-1234', '-1073741824', '0'); -test(macro, '1234', '51676101935731', '0'); -test(macro, '-1234', '51676101935731', '-1'); -test(macro, '1234', '-51676101935731', '-1'); -test(macro, '-1234', '-51676101935731', '0'); -test(macro, '1234', '717897987691852588770249', '0'); -test(macro, '-1234', '717897987691852588770249', '-1'); -test(macro, '1234', '-717897987691852588770249', '-1'); -test(macro, '-1234', '-717897987691852588770249', '0'); -test(macro, '5678', '1', '5678'); -test(macro, '-5678', '1', '-5678'); -test(macro, '5678', '-1', '-5678'); -test(macro, '-5678', '-1', '5678'); -test(macro, '5678', '3', '1892'); -test(macro, '-5678', '3', '-1893'); -test(macro, '5678', '-3', '-1893'); -test(macro, '-5678', '-3', '1892'); -test(macro, '5678', '7', '811'); -test(macro, '-5678', '7', '-812'); -test(macro, '5678', '-7', '-812'); -test(macro, '-5678', '-7', '811'); -test(macro, '5678', '9', '630'); -test(macro, '-5678', '9', '-631'); -test(macro, '5678', '-9', '-631'); -test(macro, '-5678', '-9', '630'); -test(macro, '5678', '11', '516'); -test(macro, '-5678', '11', '-517'); -test(macro, '5678', '-11', '-517'); -test(macro, '-5678', '-11', '516'); -test(macro, '5678', '17', '334'); -test(macro, '-5678', '17', '-334'); -test(macro, '5678', '-17', '-334'); -test(macro, '-5678', '-17', '334'); -test(macro, '5678', '22', '258'); -test(macro, '-5678', '22', '-259'); -test(macro, '5678', '-22', '-259'); -test(macro, '-5678', '-22', '258'); -test(macro, '5678', '24', '236'); -test(macro, '-5678', '24', '-237'); -test(macro, '5678', '-24', '-237'); -test(macro, '-5678', '-24', '236'); -test(macro, '5678', '27', '210'); -test(macro, '-5678', '27', '-211'); -test(macro, '5678', '-27', '-211'); -test(macro, '-5678', '-27', '210'); -test(macro, '5678', '29', '195'); -test(macro, '-5678', '29', '-196'); -test(macro, '5678', '-29', '-196'); -test(macro, '-5678', '-29', '195'); -test(macro, '5678', '1234', '4'); -test(macro, '-5678', '1234', '-5'); -test(macro, '5678', '-1234', '-5'); -test(macro, '-5678', '-1234', '4'); -test(macro, '5678', '5678', '1'); -test(macro, '-5678', '5678', '-1'); -test(macro, '5678', '-5678', '-1'); -test(macro, '-5678', '-5678', '1'); -test(macro, '5678', '94906265', '0'); -test(macro, '-5678', '94906265', '-1'); -test(macro, '5678', '-94906265', '-1'); -test(macro, '-5678', '-94906265', '0'); -test(macro, '5678', '94906266', '0'); -test(macro, '-5678', '94906266', '-1'); -test(macro, '5678', '-94906266', '-1'); -test(macro, '-5678', '-94906266', '0'); -test(macro, '5678', '1073741824', '0'); -test(macro, '-5678', '1073741824', '-1'); -test(macro, '5678', '-1073741824', '-1'); -test(macro, '-5678', '-1073741824', '0'); -test(macro, '5678', '51676101935731', '0'); -test(macro, '-5678', '51676101935731', '-1'); -test(macro, '5678', '-51676101935731', '-1'); -test(macro, '-5678', '-51676101935731', '0'); -test(macro, '5678', '717897987691852588770249', '0'); -test(macro, '-5678', '717897987691852588770249', '-1'); -test(macro, '5678', '-717897987691852588770249', '-1'); -test(macro, '-5678', '-717897987691852588770249', '0'); -test(macro, '94906265', '1', '94906265'); -test(macro, '-94906265', '1', '-94906265'); -test(macro, '94906265', '-1', '-94906265'); -test(macro, '-94906265', '-1', '94906265'); -test(macro, '94906265', '3', '31635421'); -test(macro, '-94906265', '3', '-31635422'); -test(macro, '94906265', '-3', '-31635422'); -test(macro, '-94906265', '-3', '31635421'); -test(macro, '94906265', '7', '13558037'); -test(macro, '-94906265', '7', '-13558038'); -test(macro, '94906265', '-7', '-13558038'); -test(macro, '-94906265', '-7', '13558037'); -test(macro, '94906265', '9', '10545140'); -test(macro, '-94906265', '9', '-10545141'); -test(macro, '94906265', '-9', '-10545141'); -test(macro, '-94906265', '-9', '10545140'); -test(macro, '94906265', '11', '8627842'); -test(macro, '-94906265', '11', '-8627843'); -test(macro, '94906265', '-11', '-8627843'); -test(macro, '-94906265', '-11', '8627842'); -test(macro, '94906265', '17', '5582721'); -test(macro, '-94906265', '17', '-5582722'); -test(macro, '94906265', '-17', '-5582722'); -test(macro, '-94906265', '-17', '5582721'); -test(macro, '94906265', '22', '4313921'); -test(macro, '-94906265', '22', '-4313922'); -test(macro, '94906265', '-22', '-4313922'); -test(macro, '-94906265', '-22', '4313921'); -test(macro, '94906265', '24', '3954427'); -test(macro, '-94906265', '24', '-3954428'); -test(macro, '94906265', '-24', '-3954428'); -test(macro, '-94906265', '-24', '3954427'); -test(macro, '94906265', '27', '3515046'); -test(macro, '-94906265', '27', '-3515047'); -test(macro, '94906265', '-27', '-3515047'); -test(macro, '-94906265', '-27', '3515046'); -test(macro, '94906265', '29', '3272629'); -test(macro, '-94906265', '29', '-3272630'); -test(macro, '94906265', '-29', '-3272630'); -test(macro, '-94906265', '-29', '3272629'); -test(macro, '94906265', '1234', '76909'); -test(macro, '-94906265', '1234', '-76910'); -test(macro, '94906265', '-1234', '-76910'); -test(macro, '-94906265', '-1234', '76909'); -test(macro, '94906265', '5678', '16714'); -test(macro, '-94906265', '5678', '-16715'); -test(macro, '94906265', '-5678', '-16715'); -test(macro, '-94906265', '-5678', '16714'); -test(macro, '94906265', '94906265', '1'); -test(macro, '-94906265', '94906265', '-1'); -test(macro, '94906265', '-94906265', '-1'); -test(macro, '-94906265', '-94906265', '1'); -test(macro, '94906265', '94906266', '0'); -test(macro, '-94906265', '94906266', '-1'); -test(macro, '94906265', '-94906266', '-1'); -test(macro, '-94906265', '-94906266', '0'); -test(macro, '94906265', '1073741824', '0'); -test(macro, '-94906265', '1073741824', '-1'); -test(macro, '94906265', '-1073741824', '-1'); -test(macro, '-94906265', '-1073741824', '0'); -test(macro, '94906265', '51676101935731', '0'); -test(macro, '-94906265', '51676101935731', '-1'); -test(macro, '94906265', '-51676101935731', '-1'); -test(macro, '-94906265', '-51676101935731', '0'); -test(macro, '94906265', '717897987691852588770249', '0'); -test(macro, '-94906265', '717897987691852588770249', '-1'); -test(macro, '94906265', '-717897987691852588770249', '-1'); -test(macro, '-94906265', '-717897987691852588770249', '0'); -test(macro, '94906266', '1', '94906266'); -test(macro, '-94906266', '1', '-94906266'); -test(macro, '94906266', '-1', '-94906266'); -test(macro, '-94906266', '-1', '94906266'); -test(macro, '94906266', '3', '31635422'); -test(macro, '-94906266', '3', '-31635422'); -test(macro, '94906266', '-3', '-31635422'); -test(macro, '-94906266', '-3', '31635422'); -test(macro, '94906266', '7', '13558038'); -test(macro, '-94906266', '7', '-13558038'); -test(macro, '94906266', '-7', '-13558038'); -test(macro, '-94906266', '-7', '13558038'); -test(macro, '94906266', '9', '10545140'); -test(macro, '-94906266', '9', '-10545141'); -test(macro, '94906266', '-9', '-10545141'); -test(macro, '-94906266', '-9', '10545140'); -test(macro, '94906266', '11', '8627842'); -test(macro, '-94906266', '11', '-8627843'); -test(macro, '94906266', '-11', '-8627843'); -test(macro, '-94906266', '-11', '8627842'); -test(macro, '94906266', '17', '5582721'); -test(macro, '-94906266', '17', '-5582722'); -test(macro, '94906266', '-17', '-5582722'); -test(macro, '-94906266', '-17', '5582721'); -test(macro, '94906266', '22', '4313921'); -test(macro, '-94906266', '22', '-4313922'); -test(macro, '94906266', '-22', '-4313922'); -test(macro, '-94906266', '-22', '4313921'); -test(macro, '94906266', '24', '3954427'); -test(macro, '-94906266', '24', '-3954428'); -test(macro, '94906266', '-24', '-3954428'); -test(macro, '-94906266', '-24', '3954427'); -test(macro, '94906266', '27', '3515046'); -test(macro, '-94906266', '27', '-3515047'); -test(macro, '94906266', '-27', '-3515047'); -test(macro, '-94906266', '-27', '3515046'); -test(macro, '94906266', '29', '3272629'); -test(macro, '-94906266', '29', '-3272630'); -test(macro, '94906266', '-29', '-3272630'); -test(macro, '-94906266', '-29', '3272629'); -test(macro, '94906266', '1234', '76909'); -test(macro, '-94906266', '1234', '-76910'); -test(macro, '94906266', '-1234', '-76910'); -test(macro, '-94906266', '-1234', '76909'); -test(macro, '94906266', '5678', '16714'); -test(macro, '-94906266', '5678', '-16715'); -test(macro, '94906266', '-5678', '-16715'); -test(macro, '-94906266', '-5678', '16714'); -test(macro, '94906266', '94906265', '1'); -test(macro, '-94906266', '94906265', '-2'); -test(macro, '94906266', '-94906265', '-2'); -test(macro, '-94906266', '-94906265', '1'); -test(macro, '94906266', '94906266', '1'); -test(macro, '-94906266', '94906266', '-1'); -test(macro, '94906266', '-94906266', '-1'); -test(macro, '-94906266', '-94906266', '1'); -test(macro, '94906266', '1073741824', '0'); -test(macro, '-94906266', '1073741824', '-1'); -test(macro, '94906266', '-1073741824', '-1'); -test(macro, '-94906266', '-1073741824', '0'); -test(macro, '94906266', '51676101935731', '0'); -test(macro, '-94906266', '51676101935731', '-1'); -test(macro, '94906266', '-51676101935731', '-1'); -test(macro, '-94906266', '-51676101935731', '0'); -test(macro, '94906266', '717897987691852588770249', '0'); -test(macro, '-94906266', '717897987691852588770249', '-1'); -test(macro, '94906266', '-717897987691852588770249', '-1'); -test(macro, '-94906266', '-717897987691852588770249', '0'); -test(macro, '1073741824', '1', '1073741824'); -test(macro, '-1073741824', '1', '-1073741824'); -test(macro, '1073741824', '-1', '-1073741824'); -test(macro, '-1073741824', '-1', '1073741824'); -test(macro, '1073741824', '3', '357913941'); -test(macro, '-1073741824', '3', '-357913942'); -test(macro, '1073741824', '-3', '-357913942'); -test(macro, '-1073741824', '-3', '357913941'); -test(macro, '1073741824', '7', '153391689'); -test(macro, '-1073741824', '7', '-153391690'); -test(macro, '1073741824', '-7', '-153391690'); -test(macro, '-1073741824', '-7', '153391689'); -test(macro, '1073741824', '9', '119304647'); -test(macro, '-1073741824', '9', '-119304648'); -test(macro, '1073741824', '-9', '-119304648'); -test(macro, '-1073741824', '-9', '119304647'); -test(macro, '1073741824', '11', '97612893'); -test(macro, '-1073741824', '11', '-97612894'); -test(macro, '1073741824', '-11', '-97612894'); -test(macro, '-1073741824', '-11', '97612893'); -test(macro, '1073741824', '17', '63161283'); -test(macro, '-1073741824', '17', '-63161284'); -test(macro, '1073741824', '-17', '-63161284'); -test(macro, '-1073741824', '-17', '63161283'); -test(macro, '1073741824', '22', '48806446'); -test(macro, '-1073741824', '22', '-48806447'); -test(macro, '1073741824', '-22', '-48806447'); -test(macro, '-1073741824', '-22', '48806446'); -test(macro, '1073741824', '24', '44739242'); -test(macro, '-1073741824', '24', '-44739243'); -test(macro, '1073741824', '-24', '-44739243'); -test(macro, '-1073741824', '-24', '44739242'); -test(macro, '1073741824', '27', '39768215'); -test(macro, '-1073741824', '27', '-39768216'); -test(macro, '1073741824', '-27', '-39768216'); -test(macro, '-1073741824', '-27', '39768215'); -test(macro, '1073741824', '29', '37025580'); -test(macro, '-1073741824', '29', '-37025581'); -test(macro, '1073741824', '-29', '-37025581'); -test(macro, '-1073741824', '-29', '37025580'); -test(macro, '1073741824', '1234', '870131'); -test(macro, '-1073741824', '1234', '-870132'); -test(macro, '1073741824', '-1234', '-870132'); -test(macro, '-1073741824', '-1234', '870131'); -test(macro, '1073741824', '5678', '189105'); -test(macro, '-1073741824', '5678', '-189106'); -test(macro, '1073741824', '-5678', '-189106'); -test(macro, '-1073741824', '-5678', '189105'); -test(macro, '1073741824', '94906265', '11'); -test(macro, '-1073741824', '94906265', '-12'); -test(macro, '1073741824', '-94906265', '-12'); -test(macro, '-1073741824', '-94906265', '11'); -test(macro, '1073741824', '94906266', '11'); -test(macro, '-1073741824', '94906266', '-12'); -test(macro, '1073741824', '-94906266', '-12'); -test(macro, '-1073741824', '-94906266', '11'); -test(macro, '1073741824', '1073741824', '1'); -test(macro, '-1073741824', '1073741824', '-1'); -test(macro, '1073741824', '-1073741824', '-1'); -test(macro, '-1073741824', '-1073741824', '1'); -test(macro, '1073741824', '51676101935731', '0'); -test(macro, '-1073741824', '51676101935731', '-1'); -test(macro, '1073741824', '-51676101935731', '-1'); -test(macro, '-1073741824', '-51676101935731', '0'); -test(macro, '1073741824', '717897987691852588770249', '0'); -test(macro, '-1073741824', '717897987691852588770249', '-1'); -test(macro, '1073741824', '-717897987691852588770249', '-1'); -test(macro, '-1073741824', '-717897987691852588770249', '0'); -test(macro, '51676101935731', '1', '51676101935731'); -test(macro, '-51676101935731', '1', '-51676101935731'); -test(macro, '51676101935731', '-1', '-51676101935731'); -test(macro, '-51676101935731', '-1', '51676101935731'); -test(macro, '51676101935731', '3', '17225367311910'); -test(macro, '-51676101935731', '3', '-17225367311911'); -test(macro, '51676101935731', '-3', '-17225367311911'); -test(macro, '-51676101935731', '-3', '17225367311910'); -test(macro, '51676101935731', '7', '7382300276533'); -test(macro, '-51676101935731', '7', '-7382300276533'); -test(macro, '51676101935731', '-7', '-7382300276533'); -test(macro, '-51676101935731', '-7', '7382300276533'); -test(macro, '51676101935731', '9', '5741789103970'); -test(macro, '-51676101935731', '9', '-5741789103971'); -test(macro, '51676101935731', '-9', '-5741789103971'); -test(macro, '-51676101935731', '-9', '5741789103970'); -test(macro, '51676101935731', '11', '4697827448702'); -test(macro, '-51676101935731', '11', '-4697827448703'); -test(macro, '51676101935731', '-11', '-4697827448703'); -test(macro, '-51676101935731', '-11', '4697827448702'); -test(macro, '51676101935731', '17', '3039770702101'); -test(macro, '-51676101935731', '17', '-3039770702102'); -test(macro, '51676101935731', '-17', '-3039770702102'); -test(macro, '-51676101935731', '-17', '3039770702101'); -test(macro, '51676101935731', '22', '2348913724351'); -test(macro, '-51676101935731', '22', '-2348913724352'); -test(macro, '51676101935731', '-22', '-2348913724352'); -test(macro, '-51676101935731', '-22', '2348913724351'); -test(macro, '51676101935731', '24', '2153170913988'); -test(macro, '-51676101935731', '24', '-2153170913989'); -test(macro, '51676101935731', '-24', '-2153170913989'); -test(macro, '-51676101935731', '-24', '2153170913988'); -test(macro, '51676101935731', '27', '1913929701323'); -test(macro, '-51676101935731', '27', '-1913929701324'); -test(macro, '51676101935731', '-27', '-1913929701324'); -test(macro, '-51676101935731', '-27', '1913929701323'); -test(macro, '51676101935731', '29', '1781934549507'); -test(macro, '-51676101935731', '29', '-1781934549508'); -test(macro, '51676101935731', '-29', '-1781934549508'); -test(macro, '-51676101935731', '-29', '1781934549507'); -test(macro, '51676101935731', '1234', '41876905944'); -test(macro, '-51676101935731', '1234', '-41876905945'); -test(macro, '51676101935731', '-1234', '-41876905945'); -test(macro, '-51676101935731', '-1234', '41876905944'); -test(macro, '51676101935731', '5678', '9101109886'); -test(macro, '-51676101935731', '5678', '-9101109887'); -test(macro, '51676101935731', '-5678', '-9101109887'); -test(macro, '-51676101935731', '-5678', '9101109886'); -test(macro, '51676101935731', '94906265', '544496'); -test(macro, '-51676101935731', '94906265', '-544497'); -test(macro, '51676101935731', '-94906265', '-544497'); -test(macro, '-51676101935731', '-94906265', '544496'); -test(macro, '51676101935731', '94906266', '544496'); -test(macro, '-51676101935731', '94906266', '-544497'); -test(macro, '51676101935731', '-94906266', '-544497'); -test(macro, '-51676101935731', '-94906266', '544496'); -test(macro, '51676101935731', '1073741824', '48127'); -test(macro, '-51676101935731', '1073741824', '-48128'); -test(macro, '51676101935731', '-1073741824', '-48128'); -test(macro, '-51676101935731', '-1073741824', '48127'); -test(macro, '51676101935731', '51676101935731', '1'); -test(macro, '-51676101935731', '51676101935731', '-1'); -test(macro, '51676101935731', '-51676101935731', '-1'); -test(macro, '-51676101935731', '-51676101935731', '1'); -test(macro, '51676101935731', '717897987691852588770249', '0'); -test(macro, '-51676101935731', '717897987691852588770249', '-1'); -test(macro, '51676101935731', '-717897987691852588770249', '-1'); -test(macro, '-51676101935731', '-717897987691852588770249', '0'); -test(macro, '717897987691852588770249', '1', '717897987691852588770249'); -test(macro, '-717897987691852588770249', '1', '-717897987691852588770249'); -test(macro, '717897987691852588770249', '-1', '-717897987691852588770249'); -test(macro, '-717897987691852588770249', '-1', '717897987691852588770249'); -test(macro, '717897987691852588770249', '3', '239299329230617529590083'); -test(macro, '-717897987691852588770249', '3', '-239299329230617529590083'); -test(macro, '717897987691852588770249', '-3', '-239299329230617529590083'); -test(macro, '-717897987691852588770249', '-3', '239299329230617529590083'); -test(macro, '717897987691852588770249', '7', '102556855384550369824321'); -test(macro, '-717897987691852588770249', '7', '-102556855384550369824322'); -test(macro, '717897987691852588770249', '-7', '-102556855384550369824322'); -test(macro, '-717897987691852588770249', '-7', '102556855384550369824321'); -test(macro, '717897987691852588770249', '9', '79766443076872509863361'); -test(macro, '-717897987691852588770249', '9', '-79766443076872509863361'); -test(macro, '717897987691852588770249', '-9', '-79766443076872509863361'); -test(macro, '-717897987691852588770249', '-9', '79766443076872509863361'); -test(macro, '717897987691852588770249', '11', '65263453426532053524568'); -test(macro, '-717897987691852588770249', '11', '-65263453426532053524569'); -test(macro, '717897987691852588770249', '-11', '-65263453426532053524569'); -test(macro, '-717897987691852588770249', '-11', '65263453426532053524568'); -test(macro, '717897987691852588770249', '17', '42229293393638387574720'); -test(macro, '-717897987691852588770249', '17', '-42229293393638387574721'); -test(macro, '717897987691852588770249', '-17', '-42229293393638387574721'); -test(macro, '-717897987691852588770249', '-17', '42229293393638387574720'); -test(macro, '717897987691852588770249', '22', '32631726713266026762284'); -test(macro, '-717897987691852588770249', '22', '-32631726713266026762285'); -test(macro, '717897987691852588770249', '-22', '-32631726713266026762285'); -test(macro, '-717897987691852588770249', '-22', '32631726713266026762284'); -test(macro, '717897987691852588770249', '24', '29912416153827191198760'); -test(macro, '-717897987691852588770249', '24', '-29912416153827191198761'); -test(macro, '717897987691852588770249', '-24', '-29912416153827191198761'); -test(macro, '-717897987691852588770249', '-24', '29912416153827191198760'); -test(macro, '717897987691852588770249', '27', '26588814358957503287787'); -test(macro, '-717897987691852588770249', '27', '-26588814358957503287787'); -test(macro, '717897987691852588770249', '-27', '-26588814358957503287787'); -test(macro, '-717897987691852588770249', '-27', '26588814358957503287787'); -test(macro, '717897987691852588770249', '29', '24755103023856985819663'); -test(macro, '-717897987691852588770249', '29', '-24755103023856985819664'); -test(macro, '717897987691852588770249', '-29', '-24755103023856985819664'); -test(macro, '-717897987691852588770249', '-29', '24755103023856985819663'); -test(macro, '717897987691852588770249', '1234', '581764981922084755891'); -test(macro, '-717897987691852588770249', '1234', '-581764981922084755892'); -test(macro, '717897987691852588770249', '-1234', '-581764981922084755892'); -test(macro, '-717897987691852588770249', '-1234', '581764981922084755891'); -test(macro, '717897987691852588770249', '5678', '126435010160593974774'); -test(macro, '-717897987691852588770249', '5678', '-126435010160593974775'); -test(macro, '717897987691852588770249', '-5678', '-126435010160593974775'); -test(macro, '-717897987691852588770249', '-5678', '126435010160593974774'); -test(macro, '717897987691852588770249', '94906265', '7564284483135571'); -test(macro, '-717897987691852588770249', '94906265', '-7564284483135572'); -test(macro, '717897987691852588770249', '-94906265', '-7564284483135572'); -test(macro, '-717897987691852588770249', '-94906265', '7564284483135571'); -test(macro, '717897987691852588770249', '94906266', '7564284403432883'); -test(macro, '-717897987691852588770249', '94906266', '-7564284403432884'); -test(macro, '717897987691852588770249', '-94906266', '-7564284403432884'); -test(macro, '-717897987691852588770249', '-94906266', '7564284403432883'); -test(macro, '717897987691852588770249', '1073741824', '668594602208447'); -test(macro, '-717897987691852588770249', '1073741824', '-668594602208448'); -test(macro, '717897987691852588770249', '-1073741824', '-668594602208448'); -test(macro, '-717897987691852588770249', '-1073741824', '668594602208447'); -test(macro, '717897987691852588770249', '51676101935731', '13892262782'); -test(macro, '-717897987691852588770249', '51676101935731', '-13892262783'); -test(macro, '717897987691852588770249', '-51676101935731', '-13892262783'); -test(macro, '-717897987691852588770249', '-51676101935731', '13892262782'); -test(macro, '717897987691852588770249', '717897987691852588770249', '1'); -test(macro, '-717897987691852588770249', '717897987691852588770249', '-1'); -test(macro, '717897987691852588770249', '-717897987691852588770249', '-1'); -test(macro, '-717897987691852588770249', '-717897987691852588770249', '1'); diff --git a/test/src/integer/arithmetic/divmod.js b/test/src/integer/arithmetic/divmod.js deleted file mode 100644 index 79f6cd9..0000000 --- a/test/src/integer/arithmetic/divmod.js +++ /dev/null @@ -1,1616 +0,0 @@ -import test from 'ava'; -import {parse, stringify, divmod} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C, D) { - const a = parse(A); - const b = parse(B); - const [c, d] = divmod(a, b); - t.is(stringify(a), A); - t.is(stringify(b), B); - t.is(stringify(c), C); - t.is(stringify(d), D); -} - -macro.title = (_, A, B, C, D) => - `divmod(${fmt(A)},${fmt(B)}) = [${fmt(C)},${fmt(D)}]`; - -test(macro, '0', '1', '0', '0'); -test(macro, '0', '-1', '0', '0'); -test(macro, '0', '3', '0', '0'); -test(macro, '0', '-3', '0', '0'); -test(macro, '0', '7', '0', '0'); -test(macro, '0', '-7', '0', '0'); -test(macro, '0', '9', '0', '0'); -test(macro, '0', '-9', '0', '0'); -test(macro, '0', '11', '0', '0'); -test(macro, '0', '-11', '0', '0'); -test(macro, '0', '17', '0', '0'); -test(macro, '0', '-17', '0', '0'); -test(macro, '0', '22', '0', '0'); -test(macro, '0', '-22', '0', '0'); -test(macro, '0', '24', '0', '0'); -test(macro, '0', '-24', '0', '0'); -test(macro, '0', '27', '0', '0'); -test(macro, '0', '-27', '0', '0'); -test(macro, '0', '29', '0', '0'); -test(macro, '0', '-29', '0', '0'); -test(macro, '0', '1234', '0', '0'); -test(macro, '0', '-1234', '0', '0'); -test(macro, '0', '5678', '0', '0'); -test(macro, '0', '-5678', '0', '0'); -test(macro, '0', '94906265', '0', '0'); -test(macro, '0', '-94906265', '0', '0'); -test(macro, '0', '94906266', '0', '0'); -test(macro, '0', '-94906266', '0', '0'); -test(macro, '0', '1073741824', '0', '0'); -test(macro, '0', '-1073741824', '0', '0'); -test(macro, '0', '51676101935731', '0', '0'); -test(macro, '0', '-51676101935731', '0', '0'); -test(macro, '0', '717897987691852588770249', '0', '0'); -test(macro, '0', '-717897987691852588770249', '0', '0'); -test(macro, '1', '1', '1', '0'); -test(macro, '-1', '1', '-1', '0'); -test(macro, '1', '-1', '-1', '0'); -test(macro, '-1', '-1', '1', '0'); -test(macro, '1', '3', '0', '1'); -test(macro, '-1', '3', '-1', '2'); -test(macro, '1', '-3', '-1', '-2'); -test(macro, '-1', '-3', '0', '-1'); -test(macro, '1', '7', '0', '1'); -test(macro, '-1', '7', '-1', '6'); -test(macro, '1', '-7', '-1', '-6'); -test(macro, '-1', '-7', '0', '-1'); -test(macro, '1', '9', '0', '1'); -test(macro, '-1', '9', '-1', '8'); -test(macro, '1', '-9', '-1', '-8'); -test(macro, '-1', '-9', '0', '-1'); -test(macro, '1', '11', '0', '1'); -test(macro, '-1', '11', '-1', '10'); -test(macro, '1', '-11', '-1', '-10'); -test(macro, '-1', '-11', '0', '-1'); -test(macro, '1', '17', '0', '1'); -test(macro, '-1', '17', '-1', '16'); -test(macro, '1', '-17', '-1', '-16'); -test(macro, '-1', '-17', '0', '-1'); -test(macro, '1', '22', '0', '1'); -test(macro, '-1', '22', '-1', '21'); -test(macro, '1', '-22', '-1', '-21'); -test(macro, '-1', '-22', '0', '-1'); -test(macro, '1', '24', '0', '1'); -test(macro, '-1', '24', '-1', '23'); -test(macro, '1', '-24', '-1', '-23'); -test(macro, '-1', '-24', '0', '-1'); -test(macro, '1', '27', '0', '1'); -test(macro, '-1', '27', '-1', '26'); -test(macro, '1', '-27', '-1', '-26'); -test(macro, '-1', '-27', '0', '-1'); -test(macro, '1', '29', '0', '1'); -test(macro, '-1', '29', '-1', '28'); -test(macro, '1', '-29', '-1', '-28'); -test(macro, '-1', '-29', '0', '-1'); -test(macro, '1', '1234', '0', '1'); -test(macro, '-1', '1234', '-1', '1233'); -test(macro, '1', '-1234', '-1', '-1233'); -test(macro, '-1', '-1234', '0', '-1'); -test(macro, '1', '5678', '0', '1'); -test(macro, '-1', '5678', '-1', '5677'); -test(macro, '1', '-5678', '-1', '-5677'); -test(macro, '-1', '-5678', '0', '-1'); -test(macro, '1', '94906265', '0', '1'); -test(macro, '-1', '94906265', '-1', '94906264'); -test(macro, '1', '-94906265', '-1', '-94906264'); -test(macro, '-1', '-94906265', '0', '-1'); -test(macro, '1', '94906266', '0', '1'); -test(macro, '-1', '94906266', '-1', '94906265'); -test(macro, '1', '-94906266', '-1', '-94906265'); -test(macro, '-1', '-94906266', '0', '-1'); -test(macro, '1', '1073741824', '0', '1'); -test(macro, '-1', '1073741824', '-1', '1073741823'); -test(macro, '1', '-1073741824', '-1', '-1073741823'); -test(macro, '-1', '-1073741824', '0', '-1'); -test(macro, '1', '51676101935731', '0', '1'); -test(macro, '-1', '51676101935731', '-1', '51676101935730'); -test(macro, '1', '-51676101935731', '-1', '-51676101935730'); -test(macro, '-1', '-51676101935731', '0', '-1'); -test(macro, '1', '717897987691852588770249', '0', '1'); -test(macro, '-1', '717897987691852588770249', '-1', '717897987691852588770248'); -test( - macro, - '1', - '-717897987691852588770249', - '-1', - '-717897987691852588770248', -); -test(macro, '-1', '-717897987691852588770249', '0', '-1'); -test(macro, '3', '1', '3', '0'); -test(macro, '-3', '1', '-3', '0'); -test(macro, '3', '-1', '-3', '0'); -test(macro, '-3', '-1', '3', '0'); -test(macro, '3', '3', '1', '0'); -test(macro, '-3', '3', '-1', '0'); -test(macro, '3', '-3', '-1', '0'); -test(macro, '-3', '-3', '1', '0'); -test(macro, '3', '7', '0', '3'); -test(macro, '-3', '7', '-1', '4'); -test(macro, '3', '-7', '-1', '-4'); -test(macro, '-3', '-7', '0', '-3'); -test(macro, '3', '9', '0', '3'); -test(macro, '-3', '9', '-1', '6'); -test(macro, '3', '-9', '-1', '-6'); -test(macro, '-3', '-9', '0', '-3'); -test(macro, '3', '11', '0', '3'); -test(macro, '-3', '11', '-1', '8'); -test(macro, '3', '-11', '-1', '-8'); -test(macro, '-3', '-11', '0', '-3'); -test(macro, '3', '17', '0', '3'); -test(macro, '-3', '17', '-1', '14'); -test(macro, '3', '-17', '-1', '-14'); -test(macro, '-3', '-17', '0', '-3'); -test(macro, '3', '22', '0', '3'); -test(macro, '-3', '22', '-1', '19'); -test(macro, '3', '-22', '-1', '-19'); -test(macro, '-3', '-22', '0', '-3'); -test(macro, '3', '24', '0', '3'); -test(macro, '-3', '24', '-1', '21'); -test(macro, '3', '-24', '-1', '-21'); -test(macro, '-3', '-24', '0', '-3'); -test(macro, '3', '27', '0', '3'); -test(macro, '-3', '27', '-1', '24'); -test(macro, '3', '-27', '-1', '-24'); -test(macro, '-3', '-27', '0', '-3'); -test(macro, '3', '29', '0', '3'); -test(macro, '-3', '29', '-1', '26'); -test(macro, '3', '-29', '-1', '-26'); -test(macro, '-3', '-29', '0', '-3'); -test(macro, '3', '1234', '0', '3'); -test(macro, '-3', '1234', '-1', '1231'); -test(macro, '3', '-1234', '-1', '-1231'); -test(macro, '-3', '-1234', '0', '-3'); -test(macro, '3', '5678', '0', '3'); -test(macro, '-3', '5678', '-1', '5675'); -test(macro, '3', '-5678', '-1', '-5675'); -test(macro, '-3', '-5678', '0', '-3'); -test(macro, '3', '94906265', '0', '3'); -test(macro, '-3', '94906265', '-1', '94906262'); -test(macro, '3', '-94906265', '-1', '-94906262'); -test(macro, '-3', '-94906265', '0', '-3'); -test(macro, '3', '94906266', '0', '3'); -test(macro, '-3', '94906266', '-1', '94906263'); -test(macro, '3', '-94906266', '-1', '-94906263'); -test(macro, '-3', '-94906266', '0', '-3'); -test(macro, '3', '1073741824', '0', '3'); -test(macro, '-3', '1073741824', '-1', '1073741821'); -test(macro, '3', '-1073741824', '-1', '-1073741821'); -test(macro, '-3', '-1073741824', '0', '-3'); -test(macro, '3', '51676101935731', '0', '3'); -test(macro, '-3', '51676101935731', '-1', '51676101935728'); -test(macro, '3', '-51676101935731', '-1', '-51676101935728'); -test(macro, '-3', '-51676101935731', '0', '-3'); -test(macro, '3', '717897987691852588770249', '0', '3'); -test(macro, '-3', '717897987691852588770249', '-1', '717897987691852588770246'); -test( - macro, - '3', - '-717897987691852588770249', - '-1', - '-717897987691852588770246', -); -test(macro, '-3', '-717897987691852588770249', '0', '-3'); -test(macro, '7', '1', '7', '0'); -test(macro, '-7', '1', '-7', '0'); -test(macro, '7', '-1', '-7', '0'); -test(macro, '-7', '-1', '7', '0'); -test(macro, '7', '3', '2', '1'); -test(macro, '-7', '3', '-3', '2'); -test(macro, '7', '-3', '-3', '-2'); -test(macro, '-7', '-3', '2', '-1'); -test(macro, '7', '7', '1', '0'); -test(macro, '-7', '7', '-1', '0'); -test(macro, '7', '-7', '-1', '0'); -test(macro, '-7', '-7', '1', '0'); -test(macro, '7', '9', '0', '7'); -test(macro, '-7', '9', '-1', '2'); -test(macro, '7', '-9', '-1', '-2'); -test(macro, '-7', '-9', '0', '-7'); -test(macro, '7', '11', '0', '7'); -test(macro, '-7', '11', '-1', '4'); -test(macro, '7', '-11', '-1', '-4'); -test(macro, '-7', '-11', '0', '-7'); -test(macro, '7', '17', '0', '7'); -test(macro, '-7', '17', '-1', '10'); -test(macro, '7', '-17', '-1', '-10'); -test(macro, '-7', '-17', '0', '-7'); -test(macro, '7', '22', '0', '7'); -test(macro, '-7', '22', '-1', '15'); -test(macro, '7', '-22', '-1', '-15'); -test(macro, '-7', '-22', '0', '-7'); -test(macro, '7', '24', '0', '7'); -test(macro, '-7', '24', '-1', '17'); -test(macro, '7', '-24', '-1', '-17'); -test(macro, '-7', '-24', '0', '-7'); -test(macro, '7', '27', '0', '7'); -test(macro, '-7', '27', '-1', '20'); -test(macro, '7', '-27', '-1', '-20'); -test(macro, '-7', '-27', '0', '-7'); -test(macro, '7', '29', '0', '7'); -test(macro, '-7', '29', '-1', '22'); -test(macro, '7', '-29', '-1', '-22'); -test(macro, '-7', '-29', '0', '-7'); -test(macro, '7', '1234', '0', '7'); -test(macro, '-7', '1234', '-1', '1227'); -test(macro, '7', '-1234', '-1', '-1227'); -test(macro, '-7', '-1234', '0', '-7'); -test(macro, '7', '5678', '0', '7'); -test(macro, '-7', '5678', '-1', '5671'); -test(macro, '7', '-5678', '-1', '-5671'); -test(macro, '-7', '-5678', '0', '-7'); -test(macro, '7', '94906265', '0', '7'); -test(macro, '-7', '94906265', '-1', '94906258'); -test(macro, '7', '-94906265', '-1', '-94906258'); -test(macro, '-7', '-94906265', '0', '-7'); -test(macro, '7', '94906266', '0', '7'); -test(macro, '-7', '94906266', '-1', '94906259'); -test(macro, '7', '-94906266', '-1', '-94906259'); -test(macro, '-7', '-94906266', '0', '-7'); -test(macro, '7', '1073741824', '0', '7'); -test(macro, '-7', '1073741824', '-1', '1073741817'); -test(macro, '7', '-1073741824', '-1', '-1073741817'); -test(macro, '-7', '-1073741824', '0', '-7'); -test(macro, '7', '51676101935731', '0', '7'); -test(macro, '-7', '51676101935731', '-1', '51676101935724'); -test(macro, '7', '-51676101935731', '-1', '-51676101935724'); -test(macro, '-7', '-51676101935731', '0', '-7'); -test(macro, '7', '717897987691852588770249', '0', '7'); -test(macro, '-7', '717897987691852588770249', '-1', '717897987691852588770242'); -test( - macro, - '7', - '-717897987691852588770249', - '-1', - '-717897987691852588770242', -); -test(macro, '-7', '-717897987691852588770249', '0', '-7'); -test(macro, '9', '1', '9', '0'); -test(macro, '-9', '1', '-9', '0'); -test(macro, '9', '-1', '-9', '0'); -test(macro, '-9', '-1', '9', '0'); -test(macro, '9', '3', '3', '0'); -test(macro, '-9', '3', '-3', '0'); -test(macro, '9', '-3', '-3', '0'); -test(macro, '-9', '-3', '3', '0'); -test(macro, '9', '7', '1', '2'); -test(macro, '-9', '7', '-2', '5'); -test(macro, '9', '-7', '-2', '-5'); -test(macro, '-9', '-7', '1', '-2'); -test(macro, '9', '9', '1', '0'); -test(macro, '-9', '9', '-1', '0'); -test(macro, '9', '-9', '-1', '0'); -test(macro, '-9', '-9', '1', '0'); -test(macro, '9', '11', '0', '9'); -test(macro, '-9', '11', '-1', '2'); -test(macro, '9', '-11', '-1', '-2'); -test(macro, '-9', '-11', '0', '-9'); -test(macro, '9', '17', '0', '9'); -test(macro, '-9', '17', '-1', '8'); -test(macro, '9', '-17', '-1', '-8'); -test(macro, '-9', '-17', '0', '-9'); -test(macro, '9', '22', '0', '9'); -test(macro, '-9', '22', '-1', '13'); -test(macro, '9', '-22', '-1', '-13'); -test(macro, '-9', '-22', '0', '-9'); -test(macro, '9', '24', '0', '9'); -test(macro, '-9', '24', '-1', '15'); -test(macro, '9', '-24', '-1', '-15'); -test(macro, '-9', '-24', '0', '-9'); -test(macro, '9', '27', '0', '9'); -test(macro, '-9', '27', '-1', '18'); -test(macro, '9', '-27', '-1', '-18'); -test(macro, '-9', '-27', '0', '-9'); -test(macro, '9', '29', '0', '9'); -test(macro, '-9', '29', '-1', '20'); -test(macro, '9', '-29', '-1', '-20'); -test(macro, '-9', '-29', '0', '-9'); -test(macro, '9', '1234', '0', '9'); -test(macro, '-9', '1234', '-1', '1225'); -test(macro, '9', '-1234', '-1', '-1225'); -test(macro, '-9', '-1234', '0', '-9'); -test(macro, '9', '5678', '0', '9'); -test(macro, '-9', '5678', '-1', '5669'); -test(macro, '9', '-5678', '-1', '-5669'); -test(macro, '-9', '-5678', '0', '-9'); -test(macro, '9', '94906265', '0', '9'); -test(macro, '-9', '94906265', '-1', '94906256'); -test(macro, '9', '-94906265', '-1', '-94906256'); -test(macro, '-9', '-94906265', '0', '-9'); -test(macro, '9', '94906266', '0', '9'); -test(macro, '-9', '94906266', '-1', '94906257'); -test(macro, '9', '-94906266', '-1', '-94906257'); -test(macro, '-9', '-94906266', '0', '-9'); -test(macro, '9', '1073741824', '0', '9'); -test(macro, '-9', '1073741824', '-1', '1073741815'); -test(macro, '9', '-1073741824', '-1', '-1073741815'); -test(macro, '-9', '-1073741824', '0', '-9'); -test(macro, '9', '51676101935731', '0', '9'); -test(macro, '-9', '51676101935731', '-1', '51676101935722'); -test(macro, '9', '-51676101935731', '-1', '-51676101935722'); -test(macro, '-9', '-51676101935731', '0', '-9'); -test(macro, '9', '717897987691852588770249', '0', '9'); -test(macro, '-9', '717897987691852588770249', '-1', '717897987691852588770240'); -test( - macro, - '9', - '-717897987691852588770249', - '-1', - '-717897987691852588770240', -); -test(macro, '-9', '-717897987691852588770249', '0', '-9'); -test(macro, '11', '1', '11', '0'); -test(macro, '-11', '1', '-11', '0'); -test(macro, '11', '-1', '-11', '0'); -test(macro, '-11', '-1', '11', '0'); -test(macro, '11', '3', '3', '2'); -test(macro, '-11', '3', '-4', '1'); -test(macro, '11', '-3', '-4', '-1'); -test(macro, '-11', '-3', '3', '-2'); -test(macro, '11', '7', '1', '4'); -test(macro, '-11', '7', '-2', '3'); -test(macro, '11', '-7', '-2', '-3'); -test(macro, '-11', '-7', '1', '-4'); -test(macro, '11', '9', '1', '2'); -test(macro, '-11', '9', '-2', '7'); -test(macro, '11', '-9', '-2', '-7'); -test(macro, '-11', '-9', '1', '-2'); -test(macro, '11', '11', '1', '0'); -test(macro, '-11', '11', '-1', '0'); -test(macro, '11', '-11', '-1', '0'); -test(macro, '-11', '-11', '1', '0'); -test(macro, '11', '17', '0', '11'); -test(macro, '-11', '17', '-1', '6'); -test(macro, '11', '-17', '-1', '-6'); -test(macro, '-11', '-17', '0', '-11'); -test(macro, '11', '22', '0', '11'); -test(macro, '-11', '22', '-1', '11'); -test(macro, '11', '-22', '-1', '-11'); -test(macro, '-11', '-22', '0', '-11'); -test(macro, '11', '24', '0', '11'); -test(macro, '-11', '24', '-1', '13'); -test(macro, '11', '-24', '-1', '-13'); -test(macro, '-11', '-24', '0', '-11'); -test(macro, '11', '27', '0', '11'); -test(macro, '-11', '27', '-1', '16'); -test(macro, '11', '-27', '-1', '-16'); -test(macro, '-11', '-27', '0', '-11'); -test(macro, '11', '29', '0', '11'); -test(macro, '-11', '29', '-1', '18'); -test(macro, '11', '-29', '-1', '-18'); -test(macro, '-11', '-29', '0', '-11'); -test(macro, '11', '1234', '0', '11'); -test(macro, '-11', '1234', '-1', '1223'); -test(macro, '11', '-1234', '-1', '-1223'); -test(macro, '-11', '-1234', '0', '-11'); -test(macro, '11', '5678', '0', '11'); -test(macro, '-11', '5678', '-1', '5667'); -test(macro, '11', '-5678', '-1', '-5667'); -test(macro, '-11', '-5678', '0', '-11'); -test(macro, '11', '94906265', '0', '11'); -test(macro, '-11', '94906265', '-1', '94906254'); -test(macro, '11', '-94906265', '-1', '-94906254'); -test(macro, '-11', '-94906265', '0', '-11'); -test(macro, '11', '94906266', '0', '11'); -test(macro, '-11', '94906266', '-1', '94906255'); -test(macro, '11', '-94906266', '-1', '-94906255'); -test(macro, '-11', '-94906266', '0', '-11'); -test(macro, '11', '1073741824', '0', '11'); -test(macro, '-11', '1073741824', '-1', '1073741813'); -test(macro, '11', '-1073741824', '-1', '-1073741813'); -test(macro, '-11', '-1073741824', '0', '-11'); -test(macro, '11', '51676101935731', '0', '11'); -test(macro, '-11', '51676101935731', '-1', '51676101935720'); -test(macro, '11', '-51676101935731', '-1', '-51676101935720'); -test(macro, '-11', '-51676101935731', '0', '-11'); -test(macro, '11', '717897987691852588770249', '0', '11'); -test( - macro, - '-11', - '717897987691852588770249', - '-1', - '717897987691852588770238', -); -test( - macro, - '11', - '-717897987691852588770249', - '-1', - '-717897987691852588770238', -); -test(macro, '-11', '-717897987691852588770249', '0', '-11'); -test(macro, '17', '1', '17', '0'); -test(macro, '-17', '1', '-17', '0'); -test(macro, '17', '-1', '-17', '0'); -test(macro, '-17', '-1', '17', '0'); -test(macro, '17', '3', '5', '2'); -test(macro, '-17', '3', '-6', '1'); -test(macro, '17', '-3', '-6', '-1'); -test(macro, '-17', '-3', '5', '-2'); -test(macro, '17', '7', '2', '3'); -test(macro, '-17', '7', '-3', '4'); -test(macro, '17', '-7', '-3', '-4'); -test(macro, '-17', '-7', '2', '-3'); -test(macro, '17', '9', '1', '8'); -test(macro, '-17', '9', '-2', '1'); -test(macro, '17', '-9', '-2', '-1'); -test(macro, '-17', '-9', '1', '-8'); -test(macro, '17', '11', '1', '6'); -test(macro, '-17', '11', '-2', '5'); -test(macro, '17', '-11', '-2', '-5'); -test(macro, '-17', '-11', '1', '-6'); -test(macro, '17', '17', '1', '0'); -test(macro, '-17', '17', '-1', '0'); -test(macro, '17', '-17', '-1', '0'); -test(macro, '-17', '-17', '1', '0'); -test(macro, '17', '22', '0', '17'); -test(macro, '-17', '22', '-1', '5'); -test(macro, '17', '-22', '-1', '-5'); -test(macro, '-17', '-22', '0', '-17'); -test(macro, '17', '24', '0', '17'); -test(macro, '-17', '24', '-1', '7'); -test(macro, '17', '-24', '-1', '-7'); -test(macro, '-17', '-24', '0', '-17'); -test(macro, '17', '27', '0', '17'); -test(macro, '-17', '27', '-1', '10'); -test(macro, '17', '-27', '-1', '-10'); -test(macro, '-17', '-27', '0', '-17'); -test(macro, '17', '29', '0', '17'); -test(macro, '-17', '29', '-1', '12'); -test(macro, '17', '-29', '-1', '-12'); -test(macro, '-17', '-29', '0', '-17'); -test(macro, '17', '1234', '0', '17'); -test(macro, '-17', '1234', '-1', '1217'); -test(macro, '17', '-1234', '-1', '-1217'); -test(macro, '-17', '-1234', '0', '-17'); -test(macro, '17', '5678', '0', '17'); -test(macro, '-17', '5678', '-1', '5661'); -test(macro, '17', '-5678', '-1', '-5661'); -test(macro, '-17', '-5678', '0', '-17'); -test(macro, '17', '94906265', '0', '17'); -test(macro, '-17', '94906265', '-1', '94906248'); -test(macro, '17', '-94906265', '-1', '-94906248'); -test(macro, '-17', '-94906265', '0', '-17'); -test(macro, '17', '94906266', '0', '17'); -test(macro, '-17', '94906266', '-1', '94906249'); -test(macro, '17', '-94906266', '-1', '-94906249'); -test(macro, '-17', '-94906266', '0', '-17'); -test(macro, '17', '1073741824', '0', '17'); -test(macro, '-17', '1073741824', '-1', '1073741807'); -test(macro, '17', '-1073741824', '-1', '-1073741807'); -test(macro, '-17', '-1073741824', '0', '-17'); -test(macro, '17', '51676101935731', '0', '17'); -test(macro, '-17', '51676101935731', '-1', '51676101935714'); -test(macro, '17', '-51676101935731', '-1', '-51676101935714'); -test(macro, '-17', '-51676101935731', '0', '-17'); -test(macro, '17', '717897987691852588770249', '0', '17'); -test( - macro, - '-17', - '717897987691852588770249', - '-1', - '717897987691852588770232', -); -test( - macro, - '17', - '-717897987691852588770249', - '-1', - '-717897987691852588770232', -); -test(macro, '-17', '-717897987691852588770249', '0', '-17'); -test(macro, '22', '1', '22', '0'); -test(macro, '-22', '1', '-22', '0'); -test(macro, '22', '-1', '-22', '0'); -test(macro, '-22', '-1', '22', '0'); -test(macro, '22', '3', '7', '1'); -test(macro, '-22', '3', '-8', '2'); -test(macro, '22', '-3', '-8', '-2'); -test(macro, '-22', '-3', '7', '-1'); -test(macro, '22', '7', '3', '1'); -test(macro, '-22', '7', '-4', '6'); -test(macro, '22', '-7', '-4', '-6'); -test(macro, '-22', '-7', '3', '-1'); -test(macro, '22', '9', '2', '4'); -test(macro, '-22', '9', '-3', '5'); -test(macro, '22', '-9', '-3', '-5'); -test(macro, '-22', '-9', '2', '-4'); -test(macro, '22', '11', '2', '0'); -test(macro, '-22', '11', '-2', '0'); -test(macro, '22', '-11', '-2', '0'); -test(macro, '-22', '-11', '2', '0'); -test(macro, '22', '17', '1', '5'); -test(macro, '-22', '17', '-2', '12'); -test(macro, '22', '-17', '-2', '-12'); -test(macro, '-22', '-17', '1', '-5'); -test(macro, '22', '22', '1', '0'); -test(macro, '-22', '22', '-1', '0'); -test(macro, '22', '-22', '-1', '0'); -test(macro, '-22', '-22', '1', '0'); -test(macro, '22', '24', '0', '22'); -test(macro, '-22', '24', '-1', '2'); -test(macro, '22', '-24', '-1', '-2'); -test(macro, '-22', '-24', '0', '-22'); -test(macro, '22', '27', '0', '22'); -test(macro, '-22', '27', '-1', '5'); -test(macro, '22', '-27', '-1', '-5'); -test(macro, '-22', '-27', '0', '-22'); -test(macro, '22', '29', '0', '22'); -test(macro, '-22', '29', '-1', '7'); -test(macro, '22', '-29', '-1', '-7'); -test(macro, '-22', '-29', '0', '-22'); -test(macro, '22', '1234', '0', '22'); -test(macro, '-22', '1234', '-1', '1212'); -test(macro, '22', '-1234', '-1', '-1212'); -test(macro, '-22', '-1234', '0', '-22'); -test(macro, '22', '5678', '0', '22'); -test(macro, '-22', '5678', '-1', '5656'); -test(macro, '22', '-5678', '-1', '-5656'); -test(macro, '-22', '-5678', '0', '-22'); -test(macro, '22', '94906265', '0', '22'); -test(macro, '-22', '94906265', '-1', '94906243'); -test(macro, '22', '-94906265', '-1', '-94906243'); -test(macro, '-22', '-94906265', '0', '-22'); -test(macro, '22', '94906266', '0', '22'); -test(macro, '-22', '94906266', '-1', '94906244'); -test(macro, '22', '-94906266', '-1', '-94906244'); -test(macro, '-22', '-94906266', '0', '-22'); -test(macro, '22', '1073741824', '0', '22'); -test(macro, '-22', '1073741824', '-1', '1073741802'); -test(macro, '22', '-1073741824', '-1', '-1073741802'); -test(macro, '-22', '-1073741824', '0', '-22'); -test(macro, '22', '51676101935731', '0', '22'); -test(macro, '-22', '51676101935731', '-1', '51676101935709'); -test(macro, '22', '-51676101935731', '-1', '-51676101935709'); -test(macro, '-22', '-51676101935731', '0', '-22'); -test(macro, '22', '717897987691852588770249', '0', '22'); -test( - macro, - '-22', - '717897987691852588770249', - '-1', - '717897987691852588770227', -); -test( - macro, - '22', - '-717897987691852588770249', - '-1', - '-717897987691852588770227', -); -test(macro, '-22', '-717897987691852588770249', '0', '-22'); -test(macro, '24', '1', '24', '0'); -test(macro, '-24', '1', '-24', '0'); -test(macro, '24', '-1', '-24', '0'); -test(macro, '-24', '-1', '24', '0'); -test(macro, '24', '3', '8', '0'); -test(macro, '-24', '3', '-8', '0'); -test(macro, '24', '-3', '-8', '0'); -test(macro, '-24', '-3', '8', '0'); -test(macro, '24', '7', '3', '3'); -test(macro, '-24', '7', '-4', '4'); -test(macro, '24', '-7', '-4', '-4'); -test(macro, '-24', '-7', '3', '-3'); -test(macro, '24', '9', '2', '6'); -test(macro, '-24', '9', '-3', '3'); -test(macro, '24', '-9', '-3', '-3'); -test(macro, '-24', '-9', '2', '-6'); -test(macro, '24', '11', '2', '2'); -test(macro, '-24', '11', '-3', '9'); -test(macro, '24', '-11', '-3', '-9'); -test(macro, '-24', '-11', '2', '-2'); -test(macro, '24', '17', '1', '7'); -test(macro, '-24', '17', '-2', '10'); -test(macro, '24', '-17', '-2', '-10'); -test(macro, '-24', '-17', '1', '-7'); -test(macro, '24', '22', '1', '2'); -test(macro, '-24', '22', '-2', '20'); -test(macro, '24', '-22', '-2', '-20'); -test(macro, '-24', '-22', '1', '-2'); -test(macro, '24', '24', '1', '0'); -test(macro, '-24', '24', '-1', '0'); -test(macro, '24', '-24', '-1', '0'); -test(macro, '-24', '-24', '1', '0'); -test(macro, '24', '27', '0', '24'); -test(macro, '-24', '27', '-1', '3'); -test(macro, '24', '-27', '-1', '-3'); -test(macro, '-24', '-27', '0', '-24'); -test(macro, '24', '29', '0', '24'); -test(macro, '-24', '29', '-1', '5'); -test(macro, '24', '-29', '-1', '-5'); -test(macro, '-24', '-29', '0', '-24'); -test(macro, '24', '1234', '0', '24'); -test(macro, '-24', '1234', '-1', '1210'); -test(macro, '24', '-1234', '-1', '-1210'); -test(macro, '-24', '-1234', '0', '-24'); -test(macro, '24', '5678', '0', '24'); -test(macro, '-24', '5678', '-1', '5654'); -test(macro, '24', '-5678', '-1', '-5654'); -test(macro, '-24', '-5678', '0', '-24'); -test(macro, '24', '94906265', '0', '24'); -test(macro, '-24', '94906265', '-1', '94906241'); -test(macro, '24', '-94906265', '-1', '-94906241'); -test(macro, '-24', '-94906265', '0', '-24'); -test(macro, '24', '94906266', '0', '24'); -test(macro, '-24', '94906266', '-1', '94906242'); -test(macro, '24', '-94906266', '-1', '-94906242'); -test(macro, '-24', '-94906266', '0', '-24'); -test(macro, '24', '1073741824', '0', '24'); -test(macro, '-24', '1073741824', '-1', '1073741800'); -test(macro, '24', '-1073741824', '-1', '-1073741800'); -test(macro, '-24', '-1073741824', '0', '-24'); -test(macro, '24', '51676101935731', '0', '24'); -test(macro, '-24', '51676101935731', '-1', '51676101935707'); -test(macro, '24', '-51676101935731', '-1', '-51676101935707'); -test(macro, '-24', '-51676101935731', '0', '-24'); -test(macro, '24', '717897987691852588770249', '0', '24'); -test( - macro, - '-24', - '717897987691852588770249', - '-1', - '717897987691852588770225', -); -test( - macro, - '24', - '-717897987691852588770249', - '-1', - '-717897987691852588770225', -); -test(macro, '-24', '-717897987691852588770249', '0', '-24'); -test(macro, '27', '1', '27', '0'); -test(macro, '-27', '1', '-27', '0'); -test(macro, '27', '-1', '-27', '0'); -test(macro, '-27', '-1', '27', '0'); -test(macro, '27', '3', '9', '0'); -test(macro, '-27', '3', '-9', '0'); -test(macro, '27', '-3', '-9', '0'); -test(macro, '-27', '-3', '9', '0'); -test(macro, '27', '7', '3', '6'); -test(macro, '-27', '7', '-4', '1'); -test(macro, '27', '-7', '-4', '-1'); -test(macro, '-27', '-7', '3', '-6'); -test(macro, '27', '9', '3', '0'); -test(macro, '-27', '9', '-3', '0'); -test(macro, '27', '-9', '-3', '0'); -test(macro, '-27', '-9', '3', '0'); -test(macro, '27', '11', '2', '5'); -test(macro, '-27', '11', '-3', '6'); -test(macro, '27', '-11', '-3', '-6'); -test(macro, '-27', '-11', '2', '-5'); -test(macro, '27', '17', '1', '10'); -test(macro, '-27', '17', '-2', '7'); -test(macro, '27', '-17', '-2', '-7'); -test(macro, '-27', '-17', '1', '-10'); -test(macro, '27', '22', '1', '5'); -test(macro, '-27', '22', '-2', '17'); -test(macro, '27', '-22', '-2', '-17'); -test(macro, '-27', '-22', '1', '-5'); -test(macro, '27', '24', '1', '3'); -test(macro, '-27', '24', '-2', '21'); -test(macro, '27', '-24', '-2', '-21'); -test(macro, '-27', '-24', '1', '-3'); -test(macro, '27', '27', '1', '0'); -test(macro, '-27', '27', '-1', '0'); -test(macro, '27', '-27', '-1', '0'); -test(macro, '-27', '-27', '1', '0'); -test(macro, '27', '29', '0', '27'); -test(macro, '-27', '29', '-1', '2'); -test(macro, '27', '-29', '-1', '-2'); -test(macro, '-27', '-29', '0', '-27'); -test(macro, '27', '1234', '0', '27'); -test(macro, '-27', '1234', '-1', '1207'); -test(macro, '27', '-1234', '-1', '-1207'); -test(macro, '-27', '-1234', '0', '-27'); -test(macro, '27', '5678', '0', '27'); -test(macro, '-27', '5678', '-1', '5651'); -test(macro, '27', '-5678', '-1', '-5651'); -test(macro, '-27', '-5678', '0', '-27'); -test(macro, '27', '94906265', '0', '27'); -test(macro, '-27', '94906265', '-1', '94906238'); -test(macro, '27', '-94906265', '-1', '-94906238'); -test(macro, '-27', '-94906265', '0', '-27'); -test(macro, '27', '94906266', '0', '27'); -test(macro, '-27', '94906266', '-1', '94906239'); -test(macro, '27', '-94906266', '-1', '-94906239'); -test(macro, '-27', '-94906266', '0', '-27'); -test(macro, '27', '1073741824', '0', '27'); -test(macro, '-27', '1073741824', '-1', '1073741797'); -test(macro, '27', '-1073741824', '-1', '-1073741797'); -test(macro, '-27', '-1073741824', '0', '-27'); -test(macro, '27', '51676101935731', '0', '27'); -test(macro, '-27', '51676101935731', '-1', '51676101935704'); -test(macro, '27', '-51676101935731', '-1', '-51676101935704'); -test(macro, '-27', '-51676101935731', '0', '-27'); -test(macro, '27', '717897987691852588770249', '0', '27'); -test( - macro, - '-27', - '717897987691852588770249', - '-1', - '717897987691852588770222', -); -test( - macro, - '27', - '-717897987691852588770249', - '-1', - '-717897987691852588770222', -); -test(macro, '-27', '-717897987691852588770249', '0', '-27'); -test(macro, '29', '1', '29', '0'); -test(macro, '-29', '1', '-29', '0'); -test(macro, '29', '-1', '-29', '0'); -test(macro, '-29', '-1', '29', '0'); -test(macro, '29', '3', '9', '2'); -test(macro, '-29', '3', '-10', '1'); -test(macro, '29', '-3', '-10', '-1'); -test(macro, '-29', '-3', '9', '-2'); -test(macro, '29', '7', '4', '1'); -test(macro, '-29', '7', '-5', '6'); -test(macro, '29', '-7', '-5', '-6'); -test(macro, '-29', '-7', '4', '-1'); -test(macro, '29', '9', '3', '2'); -test(macro, '-29', '9', '-4', '7'); -test(macro, '29', '-9', '-4', '-7'); -test(macro, '-29', '-9', '3', '-2'); -test(macro, '29', '11', '2', '7'); -test(macro, '-29', '11', '-3', '4'); -test(macro, '29', '-11', '-3', '-4'); -test(macro, '-29', '-11', '2', '-7'); -test(macro, '29', '17', '1', '12'); -test(macro, '-29', '17', '-2', '5'); -test(macro, '29', '-17', '-2', '-5'); -test(macro, '-29', '-17', '1', '-12'); -test(macro, '29', '22', '1', '7'); -test(macro, '-29', '22', '-2', '15'); -test(macro, '29', '-22', '-2', '-15'); -test(macro, '-29', '-22', '1', '-7'); -test(macro, '29', '24', '1', '5'); -test(macro, '-29', '24', '-2', '19'); -test(macro, '29', '-24', '-2', '-19'); -test(macro, '-29', '-24', '1', '-5'); -test(macro, '29', '27', '1', '2'); -test(macro, '-29', '27', '-2', '25'); -test(macro, '29', '-27', '-2', '-25'); -test(macro, '-29', '-27', '1', '-2'); -test(macro, '29', '29', '1', '0'); -test(macro, '-29', '29', '-1', '0'); -test(macro, '29', '-29', '-1', '0'); -test(macro, '-29', '-29', '1', '0'); -test(macro, '29', '1234', '0', '29'); -test(macro, '-29', '1234', '-1', '1205'); -test(macro, '29', '-1234', '-1', '-1205'); -test(macro, '-29', '-1234', '0', '-29'); -test(macro, '29', '5678', '0', '29'); -test(macro, '-29', '5678', '-1', '5649'); -test(macro, '29', '-5678', '-1', '-5649'); -test(macro, '-29', '-5678', '0', '-29'); -test(macro, '29', '94906265', '0', '29'); -test(macro, '-29', '94906265', '-1', '94906236'); -test(macro, '29', '-94906265', '-1', '-94906236'); -test(macro, '-29', '-94906265', '0', '-29'); -test(macro, '29', '94906266', '0', '29'); -test(macro, '-29', '94906266', '-1', '94906237'); -test(macro, '29', '-94906266', '-1', '-94906237'); -test(macro, '-29', '-94906266', '0', '-29'); -test(macro, '29', '1073741824', '0', '29'); -test(macro, '-29', '1073741824', '-1', '1073741795'); -test(macro, '29', '-1073741824', '-1', '-1073741795'); -test(macro, '-29', '-1073741824', '0', '-29'); -test(macro, '29', '51676101935731', '0', '29'); -test(macro, '-29', '51676101935731', '-1', '51676101935702'); -test(macro, '29', '-51676101935731', '-1', '-51676101935702'); -test(macro, '-29', '-51676101935731', '0', '-29'); -test(macro, '29', '717897987691852588770249', '0', '29'); -test( - macro, - '-29', - '717897987691852588770249', - '-1', - '717897987691852588770220', -); -test( - macro, - '29', - '-717897987691852588770249', - '-1', - '-717897987691852588770220', -); -test(macro, '-29', '-717897987691852588770249', '0', '-29'); -test(macro, '1234', '1', '1234', '0'); -test(macro, '-1234', '1', '-1234', '0'); -test(macro, '1234', '-1', '-1234', '0'); -test(macro, '-1234', '-1', '1234', '0'); -test(macro, '1234', '3', '411', '1'); -test(macro, '-1234', '3', '-412', '2'); -test(macro, '1234', '-3', '-412', '-2'); -test(macro, '-1234', '-3', '411', '-1'); -test(macro, '1234', '7', '176', '2'); -test(macro, '-1234', '7', '-177', '5'); -test(macro, '1234', '-7', '-177', '-5'); -test(macro, '-1234', '-7', '176', '-2'); -test(macro, '1234', '9', '137', '1'); -test(macro, '-1234', '9', '-138', '8'); -test(macro, '1234', '-9', '-138', '-8'); -test(macro, '-1234', '-9', '137', '-1'); -test(macro, '1234', '11', '112', '2'); -test(macro, '-1234', '11', '-113', '9'); -test(macro, '1234', '-11', '-113', '-9'); -test(macro, '-1234', '-11', '112', '-2'); -test(macro, '1234', '17', '72', '10'); -test(macro, '-1234', '17', '-73', '7'); -test(macro, '1234', '-17', '-73', '-7'); -test(macro, '-1234', '-17', '72', '-10'); -test(macro, '1234', '22', '56', '2'); -test(macro, '-1234', '22', '-57', '20'); -test(macro, '1234', '-22', '-57', '-20'); -test(macro, '-1234', '-22', '56', '-2'); -test(macro, '1234', '24', '51', '10'); -test(macro, '-1234', '24', '-52', '14'); -test(macro, '1234', '-24', '-52', '-14'); -test(macro, '-1234', '-24', '51', '-10'); -test(macro, '1234', '27', '45', '19'); -test(macro, '-1234', '27', '-46', '8'); -test(macro, '1234', '-27', '-46', '-8'); -test(macro, '-1234', '-27', '45', '-19'); -test(macro, '1234', '29', '42', '16'); -test(macro, '-1234', '29', '-43', '13'); -test(macro, '1234', '-29', '-43', '-13'); -test(macro, '-1234', '-29', '42', '-16'); -test(macro, '1234', '1234', '1', '0'); -test(macro, '-1234', '1234', '-1', '0'); -test(macro, '1234', '-1234', '-1', '0'); -test(macro, '-1234', '-1234', '1', '0'); -test(macro, '1234', '5678', '0', '1234'); -test(macro, '-1234', '5678', '-1', '4444'); -test(macro, '1234', '-5678', '-1', '-4444'); -test(macro, '-1234', '-5678', '0', '-1234'); -test(macro, '1234', '94906265', '0', '1234'); -test(macro, '-1234', '94906265', '-1', '94905031'); -test(macro, '1234', '-94906265', '-1', '-94905031'); -test(macro, '-1234', '-94906265', '0', '-1234'); -test(macro, '1234', '94906266', '0', '1234'); -test(macro, '-1234', '94906266', '-1', '94905032'); -test(macro, '1234', '-94906266', '-1', '-94905032'); -test(macro, '-1234', '-94906266', '0', '-1234'); -test(macro, '1234', '1073741824', '0', '1234'); -test(macro, '-1234', '1073741824', '-1', '1073740590'); -test(macro, '1234', '-1073741824', '-1', '-1073740590'); -test(macro, '-1234', '-1073741824', '0', '-1234'); -test(macro, '1234', '51676101935731', '0', '1234'); -test(macro, '-1234', '51676101935731', '-1', '51676101934497'); -test(macro, '1234', '-51676101935731', '-1', '-51676101934497'); -test(macro, '-1234', '-51676101935731', '0', '-1234'); -test(macro, '1234', '717897987691852588770249', '0', '1234'); -test( - macro, - '-1234', - '717897987691852588770249', - '-1', - '717897987691852588769015', -); -test( - macro, - '1234', - '-717897987691852588770249', - '-1', - '-717897987691852588769015', -); -test(macro, '-1234', '-717897987691852588770249', '0', '-1234'); -test(macro, '5678', '1', '5678', '0'); -test(macro, '-5678', '1', '-5678', '0'); -test(macro, '5678', '-1', '-5678', '0'); -test(macro, '-5678', '-1', '5678', '0'); -test(macro, '5678', '3', '1892', '2'); -test(macro, '-5678', '3', '-1893', '1'); -test(macro, '5678', '-3', '-1893', '-1'); -test(macro, '-5678', '-3', '1892', '-2'); -test(macro, '5678', '7', '811', '1'); -test(macro, '-5678', '7', '-812', '6'); -test(macro, '5678', '-7', '-812', '-6'); -test(macro, '-5678', '-7', '811', '-1'); -test(macro, '5678', '9', '630', '8'); -test(macro, '-5678', '9', '-631', '1'); -test(macro, '5678', '-9', '-631', '-1'); -test(macro, '-5678', '-9', '630', '-8'); -test(macro, '5678', '11', '516', '2'); -test(macro, '-5678', '11', '-517', '9'); -test(macro, '5678', '-11', '-517', '-9'); -test(macro, '-5678', '-11', '516', '-2'); -test(macro, '5678', '17', '334', '0'); -test(macro, '-5678', '17', '-334', '0'); -test(macro, '5678', '-17', '-334', '0'); -test(macro, '-5678', '-17', '334', '0'); -test(macro, '5678', '22', '258', '2'); -test(macro, '-5678', '22', '-259', '20'); -test(macro, '5678', '-22', '-259', '-20'); -test(macro, '-5678', '-22', '258', '-2'); -test(macro, '5678', '24', '236', '14'); -test(macro, '-5678', '24', '-237', '10'); -test(macro, '5678', '-24', '-237', '-10'); -test(macro, '-5678', '-24', '236', '-14'); -test(macro, '5678', '27', '210', '8'); -test(macro, '-5678', '27', '-211', '19'); -test(macro, '5678', '-27', '-211', '-19'); -test(macro, '-5678', '-27', '210', '-8'); -test(macro, '5678', '29', '195', '23'); -test(macro, '-5678', '29', '-196', '6'); -test(macro, '5678', '-29', '-196', '-6'); -test(macro, '-5678', '-29', '195', '-23'); -test(macro, '5678', '1234', '4', '742'); -test(macro, '-5678', '1234', '-5', '492'); -test(macro, '5678', '-1234', '-5', '-492'); -test(macro, '-5678', '-1234', '4', '-742'); -test(macro, '5678', '5678', '1', '0'); -test(macro, '-5678', '5678', '-1', '0'); -test(macro, '5678', '-5678', '-1', '0'); -test(macro, '-5678', '-5678', '1', '0'); -test(macro, '5678', '94906265', '0', '5678'); -test(macro, '-5678', '94906265', '-1', '94900587'); -test(macro, '5678', '-94906265', '-1', '-94900587'); -test(macro, '-5678', '-94906265', '0', '-5678'); -test(macro, '5678', '94906266', '0', '5678'); -test(macro, '-5678', '94906266', '-1', '94900588'); -test(macro, '5678', '-94906266', '-1', '-94900588'); -test(macro, '-5678', '-94906266', '0', '-5678'); -test(macro, '5678', '1073741824', '0', '5678'); -test(macro, '-5678', '1073741824', '-1', '1073736146'); -test(macro, '5678', '-1073741824', '-1', '-1073736146'); -test(macro, '-5678', '-1073741824', '0', '-5678'); -test(macro, '5678', '51676101935731', '0', '5678'); -test(macro, '-5678', '51676101935731', '-1', '51676101930053'); -test(macro, '5678', '-51676101935731', '-1', '-51676101930053'); -test(macro, '-5678', '-51676101935731', '0', '-5678'); -test(macro, '5678', '717897987691852588770249', '0', '5678'); -test( - macro, - '-5678', - '717897987691852588770249', - '-1', - '717897987691852588764571', -); -test( - macro, - '5678', - '-717897987691852588770249', - '-1', - '-717897987691852588764571', -); -test(macro, '-5678', '-717897987691852588770249', '0', '-5678'); -test(macro, '94906265', '1', '94906265', '0'); -test(macro, '-94906265', '1', '-94906265', '0'); -test(macro, '94906265', '-1', '-94906265', '0'); -test(macro, '-94906265', '-1', '94906265', '0'); -test(macro, '94906265', '3', '31635421', '2'); -test(macro, '-94906265', '3', '-31635422', '1'); -test(macro, '94906265', '-3', '-31635422', '-1'); -test(macro, '-94906265', '-3', '31635421', '-2'); -test(macro, '94906265', '7', '13558037', '6'); -test(macro, '-94906265', '7', '-13558038', '1'); -test(macro, '94906265', '-7', '-13558038', '-1'); -test(macro, '-94906265', '-7', '13558037', '-6'); -test(macro, '94906265', '9', '10545140', '5'); -test(macro, '-94906265', '9', '-10545141', '4'); -test(macro, '94906265', '-9', '-10545141', '-4'); -test(macro, '-94906265', '-9', '10545140', '-5'); -test(macro, '94906265', '11', '8627842', '3'); -test(macro, '-94906265', '11', '-8627843', '8'); -test(macro, '94906265', '-11', '-8627843', '-8'); -test(macro, '-94906265', '-11', '8627842', '-3'); -test(macro, '94906265', '17', '5582721', '8'); -test(macro, '-94906265', '17', '-5582722', '9'); -test(macro, '94906265', '-17', '-5582722', '-9'); -test(macro, '-94906265', '-17', '5582721', '-8'); -test(macro, '94906265', '22', '4313921', '3'); -test(macro, '-94906265', '22', '-4313922', '19'); -test(macro, '94906265', '-22', '-4313922', '-19'); -test(macro, '-94906265', '-22', '4313921', '-3'); -test(macro, '94906265', '24', '3954427', '17'); -test(macro, '-94906265', '24', '-3954428', '7'); -test(macro, '94906265', '-24', '-3954428', '-7'); -test(macro, '-94906265', '-24', '3954427', '-17'); -test(macro, '94906265', '27', '3515046', '23'); -test(macro, '-94906265', '27', '-3515047', '4'); -test(macro, '94906265', '-27', '-3515047', '-4'); -test(macro, '-94906265', '-27', '3515046', '-23'); -test(macro, '94906265', '29', '3272629', '24'); -test(macro, '-94906265', '29', '-3272630', '5'); -test(macro, '94906265', '-29', '-3272630', '-5'); -test(macro, '-94906265', '-29', '3272629', '-24'); -test(macro, '94906265', '1234', '76909', '559'); -test(macro, '-94906265', '1234', '-76910', '675'); -test(macro, '94906265', '-1234', '-76910', '-675'); -test(macro, '-94906265', '-1234', '76909', '-559'); -test(macro, '94906265', '5678', '16714', '4173'); -test(macro, '-94906265', '5678', '-16715', '1505'); -test(macro, '94906265', '-5678', '-16715', '-1505'); -test(macro, '-94906265', '-5678', '16714', '-4173'); -test(macro, '94906265', '94906265', '1', '0'); -test(macro, '-94906265', '94906265', '-1', '0'); -test(macro, '94906265', '-94906265', '-1', '0'); -test(macro, '-94906265', '-94906265', '1', '0'); -test(macro, '94906265', '94906266', '0', '94906265'); -test(macro, '-94906265', '94906266', '-1', '1'); -test(macro, '94906265', '-94906266', '-1', '-1'); -test(macro, '-94906265', '-94906266', '0', '-94906265'); -test(macro, '94906265', '1073741824', '0', '94906265'); -test(macro, '-94906265', '1073741824', '-1', '978835559'); -test(macro, '94906265', '-1073741824', '-1', '-978835559'); -test(macro, '-94906265', '-1073741824', '0', '-94906265'); -test(macro, '94906265', '51676101935731', '0', '94906265'); -test(macro, '-94906265', '51676101935731', '-1', '51676007029466'); -test(macro, '94906265', '-51676101935731', '-1', '-51676007029466'); -test(macro, '-94906265', '-51676101935731', '0', '-94906265'); -test(macro, '94906265', '717897987691852588770249', '0', '94906265'); -test( - macro, - '-94906265', - '717897987691852588770249', - '-1', - '717897987691852493863984', -); -test( - macro, - '94906265', - '-717897987691852588770249', - '-1', - '-717897987691852493863984', -); -test(macro, '-94906265', '-717897987691852588770249', '0', '-94906265'); -test(macro, '94906266', '1', '94906266', '0'); -test(macro, '-94906266', '1', '-94906266', '0'); -test(macro, '94906266', '-1', '-94906266', '0'); -test(macro, '-94906266', '-1', '94906266', '0'); -test(macro, '94906266', '3', '31635422', '0'); -test(macro, '-94906266', '3', '-31635422', '0'); -test(macro, '94906266', '-3', '-31635422', '0'); -test(macro, '-94906266', '-3', '31635422', '0'); -test(macro, '94906266', '7', '13558038', '0'); -test(macro, '-94906266', '7', '-13558038', '0'); -test(macro, '94906266', '-7', '-13558038', '0'); -test(macro, '-94906266', '-7', '13558038', '0'); -test(macro, '94906266', '9', '10545140', '6'); -test(macro, '-94906266', '9', '-10545141', '3'); -test(macro, '94906266', '-9', '-10545141', '-3'); -test(macro, '-94906266', '-9', '10545140', '-6'); -test(macro, '94906266', '11', '8627842', '4'); -test(macro, '-94906266', '11', '-8627843', '7'); -test(macro, '94906266', '-11', '-8627843', '-7'); -test(macro, '-94906266', '-11', '8627842', '-4'); -test(macro, '94906266', '17', '5582721', '9'); -test(macro, '-94906266', '17', '-5582722', '8'); -test(macro, '94906266', '-17', '-5582722', '-8'); -test(macro, '-94906266', '-17', '5582721', '-9'); -test(macro, '94906266', '22', '4313921', '4'); -test(macro, '-94906266', '22', '-4313922', '18'); -test(macro, '94906266', '-22', '-4313922', '-18'); -test(macro, '-94906266', '-22', '4313921', '-4'); -test(macro, '94906266', '24', '3954427', '18'); -test(macro, '-94906266', '24', '-3954428', '6'); -test(macro, '94906266', '-24', '-3954428', '-6'); -test(macro, '-94906266', '-24', '3954427', '-18'); -test(macro, '94906266', '27', '3515046', '24'); -test(macro, '-94906266', '27', '-3515047', '3'); -test(macro, '94906266', '-27', '-3515047', '-3'); -test(macro, '-94906266', '-27', '3515046', '-24'); -test(macro, '94906266', '29', '3272629', '25'); -test(macro, '-94906266', '29', '-3272630', '4'); -test(macro, '94906266', '-29', '-3272630', '-4'); -test(macro, '-94906266', '-29', '3272629', '-25'); -test(macro, '94906266', '1234', '76909', '560'); -test(macro, '-94906266', '1234', '-76910', '674'); -test(macro, '94906266', '-1234', '-76910', '-674'); -test(macro, '-94906266', '-1234', '76909', '-560'); -test(macro, '94906266', '5678', '16714', '4174'); -test(macro, '-94906266', '5678', '-16715', '1504'); -test(macro, '94906266', '-5678', '-16715', '-1504'); -test(macro, '-94906266', '-5678', '16714', '-4174'); -test(macro, '94906266', '94906265', '1', '1'); -test(macro, '-94906266', '94906265', '-2', '94906264'); -test(macro, '94906266', '-94906265', '-2', '-94906264'); -test(macro, '-94906266', '-94906265', '1', '-1'); -test(macro, '94906266', '94906266', '1', '0'); -test(macro, '-94906266', '94906266', '-1', '0'); -test(macro, '94906266', '-94906266', '-1', '0'); -test(macro, '-94906266', '-94906266', '1', '0'); -test(macro, '94906266', '1073741824', '0', '94906266'); -test(macro, '-94906266', '1073741824', '-1', '978835558'); -test(macro, '94906266', '-1073741824', '-1', '-978835558'); -test(macro, '-94906266', '-1073741824', '0', '-94906266'); -test(macro, '94906266', '51676101935731', '0', '94906266'); -test(macro, '-94906266', '51676101935731', '-1', '51676007029465'); -test(macro, '94906266', '-51676101935731', '-1', '-51676007029465'); -test(macro, '-94906266', '-51676101935731', '0', '-94906266'); -test(macro, '94906266', '717897987691852588770249', '0', '94906266'); -test( - macro, - '-94906266', - '717897987691852588770249', - '-1', - '717897987691852493863983', -); -test( - macro, - '94906266', - '-717897987691852588770249', - '-1', - '-717897987691852493863983', -); -test(macro, '-94906266', '-717897987691852588770249', '0', '-94906266'); -test(macro, '1073741824', '1', '1073741824', '0'); -test(macro, '-1073741824', '1', '-1073741824', '0'); -test(macro, '1073741824', '-1', '-1073741824', '0'); -test(macro, '-1073741824', '-1', '1073741824', '0'); -test(macro, '1073741824', '3', '357913941', '1'); -test(macro, '-1073741824', '3', '-357913942', '2'); -test(macro, '1073741824', '-3', '-357913942', '-2'); -test(macro, '-1073741824', '-3', '357913941', '-1'); -test(macro, '1073741824', '7', '153391689', '1'); -test(macro, '-1073741824', '7', '-153391690', '6'); -test(macro, '1073741824', '-7', '-153391690', '-6'); -test(macro, '-1073741824', '-7', '153391689', '-1'); -test(macro, '1073741824', '9', '119304647', '1'); -test(macro, '-1073741824', '9', '-119304648', '8'); -test(macro, '1073741824', '-9', '-119304648', '-8'); -test(macro, '-1073741824', '-9', '119304647', '-1'); -test(macro, '1073741824', '11', '97612893', '1'); -test(macro, '-1073741824', '11', '-97612894', '10'); -test(macro, '1073741824', '-11', '-97612894', '-10'); -test(macro, '-1073741824', '-11', '97612893', '-1'); -test(macro, '1073741824', '17', '63161283', '13'); -test(macro, '-1073741824', '17', '-63161284', '4'); -test(macro, '1073741824', '-17', '-63161284', '-4'); -test(macro, '-1073741824', '-17', '63161283', '-13'); -test(macro, '1073741824', '22', '48806446', '12'); -test(macro, '-1073741824', '22', '-48806447', '10'); -test(macro, '1073741824', '-22', '-48806447', '-10'); -test(macro, '-1073741824', '-22', '48806446', '-12'); -test(macro, '1073741824', '24', '44739242', '16'); -test(macro, '-1073741824', '24', '-44739243', '8'); -test(macro, '1073741824', '-24', '-44739243', '-8'); -test(macro, '-1073741824', '-24', '44739242', '-16'); -test(macro, '1073741824', '27', '39768215', '19'); -test(macro, '-1073741824', '27', '-39768216', '8'); -test(macro, '1073741824', '-27', '-39768216', '-8'); -test(macro, '-1073741824', '-27', '39768215', '-19'); -test(macro, '1073741824', '29', '37025580', '4'); -test(macro, '-1073741824', '29', '-37025581', '25'); -test(macro, '1073741824', '-29', '-37025581', '-25'); -test(macro, '-1073741824', '-29', '37025580', '-4'); -test(macro, '1073741824', '1234', '870131', '170'); -test(macro, '-1073741824', '1234', '-870132', '1064'); -test(macro, '1073741824', '-1234', '-870132', '-1064'); -test(macro, '-1073741824', '-1234', '870131', '-170'); -test(macro, '1073741824', '5678', '189105', '3634'); -test(macro, '-1073741824', '5678', '-189106', '2044'); -test(macro, '1073741824', '-5678', '-189106', '-2044'); -test(macro, '-1073741824', '-5678', '189105', '-3634'); -test(macro, '1073741824', '94906265', '11', '29772909'); -test(macro, '-1073741824', '94906265', '-12', '65133356'); -test(macro, '1073741824', '-94906265', '-12', '-65133356'); -test(macro, '-1073741824', '-94906265', '11', '-29772909'); -test(macro, '1073741824', '94906266', '11', '29772898'); -test(macro, '-1073741824', '94906266', '-12', '65133368'); -test(macro, '1073741824', '-94906266', '-12', '-65133368'); -test(macro, '-1073741824', '-94906266', '11', '-29772898'); -test(macro, '1073741824', '1073741824', '1', '0'); -test(macro, '-1073741824', '1073741824', '-1', '0'); -test(macro, '1073741824', '-1073741824', '-1', '0'); -test(macro, '-1073741824', '-1073741824', '1', '0'); -test(macro, '1073741824', '51676101935731', '0', '1073741824'); -test(macro, '-1073741824', '51676101935731', '-1', '51675028193907'); -test(macro, '1073741824', '-51676101935731', '-1', '-51675028193907'); -test(macro, '-1073741824', '-51676101935731', '0', '-1073741824'); -test(macro, '1073741824', '717897987691852588770249', '0', '1073741824'); -test( - macro, - '-1073741824', - '717897987691852588770249', - '-1', - '717897987691851515028425', -); -test( - macro, - '1073741824', - '-717897987691852588770249', - '-1', - '-717897987691851515028425', -); -test(macro, '-1073741824', '-717897987691852588770249', '0', '-1073741824'); -test(macro, '51676101935731', '1', '51676101935731', '0'); -test(macro, '-51676101935731', '1', '-51676101935731', '0'); -test(macro, '51676101935731', '-1', '-51676101935731', '0'); -test(macro, '-51676101935731', '-1', '51676101935731', '0'); -test(macro, '51676101935731', '3', '17225367311910', '1'); -test(macro, '-51676101935731', '3', '-17225367311911', '2'); -test(macro, '51676101935731', '-3', '-17225367311911', '-2'); -test(macro, '-51676101935731', '-3', '17225367311910', '-1'); -test(macro, '51676101935731', '7', '7382300276533', '0'); -test(macro, '-51676101935731', '7', '-7382300276533', '0'); -test(macro, '51676101935731', '-7', '-7382300276533', '0'); -test(macro, '-51676101935731', '-7', '7382300276533', '0'); -test(macro, '51676101935731', '9', '5741789103970', '1'); -test(macro, '-51676101935731', '9', '-5741789103971', '8'); -test(macro, '51676101935731', '-9', '-5741789103971', '-8'); -test(macro, '-51676101935731', '-9', '5741789103970', '-1'); -test(macro, '51676101935731', '11', '4697827448702', '9'); -test(macro, '-51676101935731', '11', '-4697827448703', '2'); -test(macro, '51676101935731', '-11', '-4697827448703', '-2'); -test(macro, '-51676101935731', '-11', '4697827448702', '-9'); -test(macro, '51676101935731', '17', '3039770702101', '14'); -test(macro, '-51676101935731', '17', '-3039770702102', '3'); -test(macro, '51676101935731', '-17', '-3039770702102', '-3'); -test(macro, '-51676101935731', '-17', '3039770702101', '-14'); -test(macro, '51676101935731', '22', '2348913724351', '9'); -test(macro, '-51676101935731', '22', '-2348913724352', '13'); -test(macro, '51676101935731', '-22', '-2348913724352', '-13'); -test(macro, '-51676101935731', '-22', '2348913724351', '-9'); -test(macro, '51676101935731', '24', '2153170913988', '19'); -test(macro, '-51676101935731', '24', '-2153170913989', '5'); -test(macro, '51676101935731', '-24', '-2153170913989', '-5'); -test(macro, '-51676101935731', '-24', '2153170913988', '-19'); -test(macro, '51676101935731', '27', '1913929701323', '10'); -test(macro, '-51676101935731', '27', '-1913929701324', '17'); -test(macro, '51676101935731', '-27', '-1913929701324', '-17'); -test(macro, '-51676101935731', '-27', '1913929701323', '-10'); -test(macro, '51676101935731', '29', '1781934549507', '28'); -test(macro, '-51676101935731', '29', '-1781934549508', '1'); -test(macro, '51676101935731', '-29', '-1781934549508', '-1'); -test(macro, '-51676101935731', '-29', '1781934549507', '-28'); -test(macro, '51676101935731', '1234', '41876905944', '835'); -test(macro, '-51676101935731', '1234', '-41876905945', '399'); -test(macro, '51676101935731', '-1234', '-41876905945', '-399'); -test(macro, '-51676101935731', '-1234', '41876905944', '-835'); -test(macro, '51676101935731', '5678', '9101109886', '3023'); -test(macro, '-51676101935731', '5678', '-9101109887', '2655'); -test(macro, '51676101935731', '-5678', '-9101109887', '-2655'); -test(macro, '-51676101935731', '-5678', '9101109886', '-3023'); -test(macro, '51676101935731', '94906265', '544496', '20268291'); -test(macro, '-51676101935731', '94906265', '-544497', '74637974'); -test(macro, '51676101935731', '-94906265', '-544497', '-74637974'); -test(macro, '-51676101935731', '-94906265', '544496', '-20268291'); -test(macro, '51676101935731', '94906266', '544496', '19723795'); -test(macro, '-51676101935731', '94906266', '-544497', '75182471'); -test(macro, '51676101935731', '-94906266', '-544497', '-75182471'); -test(macro, '-51676101935731', '-94906266', '544496', '-19723795'); -test(macro, '51676101935731', '1073741824', '48127', '129172083'); -test(macro, '-51676101935731', '1073741824', '-48128', '944569741'); -test(macro, '51676101935731', '-1073741824', '-48128', '-944569741'); -test(macro, '-51676101935731', '-1073741824', '48127', '-129172083'); -test(macro, '51676101935731', '51676101935731', '1', '0'); -test(macro, '-51676101935731', '51676101935731', '-1', '0'); -test(macro, '51676101935731', '-51676101935731', '-1', '0'); -test(macro, '-51676101935731', '-51676101935731', '1', '0'); -test( - macro, - '51676101935731', - '717897987691852588770249', - '0', - '51676101935731', -); -test( - macro, - '-51676101935731', - '717897987691852588770249', - '-1', - '717897987640176486834518', -); -test( - macro, - '51676101935731', - '-717897987691852588770249', - '-1', - '-717897987640176486834518', -); -test( - macro, - '-51676101935731', - '-717897987691852588770249', - '0', - '-51676101935731', -); -test(macro, '717897987691852588770249', '1', '717897987691852588770249', '0'); -test(macro, '-717897987691852588770249', '1', '-717897987691852588770249', '0'); -test(macro, '717897987691852588770249', '-1', '-717897987691852588770249', '0'); -test(macro, '-717897987691852588770249', '-1', '717897987691852588770249', '0'); -test(macro, '717897987691852588770249', '3', '239299329230617529590083', '0'); -test(macro, '-717897987691852588770249', '3', '-239299329230617529590083', '0'); -test(macro, '717897987691852588770249', '-3', '-239299329230617529590083', '0'); -test(macro, '-717897987691852588770249', '-3', '239299329230617529590083', '0'); -test(macro, '717897987691852588770249', '7', '102556855384550369824321', '2'); -test(macro, '-717897987691852588770249', '7', '-102556855384550369824322', '5'); -test( - macro, - '717897987691852588770249', - '-7', - '-102556855384550369824322', - '-5', -); -test( - macro, - '-717897987691852588770249', - '-7', - '102556855384550369824321', - '-2', -); -test(macro, '717897987691852588770249', '9', '79766443076872509863361', '0'); -test(macro, '-717897987691852588770249', '9', '-79766443076872509863361', '0'); -test(macro, '717897987691852588770249', '-9', '-79766443076872509863361', '0'); -test(macro, '-717897987691852588770249', '-9', '79766443076872509863361', '0'); -test(macro, '717897987691852588770249', '11', '65263453426532053524568', '1'); -test( - macro, - '-717897987691852588770249', - '11', - '-65263453426532053524569', - '10', -); -test( - macro, - '717897987691852588770249', - '-11', - '-65263453426532053524569', - '-10', -); -test( - macro, - '-717897987691852588770249', - '-11', - '65263453426532053524568', - '-1', -); -test(macro, '717897987691852588770249', '17', '42229293393638387574720', '9'); -test(macro, '-717897987691852588770249', '17', '-42229293393638387574721', '8'); -test( - macro, - '717897987691852588770249', - '-17', - '-42229293393638387574721', - '-8', -); -test( - macro, - '-717897987691852588770249', - '-17', - '42229293393638387574720', - '-9', -); -test(macro, '717897987691852588770249', '22', '32631726713266026762284', '1'); -test( - macro, - '-717897987691852588770249', - '22', - '-32631726713266026762285', - '21', -); -test( - macro, - '717897987691852588770249', - '-22', - '-32631726713266026762285', - '-21', -); -test( - macro, - '-717897987691852588770249', - '-22', - '32631726713266026762284', - '-1', -); -test(macro, '717897987691852588770249', '24', '29912416153827191198760', '9'); -test( - macro, - '-717897987691852588770249', - '24', - '-29912416153827191198761', - '15', -); -test( - macro, - '717897987691852588770249', - '-24', - '-29912416153827191198761', - '-15', -); -test( - macro, - '-717897987691852588770249', - '-24', - '29912416153827191198760', - '-9', -); -test(macro, '717897987691852588770249', '27', '26588814358957503287787', '0'); -test(macro, '-717897987691852588770249', '27', '-26588814358957503287787', '0'); -test(macro, '717897987691852588770249', '-27', '-26588814358957503287787', '0'); -test(macro, '-717897987691852588770249', '-27', '26588814358957503287787', '0'); -test(macro, '717897987691852588770249', '29', '24755103023856985819663', '22'); -test(macro, '-717897987691852588770249', '29', '-24755103023856985819664', '7'); -test( - macro, - '717897987691852588770249', - '-29', - '-24755103023856985819664', - '-7', -); -test( - macro, - '-717897987691852588770249', - '-29', - '24755103023856985819663', - '-22', -); -test(macro, '717897987691852588770249', '1234', '581764981922084755891', '755'); -test( - macro, - '-717897987691852588770249', - '1234', - '-581764981922084755892', - '479', -); -test( - macro, - '717897987691852588770249', - '-1234', - '-581764981922084755892', - '-479', -); -test( - macro, - '-717897987691852588770249', - '-1234', - '581764981922084755891', - '-755', -); -test( - macro, - '717897987691852588770249', - '5678', - '126435010160593974774', - '3477', -); -test( - macro, - '-717897987691852588770249', - '5678', - '-126435010160593974775', - '2201', -); -test( - macro, - '717897987691852588770249', - '-5678', - '-126435010160593974775', - '-2201', -); -test( - macro, - '-717897987691852588770249', - '-5678', - '126435010160593974774', - '-3477', -); -test( - macro, - '717897987691852588770249', - '94906265', - '7564284483135571', - '56517934', -); -test( - macro, - '-717897987691852588770249', - '94906265', - '-7564284483135572', - '38388331', -); -test( - macro, - '717897987691852588770249', - '-94906265', - '-7564284483135572', - '-38388331', -); -test( - macro, - '-717897987691852588770249', - '-94906265', - '7564284483135571', - '-56517934', -); -test( - macro, - '717897987691852588770249', - '94906266', - '7564284403432883', - '81625371', -); -test( - macro, - '-717897987691852588770249', - '94906266', - '-7564284403432884', - '13280895', -); -test( - macro, - '717897987691852588770249', - '-94906266', - '-7564284403432884', - '-13280895', -); -test( - macro, - '-717897987691852588770249', - '-94906266', - '7564284403432883', - '-81625371', -); -test( - macro, - '717897987691852588770249', - '1073741824', - '668594602208447', - '278782921', -); -test( - macro, - '-717897987691852588770249', - '1073741824', - '-668594602208448', - '794958903', -); -test( - macro, - '717897987691852588770249', - '-1073741824', - '-668594602208448', - '-794958903', -); -test( - macro, - '-717897987691852588770249', - '-1073741824', - '668594602208447', - '-278782921', -); -test( - macro, - '717897987691852588770249', - '51676101935731', - '13892262782', - '51258661506607', -); -test( - macro, - '-717897987691852588770249', - '51676101935731', - '-13892262783', - '417440429124', -); -test( - macro, - '717897987691852588770249', - '-51676101935731', - '-13892262783', - '-417440429124', -); -test( - macro, - '-717897987691852588770249', - '-51676101935731', - '13892262782', - '-51258661506607', -); -test(macro, '717897987691852588770249', '717897987691852588770249', '1', '0'); -test(macro, '-717897987691852588770249', '717897987691852588770249', '-1', '0'); -test(macro, '717897987691852588770249', '-717897987691852588770249', '-1', '0'); -test(macro, '-717897987691852588770249', '-717897987691852588770249', '1', '0'); diff --git a/test/src/integer/arithmetic/divmodn.js b/test/src/integer/arithmetic/divmodn.js deleted file mode 100644 index 8eab318..0000000 --- a/test/src/integer/arithmetic/divmodn.js +++ /dev/null @@ -1,1262 +0,0 @@ -import test from 'ava'; -import {parse, stringify, divmodn} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C, D) { - const a = parse(A); - const [c, d] = divmodn(a, B); - t.is(stringify(a), A); - t.is(stringify(c), C); - t.is(stringify(d), D); -} - -macro.title = (_, A, B, C, D) => - `divmodn(${fmt(A)},${B}) = [${fmt(C)},${fmt(D)}]`; - -test(macro, '0', 1, '0', '0'); -test(macro, '0', -1, '0', '0'); -test(macro, '0', 3, '0', '0'); -test(macro, '0', -3, '0', '0'); -test(macro, '0', 7, '0', '0'); -test(macro, '0', -7, '0', '0'); -test(macro, '0', 9, '0', '0'); -test(macro, '0', -9, '0', '0'); -test(macro, '0', 11, '0', '0'); -test(macro, '0', -11, '0', '0'); -test(macro, '0', 17, '0', '0'); -test(macro, '0', -17, '0', '0'); -test(macro, '0', 22, '0', '0'); -test(macro, '0', -22, '0', '0'); -test(macro, '0', 24, '0', '0'); -test(macro, '0', -24, '0', '0'); -test(macro, '0', 27, '0', '0'); -test(macro, '0', -27, '0', '0'); -test(macro, '0', 29, '0', '0'); -test(macro, '0', -29, '0', '0'); -test(macro, '0', 1234, '0', '0'); -test(macro, '0', -1234, '0', '0'); -test(macro, '0', 5678, '0', '0'); -test(macro, '0', -5678, '0', '0'); -test(macro, '0', 94906265, '0', '0'); -test(macro, '0', -94906265, '0', '0'); -test(macro, '0', 94906266, '0', '0'); -test(macro, '0', -94906266, '0', '0'); -test(macro, '0', 1073741824, '0', '0'); -test(macro, '0', -1073741824, '0', '0'); -test(macro, '0', 51676101935731, '0', '0'); -test(macro, '0', -51676101935731, '0', '0'); -test(macro, '1', 1, '1', '0'); -test(macro, '-1', 1, '-1', '0'); -test(macro, '1', -1, '-1', '0'); -test(macro, '-1', -1, '1', '0'); -test(macro, '1', 3, '0', '1'); -test(macro, '-1', 3, '-1', '2'); -test(macro, '1', -3, '-1', '-2'); -test(macro, '-1', -3, '0', '-1'); -test(macro, '1', 7, '0', '1'); -test(macro, '-1', 7, '-1', '6'); -test(macro, '1', -7, '-1', '-6'); -test(macro, '-1', -7, '0', '-1'); -test(macro, '1', 9, '0', '1'); -test(macro, '-1', 9, '-1', '8'); -test(macro, '1', -9, '-1', '-8'); -test(macro, '-1', -9, '0', '-1'); -test(macro, '1', 11, '0', '1'); -test(macro, '-1', 11, '-1', '10'); -test(macro, '1', -11, '-1', '-10'); -test(macro, '-1', -11, '0', '-1'); -test(macro, '1', 17, '0', '1'); -test(macro, '-1', 17, '-1', '16'); -test(macro, '1', -17, '-1', '-16'); -test(macro, '-1', -17, '0', '-1'); -test(macro, '1', 22, '0', '1'); -test(macro, '-1', 22, '-1', '21'); -test(macro, '1', -22, '-1', '-21'); -test(macro, '-1', -22, '0', '-1'); -test(macro, '1', 24, '0', '1'); -test(macro, '-1', 24, '-1', '23'); -test(macro, '1', -24, '-1', '-23'); -test(macro, '-1', -24, '0', '-1'); -test(macro, '1', 27, '0', '1'); -test(macro, '-1', 27, '-1', '26'); -test(macro, '1', -27, '-1', '-26'); -test(macro, '-1', -27, '0', '-1'); -test(macro, '1', 29, '0', '1'); -test(macro, '-1', 29, '-1', '28'); -test(macro, '1', -29, '-1', '-28'); -test(macro, '-1', -29, '0', '-1'); -test(macro, '1', 1234, '0', '1'); -test(macro, '-1', 1234, '-1', '1233'); -test(macro, '1', -1234, '-1', '-1233'); -test(macro, '-1', -1234, '0', '-1'); -test(macro, '1', 5678, '0', '1'); -test(macro, '-1', 5678, '-1', '5677'); -test(macro, '1', -5678, '-1', '-5677'); -test(macro, '-1', -5678, '0', '-1'); -test(macro, '1', 94906265, '0', '1'); -test(macro, '-1', 94906265, '-1', '94906264'); -test(macro, '1', -94906265, '-1', '-94906264'); -test(macro, '-1', -94906265, '0', '-1'); -test(macro, '1', 94906266, '0', '1'); -test(macro, '-1', 94906266, '-1', '94906265'); -test(macro, '1', -94906266, '-1', '-94906265'); -test(macro, '-1', -94906266, '0', '-1'); -test(macro, '1', 1073741824, '0', '1'); -test(macro, '-1', 1073741824, '-1', '1073741823'); -test(macro, '1', -1073741824, '-1', '-1073741823'); -test(macro, '-1', -1073741824, '0', '-1'); -test(macro, '1', 51676101935731, '0', '1'); -test(macro, '-1', 51676101935731, '-1', '51676101935730'); -test(macro, '1', -51676101935731, '-1', '-51676101935730'); -test(macro, '-1', -51676101935731, '0', '-1'); -test(macro, '3', 1, '3', '0'); -test(macro, '-3', 1, '-3', '0'); -test(macro, '3', -1, '-3', '0'); -test(macro, '-3', -1, '3', '0'); -test(macro, '3', 3, '1', '0'); -test(macro, '-3', 3, '-1', '0'); -test(macro, '3', -3, '-1', '0'); -test(macro, '-3', -3, '1', '0'); -test(macro, '3', 7, '0', '3'); -test(macro, '-3', 7, '-1', '4'); -test(macro, '3', -7, '-1', '-4'); -test(macro, '-3', -7, '0', '-3'); -test(macro, '3', 9, '0', '3'); -test(macro, '-3', 9, '-1', '6'); -test(macro, '3', -9, '-1', '-6'); -test(macro, '-3', -9, '0', '-3'); -test(macro, '3', 11, '0', '3'); -test(macro, '-3', 11, '-1', '8'); -test(macro, '3', -11, '-1', '-8'); -test(macro, '-3', -11, '0', '-3'); -test(macro, '3', 17, '0', '3'); -test(macro, '-3', 17, '-1', '14'); -test(macro, '3', -17, '-1', '-14'); -test(macro, '-3', -17, '0', '-3'); -test(macro, '3', 22, '0', '3'); -test(macro, '-3', 22, '-1', '19'); -test(macro, '3', -22, '-1', '-19'); -test(macro, '-3', -22, '0', '-3'); -test(macro, '3', 24, '0', '3'); -test(macro, '-3', 24, '-1', '21'); -test(macro, '3', -24, '-1', '-21'); -test(macro, '-3', -24, '0', '-3'); -test(macro, '3', 27, '0', '3'); -test(macro, '-3', 27, '-1', '24'); -test(macro, '3', -27, '-1', '-24'); -test(macro, '-3', -27, '0', '-3'); -test(macro, '3', 29, '0', '3'); -test(macro, '-3', 29, '-1', '26'); -test(macro, '3', -29, '-1', '-26'); -test(macro, '-3', -29, '0', '-3'); -test(macro, '3', 1234, '0', '3'); -test(macro, '-3', 1234, '-1', '1231'); -test(macro, '3', -1234, '-1', '-1231'); -test(macro, '-3', -1234, '0', '-3'); -test(macro, '3', 5678, '0', '3'); -test(macro, '-3', 5678, '-1', '5675'); -test(macro, '3', -5678, '-1', '-5675'); -test(macro, '-3', -5678, '0', '-3'); -test(macro, '3', 94906265, '0', '3'); -test(macro, '-3', 94906265, '-1', '94906262'); -test(macro, '3', -94906265, '-1', '-94906262'); -test(macro, '-3', -94906265, '0', '-3'); -test(macro, '3', 94906266, '0', '3'); -test(macro, '-3', 94906266, '-1', '94906263'); -test(macro, '3', -94906266, '-1', '-94906263'); -test(macro, '-3', -94906266, '0', '-3'); -test(macro, '3', 1073741824, '0', '3'); -test(macro, '-3', 1073741824, '-1', '1073741821'); -test(macro, '3', -1073741824, '-1', '-1073741821'); -test(macro, '-3', -1073741824, '0', '-3'); -test(macro, '3', 51676101935731, '0', '3'); -test(macro, '-3', 51676101935731, '-1', '51676101935728'); -test(macro, '3', -51676101935731, '-1', '-51676101935728'); -test(macro, '-3', -51676101935731, '0', '-3'); -test(macro, '7', 1, '7', '0'); -test(macro, '-7', 1, '-7', '0'); -test(macro, '7', -1, '-7', '0'); -test(macro, '-7', -1, '7', '0'); -test(macro, '7', 3, '2', '1'); -test(macro, '-7', 3, '-3', '2'); -test(macro, '7', -3, '-3', '-2'); -test(macro, '-7', -3, '2', '-1'); -test(macro, '7', 7, '1', '0'); -test(macro, '-7', 7, '-1', '0'); -test(macro, '7', -7, '-1', '0'); -test(macro, '-7', -7, '1', '0'); -test(macro, '7', 9, '0', '7'); -test(macro, '-7', 9, '-1', '2'); -test(macro, '7', -9, '-1', '-2'); -test(macro, '-7', -9, '0', '-7'); -test(macro, '7', 11, '0', '7'); -test(macro, '-7', 11, '-1', '4'); -test(macro, '7', -11, '-1', '-4'); -test(macro, '-7', -11, '0', '-7'); -test(macro, '7', 17, '0', '7'); -test(macro, '-7', 17, '-1', '10'); -test(macro, '7', -17, '-1', '-10'); -test(macro, '-7', -17, '0', '-7'); -test(macro, '7', 22, '0', '7'); -test(macro, '-7', 22, '-1', '15'); -test(macro, '7', -22, '-1', '-15'); -test(macro, '-7', -22, '0', '-7'); -test(macro, '7', 24, '0', '7'); -test(macro, '-7', 24, '-1', '17'); -test(macro, '7', -24, '-1', '-17'); -test(macro, '-7', -24, '0', '-7'); -test(macro, '7', 27, '0', '7'); -test(macro, '-7', 27, '-1', '20'); -test(macro, '7', -27, '-1', '-20'); -test(macro, '-7', -27, '0', '-7'); -test(macro, '7', 29, '0', '7'); -test(macro, '-7', 29, '-1', '22'); -test(macro, '7', -29, '-1', '-22'); -test(macro, '-7', -29, '0', '-7'); -test(macro, '7', 1234, '0', '7'); -test(macro, '-7', 1234, '-1', '1227'); -test(macro, '7', -1234, '-1', '-1227'); -test(macro, '-7', -1234, '0', '-7'); -test(macro, '7', 5678, '0', '7'); -test(macro, '-7', 5678, '-1', '5671'); -test(macro, '7', -5678, '-1', '-5671'); -test(macro, '-7', -5678, '0', '-7'); -test(macro, '7', 94906265, '0', '7'); -test(macro, '-7', 94906265, '-1', '94906258'); -test(macro, '7', -94906265, '-1', '-94906258'); -test(macro, '-7', -94906265, '0', '-7'); -test(macro, '7', 94906266, '0', '7'); -test(macro, '-7', 94906266, '-1', '94906259'); -test(macro, '7', -94906266, '-1', '-94906259'); -test(macro, '-7', -94906266, '0', '-7'); -test(macro, '7', 1073741824, '0', '7'); -test(macro, '-7', 1073741824, '-1', '1073741817'); -test(macro, '7', -1073741824, '-1', '-1073741817'); -test(macro, '-7', -1073741824, '0', '-7'); -test(macro, '7', 51676101935731, '0', '7'); -test(macro, '-7', 51676101935731, '-1', '51676101935724'); -test(macro, '7', -51676101935731, '-1', '-51676101935724'); -test(macro, '-7', -51676101935731, '0', '-7'); -test(macro, '9', 1, '9', '0'); -test(macro, '-9', 1, '-9', '0'); -test(macro, '9', -1, '-9', '0'); -test(macro, '-9', -1, '9', '0'); -test(macro, '9', 3, '3', '0'); -test(macro, '-9', 3, '-3', '0'); -test(macro, '9', -3, '-3', '0'); -test(macro, '-9', -3, '3', '0'); -test(macro, '9', 7, '1', '2'); -test(macro, '-9', 7, '-2', '5'); -test(macro, '9', -7, '-2', '-5'); -test(macro, '-9', -7, '1', '-2'); -test(macro, '9', 9, '1', '0'); -test(macro, '-9', 9, '-1', '0'); -test(macro, '9', -9, '-1', '0'); -test(macro, '-9', -9, '1', '0'); -test(macro, '9', 11, '0', '9'); -test(macro, '-9', 11, '-1', '2'); -test(macro, '9', -11, '-1', '-2'); -test(macro, '-9', -11, '0', '-9'); -test(macro, '9', 17, '0', '9'); -test(macro, '-9', 17, '-1', '8'); -test(macro, '9', -17, '-1', '-8'); -test(macro, '-9', -17, '0', '-9'); -test(macro, '9', 22, '0', '9'); -test(macro, '-9', 22, '-1', '13'); -test(macro, '9', -22, '-1', '-13'); -test(macro, '-9', -22, '0', '-9'); -test(macro, '9', 24, '0', '9'); -test(macro, '-9', 24, '-1', '15'); -test(macro, '9', -24, '-1', '-15'); -test(macro, '-9', -24, '0', '-9'); -test(macro, '9', 27, '0', '9'); -test(macro, '-9', 27, '-1', '18'); -test(macro, '9', -27, '-1', '-18'); -test(macro, '-9', -27, '0', '-9'); -test(macro, '9', 29, '0', '9'); -test(macro, '-9', 29, '-1', '20'); -test(macro, '9', -29, '-1', '-20'); -test(macro, '-9', -29, '0', '-9'); -test(macro, '9', 1234, '0', '9'); -test(macro, '-9', 1234, '-1', '1225'); -test(macro, '9', -1234, '-1', '-1225'); -test(macro, '-9', -1234, '0', '-9'); -test(macro, '9', 5678, '0', '9'); -test(macro, '-9', 5678, '-1', '5669'); -test(macro, '9', -5678, '-1', '-5669'); -test(macro, '-9', -5678, '0', '-9'); -test(macro, '9', 94906265, '0', '9'); -test(macro, '-9', 94906265, '-1', '94906256'); -test(macro, '9', -94906265, '-1', '-94906256'); -test(macro, '-9', -94906265, '0', '-9'); -test(macro, '9', 94906266, '0', '9'); -test(macro, '-9', 94906266, '-1', '94906257'); -test(macro, '9', -94906266, '-1', '-94906257'); -test(macro, '-9', -94906266, '0', '-9'); -test(macro, '9', 1073741824, '0', '9'); -test(macro, '-9', 1073741824, '-1', '1073741815'); -test(macro, '9', -1073741824, '-1', '-1073741815'); -test(macro, '-9', -1073741824, '0', '-9'); -test(macro, '9', 51676101935731, '0', '9'); -test(macro, '-9', 51676101935731, '-1', '51676101935722'); -test(macro, '9', -51676101935731, '-1', '-51676101935722'); -test(macro, '-9', -51676101935731, '0', '-9'); -test(macro, '11', 1, '11', '0'); -test(macro, '-11', 1, '-11', '0'); -test(macro, '11', -1, '-11', '0'); -test(macro, '-11', -1, '11', '0'); -test(macro, '11', 3, '3', '2'); -test(macro, '-11', 3, '-4', '1'); -test(macro, '11', -3, '-4', '-1'); -test(macro, '-11', -3, '3', '-2'); -test(macro, '11', 7, '1', '4'); -test(macro, '-11', 7, '-2', '3'); -test(macro, '11', -7, '-2', '-3'); -test(macro, '-11', -7, '1', '-4'); -test(macro, '11', 9, '1', '2'); -test(macro, '-11', 9, '-2', '7'); -test(macro, '11', -9, '-2', '-7'); -test(macro, '-11', -9, '1', '-2'); -test(macro, '11', 11, '1', '0'); -test(macro, '-11', 11, '-1', '0'); -test(macro, '11', -11, '-1', '0'); -test(macro, '-11', -11, '1', '0'); -test(macro, '11', 17, '0', '11'); -test(macro, '-11', 17, '-1', '6'); -test(macro, '11', -17, '-1', '-6'); -test(macro, '-11', -17, '0', '-11'); -test(macro, '11', 22, '0', '11'); -test(macro, '-11', 22, '-1', '11'); -test(macro, '11', -22, '-1', '-11'); -test(macro, '-11', -22, '0', '-11'); -test(macro, '11', 24, '0', '11'); -test(macro, '-11', 24, '-1', '13'); -test(macro, '11', -24, '-1', '-13'); -test(macro, '-11', -24, '0', '-11'); -test(macro, '11', 27, '0', '11'); -test(macro, '-11', 27, '-1', '16'); -test(macro, '11', -27, '-1', '-16'); -test(macro, '-11', -27, '0', '-11'); -test(macro, '11', 29, '0', '11'); -test(macro, '-11', 29, '-1', '18'); -test(macro, '11', -29, '-1', '-18'); -test(macro, '-11', -29, '0', '-11'); -test(macro, '11', 1234, '0', '11'); -test(macro, '-11', 1234, '-1', '1223'); -test(macro, '11', -1234, '-1', '-1223'); -test(macro, '-11', -1234, '0', '-11'); -test(macro, '11', 5678, '0', '11'); -test(macro, '-11', 5678, '-1', '5667'); -test(macro, '11', -5678, '-1', '-5667'); -test(macro, '-11', -5678, '0', '-11'); -test(macro, '11', 94906265, '0', '11'); -test(macro, '-11', 94906265, '-1', '94906254'); -test(macro, '11', -94906265, '-1', '-94906254'); -test(macro, '-11', -94906265, '0', '-11'); -test(macro, '11', 94906266, '0', '11'); -test(macro, '-11', 94906266, '-1', '94906255'); -test(macro, '11', -94906266, '-1', '-94906255'); -test(macro, '-11', -94906266, '0', '-11'); -test(macro, '11', 1073741824, '0', '11'); -test(macro, '-11', 1073741824, '-1', '1073741813'); -test(macro, '11', -1073741824, '-1', '-1073741813'); -test(macro, '-11', -1073741824, '0', '-11'); -test(macro, '11', 51676101935731, '0', '11'); -test(macro, '-11', 51676101935731, '-1', '51676101935720'); -test(macro, '11', -51676101935731, '-1', '-51676101935720'); -test(macro, '-11', -51676101935731, '0', '-11'); -test(macro, '17', 1, '17', '0'); -test(macro, '-17', 1, '-17', '0'); -test(macro, '17', -1, '-17', '0'); -test(macro, '-17', -1, '17', '0'); -test(macro, '17', 3, '5', '2'); -test(macro, '-17', 3, '-6', '1'); -test(macro, '17', -3, '-6', '-1'); -test(macro, '-17', -3, '5', '-2'); -test(macro, '17', 7, '2', '3'); -test(macro, '-17', 7, '-3', '4'); -test(macro, '17', -7, '-3', '-4'); -test(macro, '-17', -7, '2', '-3'); -test(macro, '17', 9, '1', '8'); -test(macro, '-17', 9, '-2', '1'); -test(macro, '17', -9, '-2', '-1'); -test(macro, '-17', -9, '1', '-8'); -test(macro, '17', 11, '1', '6'); -test(macro, '-17', 11, '-2', '5'); -test(macro, '17', -11, '-2', '-5'); -test(macro, '-17', -11, '1', '-6'); -test(macro, '17', 17, '1', '0'); -test(macro, '-17', 17, '-1', '0'); -test(macro, '17', -17, '-1', '0'); -test(macro, '-17', -17, '1', '0'); -test(macro, '17', 22, '0', '17'); -test(macro, '-17', 22, '-1', '5'); -test(macro, '17', -22, '-1', '-5'); -test(macro, '-17', -22, '0', '-17'); -test(macro, '17', 24, '0', '17'); -test(macro, '-17', 24, '-1', '7'); -test(macro, '17', -24, '-1', '-7'); -test(macro, '-17', -24, '0', '-17'); -test(macro, '17', 27, '0', '17'); -test(macro, '-17', 27, '-1', '10'); -test(macro, '17', -27, '-1', '-10'); -test(macro, '-17', -27, '0', '-17'); -test(macro, '17', 29, '0', '17'); -test(macro, '-17', 29, '-1', '12'); -test(macro, '17', -29, '-1', '-12'); -test(macro, '-17', -29, '0', '-17'); -test(macro, '17', 1234, '0', '17'); -test(macro, '-17', 1234, '-1', '1217'); -test(macro, '17', -1234, '-1', '-1217'); -test(macro, '-17', -1234, '0', '-17'); -test(macro, '17', 5678, '0', '17'); -test(macro, '-17', 5678, '-1', '5661'); -test(macro, '17', -5678, '-1', '-5661'); -test(macro, '-17', -5678, '0', '-17'); -test(macro, '17', 94906265, '0', '17'); -test(macro, '-17', 94906265, '-1', '94906248'); -test(macro, '17', -94906265, '-1', '-94906248'); -test(macro, '-17', -94906265, '0', '-17'); -test(macro, '17', 94906266, '0', '17'); -test(macro, '-17', 94906266, '-1', '94906249'); -test(macro, '17', -94906266, '-1', '-94906249'); -test(macro, '-17', -94906266, '0', '-17'); -test(macro, '17', 1073741824, '0', '17'); -test(macro, '-17', 1073741824, '-1', '1073741807'); -test(macro, '17', -1073741824, '-1', '-1073741807'); -test(macro, '-17', -1073741824, '0', '-17'); -test(macro, '17', 51676101935731, '0', '17'); -test(macro, '-17', 51676101935731, '-1', '51676101935714'); -test(macro, '17', -51676101935731, '-1', '-51676101935714'); -test(macro, '-17', -51676101935731, '0', '-17'); -test(macro, '22', 1, '22', '0'); -test(macro, '-22', 1, '-22', '0'); -test(macro, '22', -1, '-22', '0'); -test(macro, '-22', -1, '22', '0'); -test(macro, '22', 3, '7', '1'); -test(macro, '-22', 3, '-8', '2'); -test(macro, '22', -3, '-8', '-2'); -test(macro, '-22', -3, '7', '-1'); -test(macro, '22', 7, '3', '1'); -test(macro, '-22', 7, '-4', '6'); -test(macro, '22', -7, '-4', '-6'); -test(macro, '-22', -7, '3', '-1'); -test(macro, '22', 9, '2', '4'); -test(macro, '-22', 9, '-3', '5'); -test(macro, '22', -9, '-3', '-5'); -test(macro, '-22', -9, '2', '-4'); -test(macro, '22', 11, '2', '0'); -test(macro, '-22', 11, '-2', '0'); -test(macro, '22', -11, '-2', '0'); -test(macro, '-22', -11, '2', '0'); -test(macro, '22', 17, '1', '5'); -test(macro, '-22', 17, '-2', '12'); -test(macro, '22', -17, '-2', '-12'); -test(macro, '-22', -17, '1', '-5'); -test(macro, '22', 22, '1', '0'); -test(macro, '-22', 22, '-1', '0'); -test(macro, '22', -22, '-1', '0'); -test(macro, '-22', -22, '1', '0'); -test(macro, '22', 24, '0', '22'); -test(macro, '-22', 24, '-1', '2'); -test(macro, '22', -24, '-1', '-2'); -test(macro, '-22', -24, '0', '-22'); -test(macro, '22', 27, '0', '22'); -test(macro, '-22', 27, '-1', '5'); -test(macro, '22', -27, '-1', '-5'); -test(macro, '-22', -27, '0', '-22'); -test(macro, '22', 29, '0', '22'); -test(macro, '-22', 29, '-1', '7'); -test(macro, '22', -29, '-1', '-7'); -test(macro, '-22', -29, '0', '-22'); -test(macro, '22', 1234, '0', '22'); -test(macro, '-22', 1234, '-1', '1212'); -test(macro, '22', -1234, '-1', '-1212'); -test(macro, '-22', -1234, '0', '-22'); -test(macro, '22', 5678, '0', '22'); -test(macro, '-22', 5678, '-1', '5656'); -test(macro, '22', -5678, '-1', '-5656'); -test(macro, '-22', -5678, '0', '-22'); -test(macro, '22', 94906265, '0', '22'); -test(macro, '-22', 94906265, '-1', '94906243'); -test(macro, '22', -94906265, '-1', '-94906243'); -test(macro, '-22', -94906265, '0', '-22'); -test(macro, '22', 94906266, '0', '22'); -test(macro, '-22', 94906266, '-1', '94906244'); -test(macro, '22', -94906266, '-1', '-94906244'); -test(macro, '-22', -94906266, '0', '-22'); -test(macro, '22', 1073741824, '0', '22'); -test(macro, '-22', 1073741824, '-1', '1073741802'); -test(macro, '22', -1073741824, '-1', '-1073741802'); -test(macro, '-22', -1073741824, '0', '-22'); -test(macro, '22', 51676101935731, '0', '22'); -test(macro, '-22', 51676101935731, '-1', '51676101935709'); -test(macro, '22', -51676101935731, '-1', '-51676101935709'); -test(macro, '-22', -51676101935731, '0', '-22'); -test(macro, '24', 1, '24', '0'); -test(macro, '-24', 1, '-24', '0'); -test(macro, '24', -1, '-24', '0'); -test(macro, '-24', -1, '24', '0'); -test(macro, '24', 3, '8', '0'); -test(macro, '-24', 3, '-8', '0'); -test(macro, '24', -3, '-8', '0'); -test(macro, '-24', -3, '8', '0'); -test(macro, '24', 7, '3', '3'); -test(macro, '-24', 7, '-4', '4'); -test(macro, '24', -7, '-4', '-4'); -test(macro, '-24', -7, '3', '-3'); -test(macro, '24', 9, '2', '6'); -test(macro, '-24', 9, '-3', '3'); -test(macro, '24', -9, '-3', '-3'); -test(macro, '-24', -9, '2', '-6'); -test(macro, '24', 11, '2', '2'); -test(macro, '-24', 11, '-3', '9'); -test(macro, '24', -11, '-3', '-9'); -test(macro, '-24', -11, '2', '-2'); -test(macro, '24', 17, '1', '7'); -test(macro, '-24', 17, '-2', '10'); -test(macro, '24', -17, '-2', '-10'); -test(macro, '-24', -17, '1', '-7'); -test(macro, '24', 22, '1', '2'); -test(macro, '-24', 22, '-2', '20'); -test(macro, '24', -22, '-2', '-20'); -test(macro, '-24', -22, '1', '-2'); -test(macro, '24', 24, '1', '0'); -test(macro, '-24', 24, '-1', '0'); -test(macro, '24', -24, '-1', '0'); -test(macro, '-24', -24, '1', '0'); -test(macro, '24', 27, '0', '24'); -test(macro, '-24', 27, '-1', '3'); -test(macro, '24', -27, '-1', '-3'); -test(macro, '-24', -27, '0', '-24'); -test(macro, '24', 29, '0', '24'); -test(macro, '-24', 29, '-1', '5'); -test(macro, '24', -29, '-1', '-5'); -test(macro, '-24', -29, '0', '-24'); -test(macro, '24', 1234, '0', '24'); -test(macro, '-24', 1234, '-1', '1210'); -test(macro, '24', -1234, '-1', '-1210'); -test(macro, '-24', -1234, '0', '-24'); -test(macro, '24', 5678, '0', '24'); -test(macro, '-24', 5678, '-1', '5654'); -test(macro, '24', -5678, '-1', '-5654'); -test(macro, '-24', -5678, '0', '-24'); -test(macro, '24', 94906265, '0', '24'); -test(macro, '-24', 94906265, '-1', '94906241'); -test(macro, '24', -94906265, '-1', '-94906241'); -test(macro, '-24', -94906265, '0', '-24'); -test(macro, '24', 94906266, '0', '24'); -test(macro, '-24', 94906266, '-1', '94906242'); -test(macro, '24', -94906266, '-1', '-94906242'); -test(macro, '-24', -94906266, '0', '-24'); -test(macro, '24', 1073741824, '0', '24'); -test(macro, '-24', 1073741824, '-1', '1073741800'); -test(macro, '24', -1073741824, '-1', '-1073741800'); -test(macro, '-24', -1073741824, '0', '-24'); -test(macro, '24', 51676101935731, '0', '24'); -test(macro, '-24', 51676101935731, '-1', '51676101935707'); -test(macro, '24', -51676101935731, '-1', '-51676101935707'); -test(macro, '-24', -51676101935731, '0', '-24'); -test(macro, '27', 1, '27', '0'); -test(macro, '-27', 1, '-27', '0'); -test(macro, '27', -1, '-27', '0'); -test(macro, '-27', -1, '27', '0'); -test(macro, '27', 3, '9', '0'); -test(macro, '-27', 3, '-9', '0'); -test(macro, '27', -3, '-9', '0'); -test(macro, '-27', -3, '9', '0'); -test(macro, '27', 7, '3', '6'); -test(macro, '-27', 7, '-4', '1'); -test(macro, '27', -7, '-4', '-1'); -test(macro, '-27', -7, '3', '-6'); -test(macro, '27', 9, '3', '0'); -test(macro, '-27', 9, '-3', '0'); -test(macro, '27', -9, '-3', '0'); -test(macro, '-27', -9, '3', '0'); -test(macro, '27', 11, '2', '5'); -test(macro, '-27', 11, '-3', '6'); -test(macro, '27', -11, '-3', '-6'); -test(macro, '-27', -11, '2', '-5'); -test(macro, '27', 17, '1', '10'); -test(macro, '-27', 17, '-2', '7'); -test(macro, '27', -17, '-2', '-7'); -test(macro, '-27', -17, '1', '-10'); -test(macro, '27', 22, '1', '5'); -test(macro, '-27', 22, '-2', '17'); -test(macro, '27', -22, '-2', '-17'); -test(macro, '-27', -22, '1', '-5'); -test(macro, '27', 24, '1', '3'); -test(macro, '-27', 24, '-2', '21'); -test(macro, '27', -24, '-2', '-21'); -test(macro, '-27', -24, '1', '-3'); -test(macro, '27', 27, '1', '0'); -test(macro, '-27', 27, '-1', '0'); -test(macro, '27', -27, '-1', '0'); -test(macro, '-27', -27, '1', '0'); -test(macro, '27', 29, '0', '27'); -test(macro, '-27', 29, '-1', '2'); -test(macro, '27', -29, '-1', '-2'); -test(macro, '-27', -29, '0', '-27'); -test(macro, '27', 1234, '0', '27'); -test(macro, '-27', 1234, '-1', '1207'); -test(macro, '27', -1234, '-1', '-1207'); -test(macro, '-27', -1234, '0', '-27'); -test(macro, '27', 5678, '0', '27'); -test(macro, '-27', 5678, '-1', '5651'); -test(macro, '27', -5678, '-1', '-5651'); -test(macro, '-27', -5678, '0', '-27'); -test(macro, '27', 94906265, '0', '27'); -test(macro, '-27', 94906265, '-1', '94906238'); -test(macro, '27', -94906265, '-1', '-94906238'); -test(macro, '-27', -94906265, '0', '-27'); -test(macro, '27', 94906266, '0', '27'); -test(macro, '-27', 94906266, '-1', '94906239'); -test(macro, '27', -94906266, '-1', '-94906239'); -test(macro, '-27', -94906266, '0', '-27'); -test(macro, '27', 1073741824, '0', '27'); -test(macro, '-27', 1073741824, '-1', '1073741797'); -test(macro, '27', -1073741824, '-1', '-1073741797'); -test(macro, '-27', -1073741824, '0', '-27'); -test(macro, '27', 51676101935731, '0', '27'); -test(macro, '-27', 51676101935731, '-1', '51676101935704'); -test(macro, '27', -51676101935731, '-1', '-51676101935704'); -test(macro, '-27', -51676101935731, '0', '-27'); -test(macro, '29', 1, '29', '0'); -test(macro, '-29', 1, '-29', '0'); -test(macro, '29', -1, '-29', '0'); -test(macro, '-29', -1, '29', '0'); -test(macro, '29', 3, '9', '2'); -test(macro, '-29', 3, '-10', '1'); -test(macro, '29', -3, '-10', '-1'); -test(macro, '-29', -3, '9', '-2'); -test(macro, '29', 7, '4', '1'); -test(macro, '-29', 7, '-5', '6'); -test(macro, '29', -7, '-5', '-6'); -test(macro, '-29', -7, '4', '-1'); -test(macro, '29', 9, '3', '2'); -test(macro, '-29', 9, '-4', '7'); -test(macro, '29', -9, '-4', '-7'); -test(macro, '-29', -9, '3', '-2'); -test(macro, '29', 11, '2', '7'); -test(macro, '-29', 11, '-3', '4'); -test(macro, '29', -11, '-3', '-4'); -test(macro, '-29', -11, '2', '-7'); -test(macro, '29', 17, '1', '12'); -test(macro, '-29', 17, '-2', '5'); -test(macro, '29', -17, '-2', '-5'); -test(macro, '-29', -17, '1', '-12'); -test(macro, '29', 22, '1', '7'); -test(macro, '-29', 22, '-2', '15'); -test(macro, '29', -22, '-2', '-15'); -test(macro, '-29', -22, '1', '-7'); -test(macro, '29', 24, '1', '5'); -test(macro, '-29', 24, '-2', '19'); -test(macro, '29', -24, '-2', '-19'); -test(macro, '-29', -24, '1', '-5'); -test(macro, '29', 27, '1', '2'); -test(macro, '-29', 27, '-2', '25'); -test(macro, '29', -27, '-2', '-25'); -test(macro, '-29', -27, '1', '-2'); -test(macro, '29', 29, '1', '0'); -test(macro, '-29', 29, '-1', '0'); -test(macro, '29', -29, '-1', '0'); -test(macro, '-29', -29, '1', '0'); -test(macro, '29', 1234, '0', '29'); -test(macro, '-29', 1234, '-1', '1205'); -test(macro, '29', -1234, '-1', '-1205'); -test(macro, '-29', -1234, '0', '-29'); -test(macro, '29', 5678, '0', '29'); -test(macro, '-29', 5678, '-1', '5649'); -test(macro, '29', -5678, '-1', '-5649'); -test(macro, '-29', -5678, '0', '-29'); -test(macro, '29', 94906265, '0', '29'); -test(macro, '-29', 94906265, '-1', '94906236'); -test(macro, '29', -94906265, '-1', '-94906236'); -test(macro, '-29', -94906265, '0', '-29'); -test(macro, '29', 94906266, '0', '29'); -test(macro, '-29', 94906266, '-1', '94906237'); -test(macro, '29', -94906266, '-1', '-94906237'); -test(macro, '-29', -94906266, '0', '-29'); -test(macro, '29', 1073741824, '0', '29'); -test(macro, '-29', 1073741824, '-1', '1073741795'); -test(macro, '29', -1073741824, '-1', '-1073741795'); -test(macro, '-29', -1073741824, '0', '-29'); -test(macro, '29', 51676101935731, '0', '29'); -test(macro, '-29', 51676101935731, '-1', '51676101935702'); -test(macro, '29', -51676101935731, '-1', '-51676101935702'); -test(macro, '-29', -51676101935731, '0', '-29'); -test(macro, '1234', 1, '1234', '0'); -test(macro, '-1234', 1, '-1234', '0'); -test(macro, '1234', -1, '-1234', '0'); -test(macro, '-1234', -1, '1234', '0'); -test(macro, '1234', 3, '411', '1'); -test(macro, '-1234', 3, '-412', '2'); -test(macro, '1234', -3, '-412', '-2'); -test(macro, '-1234', -3, '411', '-1'); -test(macro, '1234', 7, '176', '2'); -test(macro, '-1234', 7, '-177', '5'); -test(macro, '1234', -7, '-177', '-5'); -test(macro, '-1234', -7, '176', '-2'); -test(macro, '1234', 9, '137', '1'); -test(macro, '-1234', 9, '-138', '8'); -test(macro, '1234', -9, '-138', '-8'); -test(macro, '-1234', -9, '137', '-1'); -test(macro, '1234', 11, '112', '2'); -test(macro, '-1234', 11, '-113', '9'); -test(macro, '1234', -11, '-113', '-9'); -test(macro, '-1234', -11, '112', '-2'); -test(macro, '1234', 17, '72', '10'); -test(macro, '-1234', 17, '-73', '7'); -test(macro, '1234', -17, '-73', '-7'); -test(macro, '-1234', -17, '72', '-10'); -test(macro, '1234', 22, '56', '2'); -test(macro, '-1234', 22, '-57', '20'); -test(macro, '1234', -22, '-57', '-20'); -test(macro, '-1234', -22, '56', '-2'); -test(macro, '1234', 24, '51', '10'); -test(macro, '-1234', 24, '-52', '14'); -test(macro, '1234', -24, '-52', '-14'); -test(macro, '-1234', -24, '51', '-10'); -test(macro, '1234', 27, '45', '19'); -test(macro, '-1234', 27, '-46', '8'); -test(macro, '1234', -27, '-46', '-8'); -test(macro, '-1234', -27, '45', '-19'); -test(macro, '1234', 29, '42', '16'); -test(macro, '-1234', 29, '-43', '13'); -test(macro, '1234', -29, '-43', '-13'); -test(macro, '-1234', -29, '42', '-16'); -test(macro, '1234', 1234, '1', '0'); -test(macro, '-1234', 1234, '-1', '0'); -test(macro, '1234', -1234, '-1', '0'); -test(macro, '-1234', -1234, '1', '0'); -test(macro, '1234', 5678, '0', '1234'); -test(macro, '-1234', 5678, '-1', '4444'); -test(macro, '1234', -5678, '-1', '-4444'); -test(macro, '-1234', -5678, '0', '-1234'); -test(macro, '1234', 94906265, '0', '1234'); -test(macro, '-1234', 94906265, '-1', '94905031'); -test(macro, '1234', -94906265, '-1', '-94905031'); -test(macro, '-1234', -94906265, '0', '-1234'); -test(macro, '1234', 94906266, '0', '1234'); -test(macro, '-1234', 94906266, '-1', '94905032'); -test(macro, '1234', -94906266, '-1', '-94905032'); -test(macro, '-1234', -94906266, '0', '-1234'); -test(macro, '1234', 1073741824, '0', '1234'); -test(macro, '-1234', 1073741824, '-1', '1073740590'); -test(macro, '1234', -1073741824, '-1', '-1073740590'); -test(macro, '-1234', -1073741824, '0', '-1234'); -test(macro, '1234', 51676101935731, '0', '1234'); -test(macro, '-1234', 51676101935731, '-1', '51676101934497'); -test(macro, '1234', -51676101935731, '-1', '-51676101934497'); -test(macro, '-1234', -51676101935731, '0', '-1234'); -test(macro, '5678', 1, '5678', '0'); -test(macro, '-5678', 1, '-5678', '0'); -test(macro, '5678', -1, '-5678', '0'); -test(macro, '-5678', -1, '5678', '0'); -test(macro, '5678', 3, '1892', '2'); -test(macro, '-5678', 3, '-1893', '1'); -test(macro, '5678', -3, '-1893', '-1'); -test(macro, '-5678', -3, '1892', '-2'); -test(macro, '5678', 7, '811', '1'); -test(macro, '-5678', 7, '-812', '6'); -test(macro, '5678', -7, '-812', '-6'); -test(macro, '-5678', -7, '811', '-1'); -test(macro, '5678', 9, '630', '8'); -test(macro, '-5678', 9, '-631', '1'); -test(macro, '5678', -9, '-631', '-1'); -test(macro, '-5678', -9, '630', '-8'); -test(macro, '5678', 11, '516', '2'); -test(macro, '-5678', 11, '-517', '9'); -test(macro, '5678', -11, '-517', '-9'); -test(macro, '-5678', -11, '516', '-2'); -test(macro, '5678', 17, '334', '0'); -test(macro, '-5678', 17, '-334', '0'); -test(macro, '5678', -17, '-334', '0'); -test(macro, '-5678', -17, '334', '0'); -test(macro, '5678', 22, '258', '2'); -test(macro, '-5678', 22, '-259', '20'); -test(macro, '5678', -22, '-259', '-20'); -test(macro, '-5678', -22, '258', '-2'); -test(macro, '5678', 24, '236', '14'); -test(macro, '-5678', 24, '-237', '10'); -test(macro, '5678', -24, '-237', '-10'); -test(macro, '-5678', -24, '236', '-14'); -test(macro, '5678', 27, '210', '8'); -test(macro, '-5678', 27, '-211', '19'); -test(macro, '5678', -27, '-211', '-19'); -test(macro, '-5678', -27, '210', '-8'); -test(macro, '5678', 29, '195', '23'); -test(macro, '-5678', 29, '-196', '6'); -test(macro, '5678', -29, '-196', '-6'); -test(macro, '-5678', -29, '195', '-23'); -test(macro, '5678', 1234, '4', '742'); -test(macro, '-5678', 1234, '-5', '492'); -test(macro, '5678', -1234, '-5', '-492'); -test(macro, '-5678', -1234, '4', '-742'); -test(macro, '5678', 5678, '1', '0'); -test(macro, '-5678', 5678, '-1', '0'); -test(macro, '5678', -5678, '-1', '0'); -test(macro, '-5678', -5678, '1', '0'); -test(macro, '5678', 94906265, '0', '5678'); -test(macro, '-5678', 94906265, '-1', '94900587'); -test(macro, '5678', -94906265, '-1', '-94900587'); -test(macro, '-5678', -94906265, '0', '-5678'); -test(macro, '5678', 94906266, '0', '5678'); -test(macro, '-5678', 94906266, '-1', '94900588'); -test(macro, '5678', -94906266, '-1', '-94900588'); -test(macro, '-5678', -94906266, '0', '-5678'); -test(macro, '5678', 1073741824, '0', '5678'); -test(macro, '-5678', 1073741824, '-1', '1073736146'); -test(macro, '5678', -1073741824, '-1', '-1073736146'); -test(macro, '-5678', -1073741824, '0', '-5678'); -test(macro, '5678', 51676101935731, '0', '5678'); -test(macro, '-5678', 51676101935731, '-1', '51676101930053'); -test(macro, '5678', -51676101935731, '-1', '-51676101930053'); -test(macro, '-5678', -51676101935731, '0', '-5678'); -test(macro, '94906265', 1, '94906265', '0'); -test(macro, '-94906265', 1, '-94906265', '0'); -test(macro, '94906265', -1, '-94906265', '0'); -test(macro, '-94906265', -1, '94906265', '0'); -test(macro, '94906265', 3, '31635421', '2'); -test(macro, '-94906265', 3, '-31635422', '1'); -test(macro, '94906265', -3, '-31635422', '-1'); -test(macro, '-94906265', -3, '31635421', '-2'); -test(macro, '94906265', 7, '13558037', '6'); -test(macro, '-94906265', 7, '-13558038', '1'); -test(macro, '94906265', -7, '-13558038', '-1'); -test(macro, '-94906265', -7, '13558037', '-6'); -test(macro, '94906265', 9, '10545140', '5'); -test(macro, '-94906265', 9, '-10545141', '4'); -test(macro, '94906265', -9, '-10545141', '-4'); -test(macro, '-94906265', -9, '10545140', '-5'); -test(macro, '94906265', 11, '8627842', '3'); -test(macro, '-94906265', 11, '-8627843', '8'); -test(macro, '94906265', -11, '-8627843', '-8'); -test(macro, '-94906265', -11, '8627842', '-3'); -test(macro, '94906265', 17, '5582721', '8'); -test(macro, '-94906265', 17, '-5582722', '9'); -test(macro, '94906265', -17, '-5582722', '-9'); -test(macro, '-94906265', -17, '5582721', '-8'); -test(macro, '94906265', 22, '4313921', '3'); -test(macro, '-94906265', 22, '-4313922', '19'); -test(macro, '94906265', -22, '-4313922', '-19'); -test(macro, '-94906265', -22, '4313921', '-3'); -test(macro, '94906265', 24, '3954427', '17'); -test(macro, '-94906265', 24, '-3954428', '7'); -test(macro, '94906265', -24, '-3954428', '-7'); -test(macro, '-94906265', -24, '3954427', '-17'); -test(macro, '94906265', 27, '3515046', '23'); -test(macro, '-94906265', 27, '-3515047', '4'); -test(macro, '94906265', -27, '-3515047', '-4'); -test(macro, '-94906265', -27, '3515046', '-23'); -test(macro, '94906265', 29, '3272629', '24'); -test(macro, '-94906265', 29, '-3272630', '5'); -test(macro, '94906265', -29, '-3272630', '-5'); -test(macro, '-94906265', -29, '3272629', '-24'); -test(macro, '94906265', 1234, '76909', '559'); -test(macro, '-94906265', 1234, '-76910', '675'); -test(macro, '94906265', -1234, '-76910', '-675'); -test(macro, '-94906265', -1234, '76909', '-559'); -test(macro, '94906265', 5678, '16714', '4173'); -test(macro, '-94906265', 5678, '-16715', '1505'); -test(macro, '94906265', -5678, '-16715', '-1505'); -test(macro, '-94906265', -5678, '16714', '-4173'); -test(macro, '94906265', 94906265, '1', '0'); -test(macro, '-94906265', 94906265, '-1', '0'); -test(macro, '94906265', -94906265, '-1', '0'); -test(macro, '-94906265', -94906265, '1', '0'); -test(macro, '94906265', 94906266, '0', '94906265'); -test(macro, '-94906265', 94906266, '-1', '1'); -test(macro, '94906265', -94906266, '-1', '-1'); -test(macro, '-94906265', -94906266, '0', '-94906265'); -test(macro, '94906265', 1073741824, '0', '94906265'); -test(macro, '-94906265', 1073741824, '-1', '978835559'); -test(macro, '94906265', -1073741824, '-1', '-978835559'); -test(macro, '-94906265', -1073741824, '0', '-94906265'); -test(macro, '94906265', 51676101935731, '0', '94906265'); -test(macro, '-94906265', 51676101935731, '-1', '51676007029466'); -test(macro, '94906265', -51676101935731, '-1', '-51676007029466'); -test(macro, '-94906265', -51676101935731, '0', '-94906265'); -test(macro, '94906266', 1, '94906266', '0'); -test(macro, '-94906266', 1, '-94906266', '0'); -test(macro, '94906266', -1, '-94906266', '0'); -test(macro, '-94906266', -1, '94906266', '0'); -test(macro, '94906266', 3, '31635422', '0'); -test(macro, '-94906266', 3, '-31635422', '0'); -test(macro, '94906266', -3, '-31635422', '0'); -test(macro, '-94906266', -3, '31635422', '0'); -test(macro, '94906266', 7, '13558038', '0'); -test(macro, '-94906266', 7, '-13558038', '0'); -test(macro, '94906266', -7, '-13558038', '0'); -test(macro, '-94906266', -7, '13558038', '0'); -test(macro, '94906266', 9, '10545140', '6'); -test(macro, '-94906266', 9, '-10545141', '3'); -test(macro, '94906266', -9, '-10545141', '-3'); -test(macro, '-94906266', -9, '10545140', '-6'); -test(macro, '94906266', 11, '8627842', '4'); -test(macro, '-94906266', 11, '-8627843', '7'); -test(macro, '94906266', -11, '-8627843', '-7'); -test(macro, '-94906266', -11, '8627842', '-4'); -test(macro, '94906266', 17, '5582721', '9'); -test(macro, '-94906266', 17, '-5582722', '8'); -test(macro, '94906266', -17, '-5582722', '-8'); -test(macro, '-94906266', -17, '5582721', '-9'); -test(macro, '94906266', 22, '4313921', '4'); -test(macro, '-94906266', 22, '-4313922', '18'); -test(macro, '94906266', -22, '-4313922', '-18'); -test(macro, '-94906266', -22, '4313921', '-4'); -test(macro, '94906266', 24, '3954427', '18'); -test(macro, '-94906266', 24, '-3954428', '6'); -test(macro, '94906266', -24, '-3954428', '-6'); -test(macro, '-94906266', -24, '3954427', '-18'); -test(macro, '94906266', 27, '3515046', '24'); -test(macro, '-94906266', 27, '-3515047', '3'); -test(macro, '94906266', -27, '-3515047', '-3'); -test(macro, '-94906266', -27, '3515046', '-24'); -test(macro, '94906266', 29, '3272629', '25'); -test(macro, '-94906266', 29, '-3272630', '4'); -test(macro, '94906266', -29, '-3272630', '-4'); -test(macro, '-94906266', -29, '3272629', '-25'); -test(macro, '94906266', 1234, '76909', '560'); -test(macro, '-94906266', 1234, '-76910', '674'); -test(macro, '94906266', -1234, '-76910', '-674'); -test(macro, '-94906266', -1234, '76909', '-560'); -test(macro, '94906266', 5678, '16714', '4174'); -test(macro, '-94906266', 5678, '-16715', '1504'); -test(macro, '94906266', -5678, '-16715', '-1504'); -test(macro, '-94906266', -5678, '16714', '-4174'); -test(macro, '94906266', 94906265, '1', '1'); -test(macro, '-94906266', 94906265, '-2', '94906264'); -test(macro, '94906266', -94906265, '-2', '-94906264'); -test(macro, '-94906266', -94906265, '1', '-1'); -test(macro, '94906266', 94906266, '1', '0'); -test(macro, '-94906266', 94906266, '-1', '0'); -test(macro, '94906266', -94906266, '-1', '0'); -test(macro, '-94906266', -94906266, '1', '0'); -test(macro, '94906266', 1073741824, '0', '94906266'); -test(macro, '-94906266', 1073741824, '-1', '978835558'); -test(macro, '94906266', -1073741824, '-1', '-978835558'); -test(macro, '-94906266', -1073741824, '0', '-94906266'); -test(macro, '94906266', 51676101935731, '0', '94906266'); -test(macro, '-94906266', 51676101935731, '-1', '51676007029465'); -test(macro, '94906266', -51676101935731, '-1', '-51676007029465'); -test(macro, '-94906266', -51676101935731, '0', '-94906266'); -test(macro, '1073741824', 1, '1073741824', '0'); -test(macro, '-1073741824', 1, '-1073741824', '0'); -test(macro, '1073741824', -1, '-1073741824', '0'); -test(macro, '-1073741824', -1, '1073741824', '0'); -test(macro, '1073741824', 3, '357913941', '1'); -test(macro, '-1073741824', 3, '-357913942', '2'); -test(macro, '1073741824', -3, '-357913942', '-2'); -test(macro, '-1073741824', -3, '357913941', '-1'); -test(macro, '1073741824', 7, '153391689', '1'); -test(macro, '-1073741824', 7, '-153391690', '6'); -test(macro, '1073741824', -7, '-153391690', '-6'); -test(macro, '-1073741824', -7, '153391689', '-1'); -test(macro, '1073741824', 9, '119304647', '1'); -test(macro, '-1073741824', 9, '-119304648', '8'); -test(macro, '1073741824', -9, '-119304648', '-8'); -test(macro, '-1073741824', -9, '119304647', '-1'); -test(macro, '1073741824', 11, '97612893', '1'); -test(macro, '-1073741824', 11, '-97612894', '10'); -test(macro, '1073741824', -11, '-97612894', '-10'); -test(macro, '-1073741824', -11, '97612893', '-1'); -test(macro, '1073741824', 17, '63161283', '13'); -test(macro, '-1073741824', 17, '-63161284', '4'); -test(macro, '1073741824', -17, '-63161284', '-4'); -test(macro, '-1073741824', -17, '63161283', '-13'); -test(macro, '1073741824', 22, '48806446', '12'); -test(macro, '-1073741824', 22, '-48806447', '10'); -test(macro, '1073741824', -22, '-48806447', '-10'); -test(macro, '-1073741824', -22, '48806446', '-12'); -test(macro, '1073741824', 24, '44739242', '16'); -test(macro, '-1073741824', 24, '-44739243', '8'); -test(macro, '1073741824', -24, '-44739243', '-8'); -test(macro, '-1073741824', -24, '44739242', '-16'); -test(macro, '1073741824', 27, '39768215', '19'); -test(macro, '-1073741824', 27, '-39768216', '8'); -test(macro, '1073741824', -27, '-39768216', '-8'); -test(macro, '-1073741824', -27, '39768215', '-19'); -test(macro, '1073741824', 29, '37025580', '4'); -test(macro, '-1073741824', 29, '-37025581', '25'); -test(macro, '1073741824', -29, '-37025581', '-25'); -test(macro, '-1073741824', -29, '37025580', '-4'); -test(macro, '1073741824', 1234, '870131', '170'); -test(macro, '-1073741824', 1234, '-870132', '1064'); -test(macro, '1073741824', -1234, '-870132', '-1064'); -test(macro, '-1073741824', -1234, '870131', '-170'); -test(macro, '1073741824', 5678, '189105', '3634'); -test(macro, '-1073741824', 5678, '-189106', '2044'); -test(macro, '1073741824', -5678, '-189106', '-2044'); -test(macro, '-1073741824', -5678, '189105', '-3634'); -test(macro, '1073741824', 94906265, '11', '29772909'); -test(macro, '-1073741824', 94906265, '-12', '65133356'); -test(macro, '1073741824', -94906265, '-12', '-65133356'); -test(macro, '-1073741824', -94906265, '11', '-29772909'); -test(macro, '1073741824', 94906266, '11', '29772898'); -test(macro, '-1073741824', 94906266, '-12', '65133368'); -test(macro, '1073741824', -94906266, '-12', '-65133368'); -test(macro, '-1073741824', -94906266, '11', '-29772898'); -test(macro, '1073741824', 1073741824, '1', '0'); -test(macro, '-1073741824', 1073741824, '-1', '0'); -test(macro, '1073741824', -1073741824, '-1', '0'); -test(macro, '-1073741824', -1073741824, '1', '0'); -test(macro, '1073741824', 51676101935731, '0', '1073741824'); -test(macro, '-1073741824', 51676101935731, '-1', '51675028193907'); -test(macro, '1073741824', -51676101935731, '-1', '-51675028193907'); -test(macro, '-1073741824', -51676101935731, '0', '-1073741824'); -test(macro, '51676101935731', 1, '51676101935731', '0'); -test(macro, '-51676101935731', 1, '-51676101935731', '0'); -test(macro, '51676101935731', -1, '-51676101935731', '0'); -test(macro, '-51676101935731', -1, '51676101935731', '0'); -test(macro, '51676101935731', 3, '17225367311910', '1'); -test(macro, '-51676101935731', 3, '-17225367311911', '2'); -test(macro, '51676101935731', -3, '-17225367311911', '-2'); -test(macro, '-51676101935731', -3, '17225367311910', '-1'); -test(macro, '51676101935731', 7, '7382300276533', '0'); -test(macro, '-51676101935731', 7, '-7382300276533', '0'); -test(macro, '51676101935731', -7, '-7382300276533', '0'); -test(macro, '-51676101935731', -7, '7382300276533', '0'); -test(macro, '51676101935731', 9, '5741789103970', '1'); -test(macro, '-51676101935731', 9, '-5741789103971', '8'); -test(macro, '51676101935731', -9, '-5741789103971', '-8'); -test(macro, '-51676101935731', -9, '5741789103970', '-1'); -test(macro, '51676101935731', 11, '4697827448702', '9'); -test(macro, '-51676101935731', 11, '-4697827448703', '2'); -test(macro, '51676101935731', -11, '-4697827448703', '-2'); -test(macro, '-51676101935731', -11, '4697827448702', '-9'); -test(macro, '51676101935731', 17, '3039770702101', '14'); -test(macro, '-51676101935731', 17, '-3039770702102', '3'); -test(macro, '51676101935731', -17, '-3039770702102', '-3'); -test(macro, '-51676101935731', -17, '3039770702101', '-14'); -test(macro, '51676101935731', 22, '2348913724351', '9'); -test(macro, '-51676101935731', 22, '-2348913724352', '13'); -test(macro, '51676101935731', -22, '-2348913724352', '-13'); -test(macro, '-51676101935731', -22, '2348913724351', '-9'); -test(macro, '51676101935731', 24, '2153170913988', '19'); -test(macro, '-51676101935731', 24, '-2153170913989', '5'); -test(macro, '51676101935731', -24, '-2153170913989', '-5'); -test(macro, '-51676101935731', -24, '2153170913988', '-19'); -test(macro, '51676101935731', 27, '1913929701323', '10'); -test(macro, '-51676101935731', 27, '-1913929701324', '17'); -test(macro, '51676101935731', -27, '-1913929701324', '-17'); -test(macro, '-51676101935731', -27, '1913929701323', '-10'); -test(macro, '51676101935731', 29, '1781934549507', '28'); -test(macro, '-51676101935731', 29, '-1781934549508', '1'); -test(macro, '51676101935731', -29, '-1781934549508', '-1'); -test(macro, '-51676101935731', -29, '1781934549507', '-28'); -test(macro, '51676101935731', 1234, '41876905944', '835'); -test(macro, '-51676101935731', 1234, '-41876905945', '399'); -test(macro, '51676101935731', -1234, '-41876905945', '-399'); -test(macro, '-51676101935731', -1234, '41876905944', '-835'); -test(macro, '51676101935731', 5678, '9101109886', '3023'); -test(macro, '-51676101935731', 5678, '-9101109887', '2655'); -test(macro, '51676101935731', -5678, '-9101109887', '-2655'); -test(macro, '-51676101935731', -5678, '9101109886', '-3023'); -test(macro, '51676101935731', 94906265, '544496', '20268291'); -test(macro, '-51676101935731', 94906265, '-544497', '74637974'); -test(macro, '51676101935731', -94906265, '-544497', '-74637974'); -test(macro, '-51676101935731', -94906265, '544496', '-20268291'); -test(macro, '51676101935731', 94906266, '544496', '19723795'); -test(macro, '-51676101935731', 94906266, '-544497', '75182471'); -test(macro, '51676101935731', -94906266, '-544497', '-75182471'); -test(macro, '-51676101935731', -94906266, '544496', '-19723795'); -test(macro, '51676101935731', 1073741824, '48127', '129172083'); -test(macro, '-51676101935731', 1073741824, '-48128', '944569741'); -test(macro, '51676101935731', -1073741824, '-48128', '-944569741'); -test(macro, '-51676101935731', -1073741824, '48127', '-129172083'); -test(macro, '51676101935731', 51676101935731, '1', '0'); -test(macro, '-51676101935731', 51676101935731, '-1', '0'); -test(macro, '51676101935731', -51676101935731, '-1', '0'); -test(macro, '-51676101935731', -51676101935731, '1', '0'); -test(macro, '717897987691852588770249', 1, '717897987691852588770249', '0'); -test(macro, '-717897987691852588770249', 1, '-717897987691852588770249', '0'); -test(macro, '717897987691852588770249', -1, '-717897987691852588770249', '0'); -test(macro, '-717897987691852588770249', -1, '717897987691852588770249', '0'); -test(macro, '717897987691852588770249', 3, '239299329230617529590083', '0'); -test(macro, '-717897987691852588770249', 3, '-239299329230617529590083', '0'); -test(macro, '717897987691852588770249', -3, '-239299329230617529590083', '0'); -test(macro, '-717897987691852588770249', -3, '239299329230617529590083', '0'); -test(macro, '717897987691852588770249', 7, '102556855384550369824321', '2'); -test(macro, '-717897987691852588770249', 7, '-102556855384550369824322', '5'); -test(macro, '717897987691852588770249', -7, '-102556855384550369824322', '-5'); -test(macro, '-717897987691852588770249', -7, '102556855384550369824321', '-2'); -test(macro, '717897987691852588770249', 9, '79766443076872509863361', '0'); -test(macro, '-717897987691852588770249', 9, '-79766443076872509863361', '0'); -test(macro, '717897987691852588770249', -9, '-79766443076872509863361', '0'); -test(macro, '-717897987691852588770249', -9, '79766443076872509863361', '0'); -test(macro, '717897987691852588770249', 11, '65263453426532053524568', '1'); -test(macro, '-717897987691852588770249', 11, '-65263453426532053524569', '10'); -test(macro, '717897987691852588770249', -11, '-65263453426532053524569', '-10'); -test(macro, '-717897987691852588770249', -11, '65263453426532053524568', '-1'); -test(macro, '717897987691852588770249', 17, '42229293393638387574720', '9'); -test(macro, '-717897987691852588770249', 17, '-42229293393638387574721', '8'); -test(macro, '717897987691852588770249', -17, '-42229293393638387574721', '-8'); -test(macro, '-717897987691852588770249', -17, '42229293393638387574720', '-9'); -test(macro, '717897987691852588770249', 22, '32631726713266026762284', '1'); -test(macro, '-717897987691852588770249', 22, '-32631726713266026762285', '21'); -test(macro, '717897987691852588770249', -22, '-32631726713266026762285', '-21'); -test(macro, '-717897987691852588770249', -22, '32631726713266026762284', '-1'); -test(macro, '717897987691852588770249', 24, '29912416153827191198760', '9'); -test(macro, '-717897987691852588770249', 24, '-29912416153827191198761', '15'); -test(macro, '717897987691852588770249', -24, '-29912416153827191198761', '-15'); -test(macro, '-717897987691852588770249', -24, '29912416153827191198760', '-9'); -test(macro, '717897987691852588770249', 27, '26588814358957503287787', '0'); -test(macro, '-717897987691852588770249', 27, '-26588814358957503287787', '0'); -test(macro, '717897987691852588770249', -27, '-26588814358957503287787', '0'); -test(macro, '-717897987691852588770249', -27, '26588814358957503287787', '0'); -test(macro, '717897987691852588770249', 29, '24755103023856985819663', '22'); -test(macro, '-717897987691852588770249', 29, '-24755103023856985819664', '7'); -test(macro, '717897987691852588770249', -29, '-24755103023856985819664', '-7'); -test(macro, '-717897987691852588770249', -29, '24755103023856985819663', '-22'); -test(macro, '717897987691852588770249', 1234, '581764981922084755891', '755'); -test(macro, '-717897987691852588770249', 1234, '-581764981922084755892', '479'); -test( - macro, - '717897987691852588770249', - -1234, - '-581764981922084755892', - '-479', -); -test( - macro, - '-717897987691852588770249', - -1234, - '581764981922084755891', - '-755', -); -test(macro, '717897987691852588770249', 5678, '126435010160593974774', '3477'); -test( - macro, - '-717897987691852588770249', - 5678, - '-126435010160593974775', - '2201', -); -test( - macro, - '717897987691852588770249', - -5678, - '-126435010160593974775', - '-2201', -); -test( - macro, - '-717897987691852588770249', - -5678, - '126435010160593974774', - '-3477', -); -test( - macro, - '717897987691852588770249', - 94906265, - '7564284483135571', - '56517934', -); -test( - macro, - '-717897987691852588770249', - 94906265, - '-7564284483135572', - '38388331', -); -test( - macro, - '717897987691852588770249', - -94906265, - '-7564284483135572', - '-38388331', -); -test( - macro, - '-717897987691852588770249', - -94906265, - '7564284483135571', - '-56517934', -); -test( - macro, - '717897987691852588770249', - 94906266, - '7564284403432883', - '81625371', -); -test( - macro, - '-717897987691852588770249', - 94906266, - '-7564284403432884', - '13280895', -); -test( - macro, - '717897987691852588770249', - -94906266, - '-7564284403432884', - '-13280895', -); -test( - macro, - '-717897987691852588770249', - -94906266, - '7564284403432883', - '-81625371', -); -test( - macro, - '717897987691852588770249', - 1073741824, - '668594602208447', - '278782921', -); -test( - macro, - '-717897987691852588770249', - 1073741824, - '-668594602208448', - '794958903', -); -test( - macro, - '717897987691852588770249', - -1073741824, - '-668594602208448', - '-794958903', -); -test( - macro, - '-717897987691852588770249', - -1073741824, - '668594602208447', - '-278782921', -); -test( - macro, - '717897987691852588770249', - 51676101935731, - '13892262782', - '51258661506607', -); -test( - macro, - '-717897987691852588770249', - 51676101935731, - '-13892262783', - '417440429124', -); -test( - macro, - '717897987691852588770249', - -51676101935731, - '-13892262783', - '-417440429124', -); -test( - macro, - '-717897987691852588770249', - -51676101935731, - '13892262782', - '-51258661506607', -); diff --git a/test/src/integer/arithmetic/divn.js b/test/src/integer/arithmetic/divn.js deleted file mode 100644 index c381ea8..0000000 --- a/test/src/integer/arithmetic/divn.js +++ /dev/null @@ -1,1134 +0,0 @@ -import test from 'ava'; -import {parse, stringify, divn} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const c = divn(a, B); - t.is(stringify(a), A); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `divn(${fmt(A)},${B}) = ${fmt(C)}`; - -test(macro, '0', 1, '0'); -test(macro, '0', -1, '0'); -test(macro, '0', 3, '0'); -test(macro, '0', -3, '0'); -test(macro, '0', 7, '0'); -test(macro, '0', -7, '0'); -test(macro, '0', 9, '0'); -test(macro, '0', -9, '0'); -test(macro, '0', 11, '0'); -test(macro, '0', -11, '0'); -test(macro, '0', 17, '0'); -test(macro, '0', -17, '0'); -test(macro, '0', 22, '0'); -test(macro, '0', -22, '0'); -test(macro, '0', 24, '0'); -test(macro, '0', -24, '0'); -test(macro, '0', 27, '0'); -test(macro, '0', -27, '0'); -test(macro, '0', 29, '0'); -test(macro, '0', -29, '0'); -test(macro, '0', 1234, '0'); -test(macro, '0', -1234, '0'); -test(macro, '0', 5678, '0'); -test(macro, '0', -5678, '0'); -test(macro, '0', 94906265, '0'); -test(macro, '0', -94906265, '0'); -test(macro, '0', 94906266, '0'); -test(macro, '0', -94906266, '0'); -test(macro, '0', 1073741824, '0'); -test(macro, '0', -1073741824, '0'); -test(macro, '0', 51676101935731, '0'); -test(macro, '0', -51676101935731, '0'); -test(macro, '1', 1, '1'); -test(macro, '-1', 1, '-1'); -test(macro, '1', -1, '-1'); -test(macro, '-1', -1, '1'); -test(macro, '1', 3, '0'); -test(macro, '-1', 3, '-1'); -test(macro, '1', -3, '-1'); -test(macro, '-1', -3, '0'); -test(macro, '1', 7, '0'); -test(macro, '-1', 7, '-1'); -test(macro, '1', -7, '-1'); -test(macro, '-1', -7, '0'); -test(macro, '1', 9, '0'); -test(macro, '-1', 9, '-1'); -test(macro, '1', -9, '-1'); -test(macro, '-1', -9, '0'); -test(macro, '1', 11, '0'); -test(macro, '-1', 11, '-1'); -test(macro, '1', -11, '-1'); -test(macro, '-1', -11, '0'); -test(macro, '1', 17, '0'); -test(macro, '-1', 17, '-1'); -test(macro, '1', -17, '-1'); -test(macro, '-1', -17, '0'); -test(macro, '1', 22, '0'); -test(macro, '-1', 22, '-1'); -test(macro, '1', -22, '-1'); -test(macro, '-1', -22, '0'); -test(macro, '1', 24, '0'); -test(macro, '-1', 24, '-1'); -test(macro, '1', -24, '-1'); -test(macro, '-1', -24, '0'); -test(macro, '1', 27, '0'); -test(macro, '-1', 27, '-1'); -test(macro, '1', -27, '-1'); -test(macro, '-1', -27, '0'); -test(macro, '1', 29, '0'); -test(macro, '-1', 29, '-1'); -test(macro, '1', -29, '-1'); -test(macro, '-1', -29, '0'); -test(macro, '1', 1234, '0'); -test(macro, '-1', 1234, '-1'); -test(macro, '1', -1234, '-1'); -test(macro, '-1', -1234, '0'); -test(macro, '1', 5678, '0'); -test(macro, '-1', 5678, '-1'); -test(macro, '1', -5678, '-1'); -test(macro, '-1', -5678, '0'); -test(macro, '1', 94906265, '0'); -test(macro, '-1', 94906265, '-1'); -test(macro, '1', -94906265, '-1'); -test(macro, '-1', -94906265, '0'); -test(macro, '1', 94906266, '0'); -test(macro, '-1', 94906266, '-1'); -test(macro, '1', -94906266, '-1'); -test(macro, '-1', -94906266, '0'); -test(macro, '1', 1073741824, '0'); -test(macro, '-1', 1073741824, '-1'); -test(macro, '1', -1073741824, '-1'); -test(macro, '-1', -1073741824, '0'); -test(macro, '1', 51676101935731, '0'); -test(macro, '-1', 51676101935731, '-1'); -test(macro, '1', -51676101935731, '-1'); -test(macro, '-1', -51676101935731, '0'); -test(macro, '3', 1, '3'); -test(macro, '-3', 1, '-3'); -test(macro, '3', -1, '-3'); -test(macro, '-3', -1, '3'); -test(macro, '3', 3, '1'); -test(macro, '-3', 3, '-1'); -test(macro, '3', -3, '-1'); -test(macro, '-3', -3, '1'); -test(macro, '3', 7, '0'); -test(macro, '-3', 7, '-1'); -test(macro, '3', -7, '-1'); -test(macro, '-3', -7, '0'); -test(macro, '3', 9, '0'); -test(macro, '-3', 9, '-1'); -test(macro, '3', -9, '-1'); -test(macro, '-3', -9, '0'); -test(macro, '3', 11, '0'); -test(macro, '-3', 11, '-1'); -test(macro, '3', -11, '-1'); -test(macro, '-3', -11, '0'); -test(macro, '3', 17, '0'); -test(macro, '-3', 17, '-1'); -test(macro, '3', -17, '-1'); -test(macro, '-3', -17, '0'); -test(macro, '3', 22, '0'); -test(macro, '-3', 22, '-1'); -test(macro, '3', -22, '-1'); -test(macro, '-3', -22, '0'); -test(macro, '3', 24, '0'); -test(macro, '-3', 24, '-1'); -test(macro, '3', -24, '-1'); -test(macro, '-3', -24, '0'); -test(macro, '3', 27, '0'); -test(macro, '-3', 27, '-1'); -test(macro, '3', -27, '-1'); -test(macro, '-3', -27, '0'); -test(macro, '3', 29, '0'); -test(macro, '-3', 29, '-1'); -test(macro, '3', -29, '-1'); -test(macro, '-3', -29, '0'); -test(macro, '3', 1234, '0'); -test(macro, '-3', 1234, '-1'); -test(macro, '3', -1234, '-1'); -test(macro, '-3', -1234, '0'); -test(macro, '3', 5678, '0'); -test(macro, '-3', 5678, '-1'); -test(macro, '3', -5678, '-1'); -test(macro, '-3', -5678, '0'); -test(macro, '3', 94906265, '0'); -test(macro, '-3', 94906265, '-1'); -test(macro, '3', -94906265, '-1'); -test(macro, '-3', -94906265, '0'); -test(macro, '3', 94906266, '0'); -test(macro, '-3', 94906266, '-1'); -test(macro, '3', -94906266, '-1'); -test(macro, '-3', -94906266, '0'); -test(macro, '3', 1073741824, '0'); -test(macro, '-3', 1073741824, '-1'); -test(macro, '3', -1073741824, '-1'); -test(macro, '-3', -1073741824, '0'); -test(macro, '3', 51676101935731, '0'); -test(macro, '-3', 51676101935731, '-1'); -test(macro, '3', -51676101935731, '-1'); -test(macro, '-3', -51676101935731, '0'); -test(macro, '7', 1, '7'); -test(macro, '-7', 1, '-7'); -test(macro, '7', -1, '-7'); -test(macro, '-7', -1, '7'); -test(macro, '7', 3, '2'); -test(macro, '-7', 3, '-3'); -test(macro, '7', -3, '-3'); -test(macro, '-7', -3, '2'); -test(macro, '7', 7, '1'); -test(macro, '-7', 7, '-1'); -test(macro, '7', -7, '-1'); -test(macro, '-7', -7, '1'); -test(macro, '7', 9, '0'); -test(macro, '-7', 9, '-1'); -test(macro, '7', -9, '-1'); -test(macro, '-7', -9, '0'); -test(macro, '7', 11, '0'); -test(macro, '-7', 11, '-1'); -test(macro, '7', -11, '-1'); -test(macro, '-7', -11, '0'); -test(macro, '7', 17, '0'); -test(macro, '-7', 17, '-1'); -test(macro, '7', -17, '-1'); -test(macro, '-7', -17, '0'); -test(macro, '7', 22, '0'); -test(macro, '-7', 22, '-1'); -test(macro, '7', -22, '-1'); -test(macro, '-7', -22, '0'); -test(macro, '7', 24, '0'); -test(macro, '-7', 24, '-1'); -test(macro, '7', -24, '-1'); -test(macro, '-7', -24, '0'); -test(macro, '7', 27, '0'); -test(macro, '-7', 27, '-1'); -test(macro, '7', -27, '-1'); -test(macro, '-7', -27, '0'); -test(macro, '7', 29, '0'); -test(macro, '-7', 29, '-1'); -test(macro, '7', -29, '-1'); -test(macro, '-7', -29, '0'); -test(macro, '7', 1234, '0'); -test(macro, '-7', 1234, '-1'); -test(macro, '7', -1234, '-1'); -test(macro, '-7', -1234, '0'); -test(macro, '7', 5678, '0'); -test(macro, '-7', 5678, '-1'); -test(macro, '7', -5678, '-1'); -test(macro, '-7', -5678, '0'); -test(macro, '7', 94906265, '0'); -test(macro, '-7', 94906265, '-1'); -test(macro, '7', -94906265, '-1'); -test(macro, '-7', -94906265, '0'); -test(macro, '7', 94906266, '0'); -test(macro, '-7', 94906266, '-1'); -test(macro, '7', -94906266, '-1'); -test(macro, '-7', -94906266, '0'); -test(macro, '7', 1073741824, '0'); -test(macro, '-7', 1073741824, '-1'); -test(macro, '7', -1073741824, '-1'); -test(macro, '-7', -1073741824, '0'); -test(macro, '7', 51676101935731, '0'); -test(macro, '-7', 51676101935731, '-1'); -test(macro, '7', -51676101935731, '-1'); -test(macro, '-7', -51676101935731, '0'); -test(macro, '9', 1, '9'); -test(macro, '-9', 1, '-9'); -test(macro, '9', -1, '-9'); -test(macro, '-9', -1, '9'); -test(macro, '9', 3, '3'); -test(macro, '-9', 3, '-3'); -test(macro, '9', -3, '-3'); -test(macro, '-9', -3, '3'); -test(macro, '9', 7, '1'); -test(macro, '-9', 7, '-2'); -test(macro, '9', -7, '-2'); -test(macro, '-9', -7, '1'); -test(macro, '9', 9, '1'); -test(macro, '-9', 9, '-1'); -test(macro, '9', -9, '-1'); -test(macro, '-9', -9, '1'); -test(macro, '9', 11, '0'); -test(macro, '-9', 11, '-1'); -test(macro, '9', -11, '-1'); -test(macro, '-9', -11, '0'); -test(macro, '9', 17, '0'); -test(macro, '-9', 17, '-1'); -test(macro, '9', -17, '-1'); -test(macro, '-9', -17, '0'); -test(macro, '9', 22, '0'); -test(macro, '-9', 22, '-1'); -test(macro, '9', -22, '-1'); -test(macro, '-9', -22, '0'); -test(macro, '9', 24, '0'); -test(macro, '-9', 24, '-1'); -test(macro, '9', -24, '-1'); -test(macro, '-9', -24, '0'); -test(macro, '9', 27, '0'); -test(macro, '-9', 27, '-1'); -test(macro, '9', -27, '-1'); -test(macro, '-9', -27, '0'); -test(macro, '9', 29, '0'); -test(macro, '-9', 29, '-1'); -test(macro, '9', -29, '-1'); -test(macro, '-9', -29, '0'); -test(macro, '9', 1234, '0'); -test(macro, '-9', 1234, '-1'); -test(macro, '9', -1234, '-1'); -test(macro, '-9', -1234, '0'); -test(macro, '9', 5678, '0'); -test(macro, '-9', 5678, '-1'); -test(macro, '9', -5678, '-1'); -test(macro, '-9', -5678, '0'); -test(macro, '9', 94906265, '0'); -test(macro, '-9', 94906265, '-1'); -test(macro, '9', -94906265, '-1'); -test(macro, '-9', -94906265, '0'); -test(macro, '9', 94906266, '0'); -test(macro, '-9', 94906266, '-1'); -test(macro, '9', -94906266, '-1'); -test(macro, '-9', -94906266, '0'); -test(macro, '9', 1073741824, '0'); -test(macro, '-9', 1073741824, '-1'); -test(macro, '9', -1073741824, '-1'); -test(macro, '-9', -1073741824, '0'); -test(macro, '9', 51676101935731, '0'); -test(macro, '-9', 51676101935731, '-1'); -test(macro, '9', -51676101935731, '-1'); -test(macro, '-9', -51676101935731, '0'); -test(macro, '11', 1, '11'); -test(macro, '-11', 1, '-11'); -test(macro, '11', -1, '-11'); -test(macro, '-11', -1, '11'); -test(macro, '11', 3, '3'); -test(macro, '-11', 3, '-4'); -test(macro, '11', -3, '-4'); -test(macro, '-11', -3, '3'); -test(macro, '11', 7, '1'); -test(macro, '-11', 7, '-2'); -test(macro, '11', -7, '-2'); -test(macro, '-11', -7, '1'); -test(macro, '11', 9, '1'); -test(macro, '-11', 9, '-2'); -test(macro, '11', -9, '-2'); -test(macro, '-11', -9, '1'); -test(macro, '11', 11, '1'); -test(macro, '-11', 11, '-1'); -test(macro, '11', -11, '-1'); -test(macro, '-11', -11, '1'); -test(macro, '11', 17, '0'); -test(macro, '-11', 17, '-1'); -test(macro, '11', -17, '-1'); -test(macro, '-11', -17, '0'); -test(macro, '11', 22, '0'); -test(macro, '-11', 22, '-1'); -test(macro, '11', -22, '-1'); -test(macro, '-11', -22, '0'); -test(macro, '11', 24, '0'); -test(macro, '-11', 24, '-1'); -test(macro, '11', -24, '-1'); -test(macro, '-11', -24, '0'); -test(macro, '11', 27, '0'); -test(macro, '-11', 27, '-1'); -test(macro, '11', -27, '-1'); -test(macro, '-11', -27, '0'); -test(macro, '11', 29, '0'); -test(macro, '-11', 29, '-1'); -test(macro, '11', -29, '-1'); -test(macro, '-11', -29, '0'); -test(macro, '11', 1234, '0'); -test(macro, '-11', 1234, '-1'); -test(macro, '11', -1234, '-1'); -test(macro, '-11', -1234, '0'); -test(macro, '11', 5678, '0'); -test(macro, '-11', 5678, '-1'); -test(macro, '11', -5678, '-1'); -test(macro, '-11', -5678, '0'); -test(macro, '11', 94906265, '0'); -test(macro, '-11', 94906265, '-1'); -test(macro, '11', -94906265, '-1'); -test(macro, '-11', -94906265, '0'); -test(macro, '11', 94906266, '0'); -test(macro, '-11', 94906266, '-1'); -test(macro, '11', -94906266, '-1'); -test(macro, '-11', -94906266, '0'); -test(macro, '11', 1073741824, '0'); -test(macro, '-11', 1073741824, '-1'); -test(macro, '11', -1073741824, '-1'); -test(macro, '-11', -1073741824, '0'); -test(macro, '11', 51676101935731, '0'); -test(macro, '-11', 51676101935731, '-1'); -test(macro, '11', -51676101935731, '-1'); -test(macro, '-11', -51676101935731, '0'); -test(macro, '17', 1, '17'); -test(macro, '-17', 1, '-17'); -test(macro, '17', -1, '-17'); -test(macro, '-17', -1, '17'); -test(macro, '17', 3, '5'); -test(macro, '-17', 3, '-6'); -test(macro, '17', -3, '-6'); -test(macro, '-17', -3, '5'); -test(macro, '17', 7, '2'); -test(macro, '-17', 7, '-3'); -test(macro, '17', -7, '-3'); -test(macro, '-17', -7, '2'); -test(macro, '17', 9, '1'); -test(macro, '-17', 9, '-2'); -test(macro, '17', -9, '-2'); -test(macro, '-17', -9, '1'); -test(macro, '17', 11, '1'); -test(macro, '-17', 11, '-2'); -test(macro, '17', -11, '-2'); -test(macro, '-17', -11, '1'); -test(macro, '17', 17, '1'); -test(macro, '-17', 17, '-1'); -test(macro, '17', -17, '-1'); -test(macro, '-17', -17, '1'); -test(macro, '17', 22, '0'); -test(macro, '-17', 22, '-1'); -test(macro, '17', -22, '-1'); -test(macro, '-17', -22, '0'); -test(macro, '17', 24, '0'); -test(macro, '-17', 24, '-1'); -test(macro, '17', -24, '-1'); -test(macro, '-17', -24, '0'); -test(macro, '17', 27, '0'); -test(macro, '-17', 27, '-1'); -test(macro, '17', -27, '-1'); -test(macro, '-17', -27, '0'); -test(macro, '17', 29, '0'); -test(macro, '-17', 29, '-1'); -test(macro, '17', -29, '-1'); -test(macro, '-17', -29, '0'); -test(macro, '17', 1234, '0'); -test(macro, '-17', 1234, '-1'); -test(macro, '17', -1234, '-1'); -test(macro, '-17', -1234, '0'); -test(macro, '17', 5678, '0'); -test(macro, '-17', 5678, '-1'); -test(macro, '17', -5678, '-1'); -test(macro, '-17', -5678, '0'); -test(macro, '17', 94906265, '0'); -test(macro, '-17', 94906265, '-1'); -test(macro, '17', -94906265, '-1'); -test(macro, '-17', -94906265, '0'); -test(macro, '17', 94906266, '0'); -test(macro, '-17', 94906266, '-1'); -test(macro, '17', -94906266, '-1'); -test(macro, '-17', -94906266, '0'); -test(macro, '17', 1073741824, '0'); -test(macro, '-17', 1073741824, '-1'); -test(macro, '17', -1073741824, '-1'); -test(macro, '-17', -1073741824, '0'); -test(macro, '17', 51676101935731, '0'); -test(macro, '-17', 51676101935731, '-1'); -test(macro, '17', -51676101935731, '-1'); -test(macro, '-17', -51676101935731, '0'); -test(macro, '22', 1, '22'); -test(macro, '-22', 1, '-22'); -test(macro, '22', -1, '-22'); -test(macro, '-22', -1, '22'); -test(macro, '22', 3, '7'); -test(macro, '-22', 3, '-8'); -test(macro, '22', -3, '-8'); -test(macro, '-22', -3, '7'); -test(macro, '22', 7, '3'); -test(macro, '-22', 7, '-4'); -test(macro, '22', -7, '-4'); -test(macro, '-22', -7, '3'); -test(macro, '22', 9, '2'); -test(macro, '-22', 9, '-3'); -test(macro, '22', -9, '-3'); -test(macro, '-22', -9, '2'); -test(macro, '22', 11, '2'); -test(macro, '-22', 11, '-2'); -test(macro, '22', -11, '-2'); -test(macro, '-22', -11, '2'); -test(macro, '22', 17, '1'); -test(macro, '-22', 17, '-2'); -test(macro, '22', -17, '-2'); -test(macro, '-22', -17, '1'); -test(macro, '22', 22, '1'); -test(macro, '-22', 22, '-1'); -test(macro, '22', -22, '-1'); -test(macro, '-22', -22, '1'); -test(macro, '22', 24, '0'); -test(macro, '-22', 24, '-1'); -test(macro, '22', -24, '-1'); -test(macro, '-22', -24, '0'); -test(macro, '22', 27, '0'); -test(macro, '-22', 27, '-1'); -test(macro, '22', -27, '-1'); -test(macro, '-22', -27, '0'); -test(macro, '22', 29, '0'); -test(macro, '-22', 29, '-1'); -test(macro, '22', -29, '-1'); -test(macro, '-22', -29, '0'); -test(macro, '22', 1234, '0'); -test(macro, '-22', 1234, '-1'); -test(macro, '22', -1234, '-1'); -test(macro, '-22', -1234, '0'); -test(macro, '22', 5678, '0'); -test(macro, '-22', 5678, '-1'); -test(macro, '22', -5678, '-1'); -test(macro, '-22', -5678, '0'); -test(macro, '22', 94906265, '0'); -test(macro, '-22', 94906265, '-1'); -test(macro, '22', -94906265, '-1'); -test(macro, '-22', -94906265, '0'); -test(macro, '22', 94906266, '0'); -test(macro, '-22', 94906266, '-1'); -test(macro, '22', -94906266, '-1'); -test(macro, '-22', -94906266, '0'); -test(macro, '22', 1073741824, '0'); -test(macro, '-22', 1073741824, '-1'); -test(macro, '22', -1073741824, '-1'); -test(macro, '-22', -1073741824, '0'); -test(macro, '22', 51676101935731, '0'); -test(macro, '-22', 51676101935731, '-1'); -test(macro, '22', -51676101935731, '-1'); -test(macro, '-22', -51676101935731, '0'); -test(macro, '24', 1, '24'); -test(macro, '-24', 1, '-24'); -test(macro, '24', -1, '-24'); -test(macro, '-24', -1, '24'); -test(macro, '24', 3, '8'); -test(macro, '-24', 3, '-8'); -test(macro, '24', -3, '-8'); -test(macro, '-24', -3, '8'); -test(macro, '24', 7, '3'); -test(macro, '-24', 7, '-4'); -test(macro, '24', -7, '-4'); -test(macro, '-24', -7, '3'); -test(macro, '24', 9, '2'); -test(macro, '-24', 9, '-3'); -test(macro, '24', -9, '-3'); -test(macro, '-24', -9, '2'); -test(macro, '24', 11, '2'); -test(macro, '-24', 11, '-3'); -test(macro, '24', -11, '-3'); -test(macro, '-24', -11, '2'); -test(macro, '24', 17, '1'); -test(macro, '-24', 17, '-2'); -test(macro, '24', -17, '-2'); -test(macro, '-24', -17, '1'); -test(macro, '24', 22, '1'); -test(macro, '-24', 22, '-2'); -test(macro, '24', -22, '-2'); -test(macro, '-24', -22, '1'); -test(macro, '24', 24, '1'); -test(macro, '-24', 24, '-1'); -test(macro, '24', -24, '-1'); -test(macro, '-24', -24, '1'); -test(macro, '24', 27, '0'); -test(macro, '-24', 27, '-1'); -test(macro, '24', -27, '-1'); -test(macro, '-24', -27, '0'); -test(macro, '24', 29, '0'); -test(macro, '-24', 29, '-1'); -test(macro, '24', -29, '-1'); -test(macro, '-24', -29, '0'); -test(macro, '24', 1234, '0'); -test(macro, '-24', 1234, '-1'); -test(macro, '24', -1234, '-1'); -test(macro, '-24', -1234, '0'); -test(macro, '24', 5678, '0'); -test(macro, '-24', 5678, '-1'); -test(macro, '24', -5678, '-1'); -test(macro, '-24', -5678, '0'); -test(macro, '24', 94906265, '0'); -test(macro, '-24', 94906265, '-1'); -test(macro, '24', -94906265, '-1'); -test(macro, '-24', -94906265, '0'); -test(macro, '24', 94906266, '0'); -test(macro, '-24', 94906266, '-1'); -test(macro, '24', -94906266, '-1'); -test(macro, '-24', -94906266, '0'); -test(macro, '24', 1073741824, '0'); -test(macro, '-24', 1073741824, '-1'); -test(macro, '24', -1073741824, '-1'); -test(macro, '-24', -1073741824, '0'); -test(macro, '24', 51676101935731, '0'); -test(macro, '-24', 51676101935731, '-1'); -test(macro, '24', -51676101935731, '-1'); -test(macro, '-24', -51676101935731, '0'); -test(macro, '27', 1, '27'); -test(macro, '-27', 1, '-27'); -test(macro, '27', -1, '-27'); -test(macro, '-27', -1, '27'); -test(macro, '27', 3, '9'); -test(macro, '-27', 3, '-9'); -test(macro, '27', -3, '-9'); -test(macro, '-27', -3, '9'); -test(macro, '27', 7, '3'); -test(macro, '-27', 7, '-4'); -test(macro, '27', -7, '-4'); -test(macro, '-27', -7, '3'); -test(macro, '27', 9, '3'); -test(macro, '-27', 9, '-3'); -test(macro, '27', -9, '-3'); -test(macro, '-27', -9, '3'); -test(macro, '27', 11, '2'); -test(macro, '-27', 11, '-3'); -test(macro, '27', -11, '-3'); -test(macro, '-27', -11, '2'); -test(macro, '27', 17, '1'); -test(macro, '-27', 17, '-2'); -test(macro, '27', -17, '-2'); -test(macro, '-27', -17, '1'); -test(macro, '27', 22, '1'); -test(macro, '-27', 22, '-2'); -test(macro, '27', -22, '-2'); -test(macro, '-27', -22, '1'); -test(macro, '27', 24, '1'); -test(macro, '-27', 24, '-2'); -test(macro, '27', -24, '-2'); -test(macro, '-27', -24, '1'); -test(macro, '27', 27, '1'); -test(macro, '-27', 27, '-1'); -test(macro, '27', -27, '-1'); -test(macro, '-27', -27, '1'); -test(macro, '27', 29, '0'); -test(macro, '-27', 29, '-1'); -test(macro, '27', -29, '-1'); -test(macro, '-27', -29, '0'); -test(macro, '27', 1234, '0'); -test(macro, '-27', 1234, '-1'); -test(macro, '27', -1234, '-1'); -test(macro, '-27', -1234, '0'); -test(macro, '27', 5678, '0'); -test(macro, '-27', 5678, '-1'); -test(macro, '27', -5678, '-1'); -test(macro, '-27', -5678, '0'); -test(macro, '27', 94906265, '0'); -test(macro, '-27', 94906265, '-1'); -test(macro, '27', -94906265, '-1'); -test(macro, '-27', -94906265, '0'); -test(macro, '27', 94906266, '0'); -test(macro, '-27', 94906266, '-1'); -test(macro, '27', -94906266, '-1'); -test(macro, '-27', -94906266, '0'); -test(macro, '27', 1073741824, '0'); -test(macro, '-27', 1073741824, '-1'); -test(macro, '27', -1073741824, '-1'); -test(macro, '-27', -1073741824, '0'); -test(macro, '27', 51676101935731, '0'); -test(macro, '-27', 51676101935731, '-1'); -test(macro, '27', -51676101935731, '-1'); -test(macro, '-27', -51676101935731, '0'); -test(macro, '29', 1, '29'); -test(macro, '-29', 1, '-29'); -test(macro, '29', -1, '-29'); -test(macro, '-29', -1, '29'); -test(macro, '29', 3, '9'); -test(macro, '-29', 3, '-10'); -test(macro, '29', -3, '-10'); -test(macro, '-29', -3, '9'); -test(macro, '29', 7, '4'); -test(macro, '-29', 7, '-5'); -test(macro, '29', -7, '-5'); -test(macro, '-29', -7, '4'); -test(macro, '29', 9, '3'); -test(macro, '-29', 9, '-4'); -test(macro, '29', -9, '-4'); -test(macro, '-29', -9, '3'); -test(macro, '29', 11, '2'); -test(macro, '-29', 11, '-3'); -test(macro, '29', -11, '-3'); -test(macro, '-29', -11, '2'); -test(macro, '29', 17, '1'); -test(macro, '-29', 17, '-2'); -test(macro, '29', -17, '-2'); -test(macro, '-29', -17, '1'); -test(macro, '29', 22, '1'); -test(macro, '-29', 22, '-2'); -test(macro, '29', -22, '-2'); -test(macro, '-29', -22, '1'); -test(macro, '29', 24, '1'); -test(macro, '-29', 24, '-2'); -test(macro, '29', -24, '-2'); -test(macro, '-29', -24, '1'); -test(macro, '29', 27, '1'); -test(macro, '-29', 27, '-2'); -test(macro, '29', -27, '-2'); -test(macro, '-29', -27, '1'); -test(macro, '29', 29, '1'); -test(macro, '-29', 29, '-1'); -test(macro, '29', -29, '-1'); -test(macro, '-29', -29, '1'); -test(macro, '29', 1234, '0'); -test(macro, '-29', 1234, '-1'); -test(macro, '29', -1234, '-1'); -test(macro, '-29', -1234, '0'); -test(macro, '29', 5678, '0'); -test(macro, '-29', 5678, '-1'); -test(macro, '29', -5678, '-1'); -test(macro, '-29', -5678, '0'); -test(macro, '29', 94906265, '0'); -test(macro, '-29', 94906265, '-1'); -test(macro, '29', -94906265, '-1'); -test(macro, '-29', -94906265, '0'); -test(macro, '29', 94906266, '0'); -test(macro, '-29', 94906266, '-1'); -test(macro, '29', -94906266, '-1'); -test(macro, '-29', -94906266, '0'); -test(macro, '29', 1073741824, '0'); -test(macro, '-29', 1073741824, '-1'); -test(macro, '29', -1073741824, '-1'); -test(macro, '-29', -1073741824, '0'); -test(macro, '29', 51676101935731, '0'); -test(macro, '-29', 51676101935731, '-1'); -test(macro, '29', -51676101935731, '-1'); -test(macro, '-29', -51676101935731, '0'); -test(macro, '1234', 1, '1234'); -test(macro, '-1234', 1, '-1234'); -test(macro, '1234', -1, '-1234'); -test(macro, '-1234', -1, '1234'); -test(macro, '1234', 3, '411'); -test(macro, '-1234', 3, '-412'); -test(macro, '1234', -3, '-412'); -test(macro, '-1234', -3, '411'); -test(macro, '1234', 7, '176'); -test(macro, '-1234', 7, '-177'); -test(macro, '1234', -7, '-177'); -test(macro, '-1234', -7, '176'); -test(macro, '1234', 9, '137'); -test(macro, '-1234', 9, '-138'); -test(macro, '1234', -9, '-138'); -test(macro, '-1234', -9, '137'); -test(macro, '1234', 11, '112'); -test(macro, '-1234', 11, '-113'); -test(macro, '1234', -11, '-113'); -test(macro, '-1234', -11, '112'); -test(macro, '1234', 17, '72'); -test(macro, '-1234', 17, '-73'); -test(macro, '1234', -17, '-73'); -test(macro, '-1234', -17, '72'); -test(macro, '1234', 22, '56'); -test(macro, '-1234', 22, '-57'); -test(macro, '1234', -22, '-57'); -test(macro, '-1234', -22, '56'); -test(macro, '1234', 24, '51'); -test(macro, '-1234', 24, '-52'); -test(macro, '1234', -24, '-52'); -test(macro, '-1234', -24, '51'); -test(macro, '1234', 27, '45'); -test(macro, '-1234', 27, '-46'); -test(macro, '1234', -27, '-46'); -test(macro, '-1234', -27, '45'); -test(macro, '1234', 29, '42'); -test(macro, '-1234', 29, '-43'); -test(macro, '1234', -29, '-43'); -test(macro, '-1234', -29, '42'); -test(macro, '1234', 1234, '1'); -test(macro, '-1234', 1234, '-1'); -test(macro, '1234', -1234, '-1'); -test(macro, '-1234', -1234, '1'); -test(macro, '1234', 5678, '0'); -test(macro, '-1234', 5678, '-1'); -test(macro, '1234', -5678, '-1'); -test(macro, '-1234', -5678, '0'); -test(macro, '1234', 94906265, '0'); -test(macro, '-1234', 94906265, '-1'); -test(macro, '1234', -94906265, '-1'); -test(macro, '-1234', -94906265, '0'); -test(macro, '1234', 94906266, '0'); -test(macro, '-1234', 94906266, '-1'); -test(macro, '1234', -94906266, '-1'); -test(macro, '-1234', -94906266, '0'); -test(macro, '1234', 1073741824, '0'); -test(macro, '-1234', 1073741824, '-1'); -test(macro, '1234', -1073741824, '-1'); -test(macro, '-1234', -1073741824, '0'); -test(macro, '1234', 51676101935731, '0'); -test(macro, '-1234', 51676101935731, '-1'); -test(macro, '1234', -51676101935731, '-1'); -test(macro, '-1234', -51676101935731, '0'); -test(macro, '5678', 1, '5678'); -test(macro, '-5678', 1, '-5678'); -test(macro, '5678', -1, '-5678'); -test(macro, '-5678', -1, '5678'); -test(macro, '5678', 3, '1892'); -test(macro, '-5678', 3, '-1893'); -test(macro, '5678', -3, '-1893'); -test(macro, '-5678', -3, '1892'); -test(macro, '5678', 7, '811'); -test(macro, '-5678', 7, '-812'); -test(macro, '5678', -7, '-812'); -test(macro, '-5678', -7, '811'); -test(macro, '5678', 9, '630'); -test(macro, '-5678', 9, '-631'); -test(macro, '5678', -9, '-631'); -test(macro, '-5678', -9, '630'); -test(macro, '5678', 11, '516'); -test(macro, '-5678', 11, '-517'); -test(macro, '5678', -11, '-517'); -test(macro, '-5678', -11, '516'); -test(macro, '5678', 17, '334'); -test(macro, '-5678', 17, '-334'); -test(macro, '5678', -17, '-334'); -test(macro, '-5678', -17, '334'); -test(macro, '5678', 22, '258'); -test(macro, '-5678', 22, '-259'); -test(macro, '5678', -22, '-259'); -test(macro, '-5678', -22, '258'); -test(macro, '5678', 24, '236'); -test(macro, '-5678', 24, '-237'); -test(macro, '5678', -24, '-237'); -test(macro, '-5678', -24, '236'); -test(macro, '5678', 27, '210'); -test(macro, '-5678', 27, '-211'); -test(macro, '5678', -27, '-211'); -test(macro, '-5678', -27, '210'); -test(macro, '5678', 29, '195'); -test(macro, '-5678', 29, '-196'); -test(macro, '5678', -29, '-196'); -test(macro, '-5678', -29, '195'); -test(macro, '5678', 1234, '4'); -test(macro, '-5678', 1234, '-5'); -test(macro, '5678', -1234, '-5'); -test(macro, '-5678', -1234, '4'); -test(macro, '5678', 5678, '1'); -test(macro, '-5678', 5678, '-1'); -test(macro, '5678', -5678, '-1'); -test(macro, '-5678', -5678, '1'); -test(macro, '5678', 94906265, '0'); -test(macro, '-5678', 94906265, '-1'); -test(macro, '5678', -94906265, '-1'); -test(macro, '-5678', -94906265, '0'); -test(macro, '5678', 94906266, '0'); -test(macro, '-5678', 94906266, '-1'); -test(macro, '5678', -94906266, '-1'); -test(macro, '-5678', -94906266, '0'); -test(macro, '5678', 1073741824, '0'); -test(macro, '-5678', 1073741824, '-1'); -test(macro, '5678', -1073741824, '-1'); -test(macro, '-5678', -1073741824, '0'); -test(macro, '5678', 51676101935731, '0'); -test(macro, '-5678', 51676101935731, '-1'); -test(macro, '5678', -51676101935731, '-1'); -test(macro, '-5678', -51676101935731, '0'); -test(macro, '94906265', 1, '94906265'); -test(macro, '-94906265', 1, '-94906265'); -test(macro, '94906265', -1, '-94906265'); -test(macro, '-94906265', -1, '94906265'); -test(macro, '94906265', 3, '31635421'); -test(macro, '-94906265', 3, '-31635422'); -test(macro, '94906265', -3, '-31635422'); -test(macro, '-94906265', -3, '31635421'); -test(macro, '94906265', 7, '13558037'); -test(macro, '-94906265', 7, '-13558038'); -test(macro, '94906265', -7, '-13558038'); -test(macro, '-94906265', -7, '13558037'); -test(macro, '94906265', 9, '10545140'); -test(macro, '-94906265', 9, '-10545141'); -test(macro, '94906265', -9, '-10545141'); -test(macro, '-94906265', -9, '10545140'); -test(macro, '94906265', 11, '8627842'); -test(macro, '-94906265', 11, '-8627843'); -test(macro, '94906265', -11, '-8627843'); -test(macro, '-94906265', -11, '8627842'); -test(macro, '94906265', 17, '5582721'); -test(macro, '-94906265', 17, '-5582722'); -test(macro, '94906265', -17, '-5582722'); -test(macro, '-94906265', -17, '5582721'); -test(macro, '94906265', 22, '4313921'); -test(macro, '-94906265', 22, '-4313922'); -test(macro, '94906265', -22, '-4313922'); -test(macro, '-94906265', -22, '4313921'); -test(macro, '94906265', 24, '3954427'); -test(macro, '-94906265', 24, '-3954428'); -test(macro, '94906265', -24, '-3954428'); -test(macro, '-94906265', -24, '3954427'); -test(macro, '94906265', 27, '3515046'); -test(macro, '-94906265', 27, '-3515047'); -test(macro, '94906265', -27, '-3515047'); -test(macro, '-94906265', -27, '3515046'); -test(macro, '94906265', 29, '3272629'); -test(macro, '-94906265', 29, '-3272630'); -test(macro, '94906265', -29, '-3272630'); -test(macro, '-94906265', -29, '3272629'); -test(macro, '94906265', 1234, '76909'); -test(macro, '-94906265', 1234, '-76910'); -test(macro, '94906265', -1234, '-76910'); -test(macro, '-94906265', -1234, '76909'); -test(macro, '94906265', 5678, '16714'); -test(macro, '-94906265', 5678, '-16715'); -test(macro, '94906265', -5678, '-16715'); -test(macro, '-94906265', -5678, '16714'); -test(macro, '94906265', 94906265, '1'); -test(macro, '-94906265', 94906265, '-1'); -test(macro, '94906265', -94906265, '-1'); -test(macro, '-94906265', -94906265, '1'); -test(macro, '94906265', 94906266, '0'); -test(macro, '-94906265', 94906266, '-1'); -test(macro, '94906265', -94906266, '-1'); -test(macro, '-94906265', -94906266, '0'); -test(macro, '94906265', 1073741824, '0'); -test(macro, '-94906265', 1073741824, '-1'); -test(macro, '94906265', -1073741824, '-1'); -test(macro, '-94906265', -1073741824, '0'); -test(macro, '94906265', 51676101935731, '0'); -test(macro, '-94906265', 51676101935731, '-1'); -test(macro, '94906265', -51676101935731, '-1'); -test(macro, '-94906265', -51676101935731, '0'); -test(macro, '94906266', 1, '94906266'); -test(macro, '-94906266', 1, '-94906266'); -test(macro, '94906266', -1, '-94906266'); -test(macro, '-94906266', -1, '94906266'); -test(macro, '94906266', 3, '31635422'); -test(macro, '-94906266', 3, '-31635422'); -test(macro, '94906266', -3, '-31635422'); -test(macro, '-94906266', -3, '31635422'); -test(macro, '94906266', 7, '13558038'); -test(macro, '-94906266', 7, '-13558038'); -test(macro, '94906266', -7, '-13558038'); -test(macro, '-94906266', -7, '13558038'); -test(macro, '94906266', 9, '10545140'); -test(macro, '-94906266', 9, '-10545141'); -test(macro, '94906266', -9, '-10545141'); -test(macro, '-94906266', -9, '10545140'); -test(macro, '94906266', 11, '8627842'); -test(macro, '-94906266', 11, '-8627843'); -test(macro, '94906266', -11, '-8627843'); -test(macro, '-94906266', -11, '8627842'); -test(macro, '94906266', 17, '5582721'); -test(macro, '-94906266', 17, '-5582722'); -test(macro, '94906266', -17, '-5582722'); -test(macro, '-94906266', -17, '5582721'); -test(macro, '94906266', 22, '4313921'); -test(macro, '-94906266', 22, '-4313922'); -test(macro, '94906266', -22, '-4313922'); -test(macro, '-94906266', -22, '4313921'); -test(macro, '94906266', 24, '3954427'); -test(macro, '-94906266', 24, '-3954428'); -test(macro, '94906266', -24, '-3954428'); -test(macro, '-94906266', -24, '3954427'); -test(macro, '94906266', 27, '3515046'); -test(macro, '-94906266', 27, '-3515047'); -test(macro, '94906266', -27, '-3515047'); -test(macro, '-94906266', -27, '3515046'); -test(macro, '94906266', 29, '3272629'); -test(macro, '-94906266', 29, '-3272630'); -test(macro, '94906266', -29, '-3272630'); -test(macro, '-94906266', -29, '3272629'); -test(macro, '94906266', 1234, '76909'); -test(macro, '-94906266', 1234, '-76910'); -test(macro, '94906266', -1234, '-76910'); -test(macro, '-94906266', -1234, '76909'); -test(macro, '94906266', 5678, '16714'); -test(macro, '-94906266', 5678, '-16715'); -test(macro, '94906266', -5678, '-16715'); -test(macro, '-94906266', -5678, '16714'); -test(macro, '94906266', 94906265, '1'); -test(macro, '-94906266', 94906265, '-2'); -test(macro, '94906266', -94906265, '-2'); -test(macro, '-94906266', -94906265, '1'); -test(macro, '94906266', 94906266, '1'); -test(macro, '-94906266', 94906266, '-1'); -test(macro, '94906266', -94906266, '-1'); -test(macro, '-94906266', -94906266, '1'); -test(macro, '94906266', 1073741824, '0'); -test(macro, '-94906266', 1073741824, '-1'); -test(macro, '94906266', -1073741824, '-1'); -test(macro, '-94906266', -1073741824, '0'); -test(macro, '94906266', 51676101935731, '0'); -test(macro, '-94906266', 51676101935731, '-1'); -test(macro, '94906266', -51676101935731, '-1'); -test(macro, '-94906266', -51676101935731, '0'); -test(macro, '1073741824', 1, '1073741824'); -test(macro, '-1073741824', 1, '-1073741824'); -test(macro, '1073741824', -1, '-1073741824'); -test(macro, '-1073741824', -1, '1073741824'); -test(macro, '1073741824', 3, '357913941'); -test(macro, '-1073741824', 3, '-357913942'); -test(macro, '1073741824', -3, '-357913942'); -test(macro, '-1073741824', -3, '357913941'); -test(macro, '1073741824', 7, '153391689'); -test(macro, '-1073741824', 7, '-153391690'); -test(macro, '1073741824', -7, '-153391690'); -test(macro, '-1073741824', -7, '153391689'); -test(macro, '1073741824', 9, '119304647'); -test(macro, '-1073741824', 9, '-119304648'); -test(macro, '1073741824', -9, '-119304648'); -test(macro, '-1073741824', -9, '119304647'); -test(macro, '1073741824', 11, '97612893'); -test(macro, '-1073741824', 11, '-97612894'); -test(macro, '1073741824', -11, '-97612894'); -test(macro, '-1073741824', -11, '97612893'); -test(macro, '1073741824', 17, '63161283'); -test(macro, '-1073741824', 17, '-63161284'); -test(macro, '1073741824', -17, '-63161284'); -test(macro, '-1073741824', -17, '63161283'); -test(macro, '1073741824', 22, '48806446'); -test(macro, '-1073741824', 22, '-48806447'); -test(macro, '1073741824', -22, '-48806447'); -test(macro, '-1073741824', -22, '48806446'); -test(macro, '1073741824', 24, '44739242'); -test(macro, '-1073741824', 24, '-44739243'); -test(macro, '1073741824', -24, '-44739243'); -test(macro, '-1073741824', -24, '44739242'); -test(macro, '1073741824', 27, '39768215'); -test(macro, '-1073741824', 27, '-39768216'); -test(macro, '1073741824', -27, '-39768216'); -test(macro, '-1073741824', -27, '39768215'); -test(macro, '1073741824', 29, '37025580'); -test(macro, '-1073741824', 29, '-37025581'); -test(macro, '1073741824', -29, '-37025581'); -test(macro, '-1073741824', -29, '37025580'); -test(macro, '1073741824', 1234, '870131'); -test(macro, '-1073741824', 1234, '-870132'); -test(macro, '1073741824', -1234, '-870132'); -test(macro, '-1073741824', -1234, '870131'); -test(macro, '1073741824', 5678, '189105'); -test(macro, '-1073741824', 5678, '-189106'); -test(macro, '1073741824', -5678, '-189106'); -test(macro, '-1073741824', -5678, '189105'); -test(macro, '1073741824', 94906265, '11'); -test(macro, '-1073741824', 94906265, '-12'); -test(macro, '1073741824', -94906265, '-12'); -test(macro, '-1073741824', -94906265, '11'); -test(macro, '1073741824', 94906266, '11'); -test(macro, '-1073741824', 94906266, '-12'); -test(macro, '1073741824', -94906266, '-12'); -test(macro, '-1073741824', -94906266, '11'); -test(macro, '1073741824', 1073741824, '1'); -test(macro, '-1073741824', 1073741824, '-1'); -test(macro, '1073741824', -1073741824, '-1'); -test(macro, '-1073741824', -1073741824, '1'); -test(macro, '1073741824', 51676101935731, '0'); -test(macro, '-1073741824', 51676101935731, '-1'); -test(macro, '1073741824', -51676101935731, '-1'); -test(macro, '-1073741824', -51676101935731, '0'); -test(macro, '51676101935731', 1, '51676101935731'); -test(macro, '-51676101935731', 1, '-51676101935731'); -test(macro, '51676101935731', -1, '-51676101935731'); -test(macro, '-51676101935731', -1, '51676101935731'); -test(macro, '51676101935731', 3, '17225367311910'); -test(macro, '-51676101935731', 3, '-17225367311911'); -test(macro, '51676101935731', -3, '-17225367311911'); -test(macro, '-51676101935731', -3, '17225367311910'); -test(macro, '51676101935731', 7, '7382300276533'); -test(macro, '-51676101935731', 7, '-7382300276533'); -test(macro, '51676101935731', -7, '-7382300276533'); -test(macro, '-51676101935731', -7, '7382300276533'); -test(macro, '51676101935731', 9, '5741789103970'); -test(macro, '-51676101935731', 9, '-5741789103971'); -test(macro, '51676101935731', -9, '-5741789103971'); -test(macro, '-51676101935731', -9, '5741789103970'); -test(macro, '51676101935731', 11, '4697827448702'); -test(macro, '-51676101935731', 11, '-4697827448703'); -test(macro, '51676101935731', -11, '-4697827448703'); -test(macro, '-51676101935731', -11, '4697827448702'); -test(macro, '51676101935731', 17, '3039770702101'); -test(macro, '-51676101935731', 17, '-3039770702102'); -test(macro, '51676101935731', -17, '-3039770702102'); -test(macro, '-51676101935731', -17, '3039770702101'); -test(macro, '51676101935731', 22, '2348913724351'); -test(macro, '-51676101935731', 22, '-2348913724352'); -test(macro, '51676101935731', -22, '-2348913724352'); -test(macro, '-51676101935731', -22, '2348913724351'); -test(macro, '51676101935731', 24, '2153170913988'); -test(macro, '-51676101935731', 24, '-2153170913989'); -test(macro, '51676101935731', -24, '-2153170913989'); -test(macro, '-51676101935731', -24, '2153170913988'); -test(macro, '51676101935731', 27, '1913929701323'); -test(macro, '-51676101935731', 27, '-1913929701324'); -test(macro, '51676101935731', -27, '-1913929701324'); -test(macro, '-51676101935731', -27, '1913929701323'); -test(macro, '51676101935731', 29, '1781934549507'); -test(macro, '-51676101935731', 29, '-1781934549508'); -test(macro, '51676101935731', -29, '-1781934549508'); -test(macro, '-51676101935731', -29, '1781934549507'); -test(macro, '51676101935731', 1234, '41876905944'); -test(macro, '-51676101935731', 1234, '-41876905945'); -test(macro, '51676101935731', -1234, '-41876905945'); -test(macro, '-51676101935731', -1234, '41876905944'); -test(macro, '51676101935731', 5678, '9101109886'); -test(macro, '-51676101935731', 5678, '-9101109887'); -test(macro, '51676101935731', -5678, '-9101109887'); -test(macro, '-51676101935731', -5678, '9101109886'); -test(macro, '51676101935731', 94906265, '544496'); -test(macro, '-51676101935731', 94906265, '-544497'); -test(macro, '51676101935731', -94906265, '-544497'); -test(macro, '-51676101935731', -94906265, '544496'); -test(macro, '51676101935731', 94906266, '544496'); -test(macro, '-51676101935731', 94906266, '-544497'); -test(macro, '51676101935731', -94906266, '-544497'); -test(macro, '-51676101935731', -94906266, '544496'); -test(macro, '51676101935731', 1073741824, '48127'); -test(macro, '-51676101935731', 1073741824, '-48128'); -test(macro, '51676101935731', -1073741824, '-48128'); -test(macro, '-51676101935731', -1073741824, '48127'); -test(macro, '51676101935731', 51676101935731, '1'); -test(macro, '-51676101935731', 51676101935731, '-1'); -test(macro, '51676101935731', -51676101935731, '-1'); -test(macro, '-51676101935731', -51676101935731, '1'); -test(macro, '717897987691852588770249', 1, '717897987691852588770249'); -test(macro, '-717897987691852588770249', 1, '-717897987691852588770249'); -test(macro, '717897987691852588770249', -1, '-717897987691852588770249'); -test(macro, '-717897987691852588770249', -1, '717897987691852588770249'); -test(macro, '717897987691852588770249', 3, '239299329230617529590083'); -test(macro, '-717897987691852588770249', 3, '-239299329230617529590083'); -test(macro, '717897987691852588770249', -3, '-239299329230617529590083'); -test(macro, '-717897987691852588770249', -3, '239299329230617529590083'); -test(macro, '717897987691852588770249', 7, '102556855384550369824321'); -test(macro, '-717897987691852588770249', 7, '-102556855384550369824322'); -test(macro, '717897987691852588770249', -7, '-102556855384550369824322'); -test(macro, '-717897987691852588770249', -7, '102556855384550369824321'); -test(macro, '717897987691852588770249', 9, '79766443076872509863361'); -test(macro, '-717897987691852588770249', 9, '-79766443076872509863361'); -test(macro, '717897987691852588770249', -9, '-79766443076872509863361'); -test(macro, '-717897987691852588770249', -9, '79766443076872509863361'); -test(macro, '717897987691852588770249', 11, '65263453426532053524568'); -test(macro, '-717897987691852588770249', 11, '-65263453426532053524569'); -test(macro, '717897987691852588770249', -11, '-65263453426532053524569'); -test(macro, '-717897987691852588770249', -11, '65263453426532053524568'); -test(macro, '717897987691852588770249', 17, '42229293393638387574720'); -test(macro, '-717897987691852588770249', 17, '-42229293393638387574721'); -test(macro, '717897987691852588770249', -17, '-42229293393638387574721'); -test(macro, '-717897987691852588770249', -17, '42229293393638387574720'); -test(macro, '717897987691852588770249', 22, '32631726713266026762284'); -test(macro, '-717897987691852588770249', 22, '-32631726713266026762285'); -test(macro, '717897987691852588770249', -22, '-32631726713266026762285'); -test(macro, '-717897987691852588770249', -22, '32631726713266026762284'); -test(macro, '717897987691852588770249', 24, '29912416153827191198760'); -test(macro, '-717897987691852588770249', 24, '-29912416153827191198761'); -test(macro, '717897987691852588770249', -24, '-29912416153827191198761'); -test(macro, '-717897987691852588770249', -24, '29912416153827191198760'); -test(macro, '717897987691852588770249', 27, '26588814358957503287787'); -test(macro, '-717897987691852588770249', 27, '-26588814358957503287787'); -test(macro, '717897987691852588770249', -27, '-26588814358957503287787'); -test(macro, '-717897987691852588770249', -27, '26588814358957503287787'); -test(macro, '717897987691852588770249', 29, '24755103023856985819663'); -test(macro, '-717897987691852588770249', 29, '-24755103023856985819664'); -test(macro, '717897987691852588770249', -29, '-24755103023856985819664'); -test(macro, '-717897987691852588770249', -29, '24755103023856985819663'); -test(macro, '717897987691852588770249', 1234, '581764981922084755891'); -test(macro, '-717897987691852588770249', 1234, '-581764981922084755892'); -test(macro, '717897987691852588770249', -1234, '-581764981922084755892'); -test(macro, '-717897987691852588770249', -1234, '581764981922084755891'); -test(macro, '717897987691852588770249', 5678, '126435010160593974774'); -test(macro, '-717897987691852588770249', 5678, '-126435010160593974775'); -test(macro, '717897987691852588770249', -5678, '-126435010160593974775'); -test(macro, '-717897987691852588770249', -5678, '126435010160593974774'); -test(macro, '717897987691852588770249', 94906265, '7564284483135571'); -test(macro, '-717897987691852588770249', 94906265, '-7564284483135572'); -test(macro, '717897987691852588770249', -94906265, '-7564284483135572'); -test(macro, '-717897987691852588770249', -94906265, '7564284483135571'); -test(macro, '717897987691852588770249', 94906266, '7564284403432883'); -test(macro, '-717897987691852588770249', 94906266, '-7564284403432884'); -test(macro, '717897987691852588770249', -94906266, '-7564284403432884'); -test(macro, '-717897987691852588770249', -94906266, '7564284403432883'); -test(macro, '717897987691852588770249', 1073741824, '668594602208447'); -test(macro, '-717897987691852588770249', 1073741824, '-668594602208448'); -test(macro, '717897987691852588770249', -1073741824, '-668594602208448'); -test(macro, '-717897987691852588770249', -1073741824, '668594602208447'); -test(macro, '717897987691852588770249', 51676101935731, '13892262782'); -test(macro, '-717897987691852588770249', 51676101935731, '-13892262783'); -test(macro, '717897987691852588770249', -51676101935731, '-13892262783'); -test(macro, '-717897987691852588770249', -51676101935731, '13892262782'); diff --git a/test/src/integer/arithmetic/iadd.js b/test/src/integer/arithmetic/iadd.js deleted file mode 100644 index c90ecca..0000000 --- a/test/src/integer/arithmetic/iadd.js +++ /dev/null @@ -1,1391 +0,0 @@ -import test from 'ava'; -import {parse, stringify, iadd} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const b = parse(B); - const c = iadd(a, b); - t.is(stringify(a), C); - t.is(stringify(b), B); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `iadd(${fmt(A)},${fmt(B)}) = ${fmt(C)}`; - -test(macro, '0', '0', '0'); -test(macro, '0', '1', '1'); -test(macro, '0', '-1', '-1'); -test(macro, '0', '3', '3'); -test(macro, '0', '-3', '-3'); -test(macro, '0', '7', '7'); -test(macro, '0', '-7', '-7'); -test(macro, '0', '9', '9'); -test(macro, '0', '-9', '-9'); -test(macro, '0', '11', '11'); -test(macro, '0', '-11', '-11'); -test(macro, '0', '17', '17'); -test(macro, '0', '-17', '-17'); -test(macro, '0', '22', '22'); -test(macro, '0', '-22', '-22'); -test(macro, '0', '24', '24'); -test(macro, '0', '-24', '-24'); -test(macro, '0', '27', '27'); -test(macro, '0', '-27', '-27'); -test(macro, '0', '29', '29'); -test(macro, '0', '-29', '-29'); -test(macro, '0', '1234', '1234'); -test(macro, '0', '-1234', '-1234'); -test(macro, '0', '5678', '5678'); -test(macro, '0', '-5678', '-5678'); -test(macro, '0', '94906265', '94906265'); -test(macro, '0', '-94906265', '-94906265'); -test(macro, '0', '94906266', '94906266'); -test(macro, '0', '-94906266', '-94906266'); -test(macro, '0', '1073741824', '1073741824'); -test(macro, '0', '-1073741824', '-1073741824'); -test(macro, '0', '51676101935731', '51676101935731'); -test(macro, '0', '-51676101935731', '-51676101935731'); -test(macro, '0', '717897987691852588770249', '717897987691852588770249'); -test(macro, '0', '-717897987691852588770249', '-717897987691852588770249'); -test(macro, '1', '0', '1'); -test(macro, '-1', '0', '-1'); -test(macro, '1', '1', '2'); -test(macro, '-1', '1', '0'); -test(macro, '1', '-1', '0'); -test(macro, '-1', '-1', '-2'); -test(macro, '1', '3', '4'); -test(macro, '-1', '3', '2'); -test(macro, '1', '-3', '-2'); -test(macro, '-1', '-3', '-4'); -test(macro, '1', '7', '8'); -test(macro, '-1', '7', '6'); -test(macro, '1', '-7', '-6'); -test(macro, '-1', '-7', '-8'); -test(macro, '1', '9', '10'); -test(macro, '-1', '9', '8'); -test(macro, '1', '-9', '-8'); -test(macro, '-1', '-9', '-10'); -test(macro, '1', '11', '12'); -test(macro, '-1', '11', '10'); -test(macro, '1', '-11', '-10'); -test(macro, '-1', '-11', '-12'); -test(macro, '1', '17', '18'); -test(macro, '-1', '17', '16'); -test(macro, '1', '-17', '-16'); -test(macro, '-1', '-17', '-18'); -test(macro, '1', '22', '23'); -test(macro, '-1', '22', '21'); -test(macro, '1', '-22', '-21'); -test(macro, '-1', '-22', '-23'); -test(macro, '1', '24', '25'); -test(macro, '-1', '24', '23'); -test(macro, '1', '-24', '-23'); -test(macro, '-1', '-24', '-25'); -test(macro, '1', '27', '28'); -test(macro, '-1', '27', '26'); -test(macro, '1', '-27', '-26'); -test(macro, '-1', '-27', '-28'); -test(macro, '1', '29', '30'); -test(macro, '-1', '29', '28'); -test(macro, '1', '-29', '-28'); -test(macro, '-1', '-29', '-30'); -test(macro, '1', '1234', '1235'); -test(macro, '-1', '1234', '1233'); -test(macro, '1', '-1234', '-1233'); -test(macro, '-1', '-1234', '-1235'); -test(macro, '1', '5678', '5679'); -test(macro, '-1', '5678', '5677'); -test(macro, '1', '-5678', '-5677'); -test(macro, '-1', '-5678', '-5679'); -test(macro, '1', '94906265', '94906266'); -test(macro, '-1', '94906265', '94906264'); -test(macro, '1', '-94906265', '-94906264'); -test(macro, '-1', '-94906265', '-94906266'); -test(macro, '1', '94906266', '94906267'); -test(macro, '-1', '94906266', '94906265'); -test(macro, '1', '-94906266', '-94906265'); -test(macro, '-1', '-94906266', '-94906267'); -test(macro, '1', '1073741824', '1073741825'); -test(macro, '-1', '1073741824', '1073741823'); -test(macro, '1', '-1073741824', '-1073741823'); -test(macro, '-1', '-1073741824', '-1073741825'); -test(macro, '1', '51676101935731', '51676101935732'); -test(macro, '-1', '51676101935731', '51676101935730'); -test(macro, '1', '-51676101935731', '-51676101935730'); -test(macro, '-1', '-51676101935731', '-51676101935732'); -test(macro, '1', '717897987691852588770249', '717897987691852588770250'); -test(macro, '-1', '717897987691852588770249', '717897987691852588770248'); -test(macro, '1', '-717897987691852588770249', '-717897987691852588770248'); -test(macro, '-1', '-717897987691852588770249', '-717897987691852588770250'); -test(macro, '3', '0', '3'); -test(macro, '-3', '0', '-3'); -test(macro, '3', '1', '4'); -test(macro, '-3', '1', '-2'); -test(macro, '3', '-1', '2'); -test(macro, '-3', '-1', '-4'); -test(macro, '3', '3', '6'); -test(macro, '-3', '3', '0'); -test(macro, '3', '-3', '0'); -test(macro, '-3', '-3', '-6'); -test(macro, '3', '7', '10'); -test(macro, '-3', '7', '4'); -test(macro, '3', '-7', '-4'); -test(macro, '-3', '-7', '-10'); -test(macro, '3', '9', '12'); -test(macro, '-3', '9', '6'); -test(macro, '3', '-9', '-6'); -test(macro, '-3', '-9', '-12'); -test(macro, '3', '11', '14'); -test(macro, '-3', '11', '8'); -test(macro, '3', '-11', '-8'); -test(macro, '-3', '-11', '-14'); -test(macro, '3', '17', '20'); -test(macro, '-3', '17', '14'); -test(macro, '3', '-17', '-14'); -test(macro, '-3', '-17', '-20'); -test(macro, '3', '22', '25'); -test(macro, '-3', '22', '19'); -test(macro, '3', '-22', '-19'); -test(macro, '-3', '-22', '-25'); -test(macro, '3', '24', '27'); -test(macro, '-3', '24', '21'); -test(macro, '3', '-24', '-21'); -test(macro, '-3', '-24', '-27'); -test(macro, '3', '27', '30'); -test(macro, '-3', '27', '24'); -test(macro, '3', '-27', '-24'); -test(macro, '-3', '-27', '-30'); -test(macro, '3', '29', '32'); -test(macro, '-3', '29', '26'); -test(macro, '3', '-29', '-26'); -test(macro, '-3', '-29', '-32'); -test(macro, '3', '1234', '1237'); -test(macro, '-3', '1234', '1231'); -test(macro, '3', '-1234', '-1231'); -test(macro, '-3', '-1234', '-1237'); -test(macro, '3', '5678', '5681'); -test(macro, '-3', '5678', '5675'); -test(macro, '3', '-5678', '-5675'); -test(macro, '-3', '-5678', '-5681'); -test(macro, '3', '94906265', '94906268'); -test(macro, '-3', '94906265', '94906262'); -test(macro, '3', '-94906265', '-94906262'); -test(macro, '-3', '-94906265', '-94906268'); -test(macro, '3', '94906266', '94906269'); -test(macro, '-3', '94906266', '94906263'); -test(macro, '3', '-94906266', '-94906263'); -test(macro, '-3', '-94906266', '-94906269'); -test(macro, '3', '1073741824', '1073741827'); -test(macro, '-3', '1073741824', '1073741821'); -test(macro, '3', '-1073741824', '-1073741821'); -test(macro, '-3', '-1073741824', '-1073741827'); -test(macro, '3', '51676101935731', '51676101935734'); -test(macro, '-3', '51676101935731', '51676101935728'); -test(macro, '3', '-51676101935731', '-51676101935728'); -test(macro, '-3', '-51676101935731', '-51676101935734'); -test(macro, '3', '717897987691852588770249', '717897987691852588770252'); -test(macro, '-3', '717897987691852588770249', '717897987691852588770246'); -test(macro, '3', '-717897987691852588770249', '-717897987691852588770246'); -test(macro, '-3', '-717897987691852588770249', '-717897987691852588770252'); -test(macro, '7', '0', '7'); -test(macro, '-7', '0', '-7'); -test(macro, '7', '1', '8'); -test(macro, '-7', '1', '-6'); -test(macro, '7', '-1', '6'); -test(macro, '-7', '-1', '-8'); -test(macro, '7', '3', '10'); -test(macro, '-7', '3', '-4'); -test(macro, '7', '-3', '4'); -test(macro, '-7', '-3', '-10'); -test(macro, '7', '7', '14'); -test(macro, '-7', '7', '0'); -test(macro, '7', '-7', '0'); -test(macro, '-7', '-7', '-14'); -test(macro, '7', '9', '16'); -test(macro, '-7', '9', '2'); -test(macro, '7', '-9', '-2'); -test(macro, '-7', '-9', '-16'); -test(macro, '7', '11', '18'); -test(macro, '-7', '11', '4'); -test(macro, '7', '-11', '-4'); -test(macro, '-7', '-11', '-18'); -test(macro, '7', '17', '24'); -test(macro, '-7', '17', '10'); -test(macro, '7', '-17', '-10'); -test(macro, '-7', '-17', '-24'); -test(macro, '7', '22', '29'); -test(macro, '-7', '22', '15'); -test(macro, '7', '-22', '-15'); -test(macro, '-7', '-22', '-29'); -test(macro, '7', '24', '31'); -test(macro, '-7', '24', '17'); -test(macro, '7', '-24', '-17'); -test(macro, '-7', '-24', '-31'); -test(macro, '7', '27', '34'); -test(macro, '-7', '27', '20'); -test(macro, '7', '-27', '-20'); -test(macro, '-7', '-27', '-34'); -test(macro, '7', '29', '36'); -test(macro, '-7', '29', '22'); -test(macro, '7', '-29', '-22'); -test(macro, '-7', '-29', '-36'); -test(macro, '7', '1234', '1241'); -test(macro, '-7', '1234', '1227'); -test(macro, '7', '-1234', '-1227'); -test(macro, '-7', '-1234', '-1241'); -test(macro, '7', '5678', '5685'); -test(macro, '-7', '5678', '5671'); -test(macro, '7', '-5678', '-5671'); -test(macro, '-7', '-5678', '-5685'); -test(macro, '7', '94906265', '94906272'); -test(macro, '-7', '94906265', '94906258'); -test(macro, '7', '-94906265', '-94906258'); -test(macro, '-7', '-94906265', '-94906272'); -test(macro, '7', '94906266', '94906273'); -test(macro, '-7', '94906266', '94906259'); -test(macro, '7', '-94906266', '-94906259'); -test(macro, '-7', '-94906266', '-94906273'); -test(macro, '7', '1073741824', '1073741831'); -test(macro, '-7', '1073741824', '1073741817'); -test(macro, '7', '-1073741824', '-1073741817'); -test(macro, '-7', '-1073741824', '-1073741831'); -test(macro, '7', '51676101935731', '51676101935738'); -test(macro, '-7', '51676101935731', '51676101935724'); -test(macro, '7', '-51676101935731', '-51676101935724'); -test(macro, '-7', '-51676101935731', '-51676101935738'); -test(macro, '7', '717897987691852588770249', '717897987691852588770256'); -test(macro, '-7', '717897987691852588770249', '717897987691852588770242'); -test(macro, '7', '-717897987691852588770249', '-717897987691852588770242'); -test(macro, '-7', '-717897987691852588770249', '-717897987691852588770256'); -test(macro, '9', '0', '9'); -test(macro, '-9', '0', '-9'); -test(macro, '9', '1', '10'); -test(macro, '-9', '1', '-8'); -test(macro, '9', '-1', '8'); -test(macro, '-9', '-1', '-10'); -test(macro, '9', '3', '12'); -test(macro, '-9', '3', '-6'); -test(macro, '9', '-3', '6'); -test(macro, '-9', '-3', '-12'); -test(macro, '9', '7', '16'); -test(macro, '-9', '7', '-2'); -test(macro, '9', '-7', '2'); -test(macro, '-9', '-7', '-16'); -test(macro, '9', '9', '18'); -test(macro, '-9', '9', '0'); -test(macro, '9', '-9', '0'); -test(macro, '-9', '-9', '-18'); -test(macro, '9', '11', '20'); -test(macro, '-9', '11', '2'); -test(macro, '9', '-11', '-2'); -test(macro, '-9', '-11', '-20'); -test(macro, '9', '17', '26'); -test(macro, '-9', '17', '8'); -test(macro, '9', '-17', '-8'); -test(macro, '-9', '-17', '-26'); -test(macro, '9', '22', '31'); -test(macro, '-9', '22', '13'); -test(macro, '9', '-22', '-13'); -test(macro, '-9', '-22', '-31'); -test(macro, '9', '24', '33'); -test(macro, '-9', '24', '15'); -test(macro, '9', '-24', '-15'); -test(macro, '-9', '-24', '-33'); -test(macro, '9', '27', '36'); -test(macro, '-9', '27', '18'); -test(macro, '9', '-27', '-18'); -test(macro, '-9', '-27', '-36'); -test(macro, '9', '29', '38'); -test(macro, '-9', '29', '20'); -test(macro, '9', '-29', '-20'); -test(macro, '-9', '-29', '-38'); -test(macro, '9', '1234', '1243'); -test(macro, '-9', '1234', '1225'); -test(macro, '9', '-1234', '-1225'); -test(macro, '-9', '-1234', '-1243'); -test(macro, '9', '5678', '5687'); -test(macro, '-9', '5678', '5669'); -test(macro, '9', '-5678', '-5669'); -test(macro, '-9', '-5678', '-5687'); -test(macro, '9', '94906265', '94906274'); -test(macro, '-9', '94906265', '94906256'); -test(macro, '9', '-94906265', '-94906256'); -test(macro, '-9', '-94906265', '-94906274'); -test(macro, '9', '94906266', '94906275'); -test(macro, '-9', '94906266', '94906257'); -test(macro, '9', '-94906266', '-94906257'); -test(macro, '-9', '-94906266', '-94906275'); -test(macro, '9', '1073741824', '1073741833'); -test(macro, '-9', '1073741824', '1073741815'); -test(macro, '9', '-1073741824', '-1073741815'); -test(macro, '-9', '-1073741824', '-1073741833'); -test(macro, '9', '51676101935731', '51676101935740'); -test(macro, '-9', '51676101935731', '51676101935722'); -test(macro, '9', '-51676101935731', '-51676101935722'); -test(macro, '-9', '-51676101935731', '-51676101935740'); -test(macro, '9', '717897987691852588770249', '717897987691852588770258'); -test(macro, '-9', '717897987691852588770249', '717897987691852588770240'); -test(macro, '9', '-717897987691852588770249', '-717897987691852588770240'); -test(macro, '-9', '-717897987691852588770249', '-717897987691852588770258'); -test(macro, '11', '0', '11'); -test(macro, '-11', '0', '-11'); -test(macro, '11', '1', '12'); -test(macro, '-11', '1', '-10'); -test(macro, '11', '-1', '10'); -test(macro, '-11', '-1', '-12'); -test(macro, '11', '3', '14'); -test(macro, '-11', '3', '-8'); -test(macro, '11', '-3', '8'); -test(macro, '-11', '-3', '-14'); -test(macro, '11', '7', '18'); -test(macro, '-11', '7', '-4'); -test(macro, '11', '-7', '4'); -test(macro, '-11', '-7', '-18'); -test(macro, '11', '9', '20'); -test(macro, '-11', '9', '-2'); -test(macro, '11', '-9', '2'); -test(macro, '-11', '-9', '-20'); -test(macro, '11', '11', '22'); -test(macro, '-11', '11', '0'); -test(macro, '11', '-11', '0'); -test(macro, '-11', '-11', '-22'); -test(macro, '11', '17', '28'); -test(macro, '-11', '17', '6'); -test(macro, '11', '-17', '-6'); -test(macro, '-11', '-17', '-28'); -test(macro, '11', '22', '33'); -test(macro, '-11', '22', '11'); -test(macro, '11', '-22', '-11'); -test(macro, '-11', '-22', '-33'); -test(macro, '11', '24', '35'); -test(macro, '-11', '24', '13'); -test(macro, '11', '-24', '-13'); -test(macro, '-11', '-24', '-35'); -test(macro, '11', '27', '38'); -test(macro, '-11', '27', '16'); -test(macro, '11', '-27', '-16'); -test(macro, '-11', '-27', '-38'); -test(macro, '11', '29', '40'); -test(macro, '-11', '29', '18'); -test(macro, '11', '-29', '-18'); -test(macro, '-11', '-29', '-40'); -test(macro, '11', '1234', '1245'); -test(macro, '-11', '1234', '1223'); -test(macro, '11', '-1234', '-1223'); -test(macro, '-11', '-1234', '-1245'); -test(macro, '11', '5678', '5689'); -test(macro, '-11', '5678', '5667'); -test(macro, '11', '-5678', '-5667'); -test(macro, '-11', '-5678', '-5689'); -test(macro, '11', '94906265', '94906276'); -test(macro, '-11', '94906265', '94906254'); -test(macro, '11', '-94906265', '-94906254'); -test(macro, '-11', '-94906265', '-94906276'); -test(macro, '11', '94906266', '94906277'); -test(macro, '-11', '94906266', '94906255'); -test(macro, '11', '-94906266', '-94906255'); -test(macro, '-11', '-94906266', '-94906277'); -test(macro, '11', '1073741824', '1073741835'); -test(macro, '-11', '1073741824', '1073741813'); -test(macro, '11', '-1073741824', '-1073741813'); -test(macro, '-11', '-1073741824', '-1073741835'); -test(macro, '11', '51676101935731', '51676101935742'); -test(macro, '-11', '51676101935731', '51676101935720'); -test(macro, '11', '-51676101935731', '-51676101935720'); -test(macro, '-11', '-51676101935731', '-51676101935742'); -test(macro, '11', '717897987691852588770249', '717897987691852588770260'); -test(macro, '-11', '717897987691852588770249', '717897987691852588770238'); -test(macro, '11', '-717897987691852588770249', '-717897987691852588770238'); -test(macro, '-11', '-717897987691852588770249', '-717897987691852588770260'); -test(macro, '17', '0', '17'); -test(macro, '-17', '0', '-17'); -test(macro, '17', '1', '18'); -test(macro, '-17', '1', '-16'); -test(macro, '17', '-1', '16'); -test(macro, '-17', '-1', '-18'); -test(macro, '17', '3', '20'); -test(macro, '-17', '3', '-14'); -test(macro, '17', '-3', '14'); -test(macro, '-17', '-3', '-20'); -test(macro, '17', '7', '24'); -test(macro, '-17', '7', '-10'); -test(macro, '17', '-7', '10'); -test(macro, '-17', '-7', '-24'); -test(macro, '17', '9', '26'); -test(macro, '-17', '9', '-8'); -test(macro, '17', '-9', '8'); -test(macro, '-17', '-9', '-26'); -test(macro, '17', '11', '28'); -test(macro, '-17', '11', '-6'); -test(macro, '17', '-11', '6'); -test(macro, '-17', '-11', '-28'); -test(macro, '17', '17', '34'); -test(macro, '-17', '17', '0'); -test(macro, '17', '-17', '0'); -test(macro, '-17', '-17', '-34'); -test(macro, '17', '22', '39'); -test(macro, '-17', '22', '5'); -test(macro, '17', '-22', '-5'); -test(macro, '-17', '-22', '-39'); -test(macro, '17', '24', '41'); -test(macro, '-17', '24', '7'); -test(macro, '17', '-24', '-7'); -test(macro, '-17', '-24', '-41'); -test(macro, '17', '27', '44'); -test(macro, '-17', '27', '10'); -test(macro, '17', '-27', '-10'); -test(macro, '-17', '-27', '-44'); -test(macro, '17', '29', '46'); -test(macro, '-17', '29', '12'); -test(macro, '17', '-29', '-12'); -test(macro, '-17', '-29', '-46'); -test(macro, '17', '1234', '1251'); -test(macro, '-17', '1234', '1217'); -test(macro, '17', '-1234', '-1217'); -test(macro, '-17', '-1234', '-1251'); -test(macro, '17', '5678', '5695'); -test(macro, '-17', '5678', '5661'); -test(macro, '17', '-5678', '-5661'); -test(macro, '-17', '-5678', '-5695'); -test(macro, '17', '94906265', '94906282'); -test(macro, '-17', '94906265', '94906248'); -test(macro, '17', '-94906265', '-94906248'); -test(macro, '-17', '-94906265', '-94906282'); -test(macro, '17', '94906266', '94906283'); -test(macro, '-17', '94906266', '94906249'); -test(macro, '17', '-94906266', '-94906249'); -test(macro, '-17', '-94906266', '-94906283'); -test(macro, '17', '1073741824', '1073741841'); -test(macro, '-17', '1073741824', '1073741807'); -test(macro, '17', '-1073741824', '-1073741807'); -test(macro, '-17', '-1073741824', '-1073741841'); -test(macro, '17', '51676101935731', '51676101935748'); -test(macro, '-17', '51676101935731', '51676101935714'); -test(macro, '17', '-51676101935731', '-51676101935714'); -test(macro, '-17', '-51676101935731', '-51676101935748'); -test(macro, '17', '717897987691852588770249', '717897987691852588770266'); -test(macro, '-17', '717897987691852588770249', '717897987691852588770232'); -test(macro, '17', '-717897987691852588770249', '-717897987691852588770232'); -test(macro, '-17', '-717897987691852588770249', '-717897987691852588770266'); -test(macro, '22', '0', '22'); -test(macro, '-22', '0', '-22'); -test(macro, '22', '1', '23'); -test(macro, '-22', '1', '-21'); -test(macro, '22', '-1', '21'); -test(macro, '-22', '-1', '-23'); -test(macro, '22', '3', '25'); -test(macro, '-22', '3', '-19'); -test(macro, '22', '-3', '19'); -test(macro, '-22', '-3', '-25'); -test(macro, '22', '7', '29'); -test(macro, '-22', '7', '-15'); -test(macro, '22', '-7', '15'); -test(macro, '-22', '-7', '-29'); -test(macro, '22', '9', '31'); -test(macro, '-22', '9', '-13'); -test(macro, '22', '-9', '13'); -test(macro, '-22', '-9', '-31'); -test(macro, '22', '11', '33'); -test(macro, '-22', '11', '-11'); -test(macro, '22', '-11', '11'); -test(macro, '-22', '-11', '-33'); -test(macro, '22', '17', '39'); -test(macro, '-22', '17', '-5'); -test(macro, '22', '-17', '5'); -test(macro, '-22', '-17', '-39'); -test(macro, '22', '22', '44'); -test(macro, '-22', '22', '0'); -test(macro, '22', '-22', '0'); -test(macro, '-22', '-22', '-44'); -test(macro, '22', '24', '46'); -test(macro, '-22', '24', '2'); -test(macro, '22', '-24', '-2'); -test(macro, '-22', '-24', '-46'); -test(macro, '22', '27', '49'); -test(macro, '-22', '27', '5'); -test(macro, '22', '-27', '-5'); -test(macro, '-22', '-27', '-49'); -test(macro, '22', '29', '51'); -test(macro, '-22', '29', '7'); -test(macro, '22', '-29', '-7'); -test(macro, '-22', '-29', '-51'); -test(macro, '22', '1234', '1256'); -test(macro, '-22', '1234', '1212'); -test(macro, '22', '-1234', '-1212'); -test(macro, '-22', '-1234', '-1256'); -test(macro, '22', '5678', '5700'); -test(macro, '-22', '5678', '5656'); -test(macro, '22', '-5678', '-5656'); -test(macro, '-22', '-5678', '-5700'); -test(macro, '22', '94906265', '94906287'); -test(macro, '-22', '94906265', '94906243'); -test(macro, '22', '-94906265', '-94906243'); -test(macro, '-22', '-94906265', '-94906287'); -test(macro, '22', '94906266', '94906288'); -test(macro, '-22', '94906266', '94906244'); -test(macro, '22', '-94906266', '-94906244'); -test(macro, '-22', '-94906266', '-94906288'); -test(macro, '22', '1073741824', '1073741846'); -test(macro, '-22', '1073741824', '1073741802'); -test(macro, '22', '-1073741824', '-1073741802'); -test(macro, '-22', '-1073741824', '-1073741846'); -test(macro, '22', '51676101935731', '51676101935753'); -test(macro, '-22', '51676101935731', '51676101935709'); -test(macro, '22', '-51676101935731', '-51676101935709'); -test(macro, '-22', '-51676101935731', '-51676101935753'); -test(macro, '22', '717897987691852588770249', '717897987691852588770271'); -test(macro, '-22', '717897987691852588770249', '717897987691852588770227'); -test(macro, '22', '-717897987691852588770249', '-717897987691852588770227'); -test(macro, '-22', '-717897987691852588770249', '-717897987691852588770271'); -test(macro, '24', '0', '24'); -test(macro, '-24', '0', '-24'); -test(macro, '24', '1', '25'); -test(macro, '-24', '1', '-23'); -test(macro, '24', '-1', '23'); -test(macro, '-24', '-1', '-25'); -test(macro, '24', '3', '27'); -test(macro, '-24', '3', '-21'); -test(macro, '24', '-3', '21'); -test(macro, '-24', '-3', '-27'); -test(macro, '24', '7', '31'); -test(macro, '-24', '7', '-17'); -test(macro, '24', '-7', '17'); -test(macro, '-24', '-7', '-31'); -test(macro, '24', '9', '33'); -test(macro, '-24', '9', '-15'); -test(macro, '24', '-9', '15'); -test(macro, '-24', '-9', '-33'); -test(macro, '24', '11', '35'); -test(macro, '-24', '11', '-13'); -test(macro, '24', '-11', '13'); -test(macro, '-24', '-11', '-35'); -test(macro, '24', '17', '41'); -test(macro, '-24', '17', '-7'); -test(macro, '24', '-17', '7'); -test(macro, '-24', '-17', '-41'); -test(macro, '24', '22', '46'); -test(macro, '-24', '22', '-2'); -test(macro, '24', '-22', '2'); -test(macro, '-24', '-22', '-46'); -test(macro, '24', '24', '48'); -test(macro, '-24', '24', '0'); -test(macro, '24', '-24', '0'); -test(macro, '-24', '-24', '-48'); -test(macro, '24', '27', '51'); -test(macro, '-24', '27', '3'); -test(macro, '24', '-27', '-3'); -test(macro, '-24', '-27', '-51'); -test(macro, '24', '29', '53'); -test(macro, '-24', '29', '5'); -test(macro, '24', '-29', '-5'); -test(macro, '-24', '-29', '-53'); -test(macro, '24', '1234', '1258'); -test(macro, '-24', '1234', '1210'); -test(macro, '24', '-1234', '-1210'); -test(macro, '-24', '-1234', '-1258'); -test(macro, '24', '5678', '5702'); -test(macro, '-24', '5678', '5654'); -test(macro, '24', '-5678', '-5654'); -test(macro, '-24', '-5678', '-5702'); -test(macro, '24', '94906265', '94906289'); -test(macro, '-24', '94906265', '94906241'); -test(macro, '24', '-94906265', '-94906241'); -test(macro, '-24', '-94906265', '-94906289'); -test(macro, '24', '94906266', '94906290'); -test(macro, '-24', '94906266', '94906242'); -test(macro, '24', '-94906266', '-94906242'); -test(macro, '-24', '-94906266', '-94906290'); -test(macro, '24', '1073741824', '1073741848'); -test(macro, '-24', '1073741824', '1073741800'); -test(macro, '24', '-1073741824', '-1073741800'); -test(macro, '-24', '-1073741824', '-1073741848'); -test(macro, '24', '51676101935731', '51676101935755'); -test(macro, '-24', '51676101935731', '51676101935707'); -test(macro, '24', '-51676101935731', '-51676101935707'); -test(macro, '-24', '-51676101935731', '-51676101935755'); -test(macro, '24', '717897987691852588770249', '717897987691852588770273'); -test(macro, '-24', '717897987691852588770249', '717897987691852588770225'); -test(macro, '24', '-717897987691852588770249', '-717897987691852588770225'); -test(macro, '-24', '-717897987691852588770249', '-717897987691852588770273'); -test(macro, '27', '0', '27'); -test(macro, '-27', '0', '-27'); -test(macro, '27', '1', '28'); -test(macro, '-27', '1', '-26'); -test(macro, '27', '-1', '26'); -test(macro, '-27', '-1', '-28'); -test(macro, '27', '3', '30'); -test(macro, '-27', '3', '-24'); -test(macro, '27', '-3', '24'); -test(macro, '-27', '-3', '-30'); -test(macro, '27', '7', '34'); -test(macro, '-27', '7', '-20'); -test(macro, '27', '-7', '20'); -test(macro, '-27', '-7', '-34'); -test(macro, '27', '9', '36'); -test(macro, '-27', '9', '-18'); -test(macro, '27', '-9', '18'); -test(macro, '-27', '-9', '-36'); -test(macro, '27', '11', '38'); -test(macro, '-27', '11', '-16'); -test(macro, '27', '-11', '16'); -test(macro, '-27', '-11', '-38'); -test(macro, '27', '17', '44'); -test(macro, '-27', '17', '-10'); -test(macro, '27', '-17', '10'); -test(macro, '-27', '-17', '-44'); -test(macro, '27', '22', '49'); -test(macro, '-27', '22', '-5'); -test(macro, '27', '-22', '5'); -test(macro, '-27', '-22', '-49'); -test(macro, '27', '24', '51'); -test(macro, '-27', '24', '-3'); -test(macro, '27', '-24', '3'); -test(macro, '-27', '-24', '-51'); -test(macro, '27', '27', '54'); -test(macro, '-27', '27', '0'); -test(macro, '27', '-27', '0'); -test(macro, '-27', '-27', '-54'); -test(macro, '27', '29', '56'); -test(macro, '-27', '29', '2'); -test(macro, '27', '-29', '-2'); -test(macro, '-27', '-29', '-56'); -test(macro, '27', '1234', '1261'); -test(macro, '-27', '1234', '1207'); -test(macro, '27', '-1234', '-1207'); -test(macro, '-27', '-1234', '-1261'); -test(macro, '27', '5678', '5705'); -test(macro, '-27', '5678', '5651'); -test(macro, '27', '-5678', '-5651'); -test(macro, '-27', '-5678', '-5705'); -test(macro, '27', '94906265', '94906292'); -test(macro, '-27', '94906265', '94906238'); -test(macro, '27', '-94906265', '-94906238'); -test(macro, '-27', '-94906265', '-94906292'); -test(macro, '27', '94906266', '94906293'); -test(macro, '-27', '94906266', '94906239'); -test(macro, '27', '-94906266', '-94906239'); -test(macro, '-27', '-94906266', '-94906293'); -test(macro, '27', '1073741824', '1073741851'); -test(macro, '-27', '1073741824', '1073741797'); -test(macro, '27', '-1073741824', '-1073741797'); -test(macro, '-27', '-1073741824', '-1073741851'); -test(macro, '27', '51676101935731', '51676101935758'); -test(macro, '-27', '51676101935731', '51676101935704'); -test(macro, '27', '-51676101935731', '-51676101935704'); -test(macro, '-27', '-51676101935731', '-51676101935758'); -test(macro, '27', '717897987691852588770249', '717897987691852588770276'); -test(macro, '-27', '717897987691852588770249', '717897987691852588770222'); -test(macro, '27', '-717897987691852588770249', '-717897987691852588770222'); -test(macro, '-27', '-717897987691852588770249', '-717897987691852588770276'); -test(macro, '29', '0', '29'); -test(macro, '-29', '0', '-29'); -test(macro, '29', '1', '30'); -test(macro, '-29', '1', '-28'); -test(macro, '29', '-1', '28'); -test(macro, '-29', '-1', '-30'); -test(macro, '29', '3', '32'); -test(macro, '-29', '3', '-26'); -test(macro, '29', '-3', '26'); -test(macro, '-29', '-3', '-32'); -test(macro, '29', '7', '36'); -test(macro, '-29', '7', '-22'); -test(macro, '29', '-7', '22'); -test(macro, '-29', '-7', '-36'); -test(macro, '29', '9', '38'); -test(macro, '-29', '9', '-20'); -test(macro, '29', '-9', '20'); -test(macro, '-29', '-9', '-38'); -test(macro, '29', '11', '40'); -test(macro, '-29', '11', '-18'); -test(macro, '29', '-11', '18'); -test(macro, '-29', '-11', '-40'); -test(macro, '29', '17', '46'); -test(macro, '-29', '17', '-12'); -test(macro, '29', '-17', '12'); -test(macro, '-29', '-17', '-46'); -test(macro, '29', '22', '51'); -test(macro, '-29', '22', '-7'); -test(macro, '29', '-22', '7'); -test(macro, '-29', '-22', '-51'); -test(macro, '29', '24', '53'); -test(macro, '-29', '24', '-5'); -test(macro, '29', '-24', '5'); -test(macro, '-29', '-24', '-53'); -test(macro, '29', '27', '56'); -test(macro, '-29', '27', '-2'); -test(macro, '29', '-27', '2'); -test(macro, '-29', '-27', '-56'); -test(macro, '29', '29', '58'); -test(macro, '-29', '29', '0'); -test(macro, '29', '-29', '0'); -test(macro, '-29', '-29', '-58'); -test(macro, '29', '1234', '1263'); -test(macro, '-29', '1234', '1205'); -test(macro, '29', '-1234', '-1205'); -test(macro, '-29', '-1234', '-1263'); -test(macro, '29', '5678', '5707'); -test(macro, '-29', '5678', '5649'); -test(macro, '29', '-5678', '-5649'); -test(macro, '-29', '-5678', '-5707'); -test(macro, '29', '94906265', '94906294'); -test(macro, '-29', '94906265', '94906236'); -test(macro, '29', '-94906265', '-94906236'); -test(macro, '-29', '-94906265', '-94906294'); -test(macro, '29', '94906266', '94906295'); -test(macro, '-29', '94906266', '94906237'); -test(macro, '29', '-94906266', '-94906237'); -test(macro, '-29', '-94906266', '-94906295'); -test(macro, '29', '1073741824', '1073741853'); -test(macro, '-29', '1073741824', '1073741795'); -test(macro, '29', '-1073741824', '-1073741795'); -test(macro, '-29', '-1073741824', '-1073741853'); -test(macro, '29', '51676101935731', '51676101935760'); -test(macro, '-29', '51676101935731', '51676101935702'); -test(macro, '29', '-51676101935731', '-51676101935702'); -test(macro, '-29', '-51676101935731', '-51676101935760'); -test(macro, '29', '717897987691852588770249', '717897987691852588770278'); -test(macro, '-29', '717897987691852588770249', '717897987691852588770220'); -test(macro, '29', '-717897987691852588770249', '-717897987691852588770220'); -test(macro, '-29', '-717897987691852588770249', '-717897987691852588770278'); -test(macro, '1234', '0', '1234'); -test(macro, '-1234', '0', '-1234'); -test(macro, '1234', '1', '1235'); -test(macro, '-1234', '1', '-1233'); -test(macro, '1234', '-1', '1233'); -test(macro, '-1234', '-1', '-1235'); -test(macro, '1234', '3', '1237'); -test(macro, '-1234', '3', '-1231'); -test(macro, '1234', '-3', '1231'); -test(macro, '-1234', '-3', '-1237'); -test(macro, '1234', '7', '1241'); -test(macro, '-1234', '7', '-1227'); -test(macro, '1234', '-7', '1227'); -test(macro, '-1234', '-7', '-1241'); -test(macro, '1234', '9', '1243'); -test(macro, '-1234', '9', '-1225'); -test(macro, '1234', '-9', '1225'); -test(macro, '-1234', '-9', '-1243'); -test(macro, '1234', '11', '1245'); -test(macro, '-1234', '11', '-1223'); -test(macro, '1234', '-11', '1223'); -test(macro, '-1234', '-11', '-1245'); -test(macro, '1234', '17', '1251'); -test(macro, '-1234', '17', '-1217'); -test(macro, '1234', '-17', '1217'); -test(macro, '-1234', '-17', '-1251'); -test(macro, '1234', '22', '1256'); -test(macro, '-1234', '22', '-1212'); -test(macro, '1234', '-22', '1212'); -test(macro, '-1234', '-22', '-1256'); -test(macro, '1234', '24', '1258'); -test(macro, '-1234', '24', '-1210'); -test(macro, '1234', '-24', '1210'); -test(macro, '-1234', '-24', '-1258'); -test(macro, '1234', '27', '1261'); -test(macro, '-1234', '27', '-1207'); -test(macro, '1234', '-27', '1207'); -test(macro, '-1234', '-27', '-1261'); -test(macro, '1234', '29', '1263'); -test(macro, '-1234', '29', '-1205'); -test(macro, '1234', '-29', '1205'); -test(macro, '-1234', '-29', '-1263'); -test(macro, '1234', '1234', '2468'); -test(macro, '-1234', '1234', '0'); -test(macro, '1234', '-1234', '0'); -test(macro, '-1234', '-1234', '-2468'); -test(macro, '1234', '5678', '6912'); -test(macro, '-1234', '5678', '4444'); -test(macro, '1234', '-5678', '-4444'); -test(macro, '-1234', '-5678', '-6912'); -test(macro, '1234', '94906265', '94907499'); -test(macro, '-1234', '94906265', '94905031'); -test(macro, '1234', '-94906265', '-94905031'); -test(macro, '-1234', '-94906265', '-94907499'); -test(macro, '1234', '94906266', '94907500'); -test(macro, '-1234', '94906266', '94905032'); -test(macro, '1234', '-94906266', '-94905032'); -test(macro, '-1234', '-94906266', '-94907500'); -test(macro, '1234', '1073741824', '1073743058'); -test(macro, '-1234', '1073741824', '1073740590'); -test(macro, '1234', '-1073741824', '-1073740590'); -test(macro, '-1234', '-1073741824', '-1073743058'); -test(macro, '1234', '51676101935731', '51676101936965'); -test(macro, '-1234', '51676101935731', '51676101934497'); -test(macro, '1234', '-51676101935731', '-51676101934497'); -test(macro, '-1234', '-51676101935731', '-51676101936965'); -test(macro, '1234', '717897987691852588770249', '717897987691852588771483'); -test(macro, '-1234', '717897987691852588770249', '717897987691852588769015'); -test(macro, '1234', '-717897987691852588770249', '-717897987691852588769015'); -test(macro, '-1234', '-717897987691852588770249', '-717897987691852588771483'); -test(macro, '5678', '0', '5678'); -test(macro, '-5678', '0', '-5678'); -test(macro, '5678', '1', '5679'); -test(macro, '-5678', '1', '-5677'); -test(macro, '5678', '-1', '5677'); -test(macro, '-5678', '-1', '-5679'); -test(macro, '5678', '3', '5681'); -test(macro, '-5678', '3', '-5675'); -test(macro, '5678', '-3', '5675'); -test(macro, '-5678', '-3', '-5681'); -test(macro, '5678', '7', '5685'); -test(macro, '-5678', '7', '-5671'); -test(macro, '5678', '-7', '5671'); -test(macro, '-5678', '-7', '-5685'); -test(macro, '5678', '9', '5687'); -test(macro, '-5678', '9', '-5669'); -test(macro, '5678', '-9', '5669'); -test(macro, '-5678', '-9', '-5687'); -test(macro, '5678', '11', '5689'); -test(macro, '-5678', '11', '-5667'); -test(macro, '5678', '-11', '5667'); -test(macro, '-5678', '-11', '-5689'); -test(macro, '5678', '17', '5695'); -test(macro, '-5678', '17', '-5661'); -test(macro, '5678', '-17', '5661'); -test(macro, '-5678', '-17', '-5695'); -test(macro, '5678', '22', '5700'); -test(macro, '-5678', '22', '-5656'); -test(macro, '5678', '-22', '5656'); -test(macro, '-5678', '-22', '-5700'); -test(macro, '5678', '24', '5702'); -test(macro, '-5678', '24', '-5654'); -test(macro, '5678', '-24', '5654'); -test(macro, '-5678', '-24', '-5702'); -test(macro, '5678', '27', '5705'); -test(macro, '-5678', '27', '-5651'); -test(macro, '5678', '-27', '5651'); -test(macro, '-5678', '-27', '-5705'); -test(macro, '5678', '29', '5707'); -test(macro, '-5678', '29', '-5649'); -test(macro, '5678', '-29', '5649'); -test(macro, '-5678', '-29', '-5707'); -test(macro, '5678', '1234', '6912'); -test(macro, '-5678', '1234', '-4444'); -test(macro, '5678', '-1234', '4444'); -test(macro, '-5678', '-1234', '-6912'); -test(macro, '5678', '5678', '11356'); -test(macro, '-5678', '5678', '0'); -test(macro, '5678', '-5678', '0'); -test(macro, '-5678', '-5678', '-11356'); -test(macro, '5678', '94906265', '94911943'); -test(macro, '-5678', '94906265', '94900587'); -test(macro, '5678', '-94906265', '-94900587'); -test(macro, '-5678', '-94906265', '-94911943'); -test(macro, '5678', '94906266', '94911944'); -test(macro, '-5678', '94906266', '94900588'); -test(macro, '5678', '-94906266', '-94900588'); -test(macro, '-5678', '-94906266', '-94911944'); -test(macro, '5678', '1073741824', '1073747502'); -test(macro, '-5678', '1073741824', '1073736146'); -test(macro, '5678', '-1073741824', '-1073736146'); -test(macro, '-5678', '-1073741824', '-1073747502'); -test(macro, '5678', '51676101935731', '51676101941409'); -test(macro, '-5678', '51676101935731', '51676101930053'); -test(macro, '5678', '-51676101935731', '-51676101930053'); -test(macro, '-5678', '-51676101935731', '-51676101941409'); -test(macro, '5678', '717897987691852588770249', '717897987691852588775927'); -test(macro, '-5678', '717897987691852588770249', '717897987691852588764571'); -test(macro, '5678', '-717897987691852588770249', '-717897987691852588764571'); -test(macro, '-5678', '-717897987691852588770249', '-717897987691852588775927'); -test(macro, '94906265', '0', '94906265'); -test(macro, '-94906265', '0', '-94906265'); -test(macro, '94906265', '1', '94906266'); -test(macro, '-94906265', '1', '-94906264'); -test(macro, '94906265', '-1', '94906264'); -test(macro, '-94906265', '-1', '-94906266'); -test(macro, '94906265', '3', '94906268'); -test(macro, '-94906265', '3', '-94906262'); -test(macro, '94906265', '-3', '94906262'); -test(macro, '-94906265', '-3', '-94906268'); -test(macro, '94906265', '7', '94906272'); -test(macro, '-94906265', '7', '-94906258'); -test(macro, '94906265', '-7', '94906258'); -test(macro, '-94906265', '-7', '-94906272'); -test(macro, '94906265', '9', '94906274'); -test(macro, '-94906265', '9', '-94906256'); -test(macro, '94906265', '-9', '94906256'); -test(macro, '-94906265', '-9', '-94906274'); -test(macro, '94906265', '11', '94906276'); -test(macro, '-94906265', '11', '-94906254'); -test(macro, '94906265', '-11', '94906254'); -test(macro, '-94906265', '-11', '-94906276'); -test(macro, '94906265', '17', '94906282'); -test(macro, '-94906265', '17', '-94906248'); -test(macro, '94906265', '-17', '94906248'); -test(macro, '-94906265', '-17', '-94906282'); -test(macro, '94906265', '22', '94906287'); -test(macro, '-94906265', '22', '-94906243'); -test(macro, '94906265', '-22', '94906243'); -test(macro, '-94906265', '-22', '-94906287'); -test(macro, '94906265', '24', '94906289'); -test(macro, '-94906265', '24', '-94906241'); -test(macro, '94906265', '-24', '94906241'); -test(macro, '-94906265', '-24', '-94906289'); -test(macro, '94906265', '27', '94906292'); -test(macro, '-94906265', '27', '-94906238'); -test(macro, '94906265', '-27', '94906238'); -test(macro, '-94906265', '-27', '-94906292'); -test(macro, '94906265', '29', '94906294'); -test(macro, '-94906265', '29', '-94906236'); -test(macro, '94906265', '-29', '94906236'); -test(macro, '-94906265', '-29', '-94906294'); -test(macro, '94906265', '1234', '94907499'); -test(macro, '-94906265', '1234', '-94905031'); -test(macro, '94906265', '-1234', '94905031'); -test(macro, '-94906265', '-1234', '-94907499'); -test(macro, '94906265', '5678', '94911943'); -test(macro, '-94906265', '5678', '-94900587'); -test(macro, '94906265', '-5678', '94900587'); -test(macro, '-94906265', '-5678', '-94911943'); -test(macro, '94906265', '94906265', '189812530'); -test(macro, '-94906265', '94906265', '0'); -test(macro, '94906265', '-94906265', '0'); -test(macro, '-94906265', '-94906265', '-189812530'); -test(macro, '94906265', '94906266', '189812531'); -test(macro, '-94906265', '94906266', '1'); -test(macro, '94906265', '-94906266', '-1'); -test(macro, '-94906265', '-94906266', '-189812531'); -test(macro, '94906265', '1073741824', '1168648089'); -test(macro, '-94906265', '1073741824', '978835559'); -test(macro, '94906265', '-1073741824', '-978835559'); -test(macro, '-94906265', '-1073741824', '-1168648089'); -test(macro, '94906265', '51676101935731', '51676196841996'); -test(macro, '-94906265', '51676101935731', '51676007029466'); -test(macro, '94906265', '-51676101935731', '-51676007029466'); -test(macro, '-94906265', '-51676101935731', '-51676196841996'); -test(macro, '94906265', '717897987691852588770249', '717897987691852683676514'); -test( - macro, - '-94906265', - '717897987691852588770249', - '717897987691852493863984', -); -test( - macro, - '94906265', - '-717897987691852588770249', - '-717897987691852493863984', -); -test( - macro, - '-94906265', - '-717897987691852588770249', - '-717897987691852683676514', -); -test(macro, '94906266', '0', '94906266'); -test(macro, '-94906266', '0', '-94906266'); -test(macro, '94906266', '1', '94906267'); -test(macro, '-94906266', '1', '-94906265'); -test(macro, '94906266', '-1', '94906265'); -test(macro, '-94906266', '-1', '-94906267'); -test(macro, '94906266', '3', '94906269'); -test(macro, '-94906266', '3', '-94906263'); -test(macro, '94906266', '-3', '94906263'); -test(macro, '-94906266', '-3', '-94906269'); -test(macro, '94906266', '7', '94906273'); -test(macro, '-94906266', '7', '-94906259'); -test(macro, '94906266', '-7', '94906259'); -test(macro, '-94906266', '-7', '-94906273'); -test(macro, '94906266', '9', '94906275'); -test(macro, '-94906266', '9', '-94906257'); -test(macro, '94906266', '-9', '94906257'); -test(macro, '-94906266', '-9', '-94906275'); -test(macro, '94906266', '11', '94906277'); -test(macro, '-94906266', '11', '-94906255'); -test(macro, '94906266', '-11', '94906255'); -test(macro, '-94906266', '-11', '-94906277'); -test(macro, '94906266', '17', '94906283'); -test(macro, '-94906266', '17', '-94906249'); -test(macro, '94906266', '-17', '94906249'); -test(macro, '-94906266', '-17', '-94906283'); -test(macro, '94906266', '22', '94906288'); -test(macro, '-94906266', '22', '-94906244'); -test(macro, '94906266', '-22', '94906244'); -test(macro, '-94906266', '-22', '-94906288'); -test(macro, '94906266', '24', '94906290'); -test(macro, '-94906266', '24', '-94906242'); -test(macro, '94906266', '-24', '94906242'); -test(macro, '-94906266', '-24', '-94906290'); -test(macro, '94906266', '27', '94906293'); -test(macro, '-94906266', '27', '-94906239'); -test(macro, '94906266', '-27', '94906239'); -test(macro, '-94906266', '-27', '-94906293'); -test(macro, '94906266', '29', '94906295'); -test(macro, '-94906266', '29', '-94906237'); -test(macro, '94906266', '-29', '94906237'); -test(macro, '-94906266', '-29', '-94906295'); -test(macro, '94906266', '1234', '94907500'); -test(macro, '-94906266', '1234', '-94905032'); -test(macro, '94906266', '-1234', '94905032'); -test(macro, '-94906266', '-1234', '-94907500'); -test(macro, '94906266', '5678', '94911944'); -test(macro, '-94906266', '5678', '-94900588'); -test(macro, '94906266', '-5678', '94900588'); -test(macro, '-94906266', '-5678', '-94911944'); -test(macro, '94906266', '94906265', '189812531'); -test(macro, '-94906266', '94906265', '-1'); -test(macro, '94906266', '-94906265', '1'); -test(macro, '-94906266', '-94906265', '-189812531'); -test(macro, '94906266', '94906266', '189812532'); -test(macro, '-94906266', '94906266', '0'); -test(macro, '94906266', '-94906266', '0'); -test(macro, '-94906266', '-94906266', '-189812532'); -test(macro, '94906266', '1073741824', '1168648090'); -test(macro, '-94906266', '1073741824', '978835558'); -test(macro, '94906266', '-1073741824', '-978835558'); -test(macro, '-94906266', '-1073741824', '-1168648090'); -test(macro, '94906266', '51676101935731', '51676196841997'); -test(macro, '-94906266', '51676101935731', '51676007029465'); -test(macro, '94906266', '-51676101935731', '-51676007029465'); -test(macro, '-94906266', '-51676101935731', '-51676196841997'); -test(macro, '94906266', '717897987691852588770249', '717897987691852683676515'); -test( - macro, - '-94906266', - '717897987691852588770249', - '717897987691852493863983', -); -test( - macro, - '94906266', - '-717897987691852588770249', - '-717897987691852493863983', -); -test( - macro, - '-94906266', - '-717897987691852588770249', - '-717897987691852683676515', -); -test(macro, '1073741824', '0', '1073741824'); -test(macro, '-1073741824', '0', '-1073741824'); -test(macro, '1073741824', '1', '1073741825'); -test(macro, '-1073741824', '1', '-1073741823'); -test(macro, '1073741824', '-1', '1073741823'); -test(macro, '-1073741824', '-1', '-1073741825'); -test(macro, '1073741824', '3', '1073741827'); -test(macro, '-1073741824', '3', '-1073741821'); -test(macro, '1073741824', '-3', '1073741821'); -test(macro, '-1073741824', '-3', '-1073741827'); -test(macro, '1073741824', '7', '1073741831'); -test(macro, '-1073741824', '7', '-1073741817'); -test(macro, '1073741824', '-7', '1073741817'); -test(macro, '-1073741824', '-7', '-1073741831'); -test(macro, '1073741824', '9', '1073741833'); -test(macro, '-1073741824', '9', '-1073741815'); -test(macro, '1073741824', '-9', '1073741815'); -test(macro, '-1073741824', '-9', '-1073741833'); -test(macro, '1073741824', '11', '1073741835'); -test(macro, '-1073741824', '11', '-1073741813'); -test(macro, '1073741824', '-11', '1073741813'); -test(macro, '-1073741824', '-11', '-1073741835'); -test(macro, '1073741824', '17', '1073741841'); -test(macro, '-1073741824', '17', '-1073741807'); -test(macro, '1073741824', '-17', '1073741807'); -test(macro, '-1073741824', '-17', '-1073741841'); -test(macro, '1073741824', '22', '1073741846'); -test(macro, '-1073741824', '22', '-1073741802'); -test(macro, '1073741824', '-22', '1073741802'); -test(macro, '-1073741824', '-22', '-1073741846'); -test(macro, '1073741824', '24', '1073741848'); -test(macro, '-1073741824', '24', '-1073741800'); -test(macro, '1073741824', '-24', '1073741800'); -test(macro, '-1073741824', '-24', '-1073741848'); -test(macro, '1073741824', '27', '1073741851'); -test(macro, '-1073741824', '27', '-1073741797'); -test(macro, '1073741824', '-27', '1073741797'); -test(macro, '-1073741824', '-27', '-1073741851'); -test(macro, '1073741824', '29', '1073741853'); -test(macro, '-1073741824', '29', '-1073741795'); -test(macro, '1073741824', '-29', '1073741795'); -test(macro, '-1073741824', '-29', '-1073741853'); -test(macro, '1073741824', '1234', '1073743058'); -test(macro, '-1073741824', '1234', '-1073740590'); -test(macro, '1073741824', '-1234', '1073740590'); -test(macro, '-1073741824', '-1234', '-1073743058'); -test(macro, '1073741824', '5678', '1073747502'); -test(macro, '-1073741824', '5678', '-1073736146'); -test(macro, '1073741824', '-5678', '1073736146'); -test(macro, '-1073741824', '-5678', '-1073747502'); -test(macro, '1073741824', '94906265', '1168648089'); -test(macro, '-1073741824', '94906265', '-978835559'); -test(macro, '1073741824', '-94906265', '978835559'); -test(macro, '-1073741824', '-94906265', '-1168648089'); -test(macro, '1073741824', '94906266', '1168648090'); -test(macro, '-1073741824', '94906266', '-978835558'); -test(macro, '1073741824', '-94906266', '978835558'); -test(macro, '-1073741824', '-94906266', '-1168648090'); -test(macro, '1073741824', '1073741824', '2147483648'); -test(macro, '-1073741824', '1073741824', '0'); -test(macro, '1073741824', '-1073741824', '0'); -test(macro, '-1073741824', '-1073741824', '-2147483648'); -test(macro, '1073741824', '51676101935731', '51677175677555'); -test(macro, '-1073741824', '51676101935731', '51675028193907'); -test(macro, '1073741824', '-51676101935731', '-51675028193907'); -test(macro, '-1073741824', '-51676101935731', '-51677175677555'); -test( - macro, - '1073741824', - '717897987691852588770249', - '717897987691853662512073', -); -test( - macro, - '-1073741824', - '717897987691852588770249', - '717897987691851515028425', -); -test( - macro, - '1073741824', - '-717897987691852588770249', - '-717897987691851515028425', -); -test( - macro, - '-1073741824', - '-717897987691852588770249', - '-717897987691853662512073', -); -test(macro, '51676101935731', '0', '51676101935731'); -test(macro, '-51676101935731', '0', '-51676101935731'); -test(macro, '51676101935731', '1', '51676101935732'); -test(macro, '-51676101935731', '1', '-51676101935730'); -test(macro, '51676101935731', '-1', '51676101935730'); -test(macro, '-51676101935731', '-1', '-51676101935732'); -test(macro, '51676101935731', '3', '51676101935734'); -test(macro, '-51676101935731', '3', '-51676101935728'); -test(macro, '51676101935731', '-3', '51676101935728'); -test(macro, '-51676101935731', '-3', '-51676101935734'); -test(macro, '51676101935731', '7', '51676101935738'); -test(macro, '-51676101935731', '7', '-51676101935724'); -test(macro, '51676101935731', '-7', '51676101935724'); -test(macro, '-51676101935731', '-7', '-51676101935738'); -test(macro, '51676101935731', '9', '51676101935740'); -test(macro, '-51676101935731', '9', '-51676101935722'); -test(macro, '51676101935731', '-9', '51676101935722'); -test(macro, '-51676101935731', '-9', '-51676101935740'); -test(macro, '51676101935731', '11', '51676101935742'); -test(macro, '-51676101935731', '11', '-51676101935720'); -test(macro, '51676101935731', '-11', '51676101935720'); -test(macro, '-51676101935731', '-11', '-51676101935742'); -test(macro, '51676101935731', '17', '51676101935748'); -test(macro, '-51676101935731', '17', '-51676101935714'); -test(macro, '51676101935731', '-17', '51676101935714'); -test(macro, '-51676101935731', '-17', '-51676101935748'); -test(macro, '51676101935731', '22', '51676101935753'); -test(macro, '-51676101935731', '22', '-51676101935709'); -test(macro, '51676101935731', '-22', '51676101935709'); -test(macro, '-51676101935731', '-22', '-51676101935753'); -test(macro, '51676101935731', '24', '51676101935755'); -test(macro, '-51676101935731', '24', '-51676101935707'); -test(macro, '51676101935731', '-24', '51676101935707'); -test(macro, '-51676101935731', '-24', '-51676101935755'); -test(macro, '51676101935731', '27', '51676101935758'); -test(macro, '-51676101935731', '27', '-51676101935704'); -test(macro, '51676101935731', '-27', '51676101935704'); -test(macro, '-51676101935731', '-27', '-51676101935758'); -test(macro, '51676101935731', '29', '51676101935760'); -test(macro, '-51676101935731', '29', '-51676101935702'); -test(macro, '51676101935731', '-29', '51676101935702'); -test(macro, '-51676101935731', '-29', '-51676101935760'); -test(macro, '51676101935731', '1234', '51676101936965'); -test(macro, '-51676101935731', '1234', '-51676101934497'); -test(macro, '51676101935731', '-1234', '51676101934497'); -test(macro, '-51676101935731', '-1234', '-51676101936965'); -test(macro, '51676101935731', '5678', '51676101941409'); -test(macro, '-51676101935731', '5678', '-51676101930053'); -test(macro, '51676101935731', '-5678', '51676101930053'); -test(macro, '-51676101935731', '-5678', '-51676101941409'); -test(macro, '51676101935731', '94906265', '51676196841996'); -test(macro, '-51676101935731', '94906265', '-51676007029466'); -test(macro, '51676101935731', '-94906265', '51676007029466'); -test(macro, '-51676101935731', '-94906265', '-51676196841996'); -test(macro, '51676101935731', '94906266', '51676196841997'); -test(macro, '-51676101935731', '94906266', '-51676007029465'); -test(macro, '51676101935731', '-94906266', '51676007029465'); -test(macro, '-51676101935731', '-94906266', '-51676196841997'); -test(macro, '51676101935731', '1073741824', '51677175677555'); -test(macro, '-51676101935731', '1073741824', '-51675028193907'); -test(macro, '51676101935731', '-1073741824', '51675028193907'); -test(macro, '-51676101935731', '-1073741824', '-51677175677555'); -test(macro, '51676101935731', '51676101935731', '103352203871462'); -test(macro, '-51676101935731', '51676101935731', '0'); -test(macro, '51676101935731', '-51676101935731', '0'); -test(macro, '-51676101935731', '-51676101935731', '-103352203871462'); -test( - macro, - '51676101935731', - '717897987691852588770249', - '717897987743528690705980', -); -test( - macro, - '-51676101935731', - '717897987691852588770249', - '717897987640176486834518', -); -test( - macro, - '51676101935731', - '-717897987691852588770249', - '-717897987640176486834518', -); -test( - macro, - '-51676101935731', - '-717897987691852588770249', - '-717897987743528690705980', -); -test(macro, '717897987691852588770249', '0', '717897987691852588770249'); -test(macro, '-717897987691852588770249', '0', '-717897987691852588770249'); -test(macro, '717897987691852588770249', '1', '717897987691852588770250'); -test(macro, '-717897987691852588770249', '1', '-717897987691852588770248'); -test(macro, '717897987691852588770249', '-1', '717897987691852588770248'); -test(macro, '-717897987691852588770249', '-1', '-717897987691852588770250'); -test(macro, '717897987691852588770249', '3', '717897987691852588770252'); -test(macro, '-717897987691852588770249', '3', '-717897987691852588770246'); -test(macro, '717897987691852588770249', '-3', '717897987691852588770246'); -test(macro, '-717897987691852588770249', '-3', '-717897987691852588770252'); -test(macro, '717897987691852588770249', '7', '717897987691852588770256'); -test(macro, '-717897987691852588770249', '7', '-717897987691852588770242'); -test(macro, '717897987691852588770249', '-7', '717897987691852588770242'); -test(macro, '-717897987691852588770249', '-7', '-717897987691852588770256'); -test(macro, '717897987691852588770249', '9', '717897987691852588770258'); -test(macro, '-717897987691852588770249', '9', '-717897987691852588770240'); -test(macro, '717897987691852588770249', '-9', '717897987691852588770240'); -test(macro, '-717897987691852588770249', '-9', '-717897987691852588770258'); -test(macro, '717897987691852588770249', '11', '717897987691852588770260'); -test(macro, '-717897987691852588770249', '11', '-717897987691852588770238'); -test(macro, '717897987691852588770249', '-11', '717897987691852588770238'); -test(macro, '-717897987691852588770249', '-11', '-717897987691852588770260'); -test(macro, '717897987691852588770249', '17', '717897987691852588770266'); -test(macro, '-717897987691852588770249', '17', '-717897987691852588770232'); -test(macro, '717897987691852588770249', '-17', '717897987691852588770232'); -test(macro, '-717897987691852588770249', '-17', '-717897987691852588770266'); -test(macro, '717897987691852588770249', '22', '717897987691852588770271'); -test(macro, '-717897987691852588770249', '22', '-717897987691852588770227'); -test(macro, '717897987691852588770249', '-22', '717897987691852588770227'); -test(macro, '-717897987691852588770249', '-22', '-717897987691852588770271'); -test(macro, '717897987691852588770249', '24', '717897987691852588770273'); -test(macro, '-717897987691852588770249', '24', '-717897987691852588770225'); -test(macro, '717897987691852588770249', '-24', '717897987691852588770225'); -test(macro, '-717897987691852588770249', '-24', '-717897987691852588770273'); -test(macro, '717897987691852588770249', '27', '717897987691852588770276'); -test(macro, '-717897987691852588770249', '27', '-717897987691852588770222'); -test(macro, '717897987691852588770249', '-27', '717897987691852588770222'); -test(macro, '-717897987691852588770249', '-27', '-717897987691852588770276'); -test(macro, '717897987691852588770249', '29', '717897987691852588770278'); -test(macro, '-717897987691852588770249', '29', '-717897987691852588770220'); -test(macro, '717897987691852588770249', '-29', '717897987691852588770220'); -test(macro, '-717897987691852588770249', '-29', '-717897987691852588770278'); -test(macro, '717897987691852588770249', '1234', '717897987691852588771483'); -test(macro, '-717897987691852588770249', '1234', '-717897987691852588769015'); -test(macro, '717897987691852588770249', '-1234', '717897987691852588769015'); -test(macro, '-717897987691852588770249', '-1234', '-717897987691852588771483'); -test(macro, '717897987691852588770249', '5678', '717897987691852588775927'); -test(macro, '-717897987691852588770249', '5678', '-717897987691852588764571'); -test(macro, '717897987691852588770249', '-5678', '717897987691852588764571'); -test(macro, '-717897987691852588770249', '-5678', '-717897987691852588775927'); -test(macro, '717897987691852588770249', '94906265', '717897987691852683676514'); -test( - macro, - '-717897987691852588770249', - '94906265', - '-717897987691852493863984', -); -test( - macro, - '717897987691852588770249', - '-94906265', - '717897987691852493863984', -); -test( - macro, - '-717897987691852588770249', - '-94906265', - '-717897987691852683676514', -); -test(macro, '717897987691852588770249', '94906266', '717897987691852683676515'); -test( - macro, - '-717897987691852588770249', - '94906266', - '-717897987691852493863983', -); -test( - macro, - '717897987691852588770249', - '-94906266', - '717897987691852493863983', -); -test( - macro, - '-717897987691852588770249', - '-94906266', - '-717897987691852683676515', -); -test( - macro, - '717897987691852588770249', - '1073741824', - '717897987691853662512073', -); -test( - macro, - '-717897987691852588770249', - '1073741824', - '-717897987691851515028425', -); -test( - macro, - '717897987691852588770249', - '-1073741824', - '717897987691851515028425', -); -test( - macro, - '-717897987691852588770249', - '-1073741824', - '-717897987691853662512073', -); -test( - macro, - '717897987691852588770249', - '51676101935731', - '717897987743528690705980', -); -test( - macro, - '-717897987691852588770249', - '51676101935731', - '-717897987640176486834518', -); -test( - macro, - '717897987691852588770249', - '-51676101935731', - '717897987640176486834518', -); -test( - macro, - '-717897987691852588770249', - '-51676101935731', - '-717897987743528690705980', -); -test( - macro, - '717897987691852588770249', - '717897987691852588770249', - '1435795975383705177540498', -); -test(macro, '-717897987691852588770249', '717897987691852588770249', '0'); -test(macro, '717897987691852588770249', '-717897987691852588770249', '0'); -test( - macro, - '-717897987691852588770249', - '-717897987691852588770249', - '-1435795975383705177540498', -); diff --git a/test/src/integer/arithmetic/iaddn.js b/test/src/integer/arithmetic/iaddn.js deleted file mode 100644 index 7058a76..0000000 --- a/test/src/integer/arithmetic/iaddn.js +++ /dev/null @@ -1,1214 +0,0 @@ -import test from 'ava'; -import {parse, stringify, iaddn} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const c = iaddn(a, B); - t.is(stringify(a), C); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `iaddn(${fmt(A)},${B}) = ${fmt(C)}`; - -test(macro, '0', 0, '0'); -test(macro, '0', 1, '1'); -test(macro, '0', -1, '-1'); -test(macro, '0', 3, '3'); -test(macro, '0', -3, '-3'); -test(macro, '0', 7, '7'); -test(macro, '0', -7, '-7'); -test(macro, '0', 9, '9'); -test(macro, '0', -9, '-9'); -test(macro, '0', 11, '11'); -test(macro, '0', -11, '-11'); -test(macro, '0', 17, '17'); -test(macro, '0', -17, '-17'); -test(macro, '0', 22, '22'); -test(macro, '0', -22, '-22'); -test(macro, '0', 24, '24'); -test(macro, '0', -24, '-24'); -test(macro, '0', 27, '27'); -test(macro, '0', -27, '-27'); -test(macro, '0', 29, '29'); -test(macro, '0', -29, '-29'); -test(macro, '0', 1234, '1234'); -test(macro, '0', -1234, '-1234'); -test(macro, '0', 5678, '5678'); -test(macro, '0', -5678, '-5678'); -test(macro, '0', 94906265, '94906265'); -test(macro, '0', -94906265, '-94906265'); -test(macro, '0', 94906266, '94906266'); -test(macro, '0', -94906266, '-94906266'); -test(macro, '0', 1073741824, '1073741824'); -test(macro, '0', -1073741824, '-1073741824'); -test(macro, '0', 51676101935731, '51676101935731'); -test(macro, '0', -51676101935731, '-51676101935731'); -test(macro, '1', 0, '1'); -test(macro, '-1', 0, '-1'); -test(macro, '1', 1, '2'); -test(macro, '-1', 1, '0'); -test(macro, '1', -1, '0'); -test(macro, '-1', -1, '-2'); -test(macro, '1', 3, '4'); -test(macro, '-1', 3, '2'); -test(macro, '1', -3, '-2'); -test(macro, '-1', -3, '-4'); -test(macro, '1', 7, '8'); -test(macro, '-1', 7, '6'); -test(macro, '1', -7, '-6'); -test(macro, '-1', -7, '-8'); -test(macro, '1', 9, '10'); -test(macro, '-1', 9, '8'); -test(macro, '1', -9, '-8'); -test(macro, '-1', -9, '-10'); -test(macro, '1', 11, '12'); -test(macro, '-1', 11, '10'); -test(macro, '1', -11, '-10'); -test(macro, '-1', -11, '-12'); -test(macro, '1', 17, '18'); -test(macro, '-1', 17, '16'); -test(macro, '1', -17, '-16'); -test(macro, '-1', -17, '-18'); -test(macro, '1', 22, '23'); -test(macro, '-1', 22, '21'); -test(macro, '1', -22, '-21'); -test(macro, '-1', -22, '-23'); -test(macro, '1', 24, '25'); -test(macro, '-1', 24, '23'); -test(macro, '1', -24, '-23'); -test(macro, '-1', -24, '-25'); -test(macro, '1', 27, '28'); -test(macro, '-1', 27, '26'); -test(macro, '1', -27, '-26'); -test(macro, '-1', -27, '-28'); -test(macro, '1', 29, '30'); -test(macro, '-1', 29, '28'); -test(macro, '1', -29, '-28'); -test(macro, '-1', -29, '-30'); -test(macro, '1', 1234, '1235'); -test(macro, '-1', 1234, '1233'); -test(macro, '1', -1234, '-1233'); -test(macro, '-1', -1234, '-1235'); -test(macro, '1', 5678, '5679'); -test(macro, '-1', 5678, '5677'); -test(macro, '1', -5678, '-5677'); -test(macro, '-1', -5678, '-5679'); -test(macro, '1', 94906265, '94906266'); -test(macro, '-1', 94906265, '94906264'); -test(macro, '1', -94906265, '-94906264'); -test(macro, '-1', -94906265, '-94906266'); -test(macro, '1', 94906266, '94906267'); -test(macro, '-1', 94906266, '94906265'); -test(macro, '1', -94906266, '-94906265'); -test(macro, '-1', -94906266, '-94906267'); -test(macro, '1', 1073741824, '1073741825'); -test(macro, '-1', 1073741824, '1073741823'); -test(macro, '1', -1073741824, '-1073741823'); -test(macro, '-1', -1073741824, '-1073741825'); -test(macro, '1', 51676101935731, '51676101935732'); -test(macro, '-1', 51676101935731, '51676101935730'); -test(macro, '1', -51676101935731, '-51676101935730'); -test(macro, '-1', -51676101935731, '-51676101935732'); -test(macro, '3', 0, '3'); -test(macro, '-3', 0, '-3'); -test(macro, '3', 1, '4'); -test(macro, '-3', 1, '-2'); -test(macro, '3', -1, '2'); -test(macro, '-3', -1, '-4'); -test(macro, '3', 3, '6'); -test(macro, '-3', 3, '0'); -test(macro, '3', -3, '0'); -test(macro, '-3', -3, '-6'); -test(macro, '3', 7, '10'); -test(macro, '-3', 7, '4'); -test(macro, '3', -7, '-4'); -test(macro, '-3', -7, '-10'); -test(macro, '3', 9, '12'); -test(macro, '-3', 9, '6'); -test(macro, '3', -9, '-6'); -test(macro, '-3', -9, '-12'); -test(macro, '3', 11, '14'); -test(macro, '-3', 11, '8'); -test(macro, '3', -11, '-8'); -test(macro, '-3', -11, '-14'); -test(macro, '3', 17, '20'); -test(macro, '-3', 17, '14'); -test(macro, '3', -17, '-14'); -test(macro, '-3', -17, '-20'); -test(macro, '3', 22, '25'); -test(macro, '-3', 22, '19'); -test(macro, '3', -22, '-19'); -test(macro, '-3', -22, '-25'); -test(macro, '3', 24, '27'); -test(macro, '-3', 24, '21'); -test(macro, '3', -24, '-21'); -test(macro, '-3', -24, '-27'); -test(macro, '3', 27, '30'); -test(macro, '-3', 27, '24'); -test(macro, '3', -27, '-24'); -test(macro, '-3', -27, '-30'); -test(macro, '3', 29, '32'); -test(macro, '-3', 29, '26'); -test(macro, '3', -29, '-26'); -test(macro, '-3', -29, '-32'); -test(macro, '3', 1234, '1237'); -test(macro, '-3', 1234, '1231'); -test(macro, '3', -1234, '-1231'); -test(macro, '-3', -1234, '-1237'); -test(macro, '3', 5678, '5681'); -test(macro, '-3', 5678, '5675'); -test(macro, '3', -5678, '-5675'); -test(macro, '-3', -5678, '-5681'); -test(macro, '3', 94906265, '94906268'); -test(macro, '-3', 94906265, '94906262'); -test(macro, '3', -94906265, '-94906262'); -test(macro, '-3', -94906265, '-94906268'); -test(macro, '3', 94906266, '94906269'); -test(macro, '-3', 94906266, '94906263'); -test(macro, '3', -94906266, '-94906263'); -test(macro, '-3', -94906266, '-94906269'); -test(macro, '3', 1073741824, '1073741827'); -test(macro, '-3', 1073741824, '1073741821'); -test(macro, '3', -1073741824, '-1073741821'); -test(macro, '-3', -1073741824, '-1073741827'); -test(macro, '3', 51676101935731, '51676101935734'); -test(macro, '-3', 51676101935731, '51676101935728'); -test(macro, '3', -51676101935731, '-51676101935728'); -test(macro, '-3', -51676101935731, '-51676101935734'); -test(macro, '7', 0, '7'); -test(macro, '-7', 0, '-7'); -test(macro, '7', 1, '8'); -test(macro, '-7', 1, '-6'); -test(macro, '7', -1, '6'); -test(macro, '-7', -1, '-8'); -test(macro, '7', 3, '10'); -test(macro, '-7', 3, '-4'); -test(macro, '7', -3, '4'); -test(macro, '-7', -3, '-10'); -test(macro, '7', 7, '14'); -test(macro, '-7', 7, '0'); -test(macro, '7', -7, '0'); -test(macro, '-7', -7, '-14'); -test(macro, '7', 9, '16'); -test(macro, '-7', 9, '2'); -test(macro, '7', -9, '-2'); -test(macro, '-7', -9, '-16'); -test(macro, '7', 11, '18'); -test(macro, '-7', 11, '4'); -test(macro, '7', -11, '-4'); -test(macro, '-7', -11, '-18'); -test(macro, '7', 17, '24'); -test(macro, '-7', 17, '10'); -test(macro, '7', -17, '-10'); -test(macro, '-7', -17, '-24'); -test(macro, '7', 22, '29'); -test(macro, '-7', 22, '15'); -test(macro, '7', -22, '-15'); -test(macro, '-7', -22, '-29'); -test(macro, '7', 24, '31'); -test(macro, '-7', 24, '17'); -test(macro, '7', -24, '-17'); -test(macro, '-7', -24, '-31'); -test(macro, '7', 27, '34'); -test(macro, '-7', 27, '20'); -test(macro, '7', -27, '-20'); -test(macro, '-7', -27, '-34'); -test(macro, '7', 29, '36'); -test(macro, '-7', 29, '22'); -test(macro, '7', -29, '-22'); -test(macro, '-7', -29, '-36'); -test(macro, '7', 1234, '1241'); -test(macro, '-7', 1234, '1227'); -test(macro, '7', -1234, '-1227'); -test(macro, '-7', -1234, '-1241'); -test(macro, '7', 5678, '5685'); -test(macro, '-7', 5678, '5671'); -test(macro, '7', -5678, '-5671'); -test(macro, '-7', -5678, '-5685'); -test(macro, '7', 94906265, '94906272'); -test(macro, '-7', 94906265, '94906258'); -test(macro, '7', -94906265, '-94906258'); -test(macro, '-7', -94906265, '-94906272'); -test(macro, '7', 94906266, '94906273'); -test(macro, '-7', 94906266, '94906259'); -test(macro, '7', -94906266, '-94906259'); -test(macro, '-7', -94906266, '-94906273'); -test(macro, '7', 1073741824, '1073741831'); -test(macro, '-7', 1073741824, '1073741817'); -test(macro, '7', -1073741824, '-1073741817'); -test(macro, '-7', -1073741824, '-1073741831'); -test(macro, '7', 51676101935731, '51676101935738'); -test(macro, '-7', 51676101935731, '51676101935724'); -test(macro, '7', -51676101935731, '-51676101935724'); -test(macro, '-7', -51676101935731, '-51676101935738'); -test(macro, '9', 0, '9'); -test(macro, '-9', 0, '-9'); -test(macro, '9', 1, '10'); -test(macro, '-9', 1, '-8'); -test(macro, '9', -1, '8'); -test(macro, '-9', -1, '-10'); -test(macro, '9', 3, '12'); -test(macro, '-9', 3, '-6'); -test(macro, '9', -3, '6'); -test(macro, '-9', -3, '-12'); -test(macro, '9', 7, '16'); -test(macro, '-9', 7, '-2'); -test(macro, '9', -7, '2'); -test(macro, '-9', -7, '-16'); -test(macro, '9', 9, '18'); -test(macro, '-9', 9, '0'); -test(macro, '9', -9, '0'); -test(macro, '-9', -9, '-18'); -test(macro, '9', 11, '20'); -test(macro, '-9', 11, '2'); -test(macro, '9', -11, '-2'); -test(macro, '-9', -11, '-20'); -test(macro, '9', 17, '26'); -test(macro, '-9', 17, '8'); -test(macro, '9', -17, '-8'); -test(macro, '-9', -17, '-26'); -test(macro, '9', 22, '31'); -test(macro, '-9', 22, '13'); -test(macro, '9', -22, '-13'); -test(macro, '-9', -22, '-31'); -test(macro, '9', 24, '33'); -test(macro, '-9', 24, '15'); -test(macro, '9', -24, '-15'); -test(macro, '-9', -24, '-33'); -test(macro, '9', 27, '36'); -test(macro, '-9', 27, '18'); -test(macro, '9', -27, '-18'); -test(macro, '-9', -27, '-36'); -test(macro, '9', 29, '38'); -test(macro, '-9', 29, '20'); -test(macro, '9', -29, '-20'); -test(macro, '-9', -29, '-38'); -test(macro, '9', 1234, '1243'); -test(macro, '-9', 1234, '1225'); -test(macro, '9', -1234, '-1225'); -test(macro, '-9', -1234, '-1243'); -test(macro, '9', 5678, '5687'); -test(macro, '-9', 5678, '5669'); -test(macro, '9', -5678, '-5669'); -test(macro, '-9', -5678, '-5687'); -test(macro, '9', 94906265, '94906274'); -test(macro, '-9', 94906265, '94906256'); -test(macro, '9', -94906265, '-94906256'); -test(macro, '-9', -94906265, '-94906274'); -test(macro, '9', 94906266, '94906275'); -test(macro, '-9', 94906266, '94906257'); -test(macro, '9', -94906266, '-94906257'); -test(macro, '-9', -94906266, '-94906275'); -test(macro, '9', 1073741824, '1073741833'); -test(macro, '-9', 1073741824, '1073741815'); -test(macro, '9', -1073741824, '-1073741815'); -test(macro, '-9', -1073741824, '-1073741833'); -test(macro, '9', 51676101935731, '51676101935740'); -test(macro, '-9', 51676101935731, '51676101935722'); -test(macro, '9', -51676101935731, '-51676101935722'); -test(macro, '-9', -51676101935731, '-51676101935740'); -test(macro, '11', 0, '11'); -test(macro, '-11', 0, '-11'); -test(macro, '11', 1, '12'); -test(macro, '-11', 1, '-10'); -test(macro, '11', -1, '10'); -test(macro, '-11', -1, '-12'); -test(macro, '11', 3, '14'); -test(macro, '-11', 3, '-8'); -test(macro, '11', -3, '8'); -test(macro, '-11', -3, '-14'); -test(macro, '11', 7, '18'); -test(macro, '-11', 7, '-4'); -test(macro, '11', -7, '4'); -test(macro, '-11', -7, '-18'); -test(macro, '11', 9, '20'); -test(macro, '-11', 9, '-2'); -test(macro, '11', -9, '2'); -test(macro, '-11', -9, '-20'); -test(macro, '11', 11, '22'); -test(macro, '-11', 11, '0'); -test(macro, '11', -11, '0'); -test(macro, '-11', -11, '-22'); -test(macro, '11', 17, '28'); -test(macro, '-11', 17, '6'); -test(macro, '11', -17, '-6'); -test(macro, '-11', -17, '-28'); -test(macro, '11', 22, '33'); -test(macro, '-11', 22, '11'); -test(macro, '11', -22, '-11'); -test(macro, '-11', -22, '-33'); -test(macro, '11', 24, '35'); -test(macro, '-11', 24, '13'); -test(macro, '11', -24, '-13'); -test(macro, '-11', -24, '-35'); -test(macro, '11', 27, '38'); -test(macro, '-11', 27, '16'); -test(macro, '11', -27, '-16'); -test(macro, '-11', -27, '-38'); -test(macro, '11', 29, '40'); -test(macro, '-11', 29, '18'); -test(macro, '11', -29, '-18'); -test(macro, '-11', -29, '-40'); -test(macro, '11', 1234, '1245'); -test(macro, '-11', 1234, '1223'); -test(macro, '11', -1234, '-1223'); -test(macro, '-11', -1234, '-1245'); -test(macro, '11', 5678, '5689'); -test(macro, '-11', 5678, '5667'); -test(macro, '11', -5678, '-5667'); -test(macro, '-11', -5678, '-5689'); -test(macro, '11', 94906265, '94906276'); -test(macro, '-11', 94906265, '94906254'); -test(macro, '11', -94906265, '-94906254'); -test(macro, '-11', -94906265, '-94906276'); -test(macro, '11', 94906266, '94906277'); -test(macro, '-11', 94906266, '94906255'); -test(macro, '11', -94906266, '-94906255'); -test(macro, '-11', -94906266, '-94906277'); -test(macro, '11', 1073741824, '1073741835'); -test(macro, '-11', 1073741824, '1073741813'); -test(macro, '11', -1073741824, '-1073741813'); -test(macro, '-11', -1073741824, '-1073741835'); -test(macro, '11', 51676101935731, '51676101935742'); -test(macro, '-11', 51676101935731, '51676101935720'); -test(macro, '11', -51676101935731, '-51676101935720'); -test(macro, '-11', -51676101935731, '-51676101935742'); -test(macro, '17', 0, '17'); -test(macro, '-17', 0, '-17'); -test(macro, '17', 1, '18'); -test(macro, '-17', 1, '-16'); -test(macro, '17', -1, '16'); -test(macro, '-17', -1, '-18'); -test(macro, '17', 3, '20'); -test(macro, '-17', 3, '-14'); -test(macro, '17', -3, '14'); -test(macro, '-17', -3, '-20'); -test(macro, '17', 7, '24'); -test(macro, '-17', 7, '-10'); -test(macro, '17', -7, '10'); -test(macro, '-17', -7, '-24'); -test(macro, '17', 9, '26'); -test(macro, '-17', 9, '-8'); -test(macro, '17', -9, '8'); -test(macro, '-17', -9, '-26'); -test(macro, '17', 11, '28'); -test(macro, '-17', 11, '-6'); -test(macro, '17', -11, '6'); -test(macro, '-17', -11, '-28'); -test(macro, '17', 17, '34'); -test(macro, '-17', 17, '0'); -test(macro, '17', -17, '0'); -test(macro, '-17', -17, '-34'); -test(macro, '17', 22, '39'); -test(macro, '-17', 22, '5'); -test(macro, '17', -22, '-5'); -test(macro, '-17', -22, '-39'); -test(macro, '17', 24, '41'); -test(macro, '-17', 24, '7'); -test(macro, '17', -24, '-7'); -test(macro, '-17', -24, '-41'); -test(macro, '17', 27, '44'); -test(macro, '-17', 27, '10'); -test(macro, '17', -27, '-10'); -test(macro, '-17', -27, '-44'); -test(macro, '17', 29, '46'); -test(macro, '-17', 29, '12'); -test(macro, '17', -29, '-12'); -test(macro, '-17', -29, '-46'); -test(macro, '17', 1234, '1251'); -test(macro, '-17', 1234, '1217'); -test(macro, '17', -1234, '-1217'); -test(macro, '-17', -1234, '-1251'); -test(macro, '17', 5678, '5695'); -test(macro, '-17', 5678, '5661'); -test(macro, '17', -5678, '-5661'); -test(macro, '-17', -5678, '-5695'); -test(macro, '17', 94906265, '94906282'); -test(macro, '-17', 94906265, '94906248'); -test(macro, '17', -94906265, '-94906248'); -test(macro, '-17', -94906265, '-94906282'); -test(macro, '17', 94906266, '94906283'); -test(macro, '-17', 94906266, '94906249'); -test(macro, '17', -94906266, '-94906249'); -test(macro, '-17', -94906266, '-94906283'); -test(macro, '17', 1073741824, '1073741841'); -test(macro, '-17', 1073741824, '1073741807'); -test(macro, '17', -1073741824, '-1073741807'); -test(macro, '-17', -1073741824, '-1073741841'); -test(macro, '17', 51676101935731, '51676101935748'); -test(macro, '-17', 51676101935731, '51676101935714'); -test(macro, '17', -51676101935731, '-51676101935714'); -test(macro, '-17', -51676101935731, '-51676101935748'); -test(macro, '22', 0, '22'); -test(macro, '-22', 0, '-22'); -test(macro, '22', 1, '23'); -test(macro, '-22', 1, '-21'); -test(macro, '22', -1, '21'); -test(macro, '-22', -1, '-23'); -test(macro, '22', 3, '25'); -test(macro, '-22', 3, '-19'); -test(macro, '22', -3, '19'); -test(macro, '-22', -3, '-25'); -test(macro, '22', 7, '29'); -test(macro, '-22', 7, '-15'); -test(macro, '22', -7, '15'); -test(macro, '-22', -7, '-29'); -test(macro, '22', 9, '31'); -test(macro, '-22', 9, '-13'); -test(macro, '22', -9, '13'); -test(macro, '-22', -9, '-31'); -test(macro, '22', 11, '33'); -test(macro, '-22', 11, '-11'); -test(macro, '22', -11, '11'); -test(macro, '-22', -11, '-33'); -test(macro, '22', 17, '39'); -test(macro, '-22', 17, '-5'); -test(macro, '22', -17, '5'); -test(macro, '-22', -17, '-39'); -test(macro, '22', 22, '44'); -test(macro, '-22', 22, '0'); -test(macro, '22', -22, '0'); -test(macro, '-22', -22, '-44'); -test(macro, '22', 24, '46'); -test(macro, '-22', 24, '2'); -test(macro, '22', -24, '-2'); -test(macro, '-22', -24, '-46'); -test(macro, '22', 27, '49'); -test(macro, '-22', 27, '5'); -test(macro, '22', -27, '-5'); -test(macro, '-22', -27, '-49'); -test(macro, '22', 29, '51'); -test(macro, '-22', 29, '7'); -test(macro, '22', -29, '-7'); -test(macro, '-22', -29, '-51'); -test(macro, '22', 1234, '1256'); -test(macro, '-22', 1234, '1212'); -test(macro, '22', -1234, '-1212'); -test(macro, '-22', -1234, '-1256'); -test(macro, '22', 5678, '5700'); -test(macro, '-22', 5678, '5656'); -test(macro, '22', -5678, '-5656'); -test(macro, '-22', -5678, '-5700'); -test(macro, '22', 94906265, '94906287'); -test(macro, '-22', 94906265, '94906243'); -test(macro, '22', -94906265, '-94906243'); -test(macro, '-22', -94906265, '-94906287'); -test(macro, '22', 94906266, '94906288'); -test(macro, '-22', 94906266, '94906244'); -test(macro, '22', -94906266, '-94906244'); -test(macro, '-22', -94906266, '-94906288'); -test(macro, '22', 1073741824, '1073741846'); -test(macro, '-22', 1073741824, '1073741802'); -test(macro, '22', -1073741824, '-1073741802'); -test(macro, '-22', -1073741824, '-1073741846'); -test(macro, '22', 51676101935731, '51676101935753'); -test(macro, '-22', 51676101935731, '51676101935709'); -test(macro, '22', -51676101935731, '-51676101935709'); -test(macro, '-22', -51676101935731, '-51676101935753'); -test(macro, '24', 0, '24'); -test(macro, '-24', 0, '-24'); -test(macro, '24', 1, '25'); -test(macro, '-24', 1, '-23'); -test(macro, '24', -1, '23'); -test(macro, '-24', -1, '-25'); -test(macro, '24', 3, '27'); -test(macro, '-24', 3, '-21'); -test(macro, '24', -3, '21'); -test(macro, '-24', -3, '-27'); -test(macro, '24', 7, '31'); -test(macro, '-24', 7, '-17'); -test(macro, '24', -7, '17'); -test(macro, '-24', -7, '-31'); -test(macro, '24', 9, '33'); -test(macro, '-24', 9, '-15'); -test(macro, '24', -9, '15'); -test(macro, '-24', -9, '-33'); -test(macro, '24', 11, '35'); -test(macro, '-24', 11, '-13'); -test(macro, '24', -11, '13'); -test(macro, '-24', -11, '-35'); -test(macro, '24', 17, '41'); -test(macro, '-24', 17, '-7'); -test(macro, '24', -17, '7'); -test(macro, '-24', -17, '-41'); -test(macro, '24', 22, '46'); -test(macro, '-24', 22, '-2'); -test(macro, '24', -22, '2'); -test(macro, '-24', -22, '-46'); -test(macro, '24', 24, '48'); -test(macro, '-24', 24, '0'); -test(macro, '24', -24, '0'); -test(macro, '-24', -24, '-48'); -test(macro, '24', 27, '51'); -test(macro, '-24', 27, '3'); -test(macro, '24', -27, '-3'); -test(macro, '-24', -27, '-51'); -test(macro, '24', 29, '53'); -test(macro, '-24', 29, '5'); -test(macro, '24', -29, '-5'); -test(macro, '-24', -29, '-53'); -test(macro, '24', 1234, '1258'); -test(macro, '-24', 1234, '1210'); -test(macro, '24', -1234, '-1210'); -test(macro, '-24', -1234, '-1258'); -test(macro, '24', 5678, '5702'); -test(macro, '-24', 5678, '5654'); -test(macro, '24', -5678, '-5654'); -test(macro, '-24', -5678, '-5702'); -test(macro, '24', 94906265, '94906289'); -test(macro, '-24', 94906265, '94906241'); -test(macro, '24', -94906265, '-94906241'); -test(macro, '-24', -94906265, '-94906289'); -test(macro, '24', 94906266, '94906290'); -test(macro, '-24', 94906266, '94906242'); -test(macro, '24', -94906266, '-94906242'); -test(macro, '-24', -94906266, '-94906290'); -test(macro, '24', 1073741824, '1073741848'); -test(macro, '-24', 1073741824, '1073741800'); -test(macro, '24', -1073741824, '-1073741800'); -test(macro, '-24', -1073741824, '-1073741848'); -test(macro, '24', 51676101935731, '51676101935755'); -test(macro, '-24', 51676101935731, '51676101935707'); -test(macro, '24', -51676101935731, '-51676101935707'); -test(macro, '-24', -51676101935731, '-51676101935755'); -test(macro, '27', 0, '27'); -test(macro, '-27', 0, '-27'); -test(macro, '27', 1, '28'); -test(macro, '-27', 1, '-26'); -test(macro, '27', -1, '26'); -test(macro, '-27', -1, '-28'); -test(macro, '27', 3, '30'); -test(macro, '-27', 3, '-24'); -test(macro, '27', -3, '24'); -test(macro, '-27', -3, '-30'); -test(macro, '27', 7, '34'); -test(macro, '-27', 7, '-20'); -test(macro, '27', -7, '20'); -test(macro, '-27', -7, '-34'); -test(macro, '27', 9, '36'); -test(macro, '-27', 9, '-18'); -test(macro, '27', -9, '18'); -test(macro, '-27', -9, '-36'); -test(macro, '27', 11, '38'); -test(macro, '-27', 11, '-16'); -test(macro, '27', -11, '16'); -test(macro, '-27', -11, '-38'); -test(macro, '27', 17, '44'); -test(macro, '-27', 17, '-10'); -test(macro, '27', -17, '10'); -test(macro, '-27', -17, '-44'); -test(macro, '27', 22, '49'); -test(macro, '-27', 22, '-5'); -test(macro, '27', -22, '5'); -test(macro, '-27', -22, '-49'); -test(macro, '27', 24, '51'); -test(macro, '-27', 24, '-3'); -test(macro, '27', -24, '3'); -test(macro, '-27', -24, '-51'); -test(macro, '27', 27, '54'); -test(macro, '-27', 27, '0'); -test(macro, '27', -27, '0'); -test(macro, '-27', -27, '-54'); -test(macro, '27', 29, '56'); -test(macro, '-27', 29, '2'); -test(macro, '27', -29, '-2'); -test(macro, '-27', -29, '-56'); -test(macro, '27', 1234, '1261'); -test(macro, '-27', 1234, '1207'); -test(macro, '27', -1234, '-1207'); -test(macro, '-27', -1234, '-1261'); -test(macro, '27', 5678, '5705'); -test(macro, '-27', 5678, '5651'); -test(macro, '27', -5678, '-5651'); -test(macro, '-27', -5678, '-5705'); -test(macro, '27', 94906265, '94906292'); -test(macro, '-27', 94906265, '94906238'); -test(macro, '27', -94906265, '-94906238'); -test(macro, '-27', -94906265, '-94906292'); -test(macro, '27', 94906266, '94906293'); -test(macro, '-27', 94906266, '94906239'); -test(macro, '27', -94906266, '-94906239'); -test(macro, '-27', -94906266, '-94906293'); -test(macro, '27', 1073741824, '1073741851'); -test(macro, '-27', 1073741824, '1073741797'); -test(macro, '27', -1073741824, '-1073741797'); -test(macro, '-27', -1073741824, '-1073741851'); -test(macro, '27', 51676101935731, '51676101935758'); -test(macro, '-27', 51676101935731, '51676101935704'); -test(macro, '27', -51676101935731, '-51676101935704'); -test(macro, '-27', -51676101935731, '-51676101935758'); -test(macro, '29', 0, '29'); -test(macro, '-29', 0, '-29'); -test(macro, '29', 1, '30'); -test(macro, '-29', 1, '-28'); -test(macro, '29', -1, '28'); -test(macro, '-29', -1, '-30'); -test(macro, '29', 3, '32'); -test(macro, '-29', 3, '-26'); -test(macro, '29', -3, '26'); -test(macro, '-29', -3, '-32'); -test(macro, '29', 7, '36'); -test(macro, '-29', 7, '-22'); -test(macro, '29', -7, '22'); -test(macro, '-29', -7, '-36'); -test(macro, '29', 9, '38'); -test(macro, '-29', 9, '-20'); -test(macro, '29', -9, '20'); -test(macro, '-29', -9, '-38'); -test(macro, '29', 11, '40'); -test(macro, '-29', 11, '-18'); -test(macro, '29', -11, '18'); -test(macro, '-29', -11, '-40'); -test(macro, '29', 17, '46'); -test(macro, '-29', 17, '-12'); -test(macro, '29', -17, '12'); -test(macro, '-29', -17, '-46'); -test(macro, '29', 22, '51'); -test(macro, '-29', 22, '-7'); -test(macro, '29', -22, '7'); -test(macro, '-29', -22, '-51'); -test(macro, '29', 24, '53'); -test(macro, '-29', 24, '-5'); -test(macro, '29', -24, '5'); -test(macro, '-29', -24, '-53'); -test(macro, '29', 27, '56'); -test(macro, '-29', 27, '-2'); -test(macro, '29', -27, '2'); -test(macro, '-29', -27, '-56'); -test(macro, '29', 29, '58'); -test(macro, '-29', 29, '0'); -test(macro, '29', -29, '0'); -test(macro, '-29', -29, '-58'); -test(macro, '29', 1234, '1263'); -test(macro, '-29', 1234, '1205'); -test(macro, '29', -1234, '-1205'); -test(macro, '-29', -1234, '-1263'); -test(macro, '29', 5678, '5707'); -test(macro, '-29', 5678, '5649'); -test(macro, '29', -5678, '-5649'); -test(macro, '-29', -5678, '-5707'); -test(macro, '29', 94906265, '94906294'); -test(macro, '-29', 94906265, '94906236'); -test(macro, '29', -94906265, '-94906236'); -test(macro, '-29', -94906265, '-94906294'); -test(macro, '29', 94906266, '94906295'); -test(macro, '-29', 94906266, '94906237'); -test(macro, '29', -94906266, '-94906237'); -test(macro, '-29', -94906266, '-94906295'); -test(macro, '29', 1073741824, '1073741853'); -test(macro, '-29', 1073741824, '1073741795'); -test(macro, '29', -1073741824, '-1073741795'); -test(macro, '-29', -1073741824, '-1073741853'); -test(macro, '29', 51676101935731, '51676101935760'); -test(macro, '-29', 51676101935731, '51676101935702'); -test(macro, '29', -51676101935731, '-51676101935702'); -test(macro, '-29', -51676101935731, '-51676101935760'); -test(macro, '1234', 0, '1234'); -test(macro, '-1234', 0, '-1234'); -test(macro, '1234', 1, '1235'); -test(macro, '-1234', 1, '-1233'); -test(macro, '1234', -1, '1233'); -test(macro, '-1234', -1, '-1235'); -test(macro, '1234', 3, '1237'); -test(macro, '-1234', 3, '-1231'); -test(macro, '1234', -3, '1231'); -test(macro, '-1234', -3, '-1237'); -test(macro, '1234', 7, '1241'); -test(macro, '-1234', 7, '-1227'); -test(macro, '1234', -7, '1227'); -test(macro, '-1234', -7, '-1241'); -test(macro, '1234', 9, '1243'); -test(macro, '-1234', 9, '-1225'); -test(macro, '1234', -9, '1225'); -test(macro, '-1234', -9, '-1243'); -test(macro, '1234', 11, '1245'); -test(macro, '-1234', 11, '-1223'); -test(macro, '1234', -11, '1223'); -test(macro, '-1234', -11, '-1245'); -test(macro, '1234', 17, '1251'); -test(macro, '-1234', 17, '-1217'); -test(macro, '1234', -17, '1217'); -test(macro, '-1234', -17, '-1251'); -test(macro, '1234', 22, '1256'); -test(macro, '-1234', 22, '-1212'); -test(macro, '1234', -22, '1212'); -test(macro, '-1234', -22, '-1256'); -test(macro, '1234', 24, '1258'); -test(macro, '-1234', 24, '-1210'); -test(macro, '1234', -24, '1210'); -test(macro, '-1234', -24, '-1258'); -test(macro, '1234', 27, '1261'); -test(macro, '-1234', 27, '-1207'); -test(macro, '1234', -27, '1207'); -test(macro, '-1234', -27, '-1261'); -test(macro, '1234', 29, '1263'); -test(macro, '-1234', 29, '-1205'); -test(macro, '1234', -29, '1205'); -test(macro, '-1234', -29, '-1263'); -test(macro, '1234', 1234, '2468'); -test(macro, '-1234', 1234, '0'); -test(macro, '1234', -1234, '0'); -test(macro, '-1234', -1234, '-2468'); -test(macro, '1234', 5678, '6912'); -test(macro, '-1234', 5678, '4444'); -test(macro, '1234', -5678, '-4444'); -test(macro, '-1234', -5678, '-6912'); -test(macro, '1234', 94906265, '94907499'); -test(macro, '-1234', 94906265, '94905031'); -test(macro, '1234', -94906265, '-94905031'); -test(macro, '-1234', -94906265, '-94907499'); -test(macro, '1234', 94906266, '94907500'); -test(macro, '-1234', 94906266, '94905032'); -test(macro, '1234', -94906266, '-94905032'); -test(macro, '-1234', -94906266, '-94907500'); -test(macro, '1234', 1073741824, '1073743058'); -test(macro, '-1234', 1073741824, '1073740590'); -test(macro, '1234', -1073741824, '-1073740590'); -test(macro, '-1234', -1073741824, '-1073743058'); -test(macro, '1234', 51676101935731, '51676101936965'); -test(macro, '-1234', 51676101935731, '51676101934497'); -test(macro, '1234', -51676101935731, '-51676101934497'); -test(macro, '-1234', -51676101935731, '-51676101936965'); -test(macro, '5678', 0, '5678'); -test(macro, '-5678', 0, '-5678'); -test(macro, '5678', 1, '5679'); -test(macro, '-5678', 1, '-5677'); -test(macro, '5678', -1, '5677'); -test(macro, '-5678', -1, '-5679'); -test(macro, '5678', 3, '5681'); -test(macro, '-5678', 3, '-5675'); -test(macro, '5678', -3, '5675'); -test(macro, '-5678', -3, '-5681'); -test(macro, '5678', 7, '5685'); -test(macro, '-5678', 7, '-5671'); -test(macro, '5678', -7, '5671'); -test(macro, '-5678', -7, '-5685'); -test(macro, '5678', 9, '5687'); -test(macro, '-5678', 9, '-5669'); -test(macro, '5678', -9, '5669'); -test(macro, '-5678', -9, '-5687'); -test(macro, '5678', 11, '5689'); -test(macro, '-5678', 11, '-5667'); -test(macro, '5678', -11, '5667'); -test(macro, '-5678', -11, '-5689'); -test(macro, '5678', 17, '5695'); -test(macro, '-5678', 17, '-5661'); -test(macro, '5678', -17, '5661'); -test(macro, '-5678', -17, '-5695'); -test(macro, '5678', 22, '5700'); -test(macro, '-5678', 22, '-5656'); -test(macro, '5678', -22, '5656'); -test(macro, '-5678', -22, '-5700'); -test(macro, '5678', 24, '5702'); -test(macro, '-5678', 24, '-5654'); -test(macro, '5678', -24, '5654'); -test(macro, '-5678', -24, '-5702'); -test(macro, '5678', 27, '5705'); -test(macro, '-5678', 27, '-5651'); -test(macro, '5678', -27, '5651'); -test(macro, '-5678', -27, '-5705'); -test(macro, '5678', 29, '5707'); -test(macro, '-5678', 29, '-5649'); -test(macro, '5678', -29, '5649'); -test(macro, '-5678', -29, '-5707'); -test(macro, '5678', 1234, '6912'); -test(macro, '-5678', 1234, '-4444'); -test(macro, '5678', -1234, '4444'); -test(macro, '-5678', -1234, '-6912'); -test(macro, '5678', 5678, '11356'); -test(macro, '-5678', 5678, '0'); -test(macro, '5678', -5678, '0'); -test(macro, '-5678', -5678, '-11356'); -test(macro, '5678', 94906265, '94911943'); -test(macro, '-5678', 94906265, '94900587'); -test(macro, '5678', -94906265, '-94900587'); -test(macro, '-5678', -94906265, '-94911943'); -test(macro, '5678', 94906266, '94911944'); -test(macro, '-5678', 94906266, '94900588'); -test(macro, '5678', -94906266, '-94900588'); -test(macro, '-5678', -94906266, '-94911944'); -test(macro, '5678', 1073741824, '1073747502'); -test(macro, '-5678', 1073741824, '1073736146'); -test(macro, '5678', -1073741824, '-1073736146'); -test(macro, '-5678', -1073741824, '-1073747502'); -test(macro, '5678', 51676101935731, '51676101941409'); -test(macro, '-5678', 51676101935731, '51676101930053'); -test(macro, '5678', -51676101935731, '-51676101930053'); -test(macro, '-5678', -51676101935731, '-51676101941409'); -test(macro, '94906265', 0, '94906265'); -test(macro, '-94906265', 0, '-94906265'); -test(macro, '94906265', 1, '94906266'); -test(macro, '-94906265', 1, '-94906264'); -test(macro, '94906265', -1, '94906264'); -test(macro, '-94906265', -1, '-94906266'); -test(macro, '94906265', 3, '94906268'); -test(macro, '-94906265', 3, '-94906262'); -test(macro, '94906265', -3, '94906262'); -test(macro, '-94906265', -3, '-94906268'); -test(macro, '94906265', 7, '94906272'); -test(macro, '-94906265', 7, '-94906258'); -test(macro, '94906265', -7, '94906258'); -test(macro, '-94906265', -7, '-94906272'); -test(macro, '94906265', 9, '94906274'); -test(macro, '-94906265', 9, '-94906256'); -test(macro, '94906265', -9, '94906256'); -test(macro, '-94906265', -9, '-94906274'); -test(macro, '94906265', 11, '94906276'); -test(macro, '-94906265', 11, '-94906254'); -test(macro, '94906265', -11, '94906254'); -test(macro, '-94906265', -11, '-94906276'); -test(macro, '94906265', 17, '94906282'); -test(macro, '-94906265', 17, '-94906248'); -test(macro, '94906265', -17, '94906248'); -test(macro, '-94906265', -17, '-94906282'); -test(macro, '94906265', 22, '94906287'); -test(macro, '-94906265', 22, '-94906243'); -test(macro, '94906265', -22, '94906243'); -test(macro, '-94906265', -22, '-94906287'); -test(macro, '94906265', 24, '94906289'); -test(macro, '-94906265', 24, '-94906241'); -test(macro, '94906265', -24, '94906241'); -test(macro, '-94906265', -24, '-94906289'); -test(macro, '94906265', 27, '94906292'); -test(macro, '-94906265', 27, '-94906238'); -test(macro, '94906265', -27, '94906238'); -test(macro, '-94906265', -27, '-94906292'); -test(macro, '94906265', 29, '94906294'); -test(macro, '-94906265', 29, '-94906236'); -test(macro, '94906265', -29, '94906236'); -test(macro, '-94906265', -29, '-94906294'); -test(macro, '94906265', 1234, '94907499'); -test(macro, '-94906265', 1234, '-94905031'); -test(macro, '94906265', -1234, '94905031'); -test(macro, '-94906265', -1234, '-94907499'); -test(macro, '94906265', 5678, '94911943'); -test(macro, '-94906265', 5678, '-94900587'); -test(macro, '94906265', -5678, '94900587'); -test(macro, '-94906265', -5678, '-94911943'); -test(macro, '94906265', 94906265, '189812530'); -test(macro, '-94906265', 94906265, '0'); -test(macro, '94906265', -94906265, '0'); -test(macro, '-94906265', -94906265, '-189812530'); -test(macro, '94906265', 94906266, '189812531'); -test(macro, '-94906265', 94906266, '1'); -test(macro, '94906265', -94906266, '-1'); -test(macro, '-94906265', -94906266, '-189812531'); -test(macro, '94906265', 1073741824, '1168648089'); -test(macro, '-94906265', 1073741824, '978835559'); -test(macro, '94906265', -1073741824, '-978835559'); -test(macro, '-94906265', -1073741824, '-1168648089'); -test(macro, '94906265', 51676101935731, '51676196841996'); -test(macro, '-94906265', 51676101935731, '51676007029466'); -test(macro, '94906265', -51676101935731, '-51676007029466'); -test(macro, '-94906265', -51676101935731, '-51676196841996'); -test(macro, '94906266', 0, '94906266'); -test(macro, '-94906266', 0, '-94906266'); -test(macro, '94906266', 1, '94906267'); -test(macro, '-94906266', 1, '-94906265'); -test(macro, '94906266', -1, '94906265'); -test(macro, '-94906266', -1, '-94906267'); -test(macro, '94906266', 3, '94906269'); -test(macro, '-94906266', 3, '-94906263'); -test(macro, '94906266', -3, '94906263'); -test(macro, '-94906266', -3, '-94906269'); -test(macro, '94906266', 7, '94906273'); -test(macro, '-94906266', 7, '-94906259'); -test(macro, '94906266', -7, '94906259'); -test(macro, '-94906266', -7, '-94906273'); -test(macro, '94906266', 9, '94906275'); -test(macro, '-94906266', 9, '-94906257'); -test(macro, '94906266', -9, '94906257'); -test(macro, '-94906266', -9, '-94906275'); -test(macro, '94906266', 11, '94906277'); -test(macro, '-94906266', 11, '-94906255'); -test(macro, '94906266', -11, '94906255'); -test(macro, '-94906266', -11, '-94906277'); -test(macro, '94906266', 17, '94906283'); -test(macro, '-94906266', 17, '-94906249'); -test(macro, '94906266', -17, '94906249'); -test(macro, '-94906266', -17, '-94906283'); -test(macro, '94906266', 22, '94906288'); -test(macro, '-94906266', 22, '-94906244'); -test(macro, '94906266', -22, '94906244'); -test(macro, '-94906266', -22, '-94906288'); -test(macro, '94906266', 24, '94906290'); -test(macro, '-94906266', 24, '-94906242'); -test(macro, '94906266', -24, '94906242'); -test(macro, '-94906266', -24, '-94906290'); -test(macro, '94906266', 27, '94906293'); -test(macro, '-94906266', 27, '-94906239'); -test(macro, '94906266', -27, '94906239'); -test(macro, '-94906266', -27, '-94906293'); -test(macro, '94906266', 29, '94906295'); -test(macro, '-94906266', 29, '-94906237'); -test(macro, '94906266', -29, '94906237'); -test(macro, '-94906266', -29, '-94906295'); -test(macro, '94906266', 1234, '94907500'); -test(macro, '-94906266', 1234, '-94905032'); -test(macro, '94906266', -1234, '94905032'); -test(macro, '-94906266', -1234, '-94907500'); -test(macro, '94906266', 5678, '94911944'); -test(macro, '-94906266', 5678, '-94900588'); -test(macro, '94906266', -5678, '94900588'); -test(macro, '-94906266', -5678, '-94911944'); -test(macro, '94906266', 94906265, '189812531'); -test(macro, '-94906266', 94906265, '-1'); -test(macro, '94906266', -94906265, '1'); -test(macro, '-94906266', -94906265, '-189812531'); -test(macro, '94906266', 94906266, '189812532'); -test(macro, '-94906266', 94906266, '0'); -test(macro, '94906266', -94906266, '0'); -test(macro, '-94906266', -94906266, '-189812532'); -test(macro, '94906266', 1073741824, '1168648090'); -test(macro, '-94906266', 1073741824, '978835558'); -test(macro, '94906266', -1073741824, '-978835558'); -test(macro, '-94906266', -1073741824, '-1168648090'); -test(macro, '94906266', 51676101935731, '51676196841997'); -test(macro, '-94906266', 51676101935731, '51676007029465'); -test(macro, '94906266', -51676101935731, '-51676007029465'); -test(macro, '-94906266', -51676101935731, '-51676196841997'); -test(macro, '1073741824', 0, '1073741824'); -test(macro, '-1073741824', 0, '-1073741824'); -test(macro, '1073741824', 1, '1073741825'); -test(macro, '-1073741824', 1, '-1073741823'); -test(macro, '1073741824', -1, '1073741823'); -test(macro, '-1073741824', -1, '-1073741825'); -test(macro, '1073741824', 3, '1073741827'); -test(macro, '-1073741824', 3, '-1073741821'); -test(macro, '1073741824', -3, '1073741821'); -test(macro, '-1073741824', -3, '-1073741827'); -test(macro, '1073741824', 7, '1073741831'); -test(macro, '-1073741824', 7, '-1073741817'); -test(macro, '1073741824', -7, '1073741817'); -test(macro, '-1073741824', -7, '-1073741831'); -test(macro, '1073741824', 9, '1073741833'); -test(macro, '-1073741824', 9, '-1073741815'); -test(macro, '1073741824', -9, '1073741815'); -test(macro, '-1073741824', -9, '-1073741833'); -test(macro, '1073741824', 11, '1073741835'); -test(macro, '-1073741824', 11, '-1073741813'); -test(macro, '1073741824', -11, '1073741813'); -test(macro, '-1073741824', -11, '-1073741835'); -test(macro, '1073741824', 17, '1073741841'); -test(macro, '-1073741824', 17, '-1073741807'); -test(macro, '1073741824', -17, '1073741807'); -test(macro, '-1073741824', -17, '-1073741841'); -test(macro, '1073741824', 22, '1073741846'); -test(macro, '-1073741824', 22, '-1073741802'); -test(macro, '1073741824', -22, '1073741802'); -test(macro, '-1073741824', -22, '-1073741846'); -test(macro, '1073741824', 24, '1073741848'); -test(macro, '-1073741824', 24, '-1073741800'); -test(macro, '1073741824', -24, '1073741800'); -test(macro, '-1073741824', -24, '-1073741848'); -test(macro, '1073741824', 27, '1073741851'); -test(macro, '-1073741824', 27, '-1073741797'); -test(macro, '1073741824', -27, '1073741797'); -test(macro, '-1073741824', -27, '-1073741851'); -test(macro, '1073741824', 29, '1073741853'); -test(macro, '-1073741824', 29, '-1073741795'); -test(macro, '1073741824', -29, '1073741795'); -test(macro, '-1073741824', -29, '-1073741853'); -test(macro, '1073741824', 1234, '1073743058'); -test(macro, '-1073741824', 1234, '-1073740590'); -test(macro, '1073741824', -1234, '1073740590'); -test(macro, '-1073741824', -1234, '-1073743058'); -test(macro, '1073741824', 5678, '1073747502'); -test(macro, '-1073741824', 5678, '-1073736146'); -test(macro, '1073741824', -5678, '1073736146'); -test(macro, '-1073741824', -5678, '-1073747502'); -test(macro, '1073741824', 94906265, '1168648089'); -test(macro, '-1073741824', 94906265, '-978835559'); -test(macro, '1073741824', -94906265, '978835559'); -test(macro, '-1073741824', -94906265, '-1168648089'); -test(macro, '1073741824', 94906266, '1168648090'); -test(macro, '-1073741824', 94906266, '-978835558'); -test(macro, '1073741824', -94906266, '978835558'); -test(macro, '-1073741824', -94906266, '-1168648090'); -test(macro, '1073741824', 1073741824, '2147483648'); -test(macro, '-1073741824', 1073741824, '0'); -test(macro, '1073741824', -1073741824, '0'); -test(macro, '-1073741824', -1073741824, '-2147483648'); -test(macro, '1073741824', 51676101935731, '51677175677555'); -test(macro, '-1073741824', 51676101935731, '51675028193907'); -test(macro, '1073741824', -51676101935731, '-51675028193907'); -test(macro, '-1073741824', -51676101935731, '-51677175677555'); -test(macro, '51676101935731', 0, '51676101935731'); -test(macro, '-51676101935731', 0, '-51676101935731'); -test(macro, '51676101935731', 1, '51676101935732'); -test(macro, '-51676101935731', 1, '-51676101935730'); -test(macro, '51676101935731', -1, '51676101935730'); -test(macro, '-51676101935731', -1, '-51676101935732'); -test(macro, '51676101935731', 3, '51676101935734'); -test(macro, '-51676101935731', 3, '-51676101935728'); -test(macro, '51676101935731', -3, '51676101935728'); -test(macro, '-51676101935731', -3, '-51676101935734'); -test(macro, '51676101935731', 7, '51676101935738'); -test(macro, '-51676101935731', 7, '-51676101935724'); -test(macro, '51676101935731', -7, '51676101935724'); -test(macro, '-51676101935731', -7, '-51676101935738'); -test(macro, '51676101935731', 9, '51676101935740'); -test(macro, '-51676101935731', 9, '-51676101935722'); -test(macro, '51676101935731', -9, '51676101935722'); -test(macro, '-51676101935731', -9, '-51676101935740'); -test(macro, '51676101935731', 11, '51676101935742'); -test(macro, '-51676101935731', 11, '-51676101935720'); -test(macro, '51676101935731', -11, '51676101935720'); -test(macro, '-51676101935731', -11, '-51676101935742'); -test(macro, '51676101935731', 17, '51676101935748'); -test(macro, '-51676101935731', 17, '-51676101935714'); -test(macro, '51676101935731', -17, '51676101935714'); -test(macro, '-51676101935731', -17, '-51676101935748'); -test(macro, '51676101935731', 22, '51676101935753'); -test(macro, '-51676101935731', 22, '-51676101935709'); -test(macro, '51676101935731', -22, '51676101935709'); -test(macro, '-51676101935731', -22, '-51676101935753'); -test(macro, '51676101935731', 24, '51676101935755'); -test(macro, '-51676101935731', 24, '-51676101935707'); -test(macro, '51676101935731', -24, '51676101935707'); -test(macro, '-51676101935731', -24, '-51676101935755'); -test(macro, '51676101935731', 27, '51676101935758'); -test(macro, '-51676101935731', 27, '-51676101935704'); -test(macro, '51676101935731', -27, '51676101935704'); -test(macro, '-51676101935731', -27, '-51676101935758'); -test(macro, '51676101935731', 29, '51676101935760'); -test(macro, '-51676101935731', 29, '-51676101935702'); -test(macro, '51676101935731', -29, '51676101935702'); -test(macro, '-51676101935731', -29, '-51676101935760'); -test(macro, '51676101935731', 1234, '51676101936965'); -test(macro, '-51676101935731', 1234, '-51676101934497'); -test(macro, '51676101935731', -1234, '51676101934497'); -test(macro, '-51676101935731', -1234, '-51676101936965'); -test(macro, '51676101935731', 5678, '51676101941409'); -test(macro, '-51676101935731', 5678, '-51676101930053'); -test(macro, '51676101935731', -5678, '51676101930053'); -test(macro, '-51676101935731', -5678, '-51676101941409'); -test(macro, '51676101935731', 94906265, '51676196841996'); -test(macro, '-51676101935731', 94906265, '-51676007029466'); -test(macro, '51676101935731', -94906265, '51676007029466'); -test(macro, '-51676101935731', -94906265, '-51676196841996'); -test(macro, '51676101935731', 94906266, '51676196841997'); -test(macro, '-51676101935731', 94906266, '-51676007029465'); -test(macro, '51676101935731', -94906266, '51676007029465'); -test(macro, '-51676101935731', -94906266, '-51676196841997'); -test(macro, '51676101935731', 1073741824, '51677175677555'); -test(macro, '-51676101935731', 1073741824, '-51675028193907'); -test(macro, '51676101935731', -1073741824, '51675028193907'); -test(macro, '-51676101935731', -1073741824, '-51677175677555'); -test(macro, '51676101935731', 51676101935731, '103352203871462'); -test(macro, '-51676101935731', 51676101935731, '0'); -test(macro, '51676101935731', -51676101935731, '0'); -test(macro, '-51676101935731', -51676101935731, '-103352203871462'); -test(macro, '717897987691852588770249', 0, '717897987691852588770249'); -test(macro, '-717897987691852588770249', 0, '-717897987691852588770249'); -test(macro, '717897987691852588770249', 1, '717897987691852588770250'); -test(macro, '-717897987691852588770249', 1, '-717897987691852588770248'); -test(macro, '717897987691852588770249', -1, '717897987691852588770248'); -test(macro, '-717897987691852588770249', -1, '-717897987691852588770250'); -test(macro, '717897987691852588770249', 3, '717897987691852588770252'); -test(macro, '-717897987691852588770249', 3, '-717897987691852588770246'); -test(macro, '717897987691852588770249', -3, '717897987691852588770246'); -test(macro, '-717897987691852588770249', -3, '-717897987691852588770252'); -test(macro, '717897987691852588770249', 7, '717897987691852588770256'); -test(macro, '-717897987691852588770249', 7, '-717897987691852588770242'); -test(macro, '717897987691852588770249', -7, '717897987691852588770242'); -test(macro, '-717897987691852588770249', -7, '-717897987691852588770256'); -test(macro, '717897987691852588770249', 9, '717897987691852588770258'); -test(macro, '-717897987691852588770249', 9, '-717897987691852588770240'); -test(macro, '717897987691852588770249', -9, '717897987691852588770240'); -test(macro, '-717897987691852588770249', -9, '-717897987691852588770258'); -test(macro, '717897987691852588770249', 11, '717897987691852588770260'); -test(macro, '-717897987691852588770249', 11, '-717897987691852588770238'); -test(macro, '717897987691852588770249', -11, '717897987691852588770238'); -test(macro, '-717897987691852588770249', -11, '-717897987691852588770260'); -test(macro, '717897987691852588770249', 17, '717897987691852588770266'); -test(macro, '-717897987691852588770249', 17, '-717897987691852588770232'); -test(macro, '717897987691852588770249', -17, '717897987691852588770232'); -test(macro, '-717897987691852588770249', -17, '-717897987691852588770266'); -test(macro, '717897987691852588770249', 22, '717897987691852588770271'); -test(macro, '-717897987691852588770249', 22, '-717897987691852588770227'); -test(macro, '717897987691852588770249', -22, '717897987691852588770227'); -test(macro, '-717897987691852588770249', -22, '-717897987691852588770271'); -test(macro, '717897987691852588770249', 24, '717897987691852588770273'); -test(macro, '-717897987691852588770249', 24, '-717897987691852588770225'); -test(macro, '717897987691852588770249', -24, '717897987691852588770225'); -test(macro, '-717897987691852588770249', -24, '-717897987691852588770273'); -test(macro, '717897987691852588770249', 27, '717897987691852588770276'); -test(macro, '-717897987691852588770249', 27, '-717897987691852588770222'); -test(macro, '717897987691852588770249', -27, '717897987691852588770222'); -test(macro, '-717897987691852588770249', -27, '-717897987691852588770276'); -test(macro, '717897987691852588770249', 29, '717897987691852588770278'); -test(macro, '-717897987691852588770249', 29, '-717897987691852588770220'); -test(macro, '717897987691852588770249', -29, '717897987691852588770220'); -test(macro, '-717897987691852588770249', -29, '-717897987691852588770278'); -test(macro, '717897987691852588770249', 1234, '717897987691852588771483'); -test(macro, '-717897987691852588770249', 1234, '-717897987691852588769015'); -test(macro, '717897987691852588770249', -1234, '717897987691852588769015'); -test(macro, '-717897987691852588770249', -1234, '-717897987691852588771483'); -test(macro, '717897987691852588770249', 5678, '717897987691852588775927'); -test(macro, '-717897987691852588770249', 5678, '-717897987691852588764571'); -test(macro, '717897987691852588770249', -5678, '717897987691852588764571'); -test(macro, '-717897987691852588770249', -5678, '-717897987691852588775927'); -test(macro, '717897987691852588770249', 94906265, '717897987691852683676514'); -test(macro, '-717897987691852588770249', 94906265, '-717897987691852493863984'); -test(macro, '717897987691852588770249', -94906265, '717897987691852493863984'); -test( - macro, - '-717897987691852588770249', - -94906265, - '-717897987691852683676514', -); -test(macro, '717897987691852588770249', 94906266, '717897987691852683676515'); -test(macro, '-717897987691852588770249', 94906266, '-717897987691852493863983'); -test(macro, '717897987691852588770249', -94906266, '717897987691852493863983'); -test( - macro, - '-717897987691852588770249', - -94906266, - '-717897987691852683676515', -); -test(macro, '717897987691852588770249', 1073741824, '717897987691853662512073'); -test( - macro, - '-717897987691852588770249', - 1073741824, - '-717897987691851515028425', -); -test( - macro, - '717897987691852588770249', - -1073741824, - '717897987691851515028425', -); -test( - macro, - '-717897987691852588770249', - -1073741824, - '-717897987691853662512073', -); -test( - macro, - '717897987691852588770249', - 51676101935731, - '717897987743528690705980', -); -test( - macro, - '-717897987691852588770249', - 51676101935731, - '-717897987640176486834518', -); -test( - macro, - '717897987691852588770249', - -51676101935731, - '717897987640176486834518', -); -test( - macro, - '-717897987691852588770249', - -51676101935731, - '-717897987743528690705980', -); diff --git a/test/src/integer/arithmetic/idiv.js b/test/src/integer/arithmetic/idiv.js deleted file mode 100644 index 612c3c2..0000000 --- a/test/src/integer/arithmetic/idiv.js +++ /dev/null @@ -1,1206 +0,0 @@ -import test from 'ava'; -import {parse, stringify, idiv} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const b = parse(B); - const c = idiv(a, b); - t.is(stringify(a), C); - t.is(stringify(b), B); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `idiv(${fmt(A)},${fmt(B)}) = ${fmt(C)}`; - -test(macro, '0', '1', '0'); -test(macro, '0', '-1', '0'); -test(macro, '0', '3', '0'); -test(macro, '0', '-3', '0'); -test(macro, '0', '7', '0'); -test(macro, '0', '-7', '0'); -test(macro, '0', '9', '0'); -test(macro, '0', '-9', '0'); -test(macro, '0', '11', '0'); -test(macro, '0', '-11', '0'); -test(macro, '0', '17', '0'); -test(macro, '0', '-17', '0'); -test(macro, '0', '22', '0'); -test(macro, '0', '-22', '0'); -test(macro, '0', '24', '0'); -test(macro, '0', '-24', '0'); -test(macro, '0', '27', '0'); -test(macro, '0', '-27', '0'); -test(macro, '0', '29', '0'); -test(macro, '0', '-29', '0'); -test(macro, '0', '1234', '0'); -test(macro, '0', '-1234', '0'); -test(macro, '0', '5678', '0'); -test(macro, '0', '-5678', '0'); -test(macro, '0', '94906265', '0'); -test(macro, '0', '-94906265', '0'); -test(macro, '0', '94906266', '0'); -test(macro, '0', '-94906266', '0'); -test(macro, '0', '1073741824', '0'); -test(macro, '0', '-1073741824', '0'); -test(macro, '0', '51676101935731', '0'); -test(macro, '0', '-51676101935731', '0'); -test(macro, '0', '717897987691852588770249', '0'); -test(macro, '0', '-717897987691852588770249', '0'); -test(macro, '1', '1', '1'); -test(macro, '-1', '1', '-1'); -test(macro, '1', '-1', '-1'); -test(macro, '-1', '-1', '1'); -test(macro, '1', '3', '0'); -test(macro, '-1', '3', '-1'); -test(macro, '1', '-3', '-1'); -test(macro, '-1', '-3', '0'); -test(macro, '1', '7', '0'); -test(macro, '-1', '7', '-1'); -test(macro, '1', '-7', '-1'); -test(macro, '-1', '-7', '0'); -test(macro, '1', '9', '0'); -test(macro, '-1', '9', '-1'); -test(macro, '1', '-9', '-1'); -test(macro, '-1', '-9', '0'); -test(macro, '1', '11', '0'); -test(macro, '-1', '11', '-1'); -test(macro, '1', '-11', '-1'); -test(macro, '-1', '-11', '0'); -test(macro, '1', '17', '0'); -test(macro, '-1', '17', '-1'); -test(macro, '1', '-17', '-1'); -test(macro, '-1', '-17', '0'); -test(macro, '1', '22', '0'); -test(macro, '-1', '22', '-1'); -test(macro, '1', '-22', '-1'); -test(macro, '-1', '-22', '0'); -test(macro, '1', '24', '0'); -test(macro, '-1', '24', '-1'); -test(macro, '1', '-24', '-1'); -test(macro, '-1', '-24', '0'); -test(macro, '1', '27', '0'); -test(macro, '-1', '27', '-1'); -test(macro, '1', '-27', '-1'); -test(macro, '-1', '-27', '0'); -test(macro, '1', '29', '0'); -test(macro, '-1', '29', '-1'); -test(macro, '1', '-29', '-1'); -test(macro, '-1', '-29', '0'); -test(macro, '1', '1234', '0'); -test(macro, '-1', '1234', '-1'); -test(macro, '1', '-1234', '-1'); -test(macro, '-1', '-1234', '0'); -test(macro, '1', '5678', '0'); -test(macro, '-1', '5678', '-1'); -test(macro, '1', '-5678', '-1'); -test(macro, '-1', '-5678', '0'); -test(macro, '1', '94906265', '0'); -test(macro, '-1', '94906265', '-1'); -test(macro, '1', '-94906265', '-1'); -test(macro, '-1', '-94906265', '0'); -test(macro, '1', '94906266', '0'); -test(macro, '-1', '94906266', '-1'); -test(macro, '1', '-94906266', '-1'); -test(macro, '-1', '-94906266', '0'); -test(macro, '1', '1073741824', '0'); -test(macro, '-1', '1073741824', '-1'); -test(macro, '1', '-1073741824', '-1'); -test(macro, '-1', '-1073741824', '0'); -test(macro, '1', '51676101935731', '0'); -test(macro, '-1', '51676101935731', '-1'); -test(macro, '1', '-51676101935731', '-1'); -test(macro, '-1', '-51676101935731', '0'); -test(macro, '1', '717897987691852588770249', '0'); -test(macro, '-1', '717897987691852588770249', '-1'); -test(macro, '1', '-717897987691852588770249', '-1'); -test(macro, '-1', '-717897987691852588770249', '0'); -test(macro, '3', '1', '3'); -test(macro, '-3', '1', '-3'); -test(macro, '3', '-1', '-3'); -test(macro, '-3', '-1', '3'); -test(macro, '3', '3', '1'); -test(macro, '-3', '3', '-1'); -test(macro, '3', '-3', '-1'); -test(macro, '-3', '-3', '1'); -test(macro, '3', '7', '0'); -test(macro, '-3', '7', '-1'); -test(macro, '3', '-7', '-1'); -test(macro, '-3', '-7', '0'); -test(macro, '3', '9', '0'); -test(macro, '-3', '9', '-1'); -test(macro, '3', '-9', '-1'); -test(macro, '-3', '-9', '0'); -test(macro, '3', '11', '0'); -test(macro, '-3', '11', '-1'); -test(macro, '3', '-11', '-1'); -test(macro, '-3', '-11', '0'); -test(macro, '3', '17', '0'); -test(macro, '-3', '17', '-1'); -test(macro, '3', '-17', '-1'); -test(macro, '-3', '-17', '0'); -test(macro, '3', '22', '0'); -test(macro, '-3', '22', '-1'); -test(macro, '3', '-22', '-1'); -test(macro, '-3', '-22', '0'); -test(macro, '3', '24', '0'); -test(macro, '-3', '24', '-1'); -test(macro, '3', '-24', '-1'); -test(macro, '-3', '-24', '0'); -test(macro, '3', '27', '0'); -test(macro, '-3', '27', '-1'); -test(macro, '3', '-27', '-1'); -test(macro, '-3', '-27', '0'); -test(macro, '3', '29', '0'); -test(macro, '-3', '29', '-1'); -test(macro, '3', '-29', '-1'); -test(macro, '-3', '-29', '0'); -test(macro, '3', '1234', '0'); -test(macro, '-3', '1234', '-1'); -test(macro, '3', '-1234', '-1'); -test(macro, '-3', '-1234', '0'); -test(macro, '3', '5678', '0'); -test(macro, '-3', '5678', '-1'); -test(macro, '3', '-5678', '-1'); -test(macro, '-3', '-5678', '0'); -test(macro, '3', '94906265', '0'); -test(macro, '-3', '94906265', '-1'); -test(macro, '3', '-94906265', '-1'); -test(macro, '-3', '-94906265', '0'); -test(macro, '3', '94906266', '0'); -test(macro, '-3', '94906266', '-1'); -test(macro, '3', '-94906266', '-1'); -test(macro, '-3', '-94906266', '0'); -test(macro, '3', '1073741824', '0'); -test(macro, '-3', '1073741824', '-1'); -test(macro, '3', '-1073741824', '-1'); -test(macro, '-3', '-1073741824', '0'); -test(macro, '3', '51676101935731', '0'); -test(macro, '-3', '51676101935731', '-1'); -test(macro, '3', '-51676101935731', '-1'); -test(macro, '-3', '-51676101935731', '0'); -test(macro, '3', '717897987691852588770249', '0'); -test(macro, '-3', '717897987691852588770249', '-1'); -test(macro, '3', '-717897987691852588770249', '-1'); -test(macro, '-3', '-717897987691852588770249', '0'); -test(macro, '7', '1', '7'); -test(macro, '-7', '1', '-7'); -test(macro, '7', '-1', '-7'); -test(macro, '-7', '-1', '7'); -test(macro, '7', '3', '2'); -test(macro, '-7', '3', '-3'); -test(macro, '7', '-3', '-3'); -test(macro, '-7', '-3', '2'); -test(macro, '7', '7', '1'); -test(macro, '-7', '7', '-1'); -test(macro, '7', '-7', '-1'); -test(macro, '-7', '-7', '1'); -test(macro, '7', '9', '0'); -test(macro, '-7', '9', '-1'); -test(macro, '7', '-9', '-1'); -test(macro, '-7', '-9', '0'); -test(macro, '7', '11', '0'); -test(macro, '-7', '11', '-1'); -test(macro, '7', '-11', '-1'); -test(macro, '-7', '-11', '0'); -test(macro, '7', '17', '0'); -test(macro, '-7', '17', '-1'); -test(macro, '7', '-17', '-1'); -test(macro, '-7', '-17', '0'); -test(macro, '7', '22', '0'); -test(macro, '-7', '22', '-1'); -test(macro, '7', '-22', '-1'); -test(macro, '-7', '-22', '0'); -test(macro, '7', '24', '0'); -test(macro, '-7', '24', '-1'); -test(macro, '7', '-24', '-1'); -test(macro, '-7', '-24', '0'); -test(macro, '7', '27', '0'); -test(macro, '-7', '27', '-1'); -test(macro, '7', '-27', '-1'); -test(macro, '-7', '-27', '0'); -test(macro, '7', '29', '0'); -test(macro, '-7', '29', '-1'); -test(macro, '7', '-29', '-1'); -test(macro, '-7', '-29', '0'); -test(macro, '7', '1234', '0'); -test(macro, '-7', '1234', '-1'); -test(macro, '7', '-1234', '-1'); -test(macro, '-7', '-1234', '0'); -test(macro, '7', '5678', '0'); -test(macro, '-7', '5678', '-1'); -test(macro, '7', '-5678', '-1'); -test(macro, '-7', '-5678', '0'); -test(macro, '7', '94906265', '0'); -test(macro, '-7', '94906265', '-1'); -test(macro, '7', '-94906265', '-1'); -test(macro, '-7', '-94906265', '0'); -test(macro, '7', '94906266', '0'); -test(macro, '-7', '94906266', '-1'); -test(macro, '7', '-94906266', '-1'); -test(macro, '-7', '-94906266', '0'); -test(macro, '7', '1073741824', '0'); -test(macro, '-7', '1073741824', '-1'); -test(macro, '7', '-1073741824', '-1'); -test(macro, '-7', '-1073741824', '0'); -test(macro, '7', '51676101935731', '0'); -test(macro, '-7', '51676101935731', '-1'); -test(macro, '7', '-51676101935731', '-1'); -test(macro, '-7', '-51676101935731', '0'); -test(macro, '7', '717897987691852588770249', '0'); -test(macro, '-7', '717897987691852588770249', '-1'); -test(macro, '7', '-717897987691852588770249', '-1'); -test(macro, '-7', '-717897987691852588770249', '0'); -test(macro, '9', '1', '9'); -test(macro, '-9', '1', '-9'); -test(macro, '9', '-1', '-9'); -test(macro, '-9', '-1', '9'); -test(macro, '9', '3', '3'); -test(macro, '-9', '3', '-3'); -test(macro, '9', '-3', '-3'); -test(macro, '-9', '-3', '3'); -test(macro, '9', '7', '1'); -test(macro, '-9', '7', '-2'); -test(macro, '9', '-7', '-2'); -test(macro, '-9', '-7', '1'); -test(macro, '9', '9', '1'); -test(macro, '-9', '9', '-1'); -test(macro, '9', '-9', '-1'); -test(macro, '-9', '-9', '1'); -test(macro, '9', '11', '0'); -test(macro, '-9', '11', '-1'); -test(macro, '9', '-11', '-1'); -test(macro, '-9', '-11', '0'); -test(macro, '9', '17', '0'); -test(macro, '-9', '17', '-1'); -test(macro, '9', '-17', '-1'); -test(macro, '-9', '-17', '0'); -test(macro, '9', '22', '0'); -test(macro, '-9', '22', '-1'); -test(macro, '9', '-22', '-1'); -test(macro, '-9', '-22', '0'); -test(macro, '9', '24', '0'); -test(macro, '-9', '24', '-1'); -test(macro, '9', '-24', '-1'); -test(macro, '-9', '-24', '0'); -test(macro, '9', '27', '0'); -test(macro, '-9', '27', '-1'); -test(macro, '9', '-27', '-1'); -test(macro, '-9', '-27', '0'); -test(macro, '9', '29', '0'); -test(macro, '-9', '29', '-1'); -test(macro, '9', '-29', '-1'); -test(macro, '-9', '-29', '0'); -test(macro, '9', '1234', '0'); -test(macro, '-9', '1234', '-1'); -test(macro, '9', '-1234', '-1'); -test(macro, '-9', '-1234', '0'); -test(macro, '9', '5678', '0'); -test(macro, '-9', '5678', '-1'); -test(macro, '9', '-5678', '-1'); -test(macro, '-9', '-5678', '0'); -test(macro, '9', '94906265', '0'); -test(macro, '-9', '94906265', '-1'); -test(macro, '9', '-94906265', '-1'); -test(macro, '-9', '-94906265', '0'); -test(macro, '9', '94906266', '0'); -test(macro, '-9', '94906266', '-1'); -test(macro, '9', '-94906266', '-1'); -test(macro, '-9', '-94906266', '0'); -test(macro, '9', '1073741824', '0'); -test(macro, '-9', '1073741824', '-1'); -test(macro, '9', '-1073741824', '-1'); -test(macro, '-9', '-1073741824', '0'); -test(macro, '9', '51676101935731', '0'); -test(macro, '-9', '51676101935731', '-1'); -test(macro, '9', '-51676101935731', '-1'); -test(macro, '-9', '-51676101935731', '0'); -test(macro, '9', '717897987691852588770249', '0'); -test(macro, '-9', '717897987691852588770249', '-1'); -test(macro, '9', '-717897987691852588770249', '-1'); -test(macro, '-9', '-717897987691852588770249', '0'); -test(macro, '11', '1', '11'); -test(macro, '-11', '1', '-11'); -test(macro, '11', '-1', '-11'); -test(macro, '-11', '-1', '11'); -test(macro, '11', '3', '3'); -test(macro, '-11', '3', '-4'); -test(macro, '11', '-3', '-4'); -test(macro, '-11', '-3', '3'); -test(macro, '11', '7', '1'); -test(macro, '-11', '7', '-2'); -test(macro, '11', '-7', '-2'); -test(macro, '-11', '-7', '1'); -test(macro, '11', '9', '1'); -test(macro, '-11', '9', '-2'); -test(macro, '11', '-9', '-2'); -test(macro, '-11', '-9', '1'); -test(macro, '11', '11', '1'); -test(macro, '-11', '11', '-1'); -test(macro, '11', '-11', '-1'); -test(macro, '-11', '-11', '1'); -test(macro, '11', '17', '0'); -test(macro, '-11', '17', '-1'); -test(macro, '11', '-17', '-1'); -test(macro, '-11', '-17', '0'); -test(macro, '11', '22', '0'); -test(macro, '-11', '22', '-1'); -test(macro, '11', '-22', '-1'); -test(macro, '-11', '-22', '0'); -test(macro, '11', '24', '0'); -test(macro, '-11', '24', '-1'); -test(macro, '11', '-24', '-1'); -test(macro, '-11', '-24', '0'); -test(macro, '11', '27', '0'); -test(macro, '-11', '27', '-1'); -test(macro, '11', '-27', '-1'); -test(macro, '-11', '-27', '0'); -test(macro, '11', '29', '0'); -test(macro, '-11', '29', '-1'); -test(macro, '11', '-29', '-1'); -test(macro, '-11', '-29', '0'); -test(macro, '11', '1234', '0'); -test(macro, '-11', '1234', '-1'); -test(macro, '11', '-1234', '-1'); -test(macro, '-11', '-1234', '0'); -test(macro, '11', '5678', '0'); -test(macro, '-11', '5678', '-1'); -test(macro, '11', '-5678', '-1'); -test(macro, '-11', '-5678', '0'); -test(macro, '11', '94906265', '0'); -test(macro, '-11', '94906265', '-1'); -test(macro, '11', '-94906265', '-1'); -test(macro, '-11', '-94906265', '0'); -test(macro, '11', '94906266', '0'); -test(macro, '-11', '94906266', '-1'); -test(macro, '11', '-94906266', '-1'); -test(macro, '-11', '-94906266', '0'); -test(macro, '11', '1073741824', '0'); -test(macro, '-11', '1073741824', '-1'); -test(macro, '11', '-1073741824', '-1'); -test(macro, '-11', '-1073741824', '0'); -test(macro, '11', '51676101935731', '0'); -test(macro, '-11', '51676101935731', '-1'); -test(macro, '11', '-51676101935731', '-1'); -test(macro, '-11', '-51676101935731', '0'); -test(macro, '11', '717897987691852588770249', '0'); -test(macro, '-11', '717897987691852588770249', '-1'); -test(macro, '11', '-717897987691852588770249', '-1'); -test(macro, '-11', '-717897987691852588770249', '0'); -test(macro, '17', '1', '17'); -test(macro, '-17', '1', '-17'); -test(macro, '17', '-1', '-17'); -test(macro, '-17', '-1', '17'); -test(macro, '17', '3', '5'); -test(macro, '-17', '3', '-6'); -test(macro, '17', '-3', '-6'); -test(macro, '-17', '-3', '5'); -test(macro, '17', '7', '2'); -test(macro, '-17', '7', '-3'); -test(macro, '17', '-7', '-3'); -test(macro, '-17', '-7', '2'); -test(macro, '17', '9', '1'); -test(macro, '-17', '9', '-2'); -test(macro, '17', '-9', '-2'); -test(macro, '-17', '-9', '1'); -test(macro, '17', '11', '1'); -test(macro, '-17', '11', '-2'); -test(macro, '17', '-11', '-2'); -test(macro, '-17', '-11', '1'); -test(macro, '17', '17', '1'); -test(macro, '-17', '17', '-1'); -test(macro, '17', '-17', '-1'); -test(macro, '-17', '-17', '1'); -test(macro, '17', '22', '0'); -test(macro, '-17', '22', '-1'); -test(macro, '17', '-22', '-1'); -test(macro, '-17', '-22', '0'); -test(macro, '17', '24', '0'); -test(macro, '-17', '24', '-1'); -test(macro, '17', '-24', '-1'); -test(macro, '-17', '-24', '0'); -test(macro, '17', '27', '0'); -test(macro, '-17', '27', '-1'); -test(macro, '17', '-27', '-1'); -test(macro, '-17', '-27', '0'); -test(macro, '17', '29', '0'); -test(macro, '-17', '29', '-1'); -test(macro, '17', '-29', '-1'); -test(macro, '-17', '-29', '0'); -test(macro, '17', '1234', '0'); -test(macro, '-17', '1234', '-1'); -test(macro, '17', '-1234', '-1'); -test(macro, '-17', '-1234', '0'); -test(macro, '17', '5678', '0'); -test(macro, '-17', '5678', '-1'); -test(macro, '17', '-5678', '-1'); -test(macro, '-17', '-5678', '0'); -test(macro, '17', '94906265', '0'); -test(macro, '-17', '94906265', '-1'); -test(macro, '17', '-94906265', '-1'); -test(macro, '-17', '-94906265', '0'); -test(macro, '17', '94906266', '0'); -test(macro, '-17', '94906266', '-1'); -test(macro, '17', '-94906266', '-1'); -test(macro, '-17', '-94906266', '0'); -test(macro, '17', '1073741824', '0'); -test(macro, '-17', '1073741824', '-1'); -test(macro, '17', '-1073741824', '-1'); -test(macro, '-17', '-1073741824', '0'); -test(macro, '17', '51676101935731', '0'); -test(macro, '-17', '51676101935731', '-1'); -test(macro, '17', '-51676101935731', '-1'); -test(macro, '-17', '-51676101935731', '0'); -test(macro, '17', '717897987691852588770249', '0'); -test(macro, '-17', '717897987691852588770249', '-1'); -test(macro, '17', '-717897987691852588770249', '-1'); -test(macro, '-17', '-717897987691852588770249', '0'); -test(macro, '22', '1', '22'); -test(macro, '-22', '1', '-22'); -test(macro, '22', '-1', '-22'); -test(macro, '-22', '-1', '22'); -test(macro, '22', '3', '7'); -test(macro, '-22', '3', '-8'); -test(macro, '22', '-3', '-8'); -test(macro, '-22', '-3', '7'); -test(macro, '22', '7', '3'); -test(macro, '-22', '7', '-4'); -test(macro, '22', '-7', '-4'); -test(macro, '-22', '-7', '3'); -test(macro, '22', '9', '2'); -test(macro, '-22', '9', '-3'); -test(macro, '22', '-9', '-3'); -test(macro, '-22', '-9', '2'); -test(macro, '22', '11', '2'); -test(macro, '-22', '11', '-2'); -test(macro, '22', '-11', '-2'); -test(macro, '-22', '-11', '2'); -test(macro, '22', '17', '1'); -test(macro, '-22', '17', '-2'); -test(macro, '22', '-17', '-2'); -test(macro, '-22', '-17', '1'); -test(macro, '22', '22', '1'); -test(macro, '-22', '22', '-1'); -test(macro, '22', '-22', '-1'); -test(macro, '-22', '-22', '1'); -test(macro, '22', '24', '0'); -test(macro, '-22', '24', '-1'); -test(macro, '22', '-24', '-1'); -test(macro, '-22', '-24', '0'); -test(macro, '22', '27', '0'); -test(macro, '-22', '27', '-1'); -test(macro, '22', '-27', '-1'); -test(macro, '-22', '-27', '0'); -test(macro, '22', '29', '0'); -test(macro, '-22', '29', '-1'); -test(macro, '22', '-29', '-1'); -test(macro, '-22', '-29', '0'); -test(macro, '22', '1234', '0'); -test(macro, '-22', '1234', '-1'); -test(macro, '22', '-1234', '-1'); -test(macro, '-22', '-1234', '0'); -test(macro, '22', '5678', '0'); -test(macro, '-22', '5678', '-1'); -test(macro, '22', '-5678', '-1'); -test(macro, '-22', '-5678', '0'); -test(macro, '22', '94906265', '0'); -test(macro, '-22', '94906265', '-1'); -test(macro, '22', '-94906265', '-1'); -test(macro, '-22', '-94906265', '0'); -test(macro, '22', '94906266', '0'); -test(macro, '-22', '94906266', '-1'); -test(macro, '22', '-94906266', '-1'); -test(macro, '-22', '-94906266', '0'); -test(macro, '22', '1073741824', '0'); -test(macro, '-22', '1073741824', '-1'); -test(macro, '22', '-1073741824', '-1'); -test(macro, '-22', '-1073741824', '0'); -test(macro, '22', '51676101935731', '0'); -test(macro, '-22', '51676101935731', '-1'); -test(macro, '22', '-51676101935731', '-1'); -test(macro, '-22', '-51676101935731', '0'); -test(macro, '22', '717897987691852588770249', '0'); -test(macro, '-22', '717897987691852588770249', '-1'); -test(macro, '22', '-717897987691852588770249', '-1'); -test(macro, '-22', '-717897987691852588770249', '0'); -test(macro, '24', '1', '24'); -test(macro, '-24', '1', '-24'); -test(macro, '24', '-1', '-24'); -test(macro, '-24', '-1', '24'); -test(macro, '24', '3', '8'); -test(macro, '-24', '3', '-8'); -test(macro, '24', '-3', '-8'); -test(macro, '-24', '-3', '8'); -test(macro, '24', '7', '3'); -test(macro, '-24', '7', '-4'); -test(macro, '24', '-7', '-4'); -test(macro, '-24', '-7', '3'); -test(macro, '24', '9', '2'); -test(macro, '-24', '9', '-3'); -test(macro, '24', '-9', '-3'); -test(macro, '-24', '-9', '2'); -test(macro, '24', '11', '2'); -test(macro, '-24', '11', '-3'); -test(macro, '24', '-11', '-3'); -test(macro, '-24', '-11', '2'); -test(macro, '24', '17', '1'); -test(macro, '-24', '17', '-2'); -test(macro, '24', '-17', '-2'); -test(macro, '-24', '-17', '1'); -test(macro, '24', '22', '1'); -test(macro, '-24', '22', '-2'); -test(macro, '24', '-22', '-2'); -test(macro, '-24', '-22', '1'); -test(macro, '24', '24', '1'); -test(macro, '-24', '24', '-1'); -test(macro, '24', '-24', '-1'); -test(macro, '-24', '-24', '1'); -test(macro, '24', '27', '0'); -test(macro, '-24', '27', '-1'); -test(macro, '24', '-27', '-1'); -test(macro, '-24', '-27', '0'); -test(macro, '24', '29', '0'); -test(macro, '-24', '29', '-1'); -test(macro, '24', '-29', '-1'); -test(macro, '-24', '-29', '0'); -test(macro, '24', '1234', '0'); -test(macro, '-24', '1234', '-1'); -test(macro, '24', '-1234', '-1'); -test(macro, '-24', '-1234', '0'); -test(macro, '24', '5678', '0'); -test(macro, '-24', '5678', '-1'); -test(macro, '24', '-5678', '-1'); -test(macro, '-24', '-5678', '0'); -test(macro, '24', '94906265', '0'); -test(macro, '-24', '94906265', '-1'); -test(macro, '24', '-94906265', '-1'); -test(macro, '-24', '-94906265', '0'); -test(macro, '24', '94906266', '0'); -test(macro, '-24', '94906266', '-1'); -test(macro, '24', '-94906266', '-1'); -test(macro, '-24', '-94906266', '0'); -test(macro, '24', '1073741824', '0'); -test(macro, '-24', '1073741824', '-1'); -test(macro, '24', '-1073741824', '-1'); -test(macro, '-24', '-1073741824', '0'); -test(macro, '24', '51676101935731', '0'); -test(macro, '-24', '51676101935731', '-1'); -test(macro, '24', '-51676101935731', '-1'); -test(macro, '-24', '-51676101935731', '0'); -test(macro, '24', '717897987691852588770249', '0'); -test(macro, '-24', '717897987691852588770249', '-1'); -test(macro, '24', '-717897987691852588770249', '-1'); -test(macro, '-24', '-717897987691852588770249', '0'); -test(macro, '27', '1', '27'); -test(macro, '-27', '1', '-27'); -test(macro, '27', '-1', '-27'); -test(macro, '-27', '-1', '27'); -test(macro, '27', '3', '9'); -test(macro, '-27', '3', '-9'); -test(macro, '27', '-3', '-9'); -test(macro, '-27', '-3', '9'); -test(macro, '27', '7', '3'); -test(macro, '-27', '7', '-4'); -test(macro, '27', '-7', '-4'); -test(macro, '-27', '-7', '3'); -test(macro, '27', '9', '3'); -test(macro, '-27', '9', '-3'); -test(macro, '27', '-9', '-3'); -test(macro, '-27', '-9', '3'); -test(macro, '27', '11', '2'); -test(macro, '-27', '11', '-3'); -test(macro, '27', '-11', '-3'); -test(macro, '-27', '-11', '2'); -test(macro, '27', '17', '1'); -test(macro, '-27', '17', '-2'); -test(macro, '27', '-17', '-2'); -test(macro, '-27', '-17', '1'); -test(macro, '27', '22', '1'); -test(macro, '-27', '22', '-2'); -test(macro, '27', '-22', '-2'); -test(macro, '-27', '-22', '1'); -test(macro, '27', '24', '1'); -test(macro, '-27', '24', '-2'); -test(macro, '27', '-24', '-2'); -test(macro, '-27', '-24', '1'); -test(macro, '27', '27', '1'); -test(macro, '-27', '27', '-1'); -test(macro, '27', '-27', '-1'); -test(macro, '-27', '-27', '1'); -test(macro, '27', '29', '0'); -test(macro, '-27', '29', '-1'); -test(macro, '27', '-29', '-1'); -test(macro, '-27', '-29', '0'); -test(macro, '27', '1234', '0'); -test(macro, '-27', '1234', '-1'); -test(macro, '27', '-1234', '-1'); -test(macro, '-27', '-1234', '0'); -test(macro, '27', '5678', '0'); -test(macro, '-27', '5678', '-1'); -test(macro, '27', '-5678', '-1'); -test(macro, '-27', '-5678', '0'); -test(macro, '27', '94906265', '0'); -test(macro, '-27', '94906265', '-1'); -test(macro, '27', '-94906265', '-1'); -test(macro, '-27', '-94906265', '0'); -test(macro, '27', '94906266', '0'); -test(macro, '-27', '94906266', '-1'); -test(macro, '27', '-94906266', '-1'); -test(macro, '-27', '-94906266', '0'); -test(macro, '27', '1073741824', '0'); -test(macro, '-27', '1073741824', '-1'); -test(macro, '27', '-1073741824', '-1'); -test(macro, '-27', '-1073741824', '0'); -test(macro, '27', '51676101935731', '0'); -test(macro, '-27', '51676101935731', '-1'); -test(macro, '27', '-51676101935731', '-1'); -test(macro, '-27', '-51676101935731', '0'); -test(macro, '27', '717897987691852588770249', '0'); -test(macro, '-27', '717897987691852588770249', '-1'); -test(macro, '27', '-717897987691852588770249', '-1'); -test(macro, '-27', '-717897987691852588770249', '0'); -test(macro, '29', '1', '29'); -test(macro, '-29', '1', '-29'); -test(macro, '29', '-1', '-29'); -test(macro, '-29', '-1', '29'); -test(macro, '29', '3', '9'); -test(macro, '-29', '3', '-10'); -test(macro, '29', '-3', '-10'); -test(macro, '-29', '-3', '9'); -test(macro, '29', '7', '4'); -test(macro, '-29', '7', '-5'); -test(macro, '29', '-7', '-5'); -test(macro, '-29', '-7', '4'); -test(macro, '29', '9', '3'); -test(macro, '-29', '9', '-4'); -test(macro, '29', '-9', '-4'); -test(macro, '-29', '-9', '3'); -test(macro, '29', '11', '2'); -test(macro, '-29', '11', '-3'); -test(macro, '29', '-11', '-3'); -test(macro, '-29', '-11', '2'); -test(macro, '29', '17', '1'); -test(macro, '-29', '17', '-2'); -test(macro, '29', '-17', '-2'); -test(macro, '-29', '-17', '1'); -test(macro, '29', '22', '1'); -test(macro, '-29', '22', '-2'); -test(macro, '29', '-22', '-2'); -test(macro, '-29', '-22', '1'); -test(macro, '29', '24', '1'); -test(macro, '-29', '24', '-2'); -test(macro, '29', '-24', '-2'); -test(macro, '-29', '-24', '1'); -test(macro, '29', '27', '1'); -test(macro, '-29', '27', '-2'); -test(macro, '29', '-27', '-2'); -test(macro, '-29', '-27', '1'); -test(macro, '29', '29', '1'); -test(macro, '-29', '29', '-1'); -test(macro, '29', '-29', '-1'); -test(macro, '-29', '-29', '1'); -test(macro, '29', '1234', '0'); -test(macro, '-29', '1234', '-1'); -test(macro, '29', '-1234', '-1'); -test(macro, '-29', '-1234', '0'); -test(macro, '29', '5678', '0'); -test(macro, '-29', '5678', '-1'); -test(macro, '29', '-5678', '-1'); -test(macro, '-29', '-5678', '0'); -test(macro, '29', '94906265', '0'); -test(macro, '-29', '94906265', '-1'); -test(macro, '29', '-94906265', '-1'); -test(macro, '-29', '-94906265', '0'); -test(macro, '29', '94906266', '0'); -test(macro, '-29', '94906266', '-1'); -test(macro, '29', '-94906266', '-1'); -test(macro, '-29', '-94906266', '0'); -test(macro, '29', '1073741824', '0'); -test(macro, '-29', '1073741824', '-1'); -test(macro, '29', '-1073741824', '-1'); -test(macro, '-29', '-1073741824', '0'); -test(macro, '29', '51676101935731', '0'); -test(macro, '-29', '51676101935731', '-1'); -test(macro, '29', '-51676101935731', '-1'); -test(macro, '-29', '-51676101935731', '0'); -test(macro, '29', '717897987691852588770249', '0'); -test(macro, '-29', '717897987691852588770249', '-1'); -test(macro, '29', '-717897987691852588770249', '-1'); -test(macro, '-29', '-717897987691852588770249', '0'); -test(macro, '1234', '1', '1234'); -test(macro, '-1234', '1', '-1234'); -test(macro, '1234', '-1', '-1234'); -test(macro, '-1234', '-1', '1234'); -test(macro, '1234', '3', '411'); -test(macro, '-1234', '3', '-412'); -test(macro, '1234', '-3', '-412'); -test(macro, '-1234', '-3', '411'); -test(macro, '1234', '7', '176'); -test(macro, '-1234', '7', '-177'); -test(macro, '1234', '-7', '-177'); -test(macro, '-1234', '-7', '176'); -test(macro, '1234', '9', '137'); -test(macro, '-1234', '9', '-138'); -test(macro, '1234', '-9', '-138'); -test(macro, '-1234', '-9', '137'); -test(macro, '1234', '11', '112'); -test(macro, '-1234', '11', '-113'); -test(macro, '1234', '-11', '-113'); -test(macro, '-1234', '-11', '112'); -test(macro, '1234', '17', '72'); -test(macro, '-1234', '17', '-73'); -test(macro, '1234', '-17', '-73'); -test(macro, '-1234', '-17', '72'); -test(macro, '1234', '22', '56'); -test(macro, '-1234', '22', '-57'); -test(macro, '1234', '-22', '-57'); -test(macro, '-1234', '-22', '56'); -test(macro, '1234', '24', '51'); -test(macro, '-1234', '24', '-52'); -test(macro, '1234', '-24', '-52'); -test(macro, '-1234', '-24', '51'); -test(macro, '1234', '27', '45'); -test(macro, '-1234', '27', '-46'); -test(macro, '1234', '-27', '-46'); -test(macro, '-1234', '-27', '45'); -test(macro, '1234', '29', '42'); -test(macro, '-1234', '29', '-43'); -test(macro, '1234', '-29', '-43'); -test(macro, '-1234', '-29', '42'); -test(macro, '1234', '1234', '1'); -test(macro, '-1234', '1234', '-1'); -test(macro, '1234', '-1234', '-1'); -test(macro, '-1234', '-1234', '1'); -test(macro, '1234', '5678', '0'); -test(macro, '-1234', '5678', '-1'); -test(macro, '1234', '-5678', '-1'); -test(macro, '-1234', '-5678', '0'); -test(macro, '1234', '94906265', '0'); -test(macro, '-1234', '94906265', '-1'); -test(macro, '1234', '-94906265', '-1'); -test(macro, '-1234', '-94906265', '0'); -test(macro, '1234', '94906266', '0'); -test(macro, '-1234', '94906266', '-1'); -test(macro, '1234', '-94906266', '-1'); -test(macro, '-1234', '-94906266', '0'); -test(macro, '1234', '1073741824', '0'); -test(macro, '-1234', '1073741824', '-1'); -test(macro, '1234', '-1073741824', '-1'); -test(macro, '-1234', '-1073741824', '0'); -test(macro, '1234', '51676101935731', '0'); -test(macro, '-1234', '51676101935731', '-1'); -test(macro, '1234', '-51676101935731', '-1'); -test(macro, '-1234', '-51676101935731', '0'); -test(macro, '1234', '717897987691852588770249', '0'); -test(macro, '-1234', '717897987691852588770249', '-1'); -test(macro, '1234', '-717897987691852588770249', '-1'); -test(macro, '-1234', '-717897987691852588770249', '0'); -test(macro, '5678', '1', '5678'); -test(macro, '-5678', '1', '-5678'); -test(macro, '5678', '-1', '-5678'); -test(macro, '-5678', '-1', '5678'); -test(macro, '5678', '3', '1892'); -test(macro, '-5678', '3', '-1893'); -test(macro, '5678', '-3', '-1893'); -test(macro, '-5678', '-3', '1892'); -test(macro, '5678', '7', '811'); -test(macro, '-5678', '7', '-812'); -test(macro, '5678', '-7', '-812'); -test(macro, '-5678', '-7', '811'); -test(macro, '5678', '9', '630'); -test(macro, '-5678', '9', '-631'); -test(macro, '5678', '-9', '-631'); -test(macro, '-5678', '-9', '630'); -test(macro, '5678', '11', '516'); -test(macro, '-5678', '11', '-517'); -test(macro, '5678', '-11', '-517'); -test(macro, '-5678', '-11', '516'); -test(macro, '5678', '17', '334'); -test(macro, '-5678', '17', '-334'); -test(macro, '5678', '-17', '-334'); -test(macro, '-5678', '-17', '334'); -test(macro, '5678', '22', '258'); -test(macro, '-5678', '22', '-259'); -test(macro, '5678', '-22', '-259'); -test(macro, '-5678', '-22', '258'); -test(macro, '5678', '24', '236'); -test(macro, '-5678', '24', '-237'); -test(macro, '5678', '-24', '-237'); -test(macro, '-5678', '-24', '236'); -test(macro, '5678', '27', '210'); -test(macro, '-5678', '27', '-211'); -test(macro, '5678', '-27', '-211'); -test(macro, '-5678', '-27', '210'); -test(macro, '5678', '29', '195'); -test(macro, '-5678', '29', '-196'); -test(macro, '5678', '-29', '-196'); -test(macro, '-5678', '-29', '195'); -test(macro, '5678', '1234', '4'); -test(macro, '-5678', '1234', '-5'); -test(macro, '5678', '-1234', '-5'); -test(macro, '-5678', '-1234', '4'); -test(macro, '5678', '5678', '1'); -test(macro, '-5678', '5678', '-1'); -test(macro, '5678', '-5678', '-1'); -test(macro, '-5678', '-5678', '1'); -test(macro, '5678', '94906265', '0'); -test(macro, '-5678', '94906265', '-1'); -test(macro, '5678', '-94906265', '-1'); -test(macro, '-5678', '-94906265', '0'); -test(macro, '5678', '94906266', '0'); -test(macro, '-5678', '94906266', '-1'); -test(macro, '5678', '-94906266', '-1'); -test(macro, '-5678', '-94906266', '0'); -test(macro, '5678', '1073741824', '0'); -test(macro, '-5678', '1073741824', '-1'); -test(macro, '5678', '-1073741824', '-1'); -test(macro, '-5678', '-1073741824', '0'); -test(macro, '5678', '51676101935731', '0'); -test(macro, '-5678', '51676101935731', '-1'); -test(macro, '5678', '-51676101935731', '-1'); -test(macro, '-5678', '-51676101935731', '0'); -test(macro, '5678', '717897987691852588770249', '0'); -test(macro, '-5678', '717897987691852588770249', '-1'); -test(macro, '5678', '-717897987691852588770249', '-1'); -test(macro, '-5678', '-717897987691852588770249', '0'); -test(macro, '94906265', '1', '94906265'); -test(macro, '-94906265', '1', '-94906265'); -test(macro, '94906265', '-1', '-94906265'); -test(macro, '-94906265', '-1', '94906265'); -test(macro, '94906265', '3', '31635421'); -test(macro, '-94906265', '3', '-31635422'); -test(macro, '94906265', '-3', '-31635422'); -test(macro, '-94906265', '-3', '31635421'); -test(macro, '94906265', '7', '13558037'); -test(macro, '-94906265', '7', '-13558038'); -test(macro, '94906265', '-7', '-13558038'); -test(macro, '-94906265', '-7', '13558037'); -test(macro, '94906265', '9', '10545140'); -test(macro, '-94906265', '9', '-10545141'); -test(macro, '94906265', '-9', '-10545141'); -test(macro, '-94906265', '-9', '10545140'); -test(macro, '94906265', '11', '8627842'); -test(macro, '-94906265', '11', '-8627843'); -test(macro, '94906265', '-11', '-8627843'); -test(macro, '-94906265', '-11', '8627842'); -test(macro, '94906265', '17', '5582721'); -test(macro, '-94906265', '17', '-5582722'); -test(macro, '94906265', '-17', '-5582722'); -test(macro, '-94906265', '-17', '5582721'); -test(macro, '94906265', '22', '4313921'); -test(macro, '-94906265', '22', '-4313922'); -test(macro, '94906265', '-22', '-4313922'); -test(macro, '-94906265', '-22', '4313921'); -test(macro, '94906265', '24', '3954427'); -test(macro, '-94906265', '24', '-3954428'); -test(macro, '94906265', '-24', '-3954428'); -test(macro, '-94906265', '-24', '3954427'); -test(macro, '94906265', '27', '3515046'); -test(macro, '-94906265', '27', '-3515047'); -test(macro, '94906265', '-27', '-3515047'); -test(macro, '-94906265', '-27', '3515046'); -test(macro, '94906265', '29', '3272629'); -test(macro, '-94906265', '29', '-3272630'); -test(macro, '94906265', '-29', '-3272630'); -test(macro, '-94906265', '-29', '3272629'); -test(macro, '94906265', '1234', '76909'); -test(macro, '-94906265', '1234', '-76910'); -test(macro, '94906265', '-1234', '-76910'); -test(macro, '-94906265', '-1234', '76909'); -test(macro, '94906265', '5678', '16714'); -test(macro, '-94906265', '5678', '-16715'); -test(macro, '94906265', '-5678', '-16715'); -test(macro, '-94906265', '-5678', '16714'); -test(macro, '94906265', '94906265', '1'); -test(macro, '-94906265', '94906265', '-1'); -test(macro, '94906265', '-94906265', '-1'); -test(macro, '-94906265', '-94906265', '1'); -test(macro, '94906265', '94906266', '0'); -test(macro, '-94906265', '94906266', '-1'); -test(macro, '94906265', '-94906266', '-1'); -test(macro, '-94906265', '-94906266', '0'); -test(macro, '94906265', '1073741824', '0'); -test(macro, '-94906265', '1073741824', '-1'); -test(macro, '94906265', '-1073741824', '-1'); -test(macro, '-94906265', '-1073741824', '0'); -test(macro, '94906265', '51676101935731', '0'); -test(macro, '-94906265', '51676101935731', '-1'); -test(macro, '94906265', '-51676101935731', '-1'); -test(macro, '-94906265', '-51676101935731', '0'); -test(macro, '94906265', '717897987691852588770249', '0'); -test(macro, '-94906265', '717897987691852588770249', '-1'); -test(macro, '94906265', '-717897987691852588770249', '-1'); -test(macro, '-94906265', '-717897987691852588770249', '0'); -test(macro, '94906266', '1', '94906266'); -test(macro, '-94906266', '1', '-94906266'); -test(macro, '94906266', '-1', '-94906266'); -test(macro, '-94906266', '-1', '94906266'); -test(macro, '94906266', '3', '31635422'); -test(macro, '-94906266', '3', '-31635422'); -test(macro, '94906266', '-3', '-31635422'); -test(macro, '-94906266', '-3', '31635422'); -test(macro, '94906266', '7', '13558038'); -test(macro, '-94906266', '7', '-13558038'); -test(macro, '94906266', '-7', '-13558038'); -test(macro, '-94906266', '-7', '13558038'); -test(macro, '94906266', '9', '10545140'); -test(macro, '-94906266', '9', '-10545141'); -test(macro, '94906266', '-9', '-10545141'); -test(macro, '-94906266', '-9', '10545140'); -test(macro, '94906266', '11', '8627842'); -test(macro, '-94906266', '11', '-8627843'); -test(macro, '94906266', '-11', '-8627843'); -test(macro, '-94906266', '-11', '8627842'); -test(macro, '94906266', '17', '5582721'); -test(macro, '-94906266', '17', '-5582722'); -test(macro, '94906266', '-17', '-5582722'); -test(macro, '-94906266', '-17', '5582721'); -test(macro, '94906266', '22', '4313921'); -test(macro, '-94906266', '22', '-4313922'); -test(macro, '94906266', '-22', '-4313922'); -test(macro, '-94906266', '-22', '4313921'); -test(macro, '94906266', '24', '3954427'); -test(macro, '-94906266', '24', '-3954428'); -test(macro, '94906266', '-24', '-3954428'); -test(macro, '-94906266', '-24', '3954427'); -test(macro, '94906266', '27', '3515046'); -test(macro, '-94906266', '27', '-3515047'); -test(macro, '94906266', '-27', '-3515047'); -test(macro, '-94906266', '-27', '3515046'); -test(macro, '94906266', '29', '3272629'); -test(macro, '-94906266', '29', '-3272630'); -test(macro, '94906266', '-29', '-3272630'); -test(macro, '-94906266', '-29', '3272629'); -test(macro, '94906266', '1234', '76909'); -test(macro, '-94906266', '1234', '-76910'); -test(macro, '94906266', '-1234', '-76910'); -test(macro, '-94906266', '-1234', '76909'); -test(macro, '94906266', '5678', '16714'); -test(macro, '-94906266', '5678', '-16715'); -test(macro, '94906266', '-5678', '-16715'); -test(macro, '-94906266', '-5678', '16714'); -test(macro, '94906266', '94906265', '1'); -test(macro, '-94906266', '94906265', '-2'); -test(macro, '94906266', '-94906265', '-2'); -test(macro, '-94906266', '-94906265', '1'); -test(macro, '94906266', '94906266', '1'); -test(macro, '-94906266', '94906266', '-1'); -test(macro, '94906266', '-94906266', '-1'); -test(macro, '-94906266', '-94906266', '1'); -test(macro, '94906266', '1073741824', '0'); -test(macro, '-94906266', '1073741824', '-1'); -test(macro, '94906266', '-1073741824', '-1'); -test(macro, '-94906266', '-1073741824', '0'); -test(macro, '94906266', '51676101935731', '0'); -test(macro, '-94906266', '51676101935731', '-1'); -test(macro, '94906266', '-51676101935731', '-1'); -test(macro, '-94906266', '-51676101935731', '0'); -test(macro, '94906266', '717897987691852588770249', '0'); -test(macro, '-94906266', '717897987691852588770249', '-1'); -test(macro, '94906266', '-717897987691852588770249', '-1'); -test(macro, '-94906266', '-717897987691852588770249', '0'); -test(macro, '1073741824', '1', '1073741824'); -test(macro, '-1073741824', '1', '-1073741824'); -test(macro, '1073741824', '-1', '-1073741824'); -test(macro, '-1073741824', '-1', '1073741824'); -test(macro, '1073741824', '3', '357913941'); -test(macro, '-1073741824', '3', '-357913942'); -test(macro, '1073741824', '-3', '-357913942'); -test(macro, '-1073741824', '-3', '357913941'); -test(macro, '1073741824', '7', '153391689'); -test(macro, '-1073741824', '7', '-153391690'); -test(macro, '1073741824', '-7', '-153391690'); -test(macro, '-1073741824', '-7', '153391689'); -test(macro, '1073741824', '9', '119304647'); -test(macro, '-1073741824', '9', '-119304648'); -test(macro, '1073741824', '-9', '-119304648'); -test(macro, '-1073741824', '-9', '119304647'); -test(macro, '1073741824', '11', '97612893'); -test(macro, '-1073741824', '11', '-97612894'); -test(macro, '1073741824', '-11', '-97612894'); -test(macro, '-1073741824', '-11', '97612893'); -test(macro, '1073741824', '17', '63161283'); -test(macro, '-1073741824', '17', '-63161284'); -test(macro, '1073741824', '-17', '-63161284'); -test(macro, '-1073741824', '-17', '63161283'); -test(macro, '1073741824', '22', '48806446'); -test(macro, '-1073741824', '22', '-48806447'); -test(macro, '1073741824', '-22', '-48806447'); -test(macro, '-1073741824', '-22', '48806446'); -test(macro, '1073741824', '24', '44739242'); -test(macro, '-1073741824', '24', '-44739243'); -test(macro, '1073741824', '-24', '-44739243'); -test(macro, '-1073741824', '-24', '44739242'); -test(macro, '1073741824', '27', '39768215'); -test(macro, '-1073741824', '27', '-39768216'); -test(macro, '1073741824', '-27', '-39768216'); -test(macro, '-1073741824', '-27', '39768215'); -test(macro, '1073741824', '29', '37025580'); -test(macro, '-1073741824', '29', '-37025581'); -test(macro, '1073741824', '-29', '-37025581'); -test(macro, '-1073741824', '-29', '37025580'); -test(macro, '1073741824', '1234', '870131'); -test(macro, '-1073741824', '1234', '-870132'); -test(macro, '1073741824', '-1234', '-870132'); -test(macro, '-1073741824', '-1234', '870131'); -test(macro, '1073741824', '5678', '189105'); -test(macro, '-1073741824', '5678', '-189106'); -test(macro, '1073741824', '-5678', '-189106'); -test(macro, '-1073741824', '-5678', '189105'); -test(macro, '1073741824', '94906265', '11'); -test(macro, '-1073741824', '94906265', '-12'); -test(macro, '1073741824', '-94906265', '-12'); -test(macro, '-1073741824', '-94906265', '11'); -test(macro, '1073741824', '94906266', '11'); -test(macro, '-1073741824', '94906266', '-12'); -test(macro, '1073741824', '-94906266', '-12'); -test(macro, '-1073741824', '-94906266', '11'); -test(macro, '1073741824', '1073741824', '1'); -test(macro, '-1073741824', '1073741824', '-1'); -test(macro, '1073741824', '-1073741824', '-1'); -test(macro, '-1073741824', '-1073741824', '1'); -test(macro, '1073741824', '51676101935731', '0'); -test(macro, '-1073741824', '51676101935731', '-1'); -test(macro, '1073741824', '-51676101935731', '-1'); -test(macro, '-1073741824', '-51676101935731', '0'); -test(macro, '1073741824', '717897987691852588770249', '0'); -test(macro, '-1073741824', '717897987691852588770249', '-1'); -test(macro, '1073741824', '-717897987691852588770249', '-1'); -test(macro, '-1073741824', '-717897987691852588770249', '0'); -test(macro, '51676101935731', '1', '51676101935731'); -test(macro, '-51676101935731', '1', '-51676101935731'); -test(macro, '51676101935731', '-1', '-51676101935731'); -test(macro, '-51676101935731', '-1', '51676101935731'); -test(macro, '51676101935731', '3', '17225367311910'); -test(macro, '-51676101935731', '3', '-17225367311911'); -test(macro, '51676101935731', '-3', '-17225367311911'); -test(macro, '-51676101935731', '-3', '17225367311910'); -test(macro, '51676101935731', '7', '7382300276533'); -test(macro, '-51676101935731', '7', '-7382300276533'); -test(macro, '51676101935731', '-7', '-7382300276533'); -test(macro, '-51676101935731', '-7', '7382300276533'); -test(macro, '51676101935731', '9', '5741789103970'); -test(macro, '-51676101935731', '9', '-5741789103971'); -test(macro, '51676101935731', '-9', '-5741789103971'); -test(macro, '-51676101935731', '-9', '5741789103970'); -test(macro, '51676101935731', '11', '4697827448702'); -test(macro, '-51676101935731', '11', '-4697827448703'); -test(macro, '51676101935731', '-11', '-4697827448703'); -test(macro, '-51676101935731', '-11', '4697827448702'); -test(macro, '51676101935731', '17', '3039770702101'); -test(macro, '-51676101935731', '17', '-3039770702102'); -test(macro, '51676101935731', '-17', '-3039770702102'); -test(macro, '-51676101935731', '-17', '3039770702101'); -test(macro, '51676101935731', '22', '2348913724351'); -test(macro, '-51676101935731', '22', '-2348913724352'); -test(macro, '51676101935731', '-22', '-2348913724352'); -test(macro, '-51676101935731', '-22', '2348913724351'); -test(macro, '51676101935731', '24', '2153170913988'); -test(macro, '-51676101935731', '24', '-2153170913989'); -test(macro, '51676101935731', '-24', '-2153170913989'); -test(macro, '-51676101935731', '-24', '2153170913988'); -test(macro, '51676101935731', '27', '1913929701323'); -test(macro, '-51676101935731', '27', '-1913929701324'); -test(macro, '51676101935731', '-27', '-1913929701324'); -test(macro, '-51676101935731', '-27', '1913929701323'); -test(macro, '51676101935731', '29', '1781934549507'); -test(macro, '-51676101935731', '29', '-1781934549508'); -test(macro, '51676101935731', '-29', '-1781934549508'); -test(macro, '-51676101935731', '-29', '1781934549507'); -test(macro, '51676101935731', '1234', '41876905944'); -test(macro, '-51676101935731', '1234', '-41876905945'); -test(macro, '51676101935731', '-1234', '-41876905945'); -test(macro, '-51676101935731', '-1234', '41876905944'); -test(macro, '51676101935731', '5678', '9101109886'); -test(macro, '-51676101935731', '5678', '-9101109887'); -test(macro, '51676101935731', '-5678', '-9101109887'); -test(macro, '-51676101935731', '-5678', '9101109886'); -test(macro, '51676101935731', '94906265', '544496'); -test(macro, '-51676101935731', '94906265', '-544497'); -test(macro, '51676101935731', '-94906265', '-544497'); -test(macro, '-51676101935731', '-94906265', '544496'); -test(macro, '51676101935731', '94906266', '544496'); -test(macro, '-51676101935731', '94906266', '-544497'); -test(macro, '51676101935731', '-94906266', '-544497'); -test(macro, '-51676101935731', '-94906266', '544496'); -test(macro, '51676101935731', '1073741824', '48127'); -test(macro, '-51676101935731', '1073741824', '-48128'); -test(macro, '51676101935731', '-1073741824', '-48128'); -test(macro, '-51676101935731', '-1073741824', '48127'); -test(macro, '51676101935731', '51676101935731', '1'); -test(macro, '-51676101935731', '51676101935731', '-1'); -test(macro, '51676101935731', '-51676101935731', '-1'); -test(macro, '-51676101935731', '-51676101935731', '1'); -test(macro, '51676101935731', '717897987691852588770249', '0'); -test(macro, '-51676101935731', '717897987691852588770249', '-1'); -test(macro, '51676101935731', '-717897987691852588770249', '-1'); -test(macro, '-51676101935731', '-717897987691852588770249', '0'); -test(macro, '717897987691852588770249', '1', '717897987691852588770249'); -test(macro, '-717897987691852588770249', '1', '-717897987691852588770249'); -test(macro, '717897987691852588770249', '-1', '-717897987691852588770249'); -test(macro, '-717897987691852588770249', '-1', '717897987691852588770249'); -test(macro, '717897987691852588770249', '3', '239299329230617529590083'); -test(macro, '-717897987691852588770249', '3', '-239299329230617529590083'); -test(macro, '717897987691852588770249', '-3', '-239299329230617529590083'); -test(macro, '-717897987691852588770249', '-3', '239299329230617529590083'); -test(macro, '717897987691852588770249', '7', '102556855384550369824321'); -test(macro, '-717897987691852588770249', '7', '-102556855384550369824322'); -test(macro, '717897987691852588770249', '-7', '-102556855384550369824322'); -test(macro, '-717897987691852588770249', '-7', '102556855384550369824321'); -test(macro, '717897987691852588770249', '9', '79766443076872509863361'); -test(macro, '-717897987691852588770249', '9', '-79766443076872509863361'); -test(macro, '717897987691852588770249', '-9', '-79766443076872509863361'); -test(macro, '-717897987691852588770249', '-9', '79766443076872509863361'); -test(macro, '717897987691852588770249', '11', '65263453426532053524568'); -test(macro, '-717897987691852588770249', '11', '-65263453426532053524569'); -test(macro, '717897987691852588770249', '-11', '-65263453426532053524569'); -test(macro, '-717897987691852588770249', '-11', '65263453426532053524568'); -test(macro, '717897987691852588770249', '17', '42229293393638387574720'); -test(macro, '-717897987691852588770249', '17', '-42229293393638387574721'); -test(macro, '717897987691852588770249', '-17', '-42229293393638387574721'); -test(macro, '-717897987691852588770249', '-17', '42229293393638387574720'); -test(macro, '717897987691852588770249', '22', '32631726713266026762284'); -test(macro, '-717897987691852588770249', '22', '-32631726713266026762285'); -test(macro, '717897987691852588770249', '-22', '-32631726713266026762285'); -test(macro, '-717897987691852588770249', '-22', '32631726713266026762284'); -test(macro, '717897987691852588770249', '24', '29912416153827191198760'); -test(macro, '-717897987691852588770249', '24', '-29912416153827191198761'); -test(macro, '717897987691852588770249', '-24', '-29912416153827191198761'); -test(macro, '-717897987691852588770249', '-24', '29912416153827191198760'); -test(macro, '717897987691852588770249', '27', '26588814358957503287787'); -test(macro, '-717897987691852588770249', '27', '-26588814358957503287787'); -test(macro, '717897987691852588770249', '-27', '-26588814358957503287787'); -test(macro, '-717897987691852588770249', '-27', '26588814358957503287787'); -test(macro, '717897987691852588770249', '29', '24755103023856985819663'); -test(macro, '-717897987691852588770249', '29', '-24755103023856985819664'); -test(macro, '717897987691852588770249', '-29', '-24755103023856985819664'); -test(macro, '-717897987691852588770249', '-29', '24755103023856985819663'); -test(macro, '717897987691852588770249', '1234', '581764981922084755891'); -test(macro, '-717897987691852588770249', '1234', '-581764981922084755892'); -test(macro, '717897987691852588770249', '-1234', '-581764981922084755892'); -test(macro, '-717897987691852588770249', '-1234', '581764981922084755891'); -test(macro, '717897987691852588770249', '5678', '126435010160593974774'); -test(macro, '-717897987691852588770249', '5678', '-126435010160593974775'); -test(macro, '717897987691852588770249', '-5678', '-126435010160593974775'); -test(macro, '-717897987691852588770249', '-5678', '126435010160593974774'); -test(macro, '717897987691852588770249', '94906265', '7564284483135571'); -test(macro, '-717897987691852588770249', '94906265', '-7564284483135572'); -test(macro, '717897987691852588770249', '-94906265', '-7564284483135572'); -test(macro, '-717897987691852588770249', '-94906265', '7564284483135571'); -test(macro, '717897987691852588770249', '94906266', '7564284403432883'); -test(macro, '-717897987691852588770249', '94906266', '-7564284403432884'); -test(macro, '717897987691852588770249', '-94906266', '-7564284403432884'); -test(macro, '-717897987691852588770249', '-94906266', '7564284403432883'); -test(macro, '717897987691852588770249', '1073741824', '668594602208447'); -test(macro, '-717897987691852588770249', '1073741824', '-668594602208448'); -test(macro, '717897987691852588770249', '-1073741824', '-668594602208448'); -test(macro, '-717897987691852588770249', '-1073741824', '668594602208447'); -test(macro, '717897987691852588770249', '51676101935731', '13892262782'); -test(macro, '-717897987691852588770249', '51676101935731', '-13892262783'); -test(macro, '717897987691852588770249', '-51676101935731', '-13892262783'); -test(macro, '-717897987691852588770249', '-51676101935731', '13892262782'); -test(macro, '717897987691852588770249', '717897987691852588770249', '1'); -test(macro, '-717897987691852588770249', '717897987691852588770249', '-1'); -test(macro, '717897987691852588770249', '-717897987691852588770249', '-1'); -test(macro, '-717897987691852588770249', '-717897987691852588770249', '1'); diff --git a/test/src/integer/arithmetic/idivmod.js b/test/src/integer/arithmetic/idivmod.js deleted file mode 100644 index 714d7fb..0000000 --- a/test/src/integer/arithmetic/idivmod.js +++ /dev/null @@ -1,1616 +0,0 @@ -import test from 'ava'; -import {parse, stringify, idivmod} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C, D) { - const a = parse(A); - const b = parse(B); - const [c, d] = idivmod(a, b); - t.is(stringify(a), D); - t.is(stringify(b), B); - t.is(stringify(c), C); - t.is(stringify(d), D); -} - -macro.title = (_, A, B, C, D) => - `idivmod(${fmt(A)},${fmt(B)}) = [${fmt(C)},${fmt(D)}]`; - -test(macro, '0', '1', '0', '0'); -test(macro, '0', '-1', '0', '0'); -test(macro, '0', '3', '0', '0'); -test(macro, '0', '-3', '0', '0'); -test(macro, '0', '7', '0', '0'); -test(macro, '0', '-7', '0', '0'); -test(macro, '0', '9', '0', '0'); -test(macro, '0', '-9', '0', '0'); -test(macro, '0', '11', '0', '0'); -test(macro, '0', '-11', '0', '0'); -test(macro, '0', '17', '0', '0'); -test(macro, '0', '-17', '0', '0'); -test(macro, '0', '22', '0', '0'); -test(macro, '0', '-22', '0', '0'); -test(macro, '0', '24', '0', '0'); -test(macro, '0', '-24', '0', '0'); -test(macro, '0', '27', '0', '0'); -test(macro, '0', '-27', '0', '0'); -test(macro, '0', '29', '0', '0'); -test(macro, '0', '-29', '0', '0'); -test(macro, '0', '1234', '0', '0'); -test(macro, '0', '-1234', '0', '0'); -test(macro, '0', '5678', '0', '0'); -test(macro, '0', '-5678', '0', '0'); -test(macro, '0', '94906265', '0', '0'); -test(macro, '0', '-94906265', '0', '0'); -test(macro, '0', '94906266', '0', '0'); -test(macro, '0', '-94906266', '0', '0'); -test(macro, '0', '1073741824', '0', '0'); -test(macro, '0', '-1073741824', '0', '0'); -test(macro, '0', '51676101935731', '0', '0'); -test(macro, '0', '-51676101935731', '0', '0'); -test(macro, '0', '717897987691852588770249', '0', '0'); -test(macro, '0', '-717897987691852588770249', '0', '0'); -test(macro, '1', '1', '1', '0'); -test(macro, '-1', '1', '-1', '0'); -test(macro, '1', '-1', '-1', '0'); -test(macro, '-1', '-1', '1', '0'); -test(macro, '1', '3', '0', '1'); -test(macro, '-1', '3', '-1', '2'); -test(macro, '1', '-3', '-1', '-2'); -test(macro, '-1', '-3', '0', '-1'); -test(macro, '1', '7', '0', '1'); -test(macro, '-1', '7', '-1', '6'); -test(macro, '1', '-7', '-1', '-6'); -test(macro, '-1', '-7', '0', '-1'); -test(macro, '1', '9', '0', '1'); -test(macro, '-1', '9', '-1', '8'); -test(macro, '1', '-9', '-1', '-8'); -test(macro, '-1', '-9', '0', '-1'); -test(macro, '1', '11', '0', '1'); -test(macro, '-1', '11', '-1', '10'); -test(macro, '1', '-11', '-1', '-10'); -test(macro, '-1', '-11', '0', '-1'); -test(macro, '1', '17', '0', '1'); -test(macro, '-1', '17', '-1', '16'); -test(macro, '1', '-17', '-1', '-16'); -test(macro, '-1', '-17', '0', '-1'); -test(macro, '1', '22', '0', '1'); -test(macro, '-1', '22', '-1', '21'); -test(macro, '1', '-22', '-1', '-21'); -test(macro, '-1', '-22', '0', '-1'); -test(macro, '1', '24', '0', '1'); -test(macro, '-1', '24', '-1', '23'); -test(macro, '1', '-24', '-1', '-23'); -test(macro, '-1', '-24', '0', '-1'); -test(macro, '1', '27', '0', '1'); -test(macro, '-1', '27', '-1', '26'); -test(macro, '1', '-27', '-1', '-26'); -test(macro, '-1', '-27', '0', '-1'); -test(macro, '1', '29', '0', '1'); -test(macro, '-1', '29', '-1', '28'); -test(macro, '1', '-29', '-1', '-28'); -test(macro, '-1', '-29', '0', '-1'); -test(macro, '1', '1234', '0', '1'); -test(macro, '-1', '1234', '-1', '1233'); -test(macro, '1', '-1234', '-1', '-1233'); -test(macro, '-1', '-1234', '0', '-1'); -test(macro, '1', '5678', '0', '1'); -test(macro, '-1', '5678', '-1', '5677'); -test(macro, '1', '-5678', '-1', '-5677'); -test(macro, '-1', '-5678', '0', '-1'); -test(macro, '1', '94906265', '0', '1'); -test(macro, '-1', '94906265', '-1', '94906264'); -test(macro, '1', '-94906265', '-1', '-94906264'); -test(macro, '-1', '-94906265', '0', '-1'); -test(macro, '1', '94906266', '0', '1'); -test(macro, '-1', '94906266', '-1', '94906265'); -test(macro, '1', '-94906266', '-1', '-94906265'); -test(macro, '-1', '-94906266', '0', '-1'); -test(macro, '1', '1073741824', '0', '1'); -test(macro, '-1', '1073741824', '-1', '1073741823'); -test(macro, '1', '-1073741824', '-1', '-1073741823'); -test(macro, '-1', '-1073741824', '0', '-1'); -test(macro, '1', '51676101935731', '0', '1'); -test(macro, '-1', '51676101935731', '-1', '51676101935730'); -test(macro, '1', '-51676101935731', '-1', '-51676101935730'); -test(macro, '-1', '-51676101935731', '0', '-1'); -test(macro, '1', '717897987691852588770249', '0', '1'); -test(macro, '-1', '717897987691852588770249', '-1', '717897987691852588770248'); -test( - macro, - '1', - '-717897987691852588770249', - '-1', - '-717897987691852588770248', -); -test(macro, '-1', '-717897987691852588770249', '0', '-1'); -test(macro, '3', '1', '3', '0'); -test(macro, '-3', '1', '-3', '0'); -test(macro, '3', '-1', '-3', '0'); -test(macro, '-3', '-1', '3', '0'); -test(macro, '3', '3', '1', '0'); -test(macro, '-3', '3', '-1', '0'); -test(macro, '3', '-3', '-1', '0'); -test(macro, '-3', '-3', '1', '0'); -test(macro, '3', '7', '0', '3'); -test(macro, '-3', '7', '-1', '4'); -test(macro, '3', '-7', '-1', '-4'); -test(macro, '-3', '-7', '0', '-3'); -test(macro, '3', '9', '0', '3'); -test(macro, '-3', '9', '-1', '6'); -test(macro, '3', '-9', '-1', '-6'); -test(macro, '-3', '-9', '0', '-3'); -test(macro, '3', '11', '0', '3'); -test(macro, '-3', '11', '-1', '8'); -test(macro, '3', '-11', '-1', '-8'); -test(macro, '-3', '-11', '0', '-3'); -test(macro, '3', '17', '0', '3'); -test(macro, '-3', '17', '-1', '14'); -test(macro, '3', '-17', '-1', '-14'); -test(macro, '-3', '-17', '0', '-3'); -test(macro, '3', '22', '0', '3'); -test(macro, '-3', '22', '-1', '19'); -test(macro, '3', '-22', '-1', '-19'); -test(macro, '-3', '-22', '0', '-3'); -test(macro, '3', '24', '0', '3'); -test(macro, '-3', '24', '-1', '21'); -test(macro, '3', '-24', '-1', '-21'); -test(macro, '-3', '-24', '0', '-3'); -test(macro, '3', '27', '0', '3'); -test(macro, '-3', '27', '-1', '24'); -test(macro, '3', '-27', '-1', '-24'); -test(macro, '-3', '-27', '0', '-3'); -test(macro, '3', '29', '0', '3'); -test(macro, '-3', '29', '-1', '26'); -test(macro, '3', '-29', '-1', '-26'); -test(macro, '-3', '-29', '0', '-3'); -test(macro, '3', '1234', '0', '3'); -test(macro, '-3', '1234', '-1', '1231'); -test(macro, '3', '-1234', '-1', '-1231'); -test(macro, '-3', '-1234', '0', '-3'); -test(macro, '3', '5678', '0', '3'); -test(macro, '-3', '5678', '-1', '5675'); -test(macro, '3', '-5678', '-1', '-5675'); -test(macro, '-3', '-5678', '0', '-3'); -test(macro, '3', '94906265', '0', '3'); -test(macro, '-3', '94906265', '-1', '94906262'); -test(macro, '3', '-94906265', '-1', '-94906262'); -test(macro, '-3', '-94906265', '0', '-3'); -test(macro, '3', '94906266', '0', '3'); -test(macro, '-3', '94906266', '-1', '94906263'); -test(macro, '3', '-94906266', '-1', '-94906263'); -test(macro, '-3', '-94906266', '0', '-3'); -test(macro, '3', '1073741824', '0', '3'); -test(macro, '-3', '1073741824', '-1', '1073741821'); -test(macro, '3', '-1073741824', '-1', '-1073741821'); -test(macro, '-3', '-1073741824', '0', '-3'); -test(macro, '3', '51676101935731', '0', '3'); -test(macro, '-3', '51676101935731', '-1', '51676101935728'); -test(macro, '3', '-51676101935731', '-1', '-51676101935728'); -test(macro, '-3', '-51676101935731', '0', '-3'); -test(macro, '3', '717897987691852588770249', '0', '3'); -test(macro, '-3', '717897987691852588770249', '-1', '717897987691852588770246'); -test( - macro, - '3', - '-717897987691852588770249', - '-1', - '-717897987691852588770246', -); -test(macro, '-3', '-717897987691852588770249', '0', '-3'); -test(macro, '7', '1', '7', '0'); -test(macro, '-7', '1', '-7', '0'); -test(macro, '7', '-1', '-7', '0'); -test(macro, '-7', '-1', '7', '0'); -test(macro, '7', '3', '2', '1'); -test(macro, '-7', '3', '-3', '2'); -test(macro, '7', '-3', '-3', '-2'); -test(macro, '-7', '-3', '2', '-1'); -test(macro, '7', '7', '1', '0'); -test(macro, '-7', '7', '-1', '0'); -test(macro, '7', '-7', '-1', '0'); -test(macro, '-7', '-7', '1', '0'); -test(macro, '7', '9', '0', '7'); -test(macro, '-7', '9', '-1', '2'); -test(macro, '7', '-9', '-1', '-2'); -test(macro, '-7', '-9', '0', '-7'); -test(macro, '7', '11', '0', '7'); -test(macro, '-7', '11', '-1', '4'); -test(macro, '7', '-11', '-1', '-4'); -test(macro, '-7', '-11', '0', '-7'); -test(macro, '7', '17', '0', '7'); -test(macro, '-7', '17', '-1', '10'); -test(macro, '7', '-17', '-1', '-10'); -test(macro, '-7', '-17', '0', '-7'); -test(macro, '7', '22', '0', '7'); -test(macro, '-7', '22', '-1', '15'); -test(macro, '7', '-22', '-1', '-15'); -test(macro, '-7', '-22', '0', '-7'); -test(macro, '7', '24', '0', '7'); -test(macro, '-7', '24', '-1', '17'); -test(macro, '7', '-24', '-1', '-17'); -test(macro, '-7', '-24', '0', '-7'); -test(macro, '7', '27', '0', '7'); -test(macro, '-7', '27', '-1', '20'); -test(macro, '7', '-27', '-1', '-20'); -test(macro, '-7', '-27', '0', '-7'); -test(macro, '7', '29', '0', '7'); -test(macro, '-7', '29', '-1', '22'); -test(macro, '7', '-29', '-1', '-22'); -test(macro, '-7', '-29', '0', '-7'); -test(macro, '7', '1234', '0', '7'); -test(macro, '-7', '1234', '-1', '1227'); -test(macro, '7', '-1234', '-1', '-1227'); -test(macro, '-7', '-1234', '0', '-7'); -test(macro, '7', '5678', '0', '7'); -test(macro, '-7', '5678', '-1', '5671'); -test(macro, '7', '-5678', '-1', '-5671'); -test(macro, '-7', '-5678', '0', '-7'); -test(macro, '7', '94906265', '0', '7'); -test(macro, '-7', '94906265', '-1', '94906258'); -test(macro, '7', '-94906265', '-1', '-94906258'); -test(macro, '-7', '-94906265', '0', '-7'); -test(macro, '7', '94906266', '0', '7'); -test(macro, '-7', '94906266', '-1', '94906259'); -test(macro, '7', '-94906266', '-1', '-94906259'); -test(macro, '-7', '-94906266', '0', '-7'); -test(macro, '7', '1073741824', '0', '7'); -test(macro, '-7', '1073741824', '-1', '1073741817'); -test(macro, '7', '-1073741824', '-1', '-1073741817'); -test(macro, '-7', '-1073741824', '0', '-7'); -test(macro, '7', '51676101935731', '0', '7'); -test(macro, '-7', '51676101935731', '-1', '51676101935724'); -test(macro, '7', '-51676101935731', '-1', '-51676101935724'); -test(macro, '-7', '-51676101935731', '0', '-7'); -test(macro, '7', '717897987691852588770249', '0', '7'); -test(macro, '-7', '717897987691852588770249', '-1', '717897987691852588770242'); -test( - macro, - '7', - '-717897987691852588770249', - '-1', - '-717897987691852588770242', -); -test(macro, '-7', '-717897987691852588770249', '0', '-7'); -test(macro, '9', '1', '9', '0'); -test(macro, '-9', '1', '-9', '0'); -test(macro, '9', '-1', '-9', '0'); -test(macro, '-9', '-1', '9', '0'); -test(macro, '9', '3', '3', '0'); -test(macro, '-9', '3', '-3', '0'); -test(macro, '9', '-3', '-3', '0'); -test(macro, '-9', '-3', '3', '0'); -test(macro, '9', '7', '1', '2'); -test(macro, '-9', '7', '-2', '5'); -test(macro, '9', '-7', '-2', '-5'); -test(macro, '-9', '-7', '1', '-2'); -test(macro, '9', '9', '1', '0'); -test(macro, '-9', '9', '-1', '0'); -test(macro, '9', '-9', '-1', '0'); -test(macro, '-9', '-9', '1', '0'); -test(macro, '9', '11', '0', '9'); -test(macro, '-9', '11', '-1', '2'); -test(macro, '9', '-11', '-1', '-2'); -test(macro, '-9', '-11', '0', '-9'); -test(macro, '9', '17', '0', '9'); -test(macro, '-9', '17', '-1', '8'); -test(macro, '9', '-17', '-1', '-8'); -test(macro, '-9', '-17', '0', '-9'); -test(macro, '9', '22', '0', '9'); -test(macro, '-9', '22', '-1', '13'); -test(macro, '9', '-22', '-1', '-13'); -test(macro, '-9', '-22', '0', '-9'); -test(macro, '9', '24', '0', '9'); -test(macro, '-9', '24', '-1', '15'); -test(macro, '9', '-24', '-1', '-15'); -test(macro, '-9', '-24', '0', '-9'); -test(macro, '9', '27', '0', '9'); -test(macro, '-9', '27', '-1', '18'); -test(macro, '9', '-27', '-1', '-18'); -test(macro, '-9', '-27', '0', '-9'); -test(macro, '9', '29', '0', '9'); -test(macro, '-9', '29', '-1', '20'); -test(macro, '9', '-29', '-1', '-20'); -test(macro, '-9', '-29', '0', '-9'); -test(macro, '9', '1234', '0', '9'); -test(macro, '-9', '1234', '-1', '1225'); -test(macro, '9', '-1234', '-1', '-1225'); -test(macro, '-9', '-1234', '0', '-9'); -test(macro, '9', '5678', '0', '9'); -test(macro, '-9', '5678', '-1', '5669'); -test(macro, '9', '-5678', '-1', '-5669'); -test(macro, '-9', '-5678', '0', '-9'); -test(macro, '9', '94906265', '0', '9'); -test(macro, '-9', '94906265', '-1', '94906256'); -test(macro, '9', '-94906265', '-1', '-94906256'); -test(macro, '-9', '-94906265', '0', '-9'); -test(macro, '9', '94906266', '0', '9'); -test(macro, '-9', '94906266', '-1', '94906257'); -test(macro, '9', '-94906266', '-1', '-94906257'); -test(macro, '-9', '-94906266', '0', '-9'); -test(macro, '9', '1073741824', '0', '9'); -test(macro, '-9', '1073741824', '-1', '1073741815'); -test(macro, '9', '-1073741824', '-1', '-1073741815'); -test(macro, '-9', '-1073741824', '0', '-9'); -test(macro, '9', '51676101935731', '0', '9'); -test(macro, '-9', '51676101935731', '-1', '51676101935722'); -test(macro, '9', '-51676101935731', '-1', '-51676101935722'); -test(macro, '-9', '-51676101935731', '0', '-9'); -test(macro, '9', '717897987691852588770249', '0', '9'); -test(macro, '-9', '717897987691852588770249', '-1', '717897987691852588770240'); -test( - macro, - '9', - '-717897987691852588770249', - '-1', - '-717897987691852588770240', -); -test(macro, '-9', '-717897987691852588770249', '0', '-9'); -test(macro, '11', '1', '11', '0'); -test(macro, '-11', '1', '-11', '0'); -test(macro, '11', '-1', '-11', '0'); -test(macro, '-11', '-1', '11', '0'); -test(macro, '11', '3', '3', '2'); -test(macro, '-11', '3', '-4', '1'); -test(macro, '11', '-3', '-4', '-1'); -test(macro, '-11', '-3', '3', '-2'); -test(macro, '11', '7', '1', '4'); -test(macro, '-11', '7', '-2', '3'); -test(macro, '11', '-7', '-2', '-3'); -test(macro, '-11', '-7', '1', '-4'); -test(macro, '11', '9', '1', '2'); -test(macro, '-11', '9', '-2', '7'); -test(macro, '11', '-9', '-2', '-7'); -test(macro, '-11', '-9', '1', '-2'); -test(macro, '11', '11', '1', '0'); -test(macro, '-11', '11', '-1', '0'); -test(macro, '11', '-11', '-1', '0'); -test(macro, '-11', '-11', '1', '0'); -test(macro, '11', '17', '0', '11'); -test(macro, '-11', '17', '-1', '6'); -test(macro, '11', '-17', '-1', '-6'); -test(macro, '-11', '-17', '0', '-11'); -test(macro, '11', '22', '0', '11'); -test(macro, '-11', '22', '-1', '11'); -test(macro, '11', '-22', '-1', '-11'); -test(macro, '-11', '-22', '0', '-11'); -test(macro, '11', '24', '0', '11'); -test(macro, '-11', '24', '-1', '13'); -test(macro, '11', '-24', '-1', '-13'); -test(macro, '-11', '-24', '0', '-11'); -test(macro, '11', '27', '0', '11'); -test(macro, '-11', '27', '-1', '16'); -test(macro, '11', '-27', '-1', '-16'); -test(macro, '-11', '-27', '0', '-11'); -test(macro, '11', '29', '0', '11'); -test(macro, '-11', '29', '-1', '18'); -test(macro, '11', '-29', '-1', '-18'); -test(macro, '-11', '-29', '0', '-11'); -test(macro, '11', '1234', '0', '11'); -test(macro, '-11', '1234', '-1', '1223'); -test(macro, '11', '-1234', '-1', '-1223'); -test(macro, '-11', '-1234', '0', '-11'); -test(macro, '11', '5678', '0', '11'); -test(macro, '-11', '5678', '-1', '5667'); -test(macro, '11', '-5678', '-1', '-5667'); -test(macro, '-11', '-5678', '0', '-11'); -test(macro, '11', '94906265', '0', '11'); -test(macro, '-11', '94906265', '-1', '94906254'); -test(macro, '11', '-94906265', '-1', '-94906254'); -test(macro, '-11', '-94906265', '0', '-11'); -test(macro, '11', '94906266', '0', '11'); -test(macro, '-11', '94906266', '-1', '94906255'); -test(macro, '11', '-94906266', '-1', '-94906255'); -test(macro, '-11', '-94906266', '0', '-11'); -test(macro, '11', '1073741824', '0', '11'); -test(macro, '-11', '1073741824', '-1', '1073741813'); -test(macro, '11', '-1073741824', '-1', '-1073741813'); -test(macro, '-11', '-1073741824', '0', '-11'); -test(macro, '11', '51676101935731', '0', '11'); -test(macro, '-11', '51676101935731', '-1', '51676101935720'); -test(macro, '11', '-51676101935731', '-1', '-51676101935720'); -test(macro, '-11', '-51676101935731', '0', '-11'); -test(macro, '11', '717897987691852588770249', '0', '11'); -test( - macro, - '-11', - '717897987691852588770249', - '-1', - '717897987691852588770238', -); -test( - macro, - '11', - '-717897987691852588770249', - '-1', - '-717897987691852588770238', -); -test(macro, '-11', '-717897987691852588770249', '0', '-11'); -test(macro, '17', '1', '17', '0'); -test(macro, '-17', '1', '-17', '0'); -test(macro, '17', '-1', '-17', '0'); -test(macro, '-17', '-1', '17', '0'); -test(macro, '17', '3', '5', '2'); -test(macro, '-17', '3', '-6', '1'); -test(macro, '17', '-3', '-6', '-1'); -test(macro, '-17', '-3', '5', '-2'); -test(macro, '17', '7', '2', '3'); -test(macro, '-17', '7', '-3', '4'); -test(macro, '17', '-7', '-3', '-4'); -test(macro, '-17', '-7', '2', '-3'); -test(macro, '17', '9', '1', '8'); -test(macro, '-17', '9', '-2', '1'); -test(macro, '17', '-9', '-2', '-1'); -test(macro, '-17', '-9', '1', '-8'); -test(macro, '17', '11', '1', '6'); -test(macro, '-17', '11', '-2', '5'); -test(macro, '17', '-11', '-2', '-5'); -test(macro, '-17', '-11', '1', '-6'); -test(macro, '17', '17', '1', '0'); -test(macro, '-17', '17', '-1', '0'); -test(macro, '17', '-17', '-1', '0'); -test(macro, '-17', '-17', '1', '0'); -test(macro, '17', '22', '0', '17'); -test(macro, '-17', '22', '-1', '5'); -test(macro, '17', '-22', '-1', '-5'); -test(macro, '-17', '-22', '0', '-17'); -test(macro, '17', '24', '0', '17'); -test(macro, '-17', '24', '-1', '7'); -test(macro, '17', '-24', '-1', '-7'); -test(macro, '-17', '-24', '0', '-17'); -test(macro, '17', '27', '0', '17'); -test(macro, '-17', '27', '-1', '10'); -test(macro, '17', '-27', '-1', '-10'); -test(macro, '-17', '-27', '0', '-17'); -test(macro, '17', '29', '0', '17'); -test(macro, '-17', '29', '-1', '12'); -test(macro, '17', '-29', '-1', '-12'); -test(macro, '-17', '-29', '0', '-17'); -test(macro, '17', '1234', '0', '17'); -test(macro, '-17', '1234', '-1', '1217'); -test(macro, '17', '-1234', '-1', '-1217'); -test(macro, '-17', '-1234', '0', '-17'); -test(macro, '17', '5678', '0', '17'); -test(macro, '-17', '5678', '-1', '5661'); -test(macro, '17', '-5678', '-1', '-5661'); -test(macro, '-17', '-5678', '0', '-17'); -test(macro, '17', '94906265', '0', '17'); -test(macro, '-17', '94906265', '-1', '94906248'); -test(macro, '17', '-94906265', '-1', '-94906248'); -test(macro, '-17', '-94906265', '0', '-17'); -test(macro, '17', '94906266', '0', '17'); -test(macro, '-17', '94906266', '-1', '94906249'); -test(macro, '17', '-94906266', '-1', '-94906249'); -test(macro, '-17', '-94906266', '0', '-17'); -test(macro, '17', '1073741824', '0', '17'); -test(macro, '-17', '1073741824', '-1', '1073741807'); -test(macro, '17', '-1073741824', '-1', '-1073741807'); -test(macro, '-17', '-1073741824', '0', '-17'); -test(macro, '17', '51676101935731', '0', '17'); -test(macro, '-17', '51676101935731', '-1', '51676101935714'); -test(macro, '17', '-51676101935731', '-1', '-51676101935714'); -test(macro, '-17', '-51676101935731', '0', '-17'); -test(macro, '17', '717897987691852588770249', '0', '17'); -test( - macro, - '-17', - '717897987691852588770249', - '-1', - '717897987691852588770232', -); -test( - macro, - '17', - '-717897987691852588770249', - '-1', - '-717897987691852588770232', -); -test(macro, '-17', '-717897987691852588770249', '0', '-17'); -test(macro, '22', '1', '22', '0'); -test(macro, '-22', '1', '-22', '0'); -test(macro, '22', '-1', '-22', '0'); -test(macro, '-22', '-1', '22', '0'); -test(macro, '22', '3', '7', '1'); -test(macro, '-22', '3', '-8', '2'); -test(macro, '22', '-3', '-8', '-2'); -test(macro, '-22', '-3', '7', '-1'); -test(macro, '22', '7', '3', '1'); -test(macro, '-22', '7', '-4', '6'); -test(macro, '22', '-7', '-4', '-6'); -test(macro, '-22', '-7', '3', '-1'); -test(macro, '22', '9', '2', '4'); -test(macro, '-22', '9', '-3', '5'); -test(macro, '22', '-9', '-3', '-5'); -test(macro, '-22', '-9', '2', '-4'); -test(macro, '22', '11', '2', '0'); -test(macro, '-22', '11', '-2', '0'); -test(macro, '22', '-11', '-2', '0'); -test(macro, '-22', '-11', '2', '0'); -test(macro, '22', '17', '1', '5'); -test(macro, '-22', '17', '-2', '12'); -test(macro, '22', '-17', '-2', '-12'); -test(macro, '-22', '-17', '1', '-5'); -test(macro, '22', '22', '1', '0'); -test(macro, '-22', '22', '-1', '0'); -test(macro, '22', '-22', '-1', '0'); -test(macro, '-22', '-22', '1', '0'); -test(macro, '22', '24', '0', '22'); -test(macro, '-22', '24', '-1', '2'); -test(macro, '22', '-24', '-1', '-2'); -test(macro, '-22', '-24', '0', '-22'); -test(macro, '22', '27', '0', '22'); -test(macro, '-22', '27', '-1', '5'); -test(macro, '22', '-27', '-1', '-5'); -test(macro, '-22', '-27', '0', '-22'); -test(macro, '22', '29', '0', '22'); -test(macro, '-22', '29', '-1', '7'); -test(macro, '22', '-29', '-1', '-7'); -test(macro, '-22', '-29', '0', '-22'); -test(macro, '22', '1234', '0', '22'); -test(macro, '-22', '1234', '-1', '1212'); -test(macro, '22', '-1234', '-1', '-1212'); -test(macro, '-22', '-1234', '0', '-22'); -test(macro, '22', '5678', '0', '22'); -test(macro, '-22', '5678', '-1', '5656'); -test(macro, '22', '-5678', '-1', '-5656'); -test(macro, '-22', '-5678', '0', '-22'); -test(macro, '22', '94906265', '0', '22'); -test(macro, '-22', '94906265', '-1', '94906243'); -test(macro, '22', '-94906265', '-1', '-94906243'); -test(macro, '-22', '-94906265', '0', '-22'); -test(macro, '22', '94906266', '0', '22'); -test(macro, '-22', '94906266', '-1', '94906244'); -test(macro, '22', '-94906266', '-1', '-94906244'); -test(macro, '-22', '-94906266', '0', '-22'); -test(macro, '22', '1073741824', '0', '22'); -test(macro, '-22', '1073741824', '-1', '1073741802'); -test(macro, '22', '-1073741824', '-1', '-1073741802'); -test(macro, '-22', '-1073741824', '0', '-22'); -test(macro, '22', '51676101935731', '0', '22'); -test(macro, '-22', '51676101935731', '-1', '51676101935709'); -test(macro, '22', '-51676101935731', '-1', '-51676101935709'); -test(macro, '-22', '-51676101935731', '0', '-22'); -test(macro, '22', '717897987691852588770249', '0', '22'); -test( - macro, - '-22', - '717897987691852588770249', - '-1', - '717897987691852588770227', -); -test( - macro, - '22', - '-717897987691852588770249', - '-1', - '-717897987691852588770227', -); -test(macro, '-22', '-717897987691852588770249', '0', '-22'); -test(macro, '24', '1', '24', '0'); -test(macro, '-24', '1', '-24', '0'); -test(macro, '24', '-1', '-24', '0'); -test(macro, '-24', '-1', '24', '0'); -test(macro, '24', '3', '8', '0'); -test(macro, '-24', '3', '-8', '0'); -test(macro, '24', '-3', '-8', '0'); -test(macro, '-24', '-3', '8', '0'); -test(macro, '24', '7', '3', '3'); -test(macro, '-24', '7', '-4', '4'); -test(macro, '24', '-7', '-4', '-4'); -test(macro, '-24', '-7', '3', '-3'); -test(macro, '24', '9', '2', '6'); -test(macro, '-24', '9', '-3', '3'); -test(macro, '24', '-9', '-3', '-3'); -test(macro, '-24', '-9', '2', '-6'); -test(macro, '24', '11', '2', '2'); -test(macro, '-24', '11', '-3', '9'); -test(macro, '24', '-11', '-3', '-9'); -test(macro, '-24', '-11', '2', '-2'); -test(macro, '24', '17', '1', '7'); -test(macro, '-24', '17', '-2', '10'); -test(macro, '24', '-17', '-2', '-10'); -test(macro, '-24', '-17', '1', '-7'); -test(macro, '24', '22', '1', '2'); -test(macro, '-24', '22', '-2', '20'); -test(macro, '24', '-22', '-2', '-20'); -test(macro, '-24', '-22', '1', '-2'); -test(macro, '24', '24', '1', '0'); -test(macro, '-24', '24', '-1', '0'); -test(macro, '24', '-24', '-1', '0'); -test(macro, '-24', '-24', '1', '0'); -test(macro, '24', '27', '0', '24'); -test(macro, '-24', '27', '-1', '3'); -test(macro, '24', '-27', '-1', '-3'); -test(macro, '-24', '-27', '0', '-24'); -test(macro, '24', '29', '0', '24'); -test(macro, '-24', '29', '-1', '5'); -test(macro, '24', '-29', '-1', '-5'); -test(macro, '-24', '-29', '0', '-24'); -test(macro, '24', '1234', '0', '24'); -test(macro, '-24', '1234', '-1', '1210'); -test(macro, '24', '-1234', '-1', '-1210'); -test(macro, '-24', '-1234', '0', '-24'); -test(macro, '24', '5678', '0', '24'); -test(macro, '-24', '5678', '-1', '5654'); -test(macro, '24', '-5678', '-1', '-5654'); -test(macro, '-24', '-5678', '0', '-24'); -test(macro, '24', '94906265', '0', '24'); -test(macro, '-24', '94906265', '-1', '94906241'); -test(macro, '24', '-94906265', '-1', '-94906241'); -test(macro, '-24', '-94906265', '0', '-24'); -test(macro, '24', '94906266', '0', '24'); -test(macro, '-24', '94906266', '-1', '94906242'); -test(macro, '24', '-94906266', '-1', '-94906242'); -test(macro, '-24', '-94906266', '0', '-24'); -test(macro, '24', '1073741824', '0', '24'); -test(macro, '-24', '1073741824', '-1', '1073741800'); -test(macro, '24', '-1073741824', '-1', '-1073741800'); -test(macro, '-24', '-1073741824', '0', '-24'); -test(macro, '24', '51676101935731', '0', '24'); -test(macro, '-24', '51676101935731', '-1', '51676101935707'); -test(macro, '24', '-51676101935731', '-1', '-51676101935707'); -test(macro, '-24', '-51676101935731', '0', '-24'); -test(macro, '24', '717897987691852588770249', '0', '24'); -test( - macro, - '-24', - '717897987691852588770249', - '-1', - '717897987691852588770225', -); -test( - macro, - '24', - '-717897987691852588770249', - '-1', - '-717897987691852588770225', -); -test(macro, '-24', '-717897987691852588770249', '0', '-24'); -test(macro, '27', '1', '27', '0'); -test(macro, '-27', '1', '-27', '0'); -test(macro, '27', '-1', '-27', '0'); -test(macro, '-27', '-1', '27', '0'); -test(macro, '27', '3', '9', '0'); -test(macro, '-27', '3', '-9', '0'); -test(macro, '27', '-3', '-9', '0'); -test(macro, '-27', '-3', '9', '0'); -test(macro, '27', '7', '3', '6'); -test(macro, '-27', '7', '-4', '1'); -test(macro, '27', '-7', '-4', '-1'); -test(macro, '-27', '-7', '3', '-6'); -test(macro, '27', '9', '3', '0'); -test(macro, '-27', '9', '-3', '0'); -test(macro, '27', '-9', '-3', '0'); -test(macro, '-27', '-9', '3', '0'); -test(macro, '27', '11', '2', '5'); -test(macro, '-27', '11', '-3', '6'); -test(macro, '27', '-11', '-3', '-6'); -test(macro, '-27', '-11', '2', '-5'); -test(macro, '27', '17', '1', '10'); -test(macro, '-27', '17', '-2', '7'); -test(macro, '27', '-17', '-2', '-7'); -test(macro, '-27', '-17', '1', '-10'); -test(macro, '27', '22', '1', '5'); -test(macro, '-27', '22', '-2', '17'); -test(macro, '27', '-22', '-2', '-17'); -test(macro, '-27', '-22', '1', '-5'); -test(macro, '27', '24', '1', '3'); -test(macro, '-27', '24', '-2', '21'); -test(macro, '27', '-24', '-2', '-21'); -test(macro, '-27', '-24', '1', '-3'); -test(macro, '27', '27', '1', '0'); -test(macro, '-27', '27', '-1', '0'); -test(macro, '27', '-27', '-1', '0'); -test(macro, '-27', '-27', '1', '0'); -test(macro, '27', '29', '0', '27'); -test(macro, '-27', '29', '-1', '2'); -test(macro, '27', '-29', '-1', '-2'); -test(macro, '-27', '-29', '0', '-27'); -test(macro, '27', '1234', '0', '27'); -test(macro, '-27', '1234', '-1', '1207'); -test(macro, '27', '-1234', '-1', '-1207'); -test(macro, '-27', '-1234', '0', '-27'); -test(macro, '27', '5678', '0', '27'); -test(macro, '-27', '5678', '-1', '5651'); -test(macro, '27', '-5678', '-1', '-5651'); -test(macro, '-27', '-5678', '0', '-27'); -test(macro, '27', '94906265', '0', '27'); -test(macro, '-27', '94906265', '-1', '94906238'); -test(macro, '27', '-94906265', '-1', '-94906238'); -test(macro, '-27', '-94906265', '0', '-27'); -test(macro, '27', '94906266', '0', '27'); -test(macro, '-27', '94906266', '-1', '94906239'); -test(macro, '27', '-94906266', '-1', '-94906239'); -test(macro, '-27', '-94906266', '0', '-27'); -test(macro, '27', '1073741824', '0', '27'); -test(macro, '-27', '1073741824', '-1', '1073741797'); -test(macro, '27', '-1073741824', '-1', '-1073741797'); -test(macro, '-27', '-1073741824', '0', '-27'); -test(macro, '27', '51676101935731', '0', '27'); -test(macro, '-27', '51676101935731', '-1', '51676101935704'); -test(macro, '27', '-51676101935731', '-1', '-51676101935704'); -test(macro, '-27', '-51676101935731', '0', '-27'); -test(macro, '27', '717897987691852588770249', '0', '27'); -test( - macro, - '-27', - '717897987691852588770249', - '-1', - '717897987691852588770222', -); -test( - macro, - '27', - '-717897987691852588770249', - '-1', - '-717897987691852588770222', -); -test(macro, '-27', '-717897987691852588770249', '0', '-27'); -test(macro, '29', '1', '29', '0'); -test(macro, '-29', '1', '-29', '0'); -test(macro, '29', '-1', '-29', '0'); -test(macro, '-29', '-1', '29', '0'); -test(macro, '29', '3', '9', '2'); -test(macro, '-29', '3', '-10', '1'); -test(macro, '29', '-3', '-10', '-1'); -test(macro, '-29', '-3', '9', '-2'); -test(macro, '29', '7', '4', '1'); -test(macro, '-29', '7', '-5', '6'); -test(macro, '29', '-7', '-5', '-6'); -test(macro, '-29', '-7', '4', '-1'); -test(macro, '29', '9', '3', '2'); -test(macro, '-29', '9', '-4', '7'); -test(macro, '29', '-9', '-4', '-7'); -test(macro, '-29', '-9', '3', '-2'); -test(macro, '29', '11', '2', '7'); -test(macro, '-29', '11', '-3', '4'); -test(macro, '29', '-11', '-3', '-4'); -test(macro, '-29', '-11', '2', '-7'); -test(macro, '29', '17', '1', '12'); -test(macro, '-29', '17', '-2', '5'); -test(macro, '29', '-17', '-2', '-5'); -test(macro, '-29', '-17', '1', '-12'); -test(macro, '29', '22', '1', '7'); -test(macro, '-29', '22', '-2', '15'); -test(macro, '29', '-22', '-2', '-15'); -test(macro, '-29', '-22', '1', '-7'); -test(macro, '29', '24', '1', '5'); -test(macro, '-29', '24', '-2', '19'); -test(macro, '29', '-24', '-2', '-19'); -test(macro, '-29', '-24', '1', '-5'); -test(macro, '29', '27', '1', '2'); -test(macro, '-29', '27', '-2', '25'); -test(macro, '29', '-27', '-2', '-25'); -test(macro, '-29', '-27', '1', '-2'); -test(macro, '29', '29', '1', '0'); -test(macro, '-29', '29', '-1', '0'); -test(macro, '29', '-29', '-1', '0'); -test(macro, '-29', '-29', '1', '0'); -test(macro, '29', '1234', '0', '29'); -test(macro, '-29', '1234', '-1', '1205'); -test(macro, '29', '-1234', '-1', '-1205'); -test(macro, '-29', '-1234', '0', '-29'); -test(macro, '29', '5678', '0', '29'); -test(macro, '-29', '5678', '-1', '5649'); -test(macro, '29', '-5678', '-1', '-5649'); -test(macro, '-29', '-5678', '0', '-29'); -test(macro, '29', '94906265', '0', '29'); -test(macro, '-29', '94906265', '-1', '94906236'); -test(macro, '29', '-94906265', '-1', '-94906236'); -test(macro, '-29', '-94906265', '0', '-29'); -test(macro, '29', '94906266', '0', '29'); -test(macro, '-29', '94906266', '-1', '94906237'); -test(macro, '29', '-94906266', '-1', '-94906237'); -test(macro, '-29', '-94906266', '0', '-29'); -test(macro, '29', '1073741824', '0', '29'); -test(macro, '-29', '1073741824', '-1', '1073741795'); -test(macro, '29', '-1073741824', '-1', '-1073741795'); -test(macro, '-29', '-1073741824', '0', '-29'); -test(macro, '29', '51676101935731', '0', '29'); -test(macro, '-29', '51676101935731', '-1', '51676101935702'); -test(macro, '29', '-51676101935731', '-1', '-51676101935702'); -test(macro, '-29', '-51676101935731', '0', '-29'); -test(macro, '29', '717897987691852588770249', '0', '29'); -test( - macro, - '-29', - '717897987691852588770249', - '-1', - '717897987691852588770220', -); -test( - macro, - '29', - '-717897987691852588770249', - '-1', - '-717897987691852588770220', -); -test(macro, '-29', '-717897987691852588770249', '0', '-29'); -test(macro, '1234', '1', '1234', '0'); -test(macro, '-1234', '1', '-1234', '0'); -test(macro, '1234', '-1', '-1234', '0'); -test(macro, '-1234', '-1', '1234', '0'); -test(macro, '1234', '3', '411', '1'); -test(macro, '-1234', '3', '-412', '2'); -test(macro, '1234', '-3', '-412', '-2'); -test(macro, '-1234', '-3', '411', '-1'); -test(macro, '1234', '7', '176', '2'); -test(macro, '-1234', '7', '-177', '5'); -test(macro, '1234', '-7', '-177', '-5'); -test(macro, '-1234', '-7', '176', '-2'); -test(macro, '1234', '9', '137', '1'); -test(macro, '-1234', '9', '-138', '8'); -test(macro, '1234', '-9', '-138', '-8'); -test(macro, '-1234', '-9', '137', '-1'); -test(macro, '1234', '11', '112', '2'); -test(macro, '-1234', '11', '-113', '9'); -test(macro, '1234', '-11', '-113', '-9'); -test(macro, '-1234', '-11', '112', '-2'); -test(macro, '1234', '17', '72', '10'); -test(macro, '-1234', '17', '-73', '7'); -test(macro, '1234', '-17', '-73', '-7'); -test(macro, '-1234', '-17', '72', '-10'); -test(macro, '1234', '22', '56', '2'); -test(macro, '-1234', '22', '-57', '20'); -test(macro, '1234', '-22', '-57', '-20'); -test(macro, '-1234', '-22', '56', '-2'); -test(macro, '1234', '24', '51', '10'); -test(macro, '-1234', '24', '-52', '14'); -test(macro, '1234', '-24', '-52', '-14'); -test(macro, '-1234', '-24', '51', '-10'); -test(macro, '1234', '27', '45', '19'); -test(macro, '-1234', '27', '-46', '8'); -test(macro, '1234', '-27', '-46', '-8'); -test(macro, '-1234', '-27', '45', '-19'); -test(macro, '1234', '29', '42', '16'); -test(macro, '-1234', '29', '-43', '13'); -test(macro, '1234', '-29', '-43', '-13'); -test(macro, '-1234', '-29', '42', '-16'); -test(macro, '1234', '1234', '1', '0'); -test(macro, '-1234', '1234', '-1', '0'); -test(macro, '1234', '-1234', '-1', '0'); -test(macro, '-1234', '-1234', '1', '0'); -test(macro, '1234', '5678', '0', '1234'); -test(macro, '-1234', '5678', '-1', '4444'); -test(macro, '1234', '-5678', '-1', '-4444'); -test(macro, '-1234', '-5678', '0', '-1234'); -test(macro, '1234', '94906265', '0', '1234'); -test(macro, '-1234', '94906265', '-1', '94905031'); -test(macro, '1234', '-94906265', '-1', '-94905031'); -test(macro, '-1234', '-94906265', '0', '-1234'); -test(macro, '1234', '94906266', '0', '1234'); -test(macro, '-1234', '94906266', '-1', '94905032'); -test(macro, '1234', '-94906266', '-1', '-94905032'); -test(macro, '-1234', '-94906266', '0', '-1234'); -test(macro, '1234', '1073741824', '0', '1234'); -test(macro, '-1234', '1073741824', '-1', '1073740590'); -test(macro, '1234', '-1073741824', '-1', '-1073740590'); -test(macro, '-1234', '-1073741824', '0', '-1234'); -test(macro, '1234', '51676101935731', '0', '1234'); -test(macro, '-1234', '51676101935731', '-1', '51676101934497'); -test(macro, '1234', '-51676101935731', '-1', '-51676101934497'); -test(macro, '-1234', '-51676101935731', '0', '-1234'); -test(macro, '1234', '717897987691852588770249', '0', '1234'); -test( - macro, - '-1234', - '717897987691852588770249', - '-1', - '717897987691852588769015', -); -test( - macro, - '1234', - '-717897987691852588770249', - '-1', - '-717897987691852588769015', -); -test(macro, '-1234', '-717897987691852588770249', '0', '-1234'); -test(macro, '5678', '1', '5678', '0'); -test(macro, '-5678', '1', '-5678', '0'); -test(macro, '5678', '-1', '-5678', '0'); -test(macro, '-5678', '-1', '5678', '0'); -test(macro, '5678', '3', '1892', '2'); -test(macro, '-5678', '3', '-1893', '1'); -test(macro, '5678', '-3', '-1893', '-1'); -test(macro, '-5678', '-3', '1892', '-2'); -test(macro, '5678', '7', '811', '1'); -test(macro, '-5678', '7', '-812', '6'); -test(macro, '5678', '-7', '-812', '-6'); -test(macro, '-5678', '-7', '811', '-1'); -test(macro, '5678', '9', '630', '8'); -test(macro, '-5678', '9', '-631', '1'); -test(macro, '5678', '-9', '-631', '-1'); -test(macro, '-5678', '-9', '630', '-8'); -test(macro, '5678', '11', '516', '2'); -test(macro, '-5678', '11', '-517', '9'); -test(macro, '5678', '-11', '-517', '-9'); -test(macro, '-5678', '-11', '516', '-2'); -test(macro, '5678', '17', '334', '0'); -test(macro, '-5678', '17', '-334', '0'); -test(macro, '5678', '-17', '-334', '0'); -test(macro, '-5678', '-17', '334', '0'); -test(macro, '5678', '22', '258', '2'); -test(macro, '-5678', '22', '-259', '20'); -test(macro, '5678', '-22', '-259', '-20'); -test(macro, '-5678', '-22', '258', '-2'); -test(macro, '5678', '24', '236', '14'); -test(macro, '-5678', '24', '-237', '10'); -test(macro, '5678', '-24', '-237', '-10'); -test(macro, '-5678', '-24', '236', '-14'); -test(macro, '5678', '27', '210', '8'); -test(macro, '-5678', '27', '-211', '19'); -test(macro, '5678', '-27', '-211', '-19'); -test(macro, '-5678', '-27', '210', '-8'); -test(macro, '5678', '29', '195', '23'); -test(macro, '-5678', '29', '-196', '6'); -test(macro, '5678', '-29', '-196', '-6'); -test(macro, '-5678', '-29', '195', '-23'); -test(macro, '5678', '1234', '4', '742'); -test(macro, '-5678', '1234', '-5', '492'); -test(macro, '5678', '-1234', '-5', '-492'); -test(macro, '-5678', '-1234', '4', '-742'); -test(macro, '5678', '5678', '1', '0'); -test(macro, '-5678', '5678', '-1', '0'); -test(macro, '5678', '-5678', '-1', '0'); -test(macro, '-5678', '-5678', '1', '0'); -test(macro, '5678', '94906265', '0', '5678'); -test(macro, '-5678', '94906265', '-1', '94900587'); -test(macro, '5678', '-94906265', '-1', '-94900587'); -test(macro, '-5678', '-94906265', '0', '-5678'); -test(macro, '5678', '94906266', '0', '5678'); -test(macro, '-5678', '94906266', '-1', '94900588'); -test(macro, '5678', '-94906266', '-1', '-94900588'); -test(macro, '-5678', '-94906266', '0', '-5678'); -test(macro, '5678', '1073741824', '0', '5678'); -test(macro, '-5678', '1073741824', '-1', '1073736146'); -test(macro, '5678', '-1073741824', '-1', '-1073736146'); -test(macro, '-5678', '-1073741824', '0', '-5678'); -test(macro, '5678', '51676101935731', '0', '5678'); -test(macro, '-5678', '51676101935731', '-1', '51676101930053'); -test(macro, '5678', '-51676101935731', '-1', '-51676101930053'); -test(macro, '-5678', '-51676101935731', '0', '-5678'); -test(macro, '5678', '717897987691852588770249', '0', '5678'); -test( - macro, - '-5678', - '717897987691852588770249', - '-1', - '717897987691852588764571', -); -test( - macro, - '5678', - '-717897987691852588770249', - '-1', - '-717897987691852588764571', -); -test(macro, '-5678', '-717897987691852588770249', '0', '-5678'); -test(macro, '94906265', '1', '94906265', '0'); -test(macro, '-94906265', '1', '-94906265', '0'); -test(macro, '94906265', '-1', '-94906265', '0'); -test(macro, '-94906265', '-1', '94906265', '0'); -test(macro, '94906265', '3', '31635421', '2'); -test(macro, '-94906265', '3', '-31635422', '1'); -test(macro, '94906265', '-3', '-31635422', '-1'); -test(macro, '-94906265', '-3', '31635421', '-2'); -test(macro, '94906265', '7', '13558037', '6'); -test(macro, '-94906265', '7', '-13558038', '1'); -test(macro, '94906265', '-7', '-13558038', '-1'); -test(macro, '-94906265', '-7', '13558037', '-6'); -test(macro, '94906265', '9', '10545140', '5'); -test(macro, '-94906265', '9', '-10545141', '4'); -test(macro, '94906265', '-9', '-10545141', '-4'); -test(macro, '-94906265', '-9', '10545140', '-5'); -test(macro, '94906265', '11', '8627842', '3'); -test(macro, '-94906265', '11', '-8627843', '8'); -test(macro, '94906265', '-11', '-8627843', '-8'); -test(macro, '-94906265', '-11', '8627842', '-3'); -test(macro, '94906265', '17', '5582721', '8'); -test(macro, '-94906265', '17', '-5582722', '9'); -test(macro, '94906265', '-17', '-5582722', '-9'); -test(macro, '-94906265', '-17', '5582721', '-8'); -test(macro, '94906265', '22', '4313921', '3'); -test(macro, '-94906265', '22', '-4313922', '19'); -test(macro, '94906265', '-22', '-4313922', '-19'); -test(macro, '-94906265', '-22', '4313921', '-3'); -test(macro, '94906265', '24', '3954427', '17'); -test(macro, '-94906265', '24', '-3954428', '7'); -test(macro, '94906265', '-24', '-3954428', '-7'); -test(macro, '-94906265', '-24', '3954427', '-17'); -test(macro, '94906265', '27', '3515046', '23'); -test(macro, '-94906265', '27', '-3515047', '4'); -test(macro, '94906265', '-27', '-3515047', '-4'); -test(macro, '-94906265', '-27', '3515046', '-23'); -test(macro, '94906265', '29', '3272629', '24'); -test(macro, '-94906265', '29', '-3272630', '5'); -test(macro, '94906265', '-29', '-3272630', '-5'); -test(macro, '-94906265', '-29', '3272629', '-24'); -test(macro, '94906265', '1234', '76909', '559'); -test(macro, '-94906265', '1234', '-76910', '675'); -test(macro, '94906265', '-1234', '-76910', '-675'); -test(macro, '-94906265', '-1234', '76909', '-559'); -test(macro, '94906265', '5678', '16714', '4173'); -test(macro, '-94906265', '5678', '-16715', '1505'); -test(macro, '94906265', '-5678', '-16715', '-1505'); -test(macro, '-94906265', '-5678', '16714', '-4173'); -test(macro, '94906265', '94906265', '1', '0'); -test(macro, '-94906265', '94906265', '-1', '0'); -test(macro, '94906265', '-94906265', '-1', '0'); -test(macro, '-94906265', '-94906265', '1', '0'); -test(macro, '94906265', '94906266', '0', '94906265'); -test(macro, '-94906265', '94906266', '-1', '1'); -test(macro, '94906265', '-94906266', '-1', '-1'); -test(macro, '-94906265', '-94906266', '0', '-94906265'); -test(macro, '94906265', '1073741824', '0', '94906265'); -test(macro, '-94906265', '1073741824', '-1', '978835559'); -test(macro, '94906265', '-1073741824', '-1', '-978835559'); -test(macro, '-94906265', '-1073741824', '0', '-94906265'); -test(macro, '94906265', '51676101935731', '0', '94906265'); -test(macro, '-94906265', '51676101935731', '-1', '51676007029466'); -test(macro, '94906265', '-51676101935731', '-1', '-51676007029466'); -test(macro, '-94906265', '-51676101935731', '0', '-94906265'); -test(macro, '94906265', '717897987691852588770249', '0', '94906265'); -test( - macro, - '-94906265', - '717897987691852588770249', - '-1', - '717897987691852493863984', -); -test( - macro, - '94906265', - '-717897987691852588770249', - '-1', - '-717897987691852493863984', -); -test(macro, '-94906265', '-717897987691852588770249', '0', '-94906265'); -test(macro, '94906266', '1', '94906266', '0'); -test(macro, '-94906266', '1', '-94906266', '0'); -test(macro, '94906266', '-1', '-94906266', '0'); -test(macro, '-94906266', '-1', '94906266', '0'); -test(macro, '94906266', '3', '31635422', '0'); -test(macro, '-94906266', '3', '-31635422', '0'); -test(macro, '94906266', '-3', '-31635422', '0'); -test(macro, '-94906266', '-3', '31635422', '0'); -test(macro, '94906266', '7', '13558038', '0'); -test(macro, '-94906266', '7', '-13558038', '0'); -test(macro, '94906266', '-7', '-13558038', '0'); -test(macro, '-94906266', '-7', '13558038', '0'); -test(macro, '94906266', '9', '10545140', '6'); -test(macro, '-94906266', '9', '-10545141', '3'); -test(macro, '94906266', '-9', '-10545141', '-3'); -test(macro, '-94906266', '-9', '10545140', '-6'); -test(macro, '94906266', '11', '8627842', '4'); -test(macro, '-94906266', '11', '-8627843', '7'); -test(macro, '94906266', '-11', '-8627843', '-7'); -test(macro, '-94906266', '-11', '8627842', '-4'); -test(macro, '94906266', '17', '5582721', '9'); -test(macro, '-94906266', '17', '-5582722', '8'); -test(macro, '94906266', '-17', '-5582722', '-8'); -test(macro, '-94906266', '-17', '5582721', '-9'); -test(macro, '94906266', '22', '4313921', '4'); -test(macro, '-94906266', '22', '-4313922', '18'); -test(macro, '94906266', '-22', '-4313922', '-18'); -test(macro, '-94906266', '-22', '4313921', '-4'); -test(macro, '94906266', '24', '3954427', '18'); -test(macro, '-94906266', '24', '-3954428', '6'); -test(macro, '94906266', '-24', '-3954428', '-6'); -test(macro, '-94906266', '-24', '3954427', '-18'); -test(macro, '94906266', '27', '3515046', '24'); -test(macro, '-94906266', '27', '-3515047', '3'); -test(macro, '94906266', '-27', '-3515047', '-3'); -test(macro, '-94906266', '-27', '3515046', '-24'); -test(macro, '94906266', '29', '3272629', '25'); -test(macro, '-94906266', '29', '-3272630', '4'); -test(macro, '94906266', '-29', '-3272630', '-4'); -test(macro, '-94906266', '-29', '3272629', '-25'); -test(macro, '94906266', '1234', '76909', '560'); -test(macro, '-94906266', '1234', '-76910', '674'); -test(macro, '94906266', '-1234', '-76910', '-674'); -test(macro, '-94906266', '-1234', '76909', '-560'); -test(macro, '94906266', '5678', '16714', '4174'); -test(macro, '-94906266', '5678', '-16715', '1504'); -test(macro, '94906266', '-5678', '-16715', '-1504'); -test(macro, '-94906266', '-5678', '16714', '-4174'); -test(macro, '94906266', '94906265', '1', '1'); -test(macro, '-94906266', '94906265', '-2', '94906264'); -test(macro, '94906266', '-94906265', '-2', '-94906264'); -test(macro, '-94906266', '-94906265', '1', '-1'); -test(macro, '94906266', '94906266', '1', '0'); -test(macro, '-94906266', '94906266', '-1', '0'); -test(macro, '94906266', '-94906266', '-1', '0'); -test(macro, '-94906266', '-94906266', '1', '0'); -test(macro, '94906266', '1073741824', '0', '94906266'); -test(macro, '-94906266', '1073741824', '-1', '978835558'); -test(macro, '94906266', '-1073741824', '-1', '-978835558'); -test(macro, '-94906266', '-1073741824', '0', '-94906266'); -test(macro, '94906266', '51676101935731', '0', '94906266'); -test(macro, '-94906266', '51676101935731', '-1', '51676007029465'); -test(macro, '94906266', '-51676101935731', '-1', '-51676007029465'); -test(macro, '-94906266', '-51676101935731', '0', '-94906266'); -test(macro, '94906266', '717897987691852588770249', '0', '94906266'); -test( - macro, - '-94906266', - '717897987691852588770249', - '-1', - '717897987691852493863983', -); -test( - macro, - '94906266', - '-717897987691852588770249', - '-1', - '-717897987691852493863983', -); -test(macro, '-94906266', '-717897987691852588770249', '0', '-94906266'); -test(macro, '1073741824', '1', '1073741824', '0'); -test(macro, '-1073741824', '1', '-1073741824', '0'); -test(macro, '1073741824', '-1', '-1073741824', '0'); -test(macro, '-1073741824', '-1', '1073741824', '0'); -test(macro, '1073741824', '3', '357913941', '1'); -test(macro, '-1073741824', '3', '-357913942', '2'); -test(macro, '1073741824', '-3', '-357913942', '-2'); -test(macro, '-1073741824', '-3', '357913941', '-1'); -test(macro, '1073741824', '7', '153391689', '1'); -test(macro, '-1073741824', '7', '-153391690', '6'); -test(macro, '1073741824', '-7', '-153391690', '-6'); -test(macro, '-1073741824', '-7', '153391689', '-1'); -test(macro, '1073741824', '9', '119304647', '1'); -test(macro, '-1073741824', '9', '-119304648', '8'); -test(macro, '1073741824', '-9', '-119304648', '-8'); -test(macro, '-1073741824', '-9', '119304647', '-1'); -test(macro, '1073741824', '11', '97612893', '1'); -test(macro, '-1073741824', '11', '-97612894', '10'); -test(macro, '1073741824', '-11', '-97612894', '-10'); -test(macro, '-1073741824', '-11', '97612893', '-1'); -test(macro, '1073741824', '17', '63161283', '13'); -test(macro, '-1073741824', '17', '-63161284', '4'); -test(macro, '1073741824', '-17', '-63161284', '-4'); -test(macro, '-1073741824', '-17', '63161283', '-13'); -test(macro, '1073741824', '22', '48806446', '12'); -test(macro, '-1073741824', '22', '-48806447', '10'); -test(macro, '1073741824', '-22', '-48806447', '-10'); -test(macro, '-1073741824', '-22', '48806446', '-12'); -test(macro, '1073741824', '24', '44739242', '16'); -test(macro, '-1073741824', '24', '-44739243', '8'); -test(macro, '1073741824', '-24', '-44739243', '-8'); -test(macro, '-1073741824', '-24', '44739242', '-16'); -test(macro, '1073741824', '27', '39768215', '19'); -test(macro, '-1073741824', '27', '-39768216', '8'); -test(macro, '1073741824', '-27', '-39768216', '-8'); -test(macro, '-1073741824', '-27', '39768215', '-19'); -test(macro, '1073741824', '29', '37025580', '4'); -test(macro, '-1073741824', '29', '-37025581', '25'); -test(macro, '1073741824', '-29', '-37025581', '-25'); -test(macro, '-1073741824', '-29', '37025580', '-4'); -test(macro, '1073741824', '1234', '870131', '170'); -test(macro, '-1073741824', '1234', '-870132', '1064'); -test(macro, '1073741824', '-1234', '-870132', '-1064'); -test(macro, '-1073741824', '-1234', '870131', '-170'); -test(macro, '1073741824', '5678', '189105', '3634'); -test(macro, '-1073741824', '5678', '-189106', '2044'); -test(macro, '1073741824', '-5678', '-189106', '-2044'); -test(macro, '-1073741824', '-5678', '189105', '-3634'); -test(macro, '1073741824', '94906265', '11', '29772909'); -test(macro, '-1073741824', '94906265', '-12', '65133356'); -test(macro, '1073741824', '-94906265', '-12', '-65133356'); -test(macro, '-1073741824', '-94906265', '11', '-29772909'); -test(macro, '1073741824', '94906266', '11', '29772898'); -test(macro, '-1073741824', '94906266', '-12', '65133368'); -test(macro, '1073741824', '-94906266', '-12', '-65133368'); -test(macro, '-1073741824', '-94906266', '11', '-29772898'); -test(macro, '1073741824', '1073741824', '1', '0'); -test(macro, '-1073741824', '1073741824', '-1', '0'); -test(macro, '1073741824', '-1073741824', '-1', '0'); -test(macro, '-1073741824', '-1073741824', '1', '0'); -test(macro, '1073741824', '51676101935731', '0', '1073741824'); -test(macro, '-1073741824', '51676101935731', '-1', '51675028193907'); -test(macro, '1073741824', '-51676101935731', '-1', '-51675028193907'); -test(macro, '-1073741824', '-51676101935731', '0', '-1073741824'); -test(macro, '1073741824', '717897987691852588770249', '0', '1073741824'); -test( - macro, - '-1073741824', - '717897987691852588770249', - '-1', - '717897987691851515028425', -); -test( - macro, - '1073741824', - '-717897987691852588770249', - '-1', - '-717897987691851515028425', -); -test(macro, '-1073741824', '-717897987691852588770249', '0', '-1073741824'); -test(macro, '51676101935731', '1', '51676101935731', '0'); -test(macro, '-51676101935731', '1', '-51676101935731', '0'); -test(macro, '51676101935731', '-1', '-51676101935731', '0'); -test(macro, '-51676101935731', '-1', '51676101935731', '0'); -test(macro, '51676101935731', '3', '17225367311910', '1'); -test(macro, '-51676101935731', '3', '-17225367311911', '2'); -test(macro, '51676101935731', '-3', '-17225367311911', '-2'); -test(macro, '-51676101935731', '-3', '17225367311910', '-1'); -test(macro, '51676101935731', '7', '7382300276533', '0'); -test(macro, '-51676101935731', '7', '-7382300276533', '0'); -test(macro, '51676101935731', '-7', '-7382300276533', '0'); -test(macro, '-51676101935731', '-7', '7382300276533', '0'); -test(macro, '51676101935731', '9', '5741789103970', '1'); -test(macro, '-51676101935731', '9', '-5741789103971', '8'); -test(macro, '51676101935731', '-9', '-5741789103971', '-8'); -test(macro, '-51676101935731', '-9', '5741789103970', '-1'); -test(macro, '51676101935731', '11', '4697827448702', '9'); -test(macro, '-51676101935731', '11', '-4697827448703', '2'); -test(macro, '51676101935731', '-11', '-4697827448703', '-2'); -test(macro, '-51676101935731', '-11', '4697827448702', '-9'); -test(macro, '51676101935731', '17', '3039770702101', '14'); -test(macro, '-51676101935731', '17', '-3039770702102', '3'); -test(macro, '51676101935731', '-17', '-3039770702102', '-3'); -test(macro, '-51676101935731', '-17', '3039770702101', '-14'); -test(macro, '51676101935731', '22', '2348913724351', '9'); -test(macro, '-51676101935731', '22', '-2348913724352', '13'); -test(macro, '51676101935731', '-22', '-2348913724352', '-13'); -test(macro, '-51676101935731', '-22', '2348913724351', '-9'); -test(macro, '51676101935731', '24', '2153170913988', '19'); -test(macro, '-51676101935731', '24', '-2153170913989', '5'); -test(macro, '51676101935731', '-24', '-2153170913989', '-5'); -test(macro, '-51676101935731', '-24', '2153170913988', '-19'); -test(macro, '51676101935731', '27', '1913929701323', '10'); -test(macro, '-51676101935731', '27', '-1913929701324', '17'); -test(macro, '51676101935731', '-27', '-1913929701324', '-17'); -test(macro, '-51676101935731', '-27', '1913929701323', '-10'); -test(macro, '51676101935731', '29', '1781934549507', '28'); -test(macro, '-51676101935731', '29', '-1781934549508', '1'); -test(macro, '51676101935731', '-29', '-1781934549508', '-1'); -test(macro, '-51676101935731', '-29', '1781934549507', '-28'); -test(macro, '51676101935731', '1234', '41876905944', '835'); -test(macro, '-51676101935731', '1234', '-41876905945', '399'); -test(macro, '51676101935731', '-1234', '-41876905945', '-399'); -test(macro, '-51676101935731', '-1234', '41876905944', '-835'); -test(macro, '51676101935731', '5678', '9101109886', '3023'); -test(macro, '-51676101935731', '5678', '-9101109887', '2655'); -test(macro, '51676101935731', '-5678', '-9101109887', '-2655'); -test(macro, '-51676101935731', '-5678', '9101109886', '-3023'); -test(macro, '51676101935731', '94906265', '544496', '20268291'); -test(macro, '-51676101935731', '94906265', '-544497', '74637974'); -test(macro, '51676101935731', '-94906265', '-544497', '-74637974'); -test(macro, '-51676101935731', '-94906265', '544496', '-20268291'); -test(macro, '51676101935731', '94906266', '544496', '19723795'); -test(macro, '-51676101935731', '94906266', '-544497', '75182471'); -test(macro, '51676101935731', '-94906266', '-544497', '-75182471'); -test(macro, '-51676101935731', '-94906266', '544496', '-19723795'); -test(macro, '51676101935731', '1073741824', '48127', '129172083'); -test(macro, '-51676101935731', '1073741824', '-48128', '944569741'); -test(macro, '51676101935731', '-1073741824', '-48128', '-944569741'); -test(macro, '-51676101935731', '-1073741824', '48127', '-129172083'); -test(macro, '51676101935731', '51676101935731', '1', '0'); -test(macro, '-51676101935731', '51676101935731', '-1', '0'); -test(macro, '51676101935731', '-51676101935731', '-1', '0'); -test(macro, '-51676101935731', '-51676101935731', '1', '0'); -test( - macro, - '51676101935731', - '717897987691852588770249', - '0', - '51676101935731', -); -test( - macro, - '-51676101935731', - '717897987691852588770249', - '-1', - '717897987640176486834518', -); -test( - macro, - '51676101935731', - '-717897987691852588770249', - '-1', - '-717897987640176486834518', -); -test( - macro, - '-51676101935731', - '-717897987691852588770249', - '0', - '-51676101935731', -); -test(macro, '717897987691852588770249', '1', '717897987691852588770249', '0'); -test(macro, '-717897987691852588770249', '1', '-717897987691852588770249', '0'); -test(macro, '717897987691852588770249', '-1', '-717897987691852588770249', '0'); -test(macro, '-717897987691852588770249', '-1', '717897987691852588770249', '0'); -test(macro, '717897987691852588770249', '3', '239299329230617529590083', '0'); -test(macro, '-717897987691852588770249', '3', '-239299329230617529590083', '0'); -test(macro, '717897987691852588770249', '-3', '-239299329230617529590083', '0'); -test(macro, '-717897987691852588770249', '-3', '239299329230617529590083', '0'); -test(macro, '717897987691852588770249', '7', '102556855384550369824321', '2'); -test(macro, '-717897987691852588770249', '7', '-102556855384550369824322', '5'); -test( - macro, - '717897987691852588770249', - '-7', - '-102556855384550369824322', - '-5', -); -test( - macro, - '-717897987691852588770249', - '-7', - '102556855384550369824321', - '-2', -); -test(macro, '717897987691852588770249', '9', '79766443076872509863361', '0'); -test(macro, '-717897987691852588770249', '9', '-79766443076872509863361', '0'); -test(macro, '717897987691852588770249', '-9', '-79766443076872509863361', '0'); -test(macro, '-717897987691852588770249', '-9', '79766443076872509863361', '0'); -test(macro, '717897987691852588770249', '11', '65263453426532053524568', '1'); -test( - macro, - '-717897987691852588770249', - '11', - '-65263453426532053524569', - '10', -); -test( - macro, - '717897987691852588770249', - '-11', - '-65263453426532053524569', - '-10', -); -test( - macro, - '-717897987691852588770249', - '-11', - '65263453426532053524568', - '-1', -); -test(macro, '717897987691852588770249', '17', '42229293393638387574720', '9'); -test(macro, '-717897987691852588770249', '17', '-42229293393638387574721', '8'); -test( - macro, - '717897987691852588770249', - '-17', - '-42229293393638387574721', - '-8', -); -test( - macro, - '-717897987691852588770249', - '-17', - '42229293393638387574720', - '-9', -); -test(macro, '717897987691852588770249', '22', '32631726713266026762284', '1'); -test( - macro, - '-717897987691852588770249', - '22', - '-32631726713266026762285', - '21', -); -test( - macro, - '717897987691852588770249', - '-22', - '-32631726713266026762285', - '-21', -); -test( - macro, - '-717897987691852588770249', - '-22', - '32631726713266026762284', - '-1', -); -test(macro, '717897987691852588770249', '24', '29912416153827191198760', '9'); -test( - macro, - '-717897987691852588770249', - '24', - '-29912416153827191198761', - '15', -); -test( - macro, - '717897987691852588770249', - '-24', - '-29912416153827191198761', - '-15', -); -test( - macro, - '-717897987691852588770249', - '-24', - '29912416153827191198760', - '-9', -); -test(macro, '717897987691852588770249', '27', '26588814358957503287787', '0'); -test(macro, '-717897987691852588770249', '27', '-26588814358957503287787', '0'); -test(macro, '717897987691852588770249', '-27', '-26588814358957503287787', '0'); -test(macro, '-717897987691852588770249', '-27', '26588814358957503287787', '0'); -test(macro, '717897987691852588770249', '29', '24755103023856985819663', '22'); -test(macro, '-717897987691852588770249', '29', '-24755103023856985819664', '7'); -test( - macro, - '717897987691852588770249', - '-29', - '-24755103023856985819664', - '-7', -); -test( - macro, - '-717897987691852588770249', - '-29', - '24755103023856985819663', - '-22', -); -test(macro, '717897987691852588770249', '1234', '581764981922084755891', '755'); -test( - macro, - '-717897987691852588770249', - '1234', - '-581764981922084755892', - '479', -); -test( - macro, - '717897987691852588770249', - '-1234', - '-581764981922084755892', - '-479', -); -test( - macro, - '-717897987691852588770249', - '-1234', - '581764981922084755891', - '-755', -); -test( - macro, - '717897987691852588770249', - '5678', - '126435010160593974774', - '3477', -); -test( - macro, - '-717897987691852588770249', - '5678', - '-126435010160593974775', - '2201', -); -test( - macro, - '717897987691852588770249', - '-5678', - '-126435010160593974775', - '-2201', -); -test( - macro, - '-717897987691852588770249', - '-5678', - '126435010160593974774', - '-3477', -); -test( - macro, - '717897987691852588770249', - '94906265', - '7564284483135571', - '56517934', -); -test( - macro, - '-717897987691852588770249', - '94906265', - '-7564284483135572', - '38388331', -); -test( - macro, - '717897987691852588770249', - '-94906265', - '-7564284483135572', - '-38388331', -); -test( - macro, - '-717897987691852588770249', - '-94906265', - '7564284483135571', - '-56517934', -); -test( - macro, - '717897987691852588770249', - '94906266', - '7564284403432883', - '81625371', -); -test( - macro, - '-717897987691852588770249', - '94906266', - '-7564284403432884', - '13280895', -); -test( - macro, - '717897987691852588770249', - '-94906266', - '-7564284403432884', - '-13280895', -); -test( - macro, - '-717897987691852588770249', - '-94906266', - '7564284403432883', - '-81625371', -); -test( - macro, - '717897987691852588770249', - '1073741824', - '668594602208447', - '278782921', -); -test( - macro, - '-717897987691852588770249', - '1073741824', - '-668594602208448', - '794958903', -); -test( - macro, - '717897987691852588770249', - '-1073741824', - '-668594602208448', - '-794958903', -); -test( - macro, - '-717897987691852588770249', - '-1073741824', - '668594602208447', - '-278782921', -); -test( - macro, - '717897987691852588770249', - '51676101935731', - '13892262782', - '51258661506607', -); -test( - macro, - '-717897987691852588770249', - '51676101935731', - '-13892262783', - '417440429124', -); -test( - macro, - '717897987691852588770249', - '-51676101935731', - '-13892262783', - '-417440429124', -); -test( - macro, - '-717897987691852588770249', - '-51676101935731', - '13892262782', - '-51258661506607', -); -test(macro, '717897987691852588770249', '717897987691852588770249', '1', '0'); -test(macro, '-717897987691852588770249', '717897987691852588770249', '-1', '0'); -test(macro, '717897987691852588770249', '-717897987691852588770249', '-1', '0'); -test(macro, '-717897987691852588770249', '-717897987691852588770249', '1', '0'); diff --git a/test/src/integer/arithmetic/idivmodn.js b/test/src/integer/arithmetic/idivmodn.js deleted file mode 100644 index 1b86e86..0000000 --- a/test/src/integer/arithmetic/idivmodn.js +++ /dev/null @@ -1,1262 +0,0 @@ -import test from 'ava'; -import {parse, stringify, idivmodn} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C, D) { - const a = parse(A); - const [c, d] = idivmodn(a, B); - t.is(stringify(a), D); - t.is(stringify(c), C); - t.is(stringify(d), D); -} - -macro.title = (_, A, B, C, D) => - `idivmodn(${fmt(A)},${B}) = [${fmt(C)},${fmt(D)}]`; - -test(macro, '0', 1, '0', '0'); -test(macro, '0', -1, '0', '0'); -test(macro, '0', 3, '0', '0'); -test(macro, '0', -3, '0', '0'); -test(macro, '0', 7, '0', '0'); -test(macro, '0', -7, '0', '0'); -test(macro, '0', 9, '0', '0'); -test(macro, '0', -9, '0', '0'); -test(macro, '0', 11, '0', '0'); -test(macro, '0', -11, '0', '0'); -test(macro, '0', 17, '0', '0'); -test(macro, '0', -17, '0', '0'); -test(macro, '0', 22, '0', '0'); -test(macro, '0', -22, '0', '0'); -test(macro, '0', 24, '0', '0'); -test(macro, '0', -24, '0', '0'); -test(macro, '0', 27, '0', '0'); -test(macro, '0', -27, '0', '0'); -test(macro, '0', 29, '0', '0'); -test(macro, '0', -29, '0', '0'); -test(macro, '0', 1234, '0', '0'); -test(macro, '0', -1234, '0', '0'); -test(macro, '0', 5678, '0', '0'); -test(macro, '0', -5678, '0', '0'); -test(macro, '0', 94906265, '0', '0'); -test(macro, '0', -94906265, '0', '0'); -test(macro, '0', 94906266, '0', '0'); -test(macro, '0', -94906266, '0', '0'); -test(macro, '0', 1073741824, '0', '0'); -test(macro, '0', -1073741824, '0', '0'); -test(macro, '0', 51676101935731, '0', '0'); -test(macro, '0', -51676101935731, '0', '0'); -test(macro, '1', 1, '1', '0'); -test(macro, '-1', 1, '-1', '0'); -test(macro, '1', -1, '-1', '0'); -test(macro, '-1', -1, '1', '0'); -test(macro, '1', 3, '0', '1'); -test(macro, '-1', 3, '-1', '2'); -test(macro, '1', -3, '-1', '-2'); -test(macro, '-1', -3, '0', '-1'); -test(macro, '1', 7, '0', '1'); -test(macro, '-1', 7, '-1', '6'); -test(macro, '1', -7, '-1', '-6'); -test(macro, '-1', -7, '0', '-1'); -test(macro, '1', 9, '0', '1'); -test(macro, '-1', 9, '-1', '8'); -test(macro, '1', -9, '-1', '-8'); -test(macro, '-1', -9, '0', '-1'); -test(macro, '1', 11, '0', '1'); -test(macro, '-1', 11, '-1', '10'); -test(macro, '1', -11, '-1', '-10'); -test(macro, '-1', -11, '0', '-1'); -test(macro, '1', 17, '0', '1'); -test(macro, '-1', 17, '-1', '16'); -test(macro, '1', -17, '-1', '-16'); -test(macro, '-1', -17, '0', '-1'); -test(macro, '1', 22, '0', '1'); -test(macro, '-1', 22, '-1', '21'); -test(macro, '1', -22, '-1', '-21'); -test(macro, '-1', -22, '0', '-1'); -test(macro, '1', 24, '0', '1'); -test(macro, '-1', 24, '-1', '23'); -test(macro, '1', -24, '-1', '-23'); -test(macro, '-1', -24, '0', '-1'); -test(macro, '1', 27, '0', '1'); -test(macro, '-1', 27, '-1', '26'); -test(macro, '1', -27, '-1', '-26'); -test(macro, '-1', -27, '0', '-1'); -test(macro, '1', 29, '0', '1'); -test(macro, '-1', 29, '-1', '28'); -test(macro, '1', -29, '-1', '-28'); -test(macro, '-1', -29, '0', '-1'); -test(macro, '1', 1234, '0', '1'); -test(macro, '-1', 1234, '-1', '1233'); -test(macro, '1', -1234, '-1', '-1233'); -test(macro, '-1', -1234, '0', '-1'); -test(macro, '1', 5678, '0', '1'); -test(macro, '-1', 5678, '-1', '5677'); -test(macro, '1', -5678, '-1', '-5677'); -test(macro, '-1', -5678, '0', '-1'); -test(macro, '1', 94906265, '0', '1'); -test(macro, '-1', 94906265, '-1', '94906264'); -test(macro, '1', -94906265, '-1', '-94906264'); -test(macro, '-1', -94906265, '0', '-1'); -test(macro, '1', 94906266, '0', '1'); -test(macro, '-1', 94906266, '-1', '94906265'); -test(macro, '1', -94906266, '-1', '-94906265'); -test(macro, '-1', -94906266, '0', '-1'); -test(macro, '1', 1073741824, '0', '1'); -test(macro, '-1', 1073741824, '-1', '1073741823'); -test(macro, '1', -1073741824, '-1', '-1073741823'); -test(macro, '-1', -1073741824, '0', '-1'); -test(macro, '1', 51676101935731, '0', '1'); -test(macro, '-1', 51676101935731, '-1', '51676101935730'); -test(macro, '1', -51676101935731, '-1', '-51676101935730'); -test(macro, '-1', -51676101935731, '0', '-1'); -test(macro, '3', 1, '3', '0'); -test(macro, '-3', 1, '-3', '0'); -test(macro, '3', -1, '-3', '0'); -test(macro, '-3', -1, '3', '0'); -test(macro, '3', 3, '1', '0'); -test(macro, '-3', 3, '-1', '0'); -test(macro, '3', -3, '-1', '0'); -test(macro, '-3', -3, '1', '0'); -test(macro, '3', 7, '0', '3'); -test(macro, '-3', 7, '-1', '4'); -test(macro, '3', -7, '-1', '-4'); -test(macro, '-3', -7, '0', '-3'); -test(macro, '3', 9, '0', '3'); -test(macro, '-3', 9, '-1', '6'); -test(macro, '3', -9, '-1', '-6'); -test(macro, '-3', -9, '0', '-3'); -test(macro, '3', 11, '0', '3'); -test(macro, '-3', 11, '-1', '8'); -test(macro, '3', -11, '-1', '-8'); -test(macro, '-3', -11, '0', '-3'); -test(macro, '3', 17, '0', '3'); -test(macro, '-3', 17, '-1', '14'); -test(macro, '3', -17, '-1', '-14'); -test(macro, '-3', -17, '0', '-3'); -test(macro, '3', 22, '0', '3'); -test(macro, '-3', 22, '-1', '19'); -test(macro, '3', -22, '-1', '-19'); -test(macro, '-3', -22, '0', '-3'); -test(macro, '3', 24, '0', '3'); -test(macro, '-3', 24, '-1', '21'); -test(macro, '3', -24, '-1', '-21'); -test(macro, '-3', -24, '0', '-3'); -test(macro, '3', 27, '0', '3'); -test(macro, '-3', 27, '-1', '24'); -test(macro, '3', -27, '-1', '-24'); -test(macro, '-3', -27, '0', '-3'); -test(macro, '3', 29, '0', '3'); -test(macro, '-3', 29, '-1', '26'); -test(macro, '3', -29, '-1', '-26'); -test(macro, '-3', -29, '0', '-3'); -test(macro, '3', 1234, '0', '3'); -test(macro, '-3', 1234, '-1', '1231'); -test(macro, '3', -1234, '-1', '-1231'); -test(macro, '-3', -1234, '0', '-3'); -test(macro, '3', 5678, '0', '3'); -test(macro, '-3', 5678, '-1', '5675'); -test(macro, '3', -5678, '-1', '-5675'); -test(macro, '-3', -5678, '0', '-3'); -test(macro, '3', 94906265, '0', '3'); -test(macro, '-3', 94906265, '-1', '94906262'); -test(macro, '3', -94906265, '-1', '-94906262'); -test(macro, '-3', -94906265, '0', '-3'); -test(macro, '3', 94906266, '0', '3'); -test(macro, '-3', 94906266, '-1', '94906263'); -test(macro, '3', -94906266, '-1', '-94906263'); -test(macro, '-3', -94906266, '0', '-3'); -test(macro, '3', 1073741824, '0', '3'); -test(macro, '-3', 1073741824, '-1', '1073741821'); -test(macro, '3', -1073741824, '-1', '-1073741821'); -test(macro, '-3', -1073741824, '0', '-3'); -test(macro, '3', 51676101935731, '0', '3'); -test(macro, '-3', 51676101935731, '-1', '51676101935728'); -test(macro, '3', -51676101935731, '-1', '-51676101935728'); -test(macro, '-3', -51676101935731, '0', '-3'); -test(macro, '7', 1, '7', '0'); -test(macro, '-7', 1, '-7', '0'); -test(macro, '7', -1, '-7', '0'); -test(macro, '-7', -1, '7', '0'); -test(macro, '7', 3, '2', '1'); -test(macro, '-7', 3, '-3', '2'); -test(macro, '7', -3, '-3', '-2'); -test(macro, '-7', -3, '2', '-1'); -test(macro, '7', 7, '1', '0'); -test(macro, '-7', 7, '-1', '0'); -test(macro, '7', -7, '-1', '0'); -test(macro, '-7', -7, '1', '0'); -test(macro, '7', 9, '0', '7'); -test(macro, '-7', 9, '-1', '2'); -test(macro, '7', -9, '-1', '-2'); -test(macro, '-7', -9, '0', '-7'); -test(macro, '7', 11, '0', '7'); -test(macro, '-7', 11, '-1', '4'); -test(macro, '7', -11, '-1', '-4'); -test(macro, '-7', -11, '0', '-7'); -test(macro, '7', 17, '0', '7'); -test(macro, '-7', 17, '-1', '10'); -test(macro, '7', -17, '-1', '-10'); -test(macro, '-7', -17, '0', '-7'); -test(macro, '7', 22, '0', '7'); -test(macro, '-7', 22, '-1', '15'); -test(macro, '7', -22, '-1', '-15'); -test(macro, '-7', -22, '0', '-7'); -test(macro, '7', 24, '0', '7'); -test(macro, '-7', 24, '-1', '17'); -test(macro, '7', -24, '-1', '-17'); -test(macro, '-7', -24, '0', '-7'); -test(macro, '7', 27, '0', '7'); -test(macro, '-7', 27, '-1', '20'); -test(macro, '7', -27, '-1', '-20'); -test(macro, '-7', -27, '0', '-7'); -test(macro, '7', 29, '0', '7'); -test(macro, '-7', 29, '-1', '22'); -test(macro, '7', -29, '-1', '-22'); -test(macro, '-7', -29, '0', '-7'); -test(macro, '7', 1234, '0', '7'); -test(macro, '-7', 1234, '-1', '1227'); -test(macro, '7', -1234, '-1', '-1227'); -test(macro, '-7', -1234, '0', '-7'); -test(macro, '7', 5678, '0', '7'); -test(macro, '-7', 5678, '-1', '5671'); -test(macro, '7', -5678, '-1', '-5671'); -test(macro, '-7', -5678, '0', '-7'); -test(macro, '7', 94906265, '0', '7'); -test(macro, '-7', 94906265, '-1', '94906258'); -test(macro, '7', -94906265, '-1', '-94906258'); -test(macro, '-7', -94906265, '0', '-7'); -test(macro, '7', 94906266, '0', '7'); -test(macro, '-7', 94906266, '-1', '94906259'); -test(macro, '7', -94906266, '-1', '-94906259'); -test(macro, '-7', -94906266, '0', '-7'); -test(macro, '7', 1073741824, '0', '7'); -test(macro, '-7', 1073741824, '-1', '1073741817'); -test(macro, '7', -1073741824, '-1', '-1073741817'); -test(macro, '-7', -1073741824, '0', '-7'); -test(macro, '7', 51676101935731, '0', '7'); -test(macro, '-7', 51676101935731, '-1', '51676101935724'); -test(macro, '7', -51676101935731, '-1', '-51676101935724'); -test(macro, '-7', -51676101935731, '0', '-7'); -test(macro, '9', 1, '9', '0'); -test(macro, '-9', 1, '-9', '0'); -test(macro, '9', -1, '-9', '0'); -test(macro, '-9', -1, '9', '0'); -test(macro, '9', 3, '3', '0'); -test(macro, '-9', 3, '-3', '0'); -test(macro, '9', -3, '-3', '0'); -test(macro, '-9', -3, '3', '0'); -test(macro, '9', 7, '1', '2'); -test(macro, '-9', 7, '-2', '5'); -test(macro, '9', -7, '-2', '-5'); -test(macro, '-9', -7, '1', '-2'); -test(macro, '9', 9, '1', '0'); -test(macro, '-9', 9, '-1', '0'); -test(macro, '9', -9, '-1', '0'); -test(macro, '-9', -9, '1', '0'); -test(macro, '9', 11, '0', '9'); -test(macro, '-9', 11, '-1', '2'); -test(macro, '9', -11, '-1', '-2'); -test(macro, '-9', -11, '0', '-9'); -test(macro, '9', 17, '0', '9'); -test(macro, '-9', 17, '-1', '8'); -test(macro, '9', -17, '-1', '-8'); -test(macro, '-9', -17, '0', '-9'); -test(macro, '9', 22, '0', '9'); -test(macro, '-9', 22, '-1', '13'); -test(macro, '9', -22, '-1', '-13'); -test(macro, '-9', -22, '0', '-9'); -test(macro, '9', 24, '0', '9'); -test(macro, '-9', 24, '-1', '15'); -test(macro, '9', -24, '-1', '-15'); -test(macro, '-9', -24, '0', '-9'); -test(macro, '9', 27, '0', '9'); -test(macro, '-9', 27, '-1', '18'); -test(macro, '9', -27, '-1', '-18'); -test(macro, '-9', -27, '0', '-9'); -test(macro, '9', 29, '0', '9'); -test(macro, '-9', 29, '-1', '20'); -test(macro, '9', -29, '-1', '-20'); -test(macro, '-9', -29, '0', '-9'); -test(macro, '9', 1234, '0', '9'); -test(macro, '-9', 1234, '-1', '1225'); -test(macro, '9', -1234, '-1', '-1225'); -test(macro, '-9', -1234, '0', '-9'); -test(macro, '9', 5678, '0', '9'); -test(macro, '-9', 5678, '-1', '5669'); -test(macro, '9', -5678, '-1', '-5669'); -test(macro, '-9', -5678, '0', '-9'); -test(macro, '9', 94906265, '0', '9'); -test(macro, '-9', 94906265, '-1', '94906256'); -test(macro, '9', -94906265, '-1', '-94906256'); -test(macro, '-9', -94906265, '0', '-9'); -test(macro, '9', 94906266, '0', '9'); -test(macro, '-9', 94906266, '-1', '94906257'); -test(macro, '9', -94906266, '-1', '-94906257'); -test(macro, '-9', -94906266, '0', '-9'); -test(macro, '9', 1073741824, '0', '9'); -test(macro, '-9', 1073741824, '-1', '1073741815'); -test(macro, '9', -1073741824, '-1', '-1073741815'); -test(macro, '-9', -1073741824, '0', '-9'); -test(macro, '9', 51676101935731, '0', '9'); -test(macro, '-9', 51676101935731, '-1', '51676101935722'); -test(macro, '9', -51676101935731, '-1', '-51676101935722'); -test(macro, '-9', -51676101935731, '0', '-9'); -test(macro, '11', 1, '11', '0'); -test(macro, '-11', 1, '-11', '0'); -test(macro, '11', -1, '-11', '0'); -test(macro, '-11', -1, '11', '0'); -test(macro, '11', 3, '3', '2'); -test(macro, '-11', 3, '-4', '1'); -test(macro, '11', -3, '-4', '-1'); -test(macro, '-11', -3, '3', '-2'); -test(macro, '11', 7, '1', '4'); -test(macro, '-11', 7, '-2', '3'); -test(macro, '11', -7, '-2', '-3'); -test(macro, '-11', -7, '1', '-4'); -test(macro, '11', 9, '1', '2'); -test(macro, '-11', 9, '-2', '7'); -test(macro, '11', -9, '-2', '-7'); -test(macro, '-11', -9, '1', '-2'); -test(macro, '11', 11, '1', '0'); -test(macro, '-11', 11, '-1', '0'); -test(macro, '11', -11, '-1', '0'); -test(macro, '-11', -11, '1', '0'); -test(macro, '11', 17, '0', '11'); -test(macro, '-11', 17, '-1', '6'); -test(macro, '11', -17, '-1', '-6'); -test(macro, '-11', -17, '0', '-11'); -test(macro, '11', 22, '0', '11'); -test(macro, '-11', 22, '-1', '11'); -test(macro, '11', -22, '-1', '-11'); -test(macro, '-11', -22, '0', '-11'); -test(macro, '11', 24, '0', '11'); -test(macro, '-11', 24, '-1', '13'); -test(macro, '11', -24, '-1', '-13'); -test(macro, '-11', -24, '0', '-11'); -test(macro, '11', 27, '0', '11'); -test(macro, '-11', 27, '-1', '16'); -test(macro, '11', -27, '-1', '-16'); -test(macro, '-11', -27, '0', '-11'); -test(macro, '11', 29, '0', '11'); -test(macro, '-11', 29, '-1', '18'); -test(macro, '11', -29, '-1', '-18'); -test(macro, '-11', -29, '0', '-11'); -test(macro, '11', 1234, '0', '11'); -test(macro, '-11', 1234, '-1', '1223'); -test(macro, '11', -1234, '-1', '-1223'); -test(macro, '-11', -1234, '0', '-11'); -test(macro, '11', 5678, '0', '11'); -test(macro, '-11', 5678, '-1', '5667'); -test(macro, '11', -5678, '-1', '-5667'); -test(macro, '-11', -5678, '0', '-11'); -test(macro, '11', 94906265, '0', '11'); -test(macro, '-11', 94906265, '-1', '94906254'); -test(macro, '11', -94906265, '-1', '-94906254'); -test(macro, '-11', -94906265, '0', '-11'); -test(macro, '11', 94906266, '0', '11'); -test(macro, '-11', 94906266, '-1', '94906255'); -test(macro, '11', -94906266, '-1', '-94906255'); -test(macro, '-11', -94906266, '0', '-11'); -test(macro, '11', 1073741824, '0', '11'); -test(macro, '-11', 1073741824, '-1', '1073741813'); -test(macro, '11', -1073741824, '-1', '-1073741813'); -test(macro, '-11', -1073741824, '0', '-11'); -test(macro, '11', 51676101935731, '0', '11'); -test(macro, '-11', 51676101935731, '-1', '51676101935720'); -test(macro, '11', -51676101935731, '-1', '-51676101935720'); -test(macro, '-11', -51676101935731, '0', '-11'); -test(macro, '17', 1, '17', '0'); -test(macro, '-17', 1, '-17', '0'); -test(macro, '17', -1, '-17', '0'); -test(macro, '-17', -1, '17', '0'); -test(macro, '17', 3, '5', '2'); -test(macro, '-17', 3, '-6', '1'); -test(macro, '17', -3, '-6', '-1'); -test(macro, '-17', -3, '5', '-2'); -test(macro, '17', 7, '2', '3'); -test(macro, '-17', 7, '-3', '4'); -test(macro, '17', -7, '-3', '-4'); -test(macro, '-17', -7, '2', '-3'); -test(macro, '17', 9, '1', '8'); -test(macro, '-17', 9, '-2', '1'); -test(macro, '17', -9, '-2', '-1'); -test(macro, '-17', -9, '1', '-8'); -test(macro, '17', 11, '1', '6'); -test(macro, '-17', 11, '-2', '5'); -test(macro, '17', -11, '-2', '-5'); -test(macro, '-17', -11, '1', '-6'); -test(macro, '17', 17, '1', '0'); -test(macro, '-17', 17, '-1', '0'); -test(macro, '17', -17, '-1', '0'); -test(macro, '-17', -17, '1', '0'); -test(macro, '17', 22, '0', '17'); -test(macro, '-17', 22, '-1', '5'); -test(macro, '17', -22, '-1', '-5'); -test(macro, '-17', -22, '0', '-17'); -test(macro, '17', 24, '0', '17'); -test(macro, '-17', 24, '-1', '7'); -test(macro, '17', -24, '-1', '-7'); -test(macro, '-17', -24, '0', '-17'); -test(macro, '17', 27, '0', '17'); -test(macro, '-17', 27, '-1', '10'); -test(macro, '17', -27, '-1', '-10'); -test(macro, '-17', -27, '0', '-17'); -test(macro, '17', 29, '0', '17'); -test(macro, '-17', 29, '-1', '12'); -test(macro, '17', -29, '-1', '-12'); -test(macro, '-17', -29, '0', '-17'); -test(macro, '17', 1234, '0', '17'); -test(macro, '-17', 1234, '-1', '1217'); -test(macro, '17', -1234, '-1', '-1217'); -test(macro, '-17', -1234, '0', '-17'); -test(macro, '17', 5678, '0', '17'); -test(macro, '-17', 5678, '-1', '5661'); -test(macro, '17', -5678, '-1', '-5661'); -test(macro, '-17', -5678, '0', '-17'); -test(macro, '17', 94906265, '0', '17'); -test(macro, '-17', 94906265, '-1', '94906248'); -test(macro, '17', -94906265, '-1', '-94906248'); -test(macro, '-17', -94906265, '0', '-17'); -test(macro, '17', 94906266, '0', '17'); -test(macro, '-17', 94906266, '-1', '94906249'); -test(macro, '17', -94906266, '-1', '-94906249'); -test(macro, '-17', -94906266, '0', '-17'); -test(macro, '17', 1073741824, '0', '17'); -test(macro, '-17', 1073741824, '-1', '1073741807'); -test(macro, '17', -1073741824, '-1', '-1073741807'); -test(macro, '-17', -1073741824, '0', '-17'); -test(macro, '17', 51676101935731, '0', '17'); -test(macro, '-17', 51676101935731, '-1', '51676101935714'); -test(macro, '17', -51676101935731, '-1', '-51676101935714'); -test(macro, '-17', -51676101935731, '0', '-17'); -test(macro, '22', 1, '22', '0'); -test(macro, '-22', 1, '-22', '0'); -test(macro, '22', -1, '-22', '0'); -test(macro, '-22', -1, '22', '0'); -test(macro, '22', 3, '7', '1'); -test(macro, '-22', 3, '-8', '2'); -test(macro, '22', -3, '-8', '-2'); -test(macro, '-22', -3, '7', '-1'); -test(macro, '22', 7, '3', '1'); -test(macro, '-22', 7, '-4', '6'); -test(macro, '22', -7, '-4', '-6'); -test(macro, '-22', -7, '3', '-1'); -test(macro, '22', 9, '2', '4'); -test(macro, '-22', 9, '-3', '5'); -test(macro, '22', -9, '-3', '-5'); -test(macro, '-22', -9, '2', '-4'); -test(macro, '22', 11, '2', '0'); -test(macro, '-22', 11, '-2', '0'); -test(macro, '22', -11, '-2', '0'); -test(macro, '-22', -11, '2', '0'); -test(macro, '22', 17, '1', '5'); -test(macro, '-22', 17, '-2', '12'); -test(macro, '22', -17, '-2', '-12'); -test(macro, '-22', -17, '1', '-5'); -test(macro, '22', 22, '1', '0'); -test(macro, '-22', 22, '-1', '0'); -test(macro, '22', -22, '-1', '0'); -test(macro, '-22', -22, '1', '0'); -test(macro, '22', 24, '0', '22'); -test(macro, '-22', 24, '-1', '2'); -test(macro, '22', -24, '-1', '-2'); -test(macro, '-22', -24, '0', '-22'); -test(macro, '22', 27, '0', '22'); -test(macro, '-22', 27, '-1', '5'); -test(macro, '22', -27, '-1', '-5'); -test(macro, '-22', -27, '0', '-22'); -test(macro, '22', 29, '0', '22'); -test(macro, '-22', 29, '-1', '7'); -test(macro, '22', -29, '-1', '-7'); -test(macro, '-22', -29, '0', '-22'); -test(macro, '22', 1234, '0', '22'); -test(macro, '-22', 1234, '-1', '1212'); -test(macro, '22', -1234, '-1', '-1212'); -test(macro, '-22', -1234, '0', '-22'); -test(macro, '22', 5678, '0', '22'); -test(macro, '-22', 5678, '-1', '5656'); -test(macro, '22', -5678, '-1', '-5656'); -test(macro, '-22', -5678, '0', '-22'); -test(macro, '22', 94906265, '0', '22'); -test(macro, '-22', 94906265, '-1', '94906243'); -test(macro, '22', -94906265, '-1', '-94906243'); -test(macro, '-22', -94906265, '0', '-22'); -test(macro, '22', 94906266, '0', '22'); -test(macro, '-22', 94906266, '-1', '94906244'); -test(macro, '22', -94906266, '-1', '-94906244'); -test(macro, '-22', -94906266, '0', '-22'); -test(macro, '22', 1073741824, '0', '22'); -test(macro, '-22', 1073741824, '-1', '1073741802'); -test(macro, '22', -1073741824, '-1', '-1073741802'); -test(macro, '-22', -1073741824, '0', '-22'); -test(macro, '22', 51676101935731, '0', '22'); -test(macro, '-22', 51676101935731, '-1', '51676101935709'); -test(macro, '22', -51676101935731, '-1', '-51676101935709'); -test(macro, '-22', -51676101935731, '0', '-22'); -test(macro, '24', 1, '24', '0'); -test(macro, '-24', 1, '-24', '0'); -test(macro, '24', -1, '-24', '0'); -test(macro, '-24', -1, '24', '0'); -test(macro, '24', 3, '8', '0'); -test(macro, '-24', 3, '-8', '0'); -test(macro, '24', -3, '-8', '0'); -test(macro, '-24', -3, '8', '0'); -test(macro, '24', 7, '3', '3'); -test(macro, '-24', 7, '-4', '4'); -test(macro, '24', -7, '-4', '-4'); -test(macro, '-24', -7, '3', '-3'); -test(macro, '24', 9, '2', '6'); -test(macro, '-24', 9, '-3', '3'); -test(macro, '24', -9, '-3', '-3'); -test(macro, '-24', -9, '2', '-6'); -test(macro, '24', 11, '2', '2'); -test(macro, '-24', 11, '-3', '9'); -test(macro, '24', -11, '-3', '-9'); -test(macro, '-24', -11, '2', '-2'); -test(macro, '24', 17, '1', '7'); -test(macro, '-24', 17, '-2', '10'); -test(macro, '24', -17, '-2', '-10'); -test(macro, '-24', -17, '1', '-7'); -test(macro, '24', 22, '1', '2'); -test(macro, '-24', 22, '-2', '20'); -test(macro, '24', -22, '-2', '-20'); -test(macro, '-24', -22, '1', '-2'); -test(macro, '24', 24, '1', '0'); -test(macro, '-24', 24, '-1', '0'); -test(macro, '24', -24, '-1', '0'); -test(macro, '-24', -24, '1', '0'); -test(macro, '24', 27, '0', '24'); -test(macro, '-24', 27, '-1', '3'); -test(macro, '24', -27, '-1', '-3'); -test(macro, '-24', -27, '0', '-24'); -test(macro, '24', 29, '0', '24'); -test(macro, '-24', 29, '-1', '5'); -test(macro, '24', -29, '-1', '-5'); -test(macro, '-24', -29, '0', '-24'); -test(macro, '24', 1234, '0', '24'); -test(macro, '-24', 1234, '-1', '1210'); -test(macro, '24', -1234, '-1', '-1210'); -test(macro, '-24', -1234, '0', '-24'); -test(macro, '24', 5678, '0', '24'); -test(macro, '-24', 5678, '-1', '5654'); -test(macro, '24', -5678, '-1', '-5654'); -test(macro, '-24', -5678, '0', '-24'); -test(macro, '24', 94906265, '0', '24'); -test(macro, '-24', 94906265, '-1', '94906241'); -test(macro, '24', -94906265, '-1', '-94906241'); -test(macro, '-24', -94906265, '0', '-24'); -test(macro, '24', 94906266, '0', '24'); -test(macro, '-24', 94906266, '-1', '94906242'); -test(macro, '24', -94906266, '-1', '-94906242'); -test(macro, '-24', -94906266, '0', '-24'); -test(macro, '24', 1073741824, '0', '24'); -test(macro, '-24', 1073741824, '-1', '1073741800'); -test(macro, '24', -1073741824, '-1', '-1073741800'); -test(macro, '-24', -1073741824, '0', '-24'); -test(macro, '24', 51676101935731, '0', '24'); -test(macro, '-24', 51676101935731, '-1', '51676101935707'); -test(macro, '24', -51676101935731, '-1', '-51676101935707'); -test(macro, '-24', -51676101935731, '0', '-24'); -test(macro, '27', 1, '27', '0'); -test(macro, '-27', 1, '-27', '0'); -test(macro, '27', -1, '-27', '0'); -test(macro, '-27', -1, '27', '0'); -test(macro, '27', 3, '9', '0'); -test(macro, '-27', 3, '-9', '0'); -test(macro, '27', -3, '-9', '0'); -test(macro, '-27', -3, '9', '0'); -test(macro, '27', 7, '3', '6'); -test(macro, '-27', 7, '-4', '1'); -test(macro, '27', -7, '-4', '-1'); -test(macro, '-27', -7, '3', '-6'); -test(macro, '27', 9, '3', '0'); -test(macro, '-27', 9, '-3', '0'); -test(macro, '27', -9, '-3', '0'); -test(macro, '-27', -9, '3', '0'); -test(macro, '27', 11, '2', '5'); -test(macro, '-27', 11, '-3', '6'); -test(macro, '27', -11, '-3', '-6'); -test(macro, '-27', -11, '2', '-5'); -test(macro, '27', 17, '1', '10'); -test(macro, '-27', 17, '-2', '7'); -test(macro, '27', -17, '-2', '-7'); -test(macro, '-27', -17, '1', '-10'); -test(macro, '27', 22, '1', '5'); -test(macro, '-27', 22, '-2', '17'); -test(macro, '27', -22, '-2', '-17'); -test(macro, '-27', -22, '1', '-5'); -test(macro, '27', 24, '1', '3'); -test(macro, '-27', 24, '-2', '21'); -test(macro, '27', -24, '-2', '-21'); -test(macro, '-27', -24, '1', '-3'); -test(macro, '27', 27, '1', '0'); -test(macro, '-27', 27, '-1', '0'); -test(macro, '27', -27, '-1', '0'); -test(macro, '-27', -27, '1', '0'); -test(macro, '27', 29, '0', '27'); -test(macro, '-27', 29, '-1', '2'); -test(macro, '27', -29, '-1', '-2'); -test(macro, '-27', -29, '0', '-27'); -test(macro, '27', 1234, '0', '27'); -test(macro, '-27', 1234, '-1', '1207'); -test(macro, '27', -1234, '-1', '-1207'); -test(macro, '-27', -1234, '0', '-27'); -test(macro, '27', 5678, '0', '27'); -test(macro, '-27', 5678, '-1', '5651'); -test(macro, '27', -5678, '-1', '-5651'); -test(macro, '-27', -5678, '0', '-27'); -test(macro, '27', 94906265, '0', '27'); -test(macro, '-27', 94906265, '-1', '94906238'); -test(macro, '27', -94906265, '-1', '-94906238'); -test(macro, '-27', -94906265, '0', '-27'); -test(macro, '27', 94906266, '0', '27'); -test(macro, '-27', 94906266, '-1', '94906239'); -test(macro, '27', -94906266, '-1', '-94906239'); -test(macro, '-27', -94906266, '0', '-27'); -test(macro, '27', 1073741824, '0', '27'); -test(macro, '-27', 1073741824, '-1', '1073741797'); -test(macro, '27', -1073741824, '-1', '-1073741797'); -test(macro, '-27', -1073741824, '0', '-27'); -test(macro, '27', 51676101935731, '0', '27'); -test(macro, '-27', 51676101935731, '-1', '51676101935704'); -test(macro, '27', -51676101935731, '-1', '-51676101935704'); -test(macro, '-27', -51676101935731, '0', '-27'); -test(macro, '29', 1, '29', '0'); -test(macro, '-29', 1, '-29', '0'); -test(macro, '29', -1, '-29', '0'); -test(macro, '-29', -1, '29', '0'); -test(macro, '29', 3, '9', '2'); -test(macro, '-29', 3, '-10', '1'); -test(macro, '29', -3, '-10', '-1'); -test(macro, '-29', -3, '9', '-2'); -test(macro, '29', 7, '4', '1'); -test(macro, '-29', 7, '-5', '6'); -test(macro, '29', -7, '-5', '-6'); -test(macro, '-29', -7, '4', '-1'); -test(macro, '29', 9, '3', '2'); -test(macro, '-29', 9, '-4', '7'); -test(macro, '29', -9, '-4', '-7'); -test(macro, '-29', -9, '3', '-2'); -test(macro, '29', 11, '2', '7'); -test(macro, '-29', 11, '-3', '4'); -test(macro, '29', -11, '-3', '-4'); -test(macro, '-29', -11, '2', '-7'); -test(macro, '29', 17, '1', '12'); -test(macro, '-29', 17, '-2', '5'); -test(macro, '29', -17, '-2', '-5'); -test(macro, '-29', -17, '1', '-12'); -test(macro, '29', 22, '1', '7'); -test(macro, '-29', 22, '-2', '15'); -test(macro, '29', -22, '-2', '-15'); -test(macro, '-29', -22, '1', '-7'); -test(macro, '29', 24, '1', '5'); -test(macro, '-29', 24, '-2', '19'); -test(macro, '29', -24, '-2', '-19'); -test(macro, '-29', -24, '1', '-5'); -test(macro, '29', 27, '1', '2'); -test(macro, '-29', 27, '-2', '25'); -test(macro, '29', -27, '-2', '-25'); -test(macro, '-29', -27, '1', '-2'); -test(macro, '29', 29, '1', '0'); -test(macro, '-29', 29, '-1', '0'); -test(macro, '29', -29, '-1', '0'); -test(macro, '-29', -29, '1', '0'); -test(macro, '29', 1234, '0', '29'); -test(macro, '-29', 1234, '-1', '1205'); -test(macro, '29', -1234, '-1', '-1205'); -test(macro, '-29', -1234, '0', '-29'); -test(macro, '29', 5678, '0', '29'); -test(macro, '-29', 5678, '-1', '5649'); -test(macro, '29', -5678, '-1', '-5649'); -test(macro, '-29', -5678, '0', '-29'); -test(macro, '29', 94906265, '0', '29'); -test(macro, '-29', 94906265, '-1', '94906236'); -test(macro, '29', -94906265, '-1', '-94906236'); -test(macro, '-29', -94906265, '0', '-29'); -test(macro, '29', 94906266, '0', '29'); -test(macro, '-29', 94906266, '-1', '94906237'); -test(macro, '29', -94906266, '-1', '-94906237'); -test(macro, '-29', -94906266, '0', '-29'); -test(macro, '29', 1073741824, '0', '29'); -test(macro, '-29', 1073741824, '-1', '1073741795'); -test(macro, '29', -1073741824, '-1', '-1073741795'); -test(macro, '-29', -1073741824, '0', '-29'); -test(macro, '29', 51676101935731, '0', '29'); -test(macro, '-29', 51676101935731, '-1', '51676101935702'); -test(macro, '29', -51676101935731, '-1', '-51676101935702'); -test(macro, '-29', -51676101935731, '0', '-29'); -test(macro, '1234', 1, '1234', '0'); -test(macro, '-1234', 1, '-1234', '0'); -test(macro, '1234', -1, '-1234', '0'); -test(macro, '-1234', -1, '1234', '0'); -test(macro, '1234', 3, '411', '1'); -test(macro, '-1234', 3, '-412', '2'); -test(macro, '1234', -3, '-412', '-2'); -test(macro, '-1234', -3, '411', '-1'); -test(macro, '1234', 7, '176', '2'); -test(macro, '-1234', 7, '-177', '5'); -test(macro, '1234', -7, '-177', '-5'); -test(macro, '-1234', -7, '176', '-2'); -test(macro, '1234', 9, '137', '1'); -test(macro, '-1234', 9, '-138', '8'); -test(macro, '1234', -9, '-138', '-8'); -test(macro, '-1234', -9, '137', '-1'); -test(macro, '1234', 11, '112', '2'); -test(macro, '-1234', 11, '-113', '9'); -test(macro, '1234', -11, '-113', '-9'); -test(macro, '-1234', -11, '112', '-2'); -test(macro, '1234', 17, '72', '10'); -test(macro, '-1234', 17, '-73', '7'); -test(macro, '1234', -17, '-73', '-7'); -test(macro, '-1234', -17, '72', '-10'); -test(macro, '1234', 22, '56', '2'); -test(macro, '-1234', 22, '-57', '20'); -test(macro, '1234', -22, '-57', '-20'); -test(macro, '-1234', -22, '56', '-2'); -test(macro, '1234', 24, '51', '10'); -test(macro, '-1234', 24, '-52', '14'); -test(macro, '1234', -24, '-52', '-14'); -test(macro, '-1234', -24, '51', '-10'); -test(macro, '1234', 27, '45', '19'); -test(macro, '-1234', 27, '-46', '8'); -test(macro, '1234', -27, '-46', '-8'); -test(macro, '-1234', -27, '45', '-19'); -test(macro, '1234', 29, '42', '16'); -test(macro, '-1234', 29, '-43', '13'); -test(macro, '1234', -29, '-43', '-13'); -test(macro, '-1234', -29, '42', '-16'); -test(macro, '1234', 1234, '1', '0'); -test(macro, '-1234', 1234, '-1', '0'); -test(macro, '1234', -1234, '-1', '0'); -test(macro, '-1234', -1234, '1', '0'); -test(macro, '1234', 5678, '0', '1234'); -test(macro, '-1234', 5678, '-1', '4444'); -test(macro, '1234', -5678, '-1', '-4444'); -test(macro, '-1234', -5678, '0', '-1234'); -test(macro, '1234', 94906265, '0', '1234'); -test(macro, '-1234', 94906265, '-1', '94905031'); -test(macro, '1234', -94906265, '-1', '-94905031'); -test(macro, '-1234', -94906265, '0', '-1234'); -test(macro, '1234', 94906266, '0', '1234'); -test(macro, '-1234', 94906266, '-1', '94905032'); -test(macro, '1234', -94906266, '-1', '-94905032'); -test(macro, '-1234', -94906266, '0', '-1234'); -test(macro, '1234', 1073741824, '0', '1234'); -test(macro, '-1234', 1073741824, '-1', '1073740590'); -test(macro, '1234', -1073741824, '-1', '-1073740590'); -test(macro, '-1234', -1073741824, '0', '-1234'); -test(macro, '1234', 51676101935731, '0', '1234'); -test(macro, '-1234', 51676101935731, '-1', '51676101934497'); -test(macro, '1234', -51676101935731, '-1', '-51676101934497'); -test(macro, '-1234', -51676101935731, '0', '-1234'); -test(macro, '5678', 1, '5678', '0'); -test(macro, '-5678', 1, '-5678', '0'); -test(macro, '5678', -1, '-5678', '0'); -test(macro, '-5678', -1, '5678', '0'); -test(macro, '5678', 3, '1892', '2'); -test(macro, '-5678', 3, '-1893', '1'); -test(macro, '5678', -3, '-1893', '-1'); -test(macro, '-5678', -3, '1892', '-2'); -test(macro, '5678', 7, '811', '1'); -test(macro, '-5678', 7, '-812', '6'); -test(macro, '5678', -7, '-812', '-6'); -test(macro, '-5678', -7, '811', '-1'); -test(macro, '5678', 9, '630', '8'); -test(macro, '-5678', 9, '-631', '1'); -test(macro, '5678', -9, '-631', '-1'); -test(macro, '-5678', -9, '630', '-8'); -test(macro, '5678', 11, '516', '2'); -test(macro, '-5678', 11, '-517', '9'); -test(macro, '5678', -11, '-517', '-9'); -test(macro, '-5678', -11, '516', '-2'); -test(macro, '5678', 17, '334', '0'); -test(macro, '-5678', 17, '-334', '0'); -test(macro, '5678', -17, '-334', '0'); -test(macro, '-5678', -17, '334', '0'); -test(macro, '5678', 22, '258', '2'); -test(macro, '-5678', 22, '-259', '20'); -test(macro, '5678', -22, '-259', '-20'); -test(macro, '-5678', -22, '258', '-2'); -test(macro, '5678', 24, '236', '14'); -test(macro, '-5678', 24, '-237', '10'); -test(macro, '5678', -24, '-237', '-10'); -test(macro, '-5678', -24, '236', '-14'); -test(macro, '5678', 27, '210', '8'); -test(macro, '-5678', 27, '-211', '19'); -test(macro, '5678', -27, '-211', '-19'); -test(macro, '-5678', -27, '210', '-8'); -test(macro, '5678', 29, '195', '23'); -test(macro, '-5678', 29, '-196', '6'); -test(macro, '5678', -29, '-196', '-6'); -test(macro, '-5678', -29, '195', '-23'); -test(macro, '5678', 1234, '4', '742'); -test(macro, '-5678', 1234, '-5', '492'); -test(macro, '5678', -1234, '-5', '-492'); -test(macro, '-5678', -1234, '4', '-742'); -test(macro, '5678', 5678, '1', '0'); -test(macro, '-5678', 5678, '-1', '0'); -test(macro, '5678', -5678, '-1', '0'); -test(macro, '-5678', -5678, '1', '0'); -test(macro, '5678', 94906265, '0', '5678'); -test(macro, '-5678', 94906265, '-1', '94900587'); -test(macro, '5678', -94906265, '-1', '-94900587'); -test(macro, '-5678', -94906265, '0', '-5678'); -test(macro, '5678', 94906266, '0', '5678'); -test(macro, '-5678', 94906266, '-1', '94900588'); -test(macro, '5678', -94906266, '-1', '-94900588'); -test(macro, '-5678', -94906266, '0', '-5678'); -test(macro, '5678', 1073741824, '0', '5678'); -test(macro, '-5678', 1073741824, '-1', '1073736146'); -test(macro, '5678', -1073741824, '-1', '-1073736146'); -test(macro, '-5678', -1073741824, '0', '-5678'); -test(macro, '5678', 51676101935731, '0', '5678'); -test(macro, '-5678', 51676101935731, '-1', '51676101930053'); -test(macro, '5678', -51676101935731, '-1', '-51676101930053'); -test(macro, '-5678', -51676101935731, '0', '-5678'); -test(macro, '94906265', 1, '94906265', '0'); -test(macro, '-94906265', 1, '-94906265', '0'); -test(macro, '94906265', -1, '-94906265', '0'); -test(macro, '-94906265', -1, '94906265', '0'); -test(macro, '94906265', 3, '31635421', '2'); -test(macro, '-94906265', 3, '-31635422', '1'); -test(macro, '94906265', -3, '-31635422', '-1'); -test(macro, '-94906265', -3, '31635421', '-2'); -test(macro, '94906265', 7, '13558037', '6'); -test(macro, '-94906265', 7, '-13558038', '1'); -test(macro, '94906265', -7, '-13558038', '-1'); -test(macro, '-94906265', -7, '13558037', '-6'); -test(macro, '94906265', 9, '10545140', '5'); -test(macro, '-94906265', 9, '-10545141', '4'); -test(macro, '94906265', -9, '-10545141', '-4'); -test(macro, '-94906265', -9, '10545140', '-5'); -test(macro, '94906265', 11, '8627842', '3'); -test(macro, '-94906265', 11, '-8627843', '8'); -test(macro, '94906265', -11, '-8627843', '-8'); -test(macro, '-94906265', -11, '8627842', '-3'); -test(macro, '94906265', 17, '5582721', '8'); -test(macro, '-94906265', 17, '-5582722', '9'); -test(macro, '94906265', -17, '-5582722', '-9'); -test(macro, '-94906265', -17, '5582721', '-8'); -test(macro, '94906265', 22, '4313921', '3'); -test(macro, '-94906265', 22, '-4313922', '19'); -test(macro, '94906265', -22, '-4313922', '-19'); -test(macro, '-94906265', -22, '4313921', '-3'); -test(macro, '94906265', 24, '3954427', '17'); -test(macro, '-94906265', 24, '-3954428', '7'); -test(macro, '94906265', -24, '-3954428', '-7'); -test(macro, '-94906265', -24, '3954427', '-17'); -test(macro, '94906265', 27, '3515046', '23'); -test(macro, '-94906265', 27, '-3515047', '4'); -test(macro, '94906265', -27, '-3515047', '-4'); -test(macro, '-94906265', -27, '3515046', '-23'); -test(macro, '94906265', 29, '3272629', '24'); -test(macro, '-94906265', 29, '-3272630', '5'); -test(macro, '94906265', -29, '-3272630', '-5'); -test(macro, '-94906265', -29, '3272629', '-24'); -test(macro, '94906265', 1234, '76909', '559'); -test(macro, '-94906265', 1234, '-76910', '675'); -test(macro, '94906265', -1234, '-76910', '-675'); -test(macro, '-94906265', -1234, '76909', '-559'); -test(macro, '94906265', 5678, '16714', '4173'); -test(macro, '-94906265', 5678, '-16715', '1505'); -test(macro, '94906265', -5678, '-16715', '-1505'); -test(macro, '-94906265', -5678, '16714', '-4173'); -test(macro, '94906265', 94906265, '1', '0'); -test(macro, '-94906265', 94906265, '-1', '0'); -test(macro, '94906265', -94906265, '-1', '0'); -test(macro, '-94906265', -94906265, '1', '0'); -test(macro, '94906265', 94906266, '0', '94906265'); -test(macro, '-94906265', 94906266, '-1', '1'); -test(macro, '94906265', -94906266, '-1', '-1'); -test(macro, '-94906265', -94906266, '0', '-94906265'); -test(macro, '94906265', 1073741824, '0', '94906265'); -test(macro, '-94906265', 1073741824, '-1', '978835559'); -test(macro, '94906265', -1073741824, '-1', '-978835559'); -test(macro, '-94906265', -1073741824, '0', '-94906265'); -test(macro, '94906265', 51676101935731, '0', '94906265'); -test(macro, '-94906265', 51676101935731, '-1', '51676007029466'); -test(macro, '94906265', -51676101935731, '-1', '-51676007029466'); -test(macro, '-94906265', -51676101935731, '0', '-94906265'); -test(macro, '94906266', 1, '94906266', '0'); -test(macro, '-94906266', 1, '-94906266', '0'); -test(macro, '94906266', -1, '-94906266', '0'); -test(macro, '-94906266', -1, '94906266', '0'); -test(macro, '94906266', 3, '31635422', '0'); -test(macro, '-94906266', 3, '-31635422', '0'); -test(macro, '94906266', -3, '-31635422', '0'); -test(macro, '-94906266', -3, '31635422', '0'); -test(macro, '94906266', 7, '13558038', '0'); -test(macro, '-94906266', 7, '-13558038', '0'); -test(macro, '94906266', -7, '-13558038', '0'); -test(macro, '-94906266', -7, '13558038', '0'); -test(macro, '94906266', 9, '10545140', '6'); -test(macro, '-94906266', 9, '-10545141', '3'); -test(macro, '94906266', -9, '-10545141', '-3'); -test(macro, '-94906266', -9, '10545140', '-6'); -test(macro, '94906266', 11, '8627842', '4'); -test(macro, '-94906266', 11, '-8627843', '7'); -test(macro, '94906266', -11, '-8627843', '-7'); -test(macro, '-94906266', -11, '8627842', '-4'); -test(macro, '94906266', 17, '5582721', '9'); -test(macro, '-94906266', 17, '-5582722', '8'); -test(macro, '94906266', -17, '-5582722', '-8'); -test(macro, '-94906266', -17, '5582721', '-9'); -test(macro, '94906266', 22, '4313921', '4'); -test(macro, '-94906266', 22, '-4313922', '18'); -test(macro, '94906266', -22, '-4313922', '-18'); -test(macro, '-94906266', -22, '4313921', '-4'); -test(macro, '94906266', 24, '3954427', '18'); -test(macro, '-94906266', 24, '-3954428', '6'); -test(macro, '94906266', -24, '-3954428', '-6'); -test(macro, '-94906266', -24, '3954427', '-18'); -test(macro, '94906266', 27, '3515046', '24'); -test(macro, '-94906266', 27, '-3515047', '3'); -test(macro, '94906266', -27, '-3515047', '-3'); -test(macro, '-94906266', -27, '3515046', '-24'); -test(macro, '94906266', 29, '3272629', '25'); -test(macro, '-94906266', 29, '-3272630', '4'); -test(macro, '94906266', -29, '-3272630', '-4'); -test(macro, '-94906266', -29, '3272629', '-25'); -test(macro, '94906266', 1234, '76909', '560'); -test(macro, '-94906266', 1234, '-76910', '674'); -test(macro, '94906266', -1234, '-76910', '-674'); -test(macro, '-94906266', -1234, '76909', '-560'); -test(macro, '94906266', 5678, '16714', '4174'); -test(macro, '-94906266', 5678, '-16715', '1504'); -test(macro, '94906266', -5678, '-16715', '-1504'); -test(macro, '-94906266', -5678, '16714', '-4174'); -test(macro, '94906266', 94906265, '1', '1'); -test(macro, '-94906266', 94906265, '-2', '94906264'); -test(macro, '94906266', -94906265, '-2', '-94906264'); -test(macro, '-94906266', -94906265, '1', '-1'); -test(macro, '94906266', 94906266, '1', '0'); -test(macro, '-94906266', 94906266, '-1', '0'); -test(macro, '94906266', -94906266, '-1', '0'); -test(macro, '-94906266', -94906266, '1', '0'); -test(macro, '94906266', 1073741824, '0', '94906266'); -test(macro, '-94906266', 1073741824, '-1', '978835558'); -test(macro, '94906266', -1073741824, '-1', '-978835558'); -test(macro, '-94906266', -1073741824, '0', '-94906266'); -test(macro, '94906266', 51676101935731, '0', '94906266'); -test(macro, '-94906266', 51676101935731, '-1', '51676007029465'); -test(macro, '94906266', -51676101935731, '-1', '-51676007029465'); -test(macro, '-94906266', -51676101935731, '0', '-94906266'); -test(macro, '1073741824', 1, '1073741824', '0'); -test(macro, '-1073741824', 1, '-1073741824', '0'); -test(macro, '1073741824', -1, '-1073741824', '0'); -test(macro, '-1073741824', -1, '1073741824', '0'); -test(macro, '1073741824', 3, '357913941', '1'); -test(macro, '-1073741824', 3, '-357913942', '2'); -test(macro, '1073741824', -3, '-357913942', '-2'); -test(macro, '-1073741824', -3, '357913941', '-1'); -test(macro, '1073741824', 7, '153391689', '1'); -test(macro, '-1073741824', 7, '-153391690', '6'); -test(macro, '1073741824', -7, '-153391690', '-6'); -test(macro, '-1073741824', -7, '153391689', '-1'); -test(macro, '1073741824', 9, '119304647', '1'); -test(macro, '-1073741824', 9, '-119304648', '8'); -test(macro, '1073741824', -9, '-119304648', '-8'); -test(macro, '-1073741824', -9, '119304647', '-1'); -test(macro, '1073741824', 11, '97612893', '1'); -test(macro, '-1073741824', 11, '-97612894', '10'); -test(macro, '1073741824', -11, '-97612894', '-10'); -test(macro, '-1073741824', -11, '97612893', '-1'); -test(macro, '1073741824', 17, '63161283', '13'); -test(macro, '-1073741824', 17, '-63161284', '4'); -test(macro, '1073741824', -17, '-63161284', '-4'); -test(macro, '-1073741824', -17, '63161283', '-13'); -test(macro, '1073741824', 22, '48806446', '12'); -test(macro, '-1073741824', 22, '-48806447', '10'); -test(macro, '1073741824', -22, '-48806447', '-10'); -test(macro, '-1073741824', -22, '48806446', '-12'); -test(macro, '1073741824', 24, '44739242', '16'); -test(macro, '-1073741824', 24, '-44739243', '8'); -test(macro, '1073741824', -24, '-44739243', '-8'); -test(macro, '-1073741824', -24, '44739242', '-16'); -test(macro, '1073741824', 27, '39768215', '19'); -test(macro, '-1073741824', 27, '-39768216', '8'); -test(macro, '1073741824', -27, '-39768216', '-8'); -test(macro, '-1073741824', -27, '39768215', '-19'); -test(macro, '1073741824', 29, '37025580', '4'); -test(macro, '-1073741824', 29, '-37025581', '25'); -test(macro, '1073741824', -29, '-37025581', '-25'); -test(macro, '-1073741824', -29, '37025580', '-4'); -test(macro, '1073741824', 1234, '870131', '170'); -test(macro, '-1073741824', 1234, '-870132', '1064'); -test(macro, '1073741824', -1234, '-870132', '-1064'); -test(macro, '-1073741824', -1234, '870131', '-170'); -test(macro, '1073741824', 5678, '189105', '3634'); -test(macro, '-1073741824', 5678, '-189106', '2044'); -test(macro, '1073741824', -5678, '-189106', '-2044'); -test(macro, '-1073741824', -5678, '189105', '-3634'); -test(macro, '1073741824', 94906265, '11', '29772909'); -test(macro, '-1073741824', 94906265, '-12', '65133356'); -test(macro, '1073741824', -94906265, '-12', '-65133356'); -test(macro, '-1073741824', -94906265, '11', '-29772909'); -test(macro, '1073741824', 94906266, '11', '29772898'); -test(macro, '-1073741824', 94906266, '-12', '65133368'); -test(macro, '1073741824', -94906266, '-12', '-65133368'); -test(macro, '-1073741824', -94906266, '11', '-29772898'); -test(macro, '1073741824', 1073741824, '1', '0'); -test(macro, '-1073741824', 1073741824, '-1', '0'); -test(macro, '1073741824', -1073741824, '-1', '0'); -test(macro, '-1073741824', -1073741824, '1', '0'); -test(macro, '1073741824', 51676101935731, '0', '1073741824'); -test(macro, '-1073741824', 51676101935731, '-1', '51675028193907'); -test(macro, '1073741824', -51676101935731, '-1', '-51675028193907'); -test(macro, '-1073741824', -51676101935731, '0', '-1073741824'); -test(macro, '51676101935731', 1, '51676101935731', '0'); -test(macro, '-51676101935731', 1, '-51676101935731', '0'); -test(macro, '51676101935731', -1, '-51676101935731', '0'); -test(macro, '-51676101935731', -1, '51676101935731', '0'); -test(macro, '51676101935731', 3, '17225367311910', '1'); -test(macro, '-51676101935731', 3, '-17225367311911', '2'); -test(macro, '51676101935731', -3, '-17225367311911', '-2'); -test(macro, '-51676101935731', -3, '17225367311910', '-1'); -test(macro, '51676101935731', 7, '7382300276533', '0'); -test(macro, '-51676101935731', 7, '-7382300276533', '0'); -test(macro, '51676101935731', -7, '-7382300276533', '0'); -test(macro, '-51676101935731', -7, '7382300276533', '0'); -test(macro, '51676101935731', 9, '5741789103970', '1'); -test(macro, '-51676101935731', 9, '-5741789103971', '8'); -test(macro, '51676101935731', -9, '-5741789103971', '-8'); -test(macro, '-51676101935731', -9, '5741789103970', '-1'); -test(macro, '51676101935731', 11, '4697827448702', '9'); -test(macro, '-51676101935731', 11, '-4697827448703', '2'); -test(macro, '51676101935731', -11, '-4697827448703', '-2'); -test(macro, '-51676101935731', -11, '4697827448702', '-9'); -test(macro, '51676101935731', 17, '3039770702101', '14'); -test(macro, '-51676101935731', 17, '-3039770702102', '3'); -test(macro, '51676101935731', -17, '-3039770702102', '-3'); -test(macro, '-51676101935731', -17, '3039770702101', '-14'); -test(macro, '51676101935731', 22, '2348913724351', '9'); -test(macro, '-51676101935731', 22, '-2348913724352', '13'); -test(macro, '51676101935731', -22, '-2348913724352', '-13'); -test(macro, '-51676101935731', -22, '2348913724351', '-9'); -test(macro, '51676101935731', 24, '2153170913988', '19'); -test(macro, '-51676101935731', 24, '-2153170913989', '5'); -test(macro, '51676101935731', -24, '-2153170913989', '-5'); -test(macro, '-51676101935731', -24, '2153170913988', '-19'); -test(macro, '51676101935731', 27, '1913929701323', '10'); -test(macro, '-51676101935731', 27, '-1913929701324', '17'); -test(macro, '51676101935731', -27, '-1913929701324', '-17'); -test(macro, '-51676101935731', -27, '1913929701323', '-10'); -test(macro, '51676101935731', 29, '1781934549507', '28'); -test(macro, '-51676101935731', 29, '-1781934549508', '1'); -test(macro, '51676101935731', -29, '-1781934549508', '-1'); -test(macro, '-51676101935731', -29, '1781934549507', '-28'); -test(macro, '51676101935731', 1234, '41876905944', '835'); -test(macro, '-51676101935731', 1234, '-41876905945', '399'); -test(macro, '51676101935731', -1234, '-41876905945', '-399'); -test(macro, '-51676101935731', -1234, '41876905944', '-835'); -test(macro, '51676101935731', 5678, '9101109886', '3023'); -test(macro, '-51676101935731', 5678, '-9101109887', '2655'); -test(macro, '51676101935731', -5678, '-9101109887', '-2655'); -test(macro, '-51676101935731', -5678, '9101109886', '-3023'); -test(macro, '51676101935731', 94906265, '544496', '20268291'); -test(macro, '-51676101935731', 94906265, '-544497', '74637974'); -test(macro, '51676101935731', -94906265, '-544497', '-74637974'); -test(macro, '-51676101935731', -94906265, '544496', '-20268291'); -test(macro, '51676101935731', 94906266, '544496', '19723795'); -test(macro, '-51676101935731', 94906266, '-544497', '75182471'); -test(macro, '51676101935731', -94906266, '-544497', '-75182471'); -test(macro, '-51676101935731', -94906266, '544496', '-19723795'); -test(macro, '51676101935731', 1073741824, '48127', '129172083'); -test(macro, '-51676101935731', 1073741824, '-48128', '944569741'); -test(macro, '51676101935731', -1073741824, '-48128', '-944569741'); -test(macro, '-51676101935731', -1073741824, '48127', '-129172083'); -test(macro, '51676101935731', 51676101935731, '1', '0'); -test(macro, '-51676101935731', 51676101935731, '-1', '0'); -test(macro, '51676101935731', -51676101935731, '-1', '0'); -test(macro, '-51676101935731', -51676101935731, '1', '0'); -test(macro, '717897987691852588770249', 1, '717897987691852588770249', '0'); -test(macro, '-717897987691852588770249', 1, '-717897987691852588770249', '0'); -test(macro, '717897987691852588770249', -1, '-717897987691852588770249', '0'); -test(macro, '-717897987691852588770249', -1, '717897987691852588770249', '0'); -test(macro, '717897987691852588770249', 3, '239299329230617529590083', '0'); -test(macro, '-717897987691852588770249', 3, '-239299329230617529590083', '0'); -test(macro, '717897987691852588770249', -3, '-239299329230617529590083', '0'); -test(macro, '-717897987691852588770249', -3, '239299329230617529590083', '0'); -test(macro, '717897987691852588770249', 7, '102556855384550369824321', '2'); -test(macro, '-717897987691852588770249', 7, '-102556855384550369824322', '5'); -test(macro, '717897987691852588770249', -7, '-102556855384550369824322', '-5'); -test(macro, '-717897987691852588770249', -7, '102556855384550369824321', '-2'); -test(macro, '717897987691852588770249', 9, '79766443076872509863361', '0'); -test(macro, '-717897987691852588770249', 9, '-79766443076872509863361', '0'); -test(macro, '717897987691852588770249', -9, '-79766443076872509863361', '0'); -test(macro, '-717897987691852588770249', -9, '79766443076872509863361', '0'); -test(macro, '717897987691852588770249', 11, '65263453426532053524568', '1'); -test(macro, '-717897987691852588770249', 11, '-65263453426532053524569', '10'); -test(macro, '717897987691852588770249', -11, '-65263453426532053524569', '-10'); -test(macro, '-717897987691852588770249', -11, '65263453426532053524568', '-1'); -test(macro, '717897987691852588770249', 17, '42229293393638387574720', '9'); -test(macro, '-717897987691852588770249', 17, '-42229293393638387574721', '8'); -test(macro, '717897987691852588770249', -17, '-42229293393638387574721', '-8'); -test(macro, '-717897987691852588770249', -17, '42229293393638387574720', '-9'); -test(macro, '717897987691852588770249', 22, '32631726713266026762284', '1'); -test(macro, '-717897987691852588770249', 22, '-32631726713266026762285', '21'); -test(macro, '717897987691852588770249', -22, '-32631726713266026762285', '-21'); -test(macro, '-717897987691852588770249', -22, '32631726713266026762284', '-1'); -test(macro, '717897987691852588770249', 24, '29912416153827191198760', '9'); -test(macro, '-717897987691852588770249', 24, '-29912416153827191198761', '15'); -test(macro, '717897987691852588770249', -24, '-29912416153827191198761', '-15'); -test(macro, '-717897987691852588770249', -24, '29912416153827191198760', '-9'); -test(macro, '717897987691852588770249', 27, '26588814358957503287787', '0'); -test(macro, '-717897987691852588770249', 27, '-26588814358957503287787', '0'); -test(macro, '717897987691852588770249', -27, '-26588814358957503287787', '0'); -test(macro, '-717897987691852588770249', -27, '26588814358957503287787', '0'); -test(macro, '717897987691852588770249', 29, '24755103023856985819663', '22'); -test(macro, '-717897987691852588770249', 29, '-24755103023856985819664', '7'); -test(macro, '717897987691852588770249', -29, '-24755103023856985819664', '-7'); -test(macro, '-717897987691852588770249', -29, '24755103023856985819663', '-22'); -test(macro, '717897987691852588770249', 1234, '581764981922084755891', '755'); -test(macro, '-717897987691852588770249', 1234, '-581764981922084755892', '479'); -test( - macro, - '717897987691852588770249', - -1234, - '-581764981922084755892', - '-479', -); -test( - macro, - '-717897987691852588770249', - -1234, - '581764981922084755891', - '-755', -); -test(macro, '717897987691852588770249', 5678, '126435010160593974774', '3477'); -test( - macro, - '-717897987691852588770249', - 5678, - '-126435010160593974775', - '2201', -); -test( - macro, - '717897987691852588770249', - -5678, - '-126435010160593974775', - '-2201', -); -test( - macro, - '-717897987691852588770249', - -5678, - '126435010160593974774', - '-3477', -); -test( - macro, - '717897987691852588770249', - 94906265, - '7564284483135571', - '56517934', -); -test( - macro, - '-717897987691852588770249', - 94906265, - '-7564284483135572', - '38388331', -); -test( - macro, - '717897987691852588770249', - -94906265, - '-7564284483135572', - '-38388331', -); -test( - macro, - '-717897987691852588770249', - -94906265, - '7564284483135571', - '-56517934', -); -test( - macro, - '717897987691852588770249', - 94906266, - '7564284403432883', - '81625371', -); -test( - macro, - '-717897987691852588770249', - 94906266, - '-7564284403432884', - '13280895', -); -test( - macro, - '717897987691852588770249', - -94906266, - '-7564284403432884', - '-13280895', -); -test( - macro, - '-717897987691852588770249', - -94906266, - '7564284403432883', - '-81625371', -); -test( - macro, - '717897987691852588770249', - 1073741824, - '668594602208447', - '278782921', -); -test( - macro, - '-717897987691852588770249', - 1073741824, - '-668594602208448', - '794958903', -); -test( - macro, - '717897987691852588770249', - -1073741824, - '-668594602208448', - '-794958903', -); -test( - macro, - '-717897987691852588770249', - -1073741824, - '668594602208447', - '-278782921', -); -test( - macro, - '717897987691852588770249', - 51676101935731, - '13892262782', - '51258661506607', -); -test( - macro, - '-717897987691852588770249', - 51676101935731, - '-13892262783', - '417440429124', -); -test( - macro, - '717897987691852588770249', - -51676101935731, - '-13892262783', - '-417440429124', -); -test( - macro, - '-717897987691852588770249', - -51676101935731, - '13892262782', - '-51258661506607', -); diff --git a/test/src/integer/arithmetic/idivn.js b/test/src/integer/arithmetic/idivn.js deleted file mode 100644 index ed6f4d6..0000000 --- a/test/src/integer/arithmetic/idivn.js +++ /dev/null @@ -1,1134 +0,0 @@ -import test from 'ava'; -import {parse, stringify, idivn} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const c = idivn(a, B); - t.is(stringify(a), C); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `idivn(${fmt(A)},${B}) = ${fmt(C)}`; - -test(macro, '0', 1, '0'); -test(macro, '0', -1, '0'); -test(macro, '0', 3, '0'); -test(macro, '0', -3, '0'); -test(macro, '0', 7, '0'); -test(macro, '0', -7, '0'); -test(macro, '0', 9, '0'); -test(macro, '0', -9, '0'); -test(macro, '0', 11, '0'); -test(macro, '0', -11, '0'); -test(macro, '0', 17, '0'); -test(macro, '0', -17, '0'); -test(macro, '0', 22, '0'); -test(macro, '0', -22, '0'); -test(macro, '0', 24, '0'); -test(macro, '0', -24, '0'); -test(macro, '0', 27, '0'); -test(macro, '0', -27, '0'); -test(macro, '0', 29, '0'); -test(macro, '0', -29, '0'); -test(macro, '0', 1234, '0'); -test(macro, '0', -1234, '0'); -test(macro, '0', 5678, '0'); -test(macro, '0', -5678, '0'); -test(macro, '0', 94906265, '0'); -test(macro, '0', -94906265, '0'); -test(macro, '0', 94906266, '0'); -test(macro, '0', -94906266, '0'); -test(macro, '0', 1073741824, '0'); -test(macro, '0', -1073741824, '0'); -test(macro, '0', 51676101935731, '0'); -test(macro, '0', -51676101935731, '0'); -test(macro, '1', 1, '1'); -test(macro, '-1', 1, '-1'); -test(macro, '1', -1, '-1'); -test(macro, '-1', -1, '1'); -test(macro, '1', 3, '0'); -test(macro, '-1', 3, '-1'); -test(macro, '1', -3, '-1'); -test(macro, '-1', -3, '0'); -test(macro, '1', 7, '0'); -test(macro, '-1', 7, '-1'); -test(macro, '1', -7, '-1'); -test(macro, '-1', -7, '0'); -test(macro, '1', 9, '0'); -test(macro, '-1', 9, '-1'); -test(macro, '1', -9, '-1'); -test(macro, '-1', -9, '0'); -test(macro, '1', 11, '0'); -test(macro, '-1', 11, '-1'); -test(macro, '1', -11, '-1'); -test(macro, '-1', -11, '0'); -test(macro, '1', 17, '0'); -test(macro, '-1', 17, '-1'); -test(macro, '1', -17, '-1'); -test(macro, '-1', -17, '0'); -test(macro, '1', 22, '0'); -test(macro, '-1', 22, '-1'); -test(macro, '1', -22, '-1'); -test(macro, '-1', -22, '0'); -test(macro, '1', 24, '0'); -test(macro, '-1', 24, '-1'); -test(macro, '1', -24, '-1'); -test(macro, '-1', -24, '0'); -test(macro, '1', 27, '0'); -test(macro, '-1', 27, '-1'); -test(macro, '1', -27, '-1'); -test(macro, '-1', -27, '0'); -test(macro, '1', 29, '0'); -test(macro, '-1', 29, '-1'); -test(macro, '1', -29, '-1'); -test(macro, '-1', -29, '0'); -test(macro, '1', 1234, '0'); -test(macro, '-1', 1234, '-1'); -test(macro, '1', -1234, '-1'); -test(macro, '-1', -1234, '0'); -test(macro, '1', 5678, '0'); -test(macro, '-1', 5678, '-1'); -test(macro, '1', -5678, '-1'); -test(macro, '-1', -5678, '0'); -test(macro, '1', 94906265, '0'); -test(macro, '-1', 94906265, '-1'); -test(macro, '1', -94906265, '-1'); -test(macro, '-1', -94906265, '0'); -test(macro, '1', 94906266, '0'); -test(macro, '-1', 94906266, '-1'); -test(macro, '1', -94906266, '-1'); -test(macro, '-1', -94906266, '0'); -test(macro, '1', 1073741824, '0'); -test(macro, '-1', 1073741824, '-1'); -test(macro, '1', -1073741824, '-1'); -test(macro, '-1', -1073741824, '0'); -test(macro, '1', 51676101935731, '0'); -test(macro, '-1', 51676101935731, '-1'); -test(macro, '1', -51676101935731, '-1'); -test(macro, '-1', -51676101935731, '0'); -test(macro, '3', 1, '3'); -test(macro, '-3', 1, '-3'); -test(macro, '3', -1, '-3'); -test(macro, '-3', -1, '3'); -test(macro, '3', 3, '1'); -test(macro, '-3', 3, '-1'); -test(macro, '3', -3, '-1'); -test(macro, '-3', -3, '1'); -test(macro, '3', 7, '0'); -test(macro, '-3', 7, '-1'); -test(macro, '3', -7, '-1'); -test(macro, '-3', -7, '0'); -test(macro, '3', 9, '0'); -test(macro, '-3', 9, '-1'); -test(macro, '3', -9, '-1'); -test(macro, '-3', -9, '0'); -test(macro, '3', 11, '0'); -test(macro, '-3', 11, '-1'); -test(macro, '3', -11, '-1'); -test(macro, '-3', -11, '0'); -test(macro, '3', 17, '0'); -test(macro, '-3', 17, '-1'); -test(macro, '3', -17, '-1'); -test(macro, '-3', -17, '0'); -test(macro, '3', 22, '0'); -test(macro, '-3', 22, '-1'); -test(macro, '3', -22, '-1'); -test(macro, '-3', -22, '0'); -test(macro, '3', 24, '0'); -test(macro, '-3', 24, '-1'); -test(macro, '3', -24, '-1'); -test(macro, '-3', -24, '0'); -test(macro, '3', 27, '0'); -test(macro, '-3', 27, '-1'); -test(macro, '3', -27, '-1'); -test(macro, '-3', -27, '0'); -test(macro, '3', 29, '0'); -test(macro, '-3', 29, '-1'); -test(macro, '3', -29, '-1'); -test(macro, '-3', -29, '0'); -test(macro, '3', 1234, '0'); -test(macro, '-3', 1234, '-1'); -test(macro, '3', -1234, '-1'); -test(macro, '-3', -1234, '0'); -test(macro, '3', 5678, '0'); -test(macro, '-3', 5678, '-1'); -test(macro, '3', -5678, '-1'); -test(macro, '-3', -5678, '0'); -test(macro, '3', 94906265, '0'); -test(macro, '-3', 94906265, '-1'); -test(macro, '3', -94906265, '-1'); -test(macro, '-3', -94906265, '0'); -test(macro, '3', 94906266, '0'); -test(macro, '-3', 94906266, '-1'); -test(macro, '3', -94906266, '-1'); -test(macro, '-3', -94906266, '0'); -test(macro, '3', 1073741824, '0'); -test(macro, '-3', 1073741824, '-1'); -test(macro, '3', -1073741824, '-1'); -test(macro, '-3', -1073741824, '0'); -test(macro, '3', 51676101935731, '0'); -test(macro, '-3', 51676101935731, '-1'); -test(macro, '3', -51676101935731, '-1'); -test(macro, '-3', -51676101935731, '0'); -test(macro, '7', 1, '7'); -test(macro, '-7', 1, '-7'); -test(macro, '7', -1, '-7'); -test(macro, '-7', -1, '7'); -test(macro, '7', 3, '2'); -test(macro, '-7', 3, '-3'); -test(macro, '7', -3, '-3'); -test(macro, '-7', -3, '2'); -test(macro, '7', 7, '1'); -test(macro, '-7', 7, '-1'); -test(macro, '7', -7, '-1'); -test(macro, '-7', -7, '1'); -test(macro, '7', 9, '0'); -test(macro, '-7', 9, '-1'); -test(macro, '7', -9, '-1'); -test(macro, '-7', -9, '0'); -test(macro, '7', 11, '0'); -test(macro, '-7', 11, '-1'); -test(macro, '7', -11, '-1'); -test(macro, '-7', -11, '0'); -test(macro, '7', 17, '0'); -test(macro, '-7', 17, '-1'); -test(macro, '7', -17, '-1'); -test(macro, '-7', -17, '0'); -test(macro, '7', 22, '0'); -test(macro, '-7', 22, '-1'); -test(macro, '7', -22, '-1'); -test(macro, '-7', -22, '0'); -test(macro, '7', 24, '0'); -test(macro, '-7', 24, '-1'); -test(macro, '7', -24, '-1'); -test(macro, '-7', -24, '0'); -test(macro, '7', 27, '0'); -test(macro, '-7', 27, '-1'); -test(macro, '7', -27, '-1'); -test(macro, '-7', -27, '0'); -test(macro, '7', 29, '0'); -test(macro, '-7', 29, '-1'); -test(macro, '7', -29, '-1'); -test(macro, '-7', -29, '0'); -test(macro, '7', 1234, '0'); -test(macro, '-7', 1234, '-1'); -test(macro, '7', -1234, '-1'); -test(macro, '-7', -1234, '0'); -test(macro, '7', 5678, '0'); -test(macro, '-7', 5678, '-1'); -test(macro, '7', -5678, '-1'); -test(macro, '-7', -5678, '0'); -test(macro, '7', 94906265, '0'); -test(macro, '-7', 94906265, '-1'); -test(macro, '7', -94906265, '-1'); -test(macro, '-7', -94906265, '0'); -test(macro, '7', 94906266, '0'); -test(macro, '-7', 94906266, '-1'); -test(macro, '7', -94906266, '-1'); -test(macro, '-7', -94906266, '0'); -test(macro, '7', 1073741824, '0'); -test(macro, '-7', 1073741824, '-1'); -test(macro, '7', -1073741824, '-1'); -test(macro, '-7', -1073741824, '0'); -test(macro, '7', 51676101935731, '0'); -test(macro, '-7', 51676101935731, '-1'); -test(macro, '7', -51676101935731, '-1'); -test(macro, '-7', -51676101935731, '0'); -test(macro, '9', 1, '9'); -test(macro, '-9', 1, '-9'); -test(macro, '9', -1, '-9'); -test(macro, '-9', -1, '9'); -test(macro, '9', 3, '3'); -test(macro, '-9', 3, '-3'); -test(macro, '9', -3, '-3'); -test(macro, '-9', -3, '3'); -test(macro, '9', 7, '1'); -test(macro, '-9', 7, '-2'); -test(macro, '9', -7, '-2'); -test(macro, '-9', -7, '1'); -test(macro, '9', 9, '1'); -test(macro, '-9', 9, '-1'); -test(macro, '9', -9, '-1'); -test(macro, '-9', -9, '1'); -test(macro, '9', 11, '0'); -test(macro, '-9', 11, '-1'); -test(macro, '9', -11, '-1'); -test(macro, '-9', -11, '0'); -test(macro, '9', 17, '0'); -test(macro, '-9', 17, '-1'); -test(macro, '9', -17, '-1'); -test(macro, '-9', -17, '0'); -test(macro, '9', 22, '0'); -test(macro, '-9', 22, '-1'); -test(macro, '9', -22, '-1'); -test(macro, '-9', -22, '0'); -test(macro, '9', 24, '0'); -test(macro, '-9', 24, '-1'); -test(macro, '9', -24, '-1'); -test(macro, '-9', -24, '0'); -test(macro, '9', 27, '0'); -test(macro, '-9', 27, '-1'); -test(macro, '9', -27, '-1'); -test(macro, '-9', -27, '0'); -test(macro, '9', 29, '0'); -test(macro, '-9', 29, '-1'); -test(macro, '9', -29, '-1'); -test(macro, '-9', -29, '0'); -test(macro, '9', 1234, '0'); -test(macro, '-9', 1234, '-1'); -test(macro, '9', -1234, '-1'); -test(macro, '-9', -1234, '0'); -test(macro, '9', 5678, '0'); -test(macro, '-9', 5678, '-1'); -test(macro, '9', -5678, '-1'); -test(macro, '-9', -5678, '0'); -test(macro, '9', 94906265, '0'); -test(macro, '-9', 94906265, '-1'); -test(macro, '9', -94906265, '-1'); -test(macro, '-9', -94906265, '0'); -test(macro, '9', 94906266, '0'); -test(macro, '-9', 94906266, '-1'); -test(macro, '9', -94906266, '-1'); -test(macro, '-9', -94906266, '0'); -test(macro, '9', 1073741824, '0'); -test(macro, '-9', 1073741824, '-1'); -test(macro, '9', -1073741824, '-1'); -test(macro, '-9', -1073741824, '0'); -test(macro, '9', 51676101935731, '0'); -test(macro, '-9', 51676101935731, '-1'); -test(macro, '9', -51676101935731, '-1'); -test(macro, '-9', -51676101935731, '0'); -test(macro, '11', 1, '11'); -test(macro, '-11', 1, '-11'); -test(macro, '11', -1, '-11'); -test(macro, '-11', -1, '11'); -test(macro, '11', 3, '3'); -test(macro, '-11', 3, '-4'); -test(macro, '11', -3, '-4'); -test(macro, '-11', -3, '3'); -test(macro, '11', 7, '1'); -test(macro, '-11', 7, '-2'); -test(macro, '11', -7, '-2'); -test(macro, '-11', -7, '1'); -test(macro, '11', 9, '1'); -test(macro, '-11', 9, '-2'); -test(macro, '11', -9, '-2'); -test(macro, '-11', -9, '1'); -test(macro, '11', 11, '1'); -test(macro, '-11', 11, '-1'); -test(macro, '11', -11, '-1'); -test(macro, '-11', -11, '1'); -test(macro, '11', 17, '0'); -test(macro, '-11', 17, '-1'); -test(macro, '11', -17, '-1'); -test(macro, '-11', -17, '0'); -test(macro, '11', 22, '0'); -test(macro, '-11', 22, '-1'); -test(macro, '11', -22, '-1'); -test(macro, '-11', -22, '0'); -test(macro, '11', 24, '0'); -test(macro, '-11', 24, '-1'); -test(macro, '11', -24, '-1'); -test(macro, '-11', -24, '0'); -test(macro, '11', 27, '0'); -test(macro, '-11', 27, '-1'); -test(macro, '11', -27, '-1'); -test(macro, '-11', -27, '0'); -test(macro, '11', 29, '0'); -test(macro, '-11', 29, '-1'); -test(macro, '11', -29, '-1'); -test(macro, '-11', -29, '0'); -test(macro, '11', 1234, '0'); -test(macro, '-11', 1234, '-1'); -test(macro, '11', -1234, '-1'); -test(macro, '-11', -1234, '0'); -test(macro, '11', 5678, '0'); -test(macro, '-11', 5678, '-1'); -test(macro, '11', -5678, '-1'); -test(macro, '-11', -5678, '0'); -test(macro, '11', 94906265, '0'); -test(macro, '-11', 94906265, '-1'); -test(macro, '11', -94906265, '-1'); -test(macro, '-11', -94906265, '0'); -test(macro, '11', 94906266, '0'); -test(macro, '-11', 94906266, '-1'); -test(macro, '11', -94906266, '-1'); -test(macro, '-11', -94906266, '0'); -test(macro, '11', 1073741824, '0'); -test(macro, '-11', 1073741824, '-1'); -test(macro, '11', -1073741824, '-1'); -test(macro, '-11', -1073741824, '0'); -test(macro, '11', 51676101935731, '0'); -test(macro, '-11', 51676101935731, '-1'); -test(macro, '11', -51676101935731, '-1'); -test(macro, '-11', -51676101935731, '0'); -test(macro, '17', 1, '17'); -test(macro, '-17', 1, '-17'); -test(macro, '17', -1, '-17'); -test(macro, '-17', -1, '17'); -test(macro, '17', 3, '5'); -test(macro, '-17', 3, '-6'); -test(macro, '17', -3, '-6'); -test(macro, '-17', -3, '5'); -test(macro, '17', 7, '2'); -test(macro, '-17', 7, '-3'); -test(macro, '17', -7, '-3'); -test(macro, '-17', -7, '2'); -test(macro, '17', 9, '1'); -test(macro, '-17', 9, '-2'); -test(macro, '17', -9, '-2'); -test(macro, '-17', -9, '1'); -test(macro, '17', 11, '1'); -test(macro, '-17', 11, '-2'); -test(macro, '17', -11, '-2'); -test(macro, '-17', -11, '1'); -test(macro, '17', 17, '1'); -test(macro, '-17', 17, '-1'); -test(macro, '17', -17, '-1'); -test(macro, '-17', -17, '1'); -test(macro, '17', 22, '0'); -test(macro, '-17', 22, '-1'); -test(macro, '17', -22, '-1'); -test(macro, '-17', -22, '0'); -test(macro, '17', 24, '0'); -test(macro, '-17', 24, '-1'); -test(macro, '17', -24, '-1'); -test(macro, '-17', -24, '0'); -test(macro, '17', 27, '0'); -test(macro, '-17', 27, '-1'); -test(macro, '17', -27, '-1'); -test(macro, '-17', -27, '0'); -test(macro, '17', 29, '0'); -test(macro, '-17', 29, '-1'); -test(macro, '17', -29, '-1'); -test(macro, '-17', -29, '0'); -test(macro, '17', 1234, '0'); -test(macro, '-17', 1234, '-1'); -test(macro, '17', -1234, '-1'); -test(macro, '-17', -1234, '0'); -test(macro, '17', 5678, '0'); -test(macro, '-17', 5678, '-1'); -test(macro, '17', -5678, '-1'); -test(macro, '-17', -5678, '0'); -test(macro, '17', 94906265, '0'); -test(macro, '-17', 94906265, '-1'); -test(macro, '17', -94906265, '-1'); -test(macro, '-17', -94906265, '0'); -test(macro, '17', 94906266, '0'); -test(macro, '-17', 94906266, '-1'); -test(macro, '17', -94906266, '-1'); -test(macro, '-17', -94906266, '0'); -test(macro, '17', 1073741824, '0'); -test(macro, '-17', 1073741824, '-1'); -test(macro, '17', -1073741824, '-1'); -test(macro, '-17', -1073741824, '0'); -test(macro, '17', 51676101935731, '0'); -test(macro, '-17', 51676101935731, '-1'); -test(macro, '17', -51676101935731, '-1'); -test(macro, '-17', -51676101935731, '0'); -test(macro, '22', 1, '22'); -test(macro, '-22', 1, '-22'); -test(macro, '22', -1, '-22'); -test(macro, '-22', -1, '22'); -test(macro, '22', 3, '7'); -test(macro, '-22', 3, '-8'); -test(macro, '22', -3, '-8'); -test(macro, '-22', -3, '7'); -test(macro, '22', 7, '3'); -test(macro, '-22', 7, '-4'); -test(macro, '22', -7, '-4'); -test(macro, '-22', -7, '3'); -test(macro, '22', 9, '2'); -test(macro, '-22', 9, '-3'); -test(macro, '22', -9, '-3'); -test(macro, '-22', -9, '2'); -test(macro, '22', 11, '2'); -test(macro, '-22', 11, '-2'); -test(macro, '22', -11, '-2'); -test(macro, '-22', -11, '2'); -test(macro, '22', 17, '1'); -test(macro, '-22', 17, '-2'); -test(macro, '22', -17, '-2'); -test(macro, '-22', -17, '1'); -test(macro, '22', 22, '1'); -test(macro, '-22', 22, '-1'); -test(macro, '22', -22, '-1'); -test(macro, '-22', -22, '1'); -test(macro, '22', 24, '0'); -test(macro, '-22', 24, '-1'); -test(macro, '22', -24, '-1'); -test(macro, '-22', -24, '0'); -test(macro, '22', 27, '0'); -test(macro, '-22', 27, '-1'); -test(macro, '22', -27, '-1'); -test(macro, '-22', -27, '0'); -test(macro, '22', 29, '0'); -test(macro, '-22', 29, '-1'); -test(macro, '22', -29, '-1'); -test(macro, '-22', -29, '0'); -test(macro, '22', 1234, '0'); -test(macro, '-22', 1234, '-1'); -test(macro, '22', -1234, '-1'); -test(macro, '-22', -1234, '0'); -test(macro, '22', 5678, '0'); -test(macro, '-22', 5678, '-1'); -test(macro, '22', -5678, '-1'); -test(macro, '-22', -5678, '0'); -test(macro, '22', 94906265, '0'); -test(macro, '-22', 94906265, '-1'); -test(macro, '22', -94906265, '-1'); -test(macro, '-22', -94906265, '0'); -test(macro, '22', 94906266, '0'); -test(macro, '-22', 94906266, '-1'); -test(macro, '22', -94906266, '-1'); -test(macro, '-22', -94906266, '0'); -test(macro, '22', 1073741824, '0'); -test(macro, '-22', 1073741824, '-1'); -test(macro, '22', -1073741824, '-1'); -test(macro, '-22', -1073741824, '0'); -test(macro, '22', 51676101935731, '0'); -test(macro, '-22', 51676101935731, '-1'); -test(macro, '22', -51676101935731, '-1'); -test(macro, '-22', -51676101935731, '0'); -test(macro, '24', 1, '24'); -test(macro, '-24', 1, '-24'); -test(macro, '24', -1, '-24'); -test(macro, '-24', -1, '24'); -test(macro, '24', 3, '8'); -test(macro, '-24', 3, '-8'); -test(macro, '24', -3, '-8'); -test(macro, '-24', -3, '8'); -test(macro, '24', 7, '3'); -test(macro, '-24', 7, '-4'); -test(macro, '24', -7, '-4'); -test(macro, '-24', -7, '3'); -test(macro, '24', 9, '2'); -test(macro, '-24', 9, '-3'); -test(macro, '24', -9, '-3'); -test(macro, '-24', -9, '2'); -test(macro, '24', 11, '2'); -test(macro, '-24', 11, '-3'); -test(macro, '24', -11, '-3'); -test(macro, '-24', -11, '2'); -test(macro, '24', 17, '1'); -test(macro, '-24', 17, '-2'); -test(macro, '24', -17, '-2'); -test(macro, '-24', -17, '1'); -test(macro, '24', 22, '1'); -test(macro, '-24', 22, '-2'); -test(macro, '24', -22, '-2'); -test(macro, '-24', -22, '1'); -test(macro, '24', 24, '1'); -test(macro, '-24', 24, '-1'); -test(macro, '24', -24, '-1'); -test(macro, '-24', -24, '1'); -test(macro, '24', 27, '0'); -test(macro, '-24', 27, '-1'); -test(macro, '24', -27, '-1'); -test(macro, '-24', -27, '0'); -test(macro, '24', 29, '0'); -test(macro, '-24', 29, '-1'); -test(macro, '24', -29, '-1'); -test(macro, '-24', -29, '0'); -test(macro, '24', 1234, '0'); -test(macro, '-24', 1234, '-1'); -test(macro, '24', -1234, '-1'); -test(macro, '-24', -1234, '0'); -test(macro, '24', 5678, '0'); -test(macro, '-24', 5678, '-1'); -test(macro, '24', -5678, '-1'); -test(macro, '-24', -5678, '0'); -test(macro, '24', 94906265, '0'); -test(macro, '-24', 94906265, '-1'); -test(macro, '24', -94906265, '-1'); -test(macro, '-24', -94906265, '0'); -test(macro, '24', 94906266, '0'); -test(macro, '-24', 94906266, '-1'); -test(macro, '24', -94906266, '-1'); -test(macro, '-24', -94906266, '0'); -test(macro, '24', 1073741824, '0'); -test(macro, '-24', 1073741824, '-1'); -test(macro, '24', -1073741824, '-1'); -test(macro, '-24', -1073741824, '0'); -test(macro, '24', 51676101935731, '0'); -test(macro, '-24', 51676101935731, '-1'); -test(macro, '24', -51676101935731, '-1'); -test(macro, '-24', -51676101935731, '0'); -test(macro, '27', 1, '27'); -test(macro, '-27', 1, '-27'); -test(macro, '27', -1, '-27'); -test(macro, '-27', -1, '27'); -test(macro, '27', 3, '9'); -test(macro, '-27', 3, '-9'); -test(macro, '27', -3, '-9'); -test(macro, '-27', -3, '9'); -test(macro, '27', 7, '3'); -test(macro, '-27', 7, '-4'); -test(macro, '27', -7, '-4'); -test(macro, '-27', -7, '3'); -test(macro, '27', 9, '3'); -test(macro, '-27', 9, '-3'); -test(macro, '27', -9, '-3'); -test(macro, '-27', -9, '3'); -test(macro, '27', 11, '2'); -test(macro, '-27', 11, '-3'); -test(macro, '27', -11, '-3'); -test(macro, '-27', -11, '2'); -test(macro, '27', 17, '1'); -test(macro, '-27', 17, '-2'); -test(macro, '27', -17, '-2'); -test(macro, '-27', -17, '1'); -test(macro, '27', 22, '1'); -test(macro, '-27', 22, '-2'); -test(macro, '27', -22, '-2'); -test(macro, '-27', -22, '1'); -test(macro, '27', 24, '1'); -test(macro, '-27', 24, '-2'); -test(macro, '27', -24, '-2'); -test(macro, '-27', -24, '1'); -test(macro, '27', 27, '1'); -test(macro, '-27', 27, '-1'); -test(macro, '27', -27, '-1'); -test(macro, '-27', -27, '1'); -test(macro, '27', 29, '0'); -test(macro, '-27', 29, '-1'); -test(macro, '27', -29, '-1'); -test(macro, '-27', -29, '0'); -test(macro, '27', 1234, '0'); -test(macro, '-27', 1234, '-1'); -test(macro, '27', -1234, '-1'); -test(macro, '-27', -1234, '0'); -test(macro, '27', 5678, '0'); -test(macro, '-27', 5678, '-1'); -test(macro, '27', -5678, '-1'); -test(macro, '-27', -5678, '0'); -test(macro, '27', 94906265, '0'); -test(macro, '-27', 94906265, '-1'); -test(macro, '27', -94906265, '-1'); -test(macro, '-27', -94906265, '0'); -test(macro, '27', 94906266, '0'); -test(macro, '-27', 94906266, '-1'); -test(macro, '27', -94906266, '-1'); -test(macro, '-27', -94906266, '0'); -test(macro, '27', 1073741824, '0'); -test(macro, '-27', 1073741824, '-1'); -test(macro, '27', -1073741824, '-1'); -test(macro, '-27', -1073741824, '0'); -test(macro, '27', 51676101935731, '0'); -test(macro, '-27', 51676101935731, '-1'); -test(macro, '27', -51676101935731, '-1'); -test(macro, '-27', -51676101935731, '0'); -test(macro, '29', 1, '29'); -test(macro, '-29', 1, '-29'); -test(macro, '29', -1, '-29'); -test(macro, '-29', -1, '29'); -test(macro, '29', 3, '9'); -test(macro, '-29', 3, '-10'); -test(macro, '29', -3, '-10'); -test(macro, '-29', -3, '9'); -test(macro, '29', 7, '4'); -test(macro, '-29', 7, '-5'); -test(macro, '29', -7, '-5'); -test(macro, '-29', -7, '4'); -test(macro, '29', 9, '3'); -test(macro, '-29', 9, '-4'); -test(macro, '29', -9, '-4'); -test(macro, '-29', -9, '3'); -test(macro, '29', 11, '2'); -test(macro, '-29', 11, '-3'); -test(macro, '29', -11, '-3'); -test(macro, '-29', -11, '2'); -test(macro, '29', 17, '1'); -test(macro, '-29', 17, '-2'); -test(macro, '29', -17, '-2'); -test(macro, '-29', -17, '1'); -test(macro, '29', 22, '1'); -test(macro, '-29', 22, '-2'); -test(macro, '29', -22, '-2'); -test(macro, '-29', -22, '1'); -test(macro, '29', 24, '1'); -test(macro, '-29', 24, '-2'); -test(macro, '29', -24, '-2'); -test(macro, '-29', -24, '1'); -test(macro, '29', 27, '1'); -test(macro, '-29', 27, '-2'); -test(macro, '29', -27, '-2'); -test(macro, '-29', -27, '1'); -test(macro, '29', 29, '1'); -test(macro, '-29', 29, '-1'); -test(macro, '29', -29, '-1'); -test(macro, '-29', -29, '1'); -test(macro, '29', 1234, '0'); -test(macro, '-29', 1234, '-1'); -test(macro, '29', -1234, '-1'); -test(macro, '-29', -1234, '0'); -test(macro, '29', 5678, '0'); -test(macro, '-29', 5678, '-1'); -test(macro, '29', -5678, '-1'); -test(macro, '-29', -5678, '0'); -test(macro, '29', 94906265, '0'); -test(macro, '-29', 94906265, '-1'); -test(macro, '29', -94906265, '-1'); -test(macro, '-29', -94906265, '0'); -test(macro, '29', 94906266, '0'); -test(macro, '-29', 94906266, '-1'); -test(macro, '29', -94906266, '-1'); -test(macro, '-29', -94906266, '0'); -test(macro, '29', 1073741824, '0'); -test(macro, '-29', 1073741824, '-1'); -test(macro, '29', -1073741824, '-1'); -test(macro, '-29', -1073741824, '0'); -test(macro, '29', 51676101935731, '0'); -test(macro, '-29', 51676101935731, '-1'); -test(macro, '29', -51676101935731, '-1'); -test(macro, '-29', -51676101935731, '0'); -test(macro, '1234', 1, '1234'); -test(macro, '-1234', 1, '-1234'); -test(macro, '1234', -1, '-1234'); -test(macro, '-1234', -1, '1234'); -test(macro, '1234', 3, '411'); -test(macro, '-1234', 3, '-412'); -test(macro, '1234', -3, '-412'); -test(macro, '-1234', -3, '411'); -test(macro, '1234', 7, '176'); -test(macro, '-1234', 7, '-177'); -test(macro, '1234', -7, '-177'); -test(macro, '-1234', -7, '176'); -test(macro, '1234', 9, '137'); -test(macro, '-1234', 9, '-138'); -test(macro, '1234', -9, '-138'); -test(macro, '-1234', -9, '137'); -test(macro, '1234', 11, '112'); -test(macro, '-1234', 11, '-113'); -test(macro, '1234', -11, '-113'); -test(macro, '-1234', -11, '112'); -test(macro, '1234', 17, '72'); -test(macro, '-1234', 17, '-73'); -test(macro, '1234', -17, '-73'); -test(macro, '-1234', -17, '72'); -test(macro, '1234', 22, '56'); -test(macro, '-1234', 22, '-57'); -test(macro, '1234', -22, '-57'); -test(macro, '-1234', -22, '56'); -test(macro, '1234', 24, '51'); -test(macro, '-1234', 24, '-52'); -test(macro, '1234', -24, '-52'); -test(macro, '-1234', -24, '51'); -test(macro, '1234', 27, '45'); -test(macro, '-1234', 27, '-46'); -test(macro, '1234', -27, '-46'); -test(macro, '-1234', -27, '45'); -test(macro, '1234', 29, '42'); -test(macro, '-1234', 29, '-43'); -test(macro, '1234', -29, '-43'); -test(macro, '-1234', -29, '42'); -test(macro, '1234', 1234, '1'); -test(macro, '-1234', 1234, '-1'); -test(macro, '1234', -1234, '-1'); -test(macro, '-1234', -1234, '1'); -test(macro, '1234', 5678, '0'); -test(macro, '-1234', 5678, '-1'); -test(macro, '1234', -5678, '-1'); -test(macro, '-1234', -5678, '0'); -test(macro, '1234', 94906265, '0'); -test(macro, '-1234', 94906265, '-1'); -test(macro, '1234', -94906265, '-1'); -test(macro, '-1234', -94906265, '0'); -test(macro, '1234', 94906266, '0'); -test(macro, '-1234', 94906266, '-1'); -test(macro, '1234', -94906266, '-1'); -test(macro, '-1234', -94906266, '0'); -test(macro, '1234', 1073741824, '0'); -test(macro, '-1234', 1073741824, '-1'); -test(macro, '1234', -1073741824, '-1'); -test(macro, '-1234', -1073741824, '0'); -test(macro, '1234', 51676101935731, '0'); -test(macro, '-1234', 51676101935731, '-1'); -test(macro, '1234', -51676101935731, '-1'); -test(macro, '-1234', -51676101935731, '0'); -test(macro, '5678', 1, '5678'); -test(macro, '-5678', 1, '-5678'); -test(macro, '5678', -1, '-5678'); -test(macro, '-5678', -1, '5678'); -test(macro, '5678', 3, '1892'); -test(macro, '-5678', 3, '-1893'); -test(macro, '5678', -3, '-1893'); -test(macro, '-5678', -3, '1892'); -test(macro, '5678', 7, '811'); -test(macro, '-5678', 7, '-812'); -test(macro, '5678', -7, '-812'); -test(macro, '-5678', -7, '811'); -test(macro, '5678', 9, '630'); -test(macro, '-5678', 9, '-631'); -test(macro, '5678', -9, '-631'); -test(macro, '-5678', -9, '630'); -test(macro, '5678', 11, '516'); -test(macro, '-5678', 11, '-517'); -test(macro, '5678', -11, '-517'); -test(macro, '-5678', -11, '516'); -test(macro, '5678', 17, '334'); -test(macro, '-5678', 17, '-334'); -test(macro, '5678', -17, '-334'); -test(macro, '-5678', -17, '334'); -test(macro, '5678', 22, '258'); -test(macro, '-5678', 22, '-259'); -test(macro, '5678', -22, '-259'); -test(macro, '-5678', -22, '258'); -test(macro, '5678', 24, '236'); -test(macro, '-5678', 24, '-237'); -test(macro, '5678', -24, '-237'); -test(macro, '-5678', -24, '236'); -test(macro, '5678', 27, '210'); -test(macro, '-5678', 27, '-211'); -test(macro, '5678', -27, '-211'); -test(macro, '-5678', -27, '210'); -test(macro, '5678', 29, '195'); -test(macro, '-5678', 29, '-196'); -test(macro, '5678', -29, '-196'); -test(macro, '-5678', -29, '195'); -test(macro, '5678', 1234, '4'); -test(macro, '-5678', 1234, '-5'); -test(macro, '5678', -1234, '-5'); -test(macro, '-5678', -1234, '4'); -test(macro, '5678', 5678, '1'); -test(macro, '-5678', 5678, '-1'); -test(macro, '5678', -5678, '-1'); -test(macro, '-5678', -5678, '1'); -test(macro, '5678', 94906265, '0'); -test(macro, '-5678', 94906265, '-1'); -test(macro, '5678', -94906265, '-1'); -test(macro, '-5678', -94906265, '0'); -test(macro, '5678', 94906266, '0'); -test(macro, '-5678', 94906266, '-1'); -test(macro, '5678', -94906266, '-1'); -test(macro, '-5678', -94906266, '0'); -test(macro, '5678', 1073741824, '0'); -test(macro, '-5678', 1073741824, '-1'); -test(macro, '5678', -1073741824, '-1'); -test(macro, '-5678', -1073741824, '0'); -test(macro, '5678', 51676101935731, '0'); -test(macro, '-5678', 51676101935731, '-1'); -test(macro, '5678', -51676101935731, '-1'); -test(macro, '-5678', -51676101935731, '0'); -test(macro, '94906265', 1, '94906265'); -test(macro, '-94906265', 1, '-94906265'); -test(macro, '94906265', -1, '-94906265'); -test(macro, '-94906265', -1, '94906265'); -test(macro, '94906265', 3, '31635421'); -test(macro, '-94906265', 3, '-31635422'); -test(macro, '94906265', -3, '-31635422'); -test(macro, '-94906265', -3, '31635421'); -test(macro, '94906265', 7, '13558037'); -test(macro, '-94906265', 7, '-13558038'); -test(macro, '94906265', -7, '-13558038'); -test(macro, '-94906265', -7, '13558037'); -test(macro, '94906265', 9, '10545140'); -test(macro, '-94906265', 9, '-10545141'); -test(macro, '94906265', -9, '-10545141'); -test(macro, '-94906265', -9, '10545140'); -test(macro, '94906265', 11, '8627842'); -test(macro, '-94906265', 11, '-8627843'); -test(macro, '94906265', -11, '-8627843'); -test(macro, '-94906265', -11, '8627842'); -test(macro, '94906265', 17, '5582721'); -test(macro, '-94906265', 17, '-5582722'); -test(macro, '94906265', -17, '-5582722'); -test(macro, '-94906265', -17, '5582721'); -test(macro, '94906265', 22, '4313921'); -test(macro, '-94906265', 22, '-4313922'); -test(macro, '94906265', -22, '-4313922'); -test(macro, '-94906265', -22, '4313921'); -test(macro, '94906265', 24, '3954427'); -test(macro, '-94906265', 24, '-3954428'); -test(macro, '94906265', -24, '-3954428'); -test(macro, '-94906265', -24, '3954427'); -test(macro, '94906265', 27, '3515046'); -test(macro, '-94906265', 27, '-3515047'); -test(macro, '94906265', -27, '-3515047'); -test(macro, '-94906265', -27, '3515046'); -test(macro, '94906265', 29, '3272629'); -test(macro, '-94906265', 29, '-3272630'); -test(macro, '94906265', -29, '-3272630'); -test(macro, '-94906265', -29, '3272629'); -test(macro, '94906265', 1234, '76909'); -test(macro, '-94906265', 1234, '-76910'); -test(macro, '94906265', -1234, '-76910'); -test(macro, '-94906265', -1234, '76909'); -test(macro, '94906265', 5678, '16714'); -test(macro, '-94906265', 5678, '-16715'); -test(macro, '94906265', -5678, '-16715'); -test(macro, '-94906265', -5678, '16714'); -test(macro, '94906265', 94906265, '1'); -test(macro, '-94906265', 94906265, '-1'); -test(macro, '94906265', -94906265, '-1'); -test(macro, '-94906265', -94906265, '1'); -test(macro, '94906265', 94906266, '0'); -test(macro, '-94906265', 94906266, '-1'); -test(macro, '94906265', -94906266, '-1'); -test(macro, '-94906265', -94906266, '0'); -test(macro, '94906265', 1073741824, '0'); -test(macro, '-94906265', 1073741824, '-1'); -test(macro, '94906265', -1073741824, '-1'); -test(macro, '-94906265', -1073741824, '0'); -test(macro, '94906265', 51676101935731, '0'); -test(macro, '-94906265', 51676101935731, '-1'); -test(macro, '94906265', -51676101935731, '-1'); -test(macro, '-94906265', -51676101935731, '0'); -test(macro, '94906266', 1, '94906266'); -test(macro, '-94906266', 1, '-94906266'); -test(macro, '94906266', -1, '-94906266'); -test(macro, '-94906266', -1, '94906266'); -test(macro, '94906266', 3, '31635422'); -test(macro, '-94906266', 3, '-31635422'); -test(macro, '94906266', -3, '-31635422'); -test(macro, '-94906266', -3, '31635422'); -test(macro, '94906266', 7, '13558038'); -test(macro, '-94906266', 7, '-13558038'); -test(macro, '94906266', -7, '-13558038'); -test(macro, '-94906266', -7, '13558038'); -test(macro, '94906266', 9, '10545140'); -test(macro, '-94906266', 9, '-10545141'); -test(macro, '94906266', -9, '-10545141'); -test(macro, '-94906266', -9, '10545140'); -test(macro, '94906266', 11, '8627842'); -test(macro, '-94906266', 11, '-8627843'); -test(macro, '94906266', -11, '-8627843'); -test(macro, '-94906266', -11, '8627842'); -test(macro, '94906266', 17, '5582721'); -test(macro, '-94906266', 17, '-5582722'); -test(macro, '94906266', -17, '-5582722'); -test(macro, '-94906266', -17, '5582721'); -test(macro, '94906266', 22, '4313921'); -test(macro, '-94906266', 22, '-4313922'); -test(macro, '94906266', -22, '-4313922'); -test(macro, '-94906266', -22, '4313921'); -test(macro, '94906266', 24, '3954427'); -test(macro, '-94906266', 24, '-3954428'); -test(macro, '94906266', -24, '-3954428'); -test(macro, '-94906266', -24, '3954427'); -test(macro, '94906266', 27, '3515046'); -test(macro, '-94906266', 27, '-3515047'); -test(macro, '94906266', -27, '-3515047'); -test(macro, '-94906266', -27, '3515046'); -test(macro, '94906266', 29, '3272629'); -test(macro, '-94906266', 29, '-3272630'); -test(macro, '94906266', -29, '-3272630'); -test(macro, '-94906266', -29, '3272629'); -test(macro, '94906266', 1234, '76909'); -test(macro, '-94906266', 1234, '-76910'); -test(macro, '94906266', -1234, '-76910'); -test(macro, '-94906266', -1234, '76909'); -test(macro, '94906266', 5678, '16714'); -test(macro, '-94906266', 5678, '-16715'); -test(macro, '94906266', -5678, '-16715'); -test(macro, '-94906266', -5678, '16714'); -test(macro, '94906266', 94906265, '1'); -test(macro, '-94906266', 94906265, '-2'); -test(macro, '94906266', -94906265, '-2'); -test(macro, '-94906266', -94906265, '1'); -test(macro, '94906266', 94906266, '1'); -test(macro, '-94906266', 94906266, '-1'); -test(macro, '94906266', -94906266, '-1'); -test(macro, '-94906266', -94906266, '1'); -test(macro, '94906266', 1073741824, '0'); -test(macro, '-94906266', 1073741824, '-1'); -test(macro, '94906266', -1073741824, '-1'); -test(macro, '-94906266', -1073741824, '0'); -test(macro, '94906266', 51676101935731, '0'); -test(macro, '-94906266', 51676101935731, '-1'); -test(macro, '94906266', -51676101935731, '-1'); -test(macro, '-94906266', -51676101935731, '0'); -test(macro, '1073741824', 1, '1073741824'); -test(macro, '-1073741824', 1, '-1073741824'); -test(macro, '1073741824', -1, '-1073741824'); -test(macro, '-1073741824', -1, '1073741824'); -test(macro, '1073741824', 3, '357913941'); -test(macro, '-1073741824', 3, '-357913942'); -test(macro, '1073741824', -3, '-357913942'); -test(macro, '-1073741824', -3, '357913941'); -test(macro, '1073741824', 7, '153391689'); -test(macro, '-1073741824', 7, '-153391690'); -test(macro, '1073741824', -7, '-153391690'); -test(macro, '-1073741824', -7, '153391689'); -test(macro, '1073741824', 9, '119304647'); -test(macro, '-1073741824', 9, '-119304648'); -test(macro, '1073741824', -9, '-119304648'); -test(macro, '-1073741824', -9, '119304647'); -test(macro, '1073741824', 11, '97612893'); -test(macro, '-1073741824', 11, '-97612894'); -test(macro, '1073741824', -11, '-97612894'); -test(macro, '-1073741824', -11, '97612893'); -test(macro, '1073741824', 17, '63161283'); -test(macro, '-1073741824', 17, '-63161284'); -test(macro, '1073741824', -17, '-63161284'); -test(macro, '-1073741824', -17, '63161283'); -test(macro, '1073741824', 22, '48806446'); -test(macro, '-1073741824', 22, '-48806447'); -test(macro, '1073741824', -22, '-48806447'); -test(macro, '-1073741824', -22, '48806446'); -test(macro, '1073741824', 24, '44739242'); -test(macro, '-1073741824', 24, '-44739243'); -test(macro, '1073741824', -24, '-44739243'); -test(macro, '-1073741824', -24, '44739242'); -test(macro, '1073741824', 27, '39768215'); -test(macro, '-1073741824', 27, '-39768216'); -test(macro, '1073741824', -27, '-39768216'); -test(macro, '-1073741824', -27, '39768215'); -test(macro, '1073741824', 29, '37025580'); -test(macro, '-1073741824', 29, '-37025581'); -test(macro, '1073741824', -29, '-37025581'); -test(macro, '-1073741824', -29, '37025580'); -test(macro, '1073741824', 1234, '870131'); -test(macro, '-1073741824', 1234, '-870132'); -test(macro, '1073741824', -1234, '-870132'); -test(macro, '-1073741824', -1234, '870131'); -test(macro, '1073741824', 5678, '189105'); -test(macro, '-1073741824', 5678, '-189106'); -test(macro, '1073741824', -5678, '-189106'); -test(macro, '-1073741824', -5678, '189105'); -test(macro, '1073741824', 94906265, '11'); -test(macro, '-1073741824', 94906265, '-12'); -test(macro, '1073741824', -94906265, '-12'); -test(macro, '-1073741824', -94906265, '11'); -test(macro, '1073741824', 94906266, '11'); -test(macro, '-1073741824', 94906266, '-12'); -test(macro, '1073741824', -94906266, '-12'); -test(macro, '-1073741824', -94906266, '11'); -test(macro, '1073741824', 1073741824, '1'); -test(macro, '-1073741824', 1073741824, '-1'); -test(macro, '1073741824', -1073741824, '-1'); -test(macro, '-1073741824', -1073741824, '1'); -test(macro, '1073741824', 51676101935731, '0'); -test(macro, '-1073741824', 51676101935731, '-1'); -test(macro, '1073741824', -51676101935731, '-1'); -test(macro, '-1073741824', -51676101935731, '0'); -test(macro, '51676101935731', 1, '51676101935731'); -test(macro, '-51676101935731', 1, '-51676101935731'); -test(macro, '51676101935731', -1, '-51676101935731'); -test(macro, '-51676101935731', -1, '51676101935731'); -test(macro, '51676101935731', 3, '17225367311910'); -test(macro, '-51676101935731', 3, '-17225367311911'); -test(macro, '51676101935731', -3, '-17225367311911'); -test(macro, '-51676101935731', -3, '17225367311910'); -test(macro, '51676101935731', 7, '7382300276533'); -test(macro, '-51676101935731', 7, '-7382300276533'); -test(macro, '51676101935731', -7, '-7382300276533'); -test(macro, '-51676101935731', -7, '7382300276533'); -test(macro, '51676101935731', 9, '5741789103970'); -test(macro, '-51676101935731', 9, '-5741789103971'); -test(macro, '51676101935731', -9, '-5741789103971'); -test(macro, '-51676101935731', -9, '5741789103970'); -test(macro, '51676101935731', 11, '4697827448702'); -test(macro, '-51676101935731', 11, '-4697827448703'); -test(macro, '51676101935731', -11, '-4697827448703'); -test(macro, '-51676101935731', -11, '4697827448702'); -test(macro, '51676101935731', 17, '3039770702101'); -test(macro, '-51676101935731', 17, '-3039770702102'); -test(macro, '51676101935731', -17, '-3039770702102'); -test(macro, '-51676101935731', -17, '3039770702101'); -test(macro, '51676101935731', 22, '2348913724351'); -test(macro, '-51676101935731', 22, '-2348913724352'); -test(macro, '51676101935731', -22, '-2348913724352'); -test(macro, '-51676101935731', -22, '2348913724351'); -test(macro, '51676101935731', 24, '2153170913988'); -test(macro, '-51676101935731', 24, '-2153170913989'); -test(macro, '51676101935731', -24, '-2153170913989'); -test(macro, '-51676101935731', -24, '2153170913988'); -test(macro, '51676101935731', 27, '1913929701323'); -test(macro, '-51676101935731', 27, '-1913929701324'); -test(macro, '51676101935731', -27, '-1913929701324'); -test(macro, '-51676101935731', -27, '1913929701323'); -test(macro, '51676101935731', 29, '1781934549507'); -test(macro, '-51676101935731', 29, '-1781934549508'); -test(macro, '51676101935731', -29, '-1781934549508'); -test(macro, '-51676101935731', -29, '1781934549507'); -test(macro, '51676101935731', 1234, '41876905944'); -test(macro, '-51676101935731', 1234, '-41876905945'); -test(macro, '51676101935731', -1234, '-41876905945'); -test(macro, '-51676101935731', -1234, '41876905944'); -test(macro, '51676101935731', 5678, '9101109886'); -test(macro, '-51676101935731', 5678, '-9101109887'); -test(macro, '51676101935731', -5678, '-9101109887'); -test(macro, '-51676101935731', -5678, '9101109886'); -test(macro, '51676101935731', 94906265, '544496'); -test(macro, '-51676101935731', 94906265, '-544497'); -test(macro, '51676101935731', -94906265, '-544497'); -test(macro, '-51676101935731', -94906265, '544496'); -test(macro, '51676101935731', 94906266, '544496'); -test(macro, '-51676101935731', 94906266, '-544497'); -test(macro, '51676101935731', -94906266, '-544497'); -test(macro, '-51676101935731', -94906266, '544496'); -test(macro, '51676101935731', 1073741824, '48127'); -test(macro, '-51676101935731', 1073741824, '-48128'); -test(macro, '51676101935731', -1073741824, '-48128'); -test(macro, '-51676101935731', -1073741824, '48127'); -test(macro, '51676101935731', 51676101935731, '1'); -test(macro, '-51676101935731', 51676101935731, '-1'); -test(macro, '51676101935731', -51676101935731, '-1'); -test(macro, '-51676101935731', -51676101935731, '1'); -test(macro, '717897987691852588770249', 1, '717897987691852588770249'); -test(macro, '-717897987691852588770249', 1, '-717897987691852588770249'); -test(macro, '717897987691852588770249', -1, '-717897987691852588770249'); -test(macro, '-717897987691852588770249', -1, '717897987691852588770249'); -test(macro, '717897987691852588770249', 3, '239299329230617529590083'); -test(macro, '-717897987691852588770249', 3, '-239299329230617529590083'); -test(macro, '717897987691852588770249', -3, '-239299329230617529590083'); -test(macro, '-717897987691852588770249', -3, '239299329230617529590083'); -test(macro, '717897987691852588770249', 7, '102556855384550369824321'); -test(macro, '-717897987691852588770249', 7, '-102556855384550369824322'); -test(macro, '717897987691852588770249', -7, '-102556855384550369824322'); -test(macro, '-717897987691852588770249', -7, '102556855384550369824321'); -test(macro, '717897987691852588770249', 9, '79766443076872509863361'); -test(macro, '-717897987691852588770249', 9, '-79766443076872509863361'); -test(macro, '717897987691852588770249', -9, '-79766443076872509863361'); -test(macro, '-717897987691852588770249', -9, '79766443076872509863361'); -test(macro, '717897987691852588770249', 11, '65263453426532053524568'); -test(macro, '-717897987691852588770249', 11, '-65263453426532053524569'); -test(macro, '717897987691852588770249', -11, '-65263453426532053524569'); -test(macro, '-717897987691852588770249', -11, '65263453426532053524568'); -test(macro, '717897987691852588770249', 17, '42229293393638387574720'); -test(macro, '-717897987691852588770249', 17, '-42229293393638387574721'); -test(macro, '717897987691852588770249', -17, '-42229293393638387574721'); -test(macro, '-717897987691852588770249', -17, '42229293393638387574720'); -test(macro, '717897987691852588770249', 22, '32631726713266026762284'); -test(macro, '-717897987691852588770249', 22, '-32631726713266026762285'); -test(macro, '717897987691852588770249', -22, '-32631726713266026762285'); -test(macro, '-717897987691852588770249', -22, '32631726713266026762284'); -test(macro, '717897987691852588770249', 24, '29912416153827191198760'); -test(macro, '-717897987691852588770249', 24, '-29912416153827191198761'); -test(macro, '717897987691852588770249', -24, '-29912416153827191198761'); -test(macro, '-717897987691852588770249', -24, '29912416153827191198760'); -test(macro, '717897987691852588770249', 27, '26588814358957503287787'); -test(macro, '-717897987691852588770249', 27, '-26588814358957503287787'); -test(macro, '717897987691852588770249', -27, '-26588814358957503287787'); -test(macro, '-717897987691852588770249', -27, '26588814358957503287787'); -test(macro, '717897987691852588770249', 29, '24755103023856985819663'); -test(macro, '-717897987691852588770249', 29, '-24755103023856985819664'); -test(macro, '717897987691852588770249', -29, '-24755103023856985819664'); -test(macro, '-717897987691852588770249', -29, '24755103023856985819663'); -test(macro, '717897987691852588770249', 1234, '581764981922084755891'); -test(macro, '-717897987691852588770249', 1234, '-581764981922084755892'); -test(macro, '717897987691852588770249', -1234, '-581764981922084755892'); -test(macro, '-717897987691852588770249', -1234, '581764981922084755891'); -test(macro, '717897987691852588770249', 5678, '126435010160593974774'); -test(macro, '-717897987691852588770249', 5678, '-126435010160593974775'); -test(macro, '717897987691852588770249', -5678, '-126435010160593974775'); -test(macro, '-717897987691852588770249', -5678, '126435010160593974774'); -test(macro, '717897987691852588770249', 94906265, '7564284483135571'); -test(macro, '-717897987691852588770249', 94906265, '-7564284483135572'); -test(macro, '717897987691852588770249', -94906265, '-7564284483135572'); -test(macro, '-717897987691852588770249', -94906265, '7564284483135571'); -test(macro, '717897987691852588770249', 94906266, '7564284403432883'); -test(macro, '-717897987691852588770249', 94906266, '-7564284403432884'); -test(macro, '717897987691852588770249', -94906266, '-7564284403432884'); -test(macro, '-717897987691852588770249', -94906266, '7564284403432883'); -test(macro, '717897987691852588770249', 1073741824, '668594602208447'); -test(macro, '-717897987691852588770249', 1073741824, '-668594602208448'); -test(macro, '717897987691852588770249', -1073741824, '-668594602208448'); -test(macro, '-717897987691852588770249', -1073741824, '668594602208447'); -test(macro, '717897987691852588770249', 51676101935731, '13892262782'); -test(macro, '-717897987691852588770249', 51676101935731, '-13892262783'); -test(macro, '717897987691852588770249', -51676101935731, '-13892262783'); -test(macro, '-717897987691852588770249', -51676101935731, '13892262782'); diff --git a/test/src/integer/arithmetic/imod.js b/test/src/integer/arithmetic/imod.js deleted file mode 100644 index 0d25443..0000000 --- a/test/src/integer/arithmetic/imod.js +++ /dev/null @@ -1,1246 +0,0 @@ -import test from 'ava'; -import {parse, stringify, imod} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const b = parse(B); - const c = imod(a, b); - t.is(stringify(a), C); - t.is(stringify(b), B); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `imod(${fmt(A)},${fmt(B)}) = ${fmt(C)}`; - -test(macro, '0', '1', '0'); -test(macro, '0', '-1', '0'); -test(macro, '0', '3', '0'); -test(macro, '0', '-3', '0'); -test(macro, '0', '7', '0'); -test(macro, '0', '-7', '0'); -test(macro, '0', '9', '0'); -test(macro, '0', '-9', '0'); -test(macro, '0', '11', '0'); -test(macro, '0', '-11', '0'); -test(macro, '0', '17', '0'); -test(macro, '0', '-17', '0'); -test(macro, '0', '22', '0'); -test(macro, '0', '-22', '0'); -test(macro, '0', '24', '0'); -test(macro, '0', '-24', '0'); -test(macro, '0', '27', '0'); -test(macro, '0', '-27', '0'); -test(macro, '0', '29', '0'); -test(macro, '0', '-29', '0'); -test(macro, '0', '1234', '0'); -test(macro, '0', '-1234', '0'); -test(macro, '0', '5678', '0'); -test(macro, '0', '-5678', '0'); -test(macro, '0', '94906265', '0'); -test(macro, '0', '-94906265', '0'); -test(macro, '0', '94906266', '0'); -test(macro, '0', '-94906266', '0'); -test(macro, '0', '1073741824', '0'); -test(macro, '0', '-1073741824', '0'); -test(macro, '0', '51676101935731', '0'); -test(macro, '0', '-51676101935731', '0'); -test(macro, '0', '717897987691852588770249', '0'); -test(macro, '0', '-717897987691852588770249', '0'); -test(macro, '1', '1', '0'); -test(macro, '-1', '1', '0'); -test(macro, '1', '-1', '0'); -test(macro, '-1', '-1', '0'); -test(macro, '1', '3', '1'); -test(macro, '-1', '3', '2'); -test(macro, '1', '-3', '-2'); -test(macro, '-1', '-3', '-1'); -test(macro, '1', '7', '1'); -test(macro, '-1', '7', '6'); -test(macro, '1', '-7', '-6'); -test(macro, '-1', '-7', '-1'); -test(macro, '1', '9', '1'); -test(macro, '-1', '9', '8'); -test(macro, '1', '-9', '-8'); -test(macro, '-1', '-9', '-1'); -test(macro, '1', '11', '1'); -test(macro, '-1', '11', '10'); -test(macro, '1', '-11', '-10'); -test(macro, '-1', '-11', '-1'); -test(macro, '1', '17', '1'); -test(macro, '-1', '17', '16'); -test(macro, '1', '-17', '-16'); -test(macro, '-1', '-17', '-1'); -test(macro, '1', '22', '1'); -test(macro, '-1', '22', '21'); -test(macro, '1', '-22', '-21'); -test(macro, '-1', '-22', '-1'); -test(macro, '1', '24', '1'); -test(macro, '-1', '24', '23'); -test(macro, '1', '-24', '-23'); -test(macro, '-1', '-24', '-1'); -test(macro, '1', '27', '1'); -test(macro, '-1', '27', '26'); -test(macro, '1', '-27', '-26'); -test(macro, '-1', '-27', '-1'); -test(macro, '1', '29', '1'); -test(macro, '-1', '29', '28'); -test(macro, '1', '-29', '-28'); -test(macro, '-1', '-29', '-1'); -test(macro, '1', '1234', '1'); -test(macro, '-1', '1234', '1233'); -test(macro, '1', '-1234', '-1233'); -test(macro, '-1', '-1234', '-1'); -test(macro, '1', '5678', '1'); -test(macro, '-1', '5678', '5677'); -test(macro, '1', '-5678', '-5677'); -test(macro, '-1', '-5678', '-1'); -test(macro, '1', '94906265', '1'); -test(macro, '-1', '94906265', '94906264'); -test(macro, '1', '-94906265', '-94906264'); -test(macro, '-1', '-94906265', '-1'); -test(macro, '1', '94906266', '1'); -test(macro, '-1', '94906266', '94906265'); -test(macro, '1', '-94906266', '-94906265'); -test(macro, '-1', '-94906266', '-1'); -test(macro, '1', '1073741824', '1'); -test(macro, '-1', '1073741824', '1073741823'); -test(macro, '1', '-1073741824', '-1073741823'); -test(macro, '-1', '-1073741824', '-1'); -test(macro, '1', '51676101935731', '1'); -test(macro, '-1', '51676101935731', '51676101935730'); -test(macro, '1', '-51676101935731', '-51676101935730'); -test(macro, '-1', '-51676101935731', '-1'); -test(macro, '1', '717897987691852588770249', '1'); -test(macro, '-1', '717897987691852588770249', '717897987691852588770248'); -test(macro, '1', '-717897987691852588770249', '-717897987691852588770248'); -test(macro, '-1', '-717897987691852588770249', '-1'); -test(macro, '3', '1', '0'); -test(macro, '-3', '1', '0'); -test(macro, '3', '-1', '0'); -test(macro, '-3', '-1', '0'); -test(macro, '3', '3', '0'); -test(macro, '-3', '3', '0'); -test(macro, '3', '-3', '0'); -test(macro, '-3', '-3', '0'); -test(macro, '3', '7', '3'); -test(macro, '-3', '7', '4'); -test(macro, '3', '-7', '-4'); -test(macro, '-3', '-7', '-3'); -test(macro, '3', '9', '3'); -test(macro, '-3', '9', '6'); -test(macro, '3', '-9', '-6'); -test(macro, '-3', '-9', '-3'); -test(macro, '3', '11', '3'); -test(macro, '-3', '11', '8'); -test(macro, '3', '-11', '-8'); -test(macro, '-3', '-11', '-3'); -test(macro, '3', '17', '3'); -test(macro, '-3', '17', '14'); -test(macro, '3', '-17', '-14'); -test(macro, '-3', '-17', '-3'); -test(macro, '3', '22', '3'); -test(macro, '-3', '22', '19'); -test(macro, '3', '-22', '-19'); -test(macro, '-3', '-22', '-3'); -test(macro, '3', '24', '3'); -test(macro, '-3', '24', '21'); -test(macro, '3', '-24', '-21'); -test(macro, '-3', '-24', '-3'); -test(macro, '3', '27', '3'); -test(macro, '-3', '27', '24'); -test(macro, '3', '-27', '-24'); -test(macro, '-3', '-27', '-3'); -test(macro, '3', '29', '3'); -test(macro, '-3', '29', '26'); -test(macro, '3', '-29', '-26'); -test(macro, '-3', '-29', '-3'); -test(macro, '3', '1234', '3'); -test(macro, '-3', '1234', '1231'); -test(macro, '3', '-1234', '-1231'); -test(macro, '-3', '-1234', '-3'); -test(macro, '3', '5678', '3'); -test(macro, '-3', '5678', '5675'); -test(macro, '3', '-5678', '-5675'); -test(macro, '-3', '-5678', '-3'); -test(macro, '3', '94906265', '3'); -test(macro, '-3', '94906265', '94906262'); -test(macro, '3', '-94906265', '-94906262'); -test(macro, '-3', '-94906265', '-3'); -test(macro, '3', '94906266', '3'); -test(macro, '-3', '94906266', '94906263'); -test(macro, '3', '-94906266', '-94906263'); -test(macro, '-3', '-94906266', '-3'); -test(macro, '3', '1073741824', '3'); -test(macro, '-3', '1073741824', '1073741821'); -test(macro, '3', '-1073741824', '-1073741821'); -test(macro, '-3', '-1073741824', '-3'); -test(macro, '3', '51676101935731', '3'); -test(macro, '-3', '51676101935731', '51676101935728'); -test(macro, '3', '-51676101935731', '-51676101935728'); -test(macro, '-3', '-51676101935731', '-3'); -test(macro, '3', '717897987691852588770249', '3'); -test(macro, '-3', '717897987691852588770249', '717897987691852588770246'); -test(macro, '3', '-717897987691852588770249', '-717897987691852588770246'); -test(macro, '-3', '-717897987691852588770249', '-3'); -test(macro, '7', '1', '0'); -test(macro, '-7', '1', '0'); -test(macro, '7', '-1', '0'); -test(macro, '-7', '-1', '0'); -test(macro, '7', '3', '1'); -test(macro, '-7', '3', '2'); -test(macro, '7', '-3', '-2'); -test(macro, '-7', '-3', '-1'); -test(macro, '7', '7', '0'); -test(macro, '-7', '7', '0'); -test(macro, '7', '-7', '0'); -test(macro, '-7', '-7', '0'); -test(macro, '7', '9', '7'); -test(macro, '-7', '9', '2'); -test(macro, '7', '-9', '-2'); -test(macro, '-7', '-9', '-7'); -test(macro, '7', '11', '7'); -test(macro, '-7', '11', '4'); -test(macro, '7', '-11', '-4'); -test(macro, '-7', '-11', '-7'); -test(macro, '7', '17', '7'); -test(macro, '-7', '17', '10'); -test(macro, '7', '-17', '-10'); -test(macro, '-7', '-17', '-7'); -test(macro, '7', '22', '7'); -test(macro, '-7', '22', '15'); -test(macro, '7', '-22', '-15'); -test(macro, '-7', '-22', '-7'); -test(macro, '7', '24', '7'); -test(macro, '-7', '24', '17'); -test(macro, '7', '-24', '-17'); -test(macro, '-7', '-24', '-7'); -test(macro, '7', '27', '7'); -test(macro, '-7', '27', '20'); -test(macro, '7', '-27', '-20'); -test(macro, '-7', '-27', '-7'); -test(macro, '7', '29', '7'); -test(macro, '-7', '29', '22'); -test(macro, '7', '-29', '-22'); -test(macro, '-7', '-29', '-7'); -test(macro, '7', '1234', '7'); -test(macro, '-7', '1234', '1227'); -test(macro, '7', '-1234', '-1227'); -test(macro, '-7', '-1234', '-7'); -test(macro, '7', '5678', '7'); -test(macro, '-7', '5678', '5671'); -test(macro, '7', '-5678', '-5671'); -test(macro, '-7', '-5678', '-7'); -test(macro, '7', '94906265', '7'); -test(macro, '-7', '94906265', '94906258'); -test(macro, '7', '-94906265', '-94906258'); -test(macro, '-7', '-94906265', '-7'); -test(macro, '7', '94906266', '7'); -test(macro, '-7', '94906266', '94906259'); -test(macro, '7', '-94906266', '-94906259'); -test(macro, '-7', '-94906266', '-7'); -test(macro, '7', '1073741824', '7'); -test(macro, '-7', '1073741824', '1073741817'); -test(macro, '7', '-1073741824', '-1073741817'); -test(macro, '-7', '-1073741824', '-7'); -test(macro, '7', '51676101935731', '7'); -test(macro, '-7', '51676101935731', '51676101935724'); -test(macro, '7', '-51676101935731', '-51676101935724'); -test(macro, '-7', '-51676101935731', '-7'); -test(macro, '7', '717897987691852588770249', '7'); -test(macro, '-7', '717897987691852588770249', '717897987691852588770242'); -test(macro, '7', '-717897987691852588770249', '-717897987691852588770242'); -test(macro, '-7', '-717897987691852588770249', '-7'); -test(macro, '9', '1', '0'); -test(macro, '-9', '1', '0'); -test(macro, '9', '-1', '0'); -test(macro, '-9', '-1', '0'); -test(macro, '9', '3', '0'); -test(macro, '-9', '3', '0'); -test(macro, '9', '-3', '0'); -test(macro, '-9', '-3', '0'); -test(macro, '9', '7', '2'); -test(macro, '-9', '7', '5'); -test(macro, '9', '-7', '-5'); -test(macro, '-9', '-7', '-2'); -test(macro, '9', '9', '0'); -test(macro, '-9', '9', '0'); -test(macro, '9', '-9', '0'); -test(macro, '-9', '-9', '0'); -test(macro, '9', '11', '9'); -test(macro, '-9', '11', '2'); -test(macro, '9', '-11', '-2'); -test(macro, '-9', '-11', '-9'); -test(macro, '9', '17', '9'); -test(macro, '-9', '17', '8'); -test(macro, '9', '-17', '-8'); -test(macro, '-9', '-17', '-9'); -test(macro, '9', '22', '9'); -test(macro, '-9', '22', '13'); -test(macro, '9', '-22', '-13'); -test(macro, '-9', '-22', '-9'); -test(macro, '9', '24', '9'); -test(macro, '-9', '24', '15'); -test(macro, '9', '-24', '-15'); -test(macro, '-9', '-24', '-9'); -test(macro, '9', '27', '9'); -test(macro, '-9', '27', '18'); -test(macro, '9', '-27', '-18'); -test(macro, '-9', '-27', '-9'); -test(macro, '9', '29', '9'); -test(macro, '-9', '29', '20'); -test(macro, '9', '-29', '-20'); -test(macro, '-9', '-29', '-9'); -test(macro, '9', '1234', '9'); -test(macro, '-9', '1234', '1225'); -test(macro, '9', '-1234', '-1225'); -test(macro, '-9', '-1234', '-9'); -test(macro, '9', '5678', '9'); -test(macro, '-9', '5678', '5669'); -test(macro, '9', '-5678', '-5669'); -test(macro, '-9', '-5678', '-9'); -test(macro, '9', '94906265', '9'); -test(macro, '-9', '94906265', '94906256'); -test(macro, '9', '-94906265', '-94906256'); -test(macro, '-9', '-94906265', '-9'); -test(macro, '9', '94906266', '9'); -test(macro, '-9', '94906266', '94906257'); -test(macro, '9', '-94906266', '-94906257'); -test(macro, '-9', '-94906266', '-9'); -test(macro, '9', '1073741824', '9'); -test(macro, '-9', '1073741824', '1073741815'); -test(macro, '9', '-1073741824', '-1073741815'); -test(macro, '-9', '-1073741824', '-9'); -test(macro, '9', '51676101935731', '9'); -test(macro, '-9', '51676101935731', '51676101935722'); -test(macro, '9', '-51676101935731', '-51676101935722'); -test(macro, '-9', '-51676101935731', '-9'); -test(macro, '9', '717897987691852588770249', '9'); -test(macro, '-9', '717897987691852588770249', '717897987691852588770240'); -test(macro, '9', '-717897987691852588770249', '-717897987691852588770240'); -test(macro, '-9', '-717897987691852588770249', '-9'); -test(macro, '11', '1', '0'); -test(macro, '-11', '1', '0'); -test(macro, '11', '-1', '0'); -test(macro, '-11', '-1', '0'); -test(macro, '11', '3', '2'); -test(macro, '-11', '3', '1'); -test(macro, '11', '-3', '-1'); -test(macro, '-11', '-3', '-2'); -test(macro, '11', '7', '4'); -test(macro, '-11', '7', '3'); -test(macro, '11', '-7', '-3'); -test(macro, '-11', '-7', '-4'); -test(macro, '11', '9', '2'); -test(macro, '-11', '9', '7'); -test(macro, '11', '-9', '-7'); -test(macro, '-11', '-9', '-2'); -test(macro, '11', '11', '0'); -test(macro, '-11', '11', '0'); -test(macro, '11', '-11', '0'); -test(macro, '-11', '-11', '0'); -test(macro, '11', '17', '11'); -test(macro, '-11', '17', '6'); -test(macro, '11', '-17', '-6'); -test(macro, '-11', '-17', '-11'); -test(macro, '11', '22', '11'); -test(macro, '-11', '22', '11'); -test(macro, '11', '-22', '-11'); -test(macro, '-11', '-22', '-11'); -test(macro, '11', '24', '11'); -test(macro, '-11', '24', '13'); -test(macro, '11', '-24', '-13'); -test(macro, '-11', '-24', '-11'); -test(macro, '11', '27', '11'); -test(macro, '-11', '27', '16'); -test(macro, '11', '-27', '-16'); -test(macro, '-11', '-27', '-11'); -test(macro, '11', '29', '11'); -test(macro, '-11', '29', '18'); -test(macro, '11', '-29', '-18'); -test(macro, '-11', '-29', '-11'); -test(macro, '11', '1234', '11'); -test(macro, '-11', '1234', '1223'); -test(macro, '11', '-1234', '-1223'); -test(macro, '-11', '-1234', '-11'); -test(macro, '11', '5678', '11'); -test(macro, '-11', '5678', '5667'); -test(macro, '11', '-5678', '-5667'); -test(macro, '-11', '-5678', '-11'); -test(macro, '11', '94906265', '11'); -test(macro, '-11', '94906265', '94906254'); -test(macro, '11', '-94906265', '-94906254'); -test(macro, '-11', '-94906265', '-11'); -test(macro, '11', '94906266', '11'); -test(macro, '-11', '94906266', '94906255'); -test(macro, '11', '-94906266', '-94906255'); -test(macro, '-11', '-94906266', '-11'); -test(macro, '11', '1073741824', '11'); -test(macro, '-11', '1073741824', '1073741813'); -test(macro, '11', '-1073741824', '-1073741813'); -test(macro, '-11', '-1073741824', '-11'); -test(macro, '11', '51676101935731', '11'); -test(macro, '-11', '51676101935731', '51676101935720'); -test(macro, '11', '-51676101935731', '-51676101935720'); -test(macro, '-11', '-51676101935731', '-11'); -test(macro, '11', '717897987691852588770249', '11'); -test(macro, '-11', '717897987691852588770249', '717897987691852588770238'); -test(macro, '11', '-717897987691852588770249', '-717897987691852588770238'); -test(macro, '-11', '-717897987691852588770249', '-11'); -test(macro, '17', '1', '0'); -test(macro, '-17', '1', '0'); -test(macro, '17', '-1', '0'); -test(macro, '-17', '-1', '0'); -test(macro, '17', '3', '2'); -test(macro, '-17', '3', '1'); -test(macro, '17', '-3', '-1'); -test(macro, '-17', '-3', '-2'); -test(macro, '17', '7', '3'); -test(macro, '-17', '7', '4'); -test(macro, '17', '-7', '-4'); -test(macro, '-17', '-7', '-3'); -test(macro, '17', '9', '8'); -test(macro, '-17', '9', '1'); -test(macro, '17', '-9', '-1'); -test(macro, '-17', '-9', '-8'); -test(macro, '17', '11', '6'); -test(macro, '-17', '11', '5'); -test(macro, '17', '-11', '-5'); -test(macro, '-17', '-11', '-6'); -test(macro, '17', '17', '0'); -test(macro, '-17', '17', '0'); -test(macro, '17', '-17', '0'); -test(macro, '-17', '-17', '0'); -test(macro, '17', '22', '17'); -test(macro, '-17', '22', '5'); -test(macro, '17', '-22', '-5'); -test(macro, '-17', '-22', '-17'); -test(macro, '17', '24', '17'); -test(macro, '-17', '24', '7'); -test(macro, '17', '-24', '-7'); -test(macro, '-17', '-24', '-17'); -test(macro, '17', '27', '17'); -test(macro, '-17', '27', '10'); -test(macro, '17', '-27', '-10'); -test(macro, '-17', '-27', '-17'); -test(macro, '17', '29', '17'); -test(macro, '-17', '29', '12'); -test(macro, '17', '-29', '-12'); -test(macro, '-17', '-29', '-17'); -test(macro, '17', '1234', '17'); -test(macro, '-17', '1234', '1217'); -test(macro, '17', '-1234', '-1217'); -test(macro, '-17', '-1234', '-17'); -test(macro, '17', '5678', '17'); -test(macro, '-17', '5678', '5661'); -test(macro, '17', '-5678', '-5661'); -test(macro, '-17', '-5678', '-17'); -test(macro, '17', '94906265', '17'); -test(macro, '-17', '94906265', '94906248'); -test(macro, '17', '-94906265', '-94906248'); -test(macro, '-17', '-94906265', '-17'); -test(macro, '17', '94906266', '17'); -test(macro, '-17', '94906266', '94906249'); -test(macro, '17', '-94906266', '-94906249'); -test(macro, '-17', '-94906266', '-17'); -test(macro, '17', '1073741824', '17'); -test(macro, '-17', '1073741824', '1073741807'); -test(macro, '17', '-1073741824', '-1073741807'); -test(macro, '-17', '-1073741824', '-17'); -test(macro, '17', '51676101935731', '17'); -test(macro, '-17', '51676101935731', '51676101935714'); -test(macro, '17', '-51676101935731', '-51676101935714'); -test(macro, '-17', '-51676101935731', '-17'); -test(macro, '17', '717897987691852588770249', '17'); -test(macro, '-17', '717897987691852588770249', '717897987691852588770232'); -test(macro, '17', '-717897987691852588770249', '-717897987691852588770232'); -test(macro, '-17', '-717897987691852588770249', '-17'); -test(macro, '22', '1', '0'); -test(macro, '-22', '1', '0'); -test(macro, '22', '-1', '0'); -test(macro, '-22', '-1', '0'); -test(macro, '22', '3', '1'); -test(macro, '-22', '3', '2'); -test(macro, '22', '-3', '-2'); -test(macro, '-22', '-3', '-1'); -test(macro, '22', '7', '1'); -test(macro, '-22', '7', '6'); -test(macro, '22', '-7', '-6'); -test(macro, '-22', '-7', '-1'); -test(macro, '22', '9', '4'); -test(macro, '-22', '9', '5'); -test(macro, '22', '-9', '-5'); -test(macro, '-22', '-9', '-4'); -test(macro, '22', '11', '0'); -test(macro, '-22', '11', '0'); -test(macro, '22', '-11', '0'); -test(macro, '-22', '-11', '0'); -test(macro, '22', '17', '5'); -test(macro, '-22', '17', '12'); -test(macro, '22', '-17', '-12'); -test(macro, '-22', '-17', '-5'); -test(macro, '22', '22', '0'); -test(macro, '-22', '22', '0'); -test(macro, '22', '-22', '0'); -test(macro, '-22', '-22', '0'); -test(macro, '22', '24', '22'); -test(macro, '-22', '24', '2'); -test(macro, '22', '-24', '-2'); -test(macro, '-22', '-24', '-22'); -test(macro, '22', '27', '22'); -test(macro, '-22', '27', '5'); -test(macro, '22', '-27', '-5'); -test(macro, '-22', '-27', '-22'); -test(macro, '22', '29', '22'); -test(macro, '-22', '29', '7'); -test(macro, '22', '-29', '-7'); -test(macro, '-22', '-29', '-22'); -test(macro, '22', '1234', '22'); -test(macro, '-22', '1234', '1212'); -test(macro, '22', '-1234', '-1212'); -test(macro, '-22', '-1234', '-22'); -test(macro, '22', '5678', '22'); -test(macro, '-22', '5678', '5656'); -test(macro, '22', '-5678', '-5656'); -test(macro, '-22', '-5678', '-22'); -test(macro, '22', '94906265', '22'); -test(macro, '-22', '94906265', '94906243'); -test(macro, '22', '-94906265', '-94906243'); -test(macro, '-22', '-94906265', '-22'); -test(macro, '22', '94906266', '22'); -test(macro, '-22', '94906266', '94906244'); -test(macro, '22', '-94906266', '-94906244'); -test(macro, '-22', '-94906266', '-22'); -test(macro, '22', '1073741824', '22'); -test(macro, '-22', '1073741824', '1073741802'); -test(macro, '22', '-1073741824', '-1073741802'); -test(macro, '-22', '-1073741824', '-22'); -test(macro, '22', '51676101935731', '22'); -test(macro, '-22', '51676101935731', '51676101935709'); -test(macro, '22', '-51676101935731', '-51676101935709'); -test(macro, '-22', '-51676101935731', '-22'); -test(macro, '22', '717897987691852588770249', '22'); -test(macro, '-22', '717897987691852588770249', '717897987691852588770227'); -test(macro, '22', '-717897987691852588770249', '-717897987691852588770227'); -test(macro, '-22', '-717897987691852588770249', '-22'); -test(macro, '24', '1', '0'); -test(macro, '-24', '1', '0'); -test(macro, '24', '-1', '0'); -test(macro, '-24', '-1', '0'); -test(macro, '24', '3', '0'); -test(macro, '-24', '3', '0'); -test(macro, '24', '-3', '0'); -test(macro, '-24', '-3', '0'); -test(macro, '24', '7', '3'); -test(macro, '-24', '7', '4'); -test(macro, '24', '-7', '-4'); -test(macro, '-24', '-7', '-3'); -test(macro, '24', '9', '6'); -test(macro, '-24', '9', '3'); -test(macro, '24', '-9', '-3'); -test(macro, '-24', '-9', '-6'); -test(macro, '24', '11', '2'); -test(macro, '-24', '11', '9'); -test(macro, '24', '-11', '-9'); -test(macro, '-24', '-11', '-2'); -test(macro, '24', '17', '7'); -test(macro, '-24', '17', '10'); -test(macro, '24', '-17', '-10'); -test(macro, '-24', '-17', '-7'); -test(macro, '24', '22', '2'); -test(macro, '-24', '22', '20'); -test(macro, '24', '-22', '-20'); -test(macro, '-24', '-22', '-2'); -test(macro, '24', '24', '0'); -test(macro, '-24', '24', '0'); -test(macro, '24', '-24', '0'); -test(macro, '-24', '-24', '0'); -test(macro, '24', '27', '24'); -test(macro, '-24', '27', '3'); -test(macro, '24', '-27', '-3'); -test(macro, '-24', '-27', '-24'); -test(macro, '24', '29', '24'); -test(macro, '-24', '29', '5'); -test(macro, '24', '-29', '-5'); -test(macro, '-24', '-29', '-24'); -test(macro, '24', '1234', '24'); -test(macro, '-24', '1234', '1210'); -test(macro, '24', '-1234', '-1210'); -test(macro, '-24', '-1234', '-24'); -test(macro, '24', '5678', '24'); -test(macro, '-24', '5678', '5654'); -test(macro, '24', '-5678', '-5654'); -test(macro, '-24', '-5678', '-24'); -test(macro, '24', '94906265', '24'); -test(macro, '-24', '94906265', '94906241'); -test(macro, '24', '-94906265', '-94906241'); -test(macro, '-24', '-94906265', '-24'); -test(macro, '24', '94906266', '24'); -test(macro, '-24', '94906266', '94906242'); -test(macro, '24', '-94906266', '-94906242'); -test(macro, '-24', '-94906266', '-24'); -test(macro, '24', '1073741824', '24'); -test(macro, '-24', '1073741824', '1073741800'); -test(macro, '24', '-1073741824', '-1073741800'); -test(macro, '-24', '-1073741824', '-24'); -test(macro, '24', '51676101935731', '24'); -test(macro, '-24', '51676101935731', '51676101935707'); -test(macro, '24', '-51676101935731', '-51676101935707'); -test(macro, '-24', '-51676101935731', '-24'); -test(macro, '24', '717897987691852588770249', '24'); -test(macro, '-24', '717897987691852588770249', '717897987691852588770225'); -test(macro, '24', '-717897987691852588770249', '-717897987691852588770225'); -test(macro, '-24', '-717897987691852588770249', '-24'); -test(macro, '27', '1', '0'); -test(macro, '-27', '1', '0'); -test(macro, '27', '-1', '0'); -test(macro, '-27', '-1', '0'); -test(macro, '27', '3', '0'); -test(macro, '-27', '3', '0'); -test(macro, '27', '-3', '0'); -test(macro, '-27', '-3', '0'); -test(macro, '27', '7', '6'); -test(macro, '-27', '7', '1'); -test(macro, '27', '-7', '-1'); -test(macro, '-27', '-7', '-6'); -test(macro, '27', '9', '0'); -test(macro, '-27', '9', '0'); -test(macro, '27', '-9', '0'); -test(macro, '-27', '-9', '0'); -test(macro, '27', '11', '5'); -test(macro, '-27', '11', '6'); -test(macro, '27', '-11', '-6'); -test(macro, '-27', '-11', '-5'); -test(macro, '27', '17', '10'); -test(macro, '-27', '17', '7'); -test(macro, '27', '-17', '-7'); -test(macro, '-27', '-17', '-10'); -test(macro, '27', '22', '5'); -test(macro, '-27', '22', '17'); -test(macro, '27', '-22', '-17'); -test(macro, '-27', '-22', '-5'); -test(macro, '27', '24', '3'); -test(macro, '-27', '24', '21'); -test(macro, '27', '-24', '-21'); -test(macro, '-27', '-24', '-3'); -test(macro, '27', '27', '0'); -test(macro, '-27', '27', '0'); -test(macro, '27', '-27', '0'); -test(macro, '-27', '-27', '0'); -test(macro, '27', '29', '27'); -test(macro, '-27', '29', '2'); -test(macro, '27', '-29', '-2'); -test(macro, '-27', '-29', '-27'); -test(macro, '27', '1234', '27'); -test(macro, '-27', '1234', '1207'); -test(macro, '27', '-1234', '-1207'); -test(macro, '-27', '-1234', '-27'); -test(macro, '27', '5678', '27'); -test(macro, '-27', '5678', '5651'); -test(macro, '27', '-5678', '-5651'); -test(macro, '-27', '-5678', '-27'); -test(macro, '27', '94906265', '27'); -test(macro, '-27', '94906265', '94906238'); -test(macro, '27', '-94906265', '-94906238'); -test(macro, '-27', '-94906265', '-27'); -test(macro, '27', '94906266', '27'); -test(macro, '-27', '94906266', '94906239'); -test(macro, '27', '-94906266', '-94906239'); -test(macro, '-27', '-94906266', '-27'); -test(macro, '27', '1073741824', '27'); -test(macro, '-27', '1073741824', '1073741797'); -test(macro, '27', '-1073741824', '-1073741797'); -test(macro, '-27', '-1073741824', '-27'); -test(macro, '27', '51676101935731', '27'); -test(macro, '-27', '51676101935731', '51676101935704'); -test(macro, '27', '-51676101935731', '-51676101935704'); -test(macro, '-27', '-51676101935731', '-27'); -test(macro, '27', '717897987691852588770249', '27'); -test(macro, '-27', '717897987691852588770249', '717897987691852588770222'); -test(macro, '27', '-717897987691852588770249', '-717897987691852588770222'); -test(macro, '-27', '-717897987691852588770249', '-27'); -test(macro, '29', '1', '0'); -test(macro, '-29', '1', '0'); -test(macro, '29', '-1', '0'); -test(macro, '-29', '-1', '0'); -test(macro, '29', '3', '2'); -test(macro, '-29', '3', '1'); -test(macro, '29', '-3', '-1'); -test(macro, '-29', '-3', '-2'); -test(macro, '29', '7', '1'); -test(macro, '-29', '7', '6'); -test(macro, '29', '-7', '-6'); -test(macro, '-29', '-7', '-1'); -test(macro, '29', '9', '2'); -test(macro, '-29', '9', '7'); -test(macro, '29', '-9', '-7'); -test(macro, '-29', '-9', '-2'); -test(macro, '29', '11', '7'); -test(macro, '-29', '11', '4'); -test(macro, '29', '-11', '-4'); -test(macro, '-29', '-11', '-7'); -test(macro, '29', '17', '12'); -test(macro, '-29', '17', '5'); -test(macro, '29', '-17', '-5'); -test(macro, '-29', '-17', '-12'); -test(macro, '29', '22', '7'); -test(macro, '-29', '22', '15'); -test(macro, '29', '-22', '-15'); -test(macro, '-29', '-22', '-7'); -test(macro, '29', '24', '5'); -test(macro, '-29', '24', '19'); -test(macro, '29', '-24', '-19'); -test(macro, '-29', '-24', '-5'); -test(macro, '29', '27', '2'); -test(macro, '-29', '27', '25'); -test(macro, '29', '-27', '-25'); -test(macro, '-29', '-27', '-2'); -test(macro, '29', '29', '0'); -test(macro, '-29', '29', '0'); -test(macro, '29', '-29', '0'); -test(macro, '-29', '-29', '0'); -test(macro, '29', '1234', '29'); -test(macro, '-29', '1234', '1205'); -test(macro, '29', '-1234', '-1205'); -test(macro, '-29', '-1234', '-29'); -test(macro, '29', '5678', '29'); -test(macro, '-29', '5678', '5649'); -test(macro, '29', '-5678', '-5649'); -test(macro, '-29', '-5678', '-29'); -test(macro, '29', '94906265', '29'); -test(macro, '-29', '94906265', '94906236'); -test(macro, '29', '-94906265', '-94906236'); -test(macro, '-29', '-94906265', '-29'); -test(macro, '29', '94906266', '29'); -test(macro, '-29', '94906266', '94906237'); -test(macro, '29', '-94906266', '-94906237'); -test(macro, '-29', '-94906266', '-29'); -test(macro, '29', '1073741824', '29'); -test(macro, '-29', '1073741824', '1073741795'); -test(macro, '29', '-1073741824', '-1073741795'); -test(macro, '-29', '-1073741824', '-29'); -test(macro, '29', '51676101935731', '29'); -test(macro, '-29', '51676101935731', '51676101935702'); -test(macro, '29', '-51676101935731', '-51676101935702'); -test(macro, '-29', '-51676101935731', '-29'); -test(macro, '29', '717897987691852588770249', '29'); -test(macro, '-29', '717897987691852588770249', '717897987691852588770220'); -test(macro, '29', '-717897987691852588770249', '-717897987691852588770220'); -test(macro, '-29', '-717897987691852588770249', '-29'); -test(macro, '1234', '1', '0'); -test(macro, '-1234', '1', '0'); -test(macro, '1234', '-1', '0'); -test(macro, '-1234', '-1', '0'); -test(macro, '1234', '3', '1'); -test(macro, '-1234', '3', '2'); -test(macro, '1234', '-3', '-2'); -test(macro, '-1234', '-3', '-1'); -test(macro, '1234', '7', '2'); -test(macro, '-1234', '7', '5'); -test(macro, '1234', '-7', '-5'); -test(macro, '-1234', '-7', '-2'); -test(macro, '1234', '9', '1'); -test(macro, '-1234', '9', '8'); -test(macro, '1234', '-9', '-8'); -test(macro, '-1234', '-9', '-1'); -test(macro, '1234', '11', '2'); -test(macro, '-1234', '11', '9'); -test(macro, '1234', '-11', '-9'); -test(macro, '-1234', '-11', '-2'); -test(macro, '1234', '17', '10'); -test(macro, '-1234', '17', '7'); -test(macro, '1234', '-17', '-7'); -test(macro, '-1234', '-17', '-10'); -test(macro, '1234', '22', '2'); -test(macro, '-1234', '22', '20'); -test(macro, '1234', '-22', '-20'); -test(macro, '-1234', '-22', '-2'); -test(macro, '1234', '24', '10'); -test(macro, '-1234', '24', '14'); -test(macro, '1234', '-24', '-14'); -test(macro, '-1234', '-24', '-10'); -test(macro, '1234', '27', '19'); -test(macro, '-1234', '27', '8'); -test(macro, '1234', '-27', '-8'); -test(macro, '-1234', '-27', '-19'); -test(macro, '1234', '29', '16'); -test(macro, '-1234', '29', '13'); -test(macro, '1234', '-29', '-13'); -test(macro, '-1234', '-29', '-16'); -test(macro, '1234', '1234', '0'); -test(macro, '-1234', '1234', '0'); -test(macro, '1234', '-1234', '0'); -test(macro, '-1234', '-1234', '0'); -test(macro, '1234', '5678', '1234'); -test(macro, '-1234', '5678', '4444'); -test(macro, '1234', '-5678', '-4444'); -test(macro, '-1234', '-5678', '-1234'); -test(macro, '1234', '94906265', '1234'); -test(macro, '-1234', '94906265', '94905031'); -test(macro, '1234', '-94906265', '-94905031'); -test(macro, '-1234', '-94906265', '-1234'); -test(macro, '1234', '94906266', '1234'); -test(macro, '-1234', '94906266', '94905032'); -test(macro, '1234', '-94906266', '-94905032'); -test(macro, '-1234', '-94906266', '-1234'); -test(macro, '1234', '1073741824', '1234'); -test(macro, '-1234', '1073741824', '1073740590'); -test(macro, '1234', '-1073741824', '-1073740590'); -test(macro, '-1234', '-1073741824', '-1234'); -test(macro, '1234', '51676101935731', '1234'); -test(macro, '-1234', '51676101935731', '51676101934497'); -test(macro, '1234', '-51676101935731', '-51676101934497'); -test(macro, '-1234', '-51676101935731', '-1234'); -test(macro, '1234', '717897987691852588770249', '1234'); -test(macro, '-1234', '717897987691852588770249', '717897987691852588769015'); -test(macro, '1234', '-717897987691852588770249', '-717897987691852588769015'); -test(macro, '-1234', '-717897987691852588770249', '-1234'); -test(macro, '5678', '1', '0'); -test(macro, '-5678', '1', '0'); -test(macro, '5678', '-1', '0'); -test(macro, '-5678', '-1', '0'); -test(macro, '5678', '3', '2'); -test(macro, '-5678', '3', '1'); -test(macro, '5678', '-3', '-1'); -test(macro, '-5678', '-3', '-2'); -test(macro, '5678', '7', '1'); -test(macro, '-5678', '7', '6'); -test(macro, '5678', '-7', '-6'); -test(macro, '-5678', '-7', '-1'); -test(macro, '5678', '9', '8'); -test(macro, '-5678', '9', '1'); -test(macro, '5678', '-9', '-1'); -test(macro, '-5678', '-9', '-8'); -test(macro, '5678', '11', '2'); -test(macro, '-5678', '11', '9'); -test(macro, '5678', '-11', '-9'); -test(macro, '-5678', '-11', '-2'); -test(macro, '5678', '17', '0'); -test(macro, '-5678', '17', '0'); -test(macro, '5678', '-17', '0'); -test(macro, '-5678', '-17', '0'); -test(macro, '5678', '22', '2'); -test(macro, '-5678', '22', '20'); -test(macro, '5678', '-22', '-20'); -test(macro, '-5678', '-22', '-2'); -test(macro, '5678', '24', '14'); -test(macro, '-5678', '24', '10'); -test(macro, '5678', '-24', '-10'); -test(macro, '-5678', '-24', '-14'); -test(macro, '5678', '27', '8'); -test(macro, '-5678', '27', '19'); -test(macro, '5678', '-27', '-19'); -test(macro, '-5678', '-27', '-8'); -test(macro, '5678', '29', '23'); -test(macro, '-5678', '29', '6'); -test(macro, '5678', '-29', '-6'); -test(macro, '-5678', '-29', '-23'); -test(macro, '5678', '1234', '742'); -test(macro, '-5678', '1234', '492'); -test(macro, '5678', '-1234', '-492'); -test(macro, '-5678', '-1234', '-742'); -test(macro, '5678', '5678', '0'); -test(macro, '-5678', '5678', '0'); -test(macro, '5678', '-5678', '0'); -test(macro, '-5678', '-5678', '0'); -test(macro, '5678', '94906265', '5678'); -test(macro, '-5678', '94906265', '94900587'); -test(macro, '5678', '-94906265', '-94900587'); -test(macro, '-5678', '-94906265', '-5678'); -test(macro, '5678', '94906266', '5678'); -test(macro, '-5678', '94906266', '94900588'); -test(macro, '5678', '-94906266', '-94900588'); -test(macro, '-5678', '-94906266', '-5678'); -test(macro, '5678', '1073741824', '5678'); -test(macro, '-5678', '1073741824', '1073736146'); -test(macro, '5678', '-1073741824', '-1073736146'); -test(macro, '-5678', '-1073741824', '-5678'); -test(macro, '5678', '51676101935731', '5678'); -test(macro, '-5678', '51676101935731', '51676101930053'); -test(macro, '5678', '-51676101935731', '-51676101930053'); -test(macro, '-5678', '-51676101935731', '-5678'); -test(macro, '5678', '717897987691852588770249', '5678'); -test(macro, '-5678', '717897987691852588770249', '717897987691852588764571'); -test(macro, '5678', '-717897987691852588770249', '-717897987691852588764571'); -test(macro, '-5678', '-717897987691852588770249', '-5678'); -test(macro, '94906265', '1', '0'); -test(macro, '-94906265', '1', '0'); -test(macro, '94906265', '-1', '0'); -test(macro, '-94906265', '-1', '0'); -test(macro, '94906265', '3', '2'); -test(macro, '-94906265', '3', '1'); -test(macro, '94906265', '-3', '-1'); -test(macro, '-94906265', '-3', '-2'); -test(macro, '94906265', '7', '6'); -test(macro, '-94906265', '7', '1'); -test(macro, '94906265', '-7', '-1'); -test(macro, '-94906265', '-7', '-6'); -test(macro, '94906265', '9', '5'); -test(macro, '-94906265', '9', '4'); -test(macro, '94906265', '-9', '-4'); -test(macro, '-94906265', '-9', '-5'); -test(macro, '94906265', '11', '3'); -test(macro, '-94906265', '11', '8'); -test(macro, '94906265', '-11', '-8'); -test(macro, '-94906265', '-11', '-3'); -test(macro, '94906265', '17', '8'); -test(macro, '-94906265', '17', '9'); -test(macro, '94906265', '-17', '-9'); -test(macro, '-94906265', '-17', '-8'); -test(macro, '94906265', '22', '3'); -test(macro, '-94906265', '22', '19'); -test(macro, '94906265', '-22', '-19'); -test(macro, '-94906265', '-22', '-3'); -test(macro, '94906265', '24', '17'); -test(macro, '-94906265', '24', '7'); -test(macro, '94906265', '-24', '-7'); -test(macro, '-94906265', '-24', '-17'); -test(macro, '94906265', '27', '23'); -test(macro, '-94906265', '27', '4'); -test(macro, '94906265', '-27', '-4'); -test(macro, '-94906265', '-27', '-23'); -test(macro, '94906265', '29', '24'); -test(macro, '-94906265', '29', '5'); -test(macro, '94906265', '-29', '-5'); -test(macro, '-94906265', '-29', '-24'); -test(macro, '94906265', '1234', '559'); -test(macro, '-94906265', '1234', '675'); -test(macro, '94906265', '-1234', '-675'); -test(macro, '-94906265', '-1234', '-559'); -test(macro, '94906265', '5678', '4173'); -test(macro, '-94906265', '5678', '1505'); -test(macro, '94906265', '-5678', '-1505'); -test(macro, '-94906265', '-5678', '-4173'); -test(macro, '94906265', '94906265', '0'); -test(macro, '-94906265', '94906265', '0'); -test(macro, '94906265', '-94906265', '0'); -test(macro, '-94906265', '-94906265', '0'); -test(macro, '94906265', '94906266', '94906265'); -test(macro, '-94906265', '94906266', '1'); -test(macro, '94906265', '-94906266', '-1'); -test(macro, '-94906265', '-94906266', '-94906265'); -test(macro, '94906265', '1073741824', '94906265'); -test(macro, '-94906265', '1073741824', '978835559'); -test(macro, '94906265', '-1073741824', '-978835559'); -test(macro, '-94906265', '-1073741824', '-94906265'); -test(macro, '94906265', '51676101935731', '94906265'); -test(macro, '-94906265', '51676101935731', '51676007029466'); -test(macro, '94906265', '-51676101935731', '-51676007029466'); -test(macro, '-94906265', '-51676101935731', '-94906265'); -test(macro, '94906265', '717897987691852588770249', '94906265'); -test( - macro, - '-94906265', - '717897987691852588770249', - '717897987691852493863984', -); -test( - macro, - '94906265', - '-717897987691852588770249', - '-717897987691852493863984', -); -test(macro, '-94906265', '-717897987691852588770249', '-94906265'); -test(macro, '94906266', '1', '0'); -test(macro, '-94906266', '1', '0'); -test(macro, '94906266', '-1', '0'); -test(macro, '-94906266', '-1', '0'); -test(macro, '94906266', '3', '0'); -test(macro, '-94906266', '3', '0'); -test(macro, '94906266', '-3', '0'); -test(macro, '-94906266', '-3', '0'); -test(macro, '94906266', '7', '0'); -test(macro, '-94906266', '7', '0'); -test(macro, '94906266', '-7', '0'); -test(macro, '-94906266', '-7', '0'); -test(macro, '94906266', '9', '6'); -test(macro, '-94906266', '9', '3'); -test(macro, '94906266', '-9', '-3'); -test(macro, '-94906266', '-9', '-6'); -test(macro, '94906266', '11', '4'); -test(macro, '-94906266', '11', '7'); -test(macro, '94906266', '-11', '-7'); -test(macro, '-94906266', '-11', '-4'); -test(macro, '94906266', '17', '9'); -test(macro, '-94906266', '17', '8'); -test(macro, '94906266', '-17', '-8'); -test(macro, '-94906266', '-17', '-9'); -test(macro, '94906266', '22', '4'); -test(macro, '-94906266', '22', '18'); -test(macro, '94906266', '-22', '-18'); -test(macro, '-94906266', '-22', '-4'); -test(macro, '94906266', '24', '18'); -test(macro, '-94906266', '24', '6'); -test(macro, '94906266', '-24', '-6'); -test(macro, '-94906266', '-24', '-18'); -test(macro, '94906266', '27', '24'); -test(macro, '-94906266', '27', '3'); -test(macro, '94906266', '-27', '-3'); -test(macro, '-94906266', '-27', '-24'); -test(macro, '94906266', '29', '25'); -test(macro, '-94906266', '29', '4'); -test(macro, '94906266', '-29', '-4'); -test(macro, '-94906266', '-29', '-25'); -test(macro, '94906266', '1234', '560'); -test(macro, '-94906266', '1234', '674'); -test(macro, '94906266', '-1234', '-674'); -test(macro, '-94906266', '-1234', '-560'); -test(macro, '94906266', '5678', '4174'); -test(macro, '-94906266', '5678', '1504'); -test(macro, '94906266', '-5678', '-1504'); -test(macro, '-94906266', '-5678', '-4174'); -test(macro, '94906266', '94906265', '1'); -test(macro, '-94906266', '94906265', '94906264'); -test(macro, '94906266', '-94906265', '-94906264'); -test(macro, '-94906266', '-94906265', '-1'); -test(macro, '94906266', '94906266', '0'); -test(macro, '-94906266', '94906266', '0'); -test(macro, '94906266', '-94906266', '0'); -test(macro, '-94906266', '-94906266', '0'); -test(macro, '94906266', '1073741824', '94906266'); -test(macro, '-94906266', '1073741824', '978835558'); -test(macro, '94906266', '-1073741824', '-978835558'); -test(macro, '-94906266', '-1073741824', '-94906266'); -test(macro, '94906266', '51676101935731', '94906266'); -test(macro, '-94906266', '51676101935731', '51676007029465'); -test(macro, '94906266', '-51676101935731', '-51676007029465'); -test(macro, '-94906266', '-51676101935731', '-94906266'); -test(macro, '94906266', '717897987691852588770249', '94906266'); -test( - macro, - '-94906266', - '717897987691852588770249', - '717897987691852493863983', -); -test( - macro, - '94906266', - '-717897987691852588770249', - '-717897987691852493863983', -); -test(macro, '-94906266', '-717897987691852588770249', '-94906266'); -test(macro, '1073741824', '1', '0'); -test(macro, '-1073741824', '1', '0'); -test(macro, '1073741824', '-1', '0'); -test(macro, '-1073741824', '-1', '0'); -test(macro, '1073741824', '3', '1'); -test(macro, '-1073741824', '3', '2'); -test(macro, '1073741824', '-3', '-2'); -test(macro, '-1073741824', '-3', '-1'); -test(macro, '1073741824', '7', '1'); -test(macro, '-1073741824', '7', '6'); -test(macro, '1073741824', '-7', '-6'); -test(macro, '-1073741824', '-7', '-1'); -test(macro, '1073741824', '9', '1'); -test(macro, '-1073741824', '9', '8'); -test(macro, '1073741824', '-9', '-8'); -test(macro, '-1073741824', '-9', '-1'); -test(macro, '1073741824', '11', '1'); -test(macro, '-1073741824', '11', '10'); -test(macro, '1073741824', '-11', '-10'); -test(macro, '-1073741824', '-11', '-1'); -test(macro, '1073741824', '17', '13'); -test(macro, '-1073741824', '17', '4'); -test(macro, '1073741824', '-17', '-4'); -test(macro, '-1073741824', '-17', '-13'); -test(macro, '1073741824', '22', '12'); -test(macro, '-1073741824', '22', '10'); -test(macro, '1073741824', '-22', '-10'); -test(macro, '-1073741824', '-22', '-12'); -test(macro, '1073741824', '24', '16'); -test(macro, '-1073741824', '24', '8'); -test(macro, '1073741824', '-24', '-8'); -test(macro, '-1073741824', '-24', '-16'); -test(macro, '1073741824', '27', '19'); -test(macro, '-1073741824', '27', '8'); -test(macro, '1073741824', '-27', '-8'); -test(macro, '-1073741824', '-27', '-19'); -test(macro, '1073741824', '29', '4'); -test(macro, '-1073741824', '29', '25'); -test(macro, '1073741824', '-29', '-25'); -test(macro, '-1073741824', '-29', '-4'); -test(macro, '1073741824', '1234', '170'); -test(macro, '-1073741824', '1234', '1064'); -test(macro, '1073741824', '-1234', '-1064'); -test(macro, '-1073741824', '-1234', '-170'); -test(macro, '1073741824', '5678', '3634'); -test(macro, '-1073741824', '5678', '2044'); -test(macro, '1073741824', '-5678', '-2044'); -test(macro, '-1073741824', '-5678', '-3634'); -test(macro, '1073741824', '94906265', '29772909'); -test(macro, '-1073741824', '94906265', '65133356'); -test(macro, '1073741824', '-94906265', '-65133356'); -test(macro, '-1073741824', '-94906265', '-29772909'); -test(macro, '1073741824', '94906266', '29772898'); -test(macro, '-1073741824', '94906266', '65133368'); -test(macro, '1073741824', '-94906266', '-65133368'); -test(macro, '-1073741824', '-94906266', '-29772898'); -test(macro, '1073741824', '1073741824', '0'); -test(macro, '-1073741824', '1073741824', '0'); -test(macro, '1073741824', '-1073741824', '0'); -test(macro, '-1073741824', '-1073741824', '0'); -test(macro, '1073741824', '51676101935731', '1073741824'); -test(macro, '-1073741824', '51676101935731', '51675028193907'); -test(macro, '1073741824', '-51676101935731', '-51675028193907'); -test(macro, '-1073741824', '-51676101935731', '-1073741824'); -test(macro, '1073741824', '717897987691852588770249', '1073741824'); -test( - macro, - '-1073741824', - '717897987691852588770249', - '717897987691851515028425', -); -test( - macro, - '1073741824', - '-717897987691852588770249', - '-717897987691851515028425', -); -test(macro, '-1073741824', '-717897987691852588770249', '-1073741824'); -test(macro, '51676101935731', '1', '0'); -test(macro, '-51676101935731', '1', '0'); -test(macro, '51676101935731', '-1', '0'); -test(macro, '-51676101935731', '-1', '0'); -test(macro, '51676101935731', '3', '1'); -test(macro, '-51676101935731', '3', '2'); -test(macro, '51676101935731', '-3', '-2'); -test(macro, '-51676101935731', '-3', '-1'); -test(macro, '51676101935731', '7', '0'); -test(macro, '-51676101935731', '7', '0'); -test(macro, '51676101935731', '-7', '0'); -test(macro, '-51676101935731', '-7', '0'); -test(macro, '51676101935731', '9', '1'); -test(macro, '-51676101935731', '9', '8'); -test(macro, '51676101935731', '-9', '-8'); -test(macro, '-51676101935731', '-9', '-1'); -test(macro, '51676101935731', '11', '9'); -test(macro, '-51676101935731', '11', '2'); -test(macro, '51676101935731', '-11', '-2'); -test(macro, '-51676101935731', '-11', '-9'); -test(macro, '51676101935731', '17', '14'); -test(macro, '-51676101935731', '17', '3'); -test(macro, '51676101935731', '-17', '-3'); -test(macro, '-51676101935731', '-17', '-14'); -test(macro, '51676101935731', '22', '9'); -test(macro, '-51676101935731', '22', '13'); -test(macro, '51676101935731', '-22', '-13'); -test(macro, '-51676101935731', '-22', '-9'); -test(macro, '51676101935731', '24', '19'); -test(macro, '-51676101935731', '24', '5'); -test(macro, '51676101935731', '-24', '-5'); -test(macro, '-51676101935731', '-24', '-19'); -test(macro, '51676101935731', '27', '10'); -test(macro, '-51676101935731', '27', '17'); -test(macro, '51676101935731', '-27', '-17'); -test(macro, '-51676101935731', '-27', '-10'); -test(macro, '51676101935731', '29', '28'); -test(macro, '-51676101935731', '29', '1'); -test(macro, '51676101935731', '-29', '-1'); -test(macro, '-51676101935731', '-29', '-28'); -test(macro, '51676101935731', '1234', '835'); -test(macro, '-51676101935731', '1234', '399'); -test(macro, '51676101935731', '-1234', '-399'); -test(macro, '-51676101935731', '-1234', '-835'); -test(macro, '51676101935731', '5678', '3023'); -test(macro, '-51676101935731', '5678', '2655'); -test(macro, '51676101935731', '-5678', '-2655'); -test(macro, '-51676101935731', '-5678', '-3023'); -test(macro, '51676101935731', '94906265', '20268291'); -test(macro, '-51676101935731', '94906265', '74637974'); -test(macro, '51676101935731', '-94906265', '-74637974'); -test(macro, '-51676101935731', '-94906265', '-20268291'); -test(macro, '51676101935731', '94906266', '19723795'); -test(macro, '-51676101935731', '94906266', '75182471'); -test(macro, '51676101935731', '-94906266', '-75182471'); -test(macro, '-51676101935731', '-94906266', '-19723795'); -test(macro, '51676101935731', '1073741824', '129172083'); -test(macro, '-51676101935731', '1073741824', '944569741'); -test(macro, '51676101935731', '-1073741824', '-944569741'); -test(macro, '-51676101935731', '-1073741824', '-129172083'); -test(macro, '51676101935731', '51676101935731', '0'); -test(macro, '-51676101935731', '51676101935731', '0'); -test(macro, '51676101935731', '-51676101935731', '0'); -test(macro, '-51676101935731', '-51676101935731', '0'); -test(macro, '51676101935731', '717897987691852588770249', '51676101935731'); -test( - macro, - '-51676101935731', - '717897987691852588770249', - '717897987640176486834518', -); -test( - macro, - '51676101935731', - '-717897987691852588770249', - '-717897987640176486834518', -); -test(macro, '-51676101935731', '-717897987691852588770249', '-51676101935731'); -test(macro, '717897987691852588770249', '1', '0'); -test(macro, '-717897987691852588770249', '1', '0'); -test(macro, '717897987691852588770249', '-1', '0'); -test(macro, '-717897987691852588770249', '-1', '0'); -test(macro, '717897987691852588770249', '3', '0'); -test(macro, '-717897987691852588770249', '3', '0'); -test(macro, '717897987691852588770249', '-3', '0'); -test(macro, '-717897987691852588770249', '-3', '0'); -test(macro, '717897987691852588770249', '7', '2'); -test(macro, '-717897987691852588770249', '7', '5'); -test(macro, '717897987691852588770249', '-7', '-5'); -test(macro, '-717897987691852588770249', '-7', '-2'); -test(macro, '717897987691852588770249', '9', '0'); -test(macro, '-717897987691852588770249', '9', '0'); -test(macro, '717897987691852588770249', '-9', '0'); -test(macro, '-717897987691852588770249', '-9', '0'); -test(macro, '717897987691852588770249', '11', '1'); -test(macro, '-717897987691852588770249', '11', '10'); -test(macro, '717897987691852588770249', '-11', '-10'); -test(macro, '-717897987691852588770249', '-11', '-1'); -test(macro, '717897987691852588770249', '17', '9'); -test(macro, '-717897987691852588770249', '17', '8'); -test(macro, '717897987691852588770249', '-17', '-8'); -test(macro, '-717897987691852588770249', '-17', '-9'); -test(macro, '717897987691852588770249', '22', '1'); -test(macro, '-717897987691852588770249', '22', '21'); -test(macro, '717897987691852588770249', '-22', '-21'); -test(macro, '-717897987691852588770249', '-22', '-1'); -test(macro, '717897987691852588770249', '24', '9'); -test(macro, '-717897987691852588770249', '24', '15'); -test(macro, '717897987691852588770249', '-24', '-15'); -test(macro, '-717897987691852588770249', '-24', '-9'); -test(macro, '717897987691852588770249', '27', '0'); -test(macro, '-717897987691852588770249', '27', '0'); -test(macro, '717897987691852588770249', '-27', '0'); -test(macro, '-717897987691852588770249', '-27', '0'); -test(macro, '717897987691852588770249', '29', '22'); -test(macro, '-717897987691852588770249', '29', '7'); -test(macro, '717897987691852588770249', '-29', '-7'); -test(macro, '-717897987691852588770249', '-29', '-22'); -test(macro, '717897987691852588770249', '1234', '755'); -test(macro, '-717897987691852588770249', '1234', '479'); -test(macro, '717897987691852588770249', '-1234', '-479'); -test(macro, '-717897987691852588770249', '-1234', '-755'); -test(macro, '717897987691852588770249', '5678', '3477'); -test(macro, '-717897987691852588770249', '5678', '2201'); -test(macro, '717897987691852588770249', '-5678', '-2201'); -test(macro, '-717897987691852588770249', '-5678', '-3477'); -test(macro, '717897987691852588770249', '94906265', '56517934'); -test(macro, '-717897987691852588770249', '94906265', '38388331'); -test(macro, '717897987691852588770249', '-94906265', '-38388331'); -test(macro, '-717897987691852588770249', '-94906265', '-56517934'); -test(macro, '717897987691852588770249', '94906266', '81625371'); -test(macro, '-717897987691852588770249', '94906266', '13280895'); -test(macro, '717897987691852588770249', '-94906266', '-13280895'); -test(macro, '-717897987691852588770249', '-94906266', '-81625371'); -test(macro, '717897987691852588770249', '1073741824', '278782921'); -test(macro, '-717897987691852588770249', '1073741824', '794958903'); -test(macro, '717897987691852588770249', '-1073741824', '-794958903'); -test(macro, '-717897987691852588770249', '-1073741824', '-278782921'); -test(macro, '717897987691852588770249', '51676101935731', '51258661506607'); -test(macro, '-717897987691852588770249', '51676101935731', '417440429124'); -test(macro, '717897987691852588770249', '-51676101935731', '-417440429124'); -test(macro, '-717897987691852588770249', '-51676101935731', '-51258661506607'); -test(macro, '717897987691852588770249', '717897987691852588770249', '0'); -test(macro, '-717897987691852588770249', '717897987691852588770249', '0'); -test(macro, '717897987691852588770249', '-717897987691852588770249', '0'); -test(macro, '-717897987691852588770249', '-717897987691852588770249', '0'); diff --git a/test/src/integer/arithmetic/imodn.js b/test/src/integer/arithmetic/imodn.js deleted file mode 100644 index e4e53df..0000000 --- a/test/src/integer/arithmetic/imodn.js +++ /dev/null @@ -1,1134 +0,0 @@ -import test from 'ava'; -import {parse, stringify, imodn} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const c = imodn(a, B); - t.is(stringify(a), C); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `imodn(${fmt(A)},${B}) = ${fmt(C)}`; - -test(macro, '0', 1, '0'); -test(macro, '0', -1, '0'); -test(macro, '0', 3, '0'); -test(macro, '0', -3, '0'); -test(macro, '0', 7, '0'); -test(macro, '0', -7, '0'); -test(macro, '0', 9, '0'); -test(macro, '0', -9, '0'); -test(macro, '0', 11, '0'); -test(macro, '0', -11, '0'); -test(macro, '0', 17, '0'); -test(macro, '0', -17, '0'); -test(macro, '0', 22, '0'); -test(macro, '0', -22, '0'); -test(macro, '0', 24, '0'); -test(macro, '0', -24, '0'); -test(macro, '0', 27, '0'); -test(macro, '0', -27, '0'); -test(macro, '0', 29, '0'); -test(macro, '0', -29, '0'); -test(macro, '0', 1234, '0'); -test(macro, '0', -1234, '0'); -test(macro, '0', 5678, '0'); -test(macro, '0', -5678, '0'); -test(macro, '0', 94906265, '0'); -test(macro, '0', -94906265, '0'); -test(macro, '0', 94906266, '0'); -test(macro, '0', -94906266, '0'); -test(macro, '0', 1073741824, '0'); -test(macro, '0', -1073741824, '0'); -test(macro, '0', 51676101935731, '0'); -test(macro, '0', -51676101935731, '0'); -test(macro, '1', 1, '0'); -test(macro, '-1', 1, '0'); -test(macro, '1', -1, '0'); -test(macro, '-1', -1, '0'); -test(macro, '1', 3, '1'); -test(macro, '-1', 3, '2'); -test(macro, '1', -3, '-2'); -test(macro, '-1', -3, '-1'); -test(macro, '1', 7, '1'); -test(macro, '-1', 7, '6'); -test(macro, '1', -7, '-6'); -test(macro, '-1', -7, '-1'); -test(macro, '1', 9, '1'); -test(macro, '-1', 9, '8'); -test(macro, '1', -9, '-8'); -test(macro, '-1', -9, '-1'); -test(macro, '1', 11, '1'); -test(macro, '-1', 11, '10'); -test(macro, '1', -11, '-10'); -test(macro, '-1', -11, '-1'); -test(macro, '1', 17, '1'); -test(macro, '-1', 17, '16'); -test(macro, '1', -17, '-16'); -test(macro, '-1', -17, '-1'); -test(macro, '1', 22, '1'); -test(macro, '-1', 22, '21'); -test(macro, '1', -22, '-21'); -test(macro, '-1', -22, '-1'); -test(macro, '1', 24, '1'); -test(macro, '-1', 24, '23'); -test(macro, '1', -24, '-23'); -test(macro, '-1', -24, '-1'); -test(macro, '1', 27, '1'); -test(macro, '-1', 27, '26'); -test(macro, '1', -27, '-26'); -test(macro, '-1', -27, '-1'); -test(macro, '1', 29, '1'); -test(macro, '-1', 29, '28'); -test(macro, '1', -29, '-28'); -test(macro, '-1', -29, '-1'); -test(macro, '1', 1234, '1'); -test(macro, '-1', 1234, '1233'); -test(macro, '1', -1234, '-1233'); -test(macro, '-1', -1234, '-1'); -test(macro, '1', 5678, '1'); -test(macro, '-1', 5678, '5677'); -test(macro, '1', -5678, '-5677'); -test(macro, '-1', -5678, '-1'); -test(macro, '1', 94906265, '1'); -test(macro, '-1', 94906265, '94906264'); -test(macro, '1', -94906265, '-94906264'); -test(macro, '-1', -94906265, '-1'); -test(macro, '1', 94906266, '1'); -test(macro, '-1', 94906266, '94906265'); -test(macro, '1', -94906266, '-94906265'); -test(macro, '-1', -94906266, '-1'); -test(macro, '1', 1073741824, '1'); -test(macro, '-1', 1073741824, '1073741823'); -test(macro, '1', -1073741824, '-1073741823'); -test(macro, '-1', -1073741824, '-1'); -test(macro, '1', 51676101935731, '1'); -test(macro, '-1', 51676101935731, '51676101935730'); -test(macro, '1', -51676101935731, '-51676101935730'); -test(macro, '-1', -51676101935731, '-1'); -test(macro, '3', 1, '0'); -test(macro, '-3', 1, '0'); -test(macro, '3', -1, '0'); -test(macro, '-3', -1, '0'); -test(macro, '3', 3, '0'); -test(macro, '-3', 3, '0'); -test(macro, '3', -3, '0'); -test(macro, '-3', -3, '0'); -test(macro, '3', 7, '3'); -test(macro, '-3', 7, '4'); -test(macro, '3', -7, '-4'); -test(macro, '-3', -7, '-3'); -test(macro, '3', 9, '3'); -test(macro, '-3', 9, '6'); -test(macro, '3', -9, '-6'); -test(macro, '-3', -9, '-3'); -test(macro, '3', 11, '3'); -test(macro, '-3', 11, '8'); -test(macro, '3', -11, '-8'); -test(macro, '-3', -11, '-3'); -test(macro, '3', 17, '3'); -test(macro, '-3', 17, '14'); -test(macro, '3', -17, '-14'); -test(macro, '-3', -17, '-3'); -test(macro, '3', 22, '3'); -test(macro, '-3', 22, '19'); -test(macro, '3', -22, '-19'); -test(macro, '-3', -22, '-3'); -test(macro, '3', 24, '3'); -test(macro, '-3', 24, '21'); -test(macro, '3', -24, '-21'); -test(macro, '-3', -24, '-3'); -test(macro, '3', 27, '3'); -test(macro, '-3', 27, '24'); -test(macro, '3', -27, '-24'); -test(macro, '-3', -27, '-3'); -test(macro, '3', 29, '3'); -test(macro, '-3', 29, '26'); -test(macro, '3', -29, '-26'); -test(macro, '-3', -29, '-3'); -test(macro, '3', 1234, '3'); -test(macro, '-3', 1234, '1231'); -test(macro, '3', -1234, '-1231'); -test(macro, '-3', -1234, '-3'); -test(macro, '3', 5678, '3'); -test(macro, '-3', 5678, '5675'); -test(macro, '3', -5678, '-5675'); -test(macro, '-3', -5678, '-3'); -test(macro, '3', 94906265, '3'); -test(macro, '-3', 94906265, '94906262'); -test(macro, '3', -94906265, '-94906262'); -test(macro, '-3', -94906265, '-3'); -test(macro, '3', 94906266, '3'); -test(macro, '-3', 94906266, '94906263'); -test(macro, '3', -94906266, '-94906263'); -test(macro, '-3', -94906266, '-3'); -test(macro, '3', 1073741824, '3'); -test(macro, '-3', 1073741824, '1073741821'); -test(macro, '3', -1073741824, '-1073741821'); -test(macro, '-3', -1073741824, '-3'); -test(macro, '3', 51676101935731, '3'); -test(macro, '-3', 51676101935731, '51676101935728'); -test(macro, '3', -51676101935731, '-51676101935728'); -test(macro, '-3', -51676101935731, '-3'); -test(macro, '7', 1, '0'); -test(macro, '-7', 1, '0'); -test(macro, '7', -1, '0'); -test(macro, '-7', -1, '0'); -test(macro, '7', 3, '1'); -test(macro, '-7', 3, '2'); -test(macro, '7', -3, '-2'); -test(macro, '-7', -3, '-1'); -test(macro, '7', 7, '0'); -test(macro, '-7', 7, '0'); -test(macro, '7', -7, '0'); -test(macro, '-7', -7, '0'); -test(macro, '7', 9, '7'); -test(macro, '-7', 9, '2'); -test(macro, '7', -9, '-2'); -test(macro, '-7', -9, '-7'); -test(macro, '7', 11, '7'); -test(macro, '-7', 11, '4'); -test(macro, '7', -11, '-4'); -test(macro, '-7', -11, '-7'); -test(macro, '7', 17, '7'); -test(macro, '-7', 17, '10'); -test(macro, '7', -17, '-10'); -test(macro, '-7', -17, '-7'); -test(macro, '7', 22, '7'); -test(macro, '-7', 22, '15'); -test(macro, '7', -22, '-15'); -test(macro, '-7', -22, '-7'); -test(macro, '7', 24, '7'); -test(macro, '-7', 24, '17'); -test(macro, '7', -24, '-17'); -test(macro, '-7', -24, '-7'); -test(macro, '7', 27, '7'); -test(macro, '-7', 27, '20'); -test(macro, '7', -27, '-20'); -test(macro, '-7', -27, '-7'); -test(macro, '7', 29, '7'); -test(macro, '-7', 29, '22'); -test(macro, '7', -29, '-22'); -test(macro, '-7', -29, '-7'); -test(macro, '7', 1234, '7'); -test(macro, '-7', 1234, '1227'); -test(macro, '7', -1234, '-1227'); -test(macro, '-7', -1234, '-7'); -test(macro, '7', 5678, '7'); -test(macro, '-7', 5678, '5671'); -test(macro, '7', -5678, '-5671'); -test(macro, '-7', -5678, '-7'); -test(macro, '7', 94906265, '7'); -test(macro, '-7', 94906265, '94906258'); -test(macro, '7', -94906265, '-94906258'); -test(macro, '-7', -94906265, '-7'); -test(macro, '7', 94906266, '7'); -test(macro, '-7', 94906266, '94906259'); -test(macro, '7', -94906266, '-94906259'); -test(macro, '-7', -94906266, '-7'); -test(macro, '7', 1073741824, '7'); -test(macro, '-7', 1073741824, '1073741817'); -test(macro, '7', -1073741824, '-1073741817'); -test(macro, '-7', -1073741824, '-7'); -test(macro, '7', 51676101935731, '7'); -test(macro, '-7', 51676101935731, '51676101935724'); -test(macro, '7', -51676101935731, '-51676101935724'); -test(macro, '-7', -51676101935731, '-7'); -test(macro, '9', 1, '0'); -test(macro, '-9', 1, '0'); -test(macro, '9', -1, '0'); -test(macro, '-9', -1, '0'); -test(macro, '9', 3, '0'); -test(macro, '-9', 3, '0'); -test(macro, '9', -3, '0'); -test(macro, '-9', -3, '0'); -test(macro, '9', 7, '2'); -test(macro, '-9', 7, '5'); -test(macro, '9', -7, '-5'); -test(macro, '-9', -7, '-2'); -test(macro, '9', 9, '0'); -test(macro, '-9', 9, '0'); -test(macro, '9', -9, '0'); -test(macro, '-9', -9, '0'); -test(macro, '9', 11, '9'); -test(macro, '-9', 11, '2'); -test(macro, '9', -11, '-2'); -test(macro, '-9', -11, '-9'); -test(macro, '9', 17, '9'); -test(macro, '-9', 17, '8'); -test(macro, '9', -17, '-8'); -test(macro, '-9', -17, '-9'); -test(macro, '9', 22, '9'); -test(macro, '-9', 22, '13'); -test(macro, '9', -22, '-13'); -test(macro, '-9', -22, '-9'); -test(macro, '9', 24, '9'); -test(macro, '-9', 24, '15'); -test(macro, '9', -24, '-15'); -test(macro, '-9', -24, '-9'); -test(macro, '9', 27, '9'); -test(macro, '-9', 27, '18'); -test(macro, '9', -27, '-18'); -test(macro, '-9', -27, '-9'); -test(macro, '9', 29, '9'); -test(macro, '-9', 29, '20'); -test(macro, '9', -29, '-20'); -test(macro, '-9', -29, '-9'); -test(macro, '9', 1234, '9'); -test(macro, '-9', 1234, '1225'); -test(macro, '9', -1234, '-1225'); -test(macro, '-9', -1234, '-9'); -test(macro, '9', 5678, '9'); -test(macro, '-9', 5678, '5669'); -test(macro, '9', -5678, '-5669'); -test(macro, '-9', -5678, '-9'); -test(macro, '9', 94906265, '9'); -test(macro, '-9', 94906265, '94906256'); -test(macro, '9', -94906265, '-94906256'); -test(macro, '-9', -94906265, '-9'); -test(macro, '9', 94906266, '9'); -test(macro, '-9', 94906266, '94906257'); -test(macro, '9', -94906266, '-94906257'); -test(macro, '-9', -94906266, '-9'); -test(macro, '9', 1073741824, '9'); -test(macro, '-9', 1073741824, '1073741815'); -test(macro, '9', -1073741824, '-1073741815'); -test(macro, '-9', -1073741824, '-9'); -test(macro, '9', 51676101935731, '9'); -test(macro, '-9', 51676101935731, '51676101935722'); -test(macro, '9', -51676101935731, '-51676101935722'); -test(macro, '-9', -51676101935731, '-9'); -test(macro, '11', 1, '0'); -test(macro, '-11', 1, '0'); -test(macro, '11', -1, '0'); -test(macro, '-11', -1, '0'); -test(macro, '11', 3, '2'); -test(macro, '-11', 3, '1'); -test(macro, '11', -3, '-1'); -test(macro, '-11', -3, '-2'); -test(macro, '11', 7, '4'); -test(macro, '-11', 7, '3'); -test(macro, '11', -7, '-3'); -test(macro, '-11', -7, '-4'); -test(macro, '11', 9, '2'); -test(macro, '-11', 9, '7'); -test(macro, '11', -9, '-7'); -test(macro, '-11', -9, '-2'); -test(macro, '11', 11, '0'); -test(macro, '-11', 11, '0'); -test(macro, '11', -11, '0'); -test(macro, '-11', -11, '0'); -test(macro, '11', 17, '11'); -test(macro, '-11', 17, '6'); -test(macro, '11', -17, '-6'); -test(macro, '-11', -17, '-11'); -test(macro, '11', 22, '11'); -test(macro, '-11', 22, '11'); -test(macro, '11', -22, '-11'); -test(macro, '-11', -22, '-11'); -test(macro, '11', 24, '11'); -test(macro, '-11', 24, '13'); -test(macro, '11', -24, '-13'); -test(macro, '-11', -24, '-11'); -test(macro, '11', 27, '11'); -test(macro, '-11', 27, '16'); -test(macro, '11', -27, '-16'); -test(macro, '-11', -27, '-11'); -test(macro, '11', 29, '11'); -test(macro, '-11', 29, '18'); -test(macro, '11', -29, '-18'); -test(macro, '-11', -29, '-11'); -test(macro, '11', 1234, '11'); -test(macro, '-11', 1234, '1223'); -test(macro, '11', -1234, '-1223'); -test(macro, '-11', -1234, '-11'); -test(macro, '11', 5678, '11'); -test(macro, '-11', 5678, '5667'); -test(macro, '11', -5678, '-5667'); -test(macro, '-11', -5678, '-11'); -test(macro, '11', 94906265, '11'); -test(macro, '-11', 94906265, '94906254'); -test(macro, '11', -94906265, '-94906254'); -test(macro, '-11', -94906265, '-11'); -test(macro, '11', 94906266, '11'); -test(macro, '-11', 94906266, '94906255'); -test(macro, '11', -94906266, '-94906255'); -test(macro, '-11', -94906266, '-11'); -test(macro, '11', 1073741824, '11'); -test(macro, '-11', 1073741824, '1073741813'); -test(macro, '11', -1073741824, '-1073741813'); -test(macro, '-11', -1073741824, '-11'); -test(macro, '11', 51676101935731, '11'); -test(macro, '-11', 51676101935731, '51676101935720'); -test(macro, '11', -51676101935731, '-51676101935720'); -test(macro, '-11', -51676101935731, '-11'); -test(macro, '17', 1, '0'); -test(macro, '-17', 1, '0'); -test(macro, '17', -1, '0'); -test(macro, '-17', -1, '0'); -test(macro, '17', 3, '2'); -test(macro, '-17', 3, '1'); -test(macro, '17', -3, '-1'); -test(macro, '-17', -3, '-2'); -test(macro, '17', 7, '3'); -test(macro, '-17', 7, '4'); -test(macro, '17', -7, '-4'); -test(macro, '-17', -7, '-3'); -test(macro, '17', 9, '8'); -test(macro, '-17', 9, '1'); -test(macro, '17', -9, '-1'); -test(macro, '-17', -9, '-8'); -test(macro, '17', 11, '6'); -test(macro, '-17', 11, '5'); -test(macro, '17', -11, '-5'); -test(macro, '-17', -11, '-6'); -test(macro, '17', 17, '0'); -test(macro, '-17', 17, '0'); -test(macro, '17', -17, '0'); -test(macro, '-17', -17, '0'); -test(macro, '17', 22, '17'); -test(macro, '-17', 22, '5'); -test(macro, '17', -22, '-5'); -test(macro, '-17', -22, '-17'); -test(macro, '17', 24, '17'); -test(macro, '-17', 24, '7'); -test(macro, '17', -24, '-7'); -test(macro, '-17', -24, '-17'); -test(macro, '17', 27, '17'); -test(macro, '-17', 27, '10'); -test(macro, '17', -27, '-10'); -test(macro, '-17', -27, '-17'); -test(macro, '17', 29, '17'); -test(macro, '-17', 29, '12'); -test(macro, '17', -29, '-12'); -test(macro, '-17', -29, '-17'); -test(macro, '17', 1234, '17'); -test(macro, '-17', 1234, '1217'); -test(macro, '17', -1234, '-1217'); -test(macro, '-17', -1234, '-17'); -test(macro, '17', 5678, '17'); -test(macro, '-17', 5678, '5661'); -test(macro, '17', -5678, '-5661'); -test(macro, '-17', -5678, '-17'); -test(macro, '17', 94906265, '17'); -test(macro, '-17', 94906265, '94906248'); -test(macro, '17', -94906265, '-94906248'); -test(macro, '-17', -94906265, '-17'); -test(macro, '17', 94906266, '17'); -test(macro, '-17', 94906266, '94906249'); -test(macro, '17', -94906266, '-94906249'); -test(macro, '-17', -94906266, '-17'); -test(macro, '17', 1073741824, '17'); -test(macro, '-17', 1073741824, '1073741807'); -test(macro, '17', -1073741824, '-1073741807'); -test(macro, '-17', -1073741824, '-17'); -test(macro, '17', 51676101935731, '17'); -test(macro, '-17', 51676101935731, '51676101935714'); -test(macro, '17', -51676101935731, '-51676101935714'); -test(macro, '-17', -51676101935731, '-17'); -test(macro, '22', 1, '0'); -test(macro, '-22', 1, '0'); -test(macro, '22', -1, '0'); -test(macro, '-22', -1, '0'); -test(macro, '22', 3, '1'); -test(macro, '-22', 3, '2'); -test(macro, '22', -3, '-2'); -test(macro, '-22', -3, '-1'); -test(macro, '22', 7, '1'); -test(macro, '-22', 7, '6'); -test(macro, '22', -7, '-6'); -test(macro, '-22', -7, '-1'); -test(macro, '22', 9, '4'); -test(macro, '-22', 9, '5'); -test(macro, '22', -9, '-5'); -test(macro, '-22', -9, '-4'); -test(macro, '22', 11, '0'); -test(macro, '-22', 11, '0'); -test(macro, '22', -11, '0'); -test(macro, '-22', -11, '0'); -test(macro, '22', 17, '5'); -test(macro, '-22', 17, '12'); -test(macro, '22', -17, '-12'); -test(macro, '-22', -17, '-5'); -test(macro, '22', 22, '0'); -test(macro, '-22', 22, '0'); -test(macro, '22', -22, '0'); -test(macro, '-22', -22, '0'); -test(macro, '22', 24, '22'); -test(macro, '-22', 24, '2'); -test(macro, '22', -24, '-2'); -test(macro, '-22', -24, '-22'); -test(macro, '22', 27, '22'); -test(macro, '-22', 27, '5'); -test(macro, '22', -27, '-5'); -test(macro, '-22', -27, '-22'); -test(macro, '22', 29, '22'); -test(macro, '-22', 29, '7'); -test(macro, '22', -29, '-7'); -test(macro, '-22', -29, '-22'); -test(macro, '22', 1234, '22'); -test(macro, '-22', 1234, '1212'); -test(macro, '22', -1234, '-1212'); -test(macro, '-22', -1234, '-22'); -test(macro, '22', 5678, '22'); -test(macro, '-22', 5678, '5656'); -test(macro, '22', -5678, '-5656'); -test(macro, '-22', -5678, '-22'); -test(macro, '22', 94906265, '22'); -test(macro, '-22', 94906265, '94906243'); -test(macro, '22', -94906265, '-94906243'); -test(macro, '-22', -94906265, '-22'); -test(macro, '22', 94906266, '22'); -test(macro, '-22', 94906266, '94906244'); -test(macro, '22', -94906266, '-94906244'); -test(macro, '-22', -94906266, '-22'); -test(macro, '22', 1073741824, '22'); -test(macro, '-22', 1073741824, '1073741802'); -test(macro, '22', -1073741824, '-1073741802'); -test(macro, '-22', -1073741824, '-22'); -test(macro, '22', 51676101935731, '22'); -test(macro, '-22', 51676101935731, '51676101935709'); -test(macro, '22', -51676101935731, '-51676101935709'); -test(macro, '-22', -51676101935731, '-22'); -test(macro, '24', 1, '0'); -test(macro, '-24', 1, '0'); -test(macro, '24', -1, '0'); -test(macro, '-24', -1, '0'); -test(macro, '24', 3, '0'); -test(macro, '-24', 3, '0'); -test(macro, '24', -3, '0'); -test(macro, '-24', -3, '0'); -test(macro, '24', 7, '3'); -test(macro, '-24', 7, '4'); -test(macro, '24', -7, '-4'); -test(macro, '-24', -7, '-3'); -test(macro, '24', 9, '6'); -test(macro, '-24', 9, '3'); -test(macro, '24', -9, '-3'); -test(macro, '-24', -9, '-6'); -test(macro, '24', 11, '2'); -test(macro, '-24', 11, '9'); -test(macro, '24', -11, '-9'); -test(macro, '-24', -11, '-2'); -test(macro, '24', 17, '7'); -test(macro, '-24', 17, '10'); -test(macro, '24', -17, '-10'); -test(macro, '-24', -17, '-7'); -test(macro, '24', 22, '2'); -test(macro, '-24', 22, '20'); -test(macro, '24', -22, '-20'); -test(macro, '-24', -22, '-2'); -test(macro, '24', 24, '0'); -test(macro, '-24', 24, '0'); -test(macro, '24', -24, '0'); -test(macro, '-24', -24, '0'); -test(macro, '24', 27, '24'); -test(macro, '-24', 27, '3'); -test(macro, '24', -27, '-3'); -test(macro, '-24', -27, '-24'); -test(macro, '24', 29, '24'); -test(macro, '-24', 29, '5'); -test(macro, '24', -29, '-5'); -test(macro, '-24', -29, '-24'); -test(macro, '24', 1234, '24'); -test(macro, '-24', 1234, '1210'); -test(macro, '24', -1234, '-1210'); -test(macro, '-24', -1234, '-24'); -test(macro, '24', 5678, '24'); -test(macro, '-24', 5678, '5654'); -test(macro, '24', -5678, '-5654'); -test(macro, '-24', -5678, '-24'); -test(macro, '24', 94906265, '24'); -test(macro, '-24', 94906265, '94906241'); -test(macro, '24', -94906265, '-94906241'); -test(macro, '-24', -94906265, '-24'); -test(macro, '24', 94906266, '24'); -test(macro, '-24', 94906266, '94906242'); -test(macro, '24', -94906266, '-94906242'); -test(macro, '-24', -94906266, '-24'); -test(macro, '24', 1073741824, '24'); -test(macro, '-24', 1073741824, '1073741800'); -test(macro, '24', -1073741824, '-1073741800'); -test(macro, '-24', -1073741824, '-24'); -test(macro, '24', 51676101935731, '24'); -test(macro, '-24', 51676101935731, '51676101935707'); -test(macro, '24', -51676101935731, '-51676101935707'); -test(macro, '-24', -51676101935731, '-24'); -test(macro, '27', 1, '0'); -test(macro, '-27', 1, '0'); -test(macro, '27', -1, '0'); -test(macro, '-27', -1, '0'); -test(macro, '27', 3, '0'); -test(macro, '-27', 3, '0'); -test(macro, '27', -3, '0'); -test(macro, '-27', -3, '0'); -test(macro, '27', 7, '6'); -test(macro, '-27', 7, '1'); -test(macro, '27', -7, '-1'); -test(macro, '-27', -7, '-6'); -test(macro, '27', 9, '0'); -test(macro, '-27', 9, '0'); -test(macro, '27', -9, '0'); -test(macro, '-27', -9, '0'); -test(macro, '27', 11, '5'); -test(macro, '-27', 11, '6'); -test(macro, '27', -11, '-6'); -test(macro, '-27', -11, '-5'); -test(macro, '27', 17, '10'); -test(macro, '-27', 17, '7'); -test(macro, '27', -17, '-7'); -test(macro, '-27', -17, '-10'); -test(macro, '27', 22, '5'); -test(macro, '-27', 22, '17'); -test(macro, '27', -22, '-17'); -test(macro, '-27', -22, '-5'); -test(macro, '27', 24, '3'); -test(macro, '-27', 24, '21'); -test(macro, '27', -24, '-21'); -test(macro, '-27', -24, '-3'); -test(macro, '27', 27, '0'); -test(macro, '-27', 27, '0'); -test(macro, '27', -27, '0'); -test(macro, '-27', -27, '0'); -test(macro, '27', 29, '27'); -test(macro, '-27', 29, '2'); -test(macro, '27', -29, '-2'); -test(macro, '-27', -29, '-27'); -test(macro, '27', 1234, '27'); -test(macro, '-27', 1234, '1207'); -test(macro, '27', -1234, '-1207'); -test(macro, '-27', -1234, '-27'); -test(macro, '27', 5678, '27'); -test(macro, '-27', 5678, '5651'); -test(macro, '27', -5678, '-5651'); -test(macro, '-27', -5678, '-27'); -test(macro, '27', 94906265, '27'); -test(macro, '-27', 94906265, '94906238'); -test(macro, '27', -94906265, '-94906238'); -test(macro, '-27', -94906265, '-27'); -test(macro, '27', 94906266, '27'); -test(macro, '-27', 94906266, '94906239'); -test(macro, '27', -94906266, '-94906239'); -test(macro, '-27', -94906266, '-27'); -test(macro, '27', 1073741824, '27'); -test(macro, '-27', 1073741824, '1073741797'); -test(macro, '27', -1073741824, '-1073741797'); -test(macro, '-27', -1073741824, '-27'); -test(macro, '27', 51676101935731, '27'); -test(macro, '-27', 51676101935731, '51676101935704'); -test(macro, '27', -51676101935731, '-51676101935704'); -test(macro, '-27', -51676101935731, '-27'); -test(macro, '29', 1, '0'); -test(macro, '-29', 1, '0'); -test(macro, '29', -1, '0'); -test(macro, '-29', -1, '0'); -test(macro, '29', 3, '2'); -test(macro, '-29', 3, '1'); -test(macro, '29', -3, '-1'); -test(macro, '-29', -3, '-2'); -test(macro, '29', 7, '1'); -test(macro, '-29', 7, '6'); -test(macro, '29', -7, '-6'); -test(macro, '-29', -7, '-1'); -test(macro, '29', 9, '2'); -test(macro, '-29', 9, '7'); -test(macro, '29', -9, '-7'); -test(macro, '-29', -9, '-2'); -test(macro, '29', 11, '7'); -test(macro, '-29', 11, '4'); -test(macro, '29', -11, '-4'); -test(macro, '-29', -11, '-7'); -test(macro, '29', 17, '12'); -test(macro, '-29', 17, '5'); -test(macro, '29', -17, '-5'); -test(macro, '-29', -17, '-12'); -test(macro, '29', 22, '7'); -test(macro, '-29', 22, '15'); -test(macro, '29', -22, '-15'); -test(macro, '-29', -22, '-7'); -test(macro, '29', 24, '5'); -test(macro, '-29', 24, '19'); -test(macro, '29', -24, '-19'); -test(macro, '-29', -24, '-5'); -test(macro, '29', 27, '2'); -test(macro, '-29', 27, '25'); -test(macro, '29', -27, '-25'); -test(macro, '-29', -27, '-2'); -test(macro, '29', 29, '0'); -test(macro, '-29', 29, '0'); -test(macro, '29', -29, '0'); -test(macro, '-29', -29, '0'); -test(macro, '29', 1234, '29'); -test(macro, '-29', 1234, '1205'); -test(macro, '29', -1234, '-1205'); -test(macro, '-29', -1234, '-29'); -test(macro, '29', 5678, '29'); -test(macro, '-29', 5678, '5649'); -test(macro, '29', -5678, '-5649'); -test(macro, '-29', -5678, '-29'); -test(macro, '29', 94906265, '29'); -test(macro, '-29', 94906265, '94906236'); -test(macro, '29', -94906265, '-94906236'); -test(macro, '-29', -94906265, '-29'); -test(macro, '29', 94906266, '29'); -test(macro, '-29', 94906266, '94906237'); -test(macro, '29', -94906266, '-94906237'); -test(macro, '-29', -94906266, '-29'); -test(macro, '29', 1073741824, '29'); -test(macro, '-29', 1073741824, '1073741795'); -test(macro, '29', -1073741824, '-1073741795'); -test(macro, '-29', -1073741824, '-29'); -test(macro, '29', 51676101935731, '29'); -test(macro, '-29', 51676101935731, '51676101935702'); -test(macro, '29', -51676101935731, '-51676101935702'); -test(macro, '-29', -51676101935731, '-29'); -test(macro, '1234', 1, '0'); -test(macro, '-1234', 1, '0'); -test(macro, '1234', -1, '0'); -test(macro, '-1234', -1, '0'); -test(macro, '1234', 3, '1'); -test(macro, '-1234', 3, '2'); -test(macro, '1234', -3, '-2'); -test(macro, '-1234', -3, '-1'); -test(macro, '1234', 7, '2'); -test(macro, '-1234', 7, '5'); -test(macro, '1234', -7, '-5'); -test(macro, '-1234', -7, '-2'); -test(macro, '1234', 9, '1'); -test(macro, '-1234', 9, '8'); -test(macro, '1234', -9, '-8'); -test(macro, '-1234', -9, '-1'); -test(macro, '1234', 11, '2'); -test(macro, '-1234', 11, '9'); -test(macro, '1234', -11, '-9'); -test(macro, '-1234', -11, '-2'); -test(macro, '1234', 17, '10'); -test(macro, '-1234', 17, '7'); -test(macro, '1234', -17, '-7'); -test(macro, '-1234', -17, '-10'); -test(macro, '1234', 22, '2'); -test(macro, '-1234', 22, '20'); -test(macro, '1234', -22, '-20'); -test(macro, '-1234', -22, '-2'); -test(macro, '1234', 24, '10'); -test(macro, '-1234', 24, '14'); -test(macro, '1234', -24, '-14'); -test(macro, '-1234', -24, '-10'); -test(macro, '1234', 27, '19'); -test(macro, '-1234', 27, '8'); -test(macro, '1234', -27, '-8'); -test(macro, '-1234', -27, '-19'); -test(macro, '1234', 29, '16'); -test(macro, '-1234', 29, '13'); -test(macro, '1234', -29, '-13'); -test(macro, '-1234', -29, '-16'); -test(macro, '1234', 1234, '0'); -test(macro, '-1234', 1234, '0'); -test(macro, '1234', -1234, '0'); -test(macro, '-1234', -1234, '0'); -test(macro, '1234', 5678, '1234'); -test(macro, '-1234', 5678, '4444'); -test(macro, '1234', -5678, '-4444'); -test(macro, '-1234', -5678, '-1234'); -test(macro, '1234', 94906265, '1234'); -test(macro, '-1234', 94906265, '94905031'); -test(macro, '1234', -94906265, '-94905031'); -test(macro, '-1234', -94906265, '-1234'); -test(macro, '1234', 94906266, '1234'); -test(macro, '-1234', 94906266, '94905032'); -test(macro, '1234', -94906266, '-94905032'); -test(macro, '-1234', -94906266, '-1234'); -test(macro, '1234', 1073741824, '1234'); -test(macro, '-1234', 1073741824, '1073740590'); -test(macro, '1234', -1073741824, '-1073740590'); -test(macro, '-1234', -1073741824, '-1234'); -test(macro, '1234', 51676101935731, '1234'); -test(macro, '-1234', 51676101935731, '51676101934497'); -test(macro, '1234', -51676101935731, '-51676101934497'); -test(macro, '-1234', -51676101935731, '-1234'); -test(macro, '5678', 1, '0'); -test(macro, '-5678', 1, '0'); -test(macro, '5678', -1, '0'); -test(macro, '-5678', -1, '0'); -test(macro, '5678', 3, '2'); -test(macro, '-5678', 3, '1'); -test(macro, '5678', -3, '-1'); -test(macro, '-5678', -3, '-2'); -test(macro, '5678', 7, '1'); -test(macro, '-5678', 7, '6'); -test(macro, '5678', -7, '-6'); -test(macro, '-5678', -7, '-1'); -test(macro, '5678', 9, '8'); -test(macro, '-5678', 9, '1'); -test(macro, '5678', -9, '-1'); -test(macro, '-5678', -9, '-8'); -test(macro, '5678', 11, '2'); -test(macro, '-5678', 11, '9'); -test(macro, '5678', -11, '-9'); -test(macro, '-5678', -11, '-2'); -test(macro, '5678', 17, '0'); -test(macro, '-5678', 17, '0'); -test(macro, '5678', -17, '0'); -test(macro, '-5678', -17, '0'); -test(macro, '5678', 22, '2'); -test(macro, '-5678', 22, '20'); -test(macro, '5678', -22, '-20'); -test(macro, '-5678', -22, '-2'); -test(macro, '5678', 24, '14'); -test(macro, '-5678', 24, '10'); -test(macro, '5678', -24, '-10'); -test(macro, '-5678', -24, '-14'); -test(macro, '5678', 27, '8'); -test(macro, '-5678', 27, '19'); -test(macro, '5678', -27, '-19'); -test(macro, '-5678', -27, '-8'); -test(macro, '5678', 29, '23'); -test(macro, '-5678', 29, '6'); -test(macro, '5678', -29, '-6'); -test(macro, '-5678', -29, '-23'); -test(macro, '5678', 1234, '742'); -test(macro, '-5678', 1234, '492'); -test(macro, '5678', -1234, '-492'); -test(macro, '-5678', -1234, '-742'); -test(macro, '5678', 5678, '0'); -test(macro, '-5678', 5678, '0'); -test(macro, '5678', -5678, '0'); -test(macro, '-5678', -5678, '0'); -test(macro, '5678', 94906265, '5678'); -test(macro, '-5678', 94906265, '94900587'); -test(macro, '5678', -94906265, '-94900587'); -test(macro, '-5678', -94906265, '-5678'); -test(macro, '5678', 94906266, '5678'); -test(macro, '-5678', 94906266, '94900588'); -test(macro, '5678', -94906266, '-94900588'); -test(macro, '-5678', -94906266, '-5678'); -test(macro, '5678', 1073741824, '5678'); -test(macro, '-5678', 1073741824, '1073736146'); -test(macro, '5678', -1073741824, '-1073736146'); -test(macro, '-5678', -1073741824, '-5678'); -test(macro, '5678', 51676101935731, '5678'); -test(macro, '-5678', 51676101935731, '51676101930053'); -test(macro, '5678', -51676101935731, '-51676101930053'); -test(macro, '-5678', -51676101935731, '-5678'); -test(macro, '94906265', 1, '0'); -test(macro, '-94906265', 1, '0'); -test(macro, '94906265', -1, '0'); -test(macro, '-94906265', -1, '0'); -test(macro, '94906265', 3, '2'); -test(macro, '-94906265', 3, '1'); -test(macro, '94906265', -3, '-1'); -test(macro, '-94906265', -3, '-2'); -test(macro, '94906265', 7, '6'); -test(macro, '-94906265', 7, '1'); -test(macro, '94906265', -7, '-1'); -test(macro, '-94906265', -7, '-6'); -test(macro, '94906265', 9, '5'); -test(macro, '-94906265', 9, '4'); -test(macro, '94906265', -9, '-4'); -test(macro, '-94906265', -9, '-5'); -test(macro, '94906265', 11, '3'); -test(macro, '-94906265', 11, '8'); -test(macro, '94906265', -11, '-8'); -test(macro, '-94906265', -11, '-3'); -test(macro, '94906265', 17, '8'); -test(macro, '-94906265', 17, '9'); -test(macro, '94906265', -17, '-9'); -test(macro, '-94906265', -17, '-8'); -test(macro, '94906265', 22, '3'); -test(macro, '-94906265', 22, '19'); -test(macro, '94906265', -22, '-19'); -test(macro, '-94906265', -22, '-3'); -test(macro, '94906265', 24, '17'); -test(macro, '-94906265', 24, '7'); -test(macro, '94906265', -24, '-7'); -test(macro, '-94906265', -24, '-17'); -test(macro, '94906265', 27, '23'); -test(macro, '-94906265', 27, '4'); -test(macro, '94906265', -27, '-4'); -test(macro, '-94906265', -27, '-23'); -test(macro, '94906265', 29, '24'); -test(macro, '-94906265', 29, '5'); -test(macro, '94906265', -29, '-5'); -test(macro, '-94906265', -29, '-24'); -test(macro, '94906265', 1234, '559'); -test(macro, '-94906265', 1234, '675'); -test(macro, '94906265', -1234, '-675'); -test(macro, '-94906265', -1234, '-559'); -test(macro, '94906265', 5678, '4173'); -test(macro, '-94906265', 5678, '1505'); -test(macro, '94906265', -5678, '-1505'); -test(macro, '-94906265', -5678, '-4173'); -test(macro, '94906265', 94906265, '0'); -test(macro, '-94906265', 94906265, '0'); -test(macro, '94906265', -94906265, '0'); -test(macro, '-94906265', -94906265, '0'); -test(macro, '94906265', 94906266, '94906265'); -test(macro, '-94906265', 94906266, '1'); -test(macro, '94906265', -94906266, '-1'); -test(macro, '-94906265', -94906266, '-94906265'); -test(macro, '94906265', 1073741824, '94906265'); -test(macro, '-94906265', 1073741824, '978835559'); -test(macro, '94906265', -1073741824, '-978835559'); -test(macro, '-94906265', -1073741824, '-94906265'); -test(macro, '94906265', 51676101935731, '94906265'); -test(macro, '-94906265', 51676101935731, '51676007029466'); -test(macro, '94906265', -51676101935731, '-51676007029466'); -test(macro, '-94906265', -51676101935731, '-94906265'); -test(macro, '94906266', 1, '0'); -test(macro, '-94906266', 1, '0'); -test(macro, '94906266', -1, '0'); -test(macro, '-94906266', -1, '0'); -test(macro, '94906266', 3, '0'); -test(macro, '-94906266', 3, '0'); -test(macro, '94906266', -3, '0'); -test(macro, '-94906266', -3, '0'); -test(macro, '94906266', 7, '0'); -test(macro, '-94906266', 7, '0'); -test(macro, '94906266', -7, '0'); -test(macro, '-94906266', -7, '0'); -test(macro, '94906266', 9, '6'); -test(macro, '-94906266', 9, '3'); -test(macro, '94906266', -9, '-3'); -test(macro, '-94906266', -9, '-6'); -test(macro, '94906266', 11, '4'); -test(macro, '-94906266', 11, '7'); -test(macro, '94906266', -11, '-7'); -test(macro, '-94906266', -11, '-4'); -test(macro, '94906266', 17, '9'); -test(macro, '-94906266', 17, '8'); -test(macro, '94906266', -17, '-8'); -test(macro, '-94906266', -17, '-9'); -test(macro, '94906266', 22, '4'); -test(macro, '-94906266', 22, '18'); -test(macro, '94906266', -22, '-18'); -test(macro, '-94906266', -22, '-4'); -test(macro, '94906266', 24, '18'); -test(macro, '-94906266', 24, '6'); -test(macro, '94906266', -24, '-6'); -test(macro, '-94906266', -24, '-18'); -test(macro, '94906266', 27, '24'); -test(macro, '-94906266', 27, '3'); -test(macro, '94906266', -27, '-3'); -test(macro, '-94906266', -27, '-24'); -test(macro, '94906266', 29, '25'); -test(macro, '-94906266', 29, '4'); -test(macro, '94906266', -29, '-4'); -test(macro, '-94906266', -29, '-25'); -test(macro, '94906266', 1234, '560'); -test(macro, '-94906266', 1234, '674'); -test(macro, '94906266', -1234, '-674'); -test(macro, '-94906266', -1234, '-560'); -test(macro, '94906266', 5678, '4174'); -test(macro, '-94906266', 5678, '1504'); -test(macro, '94906266', -5678, '-1504'); -test(macro, '-94906266', -5678, '-4174'); -test(macro, '94906266', 94906265, '1'); -test(macro, '-94906266', 94906265, '94906264'); -test(macro, '94906266', -94906265, '-94906264'); -test(macro, '-94906266', -94906265, '-1'); -test(macro, '94906266', 94906266, '0'); -test(macro, '-94906266', 94906266, '0'); -test(macro, '94906266', -94906266, '0'); -test(macro, '-94906266', -94906266, '0'); -test(macro, '94906266', 1073741824, '94906266'); -test(macro, '-94906266', 1073741824, '978835558'); -test(macro, '94906266', -1073741824, '-978835558'); -test(macro, '-94906266', -1073741824, '-94906266'); -test(macro, '94906266', 51676101935731, '94906266'); -test(macro, '-94906266', 51676101935731, '51676007029465'); -test(macro, '94906266', -51676101935731, '-51676007029465'); -test(macro, '-94906266', -51676101935731, '-94906266'); -test(macro, '1073741824', 1, '0'); -test(macro, '-1073741824', 1, '0'); -test(macro, '1073741824', -1, '0'); -test(macro, '-1073741824', -1, '0'); -test(macro, '1073741824', 3, '1'); -test(macro, '-1073741824', 3, '2'); -test(macro, '1073741824', -3, '-2'); -test(macro, '-1073741824', -3, '-1'); -test(macro, '1073741824', 7, '1'); -test(macro, '-1073741824', 7, '6'); -test(macro, '1073741824', -7, '-6'); -test(macro, '-1073741824', -7, '-1'); -test(macro, '1073741824', 9, '1'); -test(macro, '-1073741824', 9, '8'); -test(macro, '1073741824', -9, '-8'); -test(macro, '-1073741824', -9, '-1'); -test(macro, '1073741824', 11, '1'); -test(macro, '-1073741824', 11, '10'); -test(macro, '1073741824', -11, '-10'); -test(macro, '-1073741824', -11, '-1'); -test(macro, '1073741824', 17, '13'); -test(macro, '-1073741824', 17, '4'); -test(macro, '1073741824', -17, '-4'); -test(macro, '-1073741824', -17, '-13'); -test(macro, '1073741824', 22, '12'); -test(macro, '-1073741824', 22, '10'); -test(macro, '1073741824', -22, '-10'); -test(macro, '-1073741824', -22, '-12'); -test(macro, '1073741824', 24, '16'); -test(macro, '-1073741824', 24, '8'); -test(macro, '1073741824', -24, '-8'); -test(macro, '-1073741824', -24, '-16'); -test(macro, '1073741824', 27, '19'); -test(macro, '-1073741824', 27, '8'); -test(macro, '1073741824', -27, '-8'); -test(macro, '-1073741824', -27, '-19'); -test(macro, '1073741824', 29, '4'); -test(macro, '-1073741824', 29, '25'); -test(macro, '1073741824', -29, '-25'); -test(macro, '-1073741824', -29, '-4'); -test(macro, '1073741824', 1234, '170'); -test(macro, '-1073741824', 1234, '1064'); -test(macro, '1073741824', -1234, '-1064'); -test(macro, '-1073741824', -1234, '-170'); -test(macro, '1073741824', 5678, '3634'); -test(macro, '-1073741824', 5678, '2044'); -test(macro, '1073741824', -5678, '-2044'); -test(macro, '-1073741824', -5678, '-3634'); -test(macro, '1073741824', 94906265, '29772909'); -test(macro, '-1073741824', 94906265, '65133356'); -test(macro, '1073741824', -94906265, '-65133356'); -test(macro, '-1073741824', -94906265, '-29772909'); -test(macro, '1073741824', 94906266, '29772898'); -test(macro, '-1073741824', 94906266, '65133368'); -test(macro, '1073741824', -94906266, '-65133368'); -test(macro, '-1073741824', -94906266, '-29772898'); -test(macro, '1073741824', 1073741824, '0'); -test(macro, '-1073741824', 1073741824, '0'); -test(macro, '1073741824', -1073741824, '0'); -test(macro, '-1073741824', -1073741824, '0'); -test(macro, '1073741824', 51676101935731, '1073741824'); -test(macro, '-1073741824', 51676101935731, '51675028193907'); -test(macro, '1073741824', -51676101935731, '-51675028193907'); -test(macro, '-1073741824', -51676101935731, '-1073741824'); -test(macro, '51676101935731', 1, '0'); -test(macro, '-51676101935731', 1, '0'); -test(macro, '51676101935731', -1, '0'); -test(macro, '-51676101935731', -1, '0'); -test(macro, '51676101935731', 3, '1'); -test(macro, '-51676101935731', 3, '2'); -test(macro, '51676101935731', -3, '-2'); -test(macro, '-51676101935731', -3, '-1'); -test(macro, '51676101935731', 7, '0'); -test(macro, '-51676101935731', 7, '0'); -test(macro, '51676101935731', -7, '0'); -test(macro, '-51676101935731', -7, '0'); -test(macro, '51676101935731', 9, '1'); -test(macro, '-51676101935731', 9, '8'); -test(macro, '51676101935731', -9, '-8'); -test(macro, '-51676101935731', -9, '-1'); -test(macro, '51676101935731', 11, '9'); -test(macro, '-51676101935731', 11, '2'); -test(macro, '51676101935731', -11, '-2'); -test(macro, '-51676101935731', -11, '-9'); -test(macro, '51676101935731', 17, '14'); -test(macro, '-51676101935731', 17, '3'); -test(macro, '51676101935731', -17, '-3'); -test(macro, '-51676101935731', -17, '-14'); -test(macro, '51676101935731', 22, '9'); -test(macro, '-51676101935731', 22, '13'); -test(macro, '51676101935731', -22, '-13'); -test(macro, '-51676101935731', -22, '-9'); -test(macro, '51676101935731', 24, '19'); -test(macro, '-51676101935731', 24, '5'); -test(macro, '51676101935731', -24, '-5'); -test(macro, '-51676101935731', -24, '-19'); -test(macro, '51676101935731', 27, '10'); -test(macro, '-51676101935731', 27, '17'); -test(macro, '51676101935731', -27, '-17'); -test(macro, '-51676101935731', -27, '-10'); -test(macro, '51676101935731', 29, '28'); -test(macro, '-51676101935731', 29, '1'); -test(macro, '51676101935731', -29, '-1'); -test(macro, '-51676101935731', -29, '-28'); -test(macro, '51676101935731', 1234, '835'); -test(macro, '-51676101935731', 1234, '399'); -test(macro, '51676101935731', -1234, '-399'); -test(macro, '-51676101935731', -1234, '-835'); -test(macro, '51676101935731', 5678, '3023'); -test(macro, '-51676101935731', 5678, '2655'); -test(macro, '51676101935731', -5678, '-2655'); -test(macro, '-51676101935731', -5678, '-3023'); -test(macro, '51676101935731', 94906265, '20268291'); -test(macro, '-51676101935731', 94906265, '74637974'); -test(macro, '51676101935731', -94906265, '-74637974'); -test(macro, '-51676101935731', -94906265, '-20268291'); -test(macro, '51676101935731', 94906266, '19723795'); -test(macro, '-51676101935731', 94906266, '75182471'); -test(macro, '51676101935731', -94906266, '-75182471'); -test(macro, '-51676101935731', -94906266, '-19723795'); -test(macro, '51676101935731', 1073741824, '129172083'); -test(macro, '-51676101935731', 1073741824, '944569741'); -test(macro, '51676101935731', -1073741824, '-944569741'); -test(macro, '-51676101935731', -1073741824, '-129172083'); -test(macro, '51676101935731', 51676101935731, '0'); -test(macro, '-51676101935731', 51676101935731, '0'); -test(macro, '51676101935731', -51676101935731, '0'); -test(macro, '-51676101935731', -51676101935731, '0'); -test(macro, '717897987691852588770249', 1, '0'); -test(macro, '-717897987691852588770249', 1, '0'); -test(macro, '717897987691852588770249', -1, '0'); -test(macro, '-717897987691852588770249', -1, '0'); -test(macro, '717897987691852588770249', 3, '0'); -test(macro, '-717897987691852588770249', 3, '0'); -test(macro, '717897987691852588770249', -3, '0'); -test(macro, '-717897987691852588770249', -3, '0'); -test(macro, '717897987691852588770249', 7, '2'); -test(macro, '-717897987691852588770249', 7, '5'); -test(macro, '717897987691852588770249', -7, '-5'); -test(macro, '-717897987691852588770249', -7, '-2'); -test(macro, '717897987691852588770249', 9, '0'); -test(macro, '-717897987691852588770249', 9, '0'); -test(macro, '717897987691852588770249', -9, '0'); -test(macro, '-717897987691852588770249', -9, '0'); -test(macro, '717897987691852588770249', 11, '1'); -test(macro, '-717897987691852588770249', 11, '10'); -test(macro, '717897987691852588770249', -11, '-10'); -test(macro, '-717897987691852588770249', -11, '-1'); -test(macro, '717897987691852588770249', 17, '9'); -test(macro, '-717897987691852588770249', 17, '8'); -test(macro, '717897987691852588770249', -17, '-8'); -test(macro, '-717897987691852588770249', -17, '-9'); -test(macro, '717897987691852588770249', 22, '1'); -test(macro, '-717897987691852588770249', 22, '21'); -test(macro, '717897987691852588770249', -22, '-21'); -test(macro, '-717897987691852588770249', -22, '-1'); -test(macro, '717897987691852588770249', 24, '9'); -test(macro, '-717897987691852588770249', 24, '15'); -test(macro, '717897987691852588770249', -24, '-15'); -test(macro, '-717897987691852588770249', -24, '-9'); -test(macro, '717897987691852588770249', 27, '0'); -test(macro, '-717897987691852588770249', 27, '0'); -test(macro, '717897987691852588770249', -27, '0'); -test(macro, '-717897987691852588770249', -27, '0'); -test(macro, '717897987691852588770249', 29, '22'); -test(macro, '-717897987691852588770249', 29, '7'); -test(macro, '717897987691852588770249', -29, '-7'); -test(macro, '-717897987691852588770249', -29, '-22'); -test(macro, '717897987691852588770249', 1234, '755'); -test(macro, '-717897987691852588770249', 1234, '479'); -test(macro, '717897987691852588770249', -1234, '-479'); -test(macro, '-717897987691852588770249', -1234, '-755'); -test(macro, '717897987691852588770249', 5678, '3477'); -test(macro, '-717897987691852588770249', 5678, '2201'); -test(macro, '717897987691852588770249', -5678, '-2201'); -test(macro, '-717897987691852588770249', -5678, '-3477'); -test(macro, '717897987691852588770249', 94906265, '56517934'); -test(macro, '-717897987691852588770249', 94906265, '38388331'); -test(macro, '717897987691852588770249', -94906265, '-38388331'); -test(macro, '-717897987691852588770249', -94906265, '-56517934'); -test(macro, '717897987691852588770249', 94906266, '81625371'); -test(macro, '-717897987691852588770249', 94906266, '13280895'); -test(macro, '717897987691852588770249', -94906266, '-13280895'); -test(macro, '-717897987691852588770249', -94906266, '-81625371'); -test(macro, '717897987691852588770249', 1073741824, '278782921'); -test(macro, '-717897987691852588770249', 1073741824, '794958903'); -test(macro, '717897987691852588770249', -1073741824, '-794958903'); -test(macro, '-717897987691852588770249', -1073741824, '-278782921'); -test(macro, '717897987691852588770249', 51676101935731, '51258661506607'); -test(macro, '-717897987691852588770249', 51676101935731, '417440429124'); -test(macro, '717897987691852588770249', -51676101935731, '-417440429124'); -test(macro, '-717897987691852588770249', -51676101935731, '-51258661506607'); diff --git a/test/src/integer/arithmetic/imul.js b/test/src/integer/arithmetic/imul.js deleted file mode 100644 index 3932955..0000000 --- a/test/src/integer/arithmetic/imul.js +++ /dev/null @@ -1,1496 +0,0 @@ -import test from 'ava'; -import {parse, stringify, imul} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const b = parse(B); - const c = imul(a, b); - t.is(stringify(a), C); - t.is(stringify(b), B); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `imul(${fmt(A)},${fmt(B)}) = ${fmt(C)}`; - -test(macro, '0', '0', '0'); -test(macro, '0', '1', '0'); -test(macro, '0', '-1', '0'); -test(macro, '0', '3', '0'); -test(macro, '0', '-3', '0'); -test(macro, '0', '7', '0'); -test(macro, '0', '-7', '0'); -test(macro, '0', '9', '0'); -test(macro, '0', '-9', '0'); -test(macro, '0', '11', '0'); -test(macro, '0', '-11', '0'); -test(macro, '0', '17', '0'); -test(macro, '0', '-17', '0'); -test(macro, '0', '22', '0'); -test(macro, '0', '-22', '0'); -test(macro, '0', '24', '0'); -test(macro, '0', '-24', '0'); -test(macro, '0', '27', '0'); -test(macro, '0', '-27', '0'); -test(macro, '0', '29', '0'); -test(macro, '0', '-29', '0'); -test(macro, '0', '1234', '0'); -test(macro, '0', '-1234', '0'); -test(macro, '0', '5678', '0'); -test(macro, '0', '-5678', '0'); -test(macro, '0', '94906265', '0'); -test(macro, '0', '-94906265', '0'); -test(macro, '0', '94906266', '0'); -test(macro, '0', '-94906266', '0'); -test(macro, '0', '1073741824', '0'); -test(macro, '0', '-1073741824', '0'); -test(macro, '0', '51676101935731', '0'); -test(macro, '0', '-51676101935731', '0'); -test(macro, '0', '717897987691852588770249', '0'); -test(macro, '0', '-717897987691852588770249', '0'); -test(macro, '1', '0', '0'); -test(macro, '-1', '0', '0'); -test(macro, '1', '1', '1'); -test(macro, '-1', '1', '-1'); -test(macro, '1', '-1', '-1'); -test(macro, '-1', '-1', '1'); -test(macro, '1', '3', '3'); -test(macro, '-1', '3', '-3'); -test(macro, '1', '-3', '-3'); -test(macro, '-1', '-3', '3'); -test(macro, '1', '7', '7'); -test(macro, '-1', '7', '-7'); -test(macro, '1', '-7', '-7'); -test(macro, '-1', '-7', '7'); -test(macro, '1', '9', '9'); -test(macro, '-1', '9', '-9'); -test(macro, '1', '-9', '-9'); -test(macro, '-1', '-9', '9'); -test(macro, '1', '11', '11'); -test(macro, '-1', '11', '-11'); -test(macro, '1', '-11', '-11'); -test(macro, '-1', '-11', '11'); -test(macro, '1', '17', '17'); -test(macro, '-1', '17', '-17'); -test(macro, '1', '-17', '-17'); -test(macro, '-1', '-17', '17'); -test(macro, '1', '22', '22'); -test(macro, '-1', '22', '-22'); -test(macro, '1', '-22', '-22'); -test(macro, '-1', '-22', '22'); -test(macro, '1', '24', '24'); -test(macro, '-1', '24', '-24'); -test(macro, '1', '-24', '-24'); -test(macro, '-1', '-24', '24'); -test(macro, '1', '27', '27'); -test(macro, '-1', '27', '-27'); -test(macro, '1', '-27', '-27'); -test(macro, '-1', '-27', '27'); -test(macro, '1', '29', '29'); -test(macro, '-1', '29', '-29'); -test(macro, '1', '-29', '-29'); -test(macro, '-1', '-29', '29'); -test(macro, '1', '1234', '1234'); -test(macro, '-1', '1234', '-1234'); -test(macro, '1', '-1234', '-1234'); -test(macro, '-1', '-1234', '1234'); -test(macro, '1', '5678', '5678'); -test(macro, '-1', '5678', '-5678'); -test(macro, '1', '-5678', '-5678'); -test(macro, '-1', '-5678', '5678'); -test(macro, '1', '94906265', '94906265'); -test(macro, '-1', '94906265', '-94906265'); -test(macro, '1', '-94906265', '-94906265'); -test(macro, '-1', '-94906265', '94906265'); -test(macro, '1', '94906266', '94906266'); -test(macro, '-1', '94906266', '-94906266'); -test(macro, '1', '-94906266', '-94906266'); -test(macro, '-1', '-94906266', '94906266'); -test(macro, '1', '1073741824', '1073741824'); -test(macro, '-1', '1073741824', '-1073741824'); -test(macro, '1', '-1073741824', '-1073741824'); -test(macro, '-1', '-1073741824', '1073741824'); -test(macro, '1', '51676101935731', '51676101935731'); -test(macro, '-1', '51676101935731', '-51676101935731'); -test(macro, '1', '-51676101935731', '-51676101935731'); -test(macro, '-1', '-51676101935731', '51676101935731'); -test(macro, '1', '717897987691852588770249', '717897987691852588770249'); -test(macro, '-1', '717897987691852588770249', '-717897987691852588770249'); -test(macro, '1', '-717897987691852588770249', '-717897987691852588770249'); -test(macro, '-1', '-717897987691852588770249', '717897987691852588770249'); -test(macro, '3', '0', '0'); -test(macro, '-3', '0', '0'); -test(macro, '3', '1', '3'); -test(macro, '-3', '1', '-3'); -test(macro, '3', '-1', '-3'); -test(macro, '-3', '-1', '3'); -test(macro, '3', '3', '9'); -test(macro, '-3', '3', '-9'); -test(macro, '3', '-3', '-9'); -test(macro, '-3', '-3', '9'); -test(macro, '3', '7', '21'); -test(macro, '-3', '7', '-21'); -test(macro, '3', '-7', '-21'); -test(macro, '-3', '-7', '21'); -test(macro, '3', '9', '27'); -test(macro, '-3', '9', '-27'); -test(macro, '3', '-9', '-27'); -test(macro, '-3', '-9', '27'); -test(macro, '3', '11', '33'); -test(macro, '-3', '11', '-33'); -test(macro, '3', '-11', '-33'); -test(macro, '-3', '-11', '33'); -test(macro, '3', '17', '51'); -test(macro, '-3', '17', '-51'); -test(macro, '3', '-17', '-51'); -test(macro, '-3', '-17', '51'); -test(macro, '3', '22', '66'); -test(macro, '-3', '22', '-66'); -test(macro, '3', '-22', '-66'); -test(macro, '-3', '-22', '66'); -test(macro, '3', '24', '72'); -test(macro, '-3', '24', '-72'); -test(macro, '3', '-24', '-72'); -test(macro, '-3', '-24', '72'); -test(macro, '3', '27', '81'); -test(macro, '-3', '27', '-81'); -test(macro, '3', '-27', '-81'); -test(macro, '-3', '-27', '81'); -test(macro, '3', '29', '87'); -test(macro, '-3', '29', '-87'); -test(macro, '3', '-29', '-87'); -test(macro, '-3', '-29', '87'); -test(macro, '3', '1234', '3702'); -test(macro, '-3', '1234', '-3702'); -test(macro, '3', '-1234', '-3702'); -test(macro, '-3', '-1234', '3702'); -test(macro, '3', '5678', '17034'); -test(macro, '-3', '5678', '-17034'); -test(macro, '3', '-5678', '-17034'); -test(macro, '-3', '-5678', '17034'); -test(macro, '3', '94906265', '284718795'); -test(macro, '-3', '94906265', '-284718795'); -test(macro, '3', '-94906265', '-284718795'); -test(macro, '-3', '-94906265', '284718795'); -test(macro, '3', '94906266', '284718798'); -test(macro, '-3', '94906266', '-284718798'); -test(macro, '3', '-94906266', '-284718798'); -test(macro, '-3', '-94906266', '284718798'); -test(macro, '3', '1073741824', '3221225472'); -test(macro, '-3', '1073741824', '-3221225472'); -test(macro, '3', '-1073741824', '-3221225472'); -test(macro, '-3', '-1073741824', '3221225472'); -test(macro, '3', '51676101935731', '155028305807193'); -test(macro, '-3', '51676101935731', '-155028305807193'); -test(macro, '3', '-51676101935731', '-155028305807193'); -test(macro, '-3', '-51676101935731', '155028305807193'); -test(macro, '3', '717897987691852588770249', '2153693963075557766310747'); -test(macro, '-3', '717897987691852588770249', '-2153693963075557766310747'); -test(macro, '3', '-717897987691852588770249', '-2153693963075557766310747'); -test(macro, '-3', '-717897987691852588770249', '2153693963075557766310747'); -test(macro, '7', '0', '0'); -test(macro, '-7', '0', '0'); -test(macro, '7', '1', '7'); -test(macro, '-7', '1', '-7'); -test(macro, '7', '-1', '-7'); -test(macro, '-7', '-1', '7'); -test(macro, '7', '3', '21'); -test(macro, '-7', '3', '-21'); -test(macro, '7', '-3', '-21'); -test(macro, '-7', '-3', '21'); -test(macro, '7', '7', '49'); -test(macro, '-7', '7', '-49'); -test(macro, '7', '-7', '-49'); -test(macro, '-7', '-7', '49'); -test(macro, '7', '9', '63'); -test(macro, '-7', '9', '-63'); -test(macro, '7', '-9', '-63'); -test(macro, '-7', '-9', '63'); -test(macro, '7', '11', '77'); -test(macro, '-7', '11', '-77'); -test(macro, '7', '-11', '-77'); -test(macro, '-7', '-11', '77'); -test(macro, '7', '17', '119'); -test(macro, '-7', '17', '-119'); -test(macro, '7', '-17', '-119'); -test(macro, '-7', '-17', '119'); -test(macro, '7', '22', '154'); -test(macro, '-7', '22', '-154'); -test(macro, '7', '-22', '-154'); -test(macro, '-7', '-22', '154'); -test(macro, '7', '24', '168'); -test(macro, '-7', '24', '-168'); -test(macro, '7', '-24', '-168'); -test(macro, '-7', '-24', '168'); -test(macro, '7', '27', '189'); -test(macro, '-7', '27', '-189'); -test(macro, '7', '-27', '-189'); -test(macro, '-7', '-27', '189'); -test(macro, '7', '29', '203'); -test(macro, '-7', '29', '-203'); -test(macro, '7', '-29', '-203'); -test(macro, '-7', '-29', '203'); -test(macro, '7', '1234', '8638'); -test(macro, '-7', '1234', '-8638'); -test(macro, '7', '-1234', '-8638'); -test(macro, '-7', '-1234', '8638'); -test(macro, '7', '5678', '39746'); -test(macro, '-7', '5678', '-39746'); -test(macro, '7', '-5678', '-39746'); -test(macro, '-7', '-5678', '39746'); -test(macro, '7', '94906265', '664343855'); -test(macro, '-7', '94906265', '-664343855'); -test(macro, '7', '-94906265', '-664343855'); -test(macro, '-7', '-94906265', '664343855'); -test(macro, '7', '94906266', '664343862'); -test(macro, '-7', '94906266', '-664343862'); -test(macro, '7', '-94906266', '-664343862'); -test(macro, '-7', '-94906266', '664343862'); -test(macro, '7', '1073741824', '7516192768'); -test(macro, '-7', '1073741824', '-7516192768'); -test(macro, '7', '-1073741824', '-7516192768'); -test(macro, '-7', '-1073741824', '7516192768'); -test(macro, '7', '51676101935731', '361732713550117'); -test(macro, '-7', '51676101935731', '-361732713550117'); -test(macro, '7', '-51676101935731', '-361732713550117'); -test(macro, '-7', '-51676101935731', '361732713550117'); -test(macro, '7', '717897987691852588770249', '5025285913842968121391743'); -test(macro, '-7', '717897987691852588770249', '-5025285913842968121391743'); -test(macro, '7', '-717897987691852588770249', '-5025285913842968121391743'); -test(macro, '-7', '-717897987691852588770249', '5025285913842968121391743'); -test(macro, '9', '0', '0'); -test(macro, '-9', '0', '0'); -test(macro, '9', '1', '9'); -test(macro, '-9', '1', '-9'); -test(macro, '9', '-1', '-9'); -test(macro, '-9', '-1', '9'); -test(macro, '9', '3', '27'); -test(macro, '-9', '3', '-27'); -test(macro, '9', '-3', '-27'); -test(macro, '-9', '-3', '27'); -test(macro, '9', '7', '63'); -test(macro, '-9', '7', '-63'); -test(macro, '9', '-7', '-63'); -test(macro, '-9', '-7', '63'); -test(macro, '9', '9', '81'); -test(macro, '-9', '9', '-81'); -test(macro, '9', '-9', '-81'); -test(macro, '-9', '-9', '81'); -test(macro, '9', '11', '99'); -test(macro, '-9', '11', '-99'); -test(macro, '9', '-11', '-99'); -test(macro, '-9', '-11', '99'); -test(macro, '9', '17', '153'); -test(macro, '-9', '17', '-153'); -test(macro, '9', '-17', '-153'); -test(macro, '-9', '-17', '153'); -test(macro, '9', '22', '198'); -test(macro, '-9', '22', '-198'); -test(macro, '9', '-22', '-198'); -test(macro, '-9', '-22', '198'); -test(macro, '9', '24', '216'); -test(macro, '-9', '24', '-216'); -test(macro, '9', '-24', '-216'); -test(macro, '-9', '-24', '216'); -test(macro, '9', '27', '243'); -test(macro, '-9', '27', '-243'); -test(macro, '9', '-27', '-243'); -test(macro, '-9', '-27', '243'); -test(macro, '9', '29', '261'); -test(macro, '-9', '29', '-261'); -test(macro, '9', '-29', '-261'); -test(macro, '-9', '-29', '261'); -test(macro, '9', '1234', '11106'); -test(macro, '-9', '1234', '-11106'); -test(macro, '9', '-1234', '-11106'); -test(macro, '-9', '-1234', '11106'); -test(macro, '9', '5678', '51102'); -test(macro, '-9', '5678', '-51102'); -test(macro, '9', '-5678', '-51102'); -test(macro, '-9', '-5678', '51102'); -test(macro, '9', '94906265', '854156385'); -test(macro, '-9', '94906265', '-854156385'); -test(macro, '9', '-94906265', '-854156385'); -test(macro, '-9', '-94906265', '854156385'); -test(macro, '9', '94906266', '854156394'); -test(macro, '-9', '94906266', '-854156394'); -test(macro, '9', '-94906266', '-854156394'); -test(macro, '-9', '-94906266', '854156394'); -test(macro, '9', '1073741824', '9663676416'); -test(macro, '-9', '1073741824', '-9663676416'); -test(macro, '9', '-1073741824', '-9663676416'); -test(macro, '-9', '-1073741824', '9663676416'); -test(macro, '9', '51676101935731', '465084917421579'); -test(macro, '-9', '51676101935731', '-465084917421579'); -test(macro, '9', '-51676101935731', '-465084917421579'); -test(macro, '-9', '-51676101935731', '465084917421579'); -test(macro, '9', '717897987691852588770249', '6461081889226673298932241'); -test(macro, '-9', '717897987691852588770249', '-6461081889226673298932241'); -test(macro, '9', '-717897987691852588770249', '-6461081889226673298932241'); -test(macro, '-9', '-717897987691852588770249', '6461081889226673298932241'); -test(macro, '11', '0', '0'); -test(macro, '-11', '0', '0'); -test(macro, '11', '1', '11'); -test(macro, '-11', '1', '-11'); -test(macro, '11', '-1', '-11'); -test(macro, '-11', '-1', '11'); -test(macro, '11', '3', '33'); -test(macro, '-11', '3', '-33'); -test(macro, '11', '-3', '-33'); -test(macro, '-11', '-3', '33'); -test(macro, '11', '7', '77'); -test(macro, '-11', '7', '-77'); -test(macro, '11', '-7', '-77'); -test(macro, '-11', '-7', '77'); -test(macro, '11', '9', '99'); -test(macro, '-11', '9', '-99'); -test(macro, '11', '-9', '-99'); -test(macro, '-11', '-9', '99'); -test(macro, '11', '11', '121'); -test(macro, '-11', '11', '-121'); -test(macro, '11', '-11', '-121'); -test(macro, '-11', '-11', '121'); -test(macro, '11', '17', '187'); -test(macro, '-11', '17', '-187'); -test(macro, '11', '-17', '-187'); -test(macro, '-11', '-17', '187'); -test(macro, '11', '22', '242'); -test(macro, '-11', '22', '-242'); -test(macro, '11', '-22', '-242'); -test(macro, '-11', '-22', '242'); -test(macro, '11', '24', '264'); -test(macro, '-11', '24', '-264'); -test(macro, '11', '-24', '-264'); -test(macro, '-11', '-24', '264'); -test(macro, '11', '27', '297'); -test(macro, '-11', '27', '-297'); -test(macro, '11', '-27', '-297'); -test(macro, '-11', '-27', '297'); -test(macro, '11', '29', '319'); -test(macro, '-11', '29', '-319'); -test(macro, '11', '-29', '-319'); -test(macro, '-11', '-29', '319'); -test(macro, '11', '1234', '13574'); -test(macro, '-11', '1234', '-13574'); -test(macro, '11', '-1234', '-13574'); -test(macro, '-11', '-1234', '13574'); -test(macro, '11', '5678', '62458'); -test(macro, '-11', '5678', '-62458'); -test(macro, '11', '-5678', '-62458'); -test(macro, '-11', '-5678', '62458'); -test(macro, '11', '94906265', '1043968915'); -test(macro, '-11', '94906265', '-1043968915'); -test(macro, '11', '-94906265', '-1043968915'); -test(macro, '-11', '-94906265', '1043968915'); -test(macro, '11', '94906266', '1043968926'); -test(macro, '-11', '94906266', '-1043968926'); -test(macro, '11', '-94906266', '-1043968926'); -test(macro, '-11', '-94906266', '1043968926'); -test(macro, '11', '1073741824', '11811160064'); -test(macro, '-11', '1073741824', '-11811160064'); -test(macro, '11', '-1073741824', '-11811160064'); -test(macro, '-11', '-1073741824', '11811160064'); -test(macro, '11', '51676101935731', '568437121293041'); -test(macro, '-11', '51676101935731', '-568437121293041'); -test(macro, '11', '-51676101935731', '-568437121293041'); -test(macro, '-11', '-51676101935731', '568437121293041'); -test(macro, '11', '717897987691852588770249', '7896877864610378476472739'); -test(macro, '-11', '717897987691852588770249', '-7896877864610378476472739'); -test(macro, '11', '-717897987691852588770249', '-7896877864610378476472739'); -test(macro, '-11', '-717897987691852588770249', '7896877864610378476472739'); -test(macro, '17', '0', '0'); -test(macro, '-17', '0', '0'); -test(macro, '17', '1', '17'); -test(macro, '-17', '1', '-17'); -test(macro, '17', '-1', '-17'); -test(macro, '-17', '-1', '17'); -test(macro, '17', '3', '51'); -test(macro, '-17', '3', '-51'); -test(macro, '17', '-3', '-51'); -test(macro, '-17', '-3', '51'); -test(macro, '17', '7', '119'); -test(macro, '-17', '7', '-119'); -test(macro, '17', '-7', '-119'); -test(macro, '-17', '-7', '119'); -test(macro, '17', '9', '153'); -test(macro, '-17', '9', '-153'); -test(macro, '17', '-9', '-153'); -test(macro, '-17', '-9', '153'); -test(macro, '17', '11', '187'); -test(macro, '-17', '11', '-187'); -test(macro, '17', '-11', '-187'); -test(macro, '-17', '-11', '187'); -test(macro, '17', '17', '289'); -test(macro, '-17', '17', '-289'); -test(macro, '17', '-17', '-289'); -test(macro, '-17', '-17', '289'); -test(macro, '17', '22', '374'); -test(macro, '-17', '22', '-374'); -test(macro, '17', '-22', '-374'); -test(macro, '-17', '-22', '374'); -test(macro, '17', '24', '408'); -test(macro, '-17', '24', '-408'); -test(macro, '17', '-24', '-408'); -test(macro, '-17', '-24', '408'); -test(macro, '17', '27', '459'); -test(macro, '-17', '27', '-459'); -test(macro, '17', '-27', '-459'); -test(macro, '-17', '-27', '459'); -test(macro, '17', '29', '493'); -test(macro, '-17', '29', '-493'); -test(macro, '17', '-29', '-493'); -test(macro, '-17', '-29', '493'); -test(macro, '17', '1234', '20978'); -test(macro, '-17', '1234', '-20978'); -test(macro, '17', '-1234', '-20978'); -test(macro, '-17', '-1234', '20978'); -test(macro, '17', '5678', '96526'); -test(macro, '-17', '5678', '-96526'); -test(macro, '17', '-5678', '-96526'); -test(macro, '-17', '-5678', '96526'); -test(macro, '17', '94906265', '1613406505'); -test(macro, '-17', '94906265', '-1613406505'); -test(macro, '17', '-94906265', '-1613406505'); -test(macro, '-17', '-94906265', '1613406505'); -test(macro, '17', '94906266', '1613406522'); -test(macro, '-17', '94906266', '-1613406522'); -test(macro, '17', '-94906266', '-1613406522'); -test(macro, '-17', '-94906266', '1613406522'); -test(macro, '17', '1073741824', '18253611008'); -test(macro, '-17', '1073741824', '-18253611008'); -test(macro, '17', '-1073741824', '-18253611008'); -test(macro, '-17', '-1073741824', '18253611008'); -test(macro, '17', '51676101935731', '878493732907427'); -test(macro, '-17', '51676101935731', '-878493732907427'); -test(macro, '17', '-51676101935731', '-878493732907427'); -test(macro, '-17', '-51676101935731', '878493732907427'); -test(macro, '17', '717897987691852588770249', '12204265790761494009094233'); -test(macro, '-17', '717897987691852588770249', '-12204265790761494009094233'); -test(macro, '17', '-717897987691852588770249', '-12204265790761494009094233'); -test(macro, '-17', '-717897987691852588770249', '12204265790761494009094233'); -test(macro, '22', '0', '0'); -test(macro, '-22', '0', '0'); -test(macro, '22', '1', '22'); -test(macro, '-22', '1', '-22'); -test(macro, '22', '-1', '-22'); -test(macro, '-22', '-1', '22'); -test(macro, '22', '3', '66'); -test(macro, '-22', '3', '-66'); -test(macro, '22', '-3', '-66'); -test(macro, '-22', '-3', '66'); -test(macro, '22', '7', '154'); -test(macro, '-22', '7', '-154'); -test(macro, '22', '-7', '-154'); -test(macro, '-22', '-7', '154'); -test(macro, '22', '9', '198'); -test(macro, '-22', '9', '-198'); -test(macro, '22', '-9', '-198'); -test(macro, '-22', '-9', '198'); -test(macro, '22', '11', '242'); -test(macro, '-22', '11', '-242'); -test(macro, '22', '-11', '-242'); -test(macro, '-22', '-11', '242'); -test(macro, '22', '17', '374'); -test(macro, '-22', '17', '-374'); -test(macro, '22', '-17', '-374'); -test(macro, '-22', '-17', '374'); -test(macro, '22', '22', '484'); -test(macro, '-22', '22', '-484'); -test(macro, '22', '-22', '-484'); -test(macro, '-22', '-22', '484'); -test(macro, '22', '24', '528'); -test(macro, '-22', '24', '-528'); -test(macro, '22', '-24', '-528'); -test(macro, '-22', '-24', '528'); -test(macro, '22', '27', '594'); -test(macro, '-22', '27', '-594'); -test(macro, '22', '-27', '-594'); -test(macro, '-22', '-27', '594'); -test(macro, '22', '29', '638'); -test(macro, '-22', '29', '-638'); -test(macro, '22', '-29', '-638'); -test(macro, '-22', '-29', '638'); -test(macro, '22', '1234', '27148'); -test(macro, '-22', '1234', '-27148'); -test(macro, '22', '-1234', '-27148'); -test(macro, '-22', '-1234', '27148'); -test(macro, '22', '5678', '124916'); -test(macro, '-22', '5678', '-124916'); -test(macro, '22', '-5678', '-124916'); -test(macro, '-22', '-5678', '124916'); -test(macro, '22', '94906265', '2087937830'); -test(macro, '-22', '94906265', '-2087937830'); -test(macro, '22', '-94906265', '-2087937830'); -test(macro, '-22', '-94906265', '2087937830'); -test(macro, '22', '94906266', '2087937852'); -test(macro, '-22', '94906266', '-2087937852'); -test(macro, '22', '-94906266', '-2087937852'); -test(macro, '-22', '-94906266', '2087937852'); -test(macro, '22', '1073741824', '23622320128'); -test(macro, '-22', '1073741824', '-23622320128'); -test(macro, '22', '-1073741824', '-23622320128'); -test(macro, '-22', '-1073741824', '23622320128'); -test(macro, '22', '51676101935731', '1136874242586082'); -test(macro, '-22', '51676101935731', '-1136874242586082'); -test(macro, '22', '-51676101935731', '-1136874242586082'); -test(macro, '-22', '-51676101935731', '1136874242586082'); -test(macro, '22', '717897987691852588770249', '15793755729220756952945478'); -test(macro, '-22', '717897987691852588770249', '-15793755729220756952945478'); -test(macro, '22', '-717897987691852588770249', '-15793755729220756952945478'); -test(macro, '-22', '-717897987691852588770249', '15793755729220756952945478'); -test(macro, '24', '0', '0'); -test(macro, '-24', '0', '0'); -test(macro, '24', '1', '24'); -test(macro, '-24', '1', '-24'); -test(macro, '24', '-1', '-24'); -test(macro, '-24', '-1', '24'); -test(macro, '24', '3', '72'); -test(macro, '-24', '3', '-72'); -test(macro, '24', '-3', '-72'); -test(macro, '-24', '-3', '72'); -test(macro, '24', '7', '168'); -test(macro, '-24', '7', '-168'); -test(macro, '24', '-7', '-168'); -test(macro, '-24', '-7', '168'); -test(macro, '24', '9', '216'); -test(macro, '-24', '9', '-216'); -test(macro, '24', '-9', '-216'); -test(macro, '-24', '-9', '216'); -test(macro, '24', '11', '264'); -test(macro, '-24', '11', '-264'); -test(macro, '24', '-11', '-264'); -test(macro, '-24', '-11', '264'); -test(macro, '24', '17', '408'); -test(macro, '-24', '17', '-408'); -test(macro, '24', '-17', '-408'); -test(macro, '-24', '-17', '408'); -test(macro, '24', '22', '528'); -test(macro, '-24', '22', '-528'); -test(macro, '24', '-22', '-528'); -test(macro, '-24', '-22', '528'); -test(macro, '24', '24', '576'); -test(macro, '-24', '24', '-576'); -test(macro, '24', '-24', '-576'); -test(macro, '-24', '-24', '576'); -test(macro, '24', '27', '648'); -test(macro, '-24', '27', '-648'); -test(macro, '24', '-27', '-648'); -test(macro, '-24', '-27', '648'); -test(macro, '24', '29', '696'); -test(macro, '-24', '29', '-696'); -test(macro, '24', '-29', '-696'); -test(macro, '-24', '-29', '696'); -test(macro, '24', '1234', '29616'); -test(macro, '-24', '1234', '-29616'); -test(macro, '24', '-1234', '-29616'); -test(macro, '-24', '-1234', '29616'); -test(macro, '24', '5678', '136272'); -test(macro, '-24', '5678', '-136272'); -test(macro, '24', '-5678', '-136272'); -test(macro, '-24', '-5678', '136272'); -test(macro, '24', '94906265', '2277750360'); -test(macro, '-24', '94906265', '-2277750360'); -test(macro, '24', '-94906265', '-2277750360'); -test(macro, '-24', '-94906265', '2277750360'); -test(macro, '24', '94906266', '2277750384'); -test(macro, '-24', '94906266', '-2277750384'); -test(macro, '24', '-94906266', '-2277750384'); -test(macro, '-24', '-94906266', '2277750384'); -test(macro, '24', '1073741824', '25769803776'); -test(macro, '-24', '1073741824', '-25769803776'); -test(macro, '24', '-1073741824', '-25769803776'); -test(macro, '-24', '-1073741824', '25769803776'); -test(macro, '24', '51676101935731', '1240226446457544'); -test(macro, '-24', '51676101935731', '-1240226446457544'); -test(macro, '24', '-51676101935731', '-1240226446457544'); -test(macro, '-24', '-51676101935731', '1240226446457544'); -test(macro, '24', '717897987691852588770249', '17229551704604462130485976'); -test(macro, '-24', '717897987691852588770249', '-17229551704604462130485976'); -test(macro, '24', '-717897987691852588770249', '-17229551704604462130485976'); -test(macro, '-24', '-717897987691852588770249', '17229551704604462130485976'); -test(macro, '27', '0', '0'); -test(macro, '-27', '0', '0'); -test(macro, '27', '1', '27'); -test(macro, '-27', '1', '-27'); -test(macro, '27', '-1', '-27'); -test(macro, '-27', '-1', '27'); -test(macro, '27', '3', '81'); -test(macro, '-27', '3', '-81'); -test(macro, '27', '-3', '-81'); -test(macro, '-27', '-3', '81'); -test(macro, '27', '7', '189'); -test(macro, '-27', '7', '-189'); -test(macro, '27', '-7', '-189'); -test(macro, '-27', '-7', '189'); -test(macro, '27', '9', '243'); -test(macro, '-27', '9', '-243'); -test(macro, '27', '-9', '-243'); -test(macro, '-27', '-9', '243'); -test(macro, '27', '11', '297'); -test(macro, '-27', '11', '-297'); -test(macro, '27', '-11', '-297'); -test(macro, '-27', '-11', '297'); -test(macro, '27', '17', '459'); -test(macro, '-27', '17', '-459'); -test(macro, '27', '-17', '-459'); -test(macro, '-27', '-17', '459'); -test(macro, '27', '22', '594'); -test(macro, '-27', '22', '-594'); -test(macro, '27', '-22', '-594'); -test(macro, '-27', '-22', '594'); -test(macro, '27', '24', '648'); -test(macro, '-27', '24', '-648'); -test(macro, '27', '-24', '-648'); -test(macro, '-27', '-24', '648'); -test(macro, '27', '27', '729'); -test(macro, '-27', '27', '-729'); -test(macro, '27', '-27', '-729'); -test(macro, '-27', '-27', '729'); -test(macro, '27', '29', '783'); -test(macro, '-27', '29', '-783'); -test(macro, '27', '-29', '-783'); -test(macro, '-27', '-29', '783'); -test(macro, '27', '1234', '33318'); -test(macro, '-27', '1234', '-33318'); -test(macro, '27', '-1234', '-33318'); -test(macro, '-27', '-1234', '33318'); -test(macro, '27', '5678', '153306'); -test(macro, '-27', '5678', '-153306'); -test(macro, '27', '-5678', '-153306'); -test(macro, '-27', '-5678', '153306'); -test(macro, '27', '94906265', '2562469155'); -test(macro, '-27', '94906265', '-2562469155'); -test(macro, '27', '-94906265', '-2562469155'); -test(macro, '-27', '-94906265', '2562469155'); -test(macro, '27', '94906266', '2562469182'); -test(macro, '-27', '94906266', '-2562469182'); -test(macro, '27', '-94906266', '-2562469182'); -test(macro, '-27', '-94906266', '2562469182'); -test(macro, '27', '1073741824', '28991029248'); -test(macro, '-27', '1073741824', '-28991029248'); -test(macro, '27', '-1073741824', '-28991029248'); -test(macro, '-27', '-1073741824', '28991029248'); -test(macro, '27', '51676101935731', '1395254752264737'); -test(macro, '-27', '51676101935731', '-1395254752264737'); -test(macro, '27', '-51676101935731', '-1395254752264737'); -test(macro, '-27', '-51676101935731', '1395254752264737'); -test(macro, '27', '717897987691852588770249', '19383245667680019896796723'); -test(macro, '-27', '717897987691852588770249', '-19383245667680019896796723'); -test(macro, '27', '-717897987691852588770249', '-19383245667680019896796723'); -test(macro, '-27', '-717897987691852588770249', '19383245667680019896796723'); -test(macro, '29', '0', '0'); -test(macro, '-29', '0', '0'); -test(macro, '29', '1', '29'); -test(macro, '-29', '1', '-29'); -test(macro, '29', '-1', '-29'); -test(macro, '-29', '-1', '29'); -test(macro, '29', '3', '87'); -test(macro, '-29', '3', '-87'); -test(macro, '29', '-3', '-87'); -test(macro, '-29', '-3', '87'); -test(macro, '29', '7', '203'); -test(macro, '-29', '7', '-203'); -test(macro, '29', '-7', '-203'); -test(macro, '-29', '-7', '203'); -test(macro, '29', '9', '261'); -test(macro, '-29', '9', '-261'); -test(macro, '29', '-9', '-261'); -test(macro, '-29', '-9', '261'); -test(macro, '29', '11', '319'); -test(macro, '-29', '11', '-319'); -test(macro, '29', '-11', '-319'); -test(macro, '-29', '-11', '319'); -test(macro, '29', '17', '493'); -test(macro, '-29', '17', '-493'); -test(macro, '29', '-17', '-493'); -test(macro, '-29', '-17', '493'); -test(macro, '29', '22', '638'); -test(macro, '-29', '22', '-638'); -test(macro, '29', '-22', '-638'); -test(macro, '-29', '-22', '638'); -test(macro, '29', '24', '696'); -test(macro, '-29', '24', '-696'); -test(macro, '29', '-24', '-696'); -test(macro, '-29', '-24', '696'); -test(macro, '29', '27', '783'); -test(macro, '-29', '27', '-783'); -test(macro, '29', '-27', '-783'); -test(macro, '-29', '-27', '783'); -test(macro, '29', '29', '841'); -test(macro, '-29', '29', '-841'); -test(macro, '29', '-29', '-841'); -test(macro, '-29', '-29', '841'); -test(macro, '29', '1234', '35786'); -test(macro, '-29', '1234', '-35786'); -test(macro, '29', '-1234', '-35786'); -test(macro, '-29', '-1234', '35786'); -test(macro, '29', '5678', '164662'); -test(macro, '-29', '5678', '-164662'); -test(macro, '29', '-5678', '-164662'); -test(macro, '-29', '-5678', '164662'); -test(macro, '29', '94906265', '2752281685'); -test(macro, '-29', '94906265', '-2752281685'); -test(macro, '29', '-94906265', '-2752281685'); -test(macro, '-29', '-94906265', '2752281685'); -test(macro, '29', '94906266', '2752281714'); -test(macro, '-29', '94906266', '-2752281714'); -test(macro, '29', '-94906266', '-2752281714'); -test(macro, '-29', '-94906266', '2752281714'); -test(macro, '29', '1073741824', '31138512896'); -test(macro, '-29', '1073741824', '-31138512896'); -test(macro, '29', '-1073741824', '-31138512896'); -test(macro, '-29', '-1073741824', '31138512896'); -test(macro, '29', '51676101935731', '1498606956136199'); -test(macro, '-29', '51676101935731', '-1498606956136199'); -test(macro, '29', '-51676101935731', '-1498606956136199'); -test(macro, '-29', '-51676101935731', '1498606956136199'); -test(macro, '29', '717897987691852588770249', '20819041643063725074337221'); -test(macro, '-29', '717897987691852588770249', '-20819041643063725074337221'); -test(macro, '29', '-717897987691852588770249', '-20819041643063725074337221'); -test(macro, '-29', '-717897987691852588770249', '20819041643063725074337221'); -test(macro, '1234', '0', '0'); -test(macro, '-1234', '0', '0'); -test(macro, '1234', '1', '1234'); -test(macro, '-1234', '1', '-1234'); -test(macro, '1234', '-1', '-1234'); -test(macro, '-1234', '-1', '1234'); -test(macro, '1234', '3', '3702'); -test(macro, '-1234', '3', '-3702'); -test(macro, '1234', '-3', '-3702'); -test(macro, '-1234', '-3', '3702'); -test(macro, '1234', '7', '8638'); -test(macro, '-1234', '7', '-8638'); -test(macro, '1234', '-7', '-8638'); -test(macro, '-1234', '-7', '8638'); -test(macro, '1234', '9', '11106'); -test(macro, '-1234', '9', '-11106'); -test(macro, '1234', '-9', '-11106'); -test(macro, '-1234', '-9', '11106'); -test(macro, '1234', '11', '13574'); -test(macro, '-1234', '11', '-13574'); -test(macro, '1234', '-11', '-13574'); -test(macro, '-1234', '-11', '13574'); -test(macro, '1234', '17', '20978'); -test(macro, '-1234', '17', '-20978'); -test(macro, '1234', '-17', '-20978'); -test(macro, '-1234', '-17', '20978'); -test(macro, '1234', '22', '27148'); -test(macro, '-1234', '22', '-27148'); -test(macro, '1234', '-22', '-27148'); -test(macro, '-1234', '-22', '27148'); -test(macro, '1234', '24', '29616'); -test(macro, '-1234', '24', '-29616'); -test(macro, '1234', '-24', '-29616'); -test(macro, '-1234', '-24', '29616'); -test(macro, '1234', '27', '33318'); -test(macro, '-1234', '27', '-33318'); -test(macro, '1234', '-27', '-33318'); -test(macro, '-1234', '-27', '33318'); -test(macro, '1234', '29', '35786'); -test(macro, '-1234', '29', '-35786'); -test(macro, '1234', '-29', '-35786'); -test(macro, '-1234', '-29', '35786'); -test(macro, '1234', '1234', '1522756'); -test(macro, '-1234', '1234', '-1522756'); -test(macro, '1234', '-1234', '-1522756'); -test(macro, '-1234', '-1234', '1522756'); -test(macro, '1234', '5678', '7006652'); -test(macro, '-1234', '5678', '-7006652'); -test(macro, '1234', '-5678', '-7006652'); -test(macro, '-1234', '-5678', '7006652'); -test(macro, '1234', '94906265', '117114331010'); -test(macro, '-1234', '94906265', '-117114331010'); -test(macro, '1234', '-94906265', '-117114331010'); -test(macro, '-1234', '-94906265', '117114331010'); -test(macro, '1234', '94906266', '117114332244'); -test(macro, '-1234', '94906266', '-117114332244'); -test(macro, '1234', '-94906266', '-117114332244'); -test(macro, '-1234', '-94906266', '117114332244'); -test(macro, '1234', '1073741824', '1324997410816'); -test(macro, '-1234', '1073741824', '-1324997410816'); -test(macro, '1234', '-1073741824', '-1324997410816'); -test(macro, '-1234', '-1073741824', '1324997410816'); -test(macro, '1234', '51676101935731', '63768309788692054'); -test(macro, '-1234', '51676101935731', '-63768309788692054'); -test(macro, '1234', '-51676101935731', '-63768309788692054'); -test(macro, '-1234', '-51676101935731', '63768309788692054'); -test(macro, '1234', '717897987691852588770249', '885886116811746094542487266'); -test( - macro, - '-1234', - '717897987691852588770249', - '-885886116811746094542487266', -); -test( - macro, - '1234', - '-717897987691852588770249', - '-885886116811746094542487266', -); -test( - macro, - '-1234', - '-717897987691852588770249', - '885886116811746094542487266', -); -test(macro, '5678', '0', '0'); -test(macro, '-5678', '0', '0'); -test(macro, '5678', '1', '5678'); -test(macro, '-5678', '1', '-5678'); -test(macro, '5678', '-1', '-5678'); -test(macro, '-5678', '-1', '5678'); -test(macro, '5678', '3', '17034'); -test(macro, '-5678', '3', '-17034'); -test(macro, '5678', '-3', '-17034'); -test(macro, '-5678', '-3', '17034'); -test(macro, '5678', '7', '39746'); -test(macro, '-5678', '7', '-39746'); -test(macro, '5678', '-7', '-39746'); -test(macro, '-5678', '-7', '39746'); -test(macro, '5678', '9', '51102'); -test(macro, '-5678', '9', '-51102'); -test(macro, '5678', '-9', '-51102'); -test(macro, '-5678', '-9', '51102'); -test(macro, '5678', '11', '62458'); -test(macro, '-5678', '11', '-62458'); -test(macro, '5678', '-11', '-62458'); -test(macro, '-5678', '-11', '62458'); -test(macro, '5678', '17', '96526'); -test(macro, '-5678', '17', '-96526'); -test(macro, '5678', '-17', '-96526'); -test(macro, '-5678', '-17', '96526'); -test(macro, '5678', '22', '124916'); -test(macro, '-5678', '22', '-124916'); -test(macro, '5678', '-22', '-124916'); -test(macro, '-5678', '-22', '124916'); -test(macro, '5678', '24', '136272'); -test(macro, '-5678', '24', '-136272'); -test(macro, '5678', '-24', '-136272'); -test(macro, '-5678', '-24', '136272'); -test(macro, '5678', '27', '153306'); -test(macro, '-5678', '27', '-153306'); -test(macro, '5678', '-27', '-153306'); -test(macro, '-5678', '-27', '153306'); -test(macro, '5678', '29', '164662'); -test(macro, '-5678', '29', '-164662'); -test(macro, '5678', '-29', '-164662'); -test(macro, '-5678', '-29', '164662'); -test(macro, '5678', '1234', '7006652'); -test(macro, '-5678', '1234', '-7006652'); -test(macro, '5678', '-1234', '-7006652'); -test(macro, '-5678', '-1234', '7006652'); -test(macro, '5678', '5678', '32239684'); -test(macro, '-5678', '5678', '-32239684'); -test(macro, '5678', '-5678', '-32239684'); -test(macro, '-5678', '-5678', '32239684'); -test(macro, '5678', '94906265', '538877772670'); -test(macro, '-5678', '94906265', '-538877772670'); -test(macro, '5678', '-94906265', '-538877772670'); -test(macro, '-5678', '-94906265', '538877772670'); -test(macro, '5678', '94906266', '538877778348'); -test(macro, '-5678', '94906266', '-538877778348'); -test(macro, '5678', '-94906266', '-538877778348'); -test(macro, '-5678', '-94906266', '538877778348'); -test(macro, '5678', '1073741824', '6096706076672'); -test(macro, '-5678', '1073741824', '-6096706076672'); -test(macro, '5678', '-1073741824', '-6096706076672'); -test(macro, '-5678', '-1073741824', '6096706076672'); -test(macro, '5678', '51676101935731', '293416906791080618'); -test(macro, '-5678', '51676101935731', '-293416906791080618'); -test(macro, '5678', '-51676101935731', '-293416906791080618'); -test(macro, '-5678', '-51676101935731', '293416906791080618'); -test(macro, '5678', '717897987691852588770249', '4076224774114338999037473822'); -test( - macro, - '-5678', - '717897987691852588770249', - '-4076224774114338999037473822', -); -test( - macro, - '5678', - '-717897987691852588770249', - '-4076224774114338999037473822', -); -test( - macro, - '-5678', - '-717897987691852588770249', - '4076224774114338999037473822', -); -test(macro, '94906265', '0', '0'); -test(macro, '-94906265', '0', '0'); -test(macro, '94906265', '1', '94906265'); -test(macro, '-94906265', '1', '-94906265'); -test(macro, '94906265', '-1', '-94906265'); -test(macro, '-94906265', '-1', '94906265'); -test(macro, '94906265', '3', '284718795'); -test(macro, '-94906265', '3', '-284718795'); -test(macro, '94906265', '-3', '-284718795'); -test(macro, '-94906265', '-3', '284718795'); -test(macro, '94906265', '7', '664343855'); -test(macro, '-94906265', '7', '-664343855'); -test(macro, '94906265', '-7', '-664343855'); -test(macro, '-94906265', '-7', '664343855'); -test(macro, '94906265', '9', '854156385'); -test(macro, '-94906265', '9', '-854156385'); -test(macro, '94906265', '-9', '-854156385'); -test(macro, '-94906265', '-9', '854156385'); -test(macro, '94906265', '11', '1043968915'); -test(macro, '-94906265', '11', '-1043968915'); -test(macro, '94906265', '-11', '-1043968915'); -test(macro, '-94906265', '-11', '1043968915'); -test(macro, '94906265', '17', '1613406505'); -test(macro, '-94906265', '17', '-1613406505'); -test(macro, '94906265', '-17', '-1613406505'); -test(macro, '-94906265', '-17', '1613406505'); -test(macro, '94906265', '22', '2087937830'); -test(macro, '-94906265', '22', '-2087937830'); -test(macro, '94906265', '-22', '-2087937830'); -test(macro, '-94906265', '-22', '2087937830'); -test(macro, '94906265', '24', '2277750360'); -test(macro, '-94906265', '24', '-2277750360'); -test(macro, '94906265', '-24', '-2277750360'); -test(macro, '-94906265', '-24', '2277750360'); -test(macro, '94906265', '27', '2562469155'); -test(macro, '-94906265', '27', '-2562469155'); -test(macro, '94906265', '-27', '-2562469155'); -test(macro, '-94906265', '-27', '2562469155'); -test(macro, '94906265', '29', '2752281685'); -test(macro, '-94906265', '29', '-2752281685'); -test(macro, '94906265', '-29', '-2752281685'); -test(macro, '-94906265', '-29', '2752281685'); -test(macro, '94906265', '1234', '117114331010'); -test(macro, '-94906265', '1234', '-117114331010'); -test(macro, '94906265', '-1234', '-117114331010'); -test(macro, '-94906265', '-1234', '117114331010'); -test(macro, '94906265', '5678', '538877772670'); -test(macro, '-94906265', '5678', '-538877772670'); -test(macro, '94906265', '-5678', '-538877772670'); -test(macro, '-94906265', '-5678', '538877772670'); -test(macro, '94906265', '94906265', '9007199136250225'); -test(macro, '-94906265', '94906265', '-9007199136250225'); -test(macro, '94906265', '-94906265', '-9007199136250225'); -test(macro, '-94906265', '-94906265', '9007199136250225'); -test(macro, '94906265', '94906266', '9007199231156490'); -test(macro, '-94906265', '94906266', '-9007199231156490'); -test(macro, '94906265', '-94906266', '-9007199231156490'); -test(macro, '-94906265', '-94906266', '9007199231156490'); -test(macro, '94906265', '1073741824', '101904826090127360'); -test(macro, '-94906265', '1073741824', '-101904826090127360'); -test(macro, '94906265', '-1073741824', '-101904826090127360'); -test(macro, '-94906265', '-1073741824', '101904826090127360'); -test(macro, '94906265', '51676101935731', '4904385824479499254715'); -test(macro, '-94906265', '51676101935731', '-4904385824479499254715'); -test(macro, '94906265', '-51676101935731', '-4904385824479499254715'); -test(macro, '-94906265', '-51676101935731', '4904385824479499254715'); -test( - macro, - '94906265', - '717897987691852588770249', - '68133016662849700130765275709985', -); -test( - macro, - '-94906265', - '717897987691852588770249', - '-68133016662849700130765275709985', -); -test( - macro, - '94906265', - '-717897987691852588770249', - '-68133016662849700130765275709985', -); -test( - macro, - '-94906265', - '-717897987691852588770249', - '68133016662849700130765275709985', -); -test(macro, '94906266', '0', '0'); -test(macro, '-94906266', '0', '0'); -test(macro, '94906266', '1', '94906266'); -test(macro, '-94906266', '1', '-94906266'); -test(macro, '94906266', '-1', '-94906266'); -test(macro, '-94906266', '-1', '94906266'); -test(macro, '94906266', '3', '284718798'); -test(macro, '-94906266', '3', '-284718798'); -test(macro, '94906266', '-3', '-284718798'); -test(macro, '-94906266', '-3', '284718798'); -test(macro, '94906266', '7', '664343862'); -test(macro, '-94906266', '7', '-664343862'); -test(macro, '94906266', '-7', '-664343862'); -test(macro, '-94906266', '-7', '664343862'); -test(macro, '94906266', '9', '854156394'); -test(macro, '-94906266', '9', '-854156394'); -test(macro, '94906266', '-9', '-854156394'); -test(macro, '-94906266', '-9', '854156394'); -test(macro, '94906266', '11', '1043968926'); -test(macro, '-94906266', '11', '-1043968926'); -test(macro, '94906266', '-11', '-1043968926'); -test(macro, '-94906266', '-11', '1043968926'); -test(macro, '94906266', '17', '1613406522'); -test(macro, '-94906266', '17', '-1613406522'); -test(macro, '94906266', '-17', '-1613406522'); -test(macro, '-94906266', '-17', '1613406522'); -test(macro, '94906266', '22', '2087937852'); -test(macro, '-94906266', '22', '-2087937852'); -test(macro, '94906266', '-22', '-2087937852'); -test(macro, '-94906266', '-22', '2087937852'); -test(macro, '94906266', '24', '2277750384'); -test(macro, '-94906266', '24', '-2277750384'); -test(macro, '94906266', '-24', '-2277750384'); -test(macro, '-94906266', '-24', '2277750384'); -test(macro, '94906266', '27', '2562469182'); -test(macro, '-94906266', '27', '-2562469182'); -test(macro, '94906266', '-27', '-2562469182'); -test(macro, '-94906266', '-27', '2562469182'); -test(macro, '94906266', '29', '2752281714'); -test(macro, '-94906266', '29', '-2752281714'); -test(macro, '94906266', '-29', '-2752281714'); -test(macro, '-94906266', '-29', '2752281714'); -test(macro, '94906266', '1234', '117114332244'); -test(macro, '-94906266', '1234', '-117114332244'); -test(macro, '94906266', '-1234', '-117114332244'); -test(macro, '-94906266', '-1234', '117114332244'); -test(macro, '94906266', '5678', '538877778348'); -test(macro, '-94906266', '5678', '-538877778348'); -test(macro, '94906266', '-5678', '-538877778348'); -test(macro, '-94906266', '-5678', '538877778348'); -test(macro, '94906266', '94906265', '9007199231156490'); -test(macro, '-94906266', '94906265', '-9007199231156490'); -test(macro, '94906266', '-94906265', '-9007199231156490'); -test(macro, '-94906266', '-94906265', '9007199231156490'); -test(macro, '94906266', '94906266', '9007199326062756'); -test(macro, '-94906266', '94906266', '-9007199326062756'); -test(macro, '94906266', '-94906266', '-9007199326062756'); -test(macro, '-94906266', '-94906266', '9007199326062756'); -test(macro, '94906266', '1073741824', '101904827163869184'); -test(macro, '-94906266', '1073741824', '-101904827163869184'); -test(macro, '94906266', '-1073741824', '-101904827163869184'); -test(macro, '-94906266', '-1073741824', '101904827163869184'); -test(macro, '94906266', '51676101935731', '4904385876155601190446'); -test(macro, '-94906266', '51676101935731', '-4904385876155601190446'); -test(macro, '94906266', '-51676101935731', '-4904385876155601190446'); -test(macro, '-94906266', '-51676101935731', '4904385876155601190446'); -test( - macro, - '94906266', - '717897987691852588770249', - '68133017380747687822617864480234', -); -test( - macro, - '-94906266', - '717897987691852588770249', - '-68133017380747687822617864480234', -); -test( - macro, - '94906266', - '-717897987691852588770249', - '-68133017380747687822617864480234', -); -test( - macro, - '-94906266', - '-717897987691852588770249', - '68133017380747687822617864480234', -); -test(macro, '1073741824', '0', '0'); -test(macro, '-1073741824', '0', '0'); -test(macro, '1073741824', '1', '1073741824'); -test(macro, '-1073741824', '1', '-1073741824'); -test(macro, '1073741824', '-1', '-1073741824'); -test(macro, '-1073741824', '-1', '1073741824'); -test(macro, '1073741824', '3', '3221225472'); -test(macro, '-1073741824', '3', '-3221225472'); -test(macro, '1073741824', '-3', '-3221225472'); -test(macro, '-1073741824', '-3', '3221225472'); -test(macro, '1073741824', '7', '7516192768'); -test(macro, '-1073741824', '7', '-7516192768'); -test(macro, '1073741824', '-7', '-7516192768'); -test(macro, '-1073741824', '-7', '7516192768'); -test(macro, '1073741824', '9', '9663676416'); -test(macro, '-1073741824', '9', '-9663676416'); -test(macro, '1073741824', '-9', '-9663676416'); -test(macro, '-1073741824', '-9', '9663676416'); -test(macro, '1073741824', '11', '11811160064'); -test(macro, '-1073741824', '11', '-11811160064'); -test(macro, '1073741824', '-11', '-11811160064'); -test(macro, '-1073741824', '-11', '11811160064'); -test(macro, '1073741824', '17', '18253611008'); -test(macro, '-1073741824', '17', '-18253611008'); -test(macro, '1073741824', '-17', '-18253611008'); -test(macro, '-1073741824', '-17', '18253611008'); -test(macro, '1073741824', '22', '23622320128'); -test(macro, '-1073741824', '22', '-23622320128'); -test(macro, '1073741824', '-22', '-23622320128'); -test(macro, '-1073741824', '-22', '23622320128'); -test(macro, '1073741824', '24', '25769803776'); -test(macro, '-1073741824', '24', '-25769803776'); -test(macro, '1073741824', '-24', '-25769803776'); -test(macro, '-1073741824', '-24', '25769803776'); -test(macro, '1073741824', '27', '28991029248'); -test(macro, '-1073741824', '27', '-28991029248'); -test(macro, '1073741824', '-27', '-28991029248'); -test(macro, '-1073741824', '-27', '28991029248'); -test(macro, '1073741824', '29', '31138512896'); -test(macro, '-1073741824', '29', '-31138512896'); -test(macro, '1073741824', '-29', '-31138512896'); -test(macro, '-1073741824', '-29', '31138512896'); -test(macro, '1073741824', '1234', '1324997410816'); -test(macro, '-1073741824', '1234', '-1324997410816'); -test(macro, '1073741824', '-1234', '-1324997410816'); -test(macro, '-1073741824', '-1234', '1324997410816'); -test(macro, '1073741824', '5678', '6096706076672'); -test(macro, '-1073741824', '5678', '-6096706076672'); -test(macro, '1073741824', '-5678', '-6096706076672'); -test(macro, '-1073741824', '-5678', '6096706076672'); -test(macro, '1073741824', '94906265', '101904826090127360'); -test(macro, '-1073741824', '94906265', '-101904826090127360'); -test(macro, '1073741824', '-94906265', '-101904826090127360'); -test(macro, '-1073741824', '-94906265', '101904826090127360'); -test(macro, '1073741824', '94906266', '101904827163869184'); -test(macro, '-1073741824', '94906266', '-101904827163869184'); -test(macro, '1073741824', '-94906266', '-101904827163869184'); -test(macro, '-1073741824', '-94906266', '101904827163869184'); -test(macro, '1073741824', '1073741824', '1152921504606846976'); -test(macro, '-1073741824', '1073741824', '-1152921504606846976'); -test(macro, '1073741824', '-1073741824', '-1152921504606846976'); -test(macro, '-1073741824', '-1073741824', '1152921504606846976'); -test(macro, '1073741824', '51676101935731', '55486791949681734713344'); -test(macro, '-1073741824', '51676101935731', '-55486791949681734713344'); -test(macro, '1073741824', '-51676101935731', '-55486791949681734713344'); -test(macro, '-1073741824', '-51676101935731', '55486791949681734713344'); -test( - macro, - '1073741824', - '717897987691852588770249', - '770837094750179348605289078194176', -); -test( - macro, - '-1073741824', - '717897987691852588770249', - '-770837094750179348605289078194176', -); -test( - macro, - '1073741824', - '-717897987691852588770249', - '-770837094750179348605289078194176', -); -test( - macro, - '-1073741824', - '-717897987691852588770249', - '770837094750179348605289078194176', -); -test(macro, '51676101935731', '0', '0'); -test(macro, '-51676101935731', '0', '0'); -test(macro, '51676101935731', '1', '51676101935731'); -test(macro, '-51676101935731', '1', '-51676101935731'); -test(macro, '51676101935731', '-1', '-51676101935731'); -test(macro, '-51676101935731', '-1', '51676101935731'); -test(macro, '51676101935731', '3', '155028305807193'); -test(macro, '-51676101935731', '3', '-155028305807193'); -test(macro, '51676101935731', '-3', '-155028305807193'); -test(macro, '-51676101935731', '-3', '155028305807193'); -test(macro, '51676101935731', '7', '361732713550117'); -test(macro, '-51676101935731', '7', '-361732713550117'); -test(macro, '51676101935731', '-7', '-361732713550117'); -test(macro, '-51676101935731', '-7', '361732713550117'); -test(macro, '51676101935731', '9', '465084917421579'); -test(macro, '-51676101935731', '9', '-465084917421579'); -test(macro, '51676101935731', '-9', '-465084917421579'); -test(macro, '-51676101935731', '-9', '465084917421579'); -test(macro, '51676101935731', '11', '568437121293041'); -test(macro, '-51676101935731', '11', '-568437121293041'); -test(macro, '51676101935731', '-11', '-568437121293041'); -test(macro, '-51676101935731', '-11', '568437121293041'); -test(macro, '51676101935731', '17', '878493732907427'); -test(macro, '-51676101935731', '17', '-878493732907427'); -test(macro, '51676101935731', '-17', '-878493732907427'); -test(macro, '-51676101935731', '-17', '878493732907427'); -test(macro, '51676101935731', '22', '1136874242586082'); -test(macro, '-51676101935731', '22', '-1136874242586082'); -test(macro, '51676101935731', '-22', '-1136874242586082'); -test(macro, '-51676101935731', '-22', '1136874242586082'); -test(macro, '51676101935731', '24', '1240226446457544'); -test(macro, '-51676101935731', '24', '-1240226446457544'); -test(macro, '51676101935731', '-24', '-1240226446457544'); -test(macro, '-51676101935731', '-24', '1240226446457544'); -test(macro, '51676101935731', '27', '1395254752264737'); -test(macro, '-51676101935731', '27', '-1395254752264737'); -test(macro, '51676101935731', '-27', '-1395254752264737'); -test(macro, '-51676101935731', '-27', '1395254752264737'); -test(macro, '51676101935731', '29', '1498606956136199'); -test(macro, '-51676101935731', '29', '-1498606956136199'); -test(macro, '51676101935731', '-29', '-1498606956136199'); -test(macro, '-51676101935731', '-29', '1498606956136199'); -test(macro, '51676101935731', '1234', '63768309788692054'); -test(macro, '-51676101935731', '1234', '-63768309788692054'); -test(macro, '51676101935731', '-1234', '-63768309788692054'); -test(macro, '-51676101935731', '-1234', '63768309788692054'); -test(macro, '51676101935731', '5678', '293416906791080618'); -test(macro, '-51676101935731', '5678', '-293416906791080618'); -test(macro, '51676101935731', '-5678', '-293416906791080618'); -test(macro, '-51676101935731', '-5678', '293416906791080618'); -test(macro, '51676101935731', '94906265', '4904385824479499254715'); -test(macro, '-51676101935731', '94906265', '-4904385824479499254715'); -test(macro, '51676101935731', '-94906265', '-4904385824479499254715'); -test(macro, '-51676101935731', '-94906265', '4904385824479499254715'); -test(macro, '51676101935731', '94906266', '4904385876155601190446'); -test(macro, '-51676101935731', '94906266', '-4904385876155601190446'); -test(macro, '51676101935731', '-94906266', '-4904385876155601190446'); -test(macro, '-51676101935731', '-94906266', '4904385876155601190446'); -test(macro, '51676101935731', '1073741824', '55486791949681734713344'); -test(macro, '-51676101935731', '1073741824', '-55486791949681734713344'); -test(macro, '51676101935731', '-1073741824', '-55486791949681734713344'); -test(macro, '-51676101935731', '-1073741824', '55486791949681734713344'); -test(macro, '51676101935731', '51676101935731', '2670419511272061205254504361'); -test( - macro, - '-51676101935731', - '51676101935731', - '-2670419511272061205254504361', -); -test( - macro, - '51676101935731', - '-51676101935731', - '-2670419511272061205254504361', -); -test( - macro, - '-51676101935731', - '-51676101935731', - '2670419511272061205254504361', -); -test( - macro, - '51676101935731', - '717897987691852588770249', - '37098169591420333175287767861722867019', -); -test( - macro, - '-51676101935731', - '717897987691852588770249', - '-37098169591420333175287767861722867019', -); -test( - macro, - '51676101935731', - '-717897987691852588770249', - '-37098169591420333175287767861722867019', -); -test( - macro, - '-51676101935731', - '-717897987691852588770249', - '37098169591420333175287767861722867019', -); -test(macro, '717897987691852588770249', '0', '0'); -test(macro, '-717897987691852588770249', '0', '0'); -test(macro, '717897987691852588770249', '1', '717897987691852588770249'); -test(macro, '-717897987691852588770249', '1', '-717897987691852588770249'); -test(macro, '717897987691852588770249', '-1', '-717897987691852588770249'); -test(macro, '-717897987691852588770249', '-1', '717897987691852588770249'); -test(macro, '717897987691852588770249', '3', '2153693963075557766310747'); -test(macro, '-717897987691852588770249', '3', '-2153693963075557766310747'); -test(macro, '717897987691852588770249', '-3', '-2153693963075557766310747'); -test(macro, '-717897987691852588770249', '-3', '2153693963075557766310747'); -test(macro, '717897987691852588770249', '7', '5025285913842968121391743'); -test(macro, '-717897987691852588770249', '7', '-5025285913842968121391743'); -test(macro, '717897987691852588770249', '-7', '-5025285913842968121391743'); -test(macro, '-717897987691852588770249', '-7', '5025285913842968121391743'); -test(macro, '717897987691852588770249', '9', '6461081889226673298932241'); -test(macro, '-717897987691852588770249', '9', '-6461081889226673298932241'); -test(macro, '717897987691852588770249', '-9', '-6461081889226673298932241'); -test(macro, '-717897987691852588770249', '-9', '6461081889226673298932241'); -test(macro, '717897987691852588770249', '11', '7896877864610378476472739'); -test(macro, '-717897987691852588770249', '11', '-7896877864610378476472739'); -test(macro, '717897987691852588770249', '-11', '-7896877864610378476472739'); -test(macro, '-717897987691852588770249', '-11', '7896877864610378476472739'); -test(macro, '717897987691852588770249', '17', '12204265790761494009094233'); -test(macro, '-717897987691852588770249', '17', '-12204265790761494009094233'); -test(macro, '717897987691852588770249', '-17', '-12204265790761494009094233'); -test(macro, '-717897987691852588770249', '-17', '12204265790761494009094233'); -test(macro, '717897987691852588770249', '22', '15793755729220756952945478'); -test(macro, '-717897987691852588770249', '22', '-15793755729220756952945478'); -test(macro, '717897987691852588770249', '-22', '-15793755729220756952945478'); -test(macro, '-717897987691852588770249', '-22', '15793755729220756952945478'); -test(macro, '717897987691852588770249', '24', '17229551704604462130485976'); -test(macro, '-717897987691852588770249', '24', '-17229551704604462130485976'); -test(macro, '717897987691852588770249', '-24', '-17229551704604462130485976'); -test(macro, '-717897987691852588770249', '-24', '17229551704604462130485976'); -test(macro, '717897987691852588770249', '27', '19383245667680019896796723'); -test(macro, '-717897987691852588770249', '27', '-19383245667680019896796723'); -test(macro, '717897987691852588770249', '-27', '-19383245667680019896796723'); -test(macro, '-717897987691852588770249', '-27', '19383245667680019896796723'); -test(macro, '717897987691852588770249', '29', '20819041643063725074337221'); -test(macro, '-717897987691852588770249', '29', '-20819041643063725074337221'); -test(macro, '717897987691852588770249', '-29', '-20819041643063725074337221'); -test(macro, '-717897987691852588770249', '-29', '20819041643063725074337221'); -test(macro, '717897987691852588770249', '1234', '885886116811746094542487266'); -test( - macro, - '-717897987691852588770249', - '1234', - '-885886116811746094542487266', -); -test( - macro, - '717897987691852588770249', - '-1234', - '-885886116811746094542487266', -); -test( - macro, - '-717897987691852588770249', - '-1234', - '885886116811746094542487266', -); -test(macro, '717897987691852588770249', '5678', '4076224774114338999037473822'); -test( - macro, - '-717897987691852588770249', - '5678', - '-4076224774114338999037473822', -); -test( - macro, - '717897987691852588770249', - '-5678', - '-4076224774114338999037473822', -); -test( - macro, - '-717897987691852588770249', - '-5678', - '4076224774114338999037473822', -); -test( - macro, - '717897987691852588770249', - '94906265', - '68133016662849700130765275709985', -); -test( - macro, - '-717897987691852588770249', - '94906265', - '-68133016662849700130765275709985', -); -test( - macro, - '717897987691852588770249', - '-94906265', - '-68133016662849700130765275709985', -); -test( - macro, - '-717897987691852588770249', - '-94906265', - '68133016662849700130765275709985', -); -test( - macro, - '717897987691852588770249', - '94906266', - '68133017380747687822617864480234', -); -test( - macro, - '-717897987691852588770249', - '94906266', - '-68133017380747687822617864480234', -); -test( - macro, - '717897987691852588770249', - '-94906266', - '-68133017380747687822617864480234', -); -test( - macro, - '-717897987691852588770249', - '-94906266', - '68133017380747687822617864480234', -); -test( - macro, - '717897987691852588770249', - '1073741824', - '770837094750179348605289078194176', -); -test( - macro, - '-717897987691852588770249', - '1073741824', - '-770837094750179348605289078194176', -); -test( - macro, - '717897987691852588770249', - '-1073741824', - '-770837094750179348605289078194176', -); -test( - macro, - '-717897987691852588770249', - '-1073741824', - '770837094750179348605289078194176', -); -test( - macro, - '717897987691852588770249', - '51676101935731', - '37098169591420333175287767861722867019', -); -test( - macro, - '-717897987691852588770249', - '51676101935731', - '-37098169591420333175287767861722867019', -); -test( - macro, - '717897987691852588770249', - '-51676101935731', - '-37098169591420333175287767861722867019', -); -test( - macro, - '-717897987691852588770249', - '-51676101935731', - '37098169591420333175287767861722867019', -); -test( - macro, - '717897987691852588770249', - '717897987691852588770249', - '515377520732011331036461129765621272702107522001', -); -test( - macro, - '-717897987691852588770249', - '717897987691852588770249', - '-515377520732011331036461129765621272702107522001', -); -test( - macro, - '717897987691852588770249', - '-717897987691852588770249', - '-515377520732011331036461129765621272702107522001', -); -test( - macro, - '-717897987691852588770249', - '-717897987691852588770249', - '515377520732011331036461129765621272702107522001', -); diff --git a/test/src/integer/arithmetic/imuln.js b/test/src/integer/arithmetic/imuln.js deleted file mode 100644 index 45b98b3..0000000 --- a/test/src/integer/arithmetic/imuln.js +++ /dev/null @@ -1,1249 +0,0 @@ -import test from 'ava'; -import {parse, stringify, imuln} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const c = imuln(a, B); - t.is(stringify(a), C); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `imuln(${fmt(A)},${B}) = ${fmt(C)}`; - -test(macro, '0', 0, '0'); -test(macro, '0', 1, '0'); -test(macro, '0', -1, '0'); -test(macro, '0', 3, '0'); -test(macro, '0', -3, '0'); -test(macro, '0', 7, '0'); -test(macro, '0', -7, '0'); -test(macro, '0', 9, '0'); -test(macro, '0', -9, '0'); -test(macro, '0', 11, '0'); -test(macro, '0', -11, '0'); -test(macro, '0', 17, '0'); -test(macro, '0', -17, '0'); -test(macro, '0', 22, '0'); -test(macro, '0', -22, '0'); -test(macro, '0', 24, '0'); -test(macro, '0', -24, '0'); -test(macro, '0', 27, '0'); -test(macro, '0', -27, '0'); -test(macro, '0', 29, '0'); -test(macro, '0', -29, '0'); -test(macro, '0', 1234, '0'); -test(macro, '0', -1234, '0'); -test(macro, '0', 5678, '0'); -test(macro, '0', -5678, '0'); -test(macro, '0', 94906265, '0'); -test(macro, '0', -94906265, '0'); -test(macro, '0', 94906266, '0'); -test(macro, '0', -94906266, '0'); -test(macro, '0', 1073741824, '0'); -test(macro, '0', -1073741824, '0'); -test(macro, '0', 51676101935731, '0'); -test(macro, '0', -51676101935731, '0'); -test(macro, '1', 0, '0'); -test(macro, '-1', 0, '0'); -test(macro, '1', 1, '1'); -test(macro, '-1', 1, '-1'); -test(macro, '1', -1, '-1'); -test(macro, '-1', -1, '1'); -test(macro, '1', 3, '3'); -test(macro, '-1', 3, '-3'); -test(macro, '1', -3, '-3'); -test(macro, '-1', -3, '3'); -test(macro, '1', 7, '7'); -test(macro, '-1', 7, '-7'); -test(macro, '1', -7, '-7'); -test(macro, '-1', -7, '7'); -test(macro, '1', 9, '9'); -test(macro, '-1', 9, '-9'); -test(macro, '1', -9, '-9'); -test(macro, '-1', -9, '9'); -test(macro, '1', 11, '11'); -test(macro, '-1', 11, '-11'); -test(macro, '1', -11, '-11'); -test(macro, '-1', -11, '11'); -test(macro, '1', 17, '17'); -test(macro, '-1', 17, '-17'); -test(macro, '1', -17, '-17'); -test(macro, '-1', -17, '17'); -test(macro, '1', 22, '22'); -test(macro, '-1', 22, '-22'); -test(macro, '1', -22, '-22'); -test(macro, '-1', -22, '22'); -test(macro, '1', 24, '24'); -test(macro, '-1', 24, '-24'); -test(macro, '1', -24, '-24'); -test(macro, '-1', -24, '24'); -test(macro, '1', 27, '27'); -test(macro, '-1', 27, '-27'); -test(macro, '1', -27, '-27'); -test(macro, '-1', -27, '27'); -test(macro, '1', 29, '29'); -test(macro, '-1', 29, '-29'); -test(macro, '1', -29, '-29'); -test(macro, '-1', -29, '29'); -test(macro, '1', 1234, '1234'); -test(macro, '-1', 1234, '-1234'); -test(macro, '1', -1234, '-1234'); -test(macro, '-1', -1234, '1234'); -test(macro, '1', 5678, '5678'); -test(macro, '-1', 5678, '-5678'); -test(macro, '1', -5678, '-5678'); -test(macro, '-1', -5678, '5678'); -test(macro, '1', 94906265, '94906265'); -test(macro, '-1', 94906265, '-94906265'); -test(macro, '1', -94906265, '-94906265'); -test(macro, '-1', -94906265, '94906265'); -test(macro, '1', 94906266, '94906266'); -test(macro, '-1', 94906266, '-94906266'); -test(macro, '1', -94906266, '-94906266'); -test(macro, '-1', -94906266, '94906266'); -test(macro, '1', 1073741824, '1073741824'); -test(macro, '-1', 1073741824, '-1073741824'); -test(macro, '1', -1073741824, '-1073741824'); -test(macro, '-1', -1073741824, '1073741824'); -test(macro, '1', 51676101935731, '51676101935731'); -test(macro, '-1', 51676101935731, '-51676101935731'); -test(macro, '1', -51676101935731, '-51676101935731'); -test(macro, '-1', -51676101935731, '51676101935731'); -test(macro, '3', 0, '0'); -test(macro, '-3', 0, '0'); -test(macro, '3', 1, '3'); -test(macro, '-3', 1, '-3'); -test(macro, '3', -1, '-3'); -test(macro, '-3', -1, '3'); -test(macro, '3', 3, '9'); -test(macro, '-3', 3, '-9'); -test(macro, '3', -3, '-9'); -test(macro, '-3', -3, '9'); -test(macro, '3', 7, '21'); -test(macro, '-3', 7, '-21'); -test(macro, '3', -7, '-21'); -test(macro, '-3', -7, '21'); -test(macro, '3', 9, '27'); -test(macro, '-3', 9, '-27'); -test(macro, '3', -9, '-27'); -test(macro, '-3', -9, '27'); -test(macro, '3', 11, '33'); -test(macro, '-3', 11, '-33'); -test(macro, '3', -11, '-33'); -test(macro, '-3', -11, '33'); -test(macro, '3', 17, '51'); -test(macro, '-3', 17, '-51'); -test(macro, '3', -17, '-51'); -test(macro, '-3', -17, '51'); -test(macro, '3', 22, '66'); -test(macro, '-3', 22, '-66'); -test(macro, '3', -22, '-66'); -test(macro, '-3', -22, '66'); -test(macro, '3', 24, '72'); -test(macro, '-3', 24, '-72'); -test(macro, '3', -24, '-72'); -test(macro, '-3', -24, '72'); -test(macro, '3', 27, '81'); -test(macro, '-3', 27, '-81'); -test(macro, '3', -27, '-81'); -test(macro, '-3', -27, '81'); -test(macro, '3', 29, '87'); -test(macro, '-3', 29, '-87'); -test(macro, '3', -29, '-87'); -test(macro, '-3', -29, '87'); -test(macro, '3', 1234, '3702'); -test(macro, '-3', 1234, '-3702'); -test(macro, '3', -1234, '-3702'); -test(macro, '-3', -1234, '3702'); -test(macro, '3', 5678, '17034'); -test(macro, '-3', 5678, '-17034'); -test(macro, '3', -5678, '-17034'); -test(macro, '-3', -5678, '17034'); -test(macro, '3', 94906265, '284718795'); -test(macro, '-3', 94906265, '-284718795'); -test(macro, '3', -94906265, '-284718795'); -test(macro, '-3', -94906265, '284718795'); -test(macro, '3', 94906266, '284718798'); -test(macro, '-3', 94906266, '-284718798'); -test(macro, '3', -94906266, '-284718798'); -test(macro, '-3', -94906266, '284718798'); -test(macro, '3', 1073741824, '3221225472'); -test(macro, '-3', 1073741824, '-3221225472'); -test(macro, '3', -1073741824, '-3221225472'); -test(macro, '-3', -1073741824, '3221225472'); -test(macro, '3', 51676101935731, '155028305807193'); -test(macro, '-3', 51676101935731, '-155028305807193'); -test(macro, '3', -51676101935731, '-155028305807193'); -test(macro, '-3', -51676101935731, '155028305807193'); -test(macro, '7', 0, '0'); -test(macro, '-7', 0, '0'); -test(macro, '7', 1, '7'); -test(macro, '-7', 1, '-7'); -test(macro, '7', -1, '-7'); -test(macro, '-7', -1, '7'); -test(macro, '7', 3, '21'); -test(macro, '-7', 3, '-21'); -test(macro, '7', -3, '-21'); -test(macro, '-7', -3, '21'); -test(macro, '7', 7, '49'); -test(macro, '-7', 7, '-49'); -test(macro, '7', -7, '-49'); -test(macro, '-7', -7, '49'); -test(macro, '7', 9, '63'); -test(macro, '-7', 9, '-63'); -test(macro, '7', -9, '-63'); -test(macro, '-7', -9, '63'); -test(macro, '7', 11, '77'); -test(macro, '-7', 11, '-77'); -test(macro, '7', -11, '-77'); -test(macro, '-7', -11, '77'); -test(macro, '7', 17, '119'); -test(macro, '-7', 17, '-119'); -test(macro, '7', -17, '-119'); -test(macro, '-7', -17, '119'); -test(macro, '7', 22, '154'); -test(macro, '-7', 22, '-154'); -test(macro, '7', -22, '-154'); -test(macro, '-7', -22, '154'); -test(macro, '7', 24, '168'); -test(macro, '-7', 24, '-168'); -test(macro, '7', -24, '-168'); -test(macro, '-7', -24, '168'); -test(macro, '7', 27, '189'); -test(macro, '-7', 27, '-189'); -test(macro, '7', -27, '-189'); -test(macro, '-7', -27, '189'); -test(macro, '7', 29, '203'); -test(macro, '-7', 29, '-203'); -test(macro, '7', -29, '-203'); -test(macro, '-7', -29, '203'); -test(macro, '7', 1234, '8638'); -test(macro, '-7', 1234, '-8638'); -test(macro, '7', -1234, '-8638'); -test(macro, '-7', -1234, '8638'); -test(macro, '7', 5678, '39746'); -test(macro, '-7', 5678, '-39746'); -test(macro, '7', -5678, '-39746'); -test(macro, '-7', -5678, '39746'); -test(macro, '7', 94906265, '664343855'); -test(macro, '-7', 94906265, '-664343855'); -test(macro, '7', -94906265, '-664343855'); -test(macro, '-7', -94906265, '664343855'); -test(macro, '7', 94906266, '664343862'); -test(macro, '-7', 94906266, '-664343862'); -test(macro, '7', -94906266, '-664343862'); -test(macro, '-7', -94906266, '664343862'); -test(macro, '7', 1073741824, '7516192768'); -test(macro, '-7', 1073741824, '-7516192768'); -test(macro, '7', -1073741824, '-7516192768'); -test(macro, '-7', -1073741824, '7516192768'); -test(macro, '7', 51676101935731, '361732713550117'); -test(macro, '-7', 51676101935731, '-361732713550117'); -test(macro, '7', -51676101935731, '-361732713550117'); -test(macro, '-7', -51676101935731, '361732713550117'); -test(macro, '9', 0, '0'); -test(macro, '-9', 0, '0'); -test(macro, '9', 1, '9'); -test(macro, '-9', 1, '-9'); -test(macro, '9', -1, '-9'); -test(macro, '-9', -1, '9'); -test(macro, '9', 3, '27'); -test(macro, '-9', 3, '-27'); -test(macro, '9', -3, '-27'); -test(macro, '-9', -3, '27'); -test(macro, '9', 7, '63'); -test(macro, '-9', 7, '-63'); -test(macro, '9', -7, '-63'); -test(macro, '-9', -7, '63'); -test(macro, '9', 9, '81'); -test(macro, '-9', 9, '-81'); -test(macro, '9', -9, '-81'); -test(macro, '-9', -9, '81'); -test(macro, '9', 11, '99'); -test(macro, '-9', 11, '-99'); -test(macro, '9', -11, '-99'); -test(macro, '-9', -11, '99'); -test(macro, '9', 17, '153'); -test(macro, '-9', 17, '-153'); -test(macro, '9', -17, '-153'); -test(macro, '-9', -17, '153'); -test(macro, '9', 22, '198'); -test(macro, '-9', 22, '-198'); -test(macro, '9', -22, '-198'); -test(macro, '-9', -22, '198'); -test(macro, '9', 24, '216'); -test(macro, '-9', 24, '-216'); -test(macro, '9', -24, '-216'); -test(macro, '-9', -24, '216'); -test(macro, '9', 27, '243'); -test(macro, '-9', 27, '-243'); -test(macro, '9', -27, '-243'); -test(macro, '-9', -27, '243'); -test(macro, '9', 29, '261'); -test(macro, '-9', 29, '-261'); -test(macro, '9', -29, '-261'); -test(macro, '-9', -29, '261'); -test(macro, '9', 1234, '11106'); -test(macro, '-9', 1234, '-11106'); -test(macro, '9', -1234, '-11106'); -test(macro, '-9', -1234, '11106'); -test(macro, '9', 5678, '51102'); -test(macro, '-9', 5678, '-51102'); -test(macro, '9', -5678, '-51102'); -test(macro, '-9', -5678, '51102'); -test(macro, '9', 94906265, '854156385'); -test(macro, '-9', 94906265, '-854156385'); -test(macro, '9', -94906265, '-854156385'); -test(macro, '-9', -94906265, '854156385'); -test(macro, '9', 94906266, '854156394'); -test(macro, '-9', 94906266, '-854156394'); -test(macro, '9', -94906266, '-854156394'); -test(macro, '-9', -94906266, '854156394'); -test(macro, '9', 1073741824, '9663676416'); -test(macro, '-9', 1073741824, '-9663676416'); -test(macro, '9', -1073741824, '-9663676416'); -test(macro, '-9', -1073741824, '9663676416'); -test(macro, '9', 51676101935731, '465084917421579'); -test(macro, '-9', 51676101935731, '-465084917421579'); -test(macro, '9', -51676101935731, '-465084917421579'); -test(macro, '-9', -51676101935731, '465084917421579'); -test(macro, '11', 0, '0'); -test(macro, '-11', 0, '0'); -test(macro, '11', 1, '11'); -test(macro, '-11', 1, '-11'); -test(macro, '11', -1, '-11'); -test(macro, '-11', -1, '11'); -test(macro, '11', 3, '33'); -test(macro, '-11', 3, '-33'); -test(macro, '11', -3, '-33'); -test(macro, '-11', -3, '33'); -test(macro, '11', 7, '77'); -test(macro, '-11', 7, '-77'); -test(macro, '11', -7, '-77'); -test(macro, '-11', -7, '77'); -test(macro, '11', 9, '99'); -test(macro, '-11', 9, '-99'); -test(macro, '11', -9, '-99'); -test(macro, '-11', -9, '99'); -test(macro, '11', 11, '121'); -test(macro, '-11', 11, '-121'); -test(macro, '11', -11, '-121'); -test(macro, '-11', -11, '121'); -test(macro, '11', 17, '187'); -test(macro, '-11', 17, '-187'); -test(macro, '11', -17, '-187'); -test(macro, '-11', -17, '187'); -test(macro, '11', 22, '242'); -test(macro, '-11', 22, '-242'); -test(macro, '11', -22, '-242'); -test(macro, '-11', -22, '242'); -test(macro, '11', 24, '264'); -test(macro, '-11', 24, '-264'); -test(macro, '11', -24, '-264'); -test(macro, '-11', -24, '264'); -test(macro, '11', 27, '297'); -test(macro, '-11', 27, '-297'); -test(macro, '11', -27, '-297'); -test(macro, '-11', -27, '297'); -test(macro, '11', 29, '319'); -test(macro, '-11', 29, '-319'); -test(macro, '11', -29, '-319'); -test(macro, '-11', -29, '319'); -test(macro, '11', 1234, '13574'); -test(macro, '-11', 1234, '-13574'); -test(macro, '11', -1234, '-13574'); -test(macro, '-11', -1234, '13574'); -test(macro, '11', 5678, '62458'); -test(macro, '-11', 5678, '-62458'); -test(macro, '11', -5678, '-62458'); -test(macro, '-11', -5678, '62458'); -test(macro, '11', 94906265, '1043968915'); -test(macro, '-11', 94906265, '-1043968915'); -test(macro, '11', -94906265, '-1043968915'); -test(macro, '-11', -94906265, '1043968915'); -test(macro, '11', 94906266, '1043968926'); -test(macro, '-11', 94906266, '-1043968926'); -test(macro, '11', -94906266, '-1043968926'); -test(macro, '-11', -94906266, '1043968926'); -test(macro, '11', 1073741824, '11811160064'); -test(macro, '-11', 1073741824, '-11811160064'); -test(macro, '11', -1073741824, '-11811160064'); -test(macro, '-11', -1073741824, '11811160064'); -test(macro, '11', 51676101935731, '568437121293041'); -test(macro, '-11', 51676101935731, '-568437121293041'); -test(macro, '11', -51676101935731, '-568437121293041'); -test(macro, '-11', -51676101935731, '568437121293041'); -test(macro, '17', 0, '0'); -test(macro, '-17', 0, '0'); -test(macro, '17', 1, '17'); -test(macro, '-17', 1, '-17'); -test(macro, '17', -1, '-17'); -test(macro, '-17', -1, '17'); -test(macro, '17', 3, '51'); -test(macro, '-17', 3, '-51'); -test(macro, '17', -3, '-51'); -test(macro, '-17', -3, '51'); -test(macro, '17', 7, '119'); -test(macro, '-17', 7, '-119'); -test(macro, '17', -7, '-119'); -test(macro, '-17', -7, '119'); -test(macro, '17', 9, '153'); -test(macro, '-17', 9, '-153'); -test(macro, '17', -9, '-153'); -test(macro, '-17', -9, '153'); -test(macro, '17', 11, '187'); -test(macro, '-17', 11, '-187'); -test(macro, '17', -11, '-187'); -test(macro, '-17', -11, '187'); -test(macro, '17', 17, '289'); -test(macro, '-17', 17, '-289'); -test(macro, '17', -17, '-289'); -test(macro, '-17', -17, '289'); -test(macro, '17', 22, '374'); -test(macro, '-17', 22, '-374'); -test(macro, '17', -22, '-374'); -test(macro, '-17', -22, '374'); -test(macro, '17', 24, '408'); -test(macro, '-17', 24, '-408'); -test(macro, '17', -24, '-408'); -test(macro, '-17', -24, '408'); -test(macro, '17', 27, '459'); -test(macro, '-17', 27, '-459'); -test(macro, '17', -27, '-459'); -test(macro, '-17', -27, '459'); -test(macro, '17', 29, '493'); -test(macro, '-17', 29, '-493'); -test(macro, '17', -29, '-493'); -test(macro, '-17', -29, '493'); -test(macro, '17', 1234, '20978'); -test(macro, '-17', 1234, '-20978'); -test(macro, '17', -1234, '-20978'); -test(macro, '-17', -1234, '20978'); -test(macro, '17', 5678, '96526'); -test(macro, '-17', 5678, '-96526'); -test(macro, '17', -5678, '-96526'); -test(macro, '-17', -5678, '96526'); -test(macro, '17', 94906265, '1613406505'); -test(macro, '-17', 94906265, '-1613406505'); -test(macro, '17', -94906265, '-1613406505'); -test(macro, '-17', -94906265, '1613406505'); -test(macro, '17', 94906266, '1613406522'); -test(macro, '-17', 94906266, '-1613406522'); -test(macro, '17', -94906266, '-1613406522'); -test(macro, '-17', -94906266, '1613406522'); -test(macro, '17', 1073741824, '18253611008'); -test(macro, '-17', 1073741824, '-18253611008'); -test(macro, '17', -1073741824, '-18253611008'); -test(macro, '-17', -1073741824, '18253611008'); -test(macro, '17', 51676101935731, '878493732907427'); -test(macro, '-17', 51676101935731, '-878493732907427'); -test(macro, '17', -51676101935731, '-878493732907427'); -test(macro, '-17', -51676101935731, '878493732907427'); -test(macro, '22', 0, '0'); -test(macro, '-22', 0, '0'); -test(macro, '22', 1, '22'); -test(macro, '-22', 1, '-22'); -test(macro, '22', -1, '-22'); -test(macro, '-22', -1, '22'); -test(macro, '22', 3, '66'); -test(macro, '-22', 3, '-66'); -test(macro, '22', -3, '-66'); -test(macro, '-22', -3, '66'); -test(macro, '22', 7, '154'); -test(macro, '-22', 7, '-154'); -test(macro, '22', -7, '-154'); -test(macro, '-22', -7, '154'); -test(macro, '22', 9, '198'); -test(macro, '-22', 9, '-198'); -test(macro, '22', -9, '-198'); -test(macro, '-22', -9, '198'); -test(macro, '22', 11, '242'); -test(macro, '-22', 11, '-242'); -test(macro, '22', -11, '-242'); -test(macro, '-22', -11, '242'); -test(macro, '22', 17, '374'); -test(macro, '-22', 17, '-374'); -test(macro, '22', -17, '-374'); -test(macro, '-22', -17, '374'); -test(macro, '22', 22, '484'); -test(macro, '-22', 22, '-484'); -test(macro, '22', -22, '-484'); -test(macro, '-22', -22, '484'); -test(macro, '22', 24, '528'); -test(macro, '-22', 24, '-528'); -test(macro, '22', -24, '-528'); -test(macro, '-22', -24, '528'); -test(macro, '22', 27, '594'); -test(macro, '-22', 27, '-594'); -test(macro, '22', -27, '-594'); -test(macro, '-22', -27, '594'); -test(macro, '22', 29, '638'); -test(macro, '-22', 29, '-638'); -test(macro, '22', -29, '-638'); -test(macro, '-22', -29, '638'); -test(macro, '22', 1234, '27148'); -test(macro, '-22', 1234, '-27148'); -test(macro, '22', -1234, '-27148'); -test(macro, '-22', -1234, '27148'); -test(macro, '22', 5678, '124916'); -test(macro, '-22', 5678, '-124916'); -test(macro, '22', -5678, '-124916'); -test(macro, '-22', -5678, '124916'); -test(macro, '22', 94906265, '2087937830'); -test(macro, '-22', 94906265, '-2087937830'); -test(macro, '22', -94906265, '-2087937830'); -test(macro, '-22', -94906265, '2087937830'); -test(macro, '22', 94906266, '2087937852'); -test(macro, '-22', 94906266, '-2087937852'); -test(macro, '22', -94906266, '-2087937852'); -test(macro, '-22', -94906266, '2087937852'); -test(macro, '22', 1073741824, '23622320128'); -test(macro, '-22', 1073741824, '-23622320128'); -test(macro, '22', -1073741824, '-23622320128'); -test(macro, '-22', -1073741824, '23622320128'); -test(macro, '22', 51676101935731, '1136874242586082'); -test(macro, '-22', 51676101935731, '-1136874242586082'); -test(macro, '22', -51676101935731, '-1136874242586082'); -test(macro, '-22', -51676101935731, '1136874242586082'); -test(macro, '24', 0, '0'); -test(macro, '-24', 0, '0'); -test(macro, '24', 1, '24'); -test(macro, '-24', 1, '-24'); -test(macro, '24', -1, '-24'); -test(macro, '-24', -1, '24'); -test(macro, '24', 3, '72'); -test(macro, '-24', 3, '-72'); -test(macro, '24', -3, '-72'); -test(macro, '-24', -3, '72'); -test(macro, '24', 7, '168'); -test(macro, '-24', 7, '-168'); -test(macro, '24', -7, '-168'); -test(macro, '-24', -7, '168'); -test(macro, '24', 9, '216'); -test(macro, '-24', 9, '-216'); -test(macro, '24', -9, '-216'); -test(macro, '-24', -9, '216'); -test(macro, '24', 11, '264'); -test(macro, '-24', 11, '-264'); -test(macro, '24', -11, '-264'); -test(macro, '-24', -11, '264'); -test(macro, '24', 17, '408'); -test(macro, '-24', 17, '-408'); -test(macro, '24', -17, '-408'); -test(macro, '-24', -17, '408'); -test(macro, '24', 22, '528'); -test(macro, '-24', 22, '-528'); -test(macro, '24', -22, '-528'); -test(macro, '-24', -22, '528'); -test(macro, '24', 24, '576'); -test(macro, '-24', 24, '-576'); -test(macro, '24', -24, '-576'); -test(macro, '-24', -24, '576'); -test(macro, '24', 27, '648'); -test(macro, '-24', 27, '-648'); -test(macro, '24', -27, '-648'); -test(macro, '-24', -27, '648'); -test(macro, '24', 29, '696'); -test(macro, '-24', 29, '-696'); -test(macro, '24', -29, '-696'); -test(macro, '-24', -29, '696'); -test(macro, '24', 1234, '29616'); -test(macro, '-24', 1234, '-29616'); -test(macro, '24', -1234, '-29616'); -test(macro, '-24', -1234, '29616'); -test(macro, '24', 5678, '136272'); -test(macro, '-24', 5678, '-136272'); -test(macro, '24', -5678, '-136272'); -test(macro, '-24', -5678, '136272'); -test(macro, '24', 94906265, '2277750360'); -test(macro, '-24', 94906265, '-2277750360'); -test(macro, '24', -94906265, '-2277750360'); -test(macro, '-24', -94906265, '2277750360'); -test(macro, '24', 94906266, '2277750384'); -test(macro, '-24', 94906266, '-2277750384'); -test(macro, '24', -94906266, '-2277750384'); -test(macro, '-24', -94906266, '2277750384'); -test(macro, '24', 1073741824, '25769803776'); -test(macro, '-24', 1073741824, '-25769803776'); -test(macro, '24', -1073741824, '-25769803776'); -test(macro, '-24', -1073741824, '25769803776'); -test(macro, '24', 51676101935731, '1240226446457544'); -test(macro, '-24', 51676101935731, '-1240226446457544'); -test(macro, '24', -51676101935731, '-1240226446457544'); -test(macro, '-24', -51676101935731, '1240226446457544'); -test(macro, '27', 0, '0'); -test(macro, '-27', 0, '0'); -test(macro, '27', 1, '27'); -test(macro, '-27', 1, '-27'); -test(macro, '27', -1, '-27'); -test(macro, '-27', -1, '27'); -test(macro, '27', 3, '81'); -test(macro, '-27', 3, '-81'); -test(macro, '27', -3, '-81'); -test(macro, '-27', -3, '81'); -test(macro, '27', 7, '189'); -test(macro, '-27', 7, '-189'); -test(macro, '27', -7, '-189'); -test(macro, '-27', -7, '189'); -test(macro, '27', 9, '243'); -test(macro, '-27', 9, '-243'); -test(macro, '27', -9, '-243'); -test(macro, '-27', -9, '243'); -test(macro, '27', 11, '297'); -test(macro, '-27', 11, '-297'); -test(macro, '27', -11, '-297'); -test(macro, '-27', -11, '297'); -test(macro, '27', 17, '459'); -test(macro, '-27', 17, '-459'); -test(macro, '27', -17, '-459'); -test(macro, '-27', -17, '459'); -test(macro, '27', 22, '594'); -test(macro, '-27', 22, '-594'); -test(macro, '27', -22, '-594'); -test(macro, '-27', -22, '594'); -test(macro, '27', 24, '648'); -test(macro, '-27', 24, '-648'); -test(macro, '27', -24, '-648'); -test(macro, '-27', -24, '648'); -test(macro, '27', 27, '729'); -test(macro, '-27', 27, '-729'); -test(macro, '27', -27, '-729'); -test(macro, '-27', -27, '729'); -test(macro, '27', 29, '783'); -test(macro, '-27', 29, '-783'); -test(macro, '27', -29, '-783'); -test(macro, '-27', -29, '783'); -test(macro, '27', 1234, '33318'); -test(macro, '-27', 1234, '-33318'); -test(macro, '27', -1234, '-33318'); -test(macro, '-27', -1234, '33318'); -test(macro, '27', 5678, '153306'); -test(macro, '-27', 5678, '-153306'); -test(macro, '27', -5678, '-153306'); -test(macro, '-27', -5678, '153306'); -test(macro, '27', 94906265, '2562469155'); -test(macro, '-27', 94906265, '-2562469155'); -test(macro, '27', -94906265, '-2562469155'); -test(macro, '-27', -94906265, '2562469155'); -test(macro, '27', 94906266, '2562469182'); -test(macro, '-27', 94906266, '-2562469182'); -test(macro, '27', -94906266, '-2562469182'); -test(macro, '-27', -94906266, '2562469182'); -test(macro, '27', 1073741824, '28991029248'); -test(macro, '-27', 1073741824, '-28991029248'); -test(macro, '27', -1073741824, '-28991029248'); -test(macro, '-27', -1073741824, '28991029248'); -test(macro, '27', 51676101935731, '1395254752264737'); -test(macro, '-27', 51676101935731, '-1395254752264737'); -test(macro, '27', -51676101935731, '-1395254752264737'); -test(macro, '-27', -51676101935731, '1395254752264737'); -test(macro, '29', 0, '0'); -test(macro, '-29', 0, '0'); -test(macro, '29', 1, '29'); -test(macro, '-29', 1, '-29'); -test(macro, '29', -1, '-29'); -test(macro, '-29', -1, '29'); -test(macro, '29', 3, '87'); -test(macro, '-29', 3, '-87'); -test(macro, '29', -3, '-87'); -test(macro, '-29', -3, '87'); -test(macro, '29', 7, '203'); -test(macro, '-29', 7, '-203'); -test(macro, '29', -7, '-203'); -test(macro, '-29', -7, '203'); -test(macro, '29', 9, '261'); -test(macro, '-29', 9, '-261'); -test(macro, '29', -9, '-261'); -test(macro, '-29', -9, '261'); -test(macro, '29', 11, '319'); -test(macro, '-29', 11, '-319'); -test(macro, '29', -11, '-319'); -test(macro, '-29', -11, '319'); -test(macro, '29', 17, '493'); -test(macro, '-29', 17, '-493'); -test(macro, '29', -17, '-493'); -test(macro, '-29', -17, '493'); -test(macro, '29', 22, '638'); -test(macro, '-29', 22, '-638'); -test(macro, '29', -22, '-638'); -test(macro, '-29', -22, '638'); -test(macro, '29', 24, '696'); -test(macro, '-29', 24, '-696'); -test(macro, '29', -24, '-696'); -test(macro, '-29', -24, '696'); -test(macro, '29', 27, '783'); -test(macro, '-29', 27, '-783'); -test(macro, '29', -27, '-783'); -test(macro, '-29', -27, '783'); -test(macro, '29', 29, '841'); -test(macro, '-29', 29, '-841'); -test(macro, '29', -29, '-841'); -test(macro, '-29', -29, '841'); -test(macro, '29', 1234, '35786'); -test(macro, '-29', 1234, '-35786'); -test(macro, '29', -1234, '-35786'); -test(macro, '-29', -1234, '35786'); -test(macro, '29', 5678, '164662'); -test(macro, '-29', 5678, '-164662'); -test(macro, '29', -5678, '-164662'); -test(macro, '-29', -5678, '164662'); -test(macro, '29', 94906265, '2752281685'); -test(macro, '-29', 94906265, '-2752281685'); -test(macro, '29', -94906265, '-2752281685'); -test(macro, '-29', -94906265, '2752281685'); -test(macro, '29', 94906266, '2752281714'); -test(macro, '-29', 94906266, '-2752281714'); -test(macro, '29', -94906266, '-2752281714'); -test(macro, '-29', -94906266, '2752281714'); -test(macro, '29', 1073741824, '31138512896'); -test(macro, '-29', 1073741824, '-31138512896'); -test(macro, '29', -1073741824, '-31138512896'); -test(macro, '-29', -1073741824, '31138512896'); -test(macro, '29', 51676101935731, '1498606956136199'); -test(macro, '-29', 51676101935731, '-1498606956136199'); -test(macro, '29', -51676101935731, '-1498606956136199'); -test(macro, '-29', -51676101935731, '1498606956136199'); -test(macro, '1234', 0, '0'); -test(macro, '-1234', 0, '0'); -test(macro, '1234', 1, '1234'); -test(macro, '-1234', 1, '-1234'); -test(macro, '1234', -1, '-1234'); -test(macro, '-1234', -1, '1234'); -test(macro, '1234', 3, '3702'); -test(macro, '-1234', 3, '-3702'); -test(macro, '1234', -3, '-3702'); -test(macro, '-1234', -3, '3702'); -test(macro, '1234', 7, '8638'); -test(macro, '-1234', 7, '-8638'); -test(macro, '1234', -7, '-8638'); -test(macro, '-1234', -7, '8638'); -test(macro, '1234', 9, '11106'); -test(macro, '-1234', 9, '-11106'); -test(macro, '1234', -9, '-11106'); -test(macro, '-1234', -9, '11106'); -test(macro, '1234', 11, '13574'); -test(macro, '-1234', 11, '-13574'); -test(macro, '1234', -11, '-13574'); -test(macro, '-1234', -11, '13574'); -test(macro, '1234', 17, '20978'); -test(macro, '-1234', 17, '-20978'); -test(macro, '1234', -17, '-20978'); -test(macro, '-1234', -17, '20978'); -test(macro, '1234', 22, '27148'); -test(macro, '-1234', 22, '-27148'); -test(macro, '1234', -22, '-27148'); -test(macro, '-1234', -22, '27148'); -test(macro, '1234', 24, '29616'); -test(macro, '-1234', 24, '-29616'); -test(macro, '1234', -24, '-29616'); -test(macro, '-1234', -24, '29616'); -test(macro, '1234', 27, '33318'); -test(macro, '-1234', 27, '-33318'); -test(macro, '1234', -27, '-33318'); -test(macro, '-1234', -27, '33318'); -test(macro, '1234', 29, '35786'); -test(macro, '-1234', 29, '-35786'); -test(macro, '1234', -29, '-35786'); -test(macro, '-1234', -29, '35786'); -test(macro, '1234', 1234, '1522756'); -test(macro, '-1234', 1234, '-1522756'); -test(macro, '1234', -1234, '-1522756'); -test(macro, '-1234', -1234, '1522756'); -test(macro, '1234', 5678, '7006652'); -test(macro, '-1234', 5678, '-7006652'); -test(macro, '1234', -5678, '-7006652'); -test(macro, '-1234', -5678, '7006652'); -test(macro, '1234', 94906265, '117114331010'); -test(macro, '-1234', 94906265, '-117114331010'); -test(macro, '1234', -94906265, '-117114331010'); -test(macro, '-1234', -94906265, '117114331010'); -test(macro, '1234', 94906266, '117114332244'); -test(macro, '-1234', 94906266, '-117114332244'); -test(macro, '1234', -94906266, '-117114332244'); -test(macro, '-1234', -94906266, '117114332244'); -test(macro, '1234', 1073741824, '1324997410816'); -test(macro, '-1234', 1073741824, '-1324997410816'); -test(macro, '1234', -1073741824, '-1324997410816'); -test(macro, '-1234', -1073741824, '1324997410816'); -test(macro, '1234', 51676101935731, '63768309788692054'); -test(macro, '-1234', 51676101935731, '-63768309788692054'); -test(macro, '1234', -51676101935731, '-63768309788692054'); -test(macro, '-1234', -51676101935731, '63768309788692054'); -test(macro, '5678', 0, '0'); -test(macro, '-5678', 0, '0'); -test(macro, '5678', 1, '5678'); -test(macro, '-5678', 1, '-5678'); -test(macro, '5678', -1, '-5678'); -test(macro, '-5678', -1, '5678'); -test(macro, '5678', 3, '17034'); -test(macro, '-5678', 3, '-17034'); -test(macro, '5678', -3, '-17034'); -test(macro, '-5678', -3, '17034'); -test(macro, '5678', 7, '39746'); -test(macro, '-5678', 7, '-39746'); -test(macro, '5678', -7, '-39746'); -test(macro, '-5678', -7, '39746'); -test(macro, '5678', 9, '51102'); -test(macro, '-5678', 9, '-51102'); -test(macro, '5678', -9, '-51102'); -test(macro, '-5678', -9, '51102'); -test(macro, '5678', 11, '62458'); -test(macro, '-5678', 11, '-62458'); -test(macro, '5678', -11, '-62458'); -test(macro, '-5678', -11, '62458'); -test(macro, '5678', 17, '96526'); -test(macro, '-5678', 17, '-96526'); -test(macro, '5678', -17, '-96526'); -test(macro, '-5678', -17, '96526'); -test(macro, '5678', 22, '124916'); -test(macro, '-5678', 22, '-124916'); -test(macro, '5678', -22, '-124916'); -test(macro, '-5678', -22, '124916'); -test(macro, '5678', 24, '136272'); -test(macro, '-5678', 24, '-136272'); -test(macro, '5678', -24, '-136272'); -test(macro, '-5678', -24, '136272'); -test(macro, '5678', 27, '153306'); -test(macro, '-5678', 27, '-153306'); -test(macro, '5678', -27, '-153306'); -test(macro, '-5678', -27, '153306'); -test(macro, '5678', 29, '164662'); -test(macro, '-5678', 29, '-164662'); -test(macro, '5678', -29, '-164662'); -test(macro, '-5678', -29, '164662'); -test(macro, '5678', 1234, '7006652'); -test(macro, '-5678', 1234, '-7006652'); -test(macro, '5678', -1234, '-7006652'); -test(macro, '-5678', -1234, '7006652'); -test(macro, '5678', 5678, '32239684'); -test(macro, '-5678', 5678, '-32239684'); -test(macro, '5678', -5678, '-32239684'); -test(macro, '-5678', -5678, '32239684'); -test(macro, '5678', 94906265, '538877772670'); -test(macro, '-5678', 94906265, '-538877772670'); -test(macro, '5678', -94906265, '-538877772670'); -test(macro, '-5678', -94906265, '538877772670'); -test(macro, '5678', 94906266, '538877778348'); -test(macro, '-5678', 94906266, '-538877778348'); -test(macro, '5678', -94906266, '-538877778348'); -test(macro, '-5678', -94906266, '538877778348'); -test(macro, '5678', 1073741824, '6096706076672'); -test(macro, '-5678', 1073741824, '-6096706076672'); -test(macro, '5678', -1073741824, '-6096706076672'); -test(macro, '-5678', -1073741824, '6096706076672'); -test(macro, '5678', 51676101935731, '293416906791080618'); -test(macro, '-5678', 51676101935731, '-293416906791080618'); -test(macro, '5678', -51676101935731, '-293416906791080618'); -test(macro, '-5678', -51676101935731, '293416906791080618'); -test(macro, '94906265', 0, '0'); -test(macro, '-94906265', 0, '0'); -test(macro, '94906265', 1, '94906265'); -test(macro, '-94906265', 1, '-94906265'); -test(macro, '94906265', -1, '-94906265'); -test(macro, '-94906265', -1, '94906265'); -test(macro, '94906265', 3, '284718795'); -test(macro, '-94906265', 3, '-284718795'); -test(macro, '94906265', -3, '-284718795'); -test(macro, '-94906265', -3, '284718795'); -test(macro, '94906265', 7, '664343855'); -test(macro, '-94906265', 7, '-664343855'); -test(macro, '94906265', -7, '-664343855'); -test(macro, '-94906265', -7, '664343855'); -test(macro, '94906265', 9, '854156385'); -test(macro, '-94906265', 9, '-854156385'); -test(macro, '94906265', -9, '-854156385'); -test(macro, '-94906265', -9, '854156385'); -test(macro, '94906265', 11, '1043968915'); -test(macro, '-94906265', 11, '-1043968915'); -test(macro, '94906265', -11, '-1043968915'); -test(macro, '-94906265', -11, '1043968915'); -test(macro, '94906265', 17, '1613406505'); -test(macro, '-94906265', 17, '-1613406505'); -test(macro, '94906265', -17, '-1613406505'); -test(macro, '-94906265', -17, '1613406505'); -test(macro, '94906265', 22, '2087937830'); -test(macro, '-94906265', 22, '-2087937830'); -test(macro, '94906265', -22, '-2087937830'); -test(macro, '-94906265', -22, '2087937830'); -test(macro, '94906265', 24, '2277750360'); -test(macro, '-94906265', 24, '-2277750360'); -test(macro, '94906265', -24, '-2277750360'); -test(macro, '-94906265', -24, '2277750360'); -test(macro, '94906265', 27, '2562469155'); -test(macro, '-94906265', 27, '-2562469155'); -test(macro, '94906265', -27, '-2562469155'); -test(macro, '-94906265', -27, '2562469155'); -test(macro, '94906265', 29, '2752281685'); -test(macro, '-94906265', 29, '-2752281685'); -test(macro, '94906265', -29, '-2752281685'); -test(macro, '-94906265', -29, '2752281685'); -test(macro, '94906265', 1234, '117114331010'); -test(macro, '-94906265', 1234, '-117114331010'); -test(macro, '94906265', -1234, '-117114331010'); -test(macro, '-94906265', -1234, '117114331010'); -test(macro, '94906265', 5678, '538877772670'); -test(macro, '-94906265', 5678, '-538877772670'); -test(macro, '94906265', -5678, '-538877772670'); -test(macro, '-94906265', -5678, '538877772670'); -test(macro, '94906265', 94906265, '9007199136250225'); -test(macro, '-94906265', 94906265, '-9007199136250225'); -test(macro, '94906265', -94906265, '-9007199136250225'); -test(macro, '-94906265', -94906265, '9007199136250225'); -test(macro, '94906265', 94906266, '9007199231156490'); -test(macro, '-94906265', 94906266, '-9007199231156490'); -test(macro, '94906265', -94906266, '-9007199231156490'); -test(macro, '-94906265', -94906266, '9007199231156490'); -test(macro, '94906265', 1073741824, '101904826090127360'); -test(macro, '-94906265', 1073741824, '-101904826090127360'); -test(macro, '94906265', -1073741824, '-101904826090127360'); -test(macro, '-94906265', -1073741824, '101904826090127360'); -test(macro, '94906265', 51676101935731, '4904385824479499254715'); -test(macro, '-94906265', 51676101935731, '-4904385824479499254715'); -test(macro, '94906265', -51676101935731, '-4904385824479499254715'); -test(macro, '-94906265', -51676101935731, '4904385824479499254715'); -test(macro, '94906266', 0, '0'); -test(macro, '-94906266', 0, '0'); -test(macro, '94906266', 1, '94906266'); -test(macro, '-94906266', 1, '-94906266'); -test(macro, '94906266', -1, '-94906266'); -test(macro, '-94906266', -1, '94906266'); -test(macro, '94906266', 3, '284718798'); -test(macro, '-94906266', 3, '-284718798'); -test(macro, '94906266', -3, '-284718798'); -test(macro, '-94906266', -3, '284718798'); -test(macro, '94906266', 7, '664343862'); -test(macro, '-94906266', 7, '-664343862'); -test(macro, '94906266', -7, '-664343862'); -test(macro, '-94906266', -7, '664343862'); -test(macro, '94906266', 9, '854156394'); -test(macro, '-94906266', 9, '-854156394'); -test(macro, '94906266', -9, '-854156394'); -test(macro, '-94906266', -9, '854156394'); -test(macro, '94906266', 11, '1043968926'); -test(macro, '-94906266', 11, '-1043968926'); -test(macro, '94906266', -11, '-1043968926'); -test(macro, '-94906266', -11, '1043968926'); -test(macro, '94906266', 17, '1613406522'); -test(macro, '-94906266', 17, '-1613406522'); -test(macro, '94906266', -17, '-1613406522'); -test(macro, '-94906266', -17, '1613406522'); -test(macro, '94906266', 22, '2087937852'); -test(macro, '-94906266', 22, '-2087937852'); -test(macro, '94906266', -22, '-2087937852'); -test(macro, '-94906266', -22, '2087937852'); -test(macro, '94906266', 24, '2277750384'); -test(macro, '-94906266', 24, '-2277750384'); -test(macro, '94906266', -24, '-2277750384'); -test(macro, '-94906266', -24, '2277750384'); -test(macro, '94906266', 27, '2562469182'); -test(macro, '-94906266', 27, '-2562469182'); -test(macro, '94906266', -27, '-2562469182'); -test(macro, '-94906266', -27, '2562469182'); -test(macro, '94906266', 29, '2752281714'); -test(macro, '-94906266', 29, '-2752281714'); -test(macro, '94906266', -29, '-2752281714'); -test(macro, '-94906266', -29, '2752281714'); -test(macro, '94906266', 1234, '117114332244'); -test(macro, '-94906266', 1234, '-117114332244'); -test(macro, '94906266', -1234, '-117114332244'); -test(macro, '-94906266', -1234, '117114332244'); -test(macro, '94906266', 5678, '538877778348'); -test(macro, '-94906266', 5678, '-538877778348'); -test(macro, '94906266', -5678, '-538877778348'); -test(macro, '-94906266', -5678, '538877778348'); -test(macro, '94906266', 94906265, '9007199231156490'); -test(macro, '-94906266', 94906265, '-9007199231156490'); -test(macro, '94906266', -94906265, '-9007199231156490'); -test(macro, '-94906266', -94906265, '9007199231156490'); -test(macro, '94906266', 94906266, '9007199326062756'); -test(macro, '-94906266', 94906266, '-9007199326062756'); -test(macro, '94906266', -94906266, '-9007199326062756'); -test(macro, '-94906266', -94906266, '9007199326062756'); -test(macro, '94906266', 1073741824, '101904827163869184'); -test(macro, '-94906266', 1073741824, '-101904827163869184'); -test(macro, '94906266', -1073741824, '-101904827163869184'); -test(macro, '-94906266', -1073741824, '101904827163869184'); -test(macro, '94906266', 51676101935731, '4904385876155601190446'); -test(macro, '-94906266', 51676101935731, '-4904385876155601190446'); -test(macro, '94906266', -51676101935731, '-4904385876155601190446'); -test(macro, '-94906266', -51676101935731, '4904385876155601190446'); -test(macro, '1073741824', 0, '0'); -test(macro, '-1073741824', 0, '0'); -test(macro, '1073741824', 1, '1073741824'); -test(macro, '-1073741824', 1, '-1073741824'); -test(macro, '1073741824', -1, '-1073741824'); -test(macro, '-1073741824', -1, '1073741824'); -test(macro, '1073741824', 3, '3221225472'); -test(macro, '-1073741824', 3, '-3221225472'); -test(macro, '1073741824', -3, '-3221225472'); -test(macro, '-1073741824', -3, '3221225472'); -test(macro, '1073741824', 7, '7516192768'); -test(macro, '-1073741824', 7, '-7516192768'); -test(macro, '1073741824', -7, '-7516192768'); -test(macro, '-1073741824', -7, '7516192768'); -test(macro, '1073741824', 9, '9663676416'); -test(macro, '-1073741824', 9, '-9663676416'); -test(macro, '1073741824', -9, '-9663676416'); -test(macro, '-1073741824', -9, '9663676416'); -test(macro, '1073741824', 11, '11811160064'); -test(macro, '-1073741824', 11, '-11811160064'); -test(macro, '1073741824', -11, '-11811160064'); -test(macro, '-1073741824', -11, '11811160064'); -test(macro, '1073741824', 17, '18253611008'); -test(macro, '-1073741824', 17, '-18253611008'); -test(macro, '1073741824', -17, '-18253611008'); -test(macro, '-1073741824', -17, '18253611008'); -test(macro, '1073741824', 22, '23622320128'); -test(macro, '-1073741824', 22, '-23622320128'); -test(macro, '1073741824', -22, '-23622320128'); -test(macro, '-1073741824', -22, '23622320128'); -test(macro, '1073741824', 24, '25769803776'); -test(macro, '-1073741824', 24, '-25769803776'); -test(macro, '1073741824', -24, '-25769803776'); -test(macro, '-1073741824', -24, '25769803776'); -test(macro, '1073741824', 27, '28991029248'); -test(macro, '-1073741824', 27, '-28991029248'); -test(macro, '1073741824', -27, '-28991029248'); -test(macro, '-1073741824', -27, '28991029248'); -test(macro, '1073741824', 29, '31138512896'); -test(macro, '-1073741824', 29, '-31138512896'); -test(macro, '1073741824', -29, '-31138512896'); -test(macro, '-1073741824', -29, '31138512896'); -test(macro, '1073741824', 1234, '1324997410816'); -test(macro, '-1073741824', 1234, '-1324997410816'); -test(macro, '1073741824', -1234, '-1324997410816'); -test(macro, '-1073741824', -1234, '1324997410816'); -test(macro, '1073741824', 5678, '6096706076672'); -test(macro, '-1073741824', 5678, '-6096706076672'); -test(macro, '1073741824', -5678, '-6096706076672'); -test(macro, '-1073741824', -5678, '6096706076672'); -test(macro, '1073741824', 94906265, '101904826090127360'); -test(macro, '-1073741824', 94906265, '-101904826090127360'); -test(macro, '1073741824', -94906265, '-101904826090127360'); -test(macro, '-1073741824', -94906265, '101904826090127360'); -test(macro, '1073741824', 94906266, '101904827163869184'); -test(macro, '-1073741824', 94906266, '-101904827163869184'); -test(macro, '1073741824', -94906266, '-101904827163869184'); -test(macro, '-1073741824', -94906266, '101904827163869184'); -test(macro, '1073741824', 1073741824, '1152921504606846976'); -test(macro, '-1073741824', 1073741824, '-1152921504606846976'); -test(macro, '1073741824', -1073741824, '-1152921504606846976'); -test(macro, '-1073741824', -1073741824, '1152921504606846976'); -test(macro, '1073741824', 51676101935731, '55486791949681734713344'); -test(macro, '-1073741824', 51676101935731, '-55486791949681734713344'); -test(macro, '1073741824', -51676101935731, '-55486791949681734713344'); -test(macro, '-1073741824', -51676101935731, '55486791949681734713344'); -test(macro, '51676101935731', 0, '0'); -test(macro, '-51676101935731', 0, '0'); -test(macro, '51676101935731', 1, '51676101935731'); -test(macro, '-51676101935731', 1, '-51676101935731'); -test(macro, '51676101935731', -1, '-51676101935731'); -test(macro, '-51676101935731', -1, '51676101935731'); -test(macro, '51676101935731', 3, '155028305807193'); -test(macro, '-51676101935731', 3, '-155028305807193'); -test(macro, '51676101935731', -3, '-155028305807193'); -test(macro, '-51676101935731', -3, '155028305807193'); -test(macro, '51676101935731', 7, '361732713550117'); -test(macro, '-51676101935731', 7, '-361732713550117'); -test(macro, '51676101935731', -7, '-361732713550117'); -test(macro, '-51676101935731', -7, '361732713550117'); -test(macro, '51676101935731', 9, '465084917421579'); -test(macro, '-51676101935731', 9, '-465084917421579'); -test(macro, '51676101935731', -9, '-465084917421579'); -test(macro, '-51676101935731', -9, '465084917421579'); -test(macro, '51676101935731', 11, '568437121293041'); -test(macro, '-51676101935731', 11, '-568437121293041'); -test(macro, '51676101935731', -11, '-568437121293041'); -test(macro, '-51676101935731', -11, '568437121293041'); -test(macro, '51676101935731', 17, '878493732907427'); -test(macro, '-51676101935731', 17, '-878493732907427'); -test(macro, '51676101935731', -17, '-878493732907427'); -test(macro, '-51676101935731', -17, '878493732907427'); -test(macro, '51676101935731', 22, '1136874242586082'); -test(macro, '-51676101935731', 22, '-1136874242586082'); -test(macro, '51676101935731', -22, '-1136874242586082'); -test(macro, '-51676101935731', -22, '1136874242586082'); -test(macro, '51676101935731', 24, '1240226446457544'); -test(macro, '-51676101935731', 24, '-1240226446457544'); -test(macro, '51676101935731', -24, '-1240226446457544'); -test(macro, '-51676101935731', -24, '1240226446457544'); -test(macro, '51676101935731', 27, '1395254752264737'); -test(macro, '-51676101935731', 27, '-1395254752264737'); -test(macro, '51676101935731', -27, '-1395254752264737'); -test(macro, '-51676101935731', -27, '1395254752264737'); -test(macro, '51676101935731', 29, '1498606956136199'); -test(macro, '-51676101935731', 29, '-1498606956136199'); -test(macro, '51676101935731', -29, '-1498606956136199'); -test(macro, '-51676101935731', -29, '1498606956136199'); -test(macro, '51676101935731', 1234, '63768309788692054'); -test(macro, '-51676101935731', 1234, '-63768309788692054'); -test(macro, '51676101935731', -1234, '-63768309788692054'); -test(macro, '-51676101935731', -1234, '63768309788692054'); -test(macro, '51676101935731', 5678, '293416906791080618'); -test(macro, '-51676101935731', 5678, '-293416906791080618'); -test(macro, '51676101935731', -5678, '-293416906791080618'); -test(macro, '-51676101935731', -5678, '293416906791080618'); -test(macro, '51676101935731', 94906265, '4904385824479499254715'); -test(macro, '-51676101935731', 94906265, '-4904385824479499254715'); -test(macro, '51676101935731', -94906265, '-4904385824479499254715'); -test(macro, '-51676101935731', -94906265, '4904385824479499254715'); -test(macro, '51676101935731', 94906266, '4904385876155601190446'); -test(macro, '-51676101935731', 94906266, '-4904385876155601190446'); -test(macro, '51676101935731', -94906266, '-4904385876155601190446'); -test(macro, '-51676101935731', -94906266, '4904385876155601190446'); -test(macro, '51676101935731', 1073741824, '55486791949681734713344'); -test(macro, '-51676101935731', 1073741824, '-55486791949681734713344'); -test(macro, '51676101935731', -1073741824, '-55486791949681734713344'); -test(macro, '-51676101935731', -1073741824, '55486791949681734713344'); -test(macro, '51676101935731', 51676101935731, '2670419511272061205254504361'); -test(macro, '-51676101935731', 51676101935731, '-2670419511272061205254504361'); -test(macro, '51676101935731', -51676101935731, '-2670419511272061205254504361'); -test(macro, '-51676101935731', -51676101935731, '2670419511272061205254504361'); -test(macro, '717897987691852588770249', 0, '0'); -test(macro, '-717897987691852588770249', 0, '0'); -test(macro, '717897987691852588770249', 1, '717897987691852588770249'); -test(macro, '-717897987691852588770249', 1, '-717897987691852588770249'); -test(macro, '717897987691852588770249', -1, '-717897987691852588770249'); -test(macro, '-717897987691852588770249', -1, '717897987691852588770249'); -test(macro, '717897987691852588770249', 3, '2153693963075557766310747'); -test(macro, '-717897987691852588770249', 3, '-2153693963075557766310747'); -test(macro, '717897987691852588770249', -3, '-2153693963075557766310747'); -test(macro, '-717897987691852588770249', -3, '2153693963075557766310747'); -test(macro, '717897987691852588770249', 7, '5025285913842968121391743'); -test(macro, '-717897987691852588770249', 7, '-5025285913842968121391743'); -test(macro, '717897987691852588770249', -7, '-5025285913842968121391743'); -test(macro, '-717897987691852588770249', -7, '5025285913842968121391743'); -test(macro, '717897987691852588770249', 9, '6461081889226673298932241'); -test(macro, '-717897987691852588770249', 9, '-6461081889226673298932241'); -test(macro, '717897987691852588770249', -9, '-6461081889226673298932241'); -test(macro, '-717897987691852588770249', -9, '6461081889226673298932241'); -test(macro, '717897987691852588770249', 11, '7896877864610378476472739'); -test(macro, '-717897987691852588770249', 11, '-7896877864610378476472739'); -test(macro, '717897987691852588770249', -11, '-7896877864610378476472739'); -test(macro, '-717897987691852588770249', -11, '7896877864610378476472739'); -test(macro, '717897987691852588770249', 17, '12204265790761494009094233'); -test(macro, '-717897987691852588770249', 17, '-12204265790761494009094233'); -test(macro, '717897987691852588770249', -17, '-12204265790761494009094233'); -test(macro, '-717897987691852588770249', -17, '12204265790761494009094233'); -test(macro, '717897987691852588770249', 22, '15793755729220756952945478'); -test(macro, '-717897987691852588770249', 22, '-15793755729220756952945478'); -test(macro, '717897987691852588770249', -22, '-15793755729220756952945478'); -test(macro, '-717897987691852588770249', -22, '15793755729220756952945478'); -test(macro, '717897987691852588770249', 24, '17229551704604462130485976'); -test(macro, '-717897987691852588770249', 24, '-17229551704604462130485976'); -test(macro, '717897987691852588770249', -24, '-17229551704604462130485976'); -test(macro, '-717897987691852588770249', -24, '17229551704604462130485976'); -test(macro, '717897987691852588770249', 27, '19383245667680019896796723'); -test(macro, '-717897987691852588770249', 27, '-19383245667680019896796723'); -test(macro, '717897987691852588770249', -27, '-19383245667680019896796723'); -test(macro, '-717897987691852588770249', -27, '19383245667680019896796723'); -test(macro, '717897987691852588770249', 29, '20819041643063725074337221'); -test(macro, '-717897987691852588770249', 29, '-20819041643063725074337221'); -test(macro, '717897987691852588770249', -29, '-20819041643063725074337221'); -test(macro, '-717897987691852588770249', -29, '20819041643063725074337221'); -test(macro, '717897987691852588770249', 1234, '885886116811746094542487266'); -test(macro, '-717897987691852588770249', 1234, '-885886116811746094542487266'); -test(macro, '717897987691852588770249', -1234, '-885886116811746094542487266'); -test(macro, '-717897987691852588770249', -1234, '885886116811746094542487266'); -test(macro, '717897987691852588770249', 5678, '4076224774114338999037473822'); -test(macro, '-717897987691852588770249', 5678, '-4076224774114338999037473822'); -test(macro, '717897987691852588770249', -5678, '-4076224774114338999037473822'); -test(macro, '-717897987691852588770249', -5678, '4076224774114338999037473822'); -test( - macro, - '717897987691852588770249', - 94906265, - '68133016662849700130765275709985', -); -test( - macro, - '-717897987691852588770249', - 94906265, - '-68133016662849700130765275709985', -); -test( - macro, - '717897987691852588770249', - -94906265, - '-68133016662849700130765275709985', -); -test( - macro, - '-717897987691852588770249', - -94906265, - '68133016662849700130765275709985', -); -test( - macro, - '717897987691852588770249', - 94906266, - '68133017380747687822617864480234', -); -test( - macro, - '-717897987691852588770249', - 94906266, - '-68133017380747687822617864480234', -); -test( - macro, - '717897987691852588770249', - -94906266, - '-68133017380747687822617864480234', -); -test( - macro, - '-717897987691852588770249', - -94906266, - '68133017380747687822617864480234', -); -test( - macro, - '717897987691852588770249', - 1073741824, - '770837094750179348605289078194176', -); -test( - macro, - '-717897987691852588770249', - 1073741824, - '-770837094750179348605289078194176', -); -test( - macro, - '717897987691852588770249', - -1073741824, - '-770837094750179348605289078194176', -); -test( - macro, - '-717897987691852588770249', - -1073741824, - '770837094750179348605289078194176', -); -test( - macro, - '717897987691852588770249', - 51676101935731, - '37098169591420333175287767861722867019', -); -test( - macro, - '-717897987691852588770249', - 51676101935731, - '-37098169591420333175287767861722867019', -); -test( - macro, - '717897987691852588770249', - -51676101935731, - '-37098169591420333175287767861722867019', -); -test( - macro, - '-717897987691852588770249', - -51676101935731, - '37098169591420333175287767861722867019', -); diff --git a/test/src/integer/arithmetic/ipow.js b/test/src/integer/arithmetic/ipow.js deleted file mode 100644 index f8cbe34..0000000 --- a/test/src/integer/arithmetic/ipow.js +++ /dev/null @@ -1,1311 +0,0 @@ -import test from 'ava'; -import {parse, stringify, ipow} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const b = parse(B); - const c = ipow(a, b); - t.is(stringify(a), C); - t.is(stringify(b), B); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `ipow(${fmt(A)},${fmt(B)}) = ${fmt(C)}`; - -test(macro, '0', '0', '1'); -test(macro, '0', '1', '0'); -test(macro, '0', '3', '0'); -test(macro, '0', '7', '0'); -test(macro, '0', '9', '0'); -test(macro, '0', '11', '0'); -test(macro, '0', '17', '0'); -test(macro, '0', '22', '0'); -test(macro, '0', '24', '0'); -test(macro, '0', '27', '0'); -test(macro, '0', '29', '0'); -test(macro, '0', '1234', '0'); -test(macro, '0', '5678', '0'); -test(macro, '1', '0', '1'); -test(macro, '-1', '0', '1'); -test(macro, '1', '1', '1'); -test(macro, '-1', '1', '-1'); -test(macro, '1', '3', '1'); -test(macro, '-1', '3', '-1'); -test(macro, '1', '7', '1'); -test(macro, '-1', '7', '-1'); -test(macro, '1', '9', '1'); -test(macro, '-1', '9', '-1'); -test(macro, '1', '11', '1'); -test(macro, '-1', '11', '-1'); -test(macro, '1', '17', '1'); -test(macro, '-1', '17', '-1'); -test(macro, '1', '22', '1'); -test(macro, '-1', '22', '1'); -test(macro, '1', '24', '1'); -test(macro, '-1', '24', '1'); -test(macro, '1', '27', '1'); -test(macro, '-1', '27', '-1'); -test(macro, '1', '29', '1'); -test(macro, '-1', '29', '-1'); -test(macro, '1', '1234', '1'); -test(macro, '-1', '1234', '1'); -test(macro, '1', '5678', '1'); -test(macro, '-1', '5678', '1'); -test(macro, '3', '0', '1'); -test(macro, '-3', '0', '1'); -test(macro, '3', '1', '3'); -test(macro, '-3', '1', '-3'); -test(macro, '3', '3', '27'); -test(macro, '-3', '3', '-27'); -test(macro, '3', '7', '2187'); -test(macro, '-3', '7', '-2187'); -test(macro, '3', '9', '19683'); -test(macro, '-3', '9', '-19683'); -test(macro, '3', '11', '177147'); -test(macro, '-3', '11', '-177147'); -test(macro, '3', '17', '129140163'); -test(macro, '-3', '17', '-129140163'); -test(macro, '3', '22', '31381059609'); -test(macro, '-3', '22', '31381059609'); -test(macro, '3', '24', '282429536481'); -test(macro, '-3', '24', '282429536481'); -test(macro, '3', '27', '7625597484987'); -test(macro, '-3', '27', '-7625597484987'); -test(macro, '3', '29', '68630377364883'); -test(macro, '-3', '29', '-68630377364883'); -test( - macro, - '3', - '1234', - '5856367529932071269049608726415028439757143623443063785468784843536946634255003858796842453459905186846046851774292445753149532138648409140561593823222428559200283816367593571556942770711203894947318922509986128995034233177140247221695941679146171215675158154358685224309073135481486540427499644363484815218991488230440687359021965115067678545212365725678242878485920885436927030372580147256775788882374301866845441065076726499613479868210410548366056401445912760529623658838510267592199677099676046090140514526228797525926977514932394954796457727416398081482661262807288229389463819882569', -); -test( - macro, - '-3', - '1234', - '5856367529932071269049608726415028439757143623443063785468784843536946634255003858796842453459905186846046851774292445753149532138648409140561593823222428559200283816367593571556942770711203894947318922509986128995034233177140247221695941679146171215675158154358685224309073135481486540427499644363484815218991488230440687359021965115067678545212365725678242878485920885436927030372580147256775788882374301866845441065076726499613479868210410548366056401445912760529623658838510267592199677099676046090140514526228797525926977514932394954796457727416398081482661262807288229389463819882569', -); -test( - macro, - '3', - '5678', - '1243037693463227949112091519279672492044687354501434200945857669926116693806746194857301400780233995488733257302119315313384942062399372466241771979139200777946071311247293019863313186668415340857975663750784195666817545404528999322911175416479945350848509815821523649497472945192185204394061354208077647593251971659190791580018094752316074849512115300952408135740274415868364936851842971492114222395071837019898407594635391436897273675376020860228061632238135757402157534256820528991141884997213617990932313869139157767548368622729617821353870622703296087570908735603155999125081727743790083245652659362145288136145004020964445403739551815349944634978429930196370344630107979223204102936646371908266047485583735925127513544821868443751038578347212600335097321876283836508599321409432666223344497759612113922437886158316317309321756691709644342882638785970256967423622312748711462021869668719494868133737340936529693827973449768289569618616959110477938348069764446874172549277166445629673389323537570721499025892871401583780718566334141146891444372056720167238580106004294588023983408110949068925676634600934614407326236494754543604668091196426889487866586253683006497687344805244551116811415322677755309138100217606582159711957778349675405780924725098248165734440609725859923557227882624090733819954748607788759286778393117307486567713449414531253242799336048793898512587416922351072249862379979496346075333842525402457713987512962241151801408088747602541118319602580139543049458650772613553099704696427391659934847692973786316292223944739381848786388556341954241622083310642850447813219607073326408041563486733069853816257896789324045551319755037088618442131331146423713621289638493891684978150596496763780207895660476795481533699694118004797315688020850843758776485972938923432434495440069418445343215420341280042711847572084403785495272596239611718358057479206763407758265413312407824846381133395192898456506473229225136787314930144756882252451305634473881426309641144171713785689008872861781376574439959633987648643018576130215542337839481438388884082264677560703461771690165647753395118399310441168972645259556152700302308180192341217336414601260891209846568563921259501135353991491621201855991355185034869242032403371115547965465483990269048544429538087341589568713744694551680574689237237491011280632994211265728601046457084272149460827390761878382623695568170089082824214781471624419349859426165335950948736550329484315091462220430038109528301488465151597001587458695626672091775630841370920667673089484634221309873986915635179460410766176505308693753040761858823435567699379069230334377993680841390907035222598330539569286394567432603810064443684500211286790765380067016868875864059604528460045303289', -); -test( - macro, - '-3', - '5678', - '1243037693463227949112091519279672492044687354501434200945857669926116693806746194857301400780233995488733257302119315313384942062399372466241771979139200777946071311247293019863313186668415340857975663750784195666817545404528999322911175416479945350848509815821523649497472945192185204394061354208077647593251971659190791580018094752316074849512115300952408135740274415868364936851842971492114222395071837019898407594635391436897273675376020860228061632238135757402157534256820528991141884997213617990932313869139157767548368622729617821353870622703296087570908735603155999125081727743790083245652659362145288136145004020964445403739551815349944634978429930196370344630107979223204102936646371908266047485583735925127513544821868443751038578347212600335097321876283836508599321409432666223344497759612113922437886158316317309321756691709644342882638785970256967423622312748711462021869668719494868133737340936529693827973449768289569618616959110477938348069764446874172549277166445629673389323537570721499025892871401583780718566334141146891444372056720167238580106004294588023983408110949068925676634600934614407326236494754543604668091196426889487866586253683006497687344805244551116811415322677755309138100217606582159711957778349675405780924725098248165734440609725859923557227882624090733819954748607788759286778393117307486567713449414531253242799336048793898512587416922351072249862379979496346075333842525402457713987512962241151801408088747602541118319602580139543049458650772613553099704696427391659934847692973786316292223944739381848786388556341954241622083310642850447813219607073326408041563486733069853816257896789324045551319755037088618442131331146423713621289638493891684978150596496763780207895660476795481533699694118004797315688020850843758776485972938923432434495440069418445343215420341280042711847572084403785495272596239611718358057479206763407758265413312407824846381133395192898456506473229225136787314930144756882252451305634473881426309641144171713785689008872861781376574439959633987648643018576130215542337839481438388884082264677560703461771690165647753395118399310441168972645259556152700302308180192341217336414601260891209846568563921259501135353991491621201855991355185034869242032403371115547965465483990269048544429538087341589568713744694551680574689237237491011280632994211265728601046457084272149460827390761878382623695568170089082824214781471624419349859426165335950948736550329484315091462220430038109528301488465151597001587458695626672091775630841370920667673089484634221309873986915635179460410766176505308693753040761858823435567699379069230334377993680841390907035222598330539569286394567432603810064443684500211286790765380067016868875864059604528460045303289', -); -test(macro, '7', '0', '1'); -test(macro, '-7', '0', '1'); -test(macro, '7', '1', '7'); -test(macro, '-7', '1', '-7'); -test(macro, '7', '3', '343'); -test(macro, '-7', '3', '-343'); -test(macro, '7', '7', '823543'); -test(macro, '-7', '7', '-823543'); -test(macro, '7', '9', '40353607'); -test(macro, '-7', '9', '-40353607'); -test(macro, '7', '11', '1977326743'); -test(macro, '-7', '11', '-1977326743'); -test(macro, '7', '17', '232630513987207'); -test(macro, '-7', '17', '-232630513987207'); -test(macro, '7', '22', '3909821048582988049'); -test(macro, '-7', '22', '3909821048582988049'); -test(macro, '7', '24', '191581231380566414401'); -test(macro, '-7', '24', '191581231380566414401'); -test(macro, '7', '27', '65712362363534280139543'); -test(macro, '-7', '27', '-65712362363534280139543'); -test(macro, '7', '29', '3219905755813179726837607'); -test(macro, '-7', '29', '-3219905755813179726837607'); -test( - macro, - '7', - '1234', - '70954734215028011240104595141498929070420289200365254864883100224459061531095964535961424752183918983389834714345883085722594630104327570484382813454950959834721299254363358098967399048133489131401375954827777487240689332659684949614116231197346793510695402301156840458057925504143947679213040737846060014251249690928324441226158708348216074516368113070768675494487327714367821662938661080440834970823376650216081882744143161592962823478851621834726159007802788609981541818975600270503709811145869971874252832721423453899821462438727851069669041332053765106227148570291872998008674128627485981069824533343176007316751497280494057995201432198045575691194828311578763776024467116028227768366827683004790939265568398432923069244698164607404132404210543306184313774389935234011995625090611727226388755028092996618090667295922698497975515840710550500258575437750076719351206138149202280453034232757583405474400100672191700332560347912741669538744924043142095605796598736664375513698661239721232174697654768024941266796370339939780641017369634940849', -); -test( - macro, - '-7', - '1234', - '70954734215028011240104595141498929070420289200365254864883100224459061531095964535961424752183918983389834714345883085722594630104327570484382813454950959834721299254363358098967399048133489131401375954827777487240689332659684949614116231197346793510695402301156840458057925504143947679213040737846060014251249690928324441226158708348216074516368113070768675494487327714367821662938661080440834970823376650216081882744143161592962823478851621834726159007802788609981541818975600270503709811145869971874252832721423453899821462438727851069669041332053765106227148570291872998008674128627485981069824533343176007316751497280494057995201432198045575691194828311578763776024467116028227768366827683004790939265568398432923069244698164607404132404210543306184313774389935234011995625090611727226388755028092996618090667295922698497975515840710550500258575437750076719351206138149202280453034232757583405474400100672191700332560347912741669538744924043142095605796598736664375513698661239721232174697654768024941266796370339939780641017369634940849', -); -test( - macro, - '7', - '5678', - '29286751415147620247012304773980453114296677803073891717128731934016701215974044080405159393233326470923575961142799138193074871298378636445798628179207951349293982721295278501959247567396219037376513091082530976510046931578018252332911963395881855502229529277894696192062382498205446451330821264508660060350680978703632399146027439892583747910260252573283992801340972629278229559465911897286605725711901509827250224363194810593341410557007928980446292059141174553339348167116022054072976080669663383423876445574623259565705649860557328656767872910853528973163262527221058274477371143012479363191542123347184358086644971892976333589967255121778587469470892635729379036729236304281800433959466187506663459515828468608307875018665592185468341433713422202882333951754002984232398322608180776700835785085017756319924590206151470700716667835012667869936677506199082647415474168800484943151012348606524534006652121876222361977658821488777239683223567987622345303322949601239794141770292343853950382720459690070362230065991442547398307358472021289622300608069384246841369764420640724519271620643375180877746823736826186226120840335052438117942436533089511127752752776144826427488391781629757387931931866819313611113838895192595153612697562710052857839705947750975715806160854609794879295166494370393332625817992461823676698792102936528543520961016844260805703577116507427610889086939384974782917847235365828889115833315047177125587286162340061433341091371954086793250119039573579409345450985100916248737095737635113804291080478497302622719151600453447616115190282792195268648972132196212717229671264933006034401449925954728380766566809709129051085718977633841056681750845701567687767262960074466629251941876310059953363356531903058045532738271892988757147772703584798866501751770352083540196100803611978925296332203675077547295577020941062653460756395909170345723103094148861314777405742548532625701646810183666329500365537037837796381818770012342811563068087864026587087965941993420061262519506075499730518978585216724282264266842476339924360204070092387081062271166294076464986173214296883414741128262228746457873862297729461562411250198067094652357764260127419648002555197136786444971264851853928282497021712573900531648560775269275620991652740780298232021457075682576160866924920643357459760230060837118671529811745348483144053263057167731433439790093453587845785289839653966318286353544985756786138017559281729742760365436559566020930901853363600729656253961774820405787066019640729410826090870703799290454880306581230282510738087113753806619350425640320369895844610395585664858869947128190822130577054035661501630309320241329765059393323789228824376116472207943909200787598356625424332899455771232035169336714551998000090274179880982976417171021168670556482314198238096787861626550887693327061858177712413982165608873492233854569701565615054215981574912415571024874796636058468882371352130950473473787764998548443335260725529010774114177855533290850946155316766268951403608859645495518354455415922245608492259889927964017924837101397067268070099225030817739186510992894635323450695473383790259049745811723535604236057509473976199273919932581197631717736843031016857549306106108894545373734030577486454218738603892987604028992432585288674498003102110839666180973964000647771786878484450905268467447862314262776221757175689654294334472018305832948254130011534914626821150798633758257956359485409097758800820518855504265570934089990834849940809640817750881113810307074278330447454706136884709705076100153948256437849665146298178253907766151956875148887880704088418959235408519102084994845764532487122261171084690258639078929318849083005320788264786818741497152218531813309049735082217246480998356792356423468690812689741878405570775329789967268544118775265597533519971689880183688879583268069589841484628003686747384622711287138558207298669062173888449730536222746981830761436411638918704083993605529775430511215721624379386418171517300661716804853921368534386259059328549100166544678556092078039125431284837120330424638877929381377386822642410570351497645327464806551308709476717189758730145852636898776648068485630182784186320600350425256211486828867199336911598081431699804028420689319751310314229065511569912938919887605558610237415833117670117720398090281760742873925225005809250637733443636498423237903430070501472467711563994554631346830772764419040383097667651843091497767178561922112757100189347867151512651676504135813782377307832677229924200900337767048640550254889564573280195779350492199790482755320611128427773224927972518754103462948342397056029050310063164777386764680047944172099837029881521262503568821175159785856887995352684696513864645799309539055373624021324611634320733523909093966797454147058520418465164134584379979514639416027197229802081214558290831868642024962672375789914449', -); -test( - macro, - '-7', - '5678', - '29286751415147620247012304773980453114296677803073891717128731934016701215974044080405159393233326470923575961142799138193074871298378636445798628179207951349293982721295278501959247567396219037376513091082530976510046931578018252332911963395881855502229529277894696192062382498205446451330821264508660060350680978703632399146027439892583747910260252573283992801340972629278229559465911897286605725711901509827250224363194810593341410557007928980446292059141174553339348167116022054072976080669663383423876445574623259565705649860557328656767872910853528973163262527221058274477371143012479363191542123347184358086644971892976333589967255121778587469470892635729379036729236304281800433959466187506663459515828468608307875018665592185468341433713422202882333951754002984232398322608180776700835785085017756319924590206151470700716667835012667869936677506199082647415474168800484943151012348606524534006652121876222361977658821488777239683223567987622345303322949601239794141770292343853950382720459690070362230065991442547398307358472021289622300608069384246841369764420640724519271620643375180877746823736826186226120840335052438117942436533089511127752752776144826427488391781629757387931931866819313611113838895192595153612697562710052857839705947750975715806160854609794879295166494370393332625817992461823676698792102936528543520961016844260805703577116507427610889086939384974782917847235365828889115833315047177125587286162340061433341091371954086793250119039573579409345450985100916248737095737635113804291080478497302622719151600453447616115190282792195268648972132196212717229671264933006034401449925954728380766566809709129051085718977633841056681750845701567687767262960074466629251941876310059953363356531903058045532738271892988757147772703584798866501751770352083540196100803611978925296332203675077547295577020941062653460756395909170345723103094148861314777405742548532625701646810183666329500365537037837796381818770012342811563068087864026587087965941993420061262519506075499730518978585216724282264266842476339924360204070092387081062271166294076464986173214296883414741128262228746457873862297729461562411250198067094652357764260127419648002555197136786444971264851853928282497021712573900531648560775269275620991652740780298232021457075682576160866924920643357459760230060837118671529811745348483144053263057167731433439790093453587845785289839653966318286353544985756786138017559281729742760365436559566020930901853363600729656253961774820405787066019640729410826090870703799290454880306581230282510738087113753806619350425640320369895844610395585664858869947128190822130577054035661501630309320241329765059393323789228824376116472207943909200787598356625424332899455771232035169336714551998000090274179880982976417171021168670556482314198238096787861626550887693327061858177712413982165608873492233854569701565615054215981574912415571024874796636058468882371352130950473473787764998548443335260725529010774114177855533290850946155316766268951403608859645495518354455415922245608492259889927964017924837101397067268070099225030817739186510992894635323450695473383790259049745811723535604236057509473976199273919932581197631717736843031016857549306106108894545373734030577486454218738603892987604028992432585288674498003102110839666180973964000647771786878484450905268467447862314262776221757175689654294334472018305832948254130011534914626821150798633758257956359485409097758800820518855504265570934089990834849940809640817750881113810307074278330447454706136884709705076100153948256437849665146298178253907766151956875148887880704088418959235408519102084994845764532487122261171084690258639078929318849083005320788264786818741497152218531813309049735082217246480998356792356423468690812689741878405570775329789967268544118775265597533519971689880183688879583268069589841484628003686747384622711287138558207298669062173888449730536222746981830761436411638918704083993605529775430511215721624379386418171517300661716804853921368534386259059328549100166544678556092078039125431284837120330424638877929381377386822642410570351497645327464806551308709476717189758730145852636898776648068485630182784186320600350425256211486828867199336911598081431699804028420689319751310314229065511569912938919887605558610237415833117670117720398090281760742873925225005809250637733443636498423237903430070501472467711563994554631346830772764419040383097667651843091497767178561922112757100189347867151512651676504135813782377307832677229924200900337767048640550254889564573280195779350492199790482755320611128427773224927972518754103462948342397056029050310063164777386764680047944172099837029881521262503568821175159785856887995352684696513864645799309539055373624021324611634320733523909093966797454147058520418465164134584379979514639416027197229802081214558290831868642024962672375789914449', -); -test(macro, '9', '0', '1'); -test(macro, '-9', '0', '1'); -test(macro, '9', '1', '9'); -test(macro, '-9', '1', '-9'); -test(macro, '9', '3', '729'); -test(macro, '-9', '3', '-729'); -test(macro, '9', '7', '4782969'); -test(macro, '-9', '7', '-4782969'); -test(macro, '9', '9', '387420489'); -test(macro, '-9', '9', '-387420489'); -test(macro, '9', '11', '31381059609'); -test(macro, '-9', '11', '-31381059609'); -test(macro, '9', '17', '16677181699666569'); -test(macro, '-9', '17', '-16677181699666569'); -test(macro, '9', '22', '984770902183611232881'); -test(macro, '-9', '22', '984770902183611232881'); -test(macro, '9', '24', '79766443076872509863361'); -test(macro, '-9', '24', '79766443076872509863361'); -test(macro, '9', '27', '58149737003040059690390169'); -test(macro, '-9', '27', '-58149737003040059690390169'); -test(macro, '9', '29', '4710128697246244834921603689'); -test(macro, '-9', '29', '-4710128697246244834921603689'); -test( - macro, - '9', - '1234', - '34297040645642669671420659321651782362579256907010306825298584320017224909034295065159266732166824736588968016033381896847023243099736344433210097854593507161679850671932155017203599500044609298345843661231598352934672574000630755280719247078658076071069504371210453795997193380141459822909472292250049962822082559318856309665763195373936160408297178132724501864611562349337209033935902601202229170588203644970751513231529370646017342084334943445632338625406001819417100075123659123153934372275946883429572960429182400235833979860757127508599030945874737763438221696224240363286973695769026948553357192210469914347532288838793872337455361841599848707950096810738215169875752378946944496071085184269469689190048414428631904103213703000348839546159132360494448224371361413782868923322232033859714664315449006669237525993661192066307764695656412997620762143868465614936957887460078238297229855499508020184426374192732713213787351302551235717525464575349122336444905826195262672337776865803043472081042136085365758586709594709588874980188963624351301943558778230597943000313246648597648327615323559497393534626812152826795197456515853598831232826676446660986298958124148320950039761', -); -test( - macro, - '-9', - '1234', - '34297040645642669671420659321651782362579256907010306825298584320017224909034295065159266732166824736588968016033381896847023243099736344433210097854593507161679850671932155017203599500044609298345843661231598352934672574000630755280719247078658076071069504371210453795997193380141459822909472292250049962822082559318856309665763195373936160408297178132724501864611562349337209033935902601202229170588203644970751513231529370646017342084334943445632338625406001819417100075123659123153934372275946883429572960429182400235833979860757127508599030945874737763438221696224240363286973695769026948553357192210469914347532288838793872337455361841599848707950096810738215169875752378946944496071085184269469689190048414428631904103213703000348839546159132360494448224371361413782868923322232033859714664315449006669237525993661192066307764695656412997620762143868465614936957887460078238297229855499508020184426374192732713213787351302551235717525464575349122336444905826195262672337776865803043472081042136085365758586709594709588874980188963624351301943558778230597943000313246648597648327615323559497393534626812152826795197456515853598831232826676446660986298958124148320950039761', -); -test( - macro, - '9', - '5678', - '1545142707370381851609411413899132682778575844549055737803770782486638374123987237714505350031063863696419362246215324259025872807818706708567475641777221524486469451542665562456475991411669945011588061933033043990285593410736303684531491655090341501196320194664020232558795638543041629641355998266033548545684015858096482700688284981448066016292615109699224816361227721744941140103885809784889737995411688872156490144707451483247506723486569306623432455131502484848152542555905761267826576308873877093265177335466304892722841390706005314223149855304965697484723009003003632083696007411617084581327217056398066426605090819508953675656967992469076739615155228601392777535817633074609994606291164127882587611790074634314684395235695951310867816046457022429685001454352432479391043233372844749832834475133612310166159430096724033853202779978343792803241815105520473343882963270232006318108101172487652645037890933800756420196027281412374330156942298809917864681543862000700290148757672140417762608153842991450104537691398458724848347134986905461646720926318916004759872555232117444680320721345188614171935657721162922772487571124238457660530591028220098993082424798607063347980184136709298769413926930349712815088173558675750389256644773436235100564071786607781876607264630905026348034479999782657445944748011068965501487523392800451597712231719881642976802003901339999399734075058637765277161028644547435177576795907751332319356126994328383614000959809721439665568650348697207647555316250229874630972224221714533827025501634911141684146186203253767040684930463940464377863490189848093370410257333803061200409882588601608120045438839772858741664177165757415118862088960994925276210066381127080570557851385479331042246570187178836367072105659557298025995994432154607547760881911528513006072722679351100800384912243076415109378562053413427675008822161639569146618213571005063105134152183592318763191892403562862300332002443513358137733609305717552536116534529456800098568792487873742228833784937429502805597130286226862975217006199009586805130712898326268708779958470992748082915469591083119179614842245665430602770992134692732918676506143472628731074803946929989696665115780648730022856841984172068021565899431168771658079365019826787122767864320410003659006630243236082123473778365296923504448099879355899093296587407124679743539714668629739203451409169220276915270710072344374154805355451447610334870077107520916084363778625558453362830867729338005614696548674280966101030920025275289509398227466089735040095294432049245365579301293649947590752813026695775305108512549093425827168709309153164964518435002803203260297748051469146218834794141288192941465904821437732646224427502122761116109084100303184096830143400182874440330465783102621606891257024121143498202107903258018086176991251634730153737114344138284105389641830312676972930646347797776529968734739053219753095634106865389392731865073020060739843556848436924296264365174038915119777825322849472657573916448107560433792653801959610188502511534981700386973496144694841422884340132779103883906981191026922867395953990063126834152580234552204739961906926767894178052760711620116507790314554396528396871813365687210073019525832824479961834155693623848039441214108218991798316931852715586106991173419636671902754236049107585921303060877716511803128895869667091654139705002524900507762082934568975954418238682291841910718982426145152686903351718809457762642345982881924850372358154935832556134320066020200965922897806724341248914397224558268067799442480589425192305345138246146351317529543861709892659099510408182947241066305485992782013056611600088525469992301128153504386277775010761258678532453273506462144848662004743034850060677824385240850588592267171443255754150565279560373497193659947780285389694817090742653506541905415465147664245703555755319506569259093273234477472175250215865923275863458053491886242823523838048453699851299857579772170676938286642988817887754472081798505839390455625598352142445901032306662849749227441402540484189893049732970070242662289545041240186274540855527695224386798038802847716909643228838071712328328843306868604223267430082476250031289111386554075507235619140890749226586960627425891165027575773899527151843957100604729050655499468273965365676635425643512622568877104991613143416548361882289872531929492966266589241390435796283886856494108038015908593659759442649289267891231233370864787216502985947587427499976015148867290521443540972183144322560989287993403276257505450903566910878200950050498748138177006078421885399215834679055363231796024572637313051142809997975829383113593886842905030615548365187334414986576626572709945335218302316974585860218354236627526789998871983242318007851112973254711384763164130812368517530397568357211122447291577632411868201330873749770649724664584931910689209273266716237972155094521293509679679188639121028673703592870439365985904787534978888232064234185884332728603718178498587929582594411733908808682843871136010409164159211147954735782608477209486374278676903968217823052983733854225085207900133055681775964179915225898467500534275504778286018191192185134700062560159814398118843013372902422075816271217441168393867803438088703366735453642092957869537542911086888294098076857636181045592676382529427459580323398060295400592579156848598273806304984575515978899816201496154375306741429141182134037640643883635820658781752675039083634856662576936007793352035809688183925957066262267994217521', -); -test( - macro, - '-9', - '5678', - '1545142707370381851609411413899132682778575844549055737803770782486638374123987237714505350031063863696419362246215324259025872807818706708567475641777221524486469451542665562456475991411669945011588061933033043990285593410736303684531491655090341501196320194664020232558795638543041629641355998266033548545684015858096482700688284981448066016292615109699224816361227721744941140103885809784889737995411688872156490144707451483247506723486569306623432455131502484848152542555905761267826576308873877093265177335466304892722841390706005314223149855304965697484723009003003632083696007411617084581327217056398066426605090819508953675656967992469076739615155228601392777535817633074609994606291164127882587611790074634314684395235695951310867816046457022429685001454352432479391043233372844749832834475133612310166159430096724033853202779978343792803241815105520473343882963270232006318108101172487652645037890933800756420196027281412374330156942298809917864681543862000700290148757672140417762608153842991450104537691398458724848347134986905461646720926318916004759872555232117444680320721345188614171935657721162922772487571124238457660530591028220098993082424798607063347980184136709298769413926930349712815088173558675750389256644773436235100564071786607781876607264630905026348034479999782657445944748011068965501487523392800451597712231719881642976802003901339999399734075058637765277161028644547435177576795907751332319356126994328383614000959809721439665568650348697207647555316250229874630972224221714533827025501634911141684146186203253767040684930463940464377863490189848093370410257333803061200409882588601608120045438839772858741664177165757415118862088960994925276210066381127080570557851385479331042246570187178836367072105659557298025995994432154607547760881911528513006072722679351100800384912243076415109378562053413427675008822161639569146618213571005063105134152183592318763191892403562862300332002443513358137733609305717552536116534529456800098568792487873742228833784937429502805597130286226862975217006199009586805130712898326268708779958470992748082915469591083119179614842245665430602770992134692732918676506143472628731074803946929989696665115780648730022856841984172068021565899431168771658079365019826787122767864320410003659006630243236082123473778365296923504448099879355899093296587407124679743539714668629739203451409169220276915270710072344374154805355451447610334870077107520916084363778625558453362830867729338005614696548674280966101030920025275289509398227466089735040095294432049245365579301293649947590752813026695775305108512549093425827168709309153164964518435002803203260297748051469146218834794141288192941465904821437732646224427502122761116109084100303184096830143400182874440330465783102621606891257024121143498202107903258018086176991251634730153737114344138284105389641830312676972930646347797776529968734739053219753095634106865389392731865073020060739843556848436924296264365174038915119777825322849472657573916448107560433792653801959610188502511534981700386973496144694841422884340132779103883906981191026922867395953990063126834152580234552204739961906926767894178052760711620116507790314554396528396871813365687210073019525832824479961834155693623848039441214108218991798316931852715586106991173419636671902754236049107585921303060877716511803128895869667091654139705002524900507762082934568975954418238682291841910718982426145152686903351718809457762642345982881924850372358154935832556134320066020200965922897806724341248914397224558268067799442480589425192305345138246146351317529543861709892659099510408182947241066305485992782013056611600088525469992301128153504386277775010761258678532453273506462144848662004743034850060677824385240850588592267171443255754150565279560373497193659947780285389694817090742653506541905415465147664245703555755319506569259093273234477472175250215865923275863458053491886242823523838048453699851299857579772170676938286642988817887754472081798505839390455625598352142445901032306662849749227441402540484189893049732970070242662289545041240186274540855527695224386798038802847716909643228838071712328328843306868604223267430082476250031289111386554075507235619140890749226586960627425891165027575773899527151843957100604729050655499468273965365676635425643512622568877104991613143416548361882289872531929492966266589241390435796283886856494108038015908593659759442649289267891231233370864787216502985947587427499976015148867290521443540972183144322560989287993403276257505450903566910878200950050498748138177006078421885399215834679055363231796024572637313051142809997975829383113593886842905030615548365187334414986576626572709945335218302316974585860218354236627526789998871983242318007851112973254711384763164130812368517530397568357211122447291577632411868201330873749770649724664584931910689209273266716237972155094521293509679679188639121028673703592870439365985904787534978888232064234185884332728603718178498587929582594411733908808682843871136010409164159211147954735782608477209486374278676903968217823052983733854225085207900133055681775964179915225898467500534275504778286018191192185134700062560159814398118843013372902422075816271217441168393867803438088703366735453642092957869537542911086888294098076857636181045592676382529427459580323398060295400592579156848598273806304984575515978899816201496154375306741429141182134037640643883635820658781752675039083634856662576936007793352035809688183925957066262267994217521', -); -test(macro, '11', '0', '1'); -test(macro, '-11', '0', '1'); -test(macro, '11', '1', '11'); -test(macro, '-11', '1', '-11'); -test(macro, '11', '3', '1331'); -test(macro, '-11', '3', '-1331'); -test(macro, '11', '7', '19487171'); -test(macro, '-11', '7', '-19487171'); -test(macro, '11', '9', '2357947691'); -test(macro, '-11', '9', '-2357947691'); -test(macro, '11', '11', '285311670611'); -test(macro, '-11', '11', '-285311670611'); -test(macro, '11', '17', '505447028499293771'); -test(macro, '-11', '17', '-505447028499293771'); -test(macro, '11', '22', '81402749386839761113321'); -test(macro, '-11', '22', '81402749386839761113321'); -test(macro, '11', '24', '9849732675807611094711841'); -test(macro, '-11', '24', '9849732675807611094711841'); -test(macro, '11', '27', '13109994191499930367061460371'); -test(macro, '-11', '27', '-13109994191499930367061460371'); -test(macro, '11', '29', '1586309297171491574414436704891'); -test(macro, '-11', '29', '-1586309297171491574414436704891'); -test( - macro, - '11', - '1234', - '11983218693353866267692684359194000502433893845480769112172251205188147262289354049461429172488569661122876033605557421170789272790102054304092511689341645557874249802952871767405284987003806187594928847518777345850099915863264078051816617440620669835924344622459557434141694081118718006962588499405658476477809584051185924057025464163718833076869861008662963948775457304791091957146272768229564713967630639094659383688489828857998385412406001934065445969895732784144880158564496904866299896753946773061123748947095350178138399329492711931118102507186743010708942286629969813642204878306198565914755078983880064808436574100979762259478493960140042607880569732036310833444310215790281432505720437714904537904767412626253808859682743392379188494787465177304942343204339576610614978528053711125948630650946573610344095512008508992625585490923211491629695497720992580178320146672152256706875056491678710723022609578354722578101061602454247010516142562468962308895384683137775859149496917496435957009023897662611266558969297452444733968450168403551460556237438931715240285963118359275426150086656493777954817140258639584026557409436805416478575578840073580647683266895284248911727092735184253994397858925804638577468716770187699083797737507027525458211673613162334364880959262660197607632441', -); -test( - macro, - '-11', - '1234', - '11983218693353866267692684359194000502433893845480769112172251205188147262289354049461429172488569661122876033605557421170789272790102054304092511689341645557874249802952871767405284987003806187594928847518777345850099915863264078051816617440620669835924344622459557434141694081118718006962588499405658476477809584051185924057025464163718833076869861008662963948775457304791091957146272768229564713967630639094659383688489828857998385412406001934065445969895732784144880158564496904866299896753946773061123748947095350178138399329492711931118102507186743010708942286629969813642204878306198565914755078983880064808436574100979762259478493960140042607880569732036310833444310215790281432505720437714904537904767412626253808859682743392379188494787465177304942343204339576610614978528053711125948630650946573610344095512008508992625585490923211491629695497720992580178320146672152256706875056491678710723022609578354722578101061602454247010516142562468962308895384683137775859149496917496435957009023897662611266558969297452444733968450168403551460556237438931715240285963118359275426150086656493777954817140258639584026557409436805416478575578840073580647683266895284248911727092735184253994397858925804638577468716770187699083797737507027525458211673613162334364880959262660197607632441', -); -test( - macro, - '11', - '5678', - '1065776962422733390099998701350852375306774582971639100309613498738018463297402426284028524738823271322985272649725948115092991253107878527781609210894707854772049951003472314067831553881895690939206687522352568657440321602968389543267780665609966988582230996295164519798616549566676379590692798762716905683941763340478583251178705357020162093767335382720674351919299433767565974669460608726103203480874707475235760946929885758550631464242176556080700621170771150306343987986469041228052005627284421145796887853536588932524692770319694218582474445761213162153365490914843340179888987594736119906310580976352820314588543355972619484459495220871689392023112857825597955459918887431929154224173483293504587547665399509030344942605272570136172447400900121488107719512383240606334221292626608823849332333400482253520345477235442179195426136234693064612259799609047549032234897003107500108465053915738728979810144514094776056483728190563804640721019604885909118861940983487407937039944554294878572669564050159687664895605736084313761462824024676968707517184596167351978713169868322481182055851502456062238802586269146612231272427522079499528515959498333263466983785280259161881502475046417048213519584900610678927089224215919039112968768072827818708306560616332850558578446752780273726465248390043011232866170085126505517422418551900039852406583243467144607754086873525143407052846262179499389679942347532000823560325207132685549949066558071494494427946598444312782804755853495210071597142876358782604358201649556061239418307323404601244967442012437515731329817926308824617354000382199156471760900683632471277324956810127590967837960592617262960312465376355316455915879176664759553277776308042310559423721792898442749222107490339293940127243016498854242115145167447996864142048792438738560578225455082147842584858075118284318490977553362786437651112857419381043628238857484819676978075445230762210380626626912004719898874366572155465547173520667309054225283981508791442674778656040035468907369752869408514185313704067350389223145645763194281830994949130563721534905420232142720998287316636023688674050985251378185009914925807988317225071216640027871716722483316868791467166847104807602861728042597469553982173934183881854721408118637488166739219019898807239930452080477028419451221482169218590941548470167987081105665128401656215589475541679937253196949254758234290186798375277113144758530616146671086378878587968488456069580463733501978709324650086157580838543304059737187837840172970261310651170220832783959402177878176227431050767112633358910621278034506978615256025290080266327386921789544837403448128169941411317755734221724534993423771737584328270941785681037187637148965847831330028884230742250527433592894233763159902534751780862175154629552102145945586119235764832272990067006647822901592710351066659902000064017329218952050761426811476157880640667065247449451972208247978421550456277234547741925058712547416503369256196211239680164366047864051968708570583351534285698926517869625895514771976844313520579796558965092576627465235658048719487760146348808931495565346847366003973304701007063054233684522192162343464740701950442784465797167708293183479944132342976405589996322951258093432243177899159394041673341432298028719356007636825480992284923970510736838942942304796113387801478681602920972896373837595385277191717576279392952761700936522637224711546691229425008983033605153229822416869513005954335605693170930885249832778368398645533597288302148018420434619254347639616385151984552960650830068954346104302987832610586471252692718122275927836615526059882116390127451028052550923092000111263140958227160206219707410977980611517826815099866318452865266839478499873605810527128458400682829266213047212490751292505412839799091839878790386710181065160084894230231280531312918673011117069898789068313484780627491574837836376088397252997015833464534344451570629480561635620053916519436130021805563621848179479920844707168181116371097043308074403627884022121921874913710872985556815638427086651333779751907556934770310989869843884425304798400423634711778163856020448720206496290069493745603962153577775093497572698365374594076591461904206049396452233781439591258104765917225718355977433822381572720392535330998593120939566841352057738311318719931927026631838006769672045108443992445284929970269294270278680743013077174180453305089917742058685731225366141765610284466364224239657923316122018028323771071925305776184392902004619136458183176936490831946840938417871887775288789743276992617406109612755025092558440576560761222878309756084815155667190192960921003385227785262941734093931704345512521132798515611547442925571295279505831931283715748549845669395353133931794747206486070337327303879615849380818093267141506586465834431904895759614006956917248763890815129377994441625824333049728355566141085538225755137382489951163889065597959637090364281160499433447909053653936224421624718741987104354218067585258083011422152546594719663896981399037561028385236732212486414059132101618529606220469363058220156329055224342467340925139139929630506131648767286858276792072149267144670692471130323158321566298623976468399937857216321372392619400998408839149950057518963808345869653309993310768299116776379707325175676054902275922736269241390641779960744489235538753789112847068524247966967539956729499733460342777803955793449997285158138613067762195702203432660309455273766440576594246410536265644453872508630612565356986609709760894462294180493818840739169368085369286699229156832130169858213118001196840078980080715876252447472429116934369285480649794242527428955233670068043503668172668283633933776143476087412305215113096021310601587105393061779999730415570592566016145834001225399284902644145953391096153151308606014346031294960654945643001133160678398141361376867996289493175381235832216759220680742166229263430190948116635508223815277449847445410032258317401960451466607747028200896253295257428236276899079754883495683081', -); -test( - macro, - '-11', - '5678', - '1065776962422733390099998701350852375306774582971639100309613498738018463297402426284028524738823271322985272649725948115092991253107878527781609210894707854772049951003472314067831553881895690939206687522352568657440321602968389543267780665609966988582230996295164519798616549566676379590692798762716905683941763340478583251178705357020162093767335382720674351919299433767565974669460608726103203480874707475235760946929885758550631464242176556080700621170771150306343987986469041228052005627284421145796887853536588932524692770319694218582474445761213162153365490914843340179888987594736119906310580976352820314588543355972619484459495220871689392023112857825597955459918887431929154224173483293504587547665399509030344942605272570136172447400900121488107719512383240606334221292626608823849332333400482253520345477235442179195426136234693064612259799609047549032234897003107500108465053915738728979810144514094776056483728190563804640721019604885909118861940983487407937039944554294878572669564050159687664895605736084313761462824024676968707517184596167351978713169868322481182055851502456062238802586269146612231272427522079499528515959498333263466983785280259161881502475046417048213519584900610678927089224215919039112968768072827818708306560616332850558578446752780273726465248390043011232866170085126505517422418551900039852406583243467144607754086873525143407052846262179499389679942347532000823560325207132685549949066558071494494427946598444312782804755853495210071597142876358782604358201649556061239418307323404601244967442012437515731329817926308824617354000382199156471760900683632471277324956810127590967837960592617262960312465376355316455915879176664759553277776308042310559423721792898442749222107490339293940127243016498854242115145167447996864142048792438738560578225455082147842584858075118284318490977553362786437651112857419381043628238857484819676978075445230762210380626626912004719898874366572155465547173520667309054225283981508791442674778656040035468907369752869408514185313704067350389223145645763194281830994949130563721534905420232142720998287316636023688674050985251378185009914925807988317225071216640027871716722483316868791467166847104807602861728042597469553982173934183881854721408118637488166739219019898807239930452080477028419451221482169218590941548470167987081105665128401656215589475541679937253196949254758234290186798375277113144758530616146671086378878587968488456069580463733501978709324650086157580838543304059737187837840172970261310651170220832783959402177878176227431050767112633358910621278034506978615256025290080266327386921789544837403448128169941411317755734221724534993423771737584328270941785681037187637148965847831330028884230742250527433592894233763159902534751780862175154629552102145945586119235764832272990067006647822901592710351066659902000064017329218952050761426811476157880640667065247449451972208247978421550456277234547741925058712547416503369256196211239680164366047864051968708570583351534285698926517869625895514771976844313520579796558965092576627465235658048719487760146348808931495565346847366003973304701007063054233684522192162343464740701950442784465797167708293183479944132342976405589996322951258093432243177899159394041673341432298028719356007636825480992284923970510736838942942304796113387801478681602920972896373837595385277191717576279392952761700936522637224711546691229425008983033605153229822416869513005954335605693170930885249832778368398645533597288302148018420434619254347639616385151984552960650830068954346104302987832610586471252692718122275927836615526059882116390127451028052550923092000111263140958227160206219707410977980611517826815099866318452865266839478499873605810527128458400682829266213047212490751292505412839799091839878790386710181065160084894230231280531312918673011117069898789068313484780627491574837836376088397252997015833464534344451570629480561635620053916519436130021805563621848179479920844707168181116371097043308074403627884022121921874913710872985556815638427086651333779751907556934770310989869843884425304798400423634711778163856020448720206496290069493745603962153577775093497572698365374594076591461904206049396452233781439591258104765917225718355977433822381572720392535330998593120939566841352057738311318719931927026631838006769672045108443992445284929970269294270278680743013077174180453305089917742058685731225366141765610284466364224239657923316122018028323771071925305776184392902004619136458183176936490831946840938417871887775288789743276992617406109612755025092558440576560761222878309756084815155667190192960921003385227785262941734093931704345512521132798515611547442925571295279505831931283715748549845669395353133931794747206486070337327303879615849380818093267141506586465834431904895759614006956917248763890815129377994441625824333049728355566141085538225755137382489951163889065597959637090364281160499433447909053653936224421624718741987104354218067585258083011422152546594719663896981399037561028385236732212486414059132101618529606220469363058220156329055224342467340925139139929630506131648767286858276792072149267144670692471130323158321566298623976468399937857216321372392619400998408839149950057518963808345869653309993310768299116776379707325175676054902275922736269241390641779960744489235538753789112847068524247966967539956729499733460342777803955793449997285158138613067762195702203432660309455273766440576594246410536265644453872508630612565356986609709760894462294180493818840739169368085369286699229156832130169858213118001196840078980080715876252447472429116934369285480649794242527428955233670068043503668172668283633933776143476087412305215113096021310601587105393061779999730415570592566016145834001225399284902644145953391096153151308606014346031294960654945643001133160678398141361376867996289493175381235832216759220680742166229263430190948116635508223815277449847445410032258317401960451466607747028200896253295257428236276899079754883495683081', -); -test(macro, '17', '0', '1'); -test(macro, '-17', '0', '1'); -test(macro, '17', '1', '17'); -test(macro, '-17', '1', '-17'); -test(macro, '17', '3', '4913'); -test(macro, '-17', '3', '-4913'); -test(macro, '17', '7', '410338673'); -test(macro, '-17', '7', '-410338673'); -test(macro, '17', '9', '118587876497'); -test(macro, '-17', '9', '-118587876497'); -test(macro, '17', '11', '34271896307633'); -test(macro, '-17', '11', '-34271896307633'); -test(macro, '17', '17', '827240261886336764177'); -test(macro, '-17', '17', '-827240261886336764177'); -test(macro, '17', '22', '1174562876521148458974062689'); -test(macro, '-17', '22', '1174562876521148458974062689'); -test(macro, '17', '24', '339448671314611904643504117121'); -test(macro, '-17', '24', '339448671314611904643504117121'); -test(macro, '17', '27', '1667711322168688287513535727415473'); -test(macro, '-17', '27', '-1667711322168688287513535727415473'); -test(macro, '17', '29', '481968572106750915091411825223071697'); -test(macro, '-17', '29', '-481968572106750915091411825223071697'); -test( - macro, - '17', - '1234', - '2365750719195418700959936173439221488331849554433443272309037789270912117133978206777246165583614280813095899236078594286552848472860457643580615017539717857048793304325119681053421007826013802905479250885212839793760101742612296877478711932287387420109262614158330630362237192202151123468592153560375572873151822947436950242912080157786888545384847518810574795754691976973525697429044294851654461713242307440541746159573098284837473930094049306091573440131975480886198509578012017892791103610676499734889373927818577887242310104551008535893775377108954649457429588226369074071331951078940909959401201709240381177136083510255280740550175339832084572676328794889199725393235934601424964165016988318210336776289444267654575587266337284861333685818972410304844379843215873568783484299285855710739185984313729162892241201484427793478780366719828354369198742105822244711994746358620164097425507697349511284930229811697252220792819650825560346717292110648932265899796733644188721108873119505172872099646531092906043987147572277125354950545394615532850018465975565730363029206743959014462690377536775695776234592924640448812639061038539121473894456471681658974744379159553490945761899997224178778022075766625329855978704429033291722506766694214979844269409520158332260044608648267713490710210601126307243035021020433002092628988274703326841291915973218749244960354639698612598420531573152776417281665548298330678827921029701549454503621900176615327265802134551424622450618795022965384601079468969005231566796416059429914871329', -); -test( - macro, - '-17', - '1234', - '2365750719195418700959936173439221488331849554433443272309037789270912117133978206777246165583614280813095899236078594286552848472860457643580615017539717857048793304325119681053421007826013802905479250885212839793760101742612296877478711932287387420109262614158330630362237192202151123468592153560375572873151822947436950242912080157786888545384847518810574795754691976973525697429044294851654461713242307440541746159573098284837473930094049306091573440131975480886198509578012017892791103610676499734889373927818577887242310104551008535893775377108954649457429588226369074071331951078940909959401201709240381177136083510255280740550175339832084572676328794889199725393235934601424964165016988318210336776289444267654575587266337284861333685818972410304844379843215873568783484299285855710739185984313729162892241201484427793478780366719828354369198742105822244711994746358620164097425507697349511284930229811697252220792819650825560346717292110648932265899796733644188721108873119505172872099646531092906043987147572277125354950545394615532850018465975565730363029206743959014462690377536775695776234592924640448812639061038539121473894456471681658974744379159553490945761899997224178778022075766625329855978704429033291722506766694214979844269409520158332260044608648267713490710210601126307243035021020433002092628988274703326841291915973218749244960354639698612598420531573152776417281665548298330678827921029701549454503621900176615327265802134551424622450618795022965384601079468969005231566796416059429914871329', -); -test( - macro, - '17', - '5678', - '308301463160662792592974191225677550213805858865919919735981762675623786601714250489696698804852341045297420123063243922100400196696349793305072692507353336241216967013579955338321444377099377319922539877186220868052446496202732277247371505550502651392252286935974933884151213108283554369258213425365822337513947069960567344400310797289631047757394436944996398072856708476570135250826251807398908611346753721594187395239741456589520555880152964355709918481651414281037119345031864349473612190232783371634279010028835470052200853299387882937134502672486160490325572916770961984349270782004601755602396869480289583861432077292039522042728544628472407886559019506167070189042096361924625145764203394220016152058200833752782786135860272071163220664632628957715045743868317244354995167227549385742687044952230405548258021083955544683907569599512046698283062653360884689200605347962098694683370357258724260056117352725577527325470851942851786836586694378752609414985480451815306391204834718631347771140575410484669506656818267247739857567770208151137491950666879071411531164773778999066561543024242136809243170757624965045375519201614760897620552430403133361040466722500087079354845734867920025285926879314249326848120872229945829401869885167283900122714895079076317869209094125931991982545556531488000512974612556335371838867029549796298764189897495724664237888752067198837966134423345547661571313151671040573897238403514602328827651572079820723701139609625952452387726428497198778814867224019443231895553458612781145096614872436875589042063008282687051858429092860711826018500930659407306718573155390037651077626487553235826051751992178074784247327240446763311187915496267026614485771849109815253713934148711216787298996520671468152820643885099705983302989002284908552857617520501529946390075868206425878082496708806322673513995979106164216776193616172985959907688824822708649852983817019144075028883180470899174789547764945602382526461092533221644053611458447978077780558970501641646067073622734477217735505282263211128124481305514353186357540419010992434002107768783355740756446187324942325654652625852412169287153813508608016280113952446920176296614253376950196475669316351020403077722724490519629898377036323360129820529281045109963371249894530276099561144042482626338772593989844316087710972792550257456128886470019096822479564940726737877698151825386119418309553408271231027478809647742899313908009933334462963092648575508695193735333743379173370627653867407320126715177974457764503548774713620560056196952152990116210197349898408972339742529128594321078656213131646113348021113593500434299052367891502628806326549121118207042607447479186463436915417026432303558853528036464975473796918542444020373057871946369301364258538966068868254352995619682873466974346238932655967123889634837113714800967760011350882223310353543059601985301931618545990512349177473607469589077686942177079271505612848872737004531036693137411376221188948435205746764410417572244552151115770898205429797968294734548429417278840745724261982834336050319128899682414411262548690370173790043028979845800173387057519576117961404309649305131253106853311405290729585498843142932710693864698111280652528337779798996371020065243801932085317018569183094721517622383953097502437063509905231723076848695664475891217676900061772996514510444773379828633675940309305355017384694473467108649959260135277673044625735731445353762845612054986937722179046658335121624623887140876084354281345305162356789678255300384384362221940169560849412314449721012605468584753472048939293608001304951329291978795373421372496969569792459269771201979081563170756324976549131692045507222783153489641325969541556371425701402301211477683080268682892338248206661170350045844352061951383330942281351775350666794898243271686809285942972250079237128202766005910057022811233073148416980300503195301226425284939582119267754559346938405839108209948260224741026519729353522763156183432819133601211163851967797956224605731130210254259956239010777634280103656590161967025286273834863275135448484296586047436588377498080471091688749259494163596420313099632079876409348525630028055176035711873634035464870888160379725751723195018099253375258568577967864792488387641817874998840468383878650374885021482953160299619530112289571703664629650689171966549636405214013448300445958738210047255092576641861296921647468062688837053654674936187674808709795653883608126278103976777614235428024410406774617308906840440399533093675542694404899247309187944909110631946845342610548908241677763415814807299529431331306295147372426206682600091831666916348144604753853633093752578611067563482135824231785498536893195996043663278185036145372756479240008651658799543396796498313843752029567365904330978277771584083764680985424357979370673048412336161600105590795221468539510721486414696405244842077338791619491047555626214572469854774642809583879845753149299202220239018392390206481186381875779757172402492713818647299968359129028554409153515978523967576074137219417098042854838667104016609738651022464948341424258581649824364793277410362004657346730312486772187893045818208465017592301709242049247100206034557497898122997305711805266614983374701841598496819251246442389163596781052495386660654519709452526951157596940799622382556542978303127167636912967999455236012568054985444079556177250723837365747957344490952925271966201701550593265443332902956508294939313094240833285876555046619359268191001846635259161706865131541180784321186186894945212300349221818709758522540187015314739189058530961568234354902922125914842193133460218438518962244238370699624523924419568327136723141811138403931677301481592189660339567894761665454562699685520993156044186932965753836572801390460509640488798964928095419008854900677851241358987176646501215201974659363616049261017603457999596184581511549579905438019185941637728665384585389583535891202008231419334008863423647112514312757047826028932882729541950746057232359164344651932902110039997136484675561126583054833776169478582845219207488207389196029054365227406667723162110887854915641006891303598854753903506554856041472945272356941328283818164784067726584990924119024325130661086148657987548771738842769797564552756354942918282971676618299580653036928287938534922839104145089706750975511251679142746672018472326704754194244955633025397110493863802050335540295002732461604260398261242352490448735856721475625306260022338327634579483863218960189713021604374058340162879817478268896311320400935427024907872299937115878667674458494570901082210791903147151206004364128850910892512190179733983576746853124510692834110403304378183988508805646983947420299974549209519662950763156097018733065661357905142120460779273146947254095926981543175326111475835364495732470677817188832146552441552139930332238086701277874221108259025888256128861209127658043159023987114966310186989910006136268267279080051772647893114806659477299459033328734671642634822948069793513975896907315793907807201218951810262212834206364838330104666470691976814742557318317590520995786209', -); -test( - macro, - '-17', - '5678', - '308301463160662792592974191225677550213805858865919919735981762675623786601714250489696698804852341045297420123063243922100400196696349793305072692507353336241216967013579955338321444377099377319922539877186220868052446496202732277247371505550502651392252286935974933884151213108283554369258213425365822337513947069960567344400310797289631047757394436944996398072856708476570135250826251807398908611346753721594187395239741456589520555880152964355709918481651414281037119345031864349473612190232783371634279010028835470052200853299387882937134502672486160490325572916770961984349270782004601755602396869480289583861432077292039522042728544628472407886559019506167070189042096361924625145764203394220016152058200833752782786135860272071163220664632628957715045743868317244354995167227549385742687044952230405548258021083955544683907569599512046698283062653360884689200605347962098694683370357258724260056117352725577527325470851942851786836586694378752609414985480451815306391204834718631347771140575410484669506656818267247739857567770208151137491950666879071411531164773778999066561543024242136809243170757624965045375519201614760897620552430403133361040466722500087079354845734867920025285926879314249326848120872229945829401869885167283900122714895079076317869209094125931991982545556531488000512974612556335371838867029549796298764189897495724664237888752067198837966134423345547661571313151671040573897238403514602328827651572079820723701139609625952452387726428497198778814867224019443231895553458612781145096614872436875589042063008282687051858429092860711826018500930659407306718573155390037651077626487553235826051751992178074784247327240446763311187915496267026614485771849109815253713934148711216787298996520671468152820643885099705983302989002284908552857617520501529946390075868206425878082496708806322673513995979106164216776193616172985959907688824822708649852983817019144075028883180470899174789547764945602382526461092533221644053611458447978077780558970501641646067073622734477217735505282263211128124481305514353186357540419010992434002107768783355740756446187324942325654652625852412169287153813508608016280113952446920176296614253376950196475669316351020403077722724490519629898377036323360129820529281045109963371249894530276099561144042482626338772593989844316087710972792550257456128886470019096822479564940726737877698151825386119418309553408271231027478809647742899313908009933334462963092648575508695193735333743379173370627653867407320126715177974457764503548774713620560056196952152990116210197349898408972339742529128594321078656213131646113348021113593500434299052367891502628806326549121118207042607447479186463436915417026432303558853528036464975473796918542444020373057871946369301364258538966068868254352995619682873466974346238932655967123889634837113714800967760011350882223310353543059601985301931618545990512349177473607469589077686942177079271505612848872737004531036693137411376221188948435205746764410417572244552151115770898205429797968294734548429417278840745724261982834336050319128899682414411262548690370173790043028979845800173387057519576117961404309649305131253106853311405290729585498843142932710693864698111280652528337779798996371020065243801932085317018569183094721517622383953097502437063509905231723076848695664475891217676900061772996514510444773379828633675940309305355017384694473467108649959260135277673044625735731445353762845612054986937722179046658335121624623887140876084354281345305162356789678255300384384362221940169560849412314449721012605468584753472048939293608001304951329291978795373421372496969569792459269771201979081563170756324976549131692045507222783153489641325969541556371425701402301211477683080268682892338248206661170350045844352061951383330942281351775350666794898243271686809285942972250079237128202766005910057022811233073148416980300503195301226425284939582119267754559346938405839108209948260224741026519729353522763156183432819133601211163851967797956224605731130210254259956239010777634280103656590161967025286273834863275135448484296586047436588377498080471091688749259494163596420313099632079876409348525630028055176035711873634035464870888160379725751723195018099253375258568577967864792488387641817874998840468383878650374885021482953160299619530112289571703664629650689171966549636405214013448300445958738210047255092576641861296921647468062688837053654674936187674808709795653883608126278103976777614235428024410406774617308906840440399533093675542694404899247309187944909110631946845342610548908241677763415814807299529431331306295147372426206682600091831666916348144604753853633093752578611067563482135824231785498536893195996043663278185036145372756479240008651658799543396796498313843752029567365904330978277771584083764680985424357979370673048412336161600105590795221468539510721486414696405244842077338791619491047555626214572469854774642809583879845753149299202220239018392390206481186381875779757172402492713818647299968359129028554409153515978523967576074137219417098042854838667104016609738651022464948341424258581649824364793277410362004657346730312486772187893045818208465017592301709242049247100206034557497898122997305711805266614983374701841598496819251246442389163596781052495386660654519709452526951157596940799622382556542978303127167636912967999455236012568054985444079556177250723837365747957344490952925271966201701550593265443332902956508294939313094240833285876555046619359268191001846635259161706865131541180784321186186894945212300349221818709758522540187015314739189058530961568234354902922125914842193133460218438518962244238370699624523924419568327136723141811138403931677301481592189660339567894761665454562699685520993156044186932965753836572801390460509640488798964928095419008854900677851241358987176646501215201974659363616049261017603457999596184581511549579905438019185941637728665384585389583535891202008231419334008863423647112514312757047826028932882729541950746057232359164344651932902110039997136484675561126583054833776169478582845219207488207389196029054365227406667723162110887854915641006891303598854753903506554856041472945272356941328283818164784067726584990924119024325130661086148657987548771738842769797564552756354942918282971676618299580653036928287938534922839104145089706750975511251679142746672018472326704754194244955633025397110493863802050335540295002732461604260398261242352490448735856721475625306260022338327634579483863218960189713021604374058340162879817478268896311320400935427024907872299937115878667674458494570901082210791903147151206004364128850910892512190179733983576746853124510692834110403304378183988508805646983947420299974549209519662950763156097018733065661357905142120460779273146947254095926981543175326111475835364495732470677817188832146552441552139930332238086701277874221108259025888256128861209127658043159023987114966310186989910006136268267279080051772647893114806659477299459033328734671642634822948069793513975896907315793907807201218951810262212834206364838330104666470691976814742557318317590520995786209', -); -test(macro, '22', '0', '1'); -test(macro, '-22', '0', '1'); -test(macro, '22', '1', '22'); -test(macro, '-22', '1', '-22'); -test(macro, '22', '3', '10648'); -test(macro, '-22', '3', '-10648'); -test(macro, '22', '7', '2494357888'); -test(macro, '-22', '7', '-2494357888'); -test(macro, '22', '9', '1207269217792'); -test(macro, '-22', '9', '-1207269217792'); -test(macro, '22', '11', '584318301411328'); -test(macro, '-22', '11', '-584318301411328'); -test(macro, '22', '17', '66249952919459433152512'); -test(macro, '-22', '17', '-66249952919459433152512'); -test(macro, '22', '22', '341427877364219557396646723584'); -test(macro, '-22', '22', '341427877364219557396646723584'); -test(macro, '22', '24', '165251092644282265779977014214656'); -test(macro, '-22', '24', '165251092644282265779977014214656'); -test(macro, '22', '27', '1759593634476317566025195247357657088'); -test(macro, '-22', '27', '-1759593634476317566025195247357657088'); -test(macro, '22', '29', '851643319086537701956194499721106030592'); -test(macro, '-22', '29', '-851643319086537701956194499721106030592'); -test( - macro, - '22', - '1234', - '3544770596427666704933670825514058656840289167033434034813245091750883162270446675859397841986880345238161021960809170374322988214534191585053363506454126462213757244784862172250548800355120891239982462620296434675754206726427100313150523472266151826654642293138772262710079764335312817589977974888511704681598808553789636057965795110640986410281597921902662990963638641278281253781683699119666661945433104346601274970659774893661365968347766707077408549681767565454620843792569318870542401828729517938364411892509820193464655128629664809734022850771731500407885408815335930002147542787627415049845408189806745107445132307539157002401311183617949986742914159513317593667951549591942294545010053084686720365553135398975223690151357594502438362943103211174888290826883518964968656962099365383745446040058868947352605005471883468803102923319135160194367582819156826127917537651473185148386098880353425069599001396856273342875688276177114278359156141134393159654758637663041409089129911594364800818125391217718986756939362789014002086984204053324062930069928284955781180175025313587891151051182531528712430068603601480445127763661852050046817311966022046189931948955290807404661752447837636846919052423707195121151844536365697282035619507227238494415828142354268295050195101293247644044457267714935452707723243836958166570458923766194943739329318567831418083291367602614610628703776858094904109993034272453854415127335371407800891291417423473199819581953311554881626790599515656538382928587235599730899217327975918421664202906795230685640597210322674275525454392606193005351353121325240801341129111396762030413616120113277356128432334929643219670987389108486144', -); -test( - macro, - '-22', - '1234', - '3544770596427666704933670825514058656840289167033434034813245091750883162270446675859397841986880345238161021960809170374322988214534191585053363506454126462213757244784862172250548800355120891239982462620296434675754206726427100313150523472266151826654642293138772262710079764335312817589977974888511704681598808553789636057965795110640986410281597921902662990963638641278281253781683699119666661945433104346601274970659774893661365968347766707077408549681767565454620843792569318870542401828729517938364411892509820193464655128629664809734022850771731500407885408815335930002147542787627415049845408189806745107445132307539157002401311183617949986742914159513317593667951549591942294545010053084686720365553135398975223690151357594502438362943103211174888290826883518964968656962099365383745446040058868947352605005471883468803102923319135160194367582819156826127917537651473185148386098880353425069599001396856273342875688276177114278359156141134393159654758637663041409089129911594364800818125391217718986756939362789014002086984204053324062930069928284955781180175025313587891151051182531528712430068603601480445127763661852050046817311966022046189931948955290807404661752447837636846919052423707195121151844536365697282035619507227238494415828142354268295050195101293247644044457267714935452707723243836958166570458923766194943739329318567831418083291367602614610628703776858094904109993034272453854415127335371407800891291417423473199819581953311554881626790599515656538382928587235599730899217327975918421664202906795230685640597210322674275525454392606193005351353121325240801341129111396762030413616120113277356128432334929643219670987389108486144', -); -test( - macro, - '22', - '5678', - '188791183279459428032979917309231847200926168850386143505884770467168693375931895922274556902557057349070006829787284038833847205657221323086778299516173672693704766555252528139265360902778722183082662200078678453997329891537034422822575803367053904655840627755946766693757142547502052565953996363335560763158268551572751512866106778431138820615713754627823698314270698590631138259164788157389001919104523833942391091963057065922406993273787102400618472074518275818851551644852629873956788856970633475366447672782530547865741999862312938533203178291710002234858638631656516476317172691637416817888111298556457298999099751473928302529193993166300867967794207259256002142542750751106986007283388678487258401453058580610853029932752094378405105178931730860876546015936460719383487738652762837137015685750382657573311754947701500407222582281566094817174073472144811366744070419797423798544094403873094199877877853150049457040475968921734523430878675521293370360945777794830877356184006978877091885754906917991440962876015220987468233257346287046662479844768237469373754719329682306024899040352120465381043236796342435914139828201123414926711331244145922850129403791095391423842253313316894102060772814826064451102647169447140443080993464221839521726629053885287095964136013255179000177247350196068604054496565177879080513643431866167726634133898846619131635347475126027711691279901001090402999384232358268658557899584767972188754606811562218767608264930824961710835118809206445233999791639003838245009290187741328535591220360093897367352614744829186871911800346161094937089356183566076527889043149104246450652971623538711614388121183532572879725745001292012401206003161879654577991659939731216517542635503622655459132088797820236545384884194315725633695427351662866125654652037894893851700035152604437639749253793788001370984215018294940417131355604149159082298240255347039270323737033829938556652804213810754530366216244627359047801328010962028910363918606863009301850889578079483970837777414556113020756651244678945855588115566911935996323508669528384387516643242397299023508751043526450954773213552893031292302108980643471326696435902444257202942430483248169515243504400730148395387415129983474005341937524404093610934807837061631884341923871640332973833712473410511352497840950354717471207835203039728832245686598798557108303180717754281741624836460482499750093903647140024989550279346101803707104317524947924300904078402788855449767432346556247835035384556446005558861060448421141387365651441511783999354650683395274128594606161258833809729090469884846090442597192736831693121095035897380375918668414251031197753973301724588916035485541075323904538088914655589426133179024612467018336059489439900282543046314110365187230735791452277032816340183238147712040823773524149282426416491420492939282622735636049912086266615529452977045894296591781274478366606588824311816021589425349467712419121696503212958985567622927656183375686142819491308359745612172611203958699633657019779838962795602648062265858350278662630718999151751658417214897098590866440999092201908970405217151181916677531588126391148866486355596584519721899405760444541383544962722489875114029357216033135513811415437737779643777561247514270920525940156015070057021445589556923682615671082792479847690833002924073136137432397339370513067790302967340822556367795292986667622422991835236165285127792424630052345714281497090373958007873533009712803180058310323179851564088273446186130049950558067667847928286576209829335469946077179104819764051749338467796811081169318581581642850701153588880097116565036806635144191514941671379189491284471206062525996710209192630982325515553569877748865098007911563238370520552779962974699534249328592557597174798475291743896129283115647913205511724485683652165879255348366405023438903433484562441296977463064589755118577364288557833533525712147910220705629283320345221392498374920388002113076781370533887021362629864905597326338617774056928683324516257011958993549660242683378628080041274187041027497798834136787655367653313087762082861764871834770591798602251128431476037857054662472011944666943267798513485310853118021197803091306619087873370818101335777419097062662406323667850528298645645659705841302522876053300363978267616708413039423577121433189797240232888355212252359572984976125208566821140812480736284072108352440262297665734819819192122502735544582352754969285563661193235781572915221488949701772581090470157333949943304303258562699351706132291487263002827565568137178391760246763425471476903399001677140103838451942491852797942220150718465024075126021867404930949262237514847293928201986505952400034942909184404021589066392741316625432520165649180730478556845798056299390529868233644331355976433410122475395339372683857077054367193114853723272384165320308359895327456012695111158341679642973786987974118879672101864000622440671637727905844446346659140267379540618189466479973512691352669908635579670046572643071543414288852945575507001364000587388365403163906923211010169649609787771443144617832964226341728880822040252791050573628058886465561125429540997997868877363781470212869288169031000314873670199023295575975029256888216051199783236003631198408646449546200837126408047806205375568516286244938833513923703107122664057553162916061895211874413026882293647396162003729561243896593367071601927468297455059908329773843490942712555322638331213927467737996161390460580291397428087241641827588245090045532168071664305848368946557531242866689515860672755630196510501059011076815782465524313305009301928730197566296410986829702452451693715022525438145214864666547710131393893422930433170192612410872699695903278923467086552431305253131022041442224030817136355438528522927710943963127661600938420524965868054868420789110281366652020715320237791007498809737701793479928444775909635220385965554432486139403818709288893492972588178924163488669440430698055258217332383878998815578776861203408118636769740672061660441927713102293878635124860434685746066579552625545433283636852639248738646856738605099028379736959929344991408860138578579292810759278795009828170173218117855426563489356914140296451669797511966308454520777982547536269136517098058706965105246074767227371117788844144579058151777933868930309861162765115846938463381459853947747275772776398557035107245698846181277540908832896814422527395488764190929404319672627395382255601482932675915638164367605784383912597789157118099369129866134453961147524445310724935291432570358456707042196935301261866358927798468810349341142291611156159359534617856444941265047694063906146162911324572161847512820145217043951957402547150640394819164257476384755090115583219631277624937601796185647361374464816722286079605798681157282804842881477768712666527405194818777681881080754221642693036637898043597600173291293530540776397593912983219493509839629946441187964692468617078532810433116136093659551535138860229829786694832025732595062223913257013909834336129848617643821876714991430811032042401672948443617106295564657838664397093430728751201194167005351810695181731189639616620396686825283143974008053920667467718924710366948369410543884199762061772961627365614073985761451542908159022475474594645453428260577023270323956122594107262708230204278635766614607705687764981980866116553659699581936921712862570741253541801805383105858152652730146528763628550254584923431153812726414403489380619446609235095663174700659695093931838433555356529154564055522469749278362012539004460570850761165655051971287648503799979759701767311217436978364357210522552286818202064756315420591610749979193377628867887418264504475624922321666517244630230702755729863166168476152067458807632513614287747416064', -); -test( - macro, - '-22', - '5678', - '188791183279459428032979917309231847200926168850386143505884770467168693375931895922274556902557057349070006829787284038833847205657221323086778299516173672693704766555252528139265360902778722183082662200078678453997329891537034422822575803367053904655840627755946766693757142547502052565953996363335560763158268551572751512866106778431138820615713754627823698314270698590631138259164788157389001919104523833942391091963057065922406993273787102400618472074518275818851551644852629873956788856970633475366447672782530547865741999862312938533203178291710002234858638631656516476317172691637416817888111298556457298999099751473928302529193993166300867967794207259256002142542750751106986007283388678487258401453058580610853029932752094378405105178931730860876546015936460719383487738652762837137015685750382657573311754947701500407222582281566094817174073472144811366744070419797423798544094403873094199877877853150049457040475968921734523430878675521293370360945777794830877356184006978877091885754906917991440962876015220987468233257346287046662479844768237469373754719329682306024899040352120465381043236796342435914139828201123414926711331244145922850129403791095391423842253313316894102060772814826064451102647169447140443080993464221839521726629053885287095964136013255179000177247350196068604054496565177879080513643431866167726634133898846619131635347475126027711691279901001090402999384232358268658557899584767972188754606811562218767608264930824961710835118809206445233999791639003838245009290187741328535591220360093897367352614744829186871911800346161094937089356183566076527889043149104246450652971623538711614388121183532572879725745001292012401206003161879654577991659939731216517542635503622655459132088797820236545384884194315725633695427351662866125654652037894893851700035152604437639749253793788001370984215018294940417131355604149159082298240255347039270323737033829938556652804213810754530366216244627359047801328010962028910363918606863009301850889578079483970837777414556113020756651244678945855588115566911935996323508669528384387516643242397299023508751043526450954773213552893031292302108980643471326696435902444257202942430483248169515243504400730148395387415129983474005341937524404093610934807837061631884341923871640332973833712473410511352497840950354717471207835203039728832245686598798557108303180717754281741624836460482499750093903647140024989550279346101803707104317524947924300904078402788855449767432346556247835035384556446005558861060448421141387365651441511783999354650683395274128594606161258833809729090469884846090442597192736831693121095035897380375918668414251031197753973301724588916035485541075323904538088914655589426133179024612467018336059489439900282543046314110365187230735791452277032816340183238147712040823773524149282426416491420492939282622735636049912086266615529452977045894296591781274478366606588824311816021589425349467712419121696503212958985567622927656183375686142819491308359745612172611203958699633657019779838962795602648062265858350278662630718999151751658417214897098590866440999092201908970405217151181916677531588126391148866486355596584519721899405760444541383544962722489875114029357216033135513811415437737779643777561247514270920525940156015070057021445589556923682615671082792479847690833002924073136137432397339370513067790302967340822556367795292986667622422991835236165285127792424630052345714281497090373958007873533009712803180058310323179851564088273446186130049950558067667847928286576209829335469946077179104819764051749338467796811081169318581581642850701153588880097116565036806635144191514941671379189491284471206062525996710209192630982325515553569877748865098007911563238370520552779962974699534249328592557597174798475291743896129283115647913205511724485683652165879255348366405023438903433484562441296977463064589755118577364288557833533525712147910220705629283320345221392498374920388002113076781370533887021362629864905597326338617774056928683324516257011958993549660242683378628080041274187041027497798834136787655367653313087762082861764871834770591798602251128431476037857054662472011944666943267798513485310853118021197803091306619087873370818101335777419097062662406323667850528298645645659705841302522876053300363978267616708413039423577121433189797240232888355212252359572984976125208566821140812480736284072108352440262297665734819819192122502735544582352754969285563661193235781572915221488949701772581090470157333949943304303258562699351706132291487263002827565568137178391760246763425471476903399001677140103838451942491852797942220150718465024075126021867404930949262237514847293928201986505952400034942909184404021589066392741316625432520165649180730478556845798056299390529868233644331355976433410122475395339372683857077054367193114853723272384165320308359895327456012695111158341679642973786987974118879672101864000622440671637727905844446346659140267379540618189466479973512691352669908635579670046572643071543414288852945575507001364000587388365403163906923211010169649609787771443144617832964226341728880822040252791050573628058886465561125429540997997868877363781470212869288169031000314873670199023295575975029256888216051199783236003631198408646449546200837126408047806205375568516286244938833513923703107122664057553162916061895211874413026882293647396162003729561243896593367071601927468297455059908329773843490942712555322638331213927467737996161390460580291397428087241641827588245090045532168071664305848368946557531242866689515860672755630196510501059011076815782465524313305009301928730197566296410986829702452451693715022525438145214864666547710131393893422930433170192612410872699695903278923467086552431305253131022041442224030817136355438528522927710943963127661600938420524965868054868420789110281366652020715320237791007498809737701793479928444775909635220385965554432486139403818709288893492972588178924163488669440430698055258217332383878998815578776861203408118636769740672061660441927713102293878635124860434685746066579552625545433283636852639248738646856738605099028379736959929344991408860138578579292810759278795009828170173218117855426563489356914140296451669797511966308454520777982547536269136517098058706965105246074767227371117788844144579058151777933868930309861162765115846938463381459853947747275772776398557035107245698846181277540908832896814422527395488764190929404319672627395382255601482932675915638164367605784383912597789157118099369129866134453961147524445310724935291432570358456707042196935301261866358927798468810349341142291611156159359534617856444941265047694063906146162911324572161847512820145217043951957402547150640394819164257476384755090115583219631277624937601796185647361374464816722286079605798681157282804842881477768712666527405194818777681881080754221642693036637898043597600173291293530540776397593912983219493509839629946441187964692468617078532810433116136093659551535138860229829786694832025732595062223913257013909834336129848617643821876714991430811032042401672948443617106295564657838664397093430728751201194167005351810695181731189639616620396686825283143974008053920667467718924710366948369410543884199762061772961627365614073985761451542908159022475474594645453428260577023270323956122594107262708230204278635766614607705687764981980866116553659699581936921712862570741253541801805383105858152652730146528763628550254584923431153812726414403489380619446609235095663174700659695093931838433555356529154564055522469749278362012539004460570850761165655051971287648503799979759701767311217436978364357210522552286818202064756315420591610749979193377628867887418264504475624922321666517244630230702755729863166168476152067458807632513614287747416064', -); -test(macro, '24', '0', '1'); -test(macro, '-24', '0', '1'); -test(macro, '24', '1', '24'); -test(macro, '-24', '1', '-24'); -test(macro, '24', '3', '13824'); -test(macro, '-24', '3', '-13824'); -test(macro, '24', '7', '4586471424'); -test(macro, '-24', '7', '-4586471424'); -test(macro, '24', '9', '2641807540224'); -test(macro, '-24', '9', '-2641807540224'); -test(macro, '24', '11', '1521681143169024'); -test(macro, '-24', '11', '-1521681143169024'); -test(macro, '24', '17', '290797794982682557415424'); -test(macro, '-24', '17', '-290797794982682557415424'); -test(macro, '24', '22', '2315513501476187716057433112576'); -test(macro, '-24', '22', '2315513501476187716057433112576'); -test(macro, '24', '24', '1333735776850284124449081472843776'); -test(macro, '-24', '24', '1333735776850284124449081472843776'); -test(macro, '24', '27', '18437563379178327736384102280592359424'); -test(macro, '-24', '27', '-18437563379178327736384102280592359424'); -test(macro, '24', '29', '10620036506406716776157242913621199028224'); -test(macro, '-24', '29', '-10620036506406716776157242913621199028224'); -test( - macro, - '24', - '1234', - '151590600073425387047449072838201737923790545622778515405542489295365280374802003092345748753681766769342781749881287249346464958055559009581857595198530089819230481306713155507019243375785757736393010981297487306518434496622971579086045332205893329146303230768285811255525374621247345141815714309058936253285898983419720608226966436915189967268919455309262250618242751360361248909034678867178267283386443504378478143195886936482599662011569578168577981039494263767900563281750273077550310292671674973097829744745890473331477918697103083690536733167341918362953786259364594330084180149751256516756030378850936663791973239733978417672189517102102223884258181339830461602957890003315317105400603981501400219540598427784828262715802695138377182060865841593833485720205274139142676664443049548450410277812263367703519777502927932788452627831274636998616672291216489574557549335055172197580577132711118453026428882649878235139444805201982069512799047951007377619920034219848761549071361411729427628794049204602980944425540332659900016630759739316868023749785700349807321646264995322781924302276013058208345925931493883895500465669887594678839788578637461303074752727476500990640364376722701859400316730559885693050235239674548455869510362677791910042980988146640583541719495331021584874341075294784062883967560447377347188388603280434006674600263225696860648015867438392697049466565415507219522458255386701717251429282388492292922044650917640291089769306296653188826596134691225361787940784064160312363042310597352769798472903809450672123731170381463659456013676278088123310449702495131987916252551416683646406232220563855513976356100126013273624446723135664155744771247145879322648352616000381514511103819776', -); -test( - macro, - '-24', - '1234', - '151590600073425387047449072838201737923790545622778515405542489295365280374802003092345748753681766769342781749881287249346464958055559009581857595198530089819230481306713155507019243375785757736393010981297487306518434496622971579086045332205893329146303230768285811255525374621247345141815714309058936253285898983419720608226966436915189967268919455309262250618242751360361248909034678867178267283386443504378478143195886936482599662011569578168577981039494263767900563281750273077550310292671674973097829744745890473331477918697103083690536733167341918362953786259364594330084180149751256516756030378850936663791973239733978417672189517102102223884258181339830461602957890003315317105400603981501400219540598427784828262715802695138377182060865841593833485720205274139142676664443049548450410277812263367703519777502927932788452627831274636998616672291216489574557549335055172197580577132711118453026428882649878235139444805201982069512799047951007377619920034219848761549071361411729427628794049204602980944425540332659900016630759739316868023749785700349807321646264995322781924302276013058208345925931493883895500465669887594678839788578637461303074752727476500990640364376722701859400316730559885693050235239674548455869510362677791910042980988146640583541719495331021584874341075294784062883967560447377347188388603280434006674600263225696860648015867438392697049466565415507219522458255386701717251429282388492292922044650917640291089769306296653188826596134691225361787940784064160312363042310597352769798472903809450672123731170381463659456013676278088123310449702495131987916252551416683646406232220563855513976356100126013273624446723135664155744771247145879322648352616000381514511103819776', -); -test( - macro, - '24', - '5678', - '6909242543227743353809302095921095536524473561057165844581679410386766748488604299037026802190036290972523220194842752741485565945649373120593235468335848253481678944344897925015389714826413349410177631790045031943248773428879772739522827289604213275638780181896952443263073559712416131489957618900530740123400118237435413354649143060792875091318278585372437653470273949962335683216876622997736142741297958867176104235205056075719300228586105300420306369433989133325438387954921091906656969473369516356480833865066363304713540618192703365037455056012113960923122124179128736981338610956142771571808684231131105687569641388188446317730999584880794042484851478768133389844980164151720217542320262939508347691682342138522778060463084758675137561278861799859513960422378371775012031341809600887021827399844120518619103264164650677563352321974137647628478200600886109391143827381751378326104568910362334391415559848713463581352282420781294283758639369444314274599463207309901919833477647095250455332103956624216723089194770241296308302890710708138463591594108491375387092442160498438129101391736935004797211781736084624679135725046642935877005904500941008512545713383636775910913769118763901254831863898567559039792892496993193767213865404695189447620717191889574607271221253734214207606509303815710653198438402041521568515611813364721395336273048987799371934481049393697436377986134414568848925779333002134965587464106528152928197340289146528067712765151185247134251516207138782552793628345378997820905660194178001186994530020474952912269460972371580105721313532384574354540871635624041776046333388469745473028713013516683096356715177489532374407329471698695330614689214238225012907430432633909454857348989628051205236149551583947299465167194467668846336660944015180433931614586767779054115885111857540745528169992322163207044044488670657531868958992608214820354213074535958852759290564716927478198823333373374937720003672027398087124135343370691960382869258899427129220320143902491278793813238430465235860186960018237027526759813434944109474246741949527335246220480560254865111600632880608044682824898931874699864943855203431042365227377620680321459660987508307256592281727918306852635765535692503733218735444193207821083815581499399442219650000118107924012043499451238573570094079990109299190701814648807629227553766337073738504785496741973216586368345759189450452701067651649687981494044123926355817855226945627140031748054123594178696095671207794087457165269491338522780645313431934736643701650275328610821351006893740759674097541752357384338680350586790224882237683629538804015848469557782536191568984440803205429574817416905810035999083705208747035308838067377457376573948667705334690478735291850144203728342247634285563284902811919599506802960145211594874021503961512312094455587567697236904427829310783955019968993798633410220915273077833273759995480078554390567958801041571463441272562445362793890427049722892579012150812992897784399765836371711342270697399079409268621338465141537827604272596264561524757775919137279622148165105100726581985370376533708520083031902822380651049138314828258157760660361052917356148361076858029197983199714799549388753138873630163899577287697011072200217713083219980223308329072386564251855404194759034472140811253397135777998749327737590240550674739896553325406340850660822401505867952863442378032198550214676960873593184653003702714053785570797139346858405632080994993407154375607762459908870347788282713628065134448424324925307478350063149225594053973115267392759652869926859055261981795715793911665450618835722442776629043819843412433877325397811994145386781513794026045770684736082651288118224886713369764471121039811165405122248681255438916750835952141059316087666360985121458782402604238437689336401689176904961406119640521283036564242883812119616205627240236429984215840153559625562378652590836660740334768903772785794796630784565702603904128880950290899077458848713352239690752094902536139625944326846369933673626859584112711752192959568868026727635227118775593609034554724305741667971932241251649212234621343015740929858616626107670522527456130285503983446125409978068781856751731806377464920495450984236307279195922116693350211579310114468642544808587506381899146228392160338911761298983523394475914069925661336317688601614635176466936516650628457951262007237173667306984959634154161894116260039666735252234838350152349621573967073004378209996258899425957230823935962484203146411470794692397709720438221504023967184703626974385880417280024680786833273012433711625620042440253039851842539066103583671616276204858517722243909738410395578467951278134847051746601519549418794912211694740522839231762718034975617793333279450013015728897326891841305278169840750523025407888699660353086878542323408902020520745137853306948470924526832755671922980299901111454489829178447374350297734241924593197533476648287362705907326587903971144933195960309922016559115259145542602390960186986114826396112061139400167607740086448386211148049775587962761029591347975930271748327096753101637755673736334797475756177782477162997340502006754139409837932248709217588171272019845846608674183857309614487497423529281774820812855625200995143972487433890984243531847462852919240554641115522799596773636837906026144057598069511617898449948350572214384921080971973902502402211568802750379122998511274466017974941804703068336349215856446000530541951506765590932187755221324429657770293929726963214364914920312944839250592743611686981542097230343416941015181738191936768424805774791532673824342775520989922696032234542390090970378211787898110639660594600049631415764918868664882579924419113193629865077574463611875775532515680395533801486247525366388744886221612290889104531414904759924423276133269774474452875660758985017677276475305727162499245682784233172420800860481499133924145865006672545584647252606595826412236376706363585768675313853908404643815973889284292155410703372372413690775754902752855223760995153783326936793360537270982814844058735862825288469622833678311343943432205861271223777059946323093642457760026188705359296753808062709160061509562758124516997994361930873438768495782976556725650123698976773727667700766538233502587452020369593449922805037117490069737863202092655675092095120263618908362070898189610949764500023308769612177756951169777556263087771050269419640346318095925480284387495101736136602935813966818000418340535260863387002103707013222602870150906297763302008471389096475403406466296868498675202862934711769313692649420019010134057017438532712341527913711423268858441655875081926096567951606219719933592384316299968711193818524843736420584441099884547446077376494324792588069639621837526038238059880241227778527626618221494264760180657732801612348589103290695260992552373632950395780820971888676534078241816018476901814022905750537014600909836985401547164897051750176229167184596483534227572123935968337358752623038645346798033051576788492613747977196321371756084172394656509906994497839796532944821661702141307321688426555797056528768304358309636187850354312111960227634944375652263825013063956181739704664262214737743372154205999348652610776761883817832581027315985029870825344987010322787125818214235132013611644153949859858447569681743008753567948866312695912331296212062406828770679518938594754011864087516302762316464021883336600792442268009755925214689196103335236650748927588009005181069463851717820411294243164434618318426347580730703078170070907659408761721872488572982052027987813740488362497448333259178540819360984769894490609499528923446089556631606201168915777672445957547945071192408471582321347458393347744642123820014403943301956456199036248285841251751630923650699885800543144864303330551321206054023250603498937703173818262472928828604335469562756457727795232009580481882359659372911042201823035731975439128565006789723919934319797028003654293808085441085447766777266176', -); -test( - macro, - '-24', - '5678', - '6909242543227743353809302095921095536524473561057165844581679410386766748488604299037026802190036290972523220194842752741485565945649373120593235468335848253481678944344897925015389714826413349410177631790045031943248773428879772739522827289604213275638780181896952443263073559712416131489957618900530740123400118237435413354649143060792875091318278585372437653470273949962335683216876622997736142741297958867176104235205056075719300228586105300420306369433989133325438387954921091906656969473369516356480833865066363304713540618192703365037455056012113960923122124179128736981338610956142771571808684231131105687569641388188446317730999584880794042484851478768133389844980164151720217542320262939508347691682342138522778060463084758675137561278861799859513960422378371775012031341809600887021827399844120518619103264164650677563352321974137647628478200600886109391143827381751378326104568910362334391415559848713463581352282420781294283758639369444314274599463207309901919833477647095250455332103956624216723089194770241296308302890710708138463591594108491375387092442160498438129101391736935004797211781736084624679135725046642935877005904500941008512545713383636775910913769118763901254831863898567559039792892496993193767213865404695189447620717191889574607271221253734214207606509303815710653198438402041521568515611813364721395336273048987799371934481049393697436377986134414568848925779333002134965587464106528152928197340289146528067712765151185247134251516207138782552793628345378997820905660194178001186994530020474952912269460972371580105721313532384574354540871635624041776046333388469745473028713013516683096356715177489532374407329471698695330614689214238225012907430432633909454857348989628051205236149551583947299465167194467668846336660944015180433931614586767779054115885111857540745528169992322163207044044488670657531868958992608214820354213074535958852759290564716927478198823333373374937720003672027398087124135343370691960382869258899427129220320143902491278793813238430465235860186960018237027526759813434944109474246741949527335246220480560254865111600632880608044682824898931874699864943855203431042365227377620680321459660987508307256592281727918306852635765535692503733218735444193207821083815581499399442219650000118107924012043499451238573570094079990109299190701814648807629227553766337073738504785496741973216586368345759189450452701067651649687981494044123926355817855226945627140031748054123594178696095671207794087457165269491338522780645313431934736643701650275328610821351006893740759674097541752357384338680350586790224882237683629538804015848469557782536191568984440803205429574817416905810035999083705208747035308838067377457376573948667705334690478735291850144203728342247634285563284902811919599506802960145211594874021503961512312094455587567697236904427829310783955019968993798633410220915273077833273759995480078554390567958801041571463441272562445362793890427049722892579012150812992897784399765836371711342270697399079409268621338465141537827604272596264561524757775919137279622148165105100726581985370376533708520083031902822380651049138314828258157760660361052917356148361076858029197983199714799549388753138873630163899577287697011072200217713083219980223308329072386564251855404194759034472140811253397135777998749327737590240550674739896553325406340850660822401505867952863442378032198550214676960873593184653003702714053785570797139346858405632080994993407154375607762459908870347788282713628065134448424324925307478350063149225594053973115267392759652869926859055261981795715793911665450618835722442776629043819843412433877325397811994145386781513794026045770684736082651288118224886713369764471121039811165405122248681255438916750835952141059316087666360985121458782402604238437689336401689176904961406119640521283036564242883812119616205627240236429984215840153559625562378652590836660740334768903772785794796630784565702603904128880950290899077458848713352239690752094902536139625944326846369933673626859584112711752192959568868026727635227118775593609034554724305741667971932241251649212234621343015740929858616626107670522527456130285503983446125409978068781856751731806377464920495450984236307279195922116693350211579310114468642544808587506381899146228392160338911761298983523394475914069925661336317688601614635176466936516650628457951262007237173667306984959634154161894116260039666735252234838350152349621573967073004378209996258899425957230823935962484203146411470794692397709720438221504023967184703626974385880417280024680786833273012433711625620042440253039851842539066103583671616276204858517722243909738410395578467951278134847051746601519549418794912211694740522839231762718034975617793333279450013015728897326891841305278169840750523025407888699660353086878542323408902020520745137853306948470924526832755671922980299901111454489829178447374350297734241924593197533476648287362705907326587903971144933195960309922016559115259145542602390960186986114826396112061139400167607740086448386211148049775587962761029591347975930271748327096753101637755673736334797475756177782477162997340502006754139409837932248709217588171272019845846608674183857309614487497423529281774820812855625200995143972487433890984243531847462852919240554641115522799596773636837906026144057598069511617898449948350572214384921080971973902502402211568802750379122998511274466017974941804703068336349215856446000530541951506765590932187755221324429657770293929726963214364914920312944839250592743611686981542097230343416941015181738191936768424805774791532673824342775520989922696032234542390090970378211787898110639660594600049631415764918868664882579924419113193629865077574463611875775532515680395533801486247525366388744886221612290889104531414904759924423276133269774474452875660758985017677276475305727162499245682784233172420800860481499133924145865006672545584647252606595826412236376706363585768675313853908404643815973889284292155410703372372413690775754902752855223760995153783326936793360537270982814844058735862825288469622833678311343943432205861271223777059946323093642457760026188705359296753808062709160061509562758124516997994361930873438768495782976556725650123698976773727667700766538233502587452020369593449922805037117490069737863202092655675092095120263618908362070898189610949764500023308769612177756951169777556263087771050269419640346318095925480284387495101736136602935813966818000418340535260863387002103707013222602870150906297763302008471389096475403406466296868498675202862934711769313692649420019010134057017438532712341527913711423268858441655875081926096567951606219719933592384316299968711193818524843736420584441099884547446077376494324792588069639621837526038238059880241227778527626618221494264760180657732801612348589103290695260992552373632950395780820971888676534078241816018476901814022905750537014600909836985401547164897051750176229167184596483534227572123935968337358752623038645346798033051576788492613747977196321371756084172394656509906994497839796532944821661702141307321688426555797056528768304358309636187850354312111960227634944375652263825013063956181739704664262214737743372154205999348652610776761883817832581027315985029870825344987010322787125818214235132013611644153949859858447569681743008753567948866312695912331296212062406828770679518938594754011864087516302762316464021883336600792442268009755925214689196103335236650748927588009005181069463851717820411294243164434618318426347580730703078170070907659408761721872488572982052027987813740488362497448333259178540819360984769894490609499528923446089556631606201168915777672445957547945071192408471582321347458393347744642123820014403943301956456199036248285841251751630923650699885800543144864303330551321206054023250603498937703173818262472928828604335469562756457727795232009580481882359659372911042201823035731975439128565006789723919934319797028003654293808085441085447766777266176', -); -test(macro, '27', '0', '1'); -test(macro, '-27', '0', '1'); -test(macro, '27', '1', '27'); -test(macro, '-27', '1', '-27'); -test(macro, '27', '3', '19683'); -test(macro, '-27', '3', '-19683'); -test(macro, '27', '7', '10460353203'); -test(macro, '-27', '7', '-10460353203'); -test(macro, '27', '9', '7625597484987'); -test(macro, '-27', '9', '-7625597484987'); -test(macro, '27', '11', '5559060566555523'); -test(macro, '-27', '11', '-5559060566555523'); -test(macro, '27', '17', '2153693963075557766310747'); -test(macro, '-27', '17', '-2153693963075557766310747'); -test(macro, '27', '22', '30903154382632612361920641803529'); -test(macro, '-27', '22', '30903154382632612361920641803529'); -test(macro, '27', '24', '22528399544939174411840147874772641'); -test(macro, '-27', '24', '22528399544939174411840147874772641'); -test(macro, '27', '27', '443426488243037769948249630619149892803'); -test(macro, '-27', '27', '-443426488243037769948249630619149892803'); -test(macro, '27', '29', '323257909929174534292273980721360271853387'); -test(macro, '-27', '29', '-323257909929174534292273980721360271853387'); -test( - macro, - '27', - '1234', - '200856075209902212199811223498516329401019153294330654484899457135661710831649025094793443576863417869675999053574959337346792532217485737202817800641723197630343724422691567676966750017719674361721564299756255063995170624987815873886816573528036690980712399472082918987467608319915320632750007215671073941033733822406638067457070592416925055525002249965214978226439419675794443664397992725836030753072150525500182271105668883387299438014566998450801673929744863349108063057027323538841038850392906331064754828529624866950550712400849201192591205142296901842010465055290151680972126095024443830456846851602321575873316021498267598562024770678289890230706320997870461736064158216930272006483331205888383426585499224333788304253250735446206878459830691428518801804316734865056012563110060177249063533223360212951908142458456167777780005320459640618276526423350311574957115723697862633038912990076590485058168720523332363832907739630745212612829631298739740918292687323963984732777515115303964140679392026532299969353302111690876222512591852054954749110470134966527453125805201071472068728012702260328777663337721407575454838256471452852284288283640249611394712320213997254539391537655386427263371372214172403860536953046790124191276197581019979325589039334200287751090718265018203205058843589368322867283544158866611521312017186795565242663733214746314148048347376472660469372081324221562030477828367398702782252799482995882978202357840004609118497407774448098166472475681019210778338607385302368427582889110199771043940039384173696648402793417875142304690934448344767850874922126620454594771669567183452729544713864889437820573063999170931037181075406666631149358312284169719891882097692840499902508546688352472767932029187479332141883194288344509584921993462900826009', -); -test( - macro, - '-27', - '1234', - '200856075209902212199811223498516329401019153294330654484899457135661710831649025094793443576863417869675999053574959337346792532217485737202817800641723197630343724422691567676966750017719674361721564299756255063995170624987815873886816573528036690980712399472082918987467608319915320632750007215671073941033733822406638067457070592416925055525002249965214978226439419675794443664397992725836030753072150525500182271105668883387299438014566998450801673929744863349108063057027323538841038850392906331064754828529624866950550712400849201192591205142296901842010465055290151680972126095024443830456846851602321575873316021498267598562024770678289890230706320997870461736064158216930272006483331205888383426585499224333788304253250735446206878459830691428518801804316734865056012563110060177249063533223360212951908142458456167777780005320459640618276526423350311574957115723697862633038912990076590485058168720523332363832907739630745212612829631298739740918292687323963984732777515115303964140679392026532299969353302111690876222512591852054954749110470134966527453125805201071472068728012702260328777663337721407575454838256471452852284288283640249611394712320213997254539391537655386427263371372214172403860536953046790124191276197581019979325589039334200287751090718265018203205058843589368322867283544158866611521312017186795565242663733214746314148048347376472660469372081324221562030477828367398702782252799482995882978202357840004609118497407774448098166472475681019210778338607385302368427582889110199771043940039384173696648402793417875142304690934448344767850874922126620454594771669567183452729544713864889437820573063999170931037181075406666631149358312284169719891882097692840499902508546688352472767932029187479332141883194288344509584921993462900826009', -); -test( - macro, - '27', - '5678', - '1920670627041206840774317663061948531951548392586808036968655466513575530956212975774514238251197579090763349520005051835865042160772589169624476421706202590867860836690838786680450886141750404308408100197254742949071761592216668354595970793821666614574491628116021852490928266530039402274346603263915374906973045214520217579266276548940290197959870301983972948179342634336579386358378974195640173820826951706289068255636419593014486343794593987163856420064173623896766989137738772776377427442097331419584717293530596353658978697049818315083325917184148323246870360758039957677823155528069256344361615958925614299682556146381515609616001741477538909124857988462042152583475858959708352329078738601094623969648315977840331485254209899871646649972472372095452648168794559531587891304723383377106143342610066593596322450066346593064250164293612171399887948611723002687714633034005580022925175850122398245122163141238188056618415646875743299757508586238824342158406775418269157574948228511042170075383701360380600119963052883698603996010908136679734984191666988039630564578030822333416473331686176299575683617183902279297306358801915764702865246245093148511987518794036684029774730705063803579378907496553385221304907007953529232866068390828615106548652525036824065996249327562337880011776639185551336530505634619418517450596528181304358633713465477039574138461504506994233623242585354356605524242258852820324114074452649908604782399002596550916153410839185516390213358357834548623096143445732587215823810288043211299034382028751910218222923967466149776778576877664248973225249782758952557190800287368177398454902378376415868362035425615655624682981455869051819800859456132732320054055510566958251135161043336938045009646963245189593774509479550785046075894792169710218139317967718680527440283599846493280581066859320369808514616618064316610685296144379483228881158978531428541323976687007318478840124238398533801496097297015071332134452660846054421428149909225409769221839051449083375270329899898374485884886887125190469494156954015355114580948849208785046347459412975637271976882114713062112330537331127876640249342310281450813349286664902834009007280339950648850700440708748555487997305797417944284640312847154412547496220096692340189416832210466282566649332925837995666008798051378581959040498954085132477390853383093481176129650878445248789958824391345493197569531442806979176311248211412871040845844736158339923712459547591539550415996003282072387219018911765803789518884827791568134984700358743507239288171453633843763592103578573012447420761597931062446196749823913274155393819970124816742398443420049898048112792722620849282590853010364704986150303874501432870838621770926441069468404770404373890675534844221570867260548530639691411361203218650846445492626294997020128545271334888747901443583519313242322333157269016724544126555722125271718466441377338744197144665139930690040364724035268720548346016327799586536627059546835935892111936009551045577780871821958233775831514715738552477848906407293516034093463840649146923172863395128138438835433544718807766062278768770741451744867618368286602135404656520890155890101238524261112587615907631923684591193938770711298726617459834584716577454226046024456280984368570829122148771541978532132344153800979821391341346004725017526699171610089317393609489521109593485218609778690258066523564081395391334194325940849299429508434537825642151593153347775123712329348554222878530900249479115866329061956089475067568518232744646491234812061940598193564767933639294691752620290371604670392024822794195223184833997452082017311737450285129468363744078154728675038628714333873175144570204913129267965199303431706858336186755042226231183468843385119778696375795488511428939963856300359813082019502017643381504199506863718337397994274997752254757708272367666078675965040032039655925062247707075636789805274539053194840259610422752138553537725180597167371438930229420783619411928005931473865400477223675968308708249216344281666556496504984085949177728422334819418475038623078588714141499380129463420875932101260033375811625528931966565505132882422386608325523560248190689939207313386561886327643980713525129761663096753770390758712896499116510493355246860369384153391737470406874172921606838934727403098744014663071565032303777192174084122582946730008756106536993815320872157236729317634745631667114394136303705919618073684341874403244980777746281597675723918499517754138950341742429841628648421346110812738800865692526985004078449939939783096689246579006137481593969321838858087486685024934605209896758266277194033480123936439845801365328872002053460702803079717583034058121243760136910286949853216903677522250905510392566713879118017180689421758716319873286365642344743985956630970396015789433527653341599927766716994599791600982672311972370893852024580742922038592291822037985280439374076859860760447456227214570107076713441371110040481866528520446919136604157813535069283884957393825645814464806264277503491404782371252976040724254957145667674092298268073285259823296618873217871906591552510862582155404488921608024654326375619469231209031828858072396365212385640204416236746788303867620644842086149794597453008219491687259712252301584276458360737524420726294591150435186990238809185847919451252123489656372496043613842279955888472720044814213508941637152519990348407148927393875038476852404825802087693473325854313140587032371097348401164191468159425742186705236542204710037466387769479015379900734664129501511212299294684814946146327048005184836003000107105496191991647505947395678538952761563693653092396057893346156774141317075936232087744314496490509956837645841465967388142202300490064869619347902652823984909945873701021070634445104869604603785547980280081380393790903364474376364758613264472606771556227675845245248027497873498296375511004458930274898993867038605298383591809404357101355240283437176300862637920738599498741746521150167455353523330927129326274447459351643494051864005920884002398608267587991014622605843142855151877012756952553990368252360102557816678486685822969507404277254601956581010759230620724352157677998795938501832890979436797552440883742531302558570709076361709043133531426503972386170819272650464336778033158976021327334838579925495189278796979109139792191232782473002231837350047198764643616374041356297768694046950486001246185234359318391038800197857746441789669972513126194313149333382712207147511481557975622743732344202629767274244165956943548372982915991124491226134463115022810739060569665040240717572615620932472093174981002205974542066246133177952669421013895627060630464567760434256996281799968688229590092429649604880061340304296561685165836856606423053897026939262772456099432796351052849390003427289920795408775824445019032961645886626504591512212048335924123109654993739800469629501329929168753430905653421576424474668087832145303326186917347787604661201427588255288110103869986804399331506635536060487601890785562151210207595887133197464066346972583280471678345734031148539530692397993301487901118668413151152739493110857842168357407107810369630513619746957021035200287975064451571078331784369474527599711715767496931770063061477359695737750256984149156979906478297668490377273421425063634135938949613904319446351606432659158890010438536452763547944727936040394443661905803287318582738928999257571951746826811304523891797753282572538169266332939635099581060985026521423506192706942972853666059905273146115417304211233570424956603493273168920814813255134455438235602527751336570402852196721589759010458939788308886259589255589838453865926112669922271314441973202683425050250138493114016754036551602588968457859033236160720022442073508673912688509196121011581235868256299459315148083511624384602779057762575835218305144492664825432085770601166428566236259201040157805073745401588372353777316940550146420767400912250370939891562978931549393144124943754754417984294956325477143759436596679468856665971712954391480006376974981025962172422482296884009980457223252674173743660093454998272067099021050616490581360309414669608617227081755602192101247842052099617282451750980683945908343300229792225173818905754262604195304086203817551885146682726569', -); -test( - macro, - '-27', - '5678', - '1920670627041206840774317663061948531951548392586808036968655466513575530956212975774514238251197579090763349520005051835865042160772589169624476421706202590867860836690838786680450886141750404308408100197254742949071761592216668354595970793821666614574491628116021852490928266530039402274346603263915374906973045214520217579266276548940290197959870301983972948179342634336579386358378974195640173820826951706289068255636419593014486343794593987163856420064173623896766989137738772776377427442097331419584717293530596353658978697049818315083325917184148323246870360758039957677823155528069256344361615958925614299682556146381515609616001741477538909124857988462042152583475858959708352329078738601094623969648315977840331485254209899871646649972472372095452648168794559531587891304723383377106143342610066593596322450066346593064250164293612171399887948611723002687714633034005580022925175850122398245122163141238188056618415646875743299757508586238824342158406775418269157574948228511042170075383701360380600119963052883698603996010908136679734984191666988039630564578030822333416473331686176299575683617183902279297306358801915764702865246245093148511987518794036684029774730705063803579378907496553385221304907007953529232866068390828615106548652525036824065996249327562337880011776639185551336530505634619418517450596528181304358633713465477039574138461504506994233623242585354356605524242258852820324114074452649908604782399002596550916153410839185516390213358357834548623096143445732587215823810288043211299034382028751910218222923967466149776778576877664248973225249782758952557190800287368177398454902378376415868362035425615655624682981455869051819800859456132732320054055510566958251135161043336938045009646963245189593774509479550785046075894792169710218139317967718680527440283599846493280581066859320369808514616618064316610685296144379483228881158978531428541323976687007318478840124238398533801496097297015071332134452660846054421428149909225409769221839051449083375270329899898374485884886887125190469494156954015355114580948849208785046347459412975637271976882114713062112330537331127876640249342310281450813349286664902834009007280339950648850700440708748555487997305797417944284640312847154412547496220096692340189416832210466282566649332925837995666008798051378581959040498954085132477390853383093481176129650878445248789958824391345493197569531442806979176311248211412871040845844736158339923712459547591539550415996003282072387219018911765803789518884827791568134984700358743507239288171453633843763592103578573012447420761597931062446196749823913274155393819970124816742398443420049898048112792722620849282590853010364704986150303874501432870838621770926441069468404770404373890675534844221570867260548530639691411361203218650846445492626294997020128545271334888747901443583519313242322333157269016724544126555722125271718466441377338744197144665139930690040364724035268720548346016327799586536627059546835935892111936009551045577780871821958233775831514715738552477848906407293516034093463840649146923172863395128138438835433544718807766062278768770741451744867618368286602135404656520890155890101238524261112587615907631923684591193938770711298726617459834584716577454226046024456280984368570829122148771541978532132344153800979821391341346004725017526699171610089317393609489521109593485218609778690258066523564081395391334194325940849299429508434537825642151593153347775123712329348554222878530900249479115866329061956089475067568518232744646491234812061940598193564767933639294691752620290371604670392024822794195223184833997452082017311737450285129468363744078154728675038628714333873175144570204913129267965199303431706858336186755042226231183468843385119778696375795488511428939963856300359813082019502017643381504199506863718337397994274997752254757708272367666078675965040032039655925062247707075636789805274539053194840259610422752138553537725180597167371438930229420783619411928005931473865400477223675968308708249216344281666556496504984085949177728422334819418475038623078588714141499380129463420875932101260033375811625528931966565505132882422386608325523560248190689939207313386561886327643980713525129761663096753770390758712896499116510493355246860369384153391737470406874172921606838934727403098744014663071565032303777192174084122582946730008756106536993815320872157236729317634745631667114394136303705919618073684341874403244980777746281597675723918499517754138950341742429841628648421346110812738800865692526985004078449939939783096689246579006137481593969321838858087486685024934605209896758266277194033480123936439845801365328872002053460702803079717583034058121243760136910286949853216903677522250905510392566713879118017180689421758716319873286365642344743985956630970396015789433527653341599927766716994599791600982672311972370893852024580742922038592291822037985280439374076859860760447456227214570107076713441371110040481866528520446919136604157813535069283884957393825645814464806264277503491404782371252976040724254957145667674092298268073285259823296618873217871906591552510862582155404488921608024654326375619469231209031828858072396365212385640204416236746788303867620644842086149794597453008219491687259712252301584276458360737524420726294591150435186990238809185847919451252123489656372496043613842279955888472720044814213508941637152519990348407148927393875038476852404825802087693473325854313140587032371097348401164191468159425742186705236542204710037466387769479015379900734664129501511212299294684814946146327048005184836003000107105496191991647505947395678538952761563693653092396057893346156774141317075936232087744314496490509956837645841465967388142202300490064869619347902652823984909945873701021070634445104869604603785547980280081380393790903364474376364758613264472606771556227675845245248027497873498296375511004458930274898993867038605298383591809404357101355240283437176300862637920738599498741746521150167455353523330927129326274447459351643494051864005920884002398608267587991014622605843142855151877012756952553990368252360102557816678486685822969507404277254601956581010759230620724352157677998795938501832890979436797552440883742531302558570709076361709043133531426503972386170819272650464336778033158976021327334838579925495189278796979109139792191232782473002231837350047198764643616374041356297768694046950486001246185234359318391038800197857746441789669972513126194313149333382712207147511481557975622743732344202629767274244165956943548372982915991124491226134463115022810739060569665040240717572615620932472093174981002205974542066246133177952669421013895627060630464567760434256996281799968688229590092429649604880061340304296561685165836856606423053897026939262772456099432796351052849390003427289920795408775824445019032961645886626504591512212048335924123109654993739800469629501329929168753430905653421576424474668087832145303326186917347787604661201427588255288110103869986804399331506635536060487601890785562151210207595887133197464066346972583280471678345734031148539530692397993301487901118668413151152739493110857842168357407107810369630513619746957021035200287975064451571078331784369474527599711715767496931770063061477359695737750256984149156979906478297668490377273421425063634135938949613904319446351606432659158890010438536452763547944727936040394443661905803287318582738928999257571951746826811304523891797753282572538169266332939635099581060985026521423506192706942972853666059905273146115417304211233570424956603493273168920814813255134455438235602527751336570402852196721589759010458939788308886259589255589838453865926112669922271314441973202683425050250138493114016754036551602588968457859033236160720022442073508673912688509196121011581235868256299459315148083511624384602779057762575835218305144492664825432085770601166428566236259201040157805073745401588372353777316940550146420767400912250370939891562978931549393144124943754754417984294956325477143759436596679468856665971712954391480006376974981025962172422482296884009980457223252674173743660093454998272067099021050616490581360309414669608617227081755602192101247842052099617282451750980683945908343300229792225173818905754262604195304086203817551885146682726569', -); -test(macro, '29', '0', '1'); -test(macro, '-29', '0', '1'); -test(macro, '29', '1', '29'); -test(macro, '-29', '1', '-29'); -test(macro, '29', '3', '24389'); -test(macro, '-29', '3', '-24389'); -test(macro, '29', '7', '17249876309'); -test(macro, '-29', '7', '-17249876309'); -test(macro, '29', '9', '14507145975869'); -test(macro, '-29', '9', '-14507145975869'); -test(macro, '29', '11', '12200509765705829'); -test(macro, '-29', '11', '-12200509765705829'); -test(macro, '29', '17', '7257147736730073114838109'); -test(macro, '-29', '17', '-7257147736730073114838109'); -test(macro, '29', '22', '148852438543083302439338564577241'); -test(macro, '-29', '22', '148852438543083302439338564577241'); -test(macro, '29', '24', '125184900814733057351483732809459681'); -test(macro, '-29', '24', '125184900814733057351483732809459681'); -test(macro, '29', '27', '3053134545970524535745336759489912159909'); -test(macro, '-29', '27', '-3053134545970524535745336759489912159909'); -test(macro, '29', '29', '2567686153161211134561828214731016126483469'); -test(macro, '-29', '29', '-2567686153161211134561828214731016126483469'); -test( - macro, - '29', - '1234', - '39730991880495272432206471391877971807542673627957704904437675569298014672895070646102535214916047201597057604326381566232240717146352905189648219707403914660579022999012335291748319902460223265040313524900417222861808879210656981706108411235266301032093577572784389639719581120084786412413811442838338528471340965314240553665532845900842671741344271394471188943084404951380820901385463995110598814337441546368977234557474886215832235597884716646333931698424620615636355660537976497375196427830792301269566792792820200233670131878651690073642956396203530193828971438659013332283684624052196883142348635262157010483447752926525087705971032741588045925402251432696384942322183761498083408303101185212952621515583790502916056759732756688326445700770330618736098784570958650303610518453345373695638406312777059006873348441083653408306117070042611172352888144271588938812215283718988243964723451182501170569555882799635882695185231569905013697274942621016347442475467611094595589653640159813052986283489436916917813443702411392363491760078918071760360736064794346216924583036877713278321020682861527277057026346194702327617123158348328127954077761730411509703210527413729724018291740451232173623681566068132712321584183435235162559116277847790802991789615957113420980884848226115467550693444248836097094675037594634337127844160706154634179432597281415179294940602829040686835658254209377758530578171235783275715264069690583402743872874027236142735859680441203304209066670057316622505879861269271750030338720992453155828397426773289742123912597304182933866285890213055204261259697174309425441282464103760493735120470209861686631467978789655753554085703565573238818516254588594497513866508088253727621898347478665593386957598553232780662697618992458924510409036459946339696264729231292522628108751878543189439881', -); -test( - macro, - '-29', - '1234', - '39730991880495272432206471391877971807542673627957704904437675569298014672895070646102535214916047201597057604326381566232240717146352905189648219707403914660579022999012335291748319902460223265040313524900417222861808879210656981706108411235266301032093577572784389639719581120084786412413811442838338528471340965314240553665532845900842671741344271394471188943084404951380820901385463995110598814337441546368977234557474886215832235597884716646333931698424620615636355660537976497375196427830792301269566792792820200233670131878651690073642956396203530193828971438659013332283684624052196883142348635262157010483447752926525087705971032741588045925402251432696384942322183761498083408303101185212952621515583790502916056759732756688326445700770330618736098784570958650303610518453345373695638406312777059006873348441083653408306117070042611172352888144271588938812215283718988243964723451182501170569555882799635882695185231569905013697274942621016347442475467611094595589653640159813052986283489436916917813443702411392363491760078918071760360736064794346216924583036877713278321020682861527277057026346194702327617123158348328127954077761730411509703210527413729724018291740451232173623681566068132712321584183435235162559116277847790802991789615957113420980884848226115467550693444248836097094675037594634337127844160706154634179432597281415179294940602829040686835658254209377758530578171235783275715264069690583402743872874027236142735859680441203304209066670057316622505879861269271750030338720992453155828397426773289742123912597304182933866285890213055204261259697174309425441282464103760493735120470209861686631467978789655753554085703565573238818516254588594497513866508088253727621898347478665593386957598553232780662697618992458924510409036459946339696264729231292522628108751878543189439881', -); -test( - macro, - '29', - '5678', - '313207440313997908395360596779470167556524821354565066095934942813317027334851280816617044201242781788146681988256606728079031305742275517077538609509120818518756804198333905529512296693856744615547940344437655023604047387036912191665614525105764965628772142528903024079009603734878606031530632092694960209733041961976900299957401439942773853016980543659640387923110020096006907771085339532274479213069118590997912505738354256882132244489587891193436787796035297069548656015753468337910267383320384793478210922890393478684942943141047002641653826266029229940679855534185446029984642265309401937942618414456448051700283163409781590734858988186144878262850039132607214392219461954724509852981830436014103811121607636976310541241787952347172457061695467609228341593457389693092010216371829783365534416058276646629047941217000988603430079143125039335627916862701970337819367723342798417859182486827526226654222231668270437699336871914098038361896878124581202115603167581573365860844809754272768688324186177525910163640984471107241223997815556859746973062170016697071082852292553186973695195935555110865322841675967709255577273671862096739084719096018866542773915268182681924434693068974368743671856917344307823491424582073941774677763676838999012920849775131545807745557984609998089011839713971782596354276378462706118799367614933692723994860493006852617761691726490661973852484146025859542525994878650901900539984977032822503678380135265674374963780412402639819492697327642089488065515069103579821680270517245818991769253700477178501902173016760022083570625339617613196787508937132294439190707656675750593358777466252187024649444055524431976996354765962227578084126526998133034612602577472655126094054706811331042567986558208826619738372058912709936441330068785945557615305430573158660857083639685984708079449553432767371468432769763059815568294817006766150407711429524381443764353328649143392243030605175631903617241400590334520731552887905420357821333357323178558962729624695160152424150927961815517235178471668611411980527664098448189919626749630449729346413932330280051038124207698726994136053148704139757193993822565645450063014557144715444390692035805048906587820840149620974473539068602257213468282796698357998860905499646858875696140347697252404855916130979765736125939491404582947894766627011437008321826084551608917643552039692092641434023416721725802295946129541224330913037830711831897505727181643752070238124258716406913604326003886892777871785171083042338438822589466034333257513519074249290059508044387937515941195584536849935639306854418549865654614408061949225554166135582427881807182193783599601973694343161657685275975826632605401059697677450138694781053611138910985474876254987791226771601983926224950708128705207698446999762970868619741399138388955923671766834618892101519803294063152179901055619441840211468137457499243080615163211420407368571631248280853519881920654995329479197651873469046539891470723077610689204092925437192831324700740508382223044845331373899396944326854982107248264681927553073948403069191143379621931012158878080926767868489154472525785183112596722186693274842978659686633055410031307047971804940821454957589943688441766427442473419051396660930726551215776955035627059923619934434939234337389228818252138062651964023385907259716856875217332983206258542647956484144053376895677282058618726894075264893141459345095513971695129554583296521812210859456760034199169197708311366529261902786358093999101305450016786730606230292030206470077429240950433535818902863132927160089386510261064201968667301688946240130924904222733535811233377310709070575388538077218732749361385735781362671410241779765408330752886228016198747347816427191393767361118607002910804994498483946180719901059745498161376023303011413268091725633426377641439705607490836958493776666210760974330249691898146723384558621097993110200107834567985162015781903474771053336026970797082827405583984640152590311586996651130978390269635682523375227724690841049723350239062980077884498173472853922895986259449703557854615873912991492706834134188831223288072115285680543132659530562006474917573599463126164660175597089006340798638300090399758336562085930375566544725514749718150151542246563296277642802552407242105936832988106386539137183422418699327088241800890533010663176410353351158461215403413109833504713371583660146076296550323246201815389456172173706830863136468029781683216347313194402113678038893523681163091511426864300172115307127211628298548752944885599448207246119768819846726699639029352863512164216176446798914058117163239884649542915510529041947704391959354269079196393984501554075330930504966050842500838363928465487060306050596564952197235832052713931735782408102332284034120417772720870851192746545714460855294262457078632718061537234518630269810919269617488169257070620461029811140007937616623706165998602970962299178529667384281611711284607273114722670486790204254070817193833701660203086417276450859927068939525290399922358343072724298746965385101645299436440204421048958231664229609473978540663876261084401885358577081838088427532726342531219666349529588708676864620007863974417011281178486555297841836402783955736921273673850857042328354562375043956630762645678828277468596945482993393974109650561321318909283802349703359908590794955598686861188105172867117624073767884315818474218316939810928386473450140843666379789633933028157360991196643780492156331045116092963007359899178903786388658268081752185404862465975652717573346338903555552006181453313780938268351957198485656126588122587529425797721024874117272720122593011520181102165173778540109649069873683782560225421253727583520275185027823279197281638302017391265559931535066430315642407161670790778165873761260850453732642568406324331424811297605391958431678345086072195795316149924023369165664626175580036981425302726551623339910755431707540465223502996664989856176285277665969692278401436557276802735628722927403361765477884441622418274020615931280165006550295668823519197254154151454712027583777160043458631500373569552286186287576649460507457140013106316295491415062488184750166573300098842610352649548418028671322996383284580438817915912751328692636309346404265340559254967861755662343799686476963239624473583538068952690259757479187975773947646635862072773097932605011147309545946917745817618263320705384509256266597692822011258526575769901432671791899309866212784593294231039210384345017912165232281651766218511816118452245482765148462644057186723738724822065021604329606577441416459752329357653818884431934533205079171447937450753200091846699978761407348142216571160734786231176158036173395546313127825240933740557460405345687875822691395927735307954680584540631539852299093845143573101926536856436774094890716935644906531408882553968024236594348780230005657598271432594655727370741202306848716798905210887080943457274364437927441617729886063620378682180675795409711770720617214861995899802099720841503268275592791154447987570696376013830399865593021757490603503782606236297834983555381943082960053607082894098193433830439836836701596825459287327985068484765725312935435383570713001737353493414554745918732199428982288861916281925853870473235242613934578658466072097633829351396159739136586030233961937919001934510892835623188835150906662666684162280030518846926507260191259658152547057140996892575994838442450176092944932641609223450069710549113423096908693460705811017954646809219195537407087992070845823304506437379135120730335409827645953230507797899159560638526238733117928509820396840716609945419171886667127363308348835299399638934816341074966311440750045989538622932362121521488502205477949656543218950989955469235493902648629617578805931019123481068629850143880665080707955617337916811297483768702780290392503453278969467260654930304742159521939597380725090779572928293901161522955743015424778301780849024292067139437382979863134823284319627217588300337639449928419525514096794167112290463836322735157448121909387510372861759941692821797921023914852572773124758265866489263355698959718432102332876091323039261846105459189300877483349757964955202240267626882379975165911407692612296374563798585046788847367663183939085894084851302628081935576963248048370548543807192978291741302368501280165227638198366783808938518346282718195546770075506680849155238300453171855111852650642578666970792276185247457685538362574130361', -); -test( - macro, - '-29', - '5678', - '313207440313997908395360596779470167556524821354565066095934942813317027334851280816617044201242781788146681988256606728079031305742275517077538609509120818518756804198333905529512296693856744615547940344437655023604047387036912191665614525105764965628772142528903024079009603734878606031530632092694960209733041961976900299957401439942773853016980543659640387923110020096006907771085339532274479213069118590997912505738354256882132244489587891193436787796035297069548656015753468337910267383320384793478210922890393478684942943141047002641653826266029229940679855534185446029984642265309401937942618414456448051700283163409781590734858988186144878262850039132607214392219461954724509852981830436014103811121607636976310541241787952347172457061695467609228341593457389693092010216371829783365534416058276646629047941217000988603430079143125039335627916862701970337819367723342798417859182486827526226654222231668270437699336871914098038361896878124581202115603167581573365860844809754272768688324186177525910163640984471107241223997815556859746973062170016697071082852292553186973695195935555110865322841675967709255577273671862096739084719096018866542773915268182681924434693068974368743671856917344307823491424582073941774677763676838999012920849775131545807745557984609998089011839713971782596354276378462706118799367614933692723994860493006852617761691726490661973852484146025859542525994878650901900539984977032822503678380135265674374963780412402639819492697327642089488065515069103579821680270517245818991769253700477178501902173016760022083570625339617613196787508937132294439190707656675750593358777466252187024649444055524431976996354765962227578084126526998133034612602577472655126094054706811331042567986558208826619738372058912709936441330068785945557615305430573158660857083639685984708079449553432767371468432769763059815568294817006766150407711429524381443764353328649143392243030605175631903617241400590334520731552887905420357821333357323178558962729624695160152424150927961815517235178471668611411980527664098448189919626749630449729346413932330280051038124207698726994136053148704139757193993822565645450063014557144715444390692035805048906587820840149620974473539068602257213468282796698357998860905499646858875696140347697252404855916130979765736125939491404582947894766627011437008321826084551608917643552039692092641434023416721725802295946129541224330913037830711831897505727181643752070238124258716406913604326003886892777871785171083042338438822589466034333257513519074249290059508044387937515941195584536849935639306854418549865654614408061949225554166135582427881807182193783599601973694343161657685275975826632605401059697677450138694781053611138910985474876254987791226771601983926224950708128705207698446999762970868619741399138388955923671766834618892101519803294063152179901055619441840211468137457499243080615163211420407368571631248280853519881920654995329479197651873469046539891470723077610689204092925437192831324700740508382223044845331373899396944326854982107248264681927553073948403069191143379621931012158878080926767868489154472525785183112596722186693274842978659686633055410031307047971804940821454957589943688441766427442473419051396660930726551215776955035627059923619934434939234337389228818252138062651964023385907259716856875217332983206258542647956484144053376895677282058618726894075264893141459345095513971695129554583296521812210859456760034199169197708311366529261902786358093999101305450016786730606230292030206470077429240950433535818902863132927160089386510261064201968667301688946240130924904222733535811233377310709070575388538077218732749361385735781362671410241779765408330752886228016198747347816427191393767361118607002910804994498483946180719901059745498161376023303011413268091725633426377641439705607490836958493776666210760974330249691898146723384558621097993110200107834567985162015781903474771053336026970797082827405583984640152590311586996651130978390269635682523375227724690841049723350239062980077884498173472853922895986259449703557854615873912991492706834134188831223288072115285680543132659530562006474917573599463126164660175597089006340798638300090399758336562085930375566544725514749718150151542246563296277642802552407242105936832988106386539137183422418699327088241800890533010663176410353351158461215403413109833504713371583660146076296550323246201815389456172173706830863136468029781683216347313194402113678038893523681163091511426864300172115307127211628298548752944885599448207246119768819846726699639029352863512164216176446798914058117163239884649542915510529041947704391959354269079196393984501554075330930504966050842500838363928465487060306050596564952197235832052713931735782408102332284034120417772720870851192746545714460855294262457078632718061537234518630269810919269617488169257070620461029811140007937616623706165998602970962299178529667384281611711284607273114722670486790204254070817193833701660203086417276450859927068939525290399922358343072724298746965385101645299436440204421048958231664229609473978540663876261084401885358577081838088427532726342531219666349529588708676864620007863974417011281178486555297841836402783955736921273673850857042328354562375043956630762645678828277468596945482993393974109650561321318909283802349703359908590794955598686861188105172867117624073767884315818474218316939810928386473450140843666379789633933028157360991196643780492156331045116092963007359899178903786388658268081752185404862465975652717573346338903555552006181453313780938268351957198485656126588122587529425797721024874117272720122593011520181102165173778540109649069873683782560225421253727583520275185027823279197281638302017391265559931535066430315642407161670790778165873761260850453732642568406324331424811297605391958431678345086072195795316149924023369165664626175580036981425302726551623339910755431707540465223502996664989856176285277665969692278401436557276802735628722927403361765477884441622418274020615931280165006550295668823519197254154151454712027583777160043458631500373569552286186287576649460507457140013106316295491415062488184750166573300098842610352649548418028671322996383284580438817915912751328692636309346404265340559254967861755662343799686476963239624473583538068952690259757479187975773947646635862072773097932605011147309545946917745817618263320705384509256266597692822011258526575769901432671791899309866212784593294231039210384345017912165232281651766218511816118452245482765148462644057186723738724822065021604329606577441416459752329357653818884431934533205079171447937450753200091846699978761407348142216571160734786231176158036173395546313127825240933740557460405345687875822691395927735307954680584540631539852299093845143573101926536856436774094890716935644906531408882553968024236594348780230005657598271432594655727370741202306848716798905210887080943457274364437927441617729886063620378682180675795409711770720617214861995899802099720841503268275592791154447987570696376013830399865593021757490603503782606236297834983555381943082960053607082894098193433830439836836701596825459287327985068484765725312935435383570713001737353493414554745918732199428982288861916281925853870473235242613934578658466072097633829351396159739136586030233961937919001934510892835623188835150906662666684162280030518846926507260191259658152547057140996892575994838442450176092944932641609223450069710549113423096908693460705811017954646809219195537407087992070845823304506437379135120730335409827645953230507797899159560638526238733117928509820396840716609945419171886667127363308348835299399638934816341074966311440750045989538622932362121521488502205477949656543218950989955469235493902648629617578805931019123481068629850143880665080707955617337916811297483768702780290392503453278969467260654930304742159521939597380725090779572928293901161522955743015424778301780849024292067139437382979863134823284319627217588300337639449928419525514096794167112290463836322735157448121909387510372861759941692821797921023914852572773124758265866489263355698959718432102332876091323039261846105459189300877483349757964955202240267626882379975165911407692612296374563798585046788847367663183939085894084851302628081935576963248048370548543807192978291741302368501280165227638198366783808938518346282718195546770075506680849155238300453171855111852650642578666970792276185247457685538362574130361', -); -test(macro, '1234', '0', '1'); -test(macro, '-1234', '0', '1'); -test(macro, '1234', '1', '1234'); -test(macro, '-1234', '1', '-1234'); -test(macro, '1234', '3', '1879080904'); -test(macro, '-1234', '3', '-1879080904'); -test(macro, '1234', '7', '4357186184021382204544'); -test(macro, '-1234', '7', '-4357186184021382204544'); -test(macro, '1234', '9', '6634931404835663880262603264'); -test(macro, '-1234', '9', '-6634931404835663880262603264'); -test(macro, '1234', '11', '10103381606301936187653160695875584'); -test(macro, '-1234', '11', '-10103381606301936187653160695875584'); -test( - macro, - '1234', - '17', - '35674485208164146078917356926246803757746166219014144', -); -test( - macro, - '-1234', - '17', - '-35674485208164146078917356926246803757746166219014144', -); -test( - macro, - '1234', - '22', - '102078319882560292285132581626357595569664307813353093133708407341056', -); -test( - macro, - '-1234', - '22', - '102078319882560292285132581626357595569664307813353093133708407341056', -); -test( - macro, - '1234', - '24', - '155440374071087980438939349467025786799279742708630302687913279529037070336', -); -test( - macro, - '-1234', - '24', - '155440374071087980438939349467025786799279742708630302687913279529037070336', -); -test( - macro, - '1234', - '27', - '292085038627598162546736469597670733650101845477820437776597715171027672376482463744', -); -test( - macro, - '-1234', - '27', - '-292085038627598162546736469597670733650101845477820437776597715171027672376482463744', -); -test( - macro, - '1234', - '29', - '444774245080406867607018239498670695690094485812423938546940830362973414277322930560958464', -); -test( - macro, - '-1234', - '29', - '-444774245080406867607018239498670695690094485812423938546940830362973414277322930560958464', -); -test( - macro, - '1234', - '1234', - '48184467781382543701667186039468406661059770237590274727670474872867568934066212120125133953550629961484891523453397766904292741725027019645437267985042784717562212455213265145073576158446772320656790521515384533153285495122560467130551068937365382642309092956110550380937116582823950116105467284919886128590021120491211422848352480419801389040432671756358444906225483817656922238136306002774235317628882806945193646888148396110892049431698226720231373322565553173892155104287328274243305595665720786784052656812367125148945799485499060066329553808509237311004983159894774937428752149540862686417306258598574741354798734543908917749037010338607293558391168741173229347205324015819180886782731783732875096308025479318621477536729557178851277749719374746640105570680704597488214460168162719035143192317718562628271959732323123847141889566569180545843169342410738692059982444746465750802950208574020617939255322870389259522352007286309084437654560750826135123276437360339867137662914521505757477954199067061537563338324827971696801982963501680500285473348151566773437596060788388816834765832275133438433921225741018069257650081651893412763515411183995641907421720698187041665296617342826301233824768831086783439617690340317902242011073693697825044232174730876417203502412742085342749470261962000902738749779130464597185957223365845266728739264096596554562810900489160285087089151363421121896616575007056439552166409310603897415780357105218172824045265515881762471530724320743935876223471758489130857861949736325801719247163392163145092104862730777665632878101469684676983177748845758819134783307275384116307332565581471205450219638137864387568253396048525319846029722597087368081615296780675739066314774724547006391416740049175425483980982557830287877118477623151223431159832554386188341940675670910313367805899112248803570997473057794418174867654496284922646065073429519234590181376956226715629044946363751414558194273837719521633486883608951520130473135848525228767697904589545099613408858934772678955107374792767376297292404355699412788887158297703071562694349633862471115563026643188726923335031942038276485070702440112289573556176109970627523424440589934713944485023114357294128614721641112627517540349238220184422744440362721622786094864017694819354467741507712876404983391152695521440373975295468154208059821687654408426427370963930322531227395895396783921477437273314199002421808939747302217153865116186806351980760710239964563379901328372415061933640351961853616394184876278706277214297206989695471340253866298118966493903627998818702216683968716037963198654625001668768390791943686432733286824675468274040171973201059002888713965690564527215419345100503188258777506372065686193271207542007415422109631813074486204833751677472525228744950194297089998305021078379670692156515896561318156670094486647187285361909788624195866103332184213842805429511053631902833667630273693526699848894312061513323511126288640008264849029913769883352116160378319937025276742846457501369721989078408607355941517261584972558483819760496804231338012065441081939772196754109683768808242484290927174759258520839532703010720373548957783991479615682174614219692539567777715560109326389875468292301222743028820913581258063284673412787274389056140124677069653486630962880192937633527058165237839406307326482619493415666561288774929091975803346338652727476500670928651812154306332363280019281880148780695662032811060669099701522746512853264775139655489705043573689252437465482977809592752059272522878781208311791893662451561020284928906469358115442883064671084339186725298116883304622860824362268174217031187839248915211550033719913619980315078125050194505282396757349145204835262063407488072671571413182055277457862261818131387963934879102237121895980689553963436483304289698371277085427432858554859126640569432899045006806292448711540736', -); -test( - macro, - '-1234', - '1234', - '48184467781382543701667186039468406661059770237590274727670474872867568934066212120125133953550629961484891523453397766904292741725027019645437267985042784717562212455213265145073576158446772320656790521515384533153285495122560467130551068937365382642309092956110550380937116582823950116105467284919886128590021120491211422848352480419801389040432671756358444906225483817656922238136306002774235317628882806945193646888148396110892049431698226720231373322565553173892155104287328274243305595665720786784052656812367125148945799485499060066329553808509237311004983159894774937428752149540862686417306258598574741354798734543908917749037010338607293558391168741173229347205324015819180886782731783732875096308025479318621477536729557178851277749719374746640105570680704597488214460168162719035143192317718562628271959732323123847141889566569180545843169342410738692059982444746465750802950208574020617939255322870389259522352007286309084437654560750826135123276437360339867137662914521505757477954199067061537563338324827971696801982963501680500285473348151566773437596060788388816834765832275133438433921225741018069257650081651893412763515411183995641907421720698187041665296617342826301233824768831086783439617690340317902242011073693697825044232174730876417203502412742085342749470261962000902738749779130464597185957223365845266728739264096596554562810900489160285087089151363421121896616575007056439552166409310603897415780357105218172824045265515881762471530724320743935876223471758489130857861949736325801719247163392163145092104862730777665632878101469684676983177748845758819134783307275384116307332565581471205450219638137864387568253396048525319846029722597087368081615296780675739066314774724547006391416740049175425483980982557830287877118477623151223431159832554386188341940675670910313367805899112248803570997473057794418174867654496284922646065073429519234590181376956226715629044946363751414558194273837719521633486883608951520130473135848525228767697904589545099613408858934772678955107374792767376297292404355699412788887158297703071562694349633862471115563026643188726923335031942038276485070702440112289573556176109970627523424440589934713944485023114357294128614721641112627517540349238220184422744440362721622786094864017694819354467741507712876404983391152695521440373975295468154208059821687654408426427370963930322531227395895396783921477437273314199002421808939747302217153865116186806351980760710239964563379901328372415061933640351961853616394184876278706277214297206989695471340253866298118966493903627998818702216683968716037963198654625001668768390791943686432733286824675468274040171973201059002888713965690564527215419345100503188258777506372065686193271207542007415422109631813074486204833751677472525228744950194297089998305021078379670692156515896561318156670094486647187285361909788624195866103332184213842805429511053631902833667630273693526699848894312061513323511126288640008264849029913769883352116160378319937025276742846457501369721989078408607355941517261584972558483819760496804231338012065441081939772196754109683768808242484290927174759258520839532703010720373548957783991479615682174614219692539567777715560109326389875468292301222743028820913581258063284673412787274389056140124677069653486630962880192937633527058165237839406307326482619493415666561288774929091975803346338652727476500670928651812154306332363280019281880148780695662032811060669099701522746512853264775139655489705043573689252437465482977809592752059272522878781208311791893662451561020284928906469358115442883064671084339186725298116883304622860824362268174217031187839248915211550033719913619980315078125050194505282396757349145204835262063407488072671571413182055277457862261818131387963934879102237121895980689553963436483304289698371277085427432858554859126640569432899045006806292448711540736', -); -test( - macro, - '1234', - '5678', - '307239295662090741644584872593956173493568238595074141254349565406661439636598896798876823220904084953233015553994854875890890858118656468658643918169805277399402542281777901029346337707622181574346585989613344285010764501017625366742865066948856161360224801370482171458030533346309750557140549621313515752078638620714732831815297168231790779296290266207315344008883935010274044001522606235576584215999260117523114297033944018699691024106823438431754073086813382242140602291215149759520833200152654884259619588924545324597336231254738156229165754184379098279299262049527493981418773939710052567148397520139396664287825920245602806281465369440795094171273883323944551402505328195835875189714803373532518976612644335221127924375262338025026738810109229789066895210195233568313781368494583937688244974433119626632798061718807757570369881396496330922521092429743441101260124582034961693322001051820700723840579394700173377538808676217188816149219248363818340764914694139680749024310479827367842428590981843277277511673125624678580926604235648781819510534399854187957358228934011534030807453365221505448908659560252635131850623331246397555109848508339190181937347601723206430770586417066983949247170768203919583900239303725667699002878222006139705975234985123135091187455708833574958129058095463081654382235387683423032727818984044935970076132966529729332219803725615665380149260841248646307744074852263644971412954286319498473825976906290726980643387278999438899482000949753370477834589869715954340896670602062189642115067712194143619891104758054603148185422879681279323731504130318089025303464892133142814050831321280869931356176562021125636637696428931550149163626111706971094926279122079036473959349398647207563958880810847203107558693382581247719368450328373491128928043528764468838481015835481857925222963292893497064677790987715608519992573590320785069213807044062645935102241563318077900517348913659692426362075079090302084558791018063653522660752511850417737787810507118607660015778345736185544774065149632138946958208872078504737965494929224554757212817739013665074197553518364007019034099233743417376008297034225146702810718547331679637811882447383064783027200681712046322391430903630967737127735630322507937735245138690231556762427184206415939967664528096214944050443838234089893942372249310965891033124439206439457942974559079093400885882410032029710828368112382759140589323805553285532286914003552846853057576991775275570301997344165769850233881907361264015895890818849669805891907459800581990812691006812626374363578450984335517894357744829092787395926839000023962733949335231397395401479346911188305001193928601270290423808867456174087663596893004075220125591262058242530195664451642127872992040342213830892225801497136162152126452814636821372850336677985479349893600592592681158187543928904613001813023098258056853626951063105305617338502819189272263288481301255674961962172018025892490871747497521613169302263447945299308964856799345744118753448948756633623000928292271644274476514153318916142897646572809647150502567312733052336669846353667317222010832483097294019925495696183147173179102497732276927446687768280599040464245101520966166706822935112404086619669510798582900981432655281831317374774621351894425270900215984721126295035504324174185149268696653681359521661246230845622880397944668142537238039679575235700048519280449389874038813948425385923473788921228513953652472377934540266323863335829226613711924193402576311531059727276108808010971355782749309158823047978491790920875069292996040857512538729285177101496567684459641487139689410758137498167987281056377030844965856298252042132686609411400751350979919962404101477738095442835101123059316328509676953867455359567416099259739884548059992245862006247543500012335979063372087713854337763356772298485634443508377176714285187750207610971059830770832297524782702349430113067885720680406382750054789965311761788658021072821754255217642242163558086741759388374052688951876547395076883774495970922489499563244338874847247075560546870915783578293537186883556120656238250632036990110926238158152815482271306910080137344309034132272734875502201244632205163102423192286940171017158243227969637526316846974981084420356508830681480947885917792995548959521169789814827379240290484939291595796335808304369249825132694371154995629020348448070937697459457310658016390510669950232202117026949332446206032626619437018409520774627547364298492663317409090888105284856231403203264042680650088950260251993214047720274157347392106720550579972688296788335711267163348525040618144978956911125218083835003018934447595528171992681871934696456852699493142208475082155078613935820598046951404164272965056793854322831971808425855979818512937009767860333913142708117420468535706707338985116178601074119960157589096146389334345593090791448497569418129926045664495907334153337589635221974568810352681900639590387377238660034950767943219972827486077231842758760058663109292511409668322244689754266200746246009494113605844291527613997239500108446722588067983522129703414514679248433646988350542223586243640715804222865695841503336942447435284973707708738401917434544559678813875897734731101993564026733107673289113791026266802347607067756870070049091879278550780571887185814708537343643120109716176863158267452564359772918848474831928740035479988942851917286977981468213676371170376581599421687421157192621766056282635455502745345422134109463656273257647493243595299386340007285458064661281500227780615582329762847666128912270287127702011512298795737439109946753443411265222017119479062242748224835713889637406840422012428195129047091229247913611585459076419478870311555089949116202363154707599047680183367431508170042693609348631935300963606524001909354481256448016576044636672552024793800896987328626909995732430432770110962492541560005764748146851044781232535045697298013876874942199766539748522749578575930121320360075106502263951925603758744064725542088121966571973151956517962196033756616574064204240308736083289250933661070517861933607033805383794022932833914403046538303160864479381724650667684378003267241939785566603437594388219429227245319361052082720101153688737108636181648544729232365745223735571958927805431626874954284337872776726226192776223809114300468574608813958523118548177886092362889284408683605828714504550636413269626117352112283711190743705957538771405106257296054814739841947086172415476929232773599749549247112194345575894505210361533349007732728515354190634197202883617455807662715540116552260765510850657135720244190956869964668147050309837395659245843733132747750125006720855350386404222102322699685624358041394671351793225094747979930897598627334206296992066864002770865189677622663536544862088852637370423181596293505045491829198840304769603782293214203771365262426835626638710332592520084894203380483205318574229509791732093263658924554481129110023771559358840259857767832130838951986420641743231157549206628101961335770935217869188598407871879846953788231452559357515703225887372560571514246425295258565332871227501930345253728333861399415882260461345687393410071890081321210957633577414930430621476910640788200315263505324920812865141791848583320684391090487087855177019341942297833034669241769410159832097007619834572197457123843735128138967329683027440008185533782920736485842481620240819664388691386839924189266798055808795241509113657623950370311771062440917977857478832595327568508967705426889618627733979628180362261623944529557924325588829972626926001856116218149641848931627611856095681608502049604728694373866998800873793794833475389120231569350898916749652696861495083269053509194449587614725554391245026950041678221421784696915639893978008988115974628714547147103468130211269397474452407156217137857585748699660585669149692200183240671446131671973589521765207492540448301776208106269303417635729945209531363305026742848137813838295036147383212196832126162865335463466561361409672786144491545547877231568077479720810911371970039908454207555969974929024330604715947635120890002757270394372957682905595391676060862365861775640550248935336685083103867570594614396930935612590413493959149016850970545876096218158891338146114924706065887199224191578080834101491435941396082107871178120691839003211534425918642587315041952198269461336583739132022883309457097019209940833906282314924551936086693600235902374507567167637535381913303859494521404821158954494161315238799966252882039753927801125656757563231893176983091324850782220479663033201458404864019043728888446967709975804533406561597647307666736915858037493602438470123931843180216995263782074288168270696306819344125131703913727531436787169764181060443128826914028449143343870445556915243291006445590059689543641135357147336450120418996865830009910043524732386950657567959305789673308988840460874020981183065604588157684942510453265370111980067359260650568119370610380556946353747266717913608784026798916527135355036629347450939565819904625935450373503394875228925517167402287702922664490685223930566127022783241602405058913218083039094404066037147525985595082542486481669033554440669209239655726473710598417289863187780615394059781396829068192614265298593097207267823436957283409373106070373278544263878956713757687019674587981457190254278514279204605546359474410508605834050747211850883484821202442476380159869647953907610229592310303134114435748409130185991653212644798150231313091123308159964059871142740195724462392875247410611671330900705772528157325261686884901444831627452426862521432079108938454589234625663627219874064683315753735830472270203230291590088379095823378190821206228778033950009778463074754597422953197657206227154124599901813786834672435550297250999713209514657587197026419042487591887319632167337140620411177338653361805100343525050955261127436206126342162794160499514973561746207894282310244084464331015046184437092252547644317599059469495339372219011274409057478305874498858052105032898790647318808541273973307143643618340481044516933353419712178803129533334912992701719925571602601231239966045848260929819259463725272466267039934723526708966021692828547630900867908313425791675877136094296969834925611943928639082538263478045795468797884085508436740105548477287495851150076743539940855079782006029276242181215199960474633917064701868986279575047584875782888121629159833482729108471411086004777222004940690886933449751160053486753465048382468022710892618307193393528079008752243904763586506319110138528885232166270184875496667758544101338512476188537568996993043100897750547345490436292741108436750920835304292808262544944670065385074720714585256100047460364718010959212394917302809571145040577796350681992159274957618160496935869534857889595670144103693696724808909241541937251046834703005546264200526980116401703872577549517787709928581009929724799949713171016514146509097812026583336780509096196442473618165553854996468315728059606232406325692644298205678901764327286910778328167615148282802913180962943257625623528207208823616122188000672048377973388690302368144655729681461875178487994418224929756029694157916324380087380717263548515509059805890429224503660512145778492057781022321319300741401538410679063054050314878059794599008988939481984403757789776259194385861548907079786218989999985501502512699493693947825897304013412779728462320145418134117202642305220024682824144269946547059866645346290129336922393759141046965787439826153450256825134094790929592783588398691272222187792943672971006484184098016720992986997067386737093941669105468352548563143947335409769120498804286178739726148574102071841252232146176236358066633649877671588502174880747910470620226875718620591588580632465728693537756687445252996484012749560906868590019478473487675167061165693342982827540412207944219805698909631680447518841794973864110724383885552977456485490355687570208317569412914524579582528443585244963004875806464317485086354268522391292873764104739225726087924762553552795782491218068168781724170435932899368215004200480636159439699787658534222744609009579495632497983889807333784591846944280527939629108316893490033323187019394767254142325425613836459619989619263579911717847411193199852084628049271525546800786030737052994542939990268948285213669034871808549614119094067473581277599609496762960972260689628137112032360486445234598511199684675881816677322350072503071116878677854198807513803028345384041193976936949595607619772723094339732775857366188394242237888454133005692229522627059021766683056379166328758643074034651477088295526779481972642314260481913656849908998775026037593896126509468805024130879738114831726507455996318751711242257525370629800182960054820056459299031313033178639379789867248052191948564791284306277912200831531132727252848046975079274107604207422180790180674442083634545051718378749397382615541422595171094449620979551195843771863108274520677010097230731862345300468517668904946393480947243124651839763143567511692669685031233831621389557659840710993215211263285069063398339503947184997161094083083053877736678929654970511831662984737433141151838605212887047272029235859200632246127971440751906726106283042958810473062871828212882679956627599162978008334087215417428566328627933710537352061688382898427732919052252532626559528549194113550832651182056923950487564696393200874225189927497353864238597667828879046351719309006631247078157959316594673705629051666057170908233857157705536358758178001948093811831452532180297259924653826868431583529081443915403274901333012849380463102430959626058209184844395226752980898545128507931317338496625907256515055513251369817237050215214244175173206043376003288561848566594665578019149404316779573795236831759132895146984523319002050235985934121956160952246405830116891841948253796487984299917640127262665004204345083559607575220761423930983654019621896859885405207293374556775708780952649634706639743293665862226821403434927000882776959081749622346161275243116822118898574420383467793130210766019125911546825496631056718811589200078195809534266736568373586977485098744359972146470201537305238751109316700591533775648459300115999077864969027102697762222355198344795959353792485217583990345381206371761414421010734536687579132581669308016312802515063088351170568135725500656192906416429028050777241979163318996341855526467788527253070038318737475135130442244262535653432939984902783154351748576002192512489655923703793418069024108798838849972906445094342850419486037552044967029146488792384693648586002550767915684072869316718751724643267161008346373705744182753875744727023321494376965078987015632054807290667808424067931728833093486771961815346826309828195559704978447323474359127908437922549870919735027220283560010130504849534025889434952608766951053099462066403239613829870069506759073794934606255061208438993717700947178902855875926936475717036748410034341552469899952887639559618260694386489180172457011104588203088631135975270713663097698949066683649938633016773410320323447393245620649077170739933817132023640554516055821080347587299514517344103913434724274570905671411870152447633630020794116729196035297166502202283173704040564353623362060624602105914889095359863566586252963824184113069544184070392139803990488178637780619106269997462589919674956410553073119659130443817291726973054433812614236377566385896766193436531715868492078679787049921607831256548591420181144337005624829883308079609829281702933920044150724362349082932337529275183555550759563264061342114344076379295287668872881144842678541568323866396895644823948668725645603165802387345638352049954163004283115082448016533419466854214433863370929972934845362307106230764527411697357427260580526749886925414604386144800887890455404447490586471146843968438319402848710992027349479404509054156265030858599686233771999636756519543362055535931234102657321710620159992369968135582404861074012859908357457643934719496361092731946805880148347648955726838411743124285700361371263752582259872541407572187701536397820799177145606117943127447314468934127745737896295536031841708107999973631172074267987053572743091086520751474818610389107050882688611509676523391949612687262723024304567914249177164676175113427118894827540124754596538131148662139737659987591987808710366016209270335796976639603952589746825309966421820623559980254684651585816259754646896675329322398127468234562575355911037292681588630747026794408719412044361738934185088651798053979414290523336289393920442009235066258188884117507158747732520164728032543870564722222274127742468776838751533544621992260989073383290925600190934951597609650422144836431238624232246140925645252235224277512965625723103788058599484029459545200287204461143877805380501018130152779707416171004132419255619937668896930949220825217150414062456758348613847169640357557332484328139934101922784000250937441082915494248269026918650402924769009110291437748448952763518164181850168552758762497110615089698420229504724702503938309581244539522277495404978052342540570967136271030627694122107443462213646337183623126971012986781309482020707420593863632485843384964535477343527400908627484307719882317043393718378810857723613256421901261434759064975382278747543366226417959638731591323673527823550282181039009870490445320706815835382713226494596508647261636899500195110884870850525896617885714025707410504066312830152850302561635092619333567203579066303154655776839525470585505379545233565628470526466798193127760716376850644169280567548816813902508183547962830998308876094664913115567444899888066294586537615803720457816111393232094487429956726714915349898077589609929473981536895559767177568911357519231394434393732467776362068275102582907448002180170709026284212375295627830371543656788608582913633102101052379592812704964682084931076096', -); -test( - macro, - '-1234', - '5678', - '307239295662090741644584872593956173493568238595074141254349565406661439636598896798876823220904084953233015553994854875890890858118656468658643918169805277399402542281777901029346337707622181574346585989613344285010764501017625366742865066948856161360224801370482171458030533346309750557140549621313515752078638620714732831815297168231790779296290266207315344008883935010274044001522606235576584215999260117523114297033944018699691024106823438431754073086813382242140602291215149759520833200152654884259619588924545324597336231254738156229165754184379098279299262049527493981418773939710052567148397520139396664287825920245602806281465369440795094171273883323944551402505328195835875189714803373532518976612644335221127924375262338025026738810109229789066895210195233568313781368494583937688244974433119626632798061718807757570369881396496330922521092429743441101260124582034961693322001051820700723840579394700173377538808676217188816149219248363818340764914694139680749024310479827367842428590981843277277511673125624678580926604235648781819510534399854187957358228934011534030807453365221505448908659560252635131850623331246397555109848508339190181937347601723206430770586417066983949247170768203919583900239303725667699002878222006139705975234985123135091187455708833574958129058095463081654382235387683423032727818984044935970076132966529729332219803725615665380149260841248646307744074852263644971412954286319498473825976906290726980643387278999438899482000949753370477834589869715954340896670602062189642115067712194143619891104758054603148185422879681279323731504130318089025303464892133142814050831321280869931356176562021125636637696428931550149163626111706971094926279122079036473959349398647207563958880810847203107558693382581247719368450328373491128928043528764468838481015835481857925222963292893497064677790987715608519992573590320785069213807044062645935102241563318077900517348913659692426362075079090302084558791018063653522660752511850417737787810507118607660015778345736185544774065149632138946958208872078504737965494929224554757212817739013665074197553518364007019034099233743417376008297034225146702810718547331679637811882447383064783027200681712046322391430903630967737127735630322507937735245138690231556762427184206415939967664528096214944050443838234089893942372249310965891033124439206439457942974559079093400885882410032029710828368112382759140589323805553285532286914003552846853057576991775275570301997344165769850233881907361264015895890818849669805891907459800581990812691006812626374363578450984335517894357744829092787395926839000023962733949335231397395401479346911188305001193928601270290423808867456174087663596893004075220125591262058242530195664451642127872992040342213830892225801497136162152126452814636821372850336677985479349893600592592681158187543928904613001813023098258056853626951063105305617338502819189272263288481301255674961962172018025892490871747497521613169302263447945299308964856799345744118753448948756633623000928292271644274476514153318916142897646572809647150502567312733052336669846353667317222010832483097294019925495696183147173179102497732276927446687768280599040464245101520966166706822935112404086619669510798582900981432655281831317374774621351894425270900215984721126295035504324174185149268696653681359521661246230845622880397944668142537238039679575235700048519280449389874038813948425385923473788921228513953652472377934540266323863335829226613711924193402576311531059727276108808010971355782749309158823047978491790920875069292996040857512538729285177101496567684459641487139689410758137498167987281056377030844965856298252042132686609411400751350979919962404101477738095442835101123059316328509676953867455359567416099259739884548059992245862006247543500012335979063372087713854337763356772298485634443508377176714285187750207610971059830770832297524782702349430113067885720680406382750054789965311761788658021072821754255217642242163558086741759388374052688951876547395076883774495970922489499563244338874847247075560546870915783578293537186883556120656238250632036990110926238158152815482271306910080137344309034132272734875502201244632205163102423192286940171017158243227969637526316846974981084420356508830681480947885917792995548959521169789814827379240290484939291595796335808304369249825132694371154995629020348448070937697459457310658016390510669950232202117026949332446206032626619437018409520774627547364298492663317409090888105284856231403203264042680650088950260251993214047720274157347392106720550579972688296788335711267163348525040618144978956911125218083835003018934447595528171992681871934696456852699493142208475082155078613935820598046951404164272965056793854322831971808425855979818512937009767860333913142708117420468535706707338985116178601074119960157589096146389334345593090791448497569418129926045664495907334153337589635221974568810352681900639590387377238660034950767943219972827486077231842758760058663109292511409668322244689754266200746246009494113605844291527613997239500108446722588067983522129703414514679248433646988350542223586243640715804222865695841503336942447435284973707708738401917434544559678813875897734731101993564026733107673289113791026266802347607067756870070049091879278550780571887185814708537343643120109716176863158267452564359772918848474831928740035479988942851917286977981468213676371170376581599421687421157192621766056282635455502745345422134109463656273257647493243595299386340007285458064661281500227780615582329762847666128912270287127702011512298795737439109946753443411265222017119479062242748224835713889637406840422012428195129047091229247913611585459076419478870311555089949116202363154707599047680183367431508170042693609348631935300963606524001909354481256448016576044636672552024793800896987328626909995732430432770110962492541560005764748146851044781232535045697298013876874942199766539748522749578575930121320360075106502263951925603758744064725542088121966571973151956517962196033756616574064204240308736083289250933661070517861933607033805383794022932833914403046538303160864479381724650667684378003267241939785566603437594388219429227245319361052082720101153688737108636181648544729232365745223735571958927805431626874954284337872776726226192776223809114300468574608813958523118548177886092362889284408683605828714504550636413269626117352112283711190743705957538771405106257296054814739841947086172415476929232773599749549247112194345575894505210361533349007732728515354190634197202883617455807662715540116552260765510850657135720244190956869964668147050309837395659245843733132747750125006720855350386404222102322699685624358041394671351793225094747979930897598627334206296992066864002770865189677622663536544862088852637370423181596293505045491829198840304769603782293214203771365262426835626638710332592520084894203380483205318574229509791732093263658924554481129110023771559358840259857767832130838951986420641743231157549206628101961335770935217869188598407871879846953788231452559357515703225887372560571514246425295258565332871227501930345253728333861399415882260461345687393410071890081321210957633577414930430621476910640788200315263505324920812865141791848583320684391090487087855177019341942297833034669241769410159832097007619834572197457123843735128138967329683027440008185533782920736485842481620240819664388691386839924189266798055808795241509113657623950370311771062440917977857478832595327568508967705426889618627733979628180362261623944529557924325588829972626926001856116218149641848931627611856095681608502049604728694373866998800873793794833475389120231569350898916749652696861495083269053509194449587614725554391245026950041678221421784696915639893978008988115974628714547147103468130211269397474452407156217137857585748699660585669149692200183240671446131671973589521765207492540448301776208106269303417635729945209531363305026742848137813838295036147383212196832126162865335463466561361409672786144491545547877231568077479720810911371970039908454207555969974929024330604715947635120890002757270394372957682905595391676060862365861775640550248935336685083103867570594614396930935612590413493959149016850970545876096218158891338146114924706065887199224191578080834101491435941396082107871178120691839003211534425918642587315041952198269461336583739132022883309457097019209940833906282314924551936086693600235902374507567167637535381913303859494521404821158954494161315238799966252882039753927801125656757563231893176983091324850782220479663033201458404864019043728888446967709975804533406561597647307666736915858037493602438470123931843180216995263782074288168270696306819344125131703913727531436787169764181060443128826914028449143343870445556915243291006445590059689543641135357147336450120418996865830009910043524732386950657567959305789673308988840460874020981183065604588157684942510453265370111980067359260650568119370610380556946353747266717913608784026798916527135355036629347450939565819904625935450373503394875228925517167402287702922664490685223930566127022783241602405058913218083039094404066037147525985595082542486481669033554440669209239655726473710598417289863187780615394059781396829068192614265298593097207267823436957283409373106070373278544263878956713757687019674587981457190254278514279204605546359474410508605834050747211850883484821202442476380159869647953907610229592310303134114435748409130185991653212644798150231313091123308159964059871142740195724462392875247410611671330900705772528157325261686884901444831627452426862521432079108938454589234625663627219874064683315753735830472270203230291590088379095823378190821206228778033950009778463074754597422953197657206227154124599901813786834672435550297250999713209514657587197026419042487591887319632167337140620411177338653361805100343525050955261127436206126342162794160499514973561746207894282310244084464331015046184437092252547644317599059469495339372219011274409057478305874498858052105032898790647318808541273973307143643618340481044516933353419712178803129533334912992701719925571602601231239966045848260929819259463725272466267039934723526708966021692828547630900867908313425791675877136094296969834925611943928639082538263478045795468797884085508436740105548477287495851150076743539940855079782006029276242181215199960474633917064701868986279575047584875782888121629159833482729108471411086004777222004940690886933449751160053486753465048382468022710892618307193393528079008752243904763586506319110138528885232166270184875496667758544101338512476188537568996993043100897750547345490436292741108436750920835304292808262544944670065385074720714585256100047460364718010959212394917302809571145040577796350681992159274957618160496935869534857889595670144103693696724808909241541937251046834703005546264200526980116401703872577549517787709928581009929724799949713171016514146509097812026583336780509096196442473618165553854996468315728059606232406325692644298205678901764327286910778328167615148282802913180962943257625623528207208823616122188000672048377973388690302368144655729681461875178487994418224929756029694157916324380087380717263548515509059805890429224503660512145778492057781022321319300741401538410679063054050314878059794599008988939481984403757789776259194385861548907079786218989999985501502512699493693947825897304013412779728462320145418134117202642305220024682824144269946547059866645346290129336922393759141046965787439826153450256825134094790929592783588398691272222187792943672971006484184098016720992986997067386737093941669105468352548563143947335409769120498804286178739726148574102071841252232146176236358066633649877671588502174880747910470620226875718620591588580632465728693537756687445252996484012749560906868590019478473487675167061165693342982827540412207944219805698909631680447518841794973864110724383885552977456485490355687570208317569412914524579582528443585244963004875806464317485086354268522391292873764104739225726087924762553552795782491218068168781724170435932899368215004200480636159439699787658534222744609009579495632497983889807333784591846944280527939629108316893490033323187019394767254142325425613836459619989619263579911717847411193199852084628049271525546800786030737052994542939990268948285213669034871808549614119094067473581277599609496762960972260689628137112032360486445234598511199684675881816677322350072503071116878677854198807513803028345384041193976936949595607619772723094339732775857366188394242237888454133005692229522627059021766683056379166328758643074034651477088295526779481972642314260481913656849908998775026037593896126509468805024130879738114831726507455996318751711242257525370629800182960054820056459299031313033178639379789867248052191948564791284306277912200831531132727252848046975079274107604207422180790180674442083634545051718378749397382615541422595171094449620979551195843771863108274520677010097230731862345300468517668904946393480947243124651839763143567511692669685031233831621389557659840710993215211263285069063398339503947184997161094083083053877736678929654970511831662984737433141151838605212887047272029235859200632246127971440751906726106283042958810473062871828212882679956627599162978008334087215417428566328627933710537352061688382898427732919052252532626559528549194113550832651182056923950487564696393200874225189927497353864238597667828879046351719309006631247078157959316594673705629051666057170908233857157705536358758178001948093811831452532180297259924653826868431583529081443915403274901333012849380463102430959626058209184844395226752980898545128507931317338496625907256515055513251369817237050215214244175173206043376003288561848566594665578019149404316779573795236831759132895146984523319002050235985934121956160952246405830116891841948253796487984299917640127262665004204345083559607575220761423930983654019621896859885405207293374556775708780952649634706639743293665862226821403434927000882776959081749622346161275243116822118898574420383467793130210766019125911546825496631056718811589200078195809534266736568373586977485098744359972146470201537305238751109316700591533775648459300115999077864969027102697762222355198344795959353792485217583990345381206371761414421010734536687579132581669308016312802515063088351170568135725500656192906416429028050777241979163318996341855526467788527253070038318737475135130442244262535653432939984902783154351748576002192512489655923703793418069024108798838849972906445094342850419486037552044967029146488792384693648586002550767915684072869316718751724643267161008346373705744182753875744727023321494376965078987015632054807290667808424067931728833093486771961815346826309828195559704978447323474359127908437922549870919735027220283560010130504849534025889434952608766951053099462066403239613829870069506759073794934606255061208438993717700947178902855875926936475717036748410034341552469899952887639559618260694386489180172457011104588203088631135975270713663097698949066683649938633016773410320323447393245620649077170739933817132023640554516055821080347587299514517344103913434724274570905671411870152447633630020794116729196035297166502202283173704040564353623362060624602105914889095359863566586252963824184113069544184070392139803990488178637780619106269997462589919674956410553073119659130443817291726973054433812614236377566385896766193436531715868492078679787049921607831256548591420181144337005624829883308079609829281702933920044150724362349082932337529275183555550759563264061342114344076379295287668872881144842678541568323866396895644823948668725645603165802387345638352049954163004283115082448016533419466854214433863370929972934845362307106230764527411697357427260580526749886925414604386144800887890455404447490586471146843968438319402848710992027349479404509054156265030858599686233771999636756519543362055535931234102657321710620159992369968135582404861074012859908357457643934719496361092731946805880148347648955726838411743124285700361371263752582259872541407572187701536397820799177145606117943127447314468934127745737896295536031841708107999973631172074267987053572743091086520751474818610389107050882688611509676523391949612687262723024304567914249177164676175113427118894827540124754596538131148662139737659987591987808710366016209270335796976639603952589746825309966421820623559980254684651585816259754646896675329322398127468234562575355911037292681588630747026794408719412044361738934185088651798053979414290523336289393920442009235066258188884117507158747732520164728032543870564722222274127742468776838751533544621992260989073383290925600190934951597609650422144836431238624232246140925645252235224277512965625723103788058599484029459545200287204461143877805380501018130152779707416171004132419255619937668896930949220825217150414062456758348613847169640357557332484328139934101922784000250937441082915494248269026918650402924769009110291437748448952763518164181850168552758762497110615089698420229504724702503938309581244539522277495404978052342540570967136271030627694122107443462213646337183623126971012986781309482020707420593863632485843384964535477343527400908627484307719882317043393718378810857723613256421901261434759064975382278747543366226417959638731591323673527823550282181039009870490445320706815835382713226494596508647261636899500195110884870850525896617885714025707410504066312830152850302561635092619333567203579066303154655776839525470585505379545233565628470526466798193127760716376850644169280567548816813902508183547962830998308876094664913115567444899888066294586537615803720457816111393232094487429956726714915349898077589609929473981536895559767177568911357519231394434393732467776362068275102582907448002180170709026284212375295627830371543656788608582913633102101052379592812704964682084931076096', -); -test(macro, '5678', '0', '1'); -test(macro, '-5678', '0', '1'); -test(macro, '5678', '1', '5678'); -test(macro, '-5678', '1', '-5678'); -test(macro, '5678', '3', '183056925752'); -test(macro, '-5678', '3', '-183056925752'); -test(macro, '5678', '7', '190268860537460461066531712'); -test(macro, '-5678', '7', '-190268860537460461066531712'); -test(macro, '5678', '9', '6134207938767795427279285370859008'); -test(macro, '-5678', '9', '-6134207938767795427279285370859008'); -test(macro, '5678', '11', '197764925536165073952129140102317226473472'); -test(macro, '-5678', '11', '-197764925536165073952129140102317226473472'); -test( - macro, - '5678', - '17', - '6627070629806594831656022886215600897329358775394273623628709888', -); -test( - macro, - '-5678', - '17', - '-6627070629806594831656022886215600897329358775394273623628709888', -); -test( - macro, - '5678', - '22', - '39110965772324916562997532491390626962790594973791320596125071181383759481519734784', -); -test( - macro, - '-5678', - '22', - '39110965772324916562997532491390626962790594973791320596125071181383759481519734784', -); -test( - macro, - '5678', - '24', - '1260925177434571255317406540302166533842248540127020457961763919365319088416200089199968256', -); -test( - macro, - '-5678', - '24', - '1260925177434571255317406540302166533842248540127020457961763919365319088416200089199968256', -); -test( - macro, - '5678', - '27', - '230821086584467736122591924241292894830299686290762376622091655042209731331992663002654366119348928512', -); -test( - macro, - '-5678', - '27', - '-230821086584467736122591924241292894830299686290762376622091655042209731331992663002654366119348928512', -); -test( - macro, - '5678', - '29', - '7441598892019879120787748898491222680774095511313311141385222377597848399868342545524067924908115740965470208', -); -test( - macro, - '-5678', - '29', - '-7441598892019879120787748898491222680774095511313311141385222377597848399868342545524067924908115740965470208', -); -test( - macro, - '5678', - '1234', - '4754545701433992331733575256099410533228458670475892396381228147140277468895263961376711046431196278059194371543633511738104729515132046647921588948673317858795453334016910038267103044330714716949310557017200499682459199588937173529096934288020024176158267550101701080481254770583881162470132740630857097654899879616282728381172344973405997803534651364288959497452319805334849653833958710102843349430647090705281620494871877782238874887814289734228053896202806354761750369269951229593313010945689761891211258688068066696055485242378613245933537337160634515912577045202472450817451849184207035648874665441200090642213657945355196460821766460825032224534602658525599188179237649065062512691280473121441573617950552334838912754947407978233727886935344811884839323223019614920728343603125258018137019905454492748785128237691020015003872956540230098415206613398448533046207656300960598259213003433022409251838940742693047445967307981951797528065313733200257272599665561813580891071207079215211460876715623293069910550166302272098118272527916433819800298828239405657658438060618142659814207004518209034153803725735869682967280748736992669014651682583009724296577174387664968207473327117061022862388179179805519732871243762549484990925427400006876201981312808033770504367669331073626566876134508721159965417268468228608040850320762590581251984432320891961775899262667965048729940448530756142869126858563901357526390190162408750825956708618281237598759925725241049426257439561800035105159165326290183277107179838103459135561724394264803171431808241820795445711863608586766345039254614846933931024903619561176580056139441625967323631797367126958482941668050957659192162167276197457147030284596116968435975482030070191450200681573163807130339270972064786812978664842441338738386157257657806440916739246453417871760401803525801345778950479694386503103948471086023573572269171237514322085437996393254976781298685048789580780175371793986673922336623057771141110132765327451487041405878107213683772036140143582620048289665134817805568670112167960808287343393646995734701543886022122701209620784296421140764622633595229564449908877625079263109689514631383456799358203288875405982309838110130925886572530681702118654886611249141922200019882428708452245424153239056842500484262106739374720265689912446227419480220842375352629558959175152376134258348738676918576054510702773097564166661175972907344227049028399511499148144890097723715043579731339916022734957419253364608790001408119360562088903660541256901511777417919298919881207626846049705641631114520861910821360106286185700362951871430037373045323853881352479438655780016733428623128344067196426832063335414492412985195862227411532910672295727557475523062269393814283457830004423808768415796967148960731363753261748078031957490406872476713147808646830842062710450030612153443209478241811514340917541321810139916689385477670593954065087892241850261558516392240563145569557862995904133784803099322335109965684092492599160998743520079066871458347318820041040608736708265400811003296782209446700589963177364290058854636845629046307738816633516835431430230362482024920978970474394893679522412954011767859444487351352199067658529260874277691008237384360434306282016514094096768013798147480740509779810560544648455485790268334288880803641971210749525943040368705400269755514646235977621926612279423197054873015209023113609804623745158430744774035859946298137588499302254901538876084525827492824031763727264344218393017853529749735850655796213422695465000659399958563228524294668421953057407346976847682240743601105444694630169017375480155130799595124045461115669497563631224904361329523188370665305938674437690787549882389569867694166936751165216920602732743849889023149711513126398908342104741198863408830097845137505662663458382001009103659839197477448289276824608807661040318889081157573844237090631229284090854577084517143322570965548490565414070261786860900921959546383612702905328456128108405235351119788158687215861758441073018835708344133679077552976919500888460205455433542878586438605353256917018782886441646030034030257088489389720348078103255876838236261154196475758170227577027093408115125958792540599677335099871170489525421378579051844293126380522395565389230525206095904182031294100225265853213565367785174160416143450757600749410617414444540260518189203196008117912073471241250825794798475803391996546423777135418649913067759391180278825562475480988246874450672101428462254341590331425352560400400946802179861512954182324631693500044001899557332925974569520166679673993884049720918350709799494693984974735913494505510527664100089926593875304828031765284659403018738108240944539887468544', -); -test( - macro, - '-5678', - '1234', - '4754545701433992331733575256099410533228458670475892396381228147140277468895263961376711046431196278059194371543633511738104729515132046647921588948673317858795453334016910038267103044330714716949310557017200499682459199588937173529096934288020024176158267550101701080481254770583881162470132740630857097654899879616282728381172344973405997803534651364288959497452319805334849653833958710102843349430647090705281620494871877782238874887814289734228053896202806354761750369269951229593313010945689761891211258688068066696055485242378613245933537337160634515912577045202472450817451849184207035648874665441200090642213657945355196460821766460825032224534602658525599188179237649065062512691280473121441573617950552334838912754947407978233727886935344811884839323223019614920728343603125258018137019905454492748785128237691020015003872956540230098415206613398448533046207656300960598259213003433022409251838940742693047445967307981951797528065313733200257272599665561813580891071207079215211460876715623293069910550166302272098118272527916433819800298828239405657658438060618142659814207004518209034153803725735869682967280748736992669014651682583009724296577174387664968207473327117061022862388179179805519732871243762549484990925427400006876201981312808033770504367669331073626566876134508721159965417268468228608040850320762590581251984432320891961775899262667965048729940448530756142869126858563901357526390190162408750825956708618281237598759925725241049426257439561800035105159165326290183277107179838103459135561724394264803171431808241820795445711863608586766345039254614846933931024903619561176580056139441625967323631797367126958482941668050957659192162167276197457147030284596116968435975482030070191450200681573163807130339270972064786812978664842441338738386157257657806440916739246453417871760401803525801345778950479694386503103948471086023573572269171237514322085437996393254976781298685048789580780175371793986673922336623057771141110132765327451487041405878107213683772036140143582620048289665134817805568670112167960808287343393646995734701543886022122701209620784296421140764622633595229564449908877625079263109689514631383456799358203288875405982309838110130925886572530681702118654886611249141922200019882428708452245424153239056842500484262106739374720265689912446227419480220842375352629558959175152376134258348738676918576054510702773097564166661175972907344227049028399511499148144890097723715043579731339916022734957419253364608790001408119360562088903660541256901511777417919298919881207626846049705641631114520861910821360106286185700362951871430037373045323853881352479438655780016733428623128344067196426832063335414492412985195862227411532910672295727557475523062269393814283457830004423808768415796967148960731363753261748078031957490406872476713147808646830842062710450030612153443209478241811514340917541321810139916689385477670593954065087892241850261558516392240563145569557862995904133784803099322335109965684092492599160998743520079066871458347318820041040608736708265400811003296782209446700589963177364290058854636845629046307738816633516835431430230362482024920978970474394893679522412954011767859444487351352199067658529260874277691008237384360434306282016514094096768013798147480740509779810560544648455485790268334288880803641971210749525943040368705400269755514646235977621926612279423197054873015209023113609804623745158430744774035859946298137588499302254901538876084525827492824031763727264344218393017853529749735850655796213422695465000659399958563228524294668421953057407346976847682240743601105444694630169017375480155130799595124045461115669497563631224904361329523188370665305938674437690787549882389569867694166936751165216920602732743849889023149711513126398908342104741198863408830097845137505662663458382001009103659839197477448289276824608807661040318889081157573844237090631229284090854577084517143322570965548490565414070261786860900921959546383612702905328456128108405235351119788158687215861758441073018835708344133679077552976919500888460205455433542878586438605353256917018782886441646030034030257088489389720348078103255876838236261154196475758170227577027093408115125958792540599677335099871170489525421378579051844293126380522395565389230525206095904182031294100225265853213565367785174160416143450757600749410617414444540260518189203196008117912073471241250825794798475803391996546423777135418649913067759391180278825562475480988246874450672101428462254341590331425352560400400946802179861512954182324631693500044001899557332925974569520166679673993884049720918350709799494693984974735913494505510527664100089926593875304828031765284659403018738108240944539887468544', -); -test( - macro, - '5678', - '5678', - '20961103475860397096620198785828544812451875765346411250885842038327056305534831427524235929264523155549200123342202792959619294498356925569029791517054522023286004576806428127901116917137966737875680160041853755979622047280407769716320420049316833329762005532988708704331049532598407081927588476358096106830430346678025737622384646014143458292081444951646455890942404183781454801771092170042167548767143528488456067477683808637020193350086262620837499156780659643514425992677777549276236748838733016855656036767803970531404652487170875923200639888516998895605428441017745101547422412068987348460209115448467644054468275648419404395337331198996639591442581724727811657252555545825531082415497100293537939448249078775822683882777300250359161247892959517197286724099314650422427240434528774639093971213821558552657313136317745703702089009078172440361842759228550114479452733116278009555122957802967528098994386176881771431841384903021658686272530901973786608204786721041117420281569693260260781545794591991815167424486772633334335112935740169814675786293770425639825077094249010948409458543312552634155954058706239948602914517292759521672875666304364312018937594156108424003164485077624655063004963280160357043967713172961937421714852351728786997474570833727073802073151242655465897621077578606223043356016087694305078059542256401820222791125648819317007287481280897846845478489548491210810983350692374049786882713293346324409753707754423018924164908641564327101470836717142930169947476809752607171960867023783880340917424768781396844547673066773609064248651574496288539173939354153931404464270119589133463933821401953922574158938448014272201881447815841632885101526774501650212127008845801189603638355135409486428091715296322188863520347687656551080147975509615440823847444672761184968625278441257265131960174485819064367376310553604561354630629371249798285268189004212654426527594297664248117535729307223651413582559430948950731935053761900974795521089002020414940829028280569419489831414227882285622096763688719827413987472799210647005984076492462922894315598285699105391088926945250813040451821143186871090522965245589172188408143948195834368520199216096394211579483487673484669778106884250996681597133290790739693751847242221100768244023759346750635341703420379801838942511917350863694564847029339158694426890381897099989180224343864523754112539067694526528401217644323654424427231493800150103842858508404600706382916219260256068179635822489248860978198535137682711137174374077990340914136980156334917668955828893820631948604959981643749170072224740493035859834098207411894779743137041606544382898751128407139489082003820804677974180712232039944683681108546158160055498114804222931787517216194961705600600921002101530486944828893320089698663702374771897219653436814633911298888459476136973550537723000547178216062641659170242351858997391600121959716952009812638059726218252540709679474668997724436632309816876295236407595457518507126861860680695750920654652963320254726353162418187659321568071114917619368662094712938035019186605722392484634089048490456834552767036555584677757558574446800534129195021872811546196149505124075849131199605515302266412472075986121981758995616205249141869256646920464095875775897714478203686225976431026856924883709687572948846561956353515691616376669694467094214890998233570175924571354681813611569544223781951920459777052032721788869612973356209611272860999692421601135843006769446060803502108056936952707032803521745669953368947886400455020197982813897023648803789317080479601810246362997281767966345793599493006980728517888764254888947867564213736366873403675906000079828022438134598229588800533119240383617199914137931213183505864880894139667746523030715098472929472302939576875444596462566452370793967057305702473460610483922270628542439793100970761937675746264116065218777391795769254579066163889330331112744733423405142790082465878728322397848857528516220224146420991983558383260828431109792636682987735128999042469763301989217214843757185512109526419275078060717097555288972272391704978646752898865425525925148946610574643747876579415727008374889238583995957880506518609256410087352303549297375442558667992920688803103146202722246249407948046901012612240584683255617396467408314435847004205877168068226283077754365919306242384808777157837278694966451380135919664731764683570386835799307599048703936473275613236972515229396396260958643009818292356066675853792547520081901067916982728871525491998521513382058653551548991210196432125407005261758774055758476265898632777046159129580237974401964271710584580359869876137967244126611356619072305094409440480536976363305436314025755667452127894209347682659916071643846222364653470873175722549995662291210659162334560246843460484181862192208393363077518809836625686572884061772196633797888749892277506502441191600357977013385504776300311259998291033716404492720409291745672289169990906465740353542556271192233542966467378955571662470116771561584749525830836527785451464178352895390807054081934597059639771119622039654129377672203491023057905439106311615960089279769697340091409307248615189012263871246113888420237101222530953693460050751365447872194314346321021252618391674612597521999861167606501984138883750088324174460600828958999555754255610905124642928577815381854757230470329901276588212295301182538623633435542874680576666352264509760450468573897306825844154780925961121512391772395963933139713039190021107996813065298155982705497740394116136786877280826320702315582767519525968812480806822623479009377991272623849572823287103715254262434467196819571876352232869161557710895323643426054024697392936513538931702107731492975713311800736817229334271317993829146513166265221678058872670454757573140530510521990000183590216202544311048834058740149712755109451126122309764879750972847619124852572353750625754484613228115522998750920829289098099554644037180554427993408365441797464370149734104965776213777083810307981642619540386518150159046829445424829754275452381328601724043449450956030748949308969828402680425162361229035418400544619561607296204881691791480090999541515616010212649557063997168853645599579523842619790074716906017775453082500897068436460404332503814365128244826029711441494116174974844655172720999917810103350411225796563189051529716191842251620861664071037527702847381765521782774102962458150055205741141136106439247547142624381556529650433877764934281678531465410529585976763361537124975372339008916161274767618913876519271418713246480667376525939051541144349620741087940031759796162844867538970077387831434344681530487207516991510520912619511583884571364622210013697048350627846600223329500321002977613397306970367590540778783822774812030074816751772184402370029104045385214602610907543748021786280923450646029057709024071335807175590663303554223846464611978030180007569607921318215938216147386594093783432526613610728757005691521557409476530287282519784554821625290605602981175951476074638525315922123873770224286936370399872701299567171494946919326740256775127284475987028437513344512643223731472467390195611228556080275245145240204853439354039812301589775361549206311675316060841046896944990780074886738787814930150748548502907587826876353074588954972282061956250092436604733846523028612361583744352854099913930684272445300389550635728506447056670977566263911578264334619665006859685788546051311606465170520850052292627918870022043421681580681687815285018239742758216968701779554391176904096742556900135151126780776552006315456063734183800063507587324457500426893135954572619126593168091720910428883991975359480482573972151692294245346527271827960866757765591817415445212833405373149434835366091481859076709340699689283099227679095904342934396597071849631503357041827588692207811689619541022987674906772902279361365116008403959183232244277968153717371380870224724601675215395853317076044589055344155303188951949633122037313447319757599917592415992347777664120565677256132176162285933749924410020763498845915345437059932175518550870149266678352583554753248105512643561027254478108520853968547412343074452732048940948337258955528107066091208271688418567950938759541825412737643300318455888061336920776577194225851506408333260918392790229453752287062094219357308185064469699183516806540942085490353756937701017866352051531856798410752966442088040473501761715035453238890231970013529945683188860755904234083724684800512845736719451852683069210468801867201477539348052542015577484072403704037776579238040836520289410747338939580941699344511302194270338381742596661809385741277476102729401334821325398466231955303171814534873887668780922143864823502410049426239526505466585893420380824352949092066404315279591440868891045752500463965898054919547044239119894054717314737895191652981340489644261093020311422889692148710370782648783605622470403387492804891787456729566334392617608021680405626520291926600181533814037514425472456947855714901443112699002508628600214500147437397501520737486276785876992172931265188844659595175189051513909865093560705009962172767282431656449941715794260678036177108296646748595792902478003711079538568560569329362052983611711508572531810948840324314191268617953219086794280506078381146419144518511359337076537668884246531754894520493160189833787323225134536395026232747632921100895318203838170957249192688530720205345436462911312863754388655934052209987748976917630044613649507982963832646361600102327899814182961925247597766558883415426602825642679231108408717356160761811443138678307765670120961632324431937203518098606674451620777129193461079930070445790621797443406995457673007773949240694361732293871256269440702045044042508400041950088476821880075340029625967767429598359971876420730553017036711928950784849486622452639853318381569541989587912394634477936955057149926195818822162073890615735490958836145860064089782477806643629376414359166374954027243086599306339146161006095540567436463505814151437072367936996320385241887273358613933332829151995652505803301556826697804912428850607413334679395180944373755345498960648748382482129209871428353424166735231886964387990779276298346036013789942626283820173524619459795908090658203843828759290932760054102527111538316976316107885329942413386870965936382594101982473536441345366235792871866647413979193839717006298786289046184792740497837459531945129292724622806109963537972595469737226837786127695843373683711177980931771124939231813651067119584047671610562615594610013918906014074965915938697967519291496645151577431294255803269930598594469775759332172418552542909930827665688050144404349648565099431522182800149383324488601033329987788729015603953218570332519940819306386650225037968580102257373618430731324266588124210598703511685751977221929792590346525097022616738437403242628009366426304027403800405332758340415937758762022018256029841471401813518917716264970909993826679020791028595741882041564058061727313588364708255873250181519665032113898406604900457648507873836669075356646954261077641216790353285042630288932760415550082594708503004210469047805667031578982859227123863848155443706073467171101932882914667034131195237741270122375436214181192852781446477601012439563301881420830604554167146333080753008048466060868180919956181803167095012443813370384688061266418807988055127749853292289167056432298804062936653555435002773574758792724801465815463068776612178263548503872068353366422210523694946841803129147625915455142179893256525229164984372164655503046171715680679418354756933948568190062498291382727237063733314557270124601968330877375375302905000458666065115393775985001980241299574368885547201655980200135959471425563854499243977941637298696317480645641835649611961706086308603047338759013980114790118006676458648654934040344142400548899195911697413888327578658688851175449259234204015146825772165610587763768386460010876806660067899144780128980585458498486050060134774086471042255869079733943552895314018768767346670068755253063974621759845733812981050837508917001404433039971743800738940429888879719722032789032572353352744414958968603767414609445925606874565266830823048810770676933082518916615247308650769963520499383636076074952007889469520893094651525307614701445078300776534195271458658643120654661933319467024570788906633360571649837492003799512889247911398553146591016455594218010075513724555874545150086787082537930052790651798957811066300144858455106371826307947479024319648174975420433374959084000626716279569226568594439081586004086396789477140805229043751501120056323542312951737926321877235735914913996771106885471756468685655223612768963960722422730242543178403592512730653108901995129957541586204986193328435470246585569185661237173969190411536963744455489053317973231535816102151692209387506678463166253256748427255152612939374373490497892336019501080931787139480532743574835338284878792836456350443071849124517079708282814044437298390350851907341664119465791873084560904592692890839175621671856709653467138377030657216088346458495003129554331909651018828349471677645970827844610092659017435212835903616196746033025057028617583036181754607527505265145156915470410506790682071708352303854971538714988518380835322105678173900156055910356897513042381483508937842961980161225304561882550956202034776079550133622209227253722849998842871720910727926556496708078296526342129984119761109693088229168055370682490197459698160878225168359328983640522770803808232985893757138451252793719878554146381587949241129832715284164638628327205083947429369577324247974259656591200285342816299760599997325343453887746113000804971059841058142634932629767863224029057643740199869860852268177578424390685549803794805777768828321816077711698044150850387564161363159273195211266593336485672068912471611545555503828635002039882216193749699794930785426172968668007437496372781477721590621442715765093180923013806625623519237937374711524887079886806048451452685056714484012446162628312599653092101079835587808229519810848029768298450707529049027855868594581351120373694968471491325622921276839709147987501499009362126994924173034840891447854850534760007717018397409635389989721942703280358887059064381016959134652333830901444808032621722673636621106845864481104295244621928353536906854484306037465883277840775957049146224492353399079659842861817526312402994884769704689603020779604603739636166608166158691216721969031390843150488617586505783575176219285589177884503871139501493503315056927532546400718168079346521373642983412554286854653491668302783219026411150683690404676506814296062048782453375783985993074773600530807406821508678796048884535057070454725641832804881628290472319378708107612672514958728208415814832848366830770879939252404453831503925587010649860843157237264031863553723731115423243833225146791947855702939079762335792076456959779445036020009496001781800831364672755699695312438929954900086480320360978014700132221039920117199716948333953655007203510534208947542173707336851190033391697173213334983116967278338578042740237971848876445165127559667023731212410332059567408688316981002760859447186074029885560854879276393896939409839546337254074481153175622933159009005807484599017919954851974584592781083821785005276107736054438857737927856937120884899984310863662967573212483017728483751788255634467095976284660372895727900973207840312300428355116015427435590176977077187205781812230534547145024610923191323048599366029697646809970005492711875817316442030817504177259518549452303716064462428946033555861760032856644595430216590534551860765065591027032595210910008411076368147326583568499051675140899438258973699944961369654185169046437778566505363261882513483043961521822263294058027245777275740012119198813520182688767132883689210273201334533673118014437798534485316245391538318773583087415840444449319110606856512447512427810349060960965229304174718418904023965554517483150090227734193870384044342790786375008719255816638434921858068442041606691749879152418145598438590758009228404117127766264078915319545878728346609769951809923039955260523001211528419908084892249955619893908746226668926291220179829726182253315628363003141666323849121632438113963636026816170489507556799521505584106702009070060137446668676003914632974027568315166623356117669864718049566304056730319591969263694104593459765322344772255382701180475436641886868678783624543227744434298993623572900060680979017067990077221899049059361499776668856843365761870317864819462428428848922374612219495703536826811251521962115417657764716996599920443771355936808856994611476907846769440705945577948412408098308194247790251551814007405488547607931512528458295294431561075440913232712872386575874523702338843048545387696311167012267393016243499862701702704559182961184393139009670554985993265598484792846589075913709674891472962734815769679185507332710024988728112966765370082378434820660544834153633496561669001904597457934287983634833285858233443830907814288637924228602612202936103591956657280461805355377341594603036055318976423539874466968971622720400344448054825863644910603570330666373214016807494452805187564132062676258921397872976935534785650666466979058203596663964008877239131749538077378553261427912422051571242411749896064698020652408788498399054601940514530604898867419049351496438038779395408661009142554015099651484475265311251583264780006555449353786535571876736192626391724175173600804803164802821449711193065509497976905374647202115518871632987870116904885869297723779451615583994721144940453975894523447005168454654094792512955530467522876206229286935224412977161135850490857061187099569220880490969801731923939968371712015789551373893696433571630232434930844238107438295257090395694148469435787522959391460491063999682320399157149585155220573365774129776211169850925291001405823548706054737610679934077813002757289010852930710833890387897603293202189092351455389213224220200812392861786079572198529046984045111530589932771644921408568949351465102893613740863050867997516831526923647362713692102368506180725202921498997373446137055388695228199734210698224497873308768594575297220521759107033810828350095765628228120152284513992260771237651139305247739659270616280339908733497338427091680415735990262483699211387602084318185900414399619311359472134983218719924998666805502050740906549426901732133211600369364728749393417316913960651023842430959511253264652006272039019440372374464314002683726896273148383941896402669657964060226983277289594026510720250861506182574611925245076873860196820954418487005698506965073242275841765055662272895065533031044216483018490359334981010684150119460032570579963029007065375193852242835591620381410417921655911808679699101792574638397223906183709585980959164320240595763914940916578772074981529105442754965693025026444579715860229807439358682267593669921082325720330651796439555898405980876598479829844298465640244001232596306871221389146172690875418892645048162202327778078851278433613157686380772481696539616794031556767885577380027308862476883800947813971379945924507762564255570966442195922640677432268158193234943248422208020363463924017498973834663895093591825522157827688503799798956822355457941723297439393436585811615367822230560739947438397685416715810717599247434830137898600384248415491280349563802303189361073536367401385203523086130688457063955625439511748867286125836478963188607731003192120083349188717903595076579429799767124404502580731912584575058518902202558354659537257581450704768143656086238404537693737301270764545835428493176034206742679964923389637539562396171219624285232430392133671282455067288971838373684172500972824178311994559519745977773185377274315387612668976397441534881939098559968323401638901357042031758745222318685425870175763581210340825614377239399102156681676756886304126199512477132209661598167513065258796567396244516766667044117769296076233945430288434551388983145956356854054551349043233270185252479304817744547523647489442750388225710640552607871951523222181135987822647479160843575474425232786723635746624017962010441801682460460846911429363958171491000643253046537377592219146819005387665341190415552719452163396674187225971483647197960216167631640203688782849503605151138399519953056223592845930065765020589667028047478555235402729913149859498685868729063983583291781384695081470874399025098701926833100271744846242068023582524050060108933501814997686980612309900254566123795338465882337102638236069457270509138946913421811976791562523400704102948549106032451197653504432853349017333134595228420504674415338093336394471848456363569811978503849071206389386547743012787895694085415358532891712913369286066906727002487638172447907565640414172498327074182250501908413014543889563559417363729989034832947592196482825280790955025439550978361293168022571329210314775804687773638280215386019801405994354558803657261076788491071425202082643783638575084090901655705454664097045389489400799009505346024924745729201182421567301004430571916568576607949169061394726630519011162277327697372959941859397384603824648805733579846217737162375462758461188848821424664212093326156665691469019112829336542913113790202783071641612742430534416926924889644751793603534790540558697161796514596582648358122270207620367742404487043868514971674400430158941877734533743310880649285086576473788391037431011688694806036177790841311961196527311456581911009317143690944647271732040654178076547839684445285591602529693579659384882891493197912230169540994733315399796960250749876936655523749674175502708680570084371697083686982023025890173668649889446225658735966722221404808349220864', -); -test( - macro, - '-5678', - '5678', - '20961103475860397096620198785828544812451875765346411250885842038327056305534831427524235929264523155549200123342202792959619294498356925569029791517054522023286004576806428127901116917137966737875680160041853755979622047280407769716320420049316833329762005532988708704331049532598407081927588476358096106830430346678025737622384646014143458292081444951646455890942404183781454801771092170042167548767143528488456067477683808637020193350086262620837499156780659643514425992677777549276236748838733016855656036767803970531404652487170875923200639888516998895605428441017745101547422412068987348460209115448467644054468275648419404395337331198996639591442581724727811657252555545825531082415497100293537939448249078775822683882777300250359161247892959517197286724099314650422427240434528774639093971213821558552657313136317745703702089009078172440361842759228550114479452733116278009555122957802967528098994386176881771431841384903021658686272530901973786608204786721041117420281569693260260781545794591991815167424486772633334335112935740169814675786293770425639825077094249010948409458543312552634155954058706239948602914517292759521672875666304364312018937594156108424003164485077624655063004963280160357043967713172961937421714852351728786997474570833727073802073151242655465897621077578606223043356016087694305078059542256401820222791125648819317007287481280897846845478489548491210810983350692374049786882713293346324409753707754423018924164908641564327101470836717142930169947476809752607171960867023783880340917424768781396844547673066773609064248651574496288539173939354153931404464270119589133463933821401953922574158938448014272201881447815841632885101526774501650212127008845801189603638355135409486428091715296322188863520347687656551080147975509615440823847444672761184968625278441257265131960174485819064367376310553604561354630629371249798285268189004212654426527594297664248117535729307223651413582559430948950731935053761900974795521089002020414940829028280569419489831414227882285622096763688719827413987472799210647005984076492462922894315598285699105391088926945250813040451821143186871090522965245589172188408143948195834368520199216096394211579483487673484669778106884250996681597133290790739693751847242221100768244023759346750635341703420379801838942511917350863694564847029339158694426890381897099989180224343864523754112539067694526528401217644323654424427231493800150103842858508404600706382916219260256068179635822489248860978198535137682711137174374077990340914136980156334917668955828893820631948604959981643749170072224740493035859834098207411894779743137041606544382898751128407139489082003820804677974180712232039944683681108546158160055498114804222931787517216194961705600600921002101530486944828893320089698663702374771897219653436814633911298888459476136973550537723000547178216062641659170242351858997391600121959716952009812638059726218252540709679474668997724436632309816876295236407595457518507126861860680695750920654652963320254726353162418187659321568071114917619368662094712938035019186605722392484634089048490456834552767036555584677757558574446800534129195021872811546196149505124075849131199605515302266412472075986121981758995616205249141869256646920464095875775897714478203686225976431026856924883709687572948846561956353515691616376669694467094214890998233570175924571354681813611569544223781951920459777052032721788869612973356209611272860999692421601135843006769446060803502108056936952707032803521745669953368947886400455020197982813897023648803789317080479601810246362997281767966345793599493006980728517888764254888947867564213736366873403675906000079828022438134598229588800533119240383617199914137931213183505864880894139667746523030715098472929472302939576875444596462566452370793967057305702473460610483922270628542439793100970761937675746264116065218777391795769254579066163889330331112744733423405142790082465878728322397848857528516220224146420991983558383260828431109792636682987735128999042469763301989217214843757185512109526419275078060717097555288972272391704978646752898865425525925148946610574643747876579415727008374889238583995957880506518609256410087352303549297375442558667992920688803103146202722246249407948046901012612240584683255617396467408314435847004205877168068226283077754365919306242384808777157837278694966451380135919664731764683570386835799307599048703936473275613236972515229396396260958643009818292356066675853792547520081901067916982728871525491998521513382058653551548991210196432125407005261758774055758476265898632777046159129580237974401964271710584580359869876137967244126611356619072305094409440480536976363305436314025755667452127894209347682659916071643846222364653470873175722549995662291210659162334560246843460484181862192208393363077518809836625686572884061772196633797888749892277506502441191600357977013385504776300311259998291033716404492720409291745672289169990906465740353542556271192233542966467378955571662470116771561584749525830836527785451464178352895390807054081934597059639771119622039654129377672203491023057905439106311615960089279769697340091409307248615189012263871246113888420237101222530953693460050751365447872194314346321021252618391674612597521999861167606501984138883750088324174460600828958999555754255610905124642928577815381854757230470329901276588212295301182538623633435542874680576666352264509760450468573897306825844154780925961121512391772395963933139713039190021107996813065298155982705497740394116136786877280826320702315582767519525968812480806822623479009377991272623849572823287103715254262434467196819571876352232869161557710895323643426054024697392936513538931702107731492975713311800736817229334271317993829146513166265221678058872670454757573140530510521990000183590216202544311048834058740149712755109451126122309764879750972847619124852572353750625754484613228115522998750920829289098099554644037180554427993408365441797464370149734104965776213777083810307981642619540386518150159046829445424829754275452381328601724043449450956030748949308969828402680425162361229035418400544619561607296204881691791480090999541515616010212649557063997168853645599579523842619790074716906017775453082500897068436460404332503814365128244826029711441494116174974844655172720999917810103350411225796563189051529716191842251620861664071037527702847381765521782774102962458150055205741141136106439247547142624381556529650433877764934281678531465410529585976763361537124975372339008916161274767618913876519271418713246480667376525939051541144349620741087940031759796162844867538970077387831434344681530487207516991510520912619511583884571364622210013697048350627846600223329500321002977613397306970367590540778783822774812030074816751772184402370029104045385214602610907543748021786280923450646029057709024071335807175590663303554223846464611978030180007569607921318215938216147386594093783432526613610728757005691521557409476530287282519784554821625290605602981175951476074638525315922123873770224286936370399872701299567171494946919326740256775127284475987028437513344512643223731472467390195611228556080275245145240204853439354039812301589775361549206311675316060841046896944990780074886738787814930150748548502907587826876353074588954972282061956250092436604733846523028612361583744352854099913930684272445300389550635728506447056670977566263911578264334619665006859685788546051311606465170520850052292627918870022043421681580681687815285018239742758216968701779554391176904096742556900135151126780776552006315456063734183800063507587324457500426893135954572619126593168091720910428883991975359480482573972151692294245346527271827960866757765591817415445212833405373149434835366091481859076709340699689283099227679095904342934396597071849631503357041827588692207811689619541022987674906772902279361365116008403959183232244277968153717371380870224724601675215395853317076044589055344155303188951949633122037313447319757599917592415992347777664120565677256132176162285933749924410020763498845915345437059932175518550870149266678352583554753248105512643561027254478108520853968547412343074452732048940948337258955528107066091208271688418567950938759541825412737643300318455888061336920776577194225851506408333260918392790229453752287062094219357308185064469699183516806540942085490353756937701017866352051531856798410752966442088040473501761715035453238890231970013529945683188860755904234083724684800512845736719451852683069210468801867201477539348052542015577484072403704037776579238040836520289410747338939580941699344511302194270338381742596661809385741277476102729401334821325398466231955303171814534873887668780922143864823502410049426239526505466585893420380824352949092066404315279591440868891045752500463965898054919547044239119894054717314737895191652981340489644261093020311422889692148710370782648783605622470403387492804891787456729566334392617608021680405626520291926600181533814037514425472456947855714901443112699002508628600214500147437397501520737486276785876992172931265188844659595175189051513909865093560705009962172767282431656449941715794260678036177108296646748595792902478003711079538568560569329362052983611711508572531810948840324314191268617953219086794280506078381146419144518511359337076537668884246531754894520493160189833787323225134536395026232747632921100895318203838170957249192688530720205345436462911312863754388655934052209987748976917630044613649507982963832646361600102327899814182961925247597766558883415426602825642679231108408717356160761811443138678307765670120961632324431937203518098606674451620777129193461079930070445790621797443406995457673007773949240694361732293871256269440702045044042508400041950088476821880075340029625967767429598359971876420730553017036711928950784849486622452639853318381569541989587912394634477936955057149926195818822162073890615735490958836145860064089782477806643629376414359166374954027243086599306339146161006095540567436463505814151437072367936996320385241887273358613933332829151995652505803301556826697804912428850607413334679395180944373755345498960648748382482129209871428353424166735231886964387990779276298346036013789942626283820173524619459795908090658203843828759290932760054102527111538316976316107885329942413386870965936382594101982473536441345366235792871866647413979193839717006298786289046184792740497837459531945129292724622806109963537972595469737226837786127695843373683711177980931771124939231813651067119584047671610562615594610013918906014074965915938697967519291496645151577431294255803269930598594469775759332172418552542909930827665688050144404349648565099431522182800149383324488601033329987788729015603953218570332519940819306386650225037968580102257373618430731324266588124210598703511685751977221929792590346525097022616738437403242628009366426304027403800405332758340415937758762022018256029841471401813518917716264970909993826679020791028595741882041564058061727313588364708255873250181519665032113898406604900457648507873836669075356646954261077641216790353285042630288932760415550082594708503004210469047805667031578982859227123863848155443706073467171101932882914667034131195237741270122375436214181192852781446477601012439563301881420830604554167146333080753008048466060868180919956181803167095012443813370384688061266418807988055127749853292289167056432298804062936653555435002773574758792724801465815463068776612178263548503872068353366422210523694946841803129147625915455142179893256525229164984372164655503046171715680679418354756933948568190062498291382727237063733314557270124601968330877375375302905000458666065115393775985001980241299574368885547201655980200135959471425563854499243977941637298696317480645641835649611961706086308603047338759013980114790118006676458648654934040344142400548899195911697413888327578658688851175449259234204015146825772165610587763768386460010876806660067899144780128980585458498486050060134774086471042255869079733943552895314018768767346670068755253063974621759845733812981050837508917001404433039971743800738940429888879719722032789032572353352744414958968603767414609445925606874565266830823048810770676933082518916615247308650769963520499383636076074952007889469520893094651525307614701445078300776534195271458658643120654661933319467024570788906633360571649837492003799512889247911398553146591016455594218010075513724555874545150086787082537930052790651798957811066300144858455106371826307947479024319648174975420433374959084000626716279569226568594439081586004086396789477140805229043751501120056323542312951737926321877235735914913996771106885471756468685655223612768963960722422730242543178403592512730653108901995129957541586204986193328435470246585569185661237173969190411536963744455489053317973231535816102151692209387506678463166253256748427255152612939374373490497892336019501080931787139480532743574835338284878792836456350443071849124517079708282814044437298390350851907341664119465791873084560904592692890839175621671856709653467138377030657216088346458495003129554331909651018828349471677645970827844610092659017435212835903616196746033025057028617583036181754607527505265145156915470410506790682071708352303854971538714988518380835322105678173900156055910356897513042381483508937842961980161225304561882550956202034776079550133622209227253722849998842871720910727926556496708078296526342129984119761109693088229168055370682490197459698160878225168359328983640522770803808232985893757138451252793719878554146381587949241129832715284164638628327205083947429369577324247974259656591200285342816299760599997325343453887746113000804971059841058142634932629767863224029057643740199869860852268177578424390685549803794805777768828321816077711698044150850387564161363159273195211266593336485672068912471611545555503828635002039882216193749699794930785426172968668007437496372781477721590621442715765093180923013806625623519237937374711524887079886806048451452685056714484012446162628312599653092101079835587808229519810848029768298450707529049027855868594581351120373694968471491325622921276839709147987501499009362126994924173034840891447854850534760007717018397409635389989721942703280358887059064381016959134652333830901444808032621722673636621106845864481104295244621928353536906854484306037465883277840775957049146224492353399079659842861817526312402994884769704689603020779604603739636166608166158691216721969031390843150488617586505783575176219285589177884503871139501493503315056927532546400718168079346521373642983412554286854653491668302783219026411150683690404676506814296062048782453375783985993074773600530807406821508678796048884535057070454725641832804881628290472319378708107612672514958728208415814832848366830770879939252404453831503925587010649860843157237264031863553723731115423243833225146791947855702939079762335792076456959779445036020009496001781800831364672755699695312438929954900086480320360978014700132221039920117199716948333953655007203510534208947542173707336851190033391697173213334983116967278338578042740237971848876445165127559667023731212410332059567408688316981002760859447186074029885560854879276393896939409839546337254074481153175622933159009005807484599017919954851974584592781083821785005276107736054438857737927856937120884899984310863662967573212483017728483751788255634467095976284660372895727900973207840312300428355116015427435590176977077187205781812230534547145024610923191323048599366029697646809970005492711875817316442030817504177259518549452303716064462428946033555861760032856644595430216590534551860765065591027032595210910008411076368147326583568499051675140899438258973699944961369654185169046437778566505363261882513483043961521822263294058027245777275740012119198813520182688767132883689210273201334533673118014437798534485316245391538318773583087415840444449319110606856512447512427810349060960965229304174718418904023965554517483150090227734193870384044342790786375008719255816638434921858068442041606691749879152418145598438590758009228404117127766264078915319545878728346609769951809923039955260523001211528419908084892249955619893908746226668926291220179829726182253315628363003141666323849121632438113963636026816170489507556799521505584106702009070060137446668676003914632974027568315166623356117669864718049566304056730319591969263694104593459765322344772255382701180475436641886868678783624543227744434298993623572900060680979017067990077221899049059361499776668856843365761870317864819462428428848922374612219495703536826811251521962115417657764716996599920443771355936808856994611476907846769440705945577948412408098308194247790251551814007405488547607931512528458295294431561075440913232712872386575874523702338843048545387696311167012267393016243499862701702704559182961184393139009670554985993265598484792846589075913709674891472962734815769679185507332710024988728112966765370082378434820660544834153633496561669001904597457934287983634833285858233443830907814288637924228602612202936103591956657280461805355377341594603036055318976423539874466968971622720400344448054825863644910603570330666373214016807494452805187564132062676258921397872976935534785650666466979058203596663964008877239131749538077378553261427912422051571242411749896064698020652408788498399054601940514530604898867419049351496438038779395408661009142554015099651484475265311251583264780006555449353786535571876736192626391724175173600804803164802821449711193065509497976905374647202115518871632987870116904885869297723779451615583994721144940453975894523447005168454654094792512955530467522876206229286935224412977161135850490857061187099569220880490969801731923939968371712015789551373893696433571630232434930844238107438295257090395694148469435787522959391460491063999682320399157149585155220573365774129776211169850925291001405823548706054737610679934077813002757289010852930710833890387897603293202189092351455389213224220200812392861786079572198529046984045111530589932771644921408568949351465102893613740863050867997516831526923647362713692102368506180725202921498997373446137055388695228199734210698224497873308768594575297220521759107033810828350095765628228120152284513992260771237651139305247739659270616280339908733497338427091680415735990262483699211387602084318185900414399619311359472134983218719924998666805502050740906549426901732133211600369364728749393417316913960651023842430959511253264652006272039019440372374464314002683726896273148383941896402669657964060226983277289594026510720250861506182574611925245076873860196820954418487005698506965073242275841765055662272895065533031044216483018490359334981010684150119460032570579963029007065375193852242835591620381410417921655911808679699101792574638397223906183709585980959164320240595763914940916578772074981529105442754965693025026444579715860229807439358682267593669921082325720330651796439555898405980876598479829844298465640244001232596306871221389146172690875418892645048162202327778078851278433613157686380772481696539616794031556767885577380027308862476883800947813971379945924507762564255570966442195922640677432268158193234943248422208020363463924017498973834663895093591825522157827688503799798956822355457941723297439393436585811615367822230560739947438397685416715810717599247434830137898600384248415491280349563802303189361073536367401385203523086130688457063955625439511748867286125836478963188607731003192120083349188717903595076579429799767124404502580731912584575058518902202558354659537257581450704768143656086238404537693737301270764545835428493176034206742679964923389637539562396171219624285232430392133671282455067288971838373684172500972824178311994559519745977773185377274315387612668976397441534881939098559968323401638901357042031758745222318685425870175763581210340825614377239399102156681676756886304126199512477132209661598167513065258796567396244516766667044117769296076233945430288434551388983145956356854054551349043233270185252479304817744547523647489442750388225710640552607871951523222181135987822647479160843575474425232786723635746624017962010441801682460460846911429363958171491000643253046537377592219146819005387665341190415552719452163396674187225971483647197960216167631640203688782849503605151138399519953056223592845930065765020589667028047478555235402729913149859498685868729063983583291781384695081470874399025098701926833100271744846242068023582524050060108933501814997686980612309900254566123795338465882337102638236069457270509138946913421811976791562523400704102948549106032451197653504432853349017333134595228420504674415338093336394471848456363569811978503849071206389386547743012787895694085415358532891712913369286066906727002487638172447907565640414172498327074182250501908413014543889563559417363729989034832947592196482825280790955025439550978361293168022571329210314775804687773638280215386019801405994354558803657261076788491071425202082643783638575084090901655705454664097045389489400799009505346024924745729201182421567301004430571916568576607949169061394726630519011162277327697372959941859397384603824648805733579846217737162375462758461188848821424664212093326156665691469019112829336542913113790202783071641612742430534416926924889644751793603534790540558697161796514596582648358122270207620367742404487043868514971674400430158941877734533743310880649285086576473788391037431011688694806036177790841311961196527311456581911009317143690944647271732040654178076547839684445285591602529693579659384882891493197912230169540994733315399796960250749876936655523749674175502708680570084371697083686982023025890173668649889446225658735966722221404808349220864', -); -test(macro, '94906265', '0', '1'); -test(macro, '-94906265', '0', '1'); -test(macro, '94906265', '1', '94906265'); -test(macro, '-94906265', '1', '-94906265'); -test(macro, '94906265', '3', '854839628132734960159625'); -test(macro, '-94906265', '3', '-854839628132734960159625'); -test( - macro, - '94906265', - '7', - '69352828108196345571302714548224840368303639678393515625', -); -test( - macro, - '-94906265', - '7', - '-69352828108196345571302714548224840368303639678393515625', -); -test( - macro, - '94906265', - '9', - '624674733432656449761568667443804634246952025778040170044028517447265625', -); -test( - macro, - '-94906265', - '9', - '-624674733432656449761568667443804634246952025778040170044028517447265625', -); -test( - macro, - '94906265', - '11', - '5626569719411962723650415167546096949953068311825856718044176845859638898840742041015625', -); -test( - macro, - '-94906265', - '11', - '-5626569719411962723650415167546096949953068311825856718044176845859638898840742041015625', -); -test( - macro, - '94906265', - '17', - '4111620266471980471028580099675545097434173613002314680540141671482471036233068045322249236629608058990135835756014486176615142822265625', -); -test( - macro, - '-94906265', - '17', - '-4111620266471980471028580099675545097434173613002314680540141671482471036233068045322249236629608058990135835756014486176615142822265625', -); -test( - macro, - '94906265', - '22', - '31658286807403612933666095532663829606917007814138968876951811776281483501242674522295256018683450991389450689602591230724763634593416216499485344394982531093618869781494140625', -); -test( - macro, - '-94906265', - '22', - '31658286807403612933666095532663829606917007814138968876951811776281483501242674522295256018683450991389450689602591230724763634593416216499485344394982531093618869781494140625', -); -test( - macro, - '94906265', - '24', - '285152493586807715635778250040629704568534899170608577332704172832192470586911307092645490980725710064416470215223489215551076054022142237008690911252732817102771522852071313917636871337890625', -); -test( - macro, - '-94906265', - '24', - '285152493586807715635778250040629704568534899170608577332704172832192470586911307092645490980725710064416470215223489215551076054022142237008690911252732817102771522852071313917636871337890625', -); -test( - macro, - '94906265', - '27', - '243759651578868798217281108206623463735490359085472358472465213305940907210363261308064405033766654095672155830024986524275053959211648897667524575409210697695532573441399310923762601838833141075350344181060791015625', -); -test( - macro, - '-94906265', - '27', - '-243759651578868798217281108206623463735490359085472358472465213305940907210363261308064405033766654095672155830024986524275053959211648897667524575409210697695532573441399310923762601838833141075350344181060791015625', -); -test( - macro, - '94906265', - '29', - '2195591723153842833976375183141740537336638451104209452487233269978099251091719201006853085913307473345723364352547986672429911300801268569150014616303465779606927933392093058172884011727748376587183753730532924272119998931884765625', -); -test( - macro, - '-94906265', - '29', - '-2195591723153842833976375183141740537336638451104209452487233269978099251091719201006853085913307473345723364352547986672429911300801268569150014616303465779606927933392093058172884011727748376587183753730532924272119998931884765625', -); -test( - macro, - '94906265', - '1234', - '9591459179410241572856537719704118795351000902900562305249195472196195265555833412754864166507031793587379195925582803572210371959180740848015702606653712794907807842820287303844298057315437721729780551771436713566743567210455419724786856660298500086372804403816338340320302120440930931829619194880300084268951845577897562834735753784665609019198203233048867661024100257335806608791247129540791927592412584156372409767363191327851323280497596039938628887351085641878361348960836551885434816719856675096140100735098153982014533453294086408481103402371073765234498437942986299185804946033932203517281211025355740639164406513819178508651837986562373156333090579411143890235647767492144926855911961561170349672014614629827840596629153866370535524382716502377298033129875940828099612289849768956366119182226196623644421289199029543705885301848203842046242909504136594099983847607871992398930583777526005880060061677287301121641838813359760623338793918913138129119762743481238358717117820874141719166872107856435512751028932079558518104984922747527693664219154086216948208341876460165162264778277923815846538502672245752434229656583577521062954818225701253649577703058999328419908839977797748333637247291496547242568819156256380939652968563081087936133413669763802314091980457139588435626848957026334101428382680905361934063504702859864753961075493938097121116859339830550708349481985667854659071598612299339127950437953067708898374986402646559951120320721708316727933224792697639478435468027888366917714894730680032991635257046230944591272236530617356025218569172482915774764506872033088367335012521246964352262715392596661114331434581419942425209861303052103159737141838118887593079659533118979010073029109419153504531772178157803880524448253232397504700393645418278010150165092760716226444484244727105637368962191673677518823763517102430372508776552119355215943188635023271972752127662635880598372673204814450697064559754199549908021939030958872733672399702043041508144639801430320943357267841707000400404222832758589098605032942287405982133506381460750004675066342262085479385836480909763864598878090750329455982787911478900279885781537417672577623574196534254896533751763619748632866305445903742663767222380368598056346743790273546285474116657619344057407744566063285106302957424998222958334563469530826042006900334894940507739429822757677948670771646446401475234418995859933358243130008180759536136782698587200342015804405083654362794667043715432498830242795494530307701824122299526072682392416883591382466507093702351999216857924284228844163937090047387165802061654658731296376218866164135568360515357769852411309461140876077518669664598359667926801346716090206666283623307095613238020208838579994957805916629319170228853022067994759954669755848747912031498150020489023940497893018969218903299457329957933615236619153547835202992956280530580346188048475327939781542919126773872016959398231243998998083738131590171425213432398708470769525054179511894591276471224027298513771970571872065972609539084087063890507232242147976054307202299424358550001984668194552970122408292816135793651096260341402739670890290539634652749733051936121647220510837557946150318744548419221954103573224004509428899118772854490532692636349984796523606799588426404592878065079890048662999499258496147403823670334749053718615662500854192465254630734735470592657444348319716921656900540143255754066981370219643196580126846207577613002079274870394367728741824995134268682147619610980271981665849912854000586266885293690909808590352073959622797877167704956570701109840686451917212334062294475098780452199147749227206592489248155417621634742859122288908494376684326737988496746942171234696512068034353612026733019551888985186714851252843134718646972681183302261929938130968961934184204726044095752598480264969769942628031493505879722845317398404404766136527772383991566308125162547193990579656303403990650778044081542434937085597660623254423002156634083383451136994840415138061841621305110130354721521708626026722411562666098237182221903896143296122843453808861853136066713710878415727201422848026825971083548440323207872629926360833682353471434194454802487028406023157541739114399209811757523364508775327465775193793901522174053677751397308082689295814009742424096663245256371127275554813138918104588578788434671001200499772731239526998926007344889536787546023840884563161206866436260069860416345332711835403868298476116559997395850081711369707151087016769352210205207119306587204232943367376612943973885522556573557976798795448483847878609300730594170921845018856616294672752170650749875613401771999207041914676357273072487369912122604321957851850328366064475250473555501861497817846228892630981428024352453509525341771499168825703052936994035249193004718133969293658358477955548441418729299358481051187146133695328375103255617003032549133648324739613350912817202951672035960629467437857895034783268578652695648468049772851048371268571371710174944747089771007951326599571977185536818992501092538130016192595691688560212821744518752775149044137729808714578718821728891394252836114476272385593027217713947689935751224213096850232388887355044336182239209673510124360918794427492709842501901193642964413018899346419597569212619882459708253025895167986898921776318809624757908047351541616537635979411987192357052180741057545474523286703219489442558181392097429272725321723344296968214353129336168551540947872360172324488054726452312277329954745258701008482980205872562874886601633986054729698061958995727041136491083854134975456698587824863774357915870320563386104439619169757774004947293513137570115484537992524054976775958147916672384240363706932507971190885901149565024226836664882553925400415432577255921802822503960734813348624446723667186940497582623354541377084135798028997689173921671637556307023496802420683015459505952557023291016881953450025241190194039097347605093809834451182579729476067653116147891893076896501563815659745545701931892765370873530751133774088803218658236918753605920897832799802629346000755537711655733935247075071309299891485974004737759699085619503402054651496887954393777157718744353085477058515846914858988677376890749563402243352948882704897037289535812374920703566055234002365908807572825594074935358170453507404950430786601077339828001741772715701388696819944246064281597875135795560927360428844682508435674499423211270261087659836015113712490214244874535278179921239117786846524745214093518055485811573243729006472733809020482957747407185981860374708684286717665404920163892211997886941891508113407401561122378383848947830545283520019375170240362580261476918548352375204827546060332812320537368384369528982640547689242779683051606032122941971305898624339279930653319150270488626943146630086882906036938913305489203172190549402764186077691788746463406547058650845093618234570304408010293714213219535645841856212002220491279122623456707919822267373205778074418458267976061672627895374645491069976169809979589349440103658324875263502040561446885715685084316663246874940845565163621245764201813071916375863674116631380809138742411055687043053580097915072331808364438230302858541704366985190788328281686095477247372106110289131615169926634773044198632401845844609052201843461377057755829111540009963815904567488874475681740338761441160651590356825801263089126426348110434911655130477948801617551850940401735494663309897855071592787594192797472071274201046444611408640440198255469724942753747645197415207441629405487586039283351014842032997658344919969847875361248802719615209204137908572720005625473028253292534507900617109339302886404737678812367649587493463409620386788766525441243443799986362150864341695101086395523314350910622578929210926494667836577247786854052224561095458041243543570729768588208531982249642560145100850197699673538324491374450242541091046027877347664044916635890341954130056571906109165828535910311660771647040322593424704180434383930722874810909784652987805377576186746140110566133453382033674431223623092747739626762801126711107898439074620801128156500389898936996902615531151609058915444466355837620116136849729671236565382836790985391828355289305589043017696181139493265426855262772003107393380496127707409944678929356424852897833059161296871451390447310222755068231356889186366469835372570926617460311594138251684705497261398939078673207680734548345027894574941971300910638001809666450203958374908000409224916792685389473093574017125721717855356592625547252288452987636361999067948204782699004847095167966877114318996122727724865218771091724949902821421297230591814912641664070615519836632113388811666884300494853790570587470323050363662041264565613231275086236122271260746561199518073931788593225451290704917920481617412178007269106795348325460845539920221204370405830516943074642362921654055465455434800928688359132339475448945798039732615360945805966700833166246956944923319302325595161448667877444353826406797662051236873687719391027503115161380602709771074129428752412878936468150571495391787113477904397126993393779245665340705023574594518096866873547398021846631398029079316126818030712951745225590953502758227266035049083842517044023925565469150691931514472336278473983933149135274596021969827799475964078993259558154187436736832028197629659375815060480641327952346293832946391116546119290464690718192565154980905423079687235355361273794723342189390564486895833368653165830116560978445940636491307093493704382996066787778813694371282496364727933852217652979786611217060627813202623645589310972893162822106395194215667804608020963575035872246400412133950584855358933001394534546590988260881555615516326633872233229193801821674081770373019020873454877625370262143702522777839078500945310035409751056192714470577586167708182037483154162989501269631312341365910403419220972928202706029721636727127333412883747829822332644925037811467375511290618736599996846385043905631496985453310344382771290838718414306640625', -); -test( - macro, - '-94906265', - '1234', - '9591459179410241572856537719704118795351000902900562305249195472196195265555833412754864166507031793587379195925582803572210371959180740848015702606653712794907807842820287303844298057315437721729780551771436713566743567210455419724786856660298500086372804403816338340320302120440930931829619194880300084268951845577897562834735753784665609019198203233048867661024100257335806608791247129540791927592412584156372409767363191327851323280497596039938628887351085641878361348960836551885434816719856675096140100735098153982014533453294086408481103402371073765234498437942986299185804946033932203517281211025355740639164406513819178508651837986562373156333090579411143890235647767492144926855911961561170349672014614629827840596629153866370535524382716502377298033129875940828099612289849768956366119182226196623644421289199029543705885301848203842046242909504136594099983847607871992398930583777526005880060061677287301121641838813359760623338793918913138129119762743481238358717117820874141719166872107856435512751028932079558518104984922747527693664219154086216948208341876460165162264778277923815846538502672245752434229656583577521062954818225701253649577703058999328419908839977797748333637247291496547242568819156256380939652968563081087936133413669763802314091980457139588435626848957026334101428382680905361934063504702859864753961075493938097121116859339830550708349481985667854659071598612299339127950437953067708898374986402646559951120320721708316727933224792697639478435468027888366917714894730680032991635257046230944591272236530617356025218569172482915774764506872033088367335012521246964352262715392596661114331434581419942425209861303052103159737141838118887593079659533118979010073029109419153504531772178157803880524448253232397504700393645418278010150165092760716226444484244727105637368962191673677518823763517102430372508776552119355215943188635023271972752127662635880598372673204814450697064559754199549908021939030958872733672399702043041508144639801430320943357267841707000400404222832758589098605032942287405982133506381460750004675066342262085479385836480909763864598878090750329455982787911478900279885781537417672577623574196534254896533751763619748632866305445903742663767222380368598056346743790273546285474116657619344057407744566063285106302957424998222958334563469530826042006900334894940507739429822757677948670771646446401475234418995859933358243130008180759536136782698587200342015804405083654362794667043715432498830242795494530307701824122299526072682392416883591382466507093702351999216857924284228844163937090047387165802061654658731296376218866164135568360515357769852411309461140876077518669664598359667926801346716090206666283623307095613238020208838579994957805916629319170228853022067994759954669755848747912031498150020489023940497893018969218903299457329957933615236619153547835202992956280530580346188048475327939781542919126773872016959398231243998998083738131590171425213432398708470769525054179511894591276471224027298513771970571872065972609539084087063890507232242147976054307202299424358550001984668194552970122408292816135793651096260341402739670890290539634652749733051936121647220510837557946150318744548419221954103573224004509428899118772854490532692636349984796523606799588426404592878065079890048662999499258496147403823670334749053718615662500854192465254630734735470592657444348319716921656900540143255754066981370219643196580126846207577613002079274870394367728741824995134268682147619610980271981665849912854000586266885293690909808590352073959622797877167704956570701109840686451917212334062294475098780452199147749227206592489248155417621634742859122288908494376684326737988496746942171234696512068034353612026733019551888985186714851252843134718646972681183302261929938130968961934184204726044095752598480264969769942628031493505879722845317398404404766136527772383991566308125162547193990579656303403990650778044081542434937085597660623254423002156634083383451136994840415138061841621305110130354721521708626026722411562666098237182221903896143296122843453808861853136066713710878415727201422848026825971083548440323207872629926360833682353471434194454802487028406023157541739114399209811757523364508775327465775193793901522174053677751397308082689295814009742424096663245256371127275554813138918104588578788434671001200499772731239526998926007344889536787546023840884563161206866436260069860416345332711835403868298476116559997395850081711369707151087016769352210205207119306587204232943367376612943973885522556573557976798795448483847878609300730594170921845018856616294672752170650749875613401771999207041914676357273072487369912122604321957851850328366064475250473555501861497817846228892630981428024352453509525341771499168825703052936994035249193004718133969293658358477955548441418729299358481051187146133695328375103255617003032549133648324739613350912817202951672035960629467437857895034783268578652695648468049772851048371268571371710174944747089771007951326599571977185536818992501092538130016192595691688560212821744518752775149044137729808714578718821728891394252836114476272385593027217713947689935751224213096850232388887355044336182239209673510124360918794427492709842501901193642964413018899346419597569212619882459708253025895167986898921776318809624757908047351541616537635979411987192357052180741057545474523286703219489442558181392097429272725321723344296968214353129336168551540947872360172324488054726452312277329954745258701008482980205872562874886601633986054729698061958995727041136491083854134975456698587824863774357915870320563386104439619169757774004947293513137570115484537992524054976775958147916672384240363706932507971190885901149565024226836664882553925400415432577255921802822503960734813348624446723667186940497582623354541377084135798028997689173921671637556307023496802420683015459505952557023291016881953450025241190194039097347605093809834451182579729476067653116147891893076896501563815659745545701931892765370873530751133774088803218658236918753605920897832799802629346000755537711655733935247075071309299891485974004737759699085619503402054651496887954393777157718744353085477058515846914858988677376890749563402243352948882704897037289535812374920703566055234002365908807572825594074935358170453507404950430786601077339828001741772715701388696819944246064281597875135795560927360428844682508435674499423211270261087659836015113712490214244874535278179921239117786846524745214093518055485811573243729006472733809020482957747407185981860374708684286717665404920163892211997886941891508113407401561122378383848947830545283520019375170240362580261476918548352375204827546060332812320537368384369528982640547689242779683051606032122941971305898624339279930653319150270488626943146630086882906036938913305489203172190549402764186077691788746463406547058650845093618234570304408010293714213219535645841856212002220491279122623456707919822267373205778074418458267976061672627895374645491069976169809979589349440103658324875263502040561446885715685084316663246874940845565163621245764201813071916375863674116631380809138742411055687043053580097915072331808364438230302858541704366985190788328281686095477247372106110289131615169926634773044198632401845844609052201843461377057755829111540009963815904567488874475681740338761441160651590356825801263089126426348110434911655130477948801617551850940401735494663309897855071592787594192797472071274201046444611408640440198255469724942753747645197415207441629405487586039283351014842032997658344919969847875361248802719615209204137908572720005625473028253292534507900617109339302886404737678812367649587493463409620386788766525441243443799986362150864341695101086395523314350910622578929210926494667836577247786854052224561095458041243543570729768588208531982249642560145100850197699673538324491374450242541091046027877347664044916635890341954130056571906109165828535910311660771647040322593424704180434383930722874810909784652987805377576186746140110566133453382033674431223623092747739626762801126711107898439074620801128156500389898936996902615531151609058915444466355837620116136849729671236565382836790985391828355289305589043017696181139493265426855262772003107393380496127707409944678929356424852897833059161296871451390447310222755068231356889186366469835372570926617460311594138251684705497261398939078673207680734548345027894574941971300910638001809666450203958374908000409224916792685389473093574017125721717855356592625547252288452987636361999067948204782699004847095167966877114318996122727724865218771091724949902821421297230591814912641664070615519836632113388811666884300494853790570587470323050363662041264565613231275086236122271260746561199518073931788593225451290704917920481617412178007269106795348325460845539920221204370405830516943074642362921654055465455434800928688359132339475448945798039732615360945805966700833166246956944923319302325595161448667877444353826406797662051236873687719391027503115161380602709771074129428752412878936468150571495391787113477904397126993393779245665340705023574594518096866873547398021846631398029079316126818030712951745225590953502758227266035049083842517044023925565469150691931514472336278473983933149135274596021969827799475964078993259558154187436736832028197629659375815060480641327952346293832946391116546119290464690718192565154980905423079687235355361273794723342189390564486895833368653165830116560978445940636491307093493704382996066787778813694371282496364727933852217652979786611217060627813202623645589310972893162822106395194215667804608020963575035872246400412133950584855358933001394534546590988260881555615516326633872233229193801821674081770373019020873454877625370262143702522777839078500945310035409751056192714470577586167708182037483154162989501269631312341365910403419220972928202706029721636727127333412883747829822332644925037811467375511290618736599996846385043905631496985453310344382771290838718414306640625', -); -test( - macro, - '94906265', - '5678', - '12032097777224921443610910803648284170512319198440026582654592944907996997711020183354851559738136209876116410482775406152550319519617501575389742141362538671375575270130368782344375460094542930957208982333657039900983512378934606414708547255120509688221248878365002162079958544994081468523927315675060726868126226367119441190130650764598697841259026377226201673036205220245238076301842775410518683141308488299366012792925609747073886802877596666532246689317196865573110094049146280756613633385237048709371024252858686340623252312452593430321228085552943679754605680459379364986804128577790131289118408139954294866373981926459619424848669839958145224015329056251464187884540803724925854941893314508739139448540059027532063346594260009340289063635135268446417517177773306225826478834782126901952841733199463653563757819068049198556549112038207670677005457584687670138285992773936407404706326519609992105860062869525897101616064153489988499260854115519937665672793315389915719723184695407552227493961904033933034506875702096849362495327673029771455889030501830242732676146364350412302869011748293967864940422889128153590781271839942018607109535085227963257602139998078826097049418704998656236212402366601095688523413673512998518901468183798514551196413118699461621524416262734189234150826938615238369409717915433788697444341087319545108423271713647606132458422133503476646278312763913773672381574955638642484777319177742615693192492030931928334799325795983171516582124249978689831869160939605527534908432774284025724078112334305143452973560047389979442428241832752514170684582991619064835042076127845136974614077376818874608487426791468373615242293672741372298898215088365221162041567250511944704729950839359617629579145185451647138688599424451528822613292149181525578785717464355469269950910358964367355548167095991226459148148416836033320461350750016925333661337306860380813570244138594176200254338594713997700943753269483275676699592254818599648860765855658967021173586910470760937291362350281087625944947663940083612371308499706464739236243824369828191050651890831355140821021009799707142643546563126154302728058269983835130462112445179485724829519948644797857100978445782729948146775639685486727347085571030457542493031359599157910012477405633462126888771916787753215333242607039830155744016882502462503818969602202111471162936075917294595421685134910453228619713406894527040532782467138493248067630974131210865224589283318665338359787682806475430520542164582197378961886474218909120025123091615456874986351962126541772414045818060094363742441442667036502961807091952360039303360580900852680604055434020409419268918051690557813552959236488040160958755768871367230392867382735702108578451240872919059355437258914588914059658578625910689412928981898994374868014765744048731178533977420205065542882559318334473630109661521143300821787590642741661630560532599207482636782848372575108230527673435955097474563225203600719908173095140979638933646119901238452049016502626977563080111918315881318986264803301054759949431314581482431408037019249299434256675011740150791380650719740873599060034519923061234283942527829654746500679243122868491752528092330799766780299772695603288900967560796775174207884494845966890228277702276659444815563795433225980503597587408498869891219703208161074827864088098815419234882655313426926283791847398673264577617151571464296912550417563804886979853576821080050211194779490844153380677685847777313137638651644748358202947322079765399238487437874318841114773978903668929164955398911903679705111008999142589544437065672589266355348348971511169575378316208327903577552525930641088538955350354489078111990562226354820551745938135022897672457837517586016736813649699772486263689086502957138019177196070312090344215367177632397930739405411088757771866673597796220471619637645139435250941374184393351858539017096692099099345257001920271362387534252371917508119267325168864330673891152067448719178429752412191066355929358566249659077077560550302293786857736765866388524626228805050725063109877803065961191644600499168820792325163292525536974162404755526606943846795314338495539699560103980570000575730832399241743616051296198894674663823826249501962992317559847798100096759179383956869860153118427566631515292600888345422893802197242997389457528273662177569851158066854725418877583679801690209473560655905719642363040982739123254770408905429249758124187443434793269173022194566001870880813212255626734666407333284872705324976206677741658696075649608364892807470963909485110281558432545948579534204538696827102504407100425376019173981304010256984425288381928914573699655169020850451341503052441205769215186509836760430481696523650279090720163816251521349287308560407457609483984181328774565719714613388489095110023571061353122279353104129328013968956403235071785261847838169630745374996406189906650415573552174116649660276541371408913476854939747876731425608814138059458169543823165972801614100937621904382981944188903180205906327482865751979701901540575440519486923023420935041930682172192953852334672415568738221940582193314983240970450000477463045431237229063460109818726294597730994303217381825651493935869034862652936559019431947352777726119926158367810617503147922958376143964979603245915631333786351234314954623412494887023938633377421208202061177648550247361016141144451615061150414512561947705053352442969412639758719469809823355676287459924284669684459858991524522914802929760964195910108664304507593383032621305399692953057899447189106733091012594841503936991785388985322660311685783354745007380474195833316048135155967714601451196311606046191001166178941116722830537202351353675803239601270737264305300314769429948779160815303098446558150519469320909471850141905795161388126098051093418801571231958217059570635407936987518675272606139316846781769414872368547904423404977322742616034539497477291204678516696339549373290014129953927115273383862176648175885100832898131993707682449845814289537783195056908822732162500604957529260337740262458814285530991622691309191620743536827546586516016261289544348330822509040619411107336690611176859744962777081961711988981244490119102057017123472693131597991997040909096393811129374410032160780720267920557429521283544362429347063129854641992658572996108093014481102752542992814642875292835964120599399273647779564854999067324549593959628020136971251523507807754590744694873740047390084491259174712701241947149566007259569113369875274948363558659130833317516389511341744440804095510223434955552652210614743910169826529392899468656662706962138458679700014949089569408033941330187462290588839847072683578505493439388126630655399425769894783841874574481277512426591408213810373551314332889400820073202400253692361444659207630759168415095760789533492551330583140574981012731074049549919118053417150217808638350432013305694321389747006470410615077305764765120127628910927114025496289209479659319746699938956841225054827585736797719039052465086433182830701745898467197621237268086386733129150280583409523728139312677689819712362202660229834226632997964115903142152545104059172086002463963414350578947905947216633376664142189791562053019113774134585010114509991806040543148515641482014416718677876276580431730562587541020555292496453826361453188845475398099905277525052773545411713921648813979140016300112385588170999474985918656553076765214200080620922916851475745553785133089372514034029601819219527045772849932738904614873836099307092123571006738447715320002736785859704861742282537734067792187177608073549859135742645615364728840961736910729008697313304738536298720611573424123582407824500642154138363464791319257510414579292323013964798548950290960997144513319241370751263381191179501838180558724038708020579905145157293231789686223459443044018289699299028761818401590134930047434655260646434988879638156693278024323812521554624956388982330136290167049424094118582772096018451809597401164846924711716262902829627380939680535156293471439360777268668365604921618839689307971611636791474486517596411076810461187507596434260046979222951771970881882637300844957670414379573068900594030059669462435172746064402491699639256585470646371028345111692685583568972301562562922256758180181085480072911408202795425250027969499463641174613001079713276428421215191667447359883645715478755796737199406110184987838747951054762875131236948669154666701738693610353768722184367702584486223362096024384484603104446694719810676365358898796150078397378880308527506601302713337537470154717940902510142689198467640659012705019749229659196945434251394512811731664749976526521575163913656404283679160697284832403491752877439284481271499113105959231314317691378767826586965558827309006336474296703042302766970494721137069514776117071812137188441976088074396467632977148030639633204112209971813503021630520258087179296520213138286076436343573116739144719310772751735156402034501606390456169140121695688607125183103173251813914671347610021351582630598950972263101156473693547645926791369585126525848123770842541512577658666859445930626122772214914414428878443618845511938720224570647898061530301191130932770667765716795587750061205748309356694807519519675049350933068580375053894078242210199468520630330003161545121375796842051755736417199147757963284334866394276249640731433231049313954526161951624809572619652276996303120934045809848958441871638077879356764855185283339151315501229746330405881302263457753882789573262935098772141915955008754732738429440981828735729272802882701434622480077709131642461504208927055033641377102447767720176633847373823944955329314383832782143590012811927685177026789234911929577093962457115800486427160323294733691288587100842884523422947373759687195747031917611825381748929965338560830322621555697476051991779833983757024224308964473525520615691348057039080995096707558993173247103410555911126189269896588730810492029064501420933855518163570985872578414596537490581577386809453787410688705142748561393081836124251051324584698861388478139283569598076892767321443716553246412277259380509438802329441648705346383613734547877712888220362688053129344779935227318331396329401655637306388721745349393876059195313192731747216875912473534083064724394534423226971274516443125664390773514132844684527673669092932331255685956744208760893026251638308006285281531125557486527757107669977234989257848144696133615593927212707645061711788280447683309281341206400131653863420785992756287508115967050826182726890127091142835164557166691300678394990747493429085386293564966123136506231068567056989317384966475475729360339009395818317246772969137113875763412531168727939516546447462848160915288609593976373135718583011204195966912413852164206268427095555948610761307815791560355585910426147327321102341134387395444132445427019438961472388259276810758042673037214059651545259592406090068506838010231567454628094637254355973489738412673187077409391969169545123360596500128359039361514821593508030148522205228449973734972174002553108195263247639174438853119252163722614381071194775578403064409455019374052283926424489955638366392986417357495741112108742236903909428659619606212619900649574073585165166583918297998340673134762427650800452972036533098907970092878703482852833490281729498858731156264911226877099786698157523214591321994816532369903053664184550576973511700913443461257437675437472098084407017674888009625137498476466436818879720524380130001916537522732804698998210196055682123318139008022653778279715652658727340997456249218032227963658719808122825441145385176983894549215846317551213773007016356738334267963377888011544300061222386574258747191915588698617637837212717814756142051324008302080298650994166585880612515919258375738246207644772437177730335392539644865639849308897774064728887770437363216880581815066468852825832858170229658070845319130874032026316629150366399827042959910139581792401984719737440786491444999030986092724355755641888514009652129027999591099530921894279904701093752999885648973445224343373762636465568559928662660225367743242647517117639887521310379396989258168883666755250191993348321142152864927369234668649063028652063843003316973499048911633219208658516326528768740257621395512872408369502229664467552427061041482906643131699241509502631730714053932028098939427452444970068248194791910834306048571684029297039763506306003677920029786132935369270257069918171451215129218456327859444234926254208150987962386182798994154872735035689186439260489113584084457851762452138367055101379588122088844841306204874692945577566193189114109700874804492781437652540985226374341144719703543609354328682925954034266359991157018716516446223344660092640717378693207071014181491854379467954573981289282127187230877577110472130570576015105977305257910229508244095738723967730842098391729083715169089672956523592451123266861612656114937473953741130882127624277059388150081629717639957137442000516378123556553332349275408205751508548209994904127879234614825403357223962515911129518982040378620086754855361296612014949915205044289352069213501405997863521354165348782511867122622716426639791821261702368775506733831743186020155130943146663966007407244597917005719991265853620211871215693990090865326620251912533146988791177682866417571901522812420520954626741756852429297080414669100168753560040054760117697607946028484195290870973497362267381612404260749108299672450420697873731172732775674054385367218094949835013674973757423265370251319346466334678075474375906897432558238767579231146265140826352088422254545690686302743333477665277149035167938674924154842983621768748297426546172809743534122395481353193555875026625899972752500022321576082052828487883396792123138094495203111492864041134795761256726095663499686254762052539889279642048007404275482585612511343844033096850528226343612783861307535354140366802884442274775822100977205037665851810599890007341178775130240696632601594694061697231625625860004620538862779963203630814410243245714819549757828073441407122131050844039240224163642095196215306864657309686247074858678000635402415836405930550459058799511632845758556493533762990549187485016639012256731683580040073341731704082434264243561194791703596206015014846543656970640029940075455836423615054869940691591288967540111562931377745992026685841553681405592390900507543705586848434089001303884903488059141717942395691356277350339460187131843419289217935265295704356916529054605633813938893737767409366779159372882254232836716324580262988115146013874569597106960026911351914668502679283163961953086528727793944040518851106607715147835491925402383222147418855338357535739845538867786357060338435261036202368258020761466669889670691822601560184917436779215254347489960930087319530836518444337988344598187203191595434829132950413104197804486083026745302512606864460474736420264409880729091060010368627194325379608471121667642965001108323387523924855835054547593985702842329940726838791815501738849577938132081507924442944174718597397264098866829822238109143654804816673202408821440775080110551433710513005759571403757096182158076893681914376156120366821040079723970732533775297717113208811739667056486197044324270922989003211680035846379754027311741122863788335461268176688251174205660568758427931660106752538935307255339039355388757057375250425837093302168454705863145996845095042151313295262463259661279787231685169235050323016586688299833499115629856113737828434665438782484735547300584910063985708776012855041724554864958256185127598519785482694466456563490174364083687348114832431925384869094951858531131186801480404938023454443571034693096579794784282688250620550447004592047288521549204059159028509660096017875307950532319742036173203952041761503785819360687983493313089577551873561446412395575710594370027055187478904534143877344909963663735297933632031693194441131986356078620539658905801102236737444661108267332204176723242428802368200731035237320543765666828751910067807455585241166705139054718355894926417783921107593070742530185305927934025258466866218767376534792597033669822057078961298957496217109258353525748391156704355202862658731864850654926248935721796777991022299873209352867958121188810265931762818554937603100731645526362256769968645627563740131303913187747664074382451124596816950157537126085105444310397381169417181279755364952019062060800318321532221104576465370046063753472086774044100444414676557036622159972786835290325849755928597463426695781953163866965969052547199558811862459755929880206105062693162596966564969090523328485578382332426358809045831759393541573654498007053609291367872036111445231279494806931031841205524707641695256162632063010224942774570614275679640385413454072868377460757627086865145342680411059337436108163325287906190993195903620201661214403352143421814822960031390185721117950110818389291340253326486009897862116192130278391424657241044004963932456332370837203044676250871218583290978562214724386902489542748628396358186325956900204476723680860137151218998668021260767109942583224787827906233417831491624545860788315526165511635197037561922517899904690761031753872124042336536173826882605457634858121101471892751287742889625763093890478605491801544520792057578574375773201143929421480324074646141024278246772158921139478563054405229834847395540267665801516476465649906633858677249697918200443907759577085140538201853478765762117960994914145101764724959407470640463811314680073362866017160216055901670762363844476940433763519832222385027792750981080965530232813715566803117769888159323419674153708883977329384943689553768541789213946129813719122880362388613061590039120847635432704222352763497996891937276538781966653887199495265671013361386797466770701748928272976698049303363099194915667274909798041151694131302731875286034428026186929184304362229619692102502128326871687296959400302085212456821262169947535776150082836000223031048009020371350036539197512764290221947644788009144903781547616778821484803103102745494206849074992779830389209747508799417151536020207175883478394172905960788120783232579015657004053498129914455441618389610549539868266323811924818208880604509127630703993255747870363319837810567597787888248562918900718803552796004261069194657586185596777323973185892714770276436504734272537002948160990428552665125608477771575963058090305035115286941440877623389294911460277602637191173693793231079024899815378902648788493885795214168271309254640593363869703425269994239287771226535309826739493886296423210090644214129966601915093662511467744154185692679773644695709701672608468044373005103438648018171096398607426443413194281519283533259981445906676653664312034448007510997631193422830884833006737772887744686368777653538919592111949951373489944710830951650076413715452663964540719349734000663229824949598114271366375624217568372270930581796391817021771734034804435202600593398262992169912934443430494160632096045871344133239156139910775140126053555363620216919941247411877562901224722321989970134286623258958498605964077449818088184783496838986907729353462388738014823594316384752835667377359432034427008829688816033072344951707746090028382556104976370057205866084666487901937011251702362871920843956238611037186048336332441746362113871081603050950760137657339038936536596933851722041992305843336304901453452571715630307405640050171237176240125222557358332930710738041186084749584740450846611590610786726669986270473854160586469256252168384869883596851589288004569216909578136486049118663430702671507574735910444281915534186018197115110593685299825714958042538520471370923783862810373944427764167480823665142849781516572576659578160735209456505359366276175015044857079506949581097412535399513752605101582122333384186945231604776461746644687207899376798357792653596666581824693709787573041587757626825069517113369429081460885782112243077774167939979145984687560083045973141222583991194116736510260934423567193666909628226271067954142670416399861275578343838128155755377702692215310376282921807545085658277051619371602033888713006177339575658405744622442355225853961935039933219714558173292667708157166916833886949301548495619142336871670282820976529735014754467417983365683174117809170080328865238203402509223643245295215135732316886815093541440338066497831425192534469707791058531207292816542931530093442001376701232809955022738734490848042941077563991314157582176472360317911138496886256725677367798535879492979280051355429572780533908274951671490815885229571886451377910940010012673321183872398403321907312091527491690998932778856646700965310668633894463320063118790564548548680468929222591042338228420943806756554406415931090291538143528789629740994863591079711320495984207677768776056308656173482219428268311986921414524482951641166995052008686213317172019535225407298322183791610925122947801778616107589077345869377990653281139028741071735597803862826823503904687705298499157856081719712796392689492483355489380957823523151647371561894369978535447318492691386953116508279327857453984504066238005909847859372464174431153967057270158951933229971026010966691002647873844722520078261307977064543610448466409873414879293871473093770897730342188974916791516079659719631290440856802730239894028254762897599982086201797037774350455318445666421091272654386376102853322186923651805632319156209526417184248540024807358600433160247811092932618503532768368430167126161193398063991915395134237015963224689432846551459273641605647876407353197376326052974132020864262566344092487103313843164740701039613572905063871725731123431656363638983017301386812075627738970033704925617216698715754404765227506689591570815979652750336513064156973513088297698696477005797931273090405805324066030602361512119840369813400472419573729403873434074573160162870936318068249575178675647763166913751293933551646401329625534493843177325624465230372869642679078724392280172358972274796335813356986697385312329187363931167837979111403879151351225430729247112426650129104919284568825235232455725351552224363906641354967564821570365975247995194169878249598512813403591842113734352236034910030599591245451967209058347539059536190947433656585914973072966125316763518711707788780035041883398613275851057398845335005672095171230325334135754312046899114278318582949758025840627034073495122556098906615537245941205241050630832317495323472933706045476448135324622130249061967088040634256046633681463998139104615271598326353633335243659421316638748257095222430616324419633409773550120132726761874278343852462953247386966597193056825342009690607297567265709899931944826256174731047305094081727770841080440016328196894856028563604702780682709363667848710891858610272205043503944199299286748350079640312927864906304355154798671043210363438224540663084637003896566824195029371811104076856777325671062014465716574261539700730333018675634121018453203461781631294981764229198232448947654253783388204297001920517253136683270888989223979423417588630101697507592396076446071605672776440131159545850932553540460963555258875042206253533925856199633623872569538946264824099914287390183680108014685374620969458668067114850551017647802720372476318759518097294889667098388787511578895623400536394696909686982089754739465395458755824025627145860540874654096413723593095786861445483207390022439985873830588574664429664328016256793764664176593210650680088966473569586028063185778696846067901539484777171526008932126642124726149000234264622535507932061596730778639639322994194566230181315095849815600439054976860942354245780811250583700351160679186551987899007553450837968473873566770319473147476749953987063615776202643846558316122703715582310812032981020745887175302830579849877162396208954934582206235358053066687144876586531305671914153856979556448429896161954702428046020131267519937687942784998876608574424998618033186526320893410380410615897192637383212667814571224040666584728535219469735065470507466917541842491727590582415179332124764074275007615003561577219703985592626963898540408123901920954693863945334300894449076898006775718907497203849104045111950488579240549422430862215686448461635287540273933678378844195074450255145986318612166430395304017670650737974685138684856887920372725287537626880802277074988514877737086561392592097851272353742818024979368746610359299993821608029744496422263548547379227059308330732006560207940874965636535953389748254985558222428424330864460444917636632197361629108476540664208138353154832367022269303011778867713003519669926347227092605460218997631456886988546452742315709205780440409392361149984816382171251958377059474144369328217951856030362908523108523320063836177218545129144151675726728971709295080995491115727738994384523099426017049570788092605348295244510790430809310252002021162900702972004743370313805442485273713185126694838015211112954180162169003605131100343992572258878781008043930175009769360708537294998309182845117912092938413455780854377238800073118887421690605050678371370274063825715320860910620948562818451293617405229491236178678754278932510338478945063584831864172120232848867941761893175916936978589066485863729545344061035238414543782144041420795359232419130120814019590644487393845413057769719569362935783498618412118335138847775489214231071866809710199171908881608454495198717226829803613782208248938966092151102736556383497239013516522084118430594971074187519260946766667423607181318562263393260060663288717977893874080349690289502370587468658530985736835159292642558195601284611160860487456916132188445668274130918453531643472494048279511660213922482152284451162576937159479526872950903047337162660821805029600708501290793495192214286757581386114297917781127145691164585515718567911708522043336429297534300930577150477197470794166974719236537212770910044441149771285775283181049923538686195299106209763353070616873255072368061193988813137514561690385137083968163734396360347928328336563595006220960934830733065521338335841965986235454589498682179372157178621143188814181528148836823240009313917239615618819685916460559824760451892578522401207920356914008125649666362232615846019270768411703026907820785686893329687936007326486259085396965025670221843906365927274024874373060432645146595290306316201392153119798490572148328091329727540219633346941261473165756079426541378711351627269272757052944951094355168530350261245111562524094741072397641389854917843735109228705666266863564318304340300463039112532153772402056001825404569674075795960482695655750098767071905821033260887679978762025881061325337213163524622779581816972175555663637210876981896507755878807206231301747997616278339215979267473884231317543544712452852114555647618822488813490625396727766305946129050714786088423305048954173700588940427019522843104010086905515156909811517470970474323555351456229248573825599238197370105299573364893745750391351067788061060527046812509973058875643642096985994846004078611902478115985749938866763374390207356150215198771166488048581440471218124332859752158358015616660187047654002371295814353685889164385419937001586245963586686123227189249339843703303467679680488282425879611225214199203660669304537817806007418484543257294498646404096533225791315505537497715207372656046521498454410484618808462877318221533855177115026118801994635309492636704866960405453702180044263190730170186585393782170839546858732775601817761449580514710578003629573446698223526303276734226490467503004836350690787693180419256606367206975754427565647193757103622172723445912571921412299915576801160624014585320520435926902108223783097157413714400856842549485204781754909051139596113033072378955171738006815746107126582544226522618574999884662865437801703547910979352686377121384449362061338382596983291230994834971550479538621580428614474707245992895951108596353356806792208588625391355419712148342585326639448556448414437163323753111363340625419447936908942309059384977968558654468049438582343818038934475031358918368904553362235318960285027300982643072000467590624020979094167872273398935195854660177797067882015023199367866518380157778613872943331744050423399154264127572590316747837829937185838805929919930426357165171535205844319577554107598132285773629025750828527147869294916738495703358765482635112741426231530287972819515170191843245039795145568805407271280931405842189126545621691903281208244330021380936941534090926737001841378878232358824105952882091391122376983197385863111377095821200758977598655636124137542127167825095347247242493240787156813316762909697688864136617808861689815132468231141188094757116163402600963896457848764885057333264284354504937279338775019887183472529765242120841857211466394385600886129299536196104160966949461244421470876475635289658360673044133988472412908346503168644044604661248748712465204802503052422913247662994388842262879693084905772957000634196203224713014001316324485989167462563998596759472917793384738934828062167583801086989253946454905163667273365009826486005589759567623881215672865627059042146648672881327891063995694457750315379828488812880269962995872715826927673202525599988948924553574496455072613992039779209442466653855719582532255207207153068979266405561447716075597208003386115629512060258961979286373743813337931101772517953360698302031325001844985453129783938956301615754527286888929780663765211591009120443813269934515079913668898214910192754399304618341831453870034267125170721505066917586198732535221716916597559836503614379370118425547846931569036557590812044714028782560536961879256523449737057538949699208081652250218260123107062251099566298529927581162698576168546631586946049600127140987141317674460410902993224596022062324828491276267223741714140055313279819368014780323282408383224067009467800172584303162404423355760504326823431706740776861818994506012773534445613456631600402675225760377368762722021968052635826828120651984513278838416227839164392949867613026178865022522692004106553797610247860158988661216559547229327484286711157186964559739720520556436315158359781162799170405180320792416230576841207330921642427914971360147358390054635718803605053812837473635557695381145693736966197784412835427730682455377495472116907945998421668486206685639652442308850167256008495070585127947385980542764963491704371533238862062927529061728993687103715584617381449133650067934551429741997596233806357685350458313224546984096007149813473419575258362349731564468684291660239721484472043256211659727453894937763642732739820546069887466309796309447539968295322423746786761899588378272444571292371367413474447197434276820309108466176334054973272331173340111659361442337130792855312977415847609894557657244236135360575415882254468739766648258409923847596862145560111671406474246039147740994441351609557249626167418534932138685355488646277447161488690787234126802880936621565723899904615884548341472638437772090419017559362342062609301959534466652230774497315103874040974426330140216732414915907495369817982025864413682320190304402284550455106186758899229547597245258424329265319033989076324859178607488037746916527718266949417024120162124868059437809624404252426704159384001199136240834740094617360560669898139739645400311944527017550131601104533280441817207649685008412565052535179862086175827433761623348775986952355976268937519226183084278136545349291670649785347842730455081487877293986813649230888836033911523597766312541091611558308804656825040751880201229000742627616764846092999606733478252567564690692669504889322114105282631889525319858323705525911497612288157996632667685670674150846432327565528609123127086077539690737908771138085892200113245294049889922704737554162844306763132343665963132039823822365456559043777707552305193196770793605848172893387453594424454474013959098664586068848120392276052089591591308873830873345317112789906683626082510250289631190568481346881428473945619394593511266715086704096809000035241384030443602237087033327542922826698398494829325813183260408718893212433059617843940587229933901382943262992336198408409788514398330434599960440396485182583066248982823883042200111255085981898391448344844015751684471609252769042652840411485899734910885714254073490007645062005967803838338350515620582705664016191350475064132715818275524670604480386741711701135361668073237815153729800159901327889495086187129604447582390156419305608703427826439346018905984357281977986898496611416847526529975227719636005017771483921982957544197799709954130121091633016282666472057665994141283170246327843904936295814914169455433298130711317392343344536477614717883848576748172715876667106217813834587606343570080150703180822107697621328830605698506305609033356175547929890746964404950767451267747106159270327510593755358827880906472517244109777980040119286343261893970180775124057054774158177970221802579963540456256569061867723885060688202164035260408533918104432069412762092767961756595762676589021880178838196631141734156532209197898820016385683655803586282227835323540770476387548613240989563105953577728703740467085125879358539676422989918253524305042736487362952197862376130430552678640237349729018968430033265542780883750558736743752261945449029876696946612108224851115124942879425375009248761228804637428658896795153370852897642290653016040206069997053451309942591115365763315347798585143808043185383293137605133990375187081546565293976821820681678976667143825155588879797300722377840466564345393925544396615896674799718417150813477090500003898193451616746130407776930778672242012416461426697352259907686766455115834355953750908750468801886412209297018951915865714966322975970231743912119114106738120788423635459798468818392838721078133776550259766032933645790131678864392198922153478445210797007411829472852520896641724546528677899228076406095090087054355112053831012039363483887827931984497205305580640089884147850679614566821898948479674022244113913369887487652583123461801329225543373875617324208320681859309093341218594477765154347005165214923914454731564386152568222327274320958552990828960284112884233856381741112323189817039205176818285148223632011326114683897977754234839539859773555387479931478369465852786548627650813853724070487089026934104735632316188699054916850121902617757361251685208213541489423125264663780298582285404482769756412105522055863664088568917771323306300523891885066913901475208601262155693104850152972747067125562727745608865730314711297367302397805250438620696620826528991710532990343302838492054402628712678922427512444061374297112648006020563822297430010181285771385041656979587178970340526369080649857004814587864116807509544571472638333034374444934753562266027341209926917981677891921750897515727238195821470408569780330165534206129720507627843830335242167825939925171230104851587860224644439220292020253252521515829520218725721656441148152957244204914499245531265109309283531415930597420172103218491273772895034798650668137487351895169131869380823743909292549280691725771478618398588851733810124489829934377473370053370068252656647212635214606968547927504809038433155753162266329616429449015410862283066225309223030055256064379392216273751092054318524673355685810347451754467300668773538268859656515445954574923648729683873935557286856820970937068655945793715092808131171747403868732588043215625794798713241960194139927877235454587568468762746272019100094498768878435303678674043109734750924359994293734355746752800574597686230559451123952878914382180299790800323290843096781932073569058248305026863533285657386011004060766594502913168774569065159241049643726694858160418911013311490706738036543681700409684130695301318926665944626256463817919659855204483526903636334206401621354856147973558569067520506511253677092000344997303422716188357301982404683865947269583956684546963367459758762687671678204149310431797725100520798570137927948407559741374061481883367972415208467850517662863773339874292705113236025748070303373436449698506471836270575534367072477137900735911028494106738086952233620846769094804738713039865343227698048631407498839757989365214479653306186066720098433994778082034252601056288009952122283076954922176813820889628483465616421754123937579558193754200095019239139515555511223697405926455097278440331386885178334434554052038015454864241788988257555470096002158416471742411410132996885100140752406174456919083750028326577637466209951318990330737079201943113542966688636484421817970036239203330453206764934536684736355707322326827785876446310370573555594566522654459815454790470955048621062330510444683333038786245129101219361371510125280334401845995354716355081414363331143924307309675133524204853828824109943599655989890178320729881597902725812942771540675060969003063075143063594335159290803487756279512698080233303983448523903763359578020680403822826869215712204567152735947916516836123801571638451477512947633273928861312235512576987086278058220742708761872709578297417052880180662367826500231390634119435668470543727684869857682890608140863953707420877680764412659167163724061796739633033065005264111522515204885857558654834258914573545195512032180353594911695051378068719810556006895666360047309899697571949998411847437091347874733077520204574436565617262186793285390157914385444947163193179238783098002974102908514885479387830864484899289781518304707739376905740671105223300022583960963928395194012317124630264096534995267171526593770055565730102494501137676561913334587750246583294305250495353130891578871532092316372373133107902309220102841925745042896381868642367418745319420730865142002648204585089869986704818966935411839771621427485830775501646076259582071540977268704166605867826554568530493151242347823449624187048865683437944276656029782106486814685177512298790716326796679143241180948696299889708040355541198052387600659238816546438629657921933326303838039366429868607257229153586409564863587715116286506248407497620036497639682708720641591753907274496783732165772299744820271810956549362372807148941506408038206953482379076431012118157117732910126914164048218394564547100247423760878689918169039921521753045153136140852307023421248049548015885572583792382485175500534204824970481492908940320310430809050323007986533558215703588782544545718278427626486375885747827314014521764649075125614840753558736191501676141412501389041086207604364613946110943290698832808350946105405659106878177534966935163165977743784854970520032448041881269436554799191892238890741452952579974686319705933896006655839221952956620159751151666300129475309250350785976428156893784305478622359782685533113861735520731866174351824115841845075091997649633694047866430158123243404433057388021248152371142388316099631832447205081549938790835458611253943435564824171299287489119366707640567857774181325253233507979780771975461697394241257405396956542526065849971304547348847901021479486605612704247767646084737041513530671846138948561060030258907065141688239455904675293200356117950112887673328192319125625450112001441334554826262046043961154178777018566846299911001936816697919963389400196333444219082726126561961439286151423991499109774369393437975616583894807974648514443152564762608988320176773626728380768044611965217042661464062080139705149376171806476488738827250154569276638342192678366431133871111025133072862691969096467500425521305379670524615424717077214067299329167718710591789934002289122069747920433953864968281665817890773234078288875249889546074590578021210045020175846649075388442769801561868206680361142266963414252212701874669272948450859264833052568909056061160609027359184255550131690394077096720368166451553160609833896170781715866268750533758548369182807948608780968625107433984390434235219689740367237885674707704507030700597244015754049856015155058928190915694812731538478889554953381956036083413176999479211030070256296238738351346477023693051810382793957412886791553484931648794808844286324406999962815018551120571300130535112365975815392599766465092145349546061127412046819415225926986188716476056849908748119793304841105307635909081982031362197358414422316767268043098239315181137479061734502360873745508395271506258881998152137286301123636845012754834291165393438286951173209240049799587871290266306404165115829161019204881466233120224197635902895287152465704419993236013589982120474846271345840260611228369146254161192044127219280174741005492699430065610779347520954299270720650387651378861176589218001361087617775409717699262796015976536682841105021059664122075404910323076215802321801490368864524554178452977152697573396110449811096336643650973261681886798344414251669250224998533937199407689970648423521941761037033886551068960149333137371722361296472034150664556620292222683537040127141078291436736093570890846188142373958232245787503986561211010450137490946828402032613144801907279288018920751978234534610262408946310152037618441950323372778709960576820747366052518528388812006417666180087401861373515895458278191176440767682077611697073274163810947190349871592916000621071323440142391532644306688082924938683364588261228996162358510568247905595841766424855277606907075534470052532713604689867684196360667936729004058748210752703690582852587524292351670119901397237694282959815729865739583855822949365306356393915948828577313698981442774794707665584106781286664956274007171084307394120846271084144220384654297665542790977252203936545409559594221915876466565983276517927312109637452041938454476903708734290815286507123649654266467749616718795331528641404301235882753816634993816753568289004479992478192683752604759132474627756612961000581745982917363087175573302426078515416609069164426643196313914584560126544290921166479054390986891864459370224685320335100411031886752698293827320896578394742343752392404174187327761664303245103880308371741165000643275630023932633142124856864613839455387524460883835247056445230671943050578332861499695214574918673021229404253734683027773313743176432192583951191913236970762565695716840327124880325930914779807518816007401993774234221794461913879164577142778140583620285187482254501254780617476909707221619667136778860802714594724530597985286751745300483760149830490374318122069442090705009423973432872916069092401278307983254836657225071642951238528724138838574504391218505180992122754344306417613772561319645961095192874830637228486233492444491904268558980004614112652158744705099772253265288419466337449702012118823493884966713120693120582224051534971354793790579910847464242156789336422637453846505595136532644728156836277997378127893681071581923934505832928373516022575817127739736575756865378797460471263725175192803271851926819917519383686188517784400435220379006466153404705216541111363986878921739723739896607992639335605097808466640645060973299641467192720137922397898565627219164711374815726090587366358047829903172491757500331384309027495081387152401636448384580814486186637697087649689231216276249532384975371921757162088038760829349873080877249706384919119527981958190516873110807572517264983816623232205603988358157912992461349984204628724405823867426023186896007333398519510459422904668181847357590156918607616331138009353807527538592211061653529680787460840337585919547522274221559932006125164812648451392909851693330515235916955355721591013597659403166816081731576169618811781971177795842089107519036325768932298882133054753656397633873210525368153651341260914098941072219830872711334487119709246568789747359480982755252152430402157014447380207090760786408265205545137559732000800203136750199256298419497315924197202893994081817702434459238430923245234575791683932861682945847124118958937423672717813748011917449413425060927640713687024598045661303952113384013415037432914883493033636158000130588759332472546201048166403710080511673970680927719260588960348045228317232803681187031272506450618629138861001275954148566415095600081015308217088430975829661490651423859763132193660525117633388134158638217519049714767119063945723171578151019595179218912729338551682001453030819043454878245408263437500120254435442376334044602833812761305154890870916870343146715245652773283431041407392860250480796803485192806596809855333297772986668103799435700742354867077311314589712272131788641879710793233868427693207194387420730083062528118643285570520825547326752348837863723225294085957046976403282869202911899456522208121620826458236485403829445741128331629382084816009173825727982745362705478457038425615653445181021898078023754297882055318390558568805474809499629743584484479518248026939110990875290364212204536332706626128176468053408407649243109388979549094928082647431373786179467142988191638288941225785348943868854632528599402913545489154484053068978162863823000366160237819716753451310493666848144862930450839567184713588568720601921059768004898348890777169855867038685678689630104228620027696190848737373593115559489316471614742241241080915717759369507297908390256697208628722732076075083433157804018595982216321305273881207658074452046050754827966442452381402017094824435270368061319011125926752655181876954087858148018718169579570729272694811666295639408633390466351259744410532863779156045567748268573798664900319980347698852661715714418485150351971611338457054814071731561010311297700803013892035659824806376504489316277200564467982215399291293815609566984236664361860965342421210479582059584960463891055303905596666930735260688627851937917438369125360883055927544388560027145080571797004532153325269863702949511264830010485917986200317248423836494080716911582330878681178100817517430784215819553290074107638543118831542337780918612111718398640817469867853658537784796684100354795672647383581298428564496194855634992668338556800017467144246309114053233502145105635100954667476387259109043659409570451628107003693334435646437801867855817503020706261095751735198245598952555068326031742238547524726553387803327296382780133921837788043654626876383362945442953469045674139219118842149941525260493144551517231835450076117034756695289843264617957174777984619140625', -); -test( - macro, - '-94906265', - '5678', - '12032097777224921443610910803648284170512319198440026582654592944907996997711020183354851559738136209876116410482775406152550319519617501575389742141362538671375575270130368782344375460094542930957208982333657039900983512378934606414708547255120509688221248878365002162079958544994081468523927315675060726868126226367119441190130650764598697841259026377226201673036205220245238076301842775410518683141308488299366012792925609747073886802877596666532246689317196865573110094049146280756613633385237048709371024252858686340623252312452593430321228085552943679754605680459379364986804128577790131289118408139954294866373981926459619424848669839958145224015329056251464187884540803724925854941893314508739139448540059027532063346594260009340289063635135268446417517177773306225826478834782126901952841733199463653563757819068049198556549112038207670677005457584687670138285992773936407404706326519609992105860062869525897101616064153489988499260854115519937665672793315389915719723184695407552227493961904033933034506875702096849362495327673029771455889030501830242732676146364350412302869011748293967864940422889128153590781271839942018607109535085227963257602139998078826097049418704998656236212402366601095688523413673512998518901468183798514551196413118699461621524416262734189234150826938615238369409717915433788697444341087319545108423271713647606132458422133503476646278312763913773672381574955638642484777319177742615693192492030931928334799325795983171516582124249978689831869160939605527534908432774284025724078112334305143452973560047389979442428241832752514170684582991619064835042076127845136974614077376818874608487426791468373615242293672741372298898215088365221162041567250511944704729950839359617629579145185451647138688599424451528822613292149181525578785717464355469269950910358964367355548167095991226459148148416836033320461350750016925333661337306860380813570244138594176200254338594713997700943753269483275676699592254818599648860765855658967021173586910470760937291362350281087625944947663940083612371308499706464739236243824369828191050651890831355140821021009799707142643546563126154302728058269983835130462112445179485724829519948644797857100978445782729948146775639685486727347085571030457542493031359599157910012477405633462126888771916787753215333242607039830155744016882502462503818969602202111471162936075917294595421685134910453228619713406894527040532782467138493248067630974131210865224589283318665338359787682806475430520542164582197378961886474218909120025123091615456874986351962126541772414045818060094363742441442667036502961807091952360039303360580900852680604055434020409419268918051690557813552959236488040160958755768871367230392867382735702108578451240872919059355437258914588914059658578625910689412928981898994374868014765744048731178533977420205065542882559318334473630109661521143300821787590642741661630560532599207482636782848372575108230527673435955097474563225203600719908173095140979638933646119901238452049016502626977563080111918315881318986264803301054759949431314581482431408037019249299434256675011740150791380650719740873599060034519923061234283942527829654746500679243122868491752528092330799766780299772695603288900967560796775174207884494845966890228277702276659444815563795433225980503597587408498869891219703208161074827864088098815419234882655313426926283791847398673264577617151571464296912550417563804886979853576821080050211194779490844153380677685847777313137638651644748358202947322079765399238487437874318841114773978903668929164955398911903679705111008999142589544437065672589266355348348971511169575378316208327903577552525930641088538955350354489078111990562226354820551745938135022897672457837517586016736813649699772486263689086502957138019177196070312090344215367177632397930739405411088757771866673597796220471619637645139435250941374184393351858539017096692099099345257001920271362387534252371917508119267325168864330673891152067448719178429752412191066355929358566249659077077560550302293786857736765866388524626228805050725063109877803065961191644600499168820792325163292525536974162404755526606943846795314338495539699560103980570000575730832399241743616051296198894674663823826249501962992317559847798100096759179383956869860153118427566631515292600888345422893802197242997389457528273662177569851158066854725418877583679801690209473560655905719642363040982739123254770408905429249758124187443434793269173022194566001870880813212255626734666407333284872705324976206677741658696075649608364892807470963909485110281558432545948579534204538696827102504407100425376019173981304010256984425288381928914573699655169020850451341503052441205769215186509836760430481696523650279090720163816251521349287308560407457609483984181328774565719714613388489095110023571061353122279353104129328013968956403235071785261847838169630745374996406189906650415573552174116649660276541371408913476854939747876731425608814138059458169543823165972801614100937621904382981944188903180205906327482865751979701901540575440519486923023420935041930682172192953852334672415568738221940582193314983240970450000477463045431237229063460109818726294597730994303217381825651493935869034862652936559019431947352777726119926158367810617503147922958376143964979603245915631333786351234314954623412494887023938633377421208202061177648550247361016141144451615061150414512561947705053352442969412639758719469809823355676287459924284669684459858991524522914802929760964195910108664304507593383032621305399692953057899447189106733091012594841503936991785388985322660311685783354745007380474195833316048135155967714601451196311606046191001166178941116722830537202351353675803239601270737264305300314769429948779160815303098446558150519469320909471850141905795161388126098051093418801571231958217059570635407936987518675272606139316846781769414872368547904423404977322742616034539497477291204678516696339549373290014129953927115273383862176648175885100832898131993707682449845814289537783195056908822732162500604957529260337740262458814285530991622691309191620743536827546586516016261289544348330822509040619411107336690611176859744962777081961711988981244490119102057017123472693131597991997040909096393811129374410032160780720267920557429521283544362429347063129854641992658572996108093014481102752542992814642875292835964120599399273647779564854999067324549593959628020136971251523507807754590744694873740047390084491259174712701241947149566007259569113369875274948363558659130833317516389511341744440804095510223434955552652210614743910169826529392899468656662706962138458679700014949089569408033941330187462290588839847072683578505493439388126630655399425769894783841874574481277512426591408213810373551314332889400820073202400253692361444659207630759168415095760789533492551330583140574981012731074049549919118053417150217808638350432013305694321389747006470410615077305764765120127628910927114025496289209479659319746699938956841225054827585736797719039052465086433182830701745898467197621237268086386733129150280583409523728139312677689819712362202660229834226632997964115903142152545104059172086002463963414350578947905947216633376664142189791562053019113774134585010114509991806040543148515641482014416718677876276580431730562587541020555292496453826361453188845475398099905277525052773545411713921648813979140016300112385588170999474985918656553076765214200080620922916851475745553785133089372514034029601819219527045772849932738904614873836099307092123571006738447715320002736785859704861742282537734067792187177608073549859135742645615364728840961736910729008697313304738536298720611573424123582407824500642154138363464791319257510414579292323013964798548950290960997144513319241370751263381191179501838180558724038708020579905145157293231789686223459443044018289699299028761818401590134930047434655260646434988879638156693278024323812521554624956388982330136290167049424094118582772096018451809597401164846924711716262902829627380939680535156293471439360777268668365604921618839689307971611636791474486517596411076810461187507596434260046979222951771970881882637300844957670414379573068900594030059669462435172746064402491699639256585470646371028345111692685583568972301562562922256758180181085480072911408202795425250027969499463641174613001079713276428421215191667447359883645715478755796737199406110184987838747951054762875131236948669154666701738693610353768722184367702584486223362096024384484603104446694719810676365358898796150078397378880308527506601302713337537470154717940902510142689198467640659012705019749229659196945434251394512811731664749976526521575163913656404283679160697284832403491752877439284481271499113105959231314317691378767826586965558827309006336474296703042302766970494721137069514776117071812137188441976088074396467632977148030639633204112209971813503021630520258087179296520213138286076436343573116739144719310772751735156402034501606390456169140121695688607125183103173251813914671347610021351582630598950972263101156473693547645926791369585126525848123770842541512577658666859445930626122772214914414428878443618845511938720224570647898061530301191130932770667765716795587750061205748309356694807519519675049350933068580375053894078242210199468520630330003161545121375796842051755736417199147757963284334866394276249640731433231049313954526161951624809572619652276996303120934045809848958441871638077879356764855185283339151315501229746330405881302263457753882789573262935098772141915955008754732738429440981828735729272802882701434622480077709131642461504208927055033641377102447767720176633847373823944955329314383832782143590012811927685177026789234911929577093962457115800486427160323294733691288587100842884523422947373759687195747031917611825381748929965338560830322621555697476051991779833983757024224308964473525520615691348057039080995096707558993173247103410555911126189269896588730810492029064501420933855518163570985872578414596537490581577386809453787410688705142748561393081836124251051324584698861388478139283569598076892767321443716553246412277259380509438802329441648705346383613734547877712888220362688053129344779935227318331396329401655637306388721745349393876059195313192731747216875912473534083064724394534423226971274516443125664390773514132844684527673669092932331255685956744208760893026251638308006285281531125557486527757107669977234989257848144696133615593927212707645061711788280447683309281341206400131653863420785992756287508115967050826182726890127091142835164557166691300678394990747493429085386293564966123136506231068567056989317384966475475729360339009395818317246772969137113875763412531168727939516546447462848160915288609593976373135718583011204195966912413852164206268427095555948610761307815791560355585910426147327321102341134387395444132445427019438961472388259276810758042673037214059651545259592406090068506838010231567454628094637254355973489738412673187077409391969169545123360596500128359039361514821593508030148522205228449973734972174002553108195263247639174438853119252163722614381071194775578403064409455019374052283926424489955638366392986417357495741112108742236903909428659619606212619900649574073585165166583918297998340673134762427650800452972036533098907970092878703482852833490281729498858731156264911226877099786698157523214591321994816532369903053664184550576973511700913443461257437675437472098084407017674888009625137498476466436818879720524380130001916537522732804698998210196055682123318139008022653778279715652658727340997456249218032227963658719808122825441145385176983894549215846317551213773007016356738334267963377888011544300061222386574258747191915588698617637837212717814756142051324008302080298650994166585880612515919258375738246207644772437177730335392539644865639849308897774064728887770437363216880581815066468852825832858170229658070845319130874032026316629150366399827042959910139581792401984719737440786491444999030986092724355755641888514009652129027999591099530921894279904701093752999885648973445224343373762636465568559928662660225367743242647517117639887521310379396989258168883666755250191993348321142152864927369234668649063028652063843003316973499048911633219208658516326528768740257621395512872408369502229664467552427061041482906643131699241509502631730714053932028098939427452444970068248194791910834306048571684029297039763506306003677920029786132935369270257069918171451215129218456327859444234926254208150987962386182798994154872735035689186439260489113584084457851762452138367055101379588122088844841306204874692945577566193189114109700874804492781437652540985226374341144719703543609354328682925954034266359991157018716516446223344660092640717378693207071014181491854379467954573981289282127187230877577110472130570576015105977305257910229508244095738723967730842098391729083715169089672956523592451123266861612656114937473953741130882127624277059388150081629717639957137442000516378123556553332349275408205751508548209994904127879234614825403357223962515911129518982040378620086754855361296612014949915205044289352069213501405997863521354165348782511867122622716426639791821261702368775506733831743186020155130943146663966007407244597917005719991265853620211871215693990090865326620251912533146988791177682866417571901522812420520954626741756852429297080414669100168753560040054760117697607946028484195290870973497362267381612404260749108299672450420697873731172732775674054385367218094949835013674973757423265370251319346466334678075474375906897432558238767579231146265140826352088422254545690686302743333477665277149035167938674924154842983621768748297426546172809743534122395481353193555875026625899972752500022321576082052828487883396792123138094495203111492864041134795761256726095663499686254762052539889279642048007404275482585612511343844033096850528226343612783861307535354140366802884442274775822100977205037665851810599890007341178775130240696632601594694061697231625625860004620538862779963203630814410243245714819549757828073441407122131050844039240224163642095196215306864657309686247074858678000635402415836405930550459058799511632845758556493533762990549187485016639012256731683580040073341731704082434264243561194791703596206015014846543656970640029940075455836423615054869940691591288967540111562931377745992026685841553681405592390900507543705586848434089001303884903488059141717942395691356277350339460187131843419289217935265295704356916529054605633813938893737767409366779159372882254232836716324580262988115146013874569597106960026911351914668502679283163961953086528727793944040518851106607715147835491925402383222147418855338357535739845538867786357060338435261036202368258020761466669889670691822601560184917436779215254347489960930087319530836518444337988344598187203191595434829132950413104197804486083026745302512606864460474736420264409880729091060010368627194325379608471121667642965001108323387523924855835054547593985702842329940726838791815501738849577938132081507924442944174718597397264098866829822238109143654804816673202408821440775080110551433710513005759571403757096182158076893681914376156120366821040079723970732533775297717113208811739667056486197044324270922989003211680035846379754027311741122863788335461268176688251174205660568758427931660106752538935307255339039355388757057375250425837093302168454705863145996845095042151313295262463259661279787231685169235050323016586688299833499115629856113737828434665438782484735547300584910063985708776012855041724554864958256185127598519785482694466456563490174364083687348114832431925384869094951858531131186801480404938023454443571034693096579794784282688250620550447004592047288521549204059159028509660096017875307950532319742036173203952041761503785819360687983493313089577551873561446412395575710594370027055187478904534143877344909963663735297933632031693194441131986356078620539658905801102236737444661108267332204176723242428802368200731035237320543765666828751910067807455585241166705139054718355894926417783921107593070742530185305927934025258466866218767376534792597033669822057078961298957496217109258353525748391156704355202862658731864850654926248935721796777991022299873209352867958121188810265931762818554937603100731645526362256769968645627563740131303913187747664074382451124596816950157537126085105444310397381169417181279755364952019062060800318321532221104576465370046063753472086774044100444414676557036622159972786835290325849755928597463426695781953163866965969052547199558811862459755929880206105062693162596966564969090523328485578382332426358809045831759393541573654498007053609291367872036111445231279494806931031841205524707641695256162632063010224942774570614275679640385413454072868377460757627086865145342680411059337436108163325287906190993195903620201661214403352143421814822960031390185721117950110818389291340253326486009897862116192130278391424657241044004963932456332370837203044676250871218583290978562214724386902489542748628396358186325956900204476723680860137151218998668021260767109942583224787827906233417831491624545860788315526165511635197037561922517899904690761031753872124042336536173826882605457634858121101471892751287742889625763093890478605491801544520792057578574375773201143929421480324074646141024278246772158921139478563054405229834847395540267665801516476465649906633858677249697918200443907759577085140538201853478765762117960994914145101764724959407470640463811314680073362866017160216055901670762363844476940433763519832222385027792750981080965530232813715566803117769888159323419674153708883977329384943689553768541789213946129813719122880362388613061590039120847635432704222352763497996891937276538781966653887199495265671013361386797466770701748928272976698049303363099194915667274909798041151694131302731875286034428026186929184304362229619692102502128326871687296959400302085212456821262169947535776150082836000223031048009020371350036539197512764290221947644788009144903781547616778821484803103102745494206849074992779830389209747508799417151536020207175883478394172905960788120783232579015657004053498129914455441618389610549539868266323811924818208880604509127630703993255747870363319837810567597787888248562918900718803552796004261069194657586185596777323973185892714770276436504734272537002948160990428552665125608477771575963058090305035115286941440877623389294911460277602637191173693793231079024899815378902648788493885795214168271309254640593363869703425269994239287771226535309826739493886296423210090644214129966601915093662511467744154185692679773644695709701672608468044373005103438648018171096398607426443413194281519283533259981445906676653664312034448007510997631193422830884833006737772887744686368777653538919592111949951373489944710830951650076413715452663964540719349734000663229824949598114271366375624217568372270930581796391817021771734034804435202600593398262992169912934443430494160632096045871344133239156139910775140126053555363620216919941247411877562901224722321989970134286623258958498605964077449818088184783496838986907729353462388738014823594316384752835667377359432034427008829688816033072344951707746090028382556104976370057205866084666487901937011251702362871920843956238611037186048336332441746362113871081603050950760137657339038936536596933851722041992305843336304901453452571715630307405640050171237176240125222557358332930710738041186084749584740450846611590610786726669986270473854160586469256252168384869883596851589288004569216909578136486049118663430702671507574735910444281915534186018197115110593685299825714958042538520471370923783862810373944427764167480823665142849781516572576659578160735209456505359366276175015044857079506949581097412535399513752605101582122333384186945231604776461746644687207899376798357792653596666581824693709787573041587757626825069517113369429081460885782112243077774167939979145984687560083045973141222583991194116736510260934423567193666909628226271067954142670416399861275578343838128155755377702692215310376282921807545085658277051619371602033888713006177339575658405744622442355225853961935039933219714558173292667708157166916833886949301548495619142336871670282820976529735014754467417983365683174117809170080328865238203402509223643245295215135732316886815093541440338066497831425192534469707791058531207292816542931530093442001376701232809955022738734490848042941077563991314157582176472360317911138496886256725677367798535879492979280051355429572780533908274951671490815885229571886451377910940010012673321183872398403321907312091527491690998932778856646700965310668633894463320063118790564548548680468929222591042338228420943806756554406415931090291538143528789629740994863591079711320495984207677768776056308656173482219428268311986921414524482951641166995052008686213317172019535225407298322183791610925122947801778616107589077345869377990653281139028741071735597803862826823503904687705298499157856081719712796392689492483355489380957823523151647371561894369978535447318492691386953116508279327857453984504066238005909847859372464174431153967057270158951933229971026010966691002647873844722520078261307977064543610448466409873414879293871473093770897730342188974916791516079659719631290440856802730239894028254762897599982086201797037774350455318445666421091272654386376102853322186923651805632319156209526417184248540024807358600433160247811092932618503532768368430167126161193398063991915395134237015963224689432846551459273641605647876407353197376326052974132020864262566344092487103313843164740701039613572905063871725731123431656363638983017301386812075627738970033704925617216698715754404765227506689591570815979652750336513064156973513088297698696477005797931273090405805324066030602361512119840369813400472419573729403873434074573160162870936318068249575178675647763166913751293933551646401329625534493843177325624465230372869642679078724392280172358972274796335813356986697385312329187363931167837979111403879151351225430729247112426650129104919284568825235232455725351552224363906641354967564821570365975247995194169878249598512813403591842113734352236034910030599591245451967209058347539059536190947433656585914973072966125316763518711707788780035041883398613275851057398845335005672095171230325334135754312046899114278318582949758025840627034073495122556098906615537245941205241050630832317495323472933706045476448135324622130249061967088040634256046633681463998139104615271598326353633335243659421316638748257095222430616324419633409773550120132726761874278343852462953247386966597193056825342009690607297567265709899931944826256174731047305094081727770841080440016328196894856028563604702780682709363667848710891858610272205043503944199299286748350079640312927864906304355154798671043210363438224540663084637003896566824195029371811104076856777325671062014465716574261539700730333018675634121018453203461781631294981764229198232448947654253783388204297001920517253136683270888989223979423417588630101697507592396076446071605672776440131159545850932553540460963555258875042206253533925856199633623872569538946264824099914287390183680108014685374620969458668067114850551017647802720372476318759518097294889667098388787511578895623400536394696909686982089754739465395458755824025627145860540874654096413723593095786861445483207390022439985873830588574664429664328016256793764664176593210650680088966473569586028063185778696846067901539484777171526008932126642124726149000234264622535507932061596730778639639322994194566230181315095849815600439054976860942354245780811250583700351160679186551987899007553450837968473873566770319473147476749953987063615776202643846558316122703715582310812032981020745887175302830579849877162396208954934582206235358053066687144876586531305671914153856979556448429896161954702428046020131267519937687942784998876608574424998618033186526320893410380410615897192637383212667814571224040666584728535219469735065470507466917541842491727590582415179332124764074275007615003561577219703985592626963898540408123901920954693863945334300894449076898006775718907497203849104045111950488579240549422430862215686448461635287540273933678378844195074450255145986318612166430395304017670650737974685138684856887920372725287537626880802277074988514877737086561392592097851272353742818024979368746610359299993821608029744496422263548547379227059308330732006560207940874965636535953389748254985558222428424330864460444917636632197361629108476540664208138353154832367022269303011778867713003519669926347227092605460218997631456886988546452742315709205780440409392361149984816382171251958377059474144369328217951856030362908523108523320063836177218545129144151675726728971709295080995491115727738994384523099426017049570788092605348295244510790430809310252002021162900702972004743370313805442485273713185126694838015211112954180162169003605131100343992572258878781008043930175009769360708537294998309182845117912092938413455780854377238800073118887421690605050678371370274063825715320860910620948562818451293617405229491236178678754278932510338478945063584831864172120232848867941761893175916936978589066485863729545344061035238414543782144041420795359232419130120814019590644487393845413057769719569362935783498618412118335138847775489214231071866809710199171908881608454495198717226829803613782208248938966092151102736556383497239013516522084118430594971074187519260946766667423607181318562263393260060663288717977893874080349690289502370587468658530985736835159292642558195601284611160860487456916132188445668274130918453531643472494048279511660213922482152284451162576937159479526872950903047337162660821805029600708501290793495192214286757581386114297917781127145691164585515718567911708522043336429297534300930577150477197470794166974719236537212770910044441149771285775283181049923538686195299106209763353070616873255072368061193988813137514561690385137083968163734396360347928328336563595006220960934830733065521338335841965986235454589498682179372157178621143188814181528148836823240009313917239615618819685916460559824760451892578522401207920356914008125649666362232615846019270768411703026907820785686893329687936007326486259085396965025670221843906365927274024874373060432645146595290306316201392153119798490572148328091329727540219633346941261473165756079426541378711351627269272757052944951094355168530350261245111562524094741072397641389854917843735109228705666266863564318304340300463039112532153772402056001825404569674075795960482695655750098767071905821033260887679978762025881061325337213163524622779581816972175555663637210876981896507755878807206231301747997616278339215979267473884231317543544712452852114555647618822488813490625396727766305946129050714786088423305048954173700588940427019522843104010086905515156909811517470970474323555351456229248573825599238197370105299573364893745750391351067788061060527046812509973058875643642096985994846004078611902478115985749938866763374390207356150215198771166488048581440471218124332859752158358015616660187047654002371295814353685889164385419937001586245963586686123227189249339843703303467679680488282425879611225214199203660669304537817806007418484543257294498646404096533225791315505537497715207372656046521498454410484618808462877318221533855177115026118801994635309492636704866960405453702180044263190730170186585393782170839546858732775601817761449580514710578003629573446698223526303276734226490467503004836350690787693180419256606367206975754427565647193757103622172723445912571921412299915576801160624014585320520435926902108223783097157413714400856842549485204781754909051139596113033072378955171738006815746107126582544226522618574999884662865437801703547910979352686377121384449362061338382596983291230994834971550479538621580428614474707245992895951108596353356806792208588625391355419712148342585326639448556448414437163323753111363340625419447936908942309059384977968558654468049438582343818038934475031358918368904553362235318960285027300982643072000467590624020979094167872273398935195854660177797067882015023199367866518380157778613872943331744050423399154264127572590316747837829937185838805929919930426357165171535205844319577554107598132285773629025750828527147869294916738495703358765482635112741426231530287972819515170191843245039795145568805407271280931405842189126545621691903281208244330021380936941534090926737001841378878232358824105952882091391122376983197385863111377095821200758977598655636124137542127167825095347247242493240787156813316762909697688864136617808861689815132468231141188094757116163402600963896457848764885057333264284354504937279338775019887183472529765242120841857211466394385600886129299536196104160966949461244421470876475635289658360673044133988472412908346503168644044604661248748712465204802503052422913247662994388842262879693084905772957000634196203224713014001316324485989167462563998596759472917793384738934828062167583801086989253946454905163667273365009826486005589759567623881215672865627059042146648672881327891063995694457750315379828488812880269962995872715826927673202525599988948924553574496455072613992039779209442466653855719582532255207207153068979266405561447716075597208003386115629512060258961979286373743813337931101772517953360698302031325001844985453129783938956301615754527286888929780663765211591009120443813269934515079913668898214910192754399304618341831453870034267125170721505066917586198732535221716916597559836503614379370118425547846931569036557590812044714028782560536961879256523449737057538949699208081652250218260123107062251099566298529927581162698576168546631586946049600127140987141317674460410902993224596022062324828491276267223741714140055313279819368014780323282408383224067009467800172584303162404423355760504326823431706740776861818994506012773534445613456631600402675225760377368762722021968052635826828120651984513278838416227839164392949867613026178865022522692004106553797610247860158988661216559547229327484286711157186964559739720520556436315158359781162799170405180320792416230576841207330921642427914971360147358390054635718803605053812837473635557695381145693736966197784412835427730682455377495472116907945998421668486206685639652442308850167256008495070585127947385980542764963491704371533238862062927529061728993687103715584617381449133650067934551429741997596233806357685350458313224546984096007149813473419575258362349731564468684291660239721484472043256211659727453894937763642732739820546069887466309796309447539968295322423746786761899588378272444571292371367413474447197434276820309108466176334054973272331173340111659361442337130792855312977415847609894557657244236135360575415882254468739766648258409923847596862145560111671406474246039147740994441351609557249626167418534932138685355488646277447161488690787234126802880936621565723899904615884548341472638437772090419017559362342062609301959534466652230774497315103874040974426330140216732414915907495369817982025864413682320190304402284550455106186758899229547597245258424329265319033989076324859178607488037746916527718266949417024120162124868059437809624404252426704159384001199136240834740094617360560669898139739645400311944527017550131601104533280441817207649685008412565052535179862086175827433761623348775986952355976268937519226183084278136545349291670649785347842730455081487877293986813649230888836033911523597766312541091611558308804656825040751880201229000742627616764846092999606733478252567564690692669504889322114105282631889525319858323705525911497612288157996632667685670674150846432327565528609123127086077539690737908771138085892200113245294049889922704737554162844306763132343665963132039823822365456559043777707552305193196770793605848172893387453594424454474013959098664586068848120392276052089591591308873830873345317112789906683626082510250289631190568481346881428473945619394593511266715086704096809000035241384030443602237087033327542922826698398494829325813183260408718893212433059617843940587229933901382943262992336198408409788514398330434599960440396485182583066248982823883042200111255085981898391448344844015751684471609252769042652840411485899734910885714254073490007645062005967803838338350515620582705664016191350475064132715818275524670604480386741711701135361668073237815153729800159901327889495086187129604447582390156419305608703427826439346018905984357281977986898496611416847526529975227719636005017771483921982957544197799709954130121091633016282666472057665994141283170246327843904936295814914169455433298130711317392343344536477614717883848576748172715876667106217813834587606343570080150703180822107697621328830605698506305609033356175547929890746964404950767451267747106159270327510593755358827880906472517244109777980040119286343261893970180775124057054774158177970221802579963540456256569061867723885060688202164035260408533918104432069412762092767961756595762676589021880178838196631141734156532209197898820016385683655803586282227835323540770476387548613240989563105953577728703740467085125879358539676422989918253524305042736487362952197862376130430552678640237349729018968430033265542780883750558736743752261945449029876696946612108224851115124942879425375009248761228804637428658896795153370852897642290653016040206069997053451309942591115365763315347798585143808043185383293137605133990375187081546565293976821820681678976667143825155588879797300722377840466564345393925544396615896674799718417150813477090500003898193451616746130407776930778672242012416461426697352259907686766455115834355953750908750468801886412209297018951915865714966322975970231743912119114106738120788423635459798468818392838721078133776550259766032933645790131678864392198922153478445210797007411829472852520896641724546528677899228076406095090087054355112053831012039363483887827931984497205305580640089884147850679614566821898948479674022244113913369887487652583123461801329225543373875617324208320681859309093341218594477765154347005165214923914454731564386152568222327274320958552990828960284112884233856381741112323189817039205176818285148223632011326114683897977754234839539859773555387479931478369465852786548627650813853724070487089026934104735632316188699054916850121902617757361251685208213541489423125264663780298582285404482769756412105522055863664088568917771323306300523891885066913901475208601262155693104850152972747067125562727745608865730314711297367302397805250438620696620826528991710532990343302838492054402628712678922427512444061374297112648006020563822297430010181285771385041656979587178970340526369080649857004814587864116807509544571472638333034374444934753562266027341209926917981677891921750897515727238195821470408569780330165534206129720507627843830335242167825939925171230104851587860224644439220292020253252521515829520218725721656441148152957244204914499245531265109309283531415930597420172103218491273772895034798650668137487351895169131869380823743909292549280691725771478618398588851733810124489829934377473370053370068252656647212635214606968547927504809038433155753162266329616429449015410862283066225309223030055256064379392216273751092054318524673355685810347451754467300668773538268859656515445954574923648729683873935557286856820970937068655945793715092808131171747403868732588043215625794798713241960194139927877235454587568468762746272019100094498768878435303678674043109734750924359994293734355746752800574597686230559451123952878914382180299790800323290843096781932073569058248305026863533285657386011004060766594502913168774569065159241049643726694858160418911013311490706738036543681700409684130695301318926665944626256463817919659855204483526903636334206401621354856147973558569067520506511253677092000344997303422716188357301982404683865947269583956684546963367459758762687671678204149310431797725100520798570137927948407559741374061481883367972415208467850517662863773339874292705113236025748070303373436449698506471836270575534367072477137900735911028494106738086952233620846769094804738713039865343227698048631407498839757989365214479653306186066720098433994778082034252601056288009952122283076954922176813820889628483465616421754123937579558193754200095019239139515555511223697405926455097278440331386885178334434554052038015454864241788988257555470096002158416471742411410132996885100140752406174456919083750028326577637466209951318990330737079201943113542966688636484421817970036239203330453206764934536684736355707322326827785876446310370573555594566522654459815454790470955048621062330510444683333038786245129101219361371510125280334401845995354716355081414363331143924307309675133524204853828824109943599655989890178320729881597902725812942771540675060969003063075143063594335159290803487756279512698080233303983448523903763359578020680403822826869215712204567152735947916516836123801571638451477512947633273928861312235512576987086278058220742708761872709578297417052880180662367826500231390634119435668470543727684869857682890608140863953707420877680764412659167163724061796739633033065005264111522515204885857558654834258914573545195512032180353594911695051378068719810556006895666360047309899697571949998411847437091347874733077520204574436565617262186793285390157914385444947163193179238783098002974102908514885479387830864484899289781518304707739376905740671105223300022583960963928395194012317124630264096534995267171526593770055565730102494501137676561913334587750246583294305250495353130891578871532092316372373133107902309220102841925745042896381868642367418745319420730865142002648204585089869986704818966935411839771621427485830775501646076259582071540977268704166605867826554568530493151242347823449624187048865683437944276656029782106486814685177512298790716326796679143241180948696299889708040355541198052387600659238816546438629657921933326303838039366429868607257229153586409564863587715116286506248407497620036497639682708720641591753907274496783732165772299744820271810956549362372807148941506408038206953482379076431012118157117732910126914164048218394564547100247423760878689918169039921521753045153136140852307023421248049548015885572583792382485175500534204824970481492908940320310430809050323007986533558215703588782544545718278427626486375885747827314014521764649075125614840753558736191501676141412501389041086207604364613946110943290698832808350946105405659106878177534966935163165977743784854970520032448041881269436554799191892238890741452952579974686319705933896006655839221952956620159751151666300129475309250350785976428156893784305478622359782685533113861735520731866174351824115841845075091997649633694047866430158123243404433057388021248152371142388316099631832447205081549938790835458611253943435564824171299287489119366707640567857774181325253233507979780771975461697394241257405396956542526065849971304547348847901021479486605612704247767646084737041513530671846138948561060030258907065141688239455904675293200356117950112887673328192319125625450112001441334554826262046043961154178777018566846299911001936816697919963389400196333444219082726126561961439286151423991499109774369393437975616583894807974648514443152564762608988320176773626728380768044611965217042661464062080139705149376171806476488738827250154569276638342192678366431133871111025133072862691969096467500425521305379670524615424717077214067299329167718710591789934002289122069747920433953864968281665817890773234078288875249889546074590578021210045020175846649075388442769801561868206680361142266963414252212701874669272948450859264833052568909056061160609027359184255550131690394077096720368166451553160609833896170781715866268750533758548369182807948608780968625107433984390434235219689740367237885674707704507030700597244015754049856015155058928190915694812731538478889554953381956036083413176999479211030070256296238738351346477023693051810382793957412886791553484931648794808844286324406999962815018551120571300130535112365975815392599766465092145349546061127412046819415225926986188716476056849908748119793304841105307635909081982031362197358414422316767268043098239315181137479061734502360873745508395271506258881998152137286301123636845012754834291165393438286951173209240049799587871290266306404165115829161019204881466233120224197635902895287152465704419993236013589982120474846271345840260611228369146254161192044127219280174741005492699430065610779347520954299270720650387651378861176589218001361087617775409717699262796015976536682841105021059664122075404910323076215802321801490368864524554178452977152697573396110449811096336643650973261681886798344414251669250224998533937199407689970648423521941761037033886551068960149333137371722361296472034150664556620292222683537040127141078291436736093570890846188142373958232245787503986561211010450137490946828402032613144801907279288018920751978234534610262408946310152037618441950323372778709960576820747366052518528388812006417666180087401861373515895458278191176440767682077611697073274163810947190349871592916000621071323440142391532644306688082924938683364588261228996162358510568247905595841766424855277606907075534470052532713604689867684196360667936729004058748210752703690582852587524292351670119901397237694282959815729865739583855822949365306356393915948828577313698981442774794707665584106781286664956274007171084307394120846271084144220384654297665542790977252203936545409559594221915876466565983276517927312109637452041938454476903708734290815286507123649654266467749616718795331528641404301235882753816634993816753568289004479992478192683752604759132474627756612961000581745982917363087175573302426078515416609069164426643196313914584560126544290921166479054390986891864459370224685320335100411031886752698293827320896578394742343752392404174187327761664303245103880308371741165000643275630023932633142124856864613839455387524460883835247056445230671943050578332861499695214574918673021229404253734683027773313743176432192583951191913236970762565695716840327124880325930914779807518816007401993774234221794461913879164577142778140583620285187482254501254780617476909707221619667136778860802714594724530597985286751745300483760149830490374318122069442090705009423973432872916069092401278307983254836657225071642951238528724138838574504391218505180992122754344306417613772561319645961095192874830637228486233492444491904268558980004614112652158744705099772253265288419466337449702012118823493884966713120693120582224051534971354793790579910847464242156789336422637453846505595136532644728156836277997378127893681071581923934505832928373516022575817127739736575756865378797460471263725175192803271851926819917519383686188517784400435220379006466153404705216541111363986878921739723739896607992639335605097808466640645060973299641467192720137922397898565627219164711374815726090587366358047829903172491757500331384309027495081387152401636448384580814486186637697087649689231216276249532384975371921757162088038760829349873080877249706384919119527981958190516873110807572517264983816623232205603988358157912992461349984204628724405823867426023186896007333398519510459422904668181847357590156918607616331138009353807527538592211061653529680787460840337585919547522274221559932006125164812648451392909851693330515235916955355721591013597659403166816081731576169618811781971177795842089107519036325768932298882133054753656397633873210525368153651341260914098941072219830872711334487119709246568789747359480982755252152430402157014447380207090760786408265205545137559732000800203136750199256298419497315924197202893994081817702434459238430923245234575791683932861682945847124118958937423672717813748011917449413425060927640713687024598045661303952113384013415037432914883493033636158000130588759332472546201048166403710080511673970680927719260588960348045228317232803681187031272506450618629138861001275954148566415095600081015308217088430975829661490651423859763132193660525117633388134158638217519049714767119063945723171578151019595179218912729338551682001453030819043454878245408263437500120254435442376334044602833812761305154890870916870343146715245652773283431041407392860250480796803485192806596809855333297772986668103799435700742354867077311314589712272131788641879710793233868427693207194387420730083062528118643285570520825547326752348837863723225294085957046976403282869202911899456522208121620826458236485403829445741128331629382084816009173825727982745362705478457038425615653445181021898078023754297882055318390558568805474809499629743584484479518248026939110990875290364212204536332706626128176468053408407649243109388979549094928082647431373786179467142988191638288941225785348943868854632528599402913545489154484053068978162863823000366160237819716753451310493666848144862930450839567184713588568720601921059768004898348890777169855867038685678689630104228620027696190848737373593115559489316471614742241241080915717759369507297908390256697208628722732076075083433157804018595982216321305273881207658074452046050754827966442452381402017094824435270368061319011125926752655181876954087858148018718169579570729272694811666295639408633390466351259744410532863779156045567748268573798664900319980347698852661715714418485150351971611338457054814071731561010311297700803013892035659824806376504489316277200564467982215399291293815609566984236664361860965342421210479582059584960463891055303905596666930735260688627851937917438369125360883055927544388560027145080571797004532153325269863702949511264830010485917986200317248423836494080716911582330878681178100817517430784215819553290074107638543118831542337780918612111718398640817469867853658537784796684100354795672647383581298428564496194855634992668338556800017467144246309114053233502145105635100954667476387259109043659409570451628107003693334435646437801867855817503020706261095751735198245598952555068326031742238547524726553387803327296382780133921837788043654626876383362945442953469045674139219118842149941525260493144551517231835450076117034756695289843264617957174777984619140625', -); -test(macro, '94906266', '0', '1'); -test(macro, '-94906266', '0', '1'); -test(macro, '94906266', '1', '94906266'); -test(macro, '-94906266', '1', '-94906266'); -test(macro, '94906266', '3', '854839655154332653629096'); -test(macro, '-94906266', '3', '-854839655154332653629096'); -test( - macro, - '94906266', - '7', - '69352833223452036048019660867447049048422594495110435456', -); -test( - macro, - '-94906266', - '7', - '-69352833223452036048019660867447049048422594495110435456', -); -test( - macro, - '94906266', - '9', - '624674792670819892886821348974247157367038441509612832874984853143476736', -); -test( - macro, - '-94906266', - '9', - '-624674792670819892886821348974247157367038441509612832874984853143476736', -); -test( - macro, - '94906266', - '11', - '5626570371553000770366419421961255147770032439589200995227891474434035187239751962044416', -); -test( - macro, - '-94906266', - '11', - '-5626570371553000770366419421961255147770032439589200995227891474434035187239751962044416', -); -test( - macro, - '94906266', - '17', - '4111621002962352544426035475002050767022502971311441626541763763792261198666994629509192961845858718231919984114833985236172441304825856', -); -test( - macro, - '-94906266', - '17', - '-4111621002962352544426035475002050767022502971311441626541763763792261198666994629509192961845858718231919984114833985236172441304825856', -); -test( - macro, - '94906266', - '22', - '31658294146038073140673550517958143193937503699159895257943887308245045293131342388364082990134400198608168678756490519887562990165044958599474575834979005035731090290356781056', -); -test( - macro, - '-94906266', - '22', - '31658294146038073140673550517958143193937503699159895257943887308245045293131342388364082990134400198608168678756490519887562990165044958599474575834979005035731090290356781056', -); -test( - macro, - '94906266', - '24', - '285152565696490625870442272729395647608950351839474257315727256295452252799048325652363949074270810510446637480253626162460689279863201482867682864836827407863087624820569082929394398407950336', -); -test( - macro, - '-94906266', - '24', - '285152565696490625870442272729395647608950351839474257315727256295452252799048325652363949074270810510446637480253626162460689279863201482867682864836827407863087624820569082929394398407950336', -); -test( - macro, - '94906266', - '27', - '243759720926361233482907476667027740766805627065699088178027236643247725320494107064742082561094618490109236612895062687353584665860859991879415575955849317191261917932396860642093944856375991467562330107969332576256', -); -test( - macro, - '-94906266', - '27', - '-243759720926361233482907476667027740766805627065699088178027236643247725320494107064742082561094618490109236612895062687353584665860859991879415575955849317191261917932396860642093944856375991467562330107969332576256', -); -test( - macro, - '94906266', - '29', - '2195592394049166382906227581924066334663790360178733838688076505880403691220571309390729652591082755619543107564008226799137799080033434887927401578673812379447379840039807149661750004725486244752615902332029221197778610238611521536', -); -test( - macro, - '-94906266', - '29', - '-2195592394049166382906227581924066334663790360178733838688076505880403691220571309390729652591082755619543107564008226799137799080033434887927401578673812379447379840039807149661750004725486244752615902332029221197778610238611521536', -); -test( - macro, - '94906266', - '1234', - '9591583891277388505525115654797253189447136886605641096683226693736396854292872290512151998759360923701943145747583511134137237540129219701865806527338039412393513087835762990942813556773080107716234535870561191650361302039829302403412946075446106825412751297892836531217239269776359674130746921131965972537264150037423340241624478540689955102073116137675285513450572840589026258095131250791322081023453951176768841489407000043160535726118339631576838850502482585592200779524367753458287644483993004333076374919449019351020134267799153173432760508245927226301565370359856673809842061641312175092790578128981482583891661097755340718832041897219562172618233303238094263205645877970358113993768074445674320377240792952208045529432335140630061808861188401135379799521387052163956136888910117971768073860253216476475927368994288414942490447092525755875965929318466574353873454174423568978107060092961912237658617656324665296966703692085594297491801246417796157302870670019421897078307859164701722985884435622838840530890375919184262292483249645237441871417071068806838100941596745962353204182500699553236401634245625283851805217533262792073996012743903038338818229229536055186386872511025680807437338096861815569495459484486460365583028341745944192156249359977394771788868182593957987578355313292235026581979280145300928658410955632509870162005244044559296175541745959995285799355003323443377883778100846086239675150873016131996875930350018015992219350113946152537456877585388442767668614805636644492157477034654015002200777424371801710940679802301822648705115099704427481311918749176783544920736529548586139472683949148040458809863320043994900963476851393707718685357960075583333452093866553065546077049928960672319740544152092427005399888194730320253239832076741315219908647683627978170933321554476794379260071113837209591838667536304118212015385101618506499462338145076365933116172453086230618448544984434420121504363011969733490863691026519845481227162596252154043336808666820679272401041855392723131101974634161808347994859566559136073803551874710780721574809835031749728330936601228289711332942475487049804198344632033302735878413333870324928721703861529246383352099214222474224938703923296131257451581782344657338446171822905587284519270798848617615383853637901599987735072168595913644523892204610491256735570544171294439722701186324784813173174483048007173966323269225972341862131385921920832169574095034230665694523080098106542220271445953212355824376796872664899930405078699681023392941095533624834406183151593571978375085934954718772261954055173766598828049519860162686382244143267595319712518638744666104806572606245449198069667116209595882863289884166226287944224244325912368780394022898051057039098547506174697498113971272667929236765997561816214125329832660683430329906332085061140646573555743366393621599195976267935743727788827183517095321230820637742126067889019665213164390290062070086490541490087922889187502866643165223474222152292371630635439138794711457873999619661458114893978180017319683380126983120641424939879059628457874620836535554946801030253436946381021247115406263632484804383695320385114124544559909521290483278475119817164333705567704791958463532021771160857295222557768598737275557446539702002377398605084666447155176033668026697232370808420470009321148824428418389705572556366704189822047227135423662015737971723144128915366318163252037686350939438961105050312976676967329177197952756021289597791397338470443572707715044081895964751092291481135333163500784426335086969222350790452151470682249035744789451673722795644580346446427237748663833724773055738574222477446871501122860335729438705137534047869725490906711494592485106885753816974753130866230360407926506022819960149735054814022037339465954340178612152040319878077106430592659196961703359784146025873205470608826469128543078279531426173587139642452817225181534576963768759115834369507960533557518872119645633087366816494975254571143679899649491717075104399517306160274939826782873377728147095270888144396760865832963585642969396605820937742695276189538284034362525529116594250112268646631014509298531366336740362116463524994112518288361022718725186733909161021464483147766958810416653193317981915259425065001767448497554577639274204071071705244125471084327932064913256116544625655097111357879218899746235180031762344942760169055331365226140925327502639728177654134067427560672144839015071652189807317452445009056094721496371835728117777604974208279421394708930008595905196768223073852631733496851110527349046730941946132098007584486429686144893021869768040494264750853862282987486806138208661684993068425524750265051353734028906190482450851078570663574840036302550770980899456380758967689998731148592509807498959236086788270504035504990430792437032016856376680319178405811261802074955061597795727228291245608975661248511105127641151300865259290562972594488780807006164810445138616615841618866683247778933343790417183231981709585853401070402352247880227834733605154654208405827367703397973124817867577312294892836600548995170550964519017755920491134728378033326750515727791786492541954821643732033152252733475994603308334780140629373474610355068194857748405815128125330220343480629589196619680550886899725922137105216388200442015479933602992398666447348073001184279416147051990832666558273496164807310852154387305610527877711252422415258565032409894506552122659357455434448999509546516876567873333914554650709822738555250110914569231361810681278643896615945548615899639843813666952141996624167611621492507842243902766221696245619381375774605289899874210671753440701163534059875806083218591213612602297792283259653398593217024941897584586879309412954558704641934429167525386399311944692329646781017786882955521326213679515731031183203986702444464679264883058444930210295590055606165224085189224526495039065334701181368385574370869084681514830806912736541133960881470315237742308529215400374398116689039427221492261470641437661432564644402005790004197437786314907560361356740707196128715870019180872806279505931484886218059480821987893092959069213150697966414731390314378598567994448063764696914845544937095976949556292692796483284851190274166372600687071534820393215816026820899675947738834985468497728922675033232726987359807157258554534363387708729838351923974285515021519390503787211158967755318117395341875443593494088249677470509256804069203968911906532856935833859629624953249282547694462129874921376210457781519780672138068580237523242109758156352510154248725657237885230051785607446612712455877439910598727422322236228918026459822218149591970911650199903977933286839068419271139224493809573534424910810569507347636018232048772842840705740610444557659804248321191219347571463409422539969701913590898411004567236097895765842127957787359469025195874392074029652861324112210670977858242810226625126442091294631154867160280576157087207127738748079837969738346736272907326954078228907240806250022030103243471070942620769424250383227664179624295113595650922927103176569104163069362275506704125229083883227741648535784720713916998425594827704884440884048570231868405014498867352517286315804797924811180126154783110497902148043082659366781977209563715381227919869341778767396699280870862522931948944127530770998030252387371682413803951145767257140559728875692368709218878174221849437349204586631919443118989273373652595227172082496817103834248085354242741398581443429002334727240172368808661300231451115291328199507370065934925021969833175256299351306328641830228271353568846058387616229810955704081192557684947405779884509699286099118817298430699433547211009079482595408740285359093432367204533672009970779486719368138866188648840163573708869681067182080546042978337057745453023016747935779322389017812077413454635572131138070447390064042098690495563990815384766717508180920795876792077075958862404761890064984999921424416035664890724207484476976948663181789371914701106962448405463092701988465606503300165084244328789019795067098840871060483436479149382772059422903723115301669510704882112896208019251794996975248024340609600192493149267102552688418448337310468569703642800278151785183841360284358832347643596421881526596665057964053827050804071884062288727904628572069704994983452228398970557246268968220658737939309295962851885135390864007109076454907858176227575944339250250806424963701992166486681083315296440885760692193722152386434371762373410590481977858473872297435270131851901627945492845960665561756900237380050320337739114937222692715636345829089022971742750975497841816680681521790589482652539674743477542852811800520246939928822189145763731846324657221289024648931687399148099267044885671733352094184536756797510551247165871717923549062099764463998166198147288178913216151413981763321707683229249020148234875195737760846468403561985525050842464738232714775172951842741929209903518935372911660933298610653450385567441423081564273457132625038138122267839275539394488317379385537074050425412207154034127084217300615381424425706034294800775550428346687417563346954606915929811701307971860847947436154534973614176016275979962289620596506204146325423963174288918311054000291798070696992896378237251211848896156990492511653866861708727175129743629232669035317239800711664336916352757273273019680964663040723297535426909582937904934585625428123881208162294614263698939436684681006337738069910841585236458607359914206604759267241756962489475530594581950179263984531751086934103867126900494224276800810684669857022045988157595957258035294079410835500711458127756501041160821464860452114868285466846677033681168740753966890869829905162812697068968738906495545558280538657098494992456740410755232449109163731371774089491724693292280219243313432709883187604627083249554581032445654578001281629105731324709943235755260023344512209169158809774752301507192585314852433760106795543790072985084166023044553539415733291732895468679601579454025049341590670709620736', -); -test( - macro, - '-94906266', - '1234', - '9591583891277388505525115654797253189447136886605641096683226693736396854292872290512151998759360923701943145747583511134137237540129219701865806527338039412393513087835762990942813556773080107716234535870561191650361302039829302403412946075446106825412751297892836531217239269776359674130746921131965972537264150037423340241624478540689955102073116137675285513450572840589026258095131250791322081023453951176768841489407000043160535726118339631576838850502482585592200779524367753458287644483993004333076374919449019351020134267799153173432760508245927226301565370359856673809842061641312175092790578128981482583891661097755340718832041897219562172618233303238094263205645877970358113993768074445674320377240792952208045529432335140630061808861188401135379799521387052163956136888910117971768073860253216476475927368994288414942490447092525755875965929318466574353873454174423568978107060092961912237658617656324665296966703692085594297491801246417796157302870670019421897078307859164701722985884435622838840530890375919184262292483249645237441871417071068806838100941596745962353204182500699553236401634245625283851805217533262792073996012743903038338818229229536055186386872511025680807437338096861815569495459484486460365583028341745944192156249359977394771788868182593957987578355313292235026581979280145300928658410955632509870162005244044559296175541745959995285799355003323443377883778100846086239675150873016131996875930350018015992219350113946152537456877585388442767668614805636644492157477034654015002200777424371801710940679802301822648705115099704427481311918749176783544920736529548586139472683949148040458809863320043994900963476851393707718685357960075583333452093866553065546077049928960672319740544152092427005399888194730320253239832076741315219908647683627978170933321554476794379260071113837209591838667536304118212015385101618506499462338145076365933116172453086230618448544984434420121504363011969733490863691026519845481227162596252154043336808666820679272401041855392723131101974634161808347994859566559136073803551874710780721574809835031749728330936601228289711332942475487049804198344632033302735878413333870324928721703861529246383352099214222474224938703923296131257451581782344657338446171822905587284519270798848617615383853637901599987735072168595913644523892204610491256735570544171294439722701186324784813173174483048007173966323269225972341862131385921920832169574095034230665694523080098106542220271445953212355824376796872664899930405078699681023392941095533624834406183151593571978375085934954718772261954055173766598828049519860162686382244143267595319712518638744666104806572606245449198069667116209595882863289884166226287944224244325912368780394022898051057039098547506174697498113971272667929236765997561816214125329832660683430329906332085061140646573555743366393621599195976267935743727788827183517095321230820637742126067889019665213164390290062070086490541490087922889187502866643165223474222152292371630635439138794711457873999619661458114893978180017319683380126983120641424939879059628457874620836535554946801030253436946381021247115406263632484804383695320385114124544559909521290483278475119817164333705567704791958463532021771160857295222557768598737275557446539702002377398605084666447155176033668026697232370808420470009321148824428418389705572556366704189822047227135423662015737971723144128915366318163252037686350939438961105050312976676967329177197952756021289597791397338470443572707715044081895964751092291481135333163500784426335086969222350790452151470682249035744789451673722795644580346446427237748663833724773055738574222477446871501122860335729438705137534047869725490906711494592485106885753816974753130866230360407926506022819960149735054814022037339465954340178612152040319878077106430592659196961703359784146025873205470608826469128543078279531426173587139642452817225181534576963768759115834369507960533557518872119645633087366816494975254571143679899649491717075104399517306160274939826782873377728147095270888144396760865832963585642969396605820937742695276189538284034362525529116594250112268646631014509298531366336740362116463524994112518288361022718725186733909161021464483147766958810416653193317981915259425065001767448497554577639274204071071705244125471084327932064913256116544625655097111357879218899746235180031762344942760169055331365226140925327502639728177654134067427560672144839015071652189807317452445009056094721496371835728117777604974208279421394708930008595905196768223073852631733496851110527349046730941946132098007584486429686144893021869768040494264750853862282987486806138208661684993068425524750265051353734028906190482450851078570663574840036302550770980899456380758967689998731148592509807498959236086788270504035504990430792437032016856376680319178405811261802074955061597795727228291245608975661248511105127641151300865259290562972594488780807006164810445138616615841618866683247778933343790417183231981709585853401070402352247880227834733605154654208405827367703397973124817867577312294892836600548995170550964519017755920491134728378033326750515727791786492541954821643732033152252733475994603308334780140629373474610355068194857748405815128125330220343480629589196619680550886899725922137105216388200442015479933602992398666447348073001184279416147051990832666558273496164807310852154387305610527877711252422415258565032409894506552122659357455434448999509546516876567873333914554650709822738555250110914569231361810681278643896615945548615899639843813666952141996624167611621492507842243902766221696245619381375774605289899874210671753440701163534059875806083218591213612602297792283259653398593217024941897584586879309412954558704641934429167525386399311944692329646781017786882955521326213679515731031183203986702444464679264883058444930210295590055606165224085189224526495039065334701181368385574370869084681514830806912736541133960881470315237742308529215400374398116689039427221492261470641437661432564644402005790004197437786314907560361356740707196128715870019180872806279505931484886218059480821987893092959069213150697966414731390314378598567994448063764696914845544937095976949556292692796483284851190274166372600687071534820393215816026820899675947738834985468497728922675033232726987359807157258554534363387708729838351923974285515021519390503787211158967755318117395341875443593494088249677470509256804069203968911906532856935833859629624953249282547694462129874921376210457781519780672138068580237523242109758156352510154248725657237885230051785607446612712455877439910598727422322236228918026459822218149591970911650199903977933286839068419271139224493809573534424910810569507347636018232048772842840705740610444557659804248321191219347571463409422539969701913590898411004567236097895765842127957787359469025195874392074029652861324112210670977858242810226625126442091294631154867160280576157087207127738748079837969738346736272907326954078228907240806250022030103243471070942620769424250383227664179624295113595650922927103176569104163069362275506704125229083883227741648535784720713916998425594827704884440884048570231868405014498867352517286315804797924811180126154783110497902148043082659366781977209563715381227919869341778767396699280870862522931948944127530770998030252387371682413803951145767257140559728875692368709218878174221849437349204586631919443118989273373652595227172082496817103834248085354242741398581443429002334727240172368808661300231451115291328199507370065934925021969833175256299351306328641830228271353568846058387616229810955704081192557684947405779884509699286099118817298430699433547211009079482595408740285359093432367204533672009970779486719368138866188648840163573708869681067182080546042978337057745453023016747935779322389017812077413454635572131138070447390064042098690495563990815384766717508180920795876792077075958862404761890064984999921424416035664890724207484476976948663181789371914701106962448405463092701988465606503300165084244328789019795067098840871060483436479149382772059422903723115301669510704882112896208019251794996975248024340609600192493149267102552688418448337310468569703642800278151785183841360284358832347643596421881526596665057964053827050804071884062288727904628572069704994983452228398970557246268968220658737939309295962851885135390864007109076454907858176227575944339250250806424963701992166486681083315296440885760692193722152386434371762373410590481977858473872297435270131851901627945492845960665561756900237380050320337739114937222692715636345829089022971742750975497841816680681521790589482652539674743477542852811800520246939928822189145763731846324657221289024648931687399148099267044885671733352094184536756797510551247165871717923549062099764463998166198147288178913216151413981763321707683229249020148234875195737760846468403561985525050842464738232714775172951842741929209903518935372911660933298610653450385567441423081564273457132625038138122267839275539394488317379385537074050425412207154034127084217300615381424425706034294800775550428346687417563346954606915929811701307971860847947436154534973614176016275979962289620596506204146325423963174288918311054000291798070696992896378237251211848896156990492511653866861708727175129743629232669035317239800711664336916352757273273019680964663040723297535426909582937904934585625428123881208162294614263698939436684681006337738069910841585236458607359914206604759267241756962489475530594581950179263984531751086934103867126900494224276800810684669857022045988157595957258035294079410835500711458127756501041160821464860452114868285466846677033681168740753966890869829905162812697068968738906495545558280538657098494992456740410755232449109163731371774089491724693292280219243313432709883187604627083249554581032445654578001281629105731324709943235755260023344512209169158809774752301507192585314852433760106795543790072985084166023044553539415733291732895468679601579454025049341590670709620736', -); -test( - macro, - '94906266', - '5678', - '12032817648505424732206470115984402822087851800458754279636201919240648069545320866560153680915753098175361305527571944284392752569770663535206811189003646879509578656245380134150984700793677615365069140988087774074093292666569225253766058544069550347050527174441848464033769865947958339935711577356378541412264423970226396093645375936214905159261610350242858917417274825574404844112579056015150088968297195170716956710849024033030314901530321313136125969347224049980779583582657176881341711446052030096202772974538698445525008118596374161589518848084436336526803665941965555491104046737440894040963947109593967956480178145670129677453883803551841426177253469183865084475725595826142523985262137749463269279257798034486481726137836527313367452357290671314328438612857618515953366030368261430360540763695870271485039165724885752553866509861096959097856524796407276935782076995718449804132659747765788304047343356811406221119007276554404855974610764195529043031625022180466201811329438874115924370207854394962989072466937684755950839558855381231468598531110161791599549283779948049180898253978038930131391965203934491358832834904237088198978460478436435260346993291323788040533668759476466237387161215852475434944660862309069972151382884427559495414208822804115701913705271785723745174681820409251541457004542480297333724163305849231905385022165131472866706690289906743159860846280981424473469229829927326830076613963484251270728729574503814307791762786013555601416538606549575141032711025523511415888723638864251522238403514209615257991112949184147400897053839753457149809381976922528684839893079020417567683858076689900826568207181631852815210327645775199600779525983840187855012090137702437886138818889991865427565806357553975294746020041388619646758784835829444515981357443648673117967946792507459637166782407266051469231502300232276219189698940875042523547644156383005262958119279161427467899540186226164668917413440447866544343462167108862890696625841719457545138663417647004060269444482339780740345497612893664834632640370620127200676855405941531569747479245411572674091251818894475403815473239183886002466157193530057684670655605573446847521994094849382549641374712884009164471656571372198449910168561787316766669347248358805643837182081303781837240736436136105361562692457596834668246060064085754181237451898863990804515605190388337710712867999191679779786712129894970664010407413944105206949638872966539657011251994137558113271215952893544638320085154429394938826746648785358611940674926917169614084840845838330085461611673093497785528104711054917591387941532664903919365872012413967652428893771254783514729383993987904033719641464047625904368835612214247748109590039950324488045520862407963337473558506985216736383673379753911040520601562793518299011996503309262568208883619152964120357680502143243237914460301562979082299253093538389428819917042632652200784610277098397358002737455993489830854317722387980601693621640290144850488960430945867613445370736462277356198969776749170074469142959139228103077704779948067569593268552335250360809034517777505978089487420438155196173015195413707500749188879413696451279508390758428449841376760780035529721795084992757493136169128293321086137318909063123039058397266188325938039949845723539644433753473294540228295834513955127390193735537175144046212555694020714759166871608060391688382739009845903946202459806666413942788393631458788321174919289511304789355666166018710631603596670860213317167734166889129692249373293565808930204157031991011885528221419033566927244666672894213270515941662085431325595906230594776340409294990273749504264542573465334640502232608314606771517369952134843645398223542989247175132652279714716937433111501880963356885109815217790196450752957228567594353774344623557404477791808889243706743536894781675724627289947304719225770725660654839527433954061516841146022327990899330817724998757824990111295998009049097615922407581255190739491092231346117657541300062685972295196237757295575969914209258890395384934110805224837375196790993957760232726873726409663790983348867817606845992238136671232375378383442128153562558993510087405303974930371982970935436148399729480315961683220510601978266384119209049691241779665749455934311999233053059017638411476295376290561801091208176239186699145687486729178616233651626665713543619439901912710580944645778155158797462852234495229231406539206472287577297378192253982740258520802032184319738335496087808027150192808403729360390814153726899607792522414861087778808864723924610633595805110618744865362177310122714818412795648247881041310195803062313215902474261741174952685814591966714305480767184438698736320248721848847642234552533028696642298731293921638337742568224929679203340715151738759154672955264904729487192815222409704216298143439170015879950939045057249309073969228984931579994969781518397426907617306970452320824844550818387028299796381307177696815835155244322539561008715495766453539759717077193466845576102664991398263517768253493037683951482880594999592487164043876965317780003505760527667863680438637377024026769527929551980088550989890140816338761108689882533404008958689956441208348099517790655163832888672441196339023333523558262873440940381150551323449813051211874782355328615332116487157592812281631495362815861059878771091573384226171301604486063550985885547526084873950124641753676687247950243102682512625690242813329639053488889144642576604385864315139668920318181435129690631047099936094981891064896430786909547908075022480142180945007023530760518540471631799916726591085967028615767603414815858484391191419226449103172750734862583321173181611826808717155895467441107144481818474820145538915123191086233889850661674240080442220814781759930155904531817862470486365345886110364369758405347228549431644962312521692584793216958186300617894642831369657323204177058526995631057099851113254417633669886363824556236862260831309128178167803213227296932516696703169947834651505156750711821678584827987720266958112228898408860533624224495113943886752312598411859670081240718595741432294942764857421091909115884148224555916194806655809926642996956901825501253612530105826618755517164012710830281242388235631527379824843157390117320858596018324726028114634513731910537333745080425512204214923714850269287802358237211241477533384595700504349352943037853153152826576013563379638817785556868194091209215931133480115980056464675106593427706835334947158188177836411830984886508981465689899139213351717298512840062197481925426346012965958263308687858310254839246643736356288094423514700890181531946170936255870492888090106543963957053638462537602324269379083493214926494662001476819723144975153483394390016211234911521305578087159665053195506910683427552629512701423004114557334590767201287380253575889880716924180835742565545587297372230588277744954790269429956487792324583964844408254629753937326834163368789921452639360922619001644423905992054827955523551707437217080870067136099865977482032198335037959434533270675522876697240093272437334734369226923188059535469846991641709332683658104575190444624146274210567461025953960170291512193215781838523322046313242892959796365884825784776849648185822682474064256026698235271594627736075157465861135739641700807125348820678293047370189781363932882694927128285410177891393529704049003357809736578523395638279194743744900566551317265479571829718951144370147604490513174682721505873577926782362538993812368812010097486662549501136198241341798084746545706437440426878375892211248824662555732459007737499801554781654267879320262704068105933519284285796739713621966126525083860893611057628869197088116263187425689411609090653720984344418988835030010895382016374020344833711823116640310985731777663607552620413465337138339866989132413420055538428253299998808303388845963185188581487436300195905101117842154869015140378602684126069213877902049366627282585389279538334206573795995374258165195704570108297045710018639586996443344402990380550529595121860257242747783754028054652596757584727739810928998066179549536463070344995795834380103032675101592624345721957432323326573571256893898028138781425679040966486628547984753574864434930008117523845237304478890899718331660641419486842158394473459007167484277217322766481893195761391938895623708651566392702159311537448090535583956495076752757058074862172390454533499093851240951296540985779357629233421157703016528130291156343737642593244088633852787614747817627060006991669568592280723672383298225466281340956636710431940328427911743530915134552931031391690006021236672575108176444082447291342833803642309708607039528118937917030486917866538554824932145847913873347906410715580065154707297637925304057208331186121542705437629918199561558440077780020149125928636524680160377906904253706618745984744483286494859496634897033537125257750234158366566522768726012073504864415325607039305152748943100533772051166644314150037384337861942612593701611683871218292642963890517076695142661403572711320388033047007398654918216722136161411678662937623850123091604556006551841441589614125921909593939770390437476075298171895573919863135651088828848336011726492799841320111649935389358931258373693459145057553136475922751342605359538155293383583876955561910069358749936951011082089615693841896629336961254394974036986721026940350856347077152772939451280308399363104652576626172429793776211333913295809413213919318285255196490381055544205313396583888277769550637211217647203529389040683316967313521879297011278503165986866646581137787534538214235999303080897442666172258679022325039014548620740672684311806497429047056530576223713193356973396804439208879107248745042555605441287111013049709202762299259851107012441701468738419926890133556245430056477998293002461917643271629591853938120614647619772495115562085600504853146424640985096824494050598829781714618733157799877227971474455616632639023850925729720213591779252776369176312110497936405970870772189359848240927140061006848080799072830556306659756678997694657936924990345096410314626570672149731543628000558026533834459167842889970614149005288838811229513837405392153251553605330473659867312295620005340633564023904208178972115034037935254190823029327420408002622341072381223538257497215682930180996569122652703053739471871654162569414951520531206458862671624276235522538318964461432849995356820683233465138675410827490596964352422796420736525862662409202276892082905745273014755041772993819374747043291676296825571338645605019288235828607460219104472171905393978286058711994994075946946904501719626129891297785262794903831823520324741271326470009925340248044413698893160087471101115598827156017322849926448246890250940872800969912833939106037661646340854638183562189382226457787900923987531877913431946108694947652717492923066187775746930063437977519195800521298729848366280723108648799156318978065768015360592367479405252285966318000015191998608772683676758058031311468294723167697582272502760859874036909801930740974001192058591430098287098021570441654592505727247768282011756726844525801256651444301950079120380718219338329468008534442846077685713544194007524327955071955226200530986913459845314710510719058167265959825133876149104200332459364223361260375456263610906578083438476313348490161343553564484692187424842603773823747426008609267536178919597384345623591288999415207111940819590820240164261067200326676758012794725260339664703418163303398007586421287243859016657962176274532712513078145376826038329107151236318002243613099209970831731135481008172826345298961517973963163916705165676097591487481466079223465813873607872273761995059993093591322303896613664321628779241192911035846341115545622374501606127977756985292882117778296500478276339993749813331078686903702537331445966445686036256887898585809843950252338373839157713280364698259134024338989451358780140559424371687870519586950515334379886144076554360694721608275939343734737390935610438901882220547279311828445041103639111103188607674601360722196695674871077543938123944828376247570522481733445127428507577252676752726828669296273888040688955392452214259080886549295627930544496374040482414174429554699068859457610531632589984450033487991393950194379605142460240622750964605904319347162317103632880464489765441781176775360255307983114046972917021261575999747919513175356289269738252254493902081778863456041493700800804759871388208118144666431845192191907729537903174959385672176640184810677326710369561461912187493932368918706337698762794615949381684820435117964874003383886204354335841513328726838198927086809536254198720567097588143419818644573075112705490751622292191492544793418111741658483532767411666600528233897824313428372479855025933866719301492980684042893544902172403475761202059963960896638007212043160771550410552889811065116740233744236032304871579001993160935959555347073311004243774883544443676731406104831265297661674183379974269379741288515676564618943733469021389351199332674318818115012130962124777380484159115171369334822744164229342075923978372260068788894241149239047819830879098322853736363606047921128478685310683095184709943048770806054769494926160412480736093641419077309213991679052703634396648375610853612922041643781461899880570131047760466065993555093987696077930050904841973329976985820417577209060155514571722895551726144444596204596782453047002156424345570004197583274416101355362390738881463523630967387072211376360805282936674787380880650737793203297867993622101141663905879536696169691639238866186158654641243673999077254707876292273024963076334728546666159776798341058364962760500123648903436613222992540337677988477671022338118694216304682423334130149852860681684099263517683335157344038308938179479603858917811593200169277994326389000742115999246806304045702432487140508819529399245059884575934708946209516322574789907597746226957553035886293114377154459544505608389208459380956440963140789343305699658278203986551812398932069405456026560759534279324948812804513062587167345623977971097453549344764469259507711376402428457076157055436430677764738886674081844106383742912023140510418552281742188746389236111863491148474361612517064934024896521322519834851151242772104556306598929440002152036519490819251376805450957184749544824693635603569605225972053841581004501584100912328333976003102107491085953159226069012834587327259971112025925123819947881840747175767809667062611411996051112013271091350150777864798314871955256044949338844757948457477116889094191094382540558054779516264683712607043026838398910328428087833751980730006443119069122334166099941402646601365567136347123203738359088947443981087204456279328714404539183793412240994826870342095392017313400572110318532747843060607288706258394994682842520556381575601014199010490404397191138445152855809707016425452959778664359588040560748735412597512323836013768239677434435239189168997928071347187463000837985697466045497488955639372562589230908251673255473804486520327695043897071532175037437036938183448706068445520270184271860267785443607757449987645862550853844492488331774133732177529596230056374085739368318799336491781716721031643253122590074871792724944404133795117394685504903169776472613579323786988436816555044871147023821295375315968422237070919604915553260798754019817204005435917338028778866898767783201988249690480208167510788846166868446591501548151404396048081597044050075742974387127512894683131544017091983972922897201447567071326201918658162425054687848305577141613831948331736546313547366384763806330342036329442085133559102820443474867650075586800703988545083847887658720938137520387462853564941611748541059186958982227681935894334481608643024722381659381938989731023292291485815605912701175709672139292877678190348729760666157907954715630362098750256936461038759071141133514628511273752727853532279858408268908582987443368819679334383388270166337798654040644855690261540077459818835228437887729301076041005381936867843411337332815350029407543350462675437781165812720616995958519407473614668214152449569347793047763581660230557418465248972034336442550080954052153006780131714480535397523095413274750723701383225842109411649460720870423187520888470553057940395347526767669497718524603967849112705432812547718499111843247323011841160686418751692868907882025078560674843768816179401584803887200747810776387544791913903025938435744852431951915576190055048231754367790804864233775987695188801541755557892125771674773775596365864929152862381755401283073853655055425091448611697016439954534260814030388938640509188143381711317813476900790628429257746511202468312957230036100116864480097621669013542313504580498125607583068356957065062879843861421422680449125994612477774818757161945326684776971564527300842862017927612360118968033138171953084120164381524148059624459163118084096733232992442581634862069037490046169948238393108530288105627559374357574375901411757444196980563141505220137571144388964279304678461638650126063683382309278978344376529180243251205221507357892280444330744741037298325319700933898637890602101615296398869580920345296280236271953557041411865760773333961802153204654733800918538855539998075391359632003872695291240543210415227135533202642183404859216781849310678370931836038236340074191979283348256435037626347573331738056630737544630627819667754832890022502410501605907042038148659166291897056811128443400490554763520515617080334010077029504407741614050704547796928760915765587321003086708428633478958994497231881728742148146582878333513294577932133195398397292515911616512890368305984393578729868207205694140862127741104528308067361504231110165275192585475375358000676577709244330704876174208560189889742189118009170492691256513264181013828227165086680711420434651576133518693155463307951273683890278139573807332751907304778544307753690835516724244324828301915566152584064392368154012296367388561296655115159377964858217285140994654349136595083503371058992673764518566714682145847493882822893394347204092233214651141128348419317600574953305420152824611858556704207679618775670228729011916634895546083736101005758230326310636673429185051800939052184453293132762586281584909086427718838454160054742974280328396661361347295963302563629881389597757395692922460506227719569272480843843963982294218088153904303273847479651330200041676283719440322315419856051041525940239722748989045813626337663435654703148317669134876847555469792411025033420364193061667681444556983341506990373187827551963387220108573965968914968862001608003924039023517819236072227063268657970009813282109838740945014605897718935027854417422516891716032864362714644753952562246051636958846719430334197522545309124095753712501839140881772202359462149006967535743381987382494199903798783450128864108137711379338678990406261945617986484478017729513417966059143295468448727905734551655932034516014732958476725736677666360745474765405553207731525120976743153206626090160055202221435671053558239271799027644260676893678561236876461169942483963790905593236778663204622182700607533615177816293194243328323059827764195754067310463910960166786833097658112569805863287752396504825639025116157475645847961748673868648985763576921316360028625597643145982378614155913337308072899028630354506317000731973048320498440559655009741229059616821075679153626408071146949434874870710442443607598092254881233946034011674932649197951588391079113646195367873645750872572676353074784800670128148448926212428049339412055475920927927064266795956572600200498190491828386978461485683642086665791764122916337004769909968407222832293743026188332895081447303907350456907104380292438133354568556580913923940135089837451503139566900151184776483065461722434703576835856162451903500950263460660059609102492532142956330352718793762144273337958725209863219465403332730360337994136681320539676141959170028609571573318264331511603324410628374361114137620410932826988141316635961417071437490827691742173260234374302730791524687955576187003866752766949337018264318503626167264228405496153334243531140332510516296899883807675047755079172377866058979779109219361302539854229267521185113459426964212674944243036359083834041693510700598946606285775592307909800370642066904336886030146957671455743670251078744477019985475848795376334708946576839355982663342271782974876971670099428998708971102417217050194310201496909274080129838572650933663158961486164318754012103629249337765151672364719569977796470263610483643241743081238512099346318125509126340730907301902331865609410500322101548902016145028474991172896518663299753954359738145858524256241079822888388025974877315851174825234099588922307983039849059328140405070220292462966857742931975247086268060742036088901447914159791901545682768198127862624633726084182944519076169341611788879344467332624457235181005489161468437468286277927595231710889035229963620976542808014437720825245958218422545401854965717001947936025069441351490369482405131546123008735270958799806732505582384557603513044063735545265173441077422655347016647100822557881227410017918031724818941284851218632476074548990913121757687254853114905647152161232816453294063938585231011698346476850219902049515565302989770984364797494877746871059691242951446947928616748412677311316689309276924328166978373287156127637754250091827262880001580912029087294416597708081303921574616792751138598416609282955474549781919323050366795607116559122995449444513824012921931191554790229338378408917767888764757481247942357523387981462036482918774775255481502617812032424350337757705134963581392988233010269239543026399000590407670292541798141931143957825519431024943808265104606375893000801021372156629170649936482063505577146268662962099488092098200661611049654157290575516049458547343584333829118330105341165469101287828518455011376471874002702126745604311883893741228949110274354393717306210252780458508823091743222111041747254441747473986354767554852139796930960587571954051842952106734815850369832317500044882713313649500485928442503705962330735475241650188479077738536979346401179945139932535355966728284296269303465382689387382904506131090629101374506641285879526447951961592499074899803465202603048622508966269246410248303951769201230670090880245754249900954768059240928580835677018471478117764727507460788000454066509256352049419001433619066501137325877958902450951248012775946853069206507022910965027828695344876662390444745223071764327986092164128821369419529923449745342622529520337107152499452702345241141322434371161845076945400253720116974932841155231559246404477495415318558856170762805541331599037682445748096007207307457259420504514213233031560297159337458934773052943897370160719593071005636639052337398910516328917458761997763791052147675868492052732846056244343846856562859110918170514850638431897116103962577287557650861624128410941073015672545799355272188821573142146157647220592136501403389440498405045979220449287529240951068425759059315541517416653195735778257997109940532355650068087437125593263015404801959966170854247359416368888999714143993665160871834991848566207054598521044690133585142761653289736942697455812090483602711809497731994035628689666322904923368824343322943897077533662696509093532125560433883239720615037830617553062569400982442551469212711958432874003095252511501251544368163946986793533762477996739664587856894977815882349958159300266076187992625866248371863178211081986479246265805496439281433789465210502472287353963749371542009248496304898171325225431490404443696275192260731587223678231773234700501786989060062073372663103468326762818735022839079304658268264383403675611385203208802610883443153396372155598085767531581987651375303196560138048749012301078065330371665264754684135929975327450958445710569685713002470385735812499009271125281912305498904570924803427650562790575789311044993863517834700777416970146268592915939173835339588498234255520467622101245918125290891960721252962341466913538814589814214723753781664749478425706364352461070224233708179564135246880492730639677674623872309076224196922090720446752424962016499908060928640446088590198190025780328393379622363600793252241003767266825105789787022775751765687273282872681784817235974474959304500106923652827770175776376057866784637584218919587715646859185759124581929407837290204615476399831255232642772149604749965883742550558896424909600890318701200878005426405783690223803023797534308676408970377177829432708888482899871770661919987560426133634342816194791652942901002649991930864509397547495136799464971411961885951448364705084776854218557154068032421447791593957493800552595011736497560627402048363722641737191562791467192752850831819871126942696603819688457632571061264341307436496659871052442884327358088521230434779757325515620881755317489614893979565115465466459134952019342787508889329177160466567164607203135727175727007576133217386625201585733132524102256267135974095667268967387808616588507490403645684015340306735062054190431238197422650374750608082120129477961774411707229963815811485877200700501734026677170462507781454324736384494629139100648590234634063450890873793218123159652262636940460561659812567660405111805037271771919133677053378340571763804818663579984080144826950600742568620996921074204543790255158895558727569627833033922369940173618424508834111810651656048535574444567986963711635689671493979686086392051590735412326987468072321026945906095052728783747681972245983868013037928884763904299129826301670561248217272709934758302637217436483609049259979017913572017677999917451517664593806401100830094206113930664869181230286977905241453163705128560161844356057897016629444587321825339889932073812247330853655199279654850681643123911145550445824784071197446536929226480929787125781620877835455757799725872429412183788180777229189273296533362017032457858813870135280647619436731981832381160911893129851064121020987511004669726225726728447523886592540185823062928562680797115677436491664945960425463840352618701257065715147975721913145513121975941816861627415802916250662475683313221460810083733560259082176304656979800876036280685013224264755601477814078188584904150365677219720532288211268983178369847544314641858955739505549156547927819249161988086454580912459896288180831839198694747159727783540431533139780840118503526092188395999937083438859471424422484895173339353662013418404633914278270531257635152842306416202901968927515006838776193126399890861893238570955140721902636602451481280533397113331997181668368168114113211417441091536660280740752073688197951869383500740801485250371189839664555255637862300294894725338807388545090253060968823072953675487974449697590292547112002691372243223615249165249747041660867764509155511159477802075808850762651193636610867311554992969899613510446151689019965900866044828778159525923906714414752885574464308524982926278589922516043567064422228451889411464404645562403027336145425521604775172340420217961207569279554941274837915390099345785110541869546066004279176509714969623554456015482986407451412652305793262123648552417609567710229212341687156454311883528279150390985919008321641915631234630542109381453293097771127251164835846456017032621220535159510911806712579812990017904201396748639648986580416830392353504059649048195263808560060144490097812861709892171321718078141652344634889987253449435365479232110959791057112787715767591956424199236727218939549730947807636035618617124214592974632640888278642920646150269913678711900700105591753932021927544248495416598915245127805617973028286807341594473386206410511414428389049099794186454102765796914905933255458663787331998410234134210186357410895835541247415216366309533445597853759036910747535179357644751896549954802762133472758890605527381638477541022802894735646799360073180253868675653146890507692412609328780793399715860489456638327779713788516054313521050756108383748787190630773384260645245277015038626404267544599526329137987727604904731562738505220497843816310101861170621100872755427778464809073169584368881349788891479628643600529445515580370114613383736664314978973619136220173478287784163951945648158666739841536848953175419910538486514713806203315648665785618237610350582300314779025897090284284080969250933457877228872443367222249154142248644276474288044127432827952859178595732895202190015471726020796066245204963376906354394976290239211712022794927835141158864526574570946923047666699485949903120984263356978168759479817623935013795014196775910220111958690782426346191285770042525098984695899814199136259926824361465285823048578317155487790775485313929046655222874042698387928987865423117119839944817973165334672655644240394784576751152259628370824434663024024418575011518490382064521827913667162089667112747753535124207783675418967511974700275667309012046788487060329223754816307592779170924531501164340119876000139327544408024106973184674625473383812276564724893335841539005571654820183265759775079589751747626589104877587523415006319142401438844584683685256184472651725051979384269512266601971450685653366718533020065953355981712508860345534161752796241189385496331101145400268056092980486470369444513019881534614061799341395392897417347975110433595794498856720510672308772750213294104276272132667497463492787282710357371813082428478468377819129538727211815622333666816660354583565438907819881292081303387043386670876926764469958036489231885191131050114302131977936474847279924851923137714263077854243985023606988127523596289821331500111059950584764623037107983656960989438380956968393260575271072778863957365450795572899629582643385628639710611546711708409238271955614736601631291370395060012833231421354443797341554577170376506036564132217557077652411894117329603768900109332749511859736210742285027560130448468034446432758727729638990040491574996250063104797738677059556962784396811723371443252662772605997510646452758982125426031044458649357552995121303204693338942472794723310009789920455359278131277695870668310315876389946031424494549763773146136063430889417701887448847015328003015451499112860909942403248329916941358489871131665319203260702546158995642204910162911659670018116940727018797217171686323023556118323193198342370803796953278053782977187454671829418430921721985095232819212480102940486000736338657164939674716847410850866338919788038362565117722358348690989096737227059283378387520150072310475969531030512284930329368248541131113766926569221020923296593566377299675247629189109056398144800021591742635347744703956072123890797151089046108298526010507197557242777201909634714422471270603537857950184437259093361956113283048564569574122170292703201825073022983566835511332308338851334507372273081202885655714787807833951944184851958437229989794757451452736941245634812065844048175235449024407397606058411010621436622691612507865446029785762584964939590202876090478392978007566584355372687291804000734909051848660440791202433127588453190203200783903284912792280548420676834695155901857566765932088926634171356382407121102180333281700812579308596278561884268236429082157465746397088329202574170766452511505505609003041124950089258440827042552762430618486885201276510552341532342351164734524285396714462005001978788690975960312082731929333386050252112006807345880064713266643891024391700346350471880262858040712474770262634884317585612572195523131314179386278947285577465324615711086122333531902738278585784646020600313701514942125391959071309667102965885213697839889156290939743771636780743647494786980566347580750783699119643179162204062000548787439490012304199473697303589997900840621652874808426421326071990248127528436949608115779005494179734937511431781806145857785045035166485825750634750296960306410410179563289780730826789234509202931820390586826950654104129396809093876099264731036820798174964438055115624044199738101662825807851197445426685021856220844261848759266200674656511060029362486031624820819678918152181355926111923461166345822665086176145950743789341584980812952752231860843257985965288802261190266665922655937859396637134691957840093532444525473306658768602008060074798781369928554199058085681741549030727173827517234927484381244144270371887360574934364399214113609316363985218988683805111173090608023338304021000410004993333783004263450282560060958459050745590194592895933947062092079507573081523402757767724788144449830636192589330164576778830549052766661774876685632674136307814153444590770266999239828355457576813955421195065159397418434372715876860476997930972151568408519046320497117726447903332629934498123201460718775034315147902361476205883702162559670339483592737874161365824447049081019047867077729938161516575462820068029800463721563526770860295002450363435919771658499908957051051713169210155056685711478948292601652283703664279729412723327993385676972068945177529247890734902739568992396004082005895239640239584914895675194441732990455908284962508388272481664809644013695108530643590237328537639688567194704667459259852194847009346130261141412179411299994375826249494565666674099752312940749960678432841327379608811354294970105991967067932527833097758928415762643944723789054971807292766811411062804902336531718448905647640615296706335520835436041593386648611858094071235308269292644418143791110200993361422914793119640919331990182443330345380585754214640238824260774995215366915341497235208474057031765422776345411042327893101949992571577825558691897895422945443680380208657578495349595586606235401227143323363094432958840171215550050203924175856785197077586124718868813101246599573589030798669834807255201536300814627715056943239448585159116823195136012406495891984611338805585159868346247052637564031114665756371321951326231045738075829116360629934323624216434728253094934162532761445177538547165024471725562255682921126585840210275028026032072889156454737530566706272562834758199753126146886585122828302440171763025247744940890748240827209734322451822354861070551316853275578081420600654807730862579379336164296300651251035620903073641444759072951433003329108395228654468968443998724991943750648399825412774577834064138787246298154005871653201690041161564805619094094950177728315165333892502449398614595846310753261175601850635807705775203998921942871973931019055845469784764447913903988508253744480825540367906677867871057567478493188656741810436755808948879038430592843598118575241573451984420451874438273802788249941071249303464372879792957737080283657705694830680260355087766018017548240826889393233567613079361639516134438559058561470248595710630583243521624876087878849326799727058325744525127686358697175227126042729704763198212221500110961927927031953451726345983879650304506115735253749823992717894744913635383053788207368902228723257035589214660773099731574328578894614609958412257841707173544840654053687963529161718339377820673974804275660397594495763320761934541624154607081082091431381630887662852444276208094195753892541482888964133078632756060019952316521890141964819830541862502886279942861929515434864567266354539499955976735355894393495991004445955069390234829281284926336527704287398385545271066278910515123558177655155124804872688188708038652699563430158718539676417362165324740950301161676147226987091336686975730078772316774484804082212792921345388911884307584665906933970070288913666161767306556816492529686126542330576930427952309859851945687695616787391724886208606078219586577521157997471925755521830252778574776276558662045076936010197431001405073169538271205697390441457933908374685337544753066892359751986805458682161120599250577029450471790531116688637592044725816809350715401468061886209608998308808761053155925047485763330982810135796784437153235684378855933935608225979566539014908874229318867856908106633416008188397781368955225608754496472366002973989622781331076327936906421333836156329940767987829949219414282739937552368742050095369670510834581278968845142676270307586970560344050293627832921967047772968940770231187440894414891611957992234348384361908134992564366682665696510978419367665490400052255968546785818638881481409824051219338973454619317589006191281840488521392932267525779747925510077945960279398495734167739330399574628957203655424637187995438121309889157318399563297897718347938915006476879059728332276590034174776666804805807585137415933903539371546508657211772037063013142093943376911484717585548985036753668986990778732349370860695937442389869679255309585195314500199898018163496806602205369815418049524140539038443752983715573321216713716303309876573223472073494658660387196143966238355254434272031875166654429112534708035265585042313178039140504966786200157779032253018379775395031624177802409362800776274088937204606438009792960229334141357316853027529326270934813060617513040349194939506111829667596679721724554842338458197057324866302813949134291966549465895240393949176765935059682165276533388253260395177273452448414734481084363051946017495590145528378728694589718770632641502417259843086559611204202453814610339462803726715365311373975645333786896813006476033470456391277472796397664318741782445580539265623629643719879907041630801149589490342214249683643075413638713825740975202255710524519005628410890292248754754939152754157107953000785347651731062707781298031248059008088083511571893341447743035315052308357772390705357815401965655229378522974863831081531326498095411458206016343526704502197334552693425313951442693600699979416793419044571047950054591933973470783926474430571876070606494546076496652235432486913277445868254001418092467524424087719936981330245844189018050669626927477561635971967675947936667840573264315222817706208841363096504161459299455789615473844664822043191643886065072888244114235145369904453860898233956764637008735231406874585372559803108174040402975992668970470323458706663340829004120177247777909390407650943557103557176164798280730176947885600023350422406684015217003439639897364954618944020288720946937413542886098604075227026482788702174057857719036625711012261058982176805769679934893705049041439972935657555686872759565537429136163222780629831139827737682328273538007173604361766686339194080863757502388242360541635097206494291599132259373964992477759699130503679859467387685858969458881363954404384016848950761974795313353392698993567078740170008504367063192312102584020548165945222524105239691877251826775214235888083623030633684703867930130650125295968428623742677462191715457239299389032287069336032372302828098382506936703358757555827103340491155787211743066715263418577384309801993728612813203556766993754656540038816495840381520797028440484282254884632112821925210033546824602794396854826423202843726689970480869195071650949154727258460224485143154709172855637969394753939537534842454461823870448127360033316087549390339491932603424096663377705656553981384251344651715053403923964417851970419752086799349480032265992581424000705801737101791445964258963875786190924396690033057790178748531407381054411659092462411237526877645210411022521678216396060020924621034172725054413396654304600511543838181495559908429007654906632941883397253075597857634654462449755501594356663254192887988476758127961551318345779438588059118960711018114915926214069348039421926460721297822408069255012690250178221901583499188663372994201653644081755046119923887957198992066054340294114974546071159657605660183300202102344309467802093991861862965216891368515339833603657760186751215707978850910662690444513903724718434232835066662847876807387275374320546636913075891542321272611108399646743762333862252602882930547232324311990485665318593042026396489306780598510984447945017700408320977028919172057048382181924135570226760960898139417290817645998917756855185172967724992933123052909118247462398492666928951967247431522756106437050491531797002473836449419068540277472068963138393177448233961148030322348372301545504016732072510497336139578845609651207819365400056853303027235062359420018098760449076899084941741369357339039371012080828320780934162749276755522409809098153174862234168142466848375913203535996417859932173938627851656219636450621416451865792169471928789091851626456347026830292184338577370915000158169528450080894744186642838772985819834529563611933373632440708524703027899883434677586606441445529530405836184308602571764765354456106254643446906140012957381572512463660138820345199166078432074790037248546139205726353557158090656959024185745345956546890947422882539337183883406929169297400044137877815260349485959875657881972792337911693367611917919131915027920557706737769810315715359926487713855353321793871564010753738106086321230546595044476485010200470235649943642098272637082343166210803794993910337605136239806876905139720151979070575500255076889855737572108112919425325518445248006933632368025157148533351689787936121880720836116653840743617415571493745387797691042574418704937861768435997110148267844022966899508273305125680545431462825242960113760480968529000760808009707472576440561766071700939806743526995640583592236944120793230124851216017592161718568695361629331621064836815339177400421921220156618102527651553489597482005681543009594232948075392858721451225712296026349598054076571694498983982619415761813379326410749885515537518666751789095081260226732887008501369033072022423311241991556050372244766164397155244356247926874588767338935163683327933554702277547935287703755133035368418595728953591127644725043878325718984441974471692217612825126396314128770579712175562666092567978624210753782825275802681456221191328149519567354816438303073809218496633499815268520022429717046018825658842467015385712669468265707555696525948903227914864246346468870618605734062682911322413808861525616756567945364657325139882917475692209277183304968538734947428728388582797185751925085125363729075173796643775804671009928949220293268670456975658752584332903400349503949011586021175082326448210272758388252815782194585442203117090992668634959462750022443452546012055002758055127454792702255890205631701275211122693794920290417833369691631162589900706279105985583858392017695508708913053733434385675958920310284847781339811291863191093386084475914087239356382800972352347223372355619360570354411451544244307940032823148529609638296958288902010391872278763245256372127500248817419151015466871343223054572424151488837160849087690844793830186151432135847711240614541446439183938044066695316622116741046472939622004638961665608819717101930135624767270181741989733125492003140924411241153224900070754907516184957543551611208022204023968376636880451822691297708293688894074998217185540931850449663735709971989960908519813174658217406440733137654410084264390199313344416298280201059159586221741529060546858446825609039282323617534880583845852642034407748295813317970457691956263225675641685811512670217066518907796204233575773817564814095574905621916350619556603859001230105241016047652273704404479564336649968708539745125105915160022240368627482259079202336430778070946622175011973214230565495684814465576107906033710595350568611341645767396110859401880245617579689883266256409894693280104365291970684730005887925438391662019569596571533373614115187189312356643389006800187024689032302797342271128282171799878713212117329036060371547786892810406560993783700207922558468011335587906261901093629494719347614610784908347727972664981060886160896302867201510015108566161825129634975425024272081557002265941815391290337945136518047397974376034831138219062938133831604578871761305972624279786410979461568839594456833208172319195856872204542603316087926558321489377543723491132201816700479397540948217989075370768230671731249702531673564543406062253586483721876364885815656468440728188332621030006260484399864535626813077449518708844252479808421884652431126530875716970356579193081754594545979226680522690302736699184607929615623142663354132052863597405323796639870431453066308061197943832308479553993128427148101202879692518240366933913835269757022542403389041102563931777385856395150760422381552306943437155154770876052232484595793376372779715779096638669304485249549423986081793893310670696881891161170144901546778001550049111602186286345163199534989815372560517348564641269606632792272652115204168983118001639477232503487517975266466538605885310375386323449185231709798124778365598533541593980958124433491037239259424061787818955206789639301137224039378855362946151869759563140264720906997750013611877360612394880182302599632772460731913224265247765843851870907483675299829361720529022209380906861000458689821676603902075564791012594713699959332168445898305343858211764958004751287406251595999467293204674470870715167851421656776355939143657993736347249925156645471605043233097281630642396809038021750687833536173404097614118680059037340312341605883455235067338752800787033133391707487966849528493075647320868840934380554883195960251773502083727624240339456212211925683490737454112277877641954542607470029658579411795883383494012636284071606370192505278671353911009904407560251382987723241502706898676119014622076654875776162540892477299357715761700750960446391506332058899436675190871956939800022687432780180818392178709073123353331373011315965680280896735755650091675680722007667153708728485188186965653450591919415129897772500704531083484204256009802043625565542287774299566636078316295125113411325583706020566573294986977164698547137703200443022008505653377365378947288543862725055911788727943036314460020086504429170778872386381956215475209306444914466262735267509651875004139279370893320240127688827675054296294093093354920744403327434214120799757340314496705538078219995180518082515428583740839433883842984823268317117814453641785347046845620463915826027190815790559731433923858312882529042132987246860789417898096245935117545754705002593969747758470845487352156660639391962457416095124403612942059946284579486042861317902103275464677157584106545775551518446983441064825708631574744541847215534147110002165755331087323942894411304556036096', -); -test( - macro, - '-94906266', - '5678', - '12032817648505424732206470115984402822087851800458754279636201919240648069545320866560153680915753098175361305527571944284392752569770663535206811189003646879509578656245380134150984700793677615365069140988087774074093292666569225253766058544069550347050527174441848464033769865947958339935711577356378541412264423970226396093645375936214905159261610350242858917417274825574404844112579056015150088968297195170716956710849024033030314901530321313136125969347224049980779583582657176881341711446052030096202772974538698445525008118596374161589518848084436336526803665941965555491104046737440894040963947109593967956480178145670129677453883803551841426177253469183865084475725595826142523985262137749463269279257798034486481726137836527313367452357290671314328438612857618515953366030368261430360540763695870271485039165724885752553866509861096959097856524796407276935782076995718449804132659747765788304047343356811406221119007276554404855974610764195529043031625022180466201811329438874115924370207854394962989072466937684755950839558855381231468598531110161791599549283779948049180898253978038930131391965203934491358832834904237088198978460478436435260346993291323788040533668759476466237387161215852475434944660862309069972151382884427559495414208822804115701913705271785723745174681820409251541457004542480297333724163305849231905385022165131472866706690289906743159860846280981424473469229829927326830076613963484251270728729574503814307791762786013555601416538606549575141032711025523511415888723638864251522238403514209615257991112949184147400897053839753457149809381976922528684839893079020417567683858076689900826568207181631852815210327645775199600779525983840187855012090137702437886138818889991865427565806357553975294746020041388619646758784835829444515981357443648673117967946792507459637166782407266051469231502300232276219189698940875042523547644156383005262958119279161427467899540186226164668917413440447866544343462167108862890696625841719457545138663417647004060269444482339780740345497612893664834632640370620127200676855405941531569747479245411572674091251818894475403815473239183886002466157193530057684670655605573446847521994094849382549641374712884009164471656571372198449910168561787316766669347248358805643837182081303781837240736436136105361562692457596834668246060064085754181237451898863990804515605190388337710712867999191679779786712129894970664010407413944105206949638872966539657011251994137558113271215952893544638320085154429394938826746648785358611940674926917169614084840845838330085461611673093497785528104711054917591387941532664903919365872012413967652428893771254783514729383993987904033719641464047625904368835612214247748109590039950324488045520862407963337473558506985216736383673379753911040520601562793518299011996503309262568208883619152964120357680502143243237914460301562979082299253093538389428819917042632652200784610277098397358002737455993489830854317722387980601693621640290144850488960430945867613445370736462277356198969776749170074469142959139228103077704779948067569593268552335250360809034517777505978089487420438155196173015195413707500749188879413696451279508390758428449841376760780035529721795084992757493136169128293321086137318909063123039058397266188325938039949845723539644433753473294540228295834513955127390193735537175144046212555694020714759166871608060391688382739009845903946202459806666413942788393631458788321174919289511304789355666166018710631603596670860213317167734166889129692249373293565808930204157031991011885528221419033566927244666672894213270515941662085431325595906230594776340409294990273749504264542573465334640502232608314606771517369952134843645398223542989247175132652279714716937433111501880963356885109815217790196450752957228567594353774344623557404477791808889243706743536894781675724627289947304719225770725660654839527433954061516841146022327990899330817724998757824990111295998009049097615922407581255190739491092231346117657541300062685972295196237757295575969914209258890395384934110805224837375196790993957760232726873726409663790983348867817606845992238136671232375378383442128153562558993510087405303974930371982970935436148399729480315961683220510601978266384119209049691241779665749455934311999233053059017638411476295376290561801091208176239186699145687486729178616233651626665713543619439901912710580944645778155158797462852234495229231406539206472287577297378192253982740258520802032184319738335496087808027150192808403729360390814153726899607792522414861087778808864723924610633595805110618744865362177310122714818412795648247881041310195803062313215902474261741174952685814591966714305480767184438698736320248721848847642234552533028696642298731293921638337742568224929679203340715151738759154672955264904729487192815222409704216298143439170015879950939045057249309073969228984931579994969781518397426907617306970452320824844550818387028299796381307177696815835155244322539561008715495766453539759717077193466845576102664991398263517768253493037683951482880594999592487164043876965317780003505760527667863680438637377024026769527929551980088550989890140816338761108689882533404008958689956441208348099517790655163832888672441196339023333523558262873440940381150551323449813051211874782355328615332116487157592812281631495362815861059878771091573384226171301604486063550985885547526084873950124641753676687247950243102682512625690242813329639053488889144642576604385864315139668920318181435129690631047099936094981891064896430786909547908075022480142180945007023530760518540471631799916726591085967028615767603414815858484391191419226449103172750734862583321173181611826808717155895467441107144481818474820145538915123191086233889850661674240080442220814781759930155904531817862470486365345886110364369758405347228549431644962312521692584793216958186300617894642831369657323204177058526995631057099851113254417633669886363824556236862260831309128178167803213227296932516696703169947834651505156750711821678584827987720266958112228898408860533624224495113943886752312598411859670081240718595741432294942764857421091909115884148224555916194806655809926642996956901825501253612530105826618755517164012710830281242388235631527379824843157390117320858596018324726028114634513731910537333745080425512204214923714850269287802358237211241477533384595700504349352943037853153152826576013563379638817785556868194091209215931133480115980056464675106593427706835334947158188177836411830984886508981465689899139213351717298512840062197481925426346012965958263308687858310254839246643736356288094423514700890181531946170936255870492888090106543963957053638462537602324269379083493214926494662001476819723144975153483394390016211234911521305578087159665053195506910683427552629512701423004114557334590767201287380253575889880716924180835742565545587297372230588277744954790269429956487792324583964844408254629753937326834163368789921452639360922619001644423905992054827955523551707437217080870067136099865977482032198335037959434533270675522876697240093272437334734369226923188059535469846991641709332683658104575190444624146274210567461025953960170291512193215781838523322046313242892959796365884825784776849648185822682474064256026698235271594627736075157465861135739641700807125348820678293047370189781363932882694927128285410177891393529704049003357809736578523395638279194743744900566551317265479571829718951144370147604490513174682721505873577926782362538993812368812010097486662549501136198241341798084746545706437440426878375892211248824662555732459007737499801554781654267879320262704068105933519284285796739713621966126525083860893611057628869197088116263187425689411609090653720984344418988835030010895382016374020344833711823116640310985731777663607552620413465337138339866989132413420055538428253299998808303388845963185188581487436300195905101117842154869015140378602684126069213877902049366627282585389279538334206573795995374258165195704570108297045710018639586996443344402990380550529595121860257242747783754028054652596757584727739810928998066179549536463070344995795834380103032675101592624345721957432323326573571256893898028138781425679040966486628547984753574864434930008117523845237304478890899718331660641419486842158394473459007167484277217322766481893195761391938895623708651566392702159311537448090535583956495076752757058074862172390454533499093851240951296540985779357629233421157703016528130291156343737642593244088633852787614747817627060006991669568592280723672383298225466281340956636710431940328427911743530915134552931031391690006021236672575108176444082447291342833803642309708607039528118937917030486917866538554824932145847913873347906410715580065154707297637925304057208331186121542705437629918199561558440077780020149125928636524680160377906904253706618745984744483286494859496634897033537125257750234158366566522768726012073504864415325607039305152748943100533772051166644314150037384337861942612593701611683871218292642963890517076695142661403572711320388033047007398654918216722136161411678662937623850123091604556006551841441589614125921909593939770390437476075298171895573919863135651088828848336011726492799841320111649935389358931258373693459145057553136475922751342605359538155293383583876955561910069358749936951011082089615693841896629336961254394974036986721026940350856347077152772939451280308399363104652576626172429793776211333913295809413213919318285255196490381055544205313396583888277769550637211217647203529389040683316967313521879297011278503165986866646581137787534538214235999303080897442666172258679022325039014548620740672684311806497429047056530576223713193356973396804439208879107248745042555605441287111013049709202762299259851107012441701468738419926890133556245430056477998293002461917643271629591853938120614647619772495115562085600504853146424640985096824494050598829781714618733157799877227971474455616632639023850925729720213591779252776369176312110497936405970870772189359848240927140061006848080799072830556306659756678997694657936924990345096410314626570672149731543628000558026533834459167842889970614149005288838811229513837405392153251553605330473659867312295620005340633564023904208178972115034037935254190823029327420408002622341072381223538257497215682930180996569122652703053739471871654162569414951520531206458862671624276235522538318964461432849995356820683233465138675410827490596964352422796420736525862662409202276892082905745273014755041772993819374747043291676296825571338645605019288235828607460219104472171905393978286058711994994075946946904501719626129891297785262794903831823520324741271326470009925340248044413698893160087471101115598827156017322849926448246890250940872800969912833939106037661646340854638183562189382226457787900923987531877913431946108694947652717492923066187775746930063437977519195800521298729848366280723108648799156318978065768015360592367479405252285966318000015191998608772683676758058031311468294723167697582272502760859874036909801930740974001192058591430098287098021570441654592505727247768282011756726844525801256651444301950079120380718219338329468008534442846077685713544194007524327955071955226200530986913459845314710510719058167265959825133876149104200332459364223361260375456263610906578083438476313348490161343553564484692187424842603773823747426008609267536178919597384345623591288999415207111940819590820240164261067200326676758012794725260339664703418163303398007586421287243859016657962176274532712513078145376826038329107151236318002243613099209970831731135481008172826345298961517973963163916705165676097591487481466079223465813873607872273761995059993093591322303896613664321628779241192911035846341115545622374501606127977756985292882117778296500478276339993749813331078686903702537331445966445686036256887898585809843950252338373839157713280364698259134024338989451358780140559424371687870519586950515334379886144076554360694721608275939343734737390935610438901882220547279311828445041103639111103188607674601360722196695674871077543938123944828376247570522481733445127428507577252676752726828669296273888040688955392452214259080886549295627930544496374040482414174429554699068859457610531632589984450033487991393950194379605142460240622750964605904319347162317103632880464489765441781176775360255307983114046972917021261575999747919513175356289269738252254493902081778863456041493700800804759871388208118144666431845192191907729537903174959385672176640184810677326710369561461912187493932368918706337698762794615949381684820435117964874003383886204354335841513328726838198927086809536254198720567097588143419818644573075112705490751622292191492544793418111741658483532767411666600528233897824313428372479855025933866719301492980684042893544902172403475761202059963960896638007212043160771550410552889811065116740233744236032304871579001993160935959555347073311004243774883544443676731406104831265297661674183379974269379741288515676564618943733469021389351199332674318818115012130962124777380484159115171369334822744164229342075923978372260068788894241149239047819830879098322853736363606047921128478685310683095184709943048770806054769494926160412480736093641419077309213991679052703634396648375610853612922041643781461899880570131047760466065993555093987696077930050904841973329976985820417577209060155514571722895551726144444596204596782453047002156424345570004197583274416101355362390738881463523630967387072211376360805282936674787380880650737793203297867993622101141663905879536696169691639238866186158654641243673999077254707876292273024963076334728546666159776798341058364962760500123648903436613222992540337677988477671022338118694216304682423334130149852860681684099263517683335157344038308938179479603858917811593200169277994326389000742115999246806304045702432487140508819529399245059884575934708946209516322574789907597746226957553035886293114377154459544505608389208459380956440963140789343305699658278203986551812398932069405456026560759534279324948812804513062587167345623977971097453549344764469259507711376402428457076157055436430677764738886674081844106383742912023140510418552281742188746389236111863491148474361612517064934024896521322519834851151242772104556306598929440002152036519490819251376805450957184749544824693635603569605225972053841581004501584100912328333976003102107491085953159226069012834587327259971112025925123819947881840747175767809667062611411996051112013271091350150777864798314871955256044949338844757948457477116889094191094382540558054779516264683712607043026838398910328428087833751980730006443119069122334166099941402646601365567136347123203738359088947443981087204456279328714404539183793412240994826870342095392017313400572110318532747843060607288706258394994682842520556381575601014199010490404397191138445152855809707016425452959778664359588040560748735412597512323836013768239677434435239189168997928071347187463000837985697466045497488955639372562589230908251673255473804486520327695043897071532175037437036938183448706068445520270184271860267785443607757449987645862550853844492488331774133732177529596230056374085739368318799336491781716721031643253122590074871792724944404133795117394685504903169776472613579323786988436816555044871147023821295375315968422237070919604915553260798754019817204005435917338028778866898767783201988249690480208167510788846166868446591501548151404396048081597044050075742974387127512894683131544017091983972922897201447567071326201918658162425054687848305577141613831948331736546313547366384763806330342036329442085133559102820443474867650075586800703988545083847887658720938137520387462853564941611748541059186958982227681935894334481608643024722381659381938989731023292291485815605912701175709672139292877678190348729760666157907954715630362098750256936461038759071141133514628511273752727853532279858408268908582987443368819679334383388270166337798654040644855690261540077459818835228437887729301076041005381936867843411337332815350029407543350462675437781165812720616995958519407473614668214152449569347793047763581660230557418465248972034336442550080954052153006780131714480535397523095413274750723701383225842109411649460720870423187520888470553057940395347526767669497718524603967849112705432812547718499111843247323011841160686418751692868907882025078560674843768816179401584803887200747810776387544791913903025938435744852431951915576190055048231754367790804864233775987695188801541755557892125771674773775596365864929152862381755401283073853655055425091448611697016439954534260814030388938640509188143381711317813476900790628429257746511202468312957230036100116864480097621669013542313504580498125607583068356957065062879843861421422680449125994612477774818757161945326684776971564527300842862017927612360118968033138171953084120164381524148059624459163118084096733232992442581634862069037490046169948238393108530288105627559374357574375901411757444196980563141505220137571144388964279304678461638650126063683382309278978344376529180243251205221507357892280444330744741037298325319700933898637890602101615296398869580920345296280236271953557041411865760773333961802153204654733800918538855539998075391359632003872695291240543210415227135533202642183404859216781849310678370931836038236340074191979283348256435037626347573331738056630737544630627819667754832890022502410501605907042038148659166291897056811128443400490554763520515617080334010077029504407741614050704547796928760915765587321003086708428633478958994497231881728742148146582878333513294577932133195398397292515911616512890368305984393578729868207205694140862127741104528308067361504231110165275192585475375358000676577709244330704876174208560189889742189118009170492691256513264181013828227165086680711420434651576133518693155463307951273683890278139573807332751907304778544307753690835516724244324828301915566152584064392368154012296367388561296655115159377964858217285140994654349136595083503371058992673764518566714682145847493882822893394347204092233214651141128348419317600574953305420152824611858556704207679618775670228729011916634895546083736101005758230326310636673429185051800939052184453293132762586281584909086427718838454160054742974280328396661361347295963302563629881389597757395692922460506227719569272480843843963982294218088153904303273847479651330200041676283719440322315419856051041525940239722748989045813626337663435654703148317669134876847555469792411025033420364193061667681444556983341506990373187827551963387220108573965968914968862001608003924039023517819236072227063268657970009813282109838740945014605897718935027854417422516891716032864362714644753952562246051636958846719430334197522545309124095753712501839140881772202359462149006967535743381987382494199903798783450128864108137711379338678990406261945617986484478017729513417966059143295468448727905734551655932034516014732958476725736677666360745474765405553207731525120976743153206626090160055202221435671053558239271799027644260676893678561236876461169942483963790905593236778663204622182700607533615177816293194243328323059827764195754067310463910960166786833097658112569805863287752396504825639025116157475645847961748673868648985763576921316360028625597643145982378614155913337308072899028630354506317000731973048320498440559655009741229059616821075679153626408071146949434874870710442443607598092254881233946034011674932649197951588391079113646195367873645750872572676353074784800670128148448926212428049339412055475920927927064266795956572600200498190491828386978461485683642086665791764122916337004769909968407222832293743026188332895081447303907350456907104380292438133354568556580913923940135089837451503139566900151184776483065461722434703576835856162451903500950263460660059609102492532142956330352718793762144273337958725209863219465403332730360337994136681320539676141959170028609571573318264331511603324410628374361114137620410932826988141316635961417071437490827691742173260234374302730791524687955576187003866752766949337018264318503626167264228405496153334243531140332510516296899883807675047755079172377866058979779109219361302539854229267521185113459426964212674944243036359083834041693510700598946606285775592307909800370642066904336886030146957671455743670251078744477019985475848795376334708946576839355982663342271782974876971670099428998708971102417217050194310201496909274080129838572650933663158961486164318754012103629249337765151672364719569977796470263610483643241743081238512099346318125509126340730907301902331865609410500322101548902016145028474991172896518663299753954359738145858524256241079822888388025974877315851174825234099588922307983039849059328140405070220292462966857742931975247086268060742036088901447914159791901545682768198127862624633726084182944519076169341611788879344467332624457235181005489161468437468286277927595231710889035229963620976542808014437720825245958218422545401854965717001947936025069441351490369482405131546123008735270958799806732505582384557603513044063735545265173441077422655347016647100822557881227410017918031724818941284851218632476074548990913121757687254853114905647152161232816453294063938585231011698346476850219902049515565302989770984364797494877746871059691242951446947928616748412677311316689309276924328166978373287156127637754250091827262880001580912029087294416597708081303921574616792751138598416609282955474549781919323050366795607116559122995449444513824012921931191554790229338378408917767888764757481247942357523387981462036482918774775255481502617812032424350337757705134963581392988233010269239543026399000590407670292541798141931143957825519431024943808265104606375893000801021372156629170649936482063505577146268662962099488092098200661611049654157290575516049458547343584333829118330105341165469101287828518455011376471874002702126745604311883893741228949110274354393717306210252780458508823091743222111041747254441747473986354767554852139796930960587571954051842952106734815850369832317500044882713313649500485928442503705962330735475241650188479077738536979346401179945139932535355966728284296269303465382689387382904506131090629101374506641285879526447951961592499074899803465202603048622508966269246410248303951769201230670090880245754249900954768059240928580835677018471478117764727507460788000454066509256352049419001433619066501137325877958902450951248012775946853069206507022910965027828695344876662390444745223071764327986092164128821369419529923449745342622529520337107152499452702345241141322434371161845076945400253720116974932841155231559246404477495415318558856170762805541331599037682445748096007207307457259420504514213233031560297159337458934773052943897370160719593071005636639052337398910516328917458761997763791052147675868492052732846056244343846856562859110918170514850638431897116103962577287557650861624128410941073015672545799355272188821573142146157647220592136501403389440498405045979220449287529240951068425759059315541517416653195735778257997109940532355650068087437125593263015404801959966170854247359416368888999714143993665160871834991848566207054598521044690133585142761653289736942697455812090483602711809497731994035628689666322904923368824343322943897077533662696509093532125560433883239720615037830617553062569400982442551469212711958432874003095252511501251544368163946986793533762477996739664587856894977815882349958159300266076187992625866248371863178211081986479246265805496439281433789465210502472287353963749371542009248496304898171325225431490404443696275192260731587223678231773234700501786989060062073372663103468326762818735022839079304658268264383403675611385203208802610883443153396372155598085767531581987651375303196560138048749012301078065330371665264754684135929975327450958445710569685713002470385735812499009271125281912305498904570924803427650562790575789311044993863517834700777416970146268592915939173835339588498234255520467622101245918125290891960721252962341466913538814589814214723753781664749478425706364352461070224233708179564135246880492730639677674623872309076224196922090720446752424962016499908060928640446088590198190025780328393379622363600793252241003767266825105789787022775751765687273282872681784817235974474959304500106923652827770175776376057866784637584218919587715646859185759124581929407837290204615476399831255232642772149604749965883742550558896424909600890318701200878005426405783690223803023797534308676408970377177829432708888482899871770661919987560426133634342816194791652942901002649991930864509397547495136799464971411961885951448364705084776854218557154068032421447791593957493800552595011736497560627402048363722641737191562791467192752850831819871126942696603819688457632571061264341307436496659871052442884327358088521230434779757325515620881755317489614893979565115465466459134952019342787508889329177160466567164607203135727175727007576133217386625201585733132524102256267135974095667268967387808616588507490403645684015340306735062054190431238197422650374750608082120129477961774411707229963815811485877200700501734026677170462507781454324736384494629139100648590234634063450890873793218123159652262636940460561659812567660405111805037271771919133677053378340571763804818663579984080144826950600742568620996921074204543790255158895558727569627833033922369940173618424508834111810651656048535574444567986963711635689671493979686086392051590735412326987468072321026945906095052728783747681972245983868013037928884763904299129826301670561248217272709934758302637217436483609049259979017913572017677999917451517664593806401100830094206113930664869181230286977905241453163705128560161844356057897016629444587321825339889932073812247330853655199279654850681643123911145550445824784071197446536929226480929787125781620877835455757799725872429412183788180777229189273296533362017032457858813870135280647619436731981832381160911893129851064121020987511004669726225726728447523886592540185823062928562680797115677436491664945960425463840352618701257065715147975721913145513121975941816861627415802916250662475683313221460810083733560259082176304656979800876036280685013224264755601477814078188584904150365677219720532288211268983178369847544314641858955739505549156547927819249161988086454580912459896288180831839198694747159727783540431533139780840118503526092188395999937083438859471424422484895173339353662013418404633914278270531257635152842306416202901968927515006838776193126399890861893238570955140721902636602451481280533397113331997181668368168114113211417441091536660280740752073688197951869383500740801485250371189839664555255637862300294894725338807388545090253060968823072953675487974449697590292547112002691372243223615249165249747041660867764509155511159477802075808850762651193636610867311554992969899613510446151689019965900866044828778159525923906714414752885574464308524982926278589922516043567064422228451889411464404645562403027336145425521604775172340420217961207569279554941274837915390099345785110541869546066004279176509714969623554456015482986407451412652305793262123648552417609567710229212341687156454311883528279150390985919008321641915631234630542109381453293097771127251164835846456017032621220535159510911806712579812990017904201396748639648986580416830392353504059649048195263808560060144490097812861709892171321718078141652344634889987253449435365479232110959791057112787715767591956424199236727218939549730947807636035618617124214592974632640888278642920646150269913678711900700105591753932021927544248495416598915245127805617973028286807341594473386206410511414428389049099794186454102765796914905933255458663787331998410234134210186357410895835541247415216366309533445597853759036910747535179357644751896549954802762133472758890605527381638477541022802894735646799360073180253868675653146890507692412609328780793399715860489456638327779713788516054313521050756108383748787190630773384260645245277015038626404267544599526329137987727604904731562738505220497843816310101861170621100872755427778464809073169584368881349788891479628643600529445515580370114613383736664314978973619136220173478287784163951945648158666739841536848953175419910538486514713806203315648665785618237610350582300314779025897090284284080969250933457877228872443367222249154142248644276474288044127432827952859178595732895202190015471726020796066245204963376906354394976290239211712022794927835141158864526574570946923047666699485949903120984263356978168759479817623935013795014196775910220111958690782426346191285770042525098984695899814199136259926824361465285823048578317155487790775485313929046655222874042698387928987865423117119839944817973165334672655644240394784576751152259628370824434663024024418575011518490382064521827913667162089667112747753535124207783675418967511974700275667309012046788487060329223754816307592779170924531501164340119876000139327544408024106973184674625473383812276564724893335841539005571654820183265759775079589751747626589104877587523415006319142401438844584683685256184472651725051979384269512266601971450685653366718533020065953355981712508860345534161752796241189385496331101145400268056092980486470369444513019881534614061799341395392897417347975110433595794498856720510672308772750213294104276272132667497463492787282710357371813082428478468377819129538727211815622333666816660354583565438907819881292081303387043386670876926764469958036489231885191131050114302131977936474847279924851923137714263077854243985023606988127523596289821331500111059950584764623037107983656960989438380956968393260575271072778863957365450795572899629582643385628639710611546711708409238271955614736601631291370395060012833231421354443797341554577170376506036564132217557077652411894117329603768900109332749511859736210742285027560130448468034446432758727729638990040491574996250063104797738677059556962784396811723371443252662772605997510646452758982125426031044458649357552995121303204693338942472794723310009789920455359278131277695870668310315876389946031424494549763773146136063430889417701887448847015328003015451499112860909942403248329916941358489871131665319203260702546158995642204910162911659670018116940727018797217171686323023556118323193198342370803796953278053782977187454671829418430921721985095232819212480102940486000736338657164939674716847410850866338919788038362565117722358348690989096737227059283378387520150072310475969531030512284930329368248541131113766926569221020923296593566377299675247629189109056398144800021591742635347744703956072123890797151089046108298526010507197557242777201909634714422471270603537857950184437259093361956113283048564569574122170292703201825073022983566835511332308338851334507372273081202885655714787807833951944184851958437229989794757451452736941245634812065844048175235449024407397606058411010621436622691612507865446029785762584964939590202876090478392978007566584355372687291804000734909051848660440791202433127588453190203200783903284912792280548420676834695155901857566765932088926634171356382407121102180333281700812579308596278561884268236429082157465746397088329202574170766452511505505609003041124950089258440827042552762430618486885201276510552341532342351164734524285396714462005001978788690975960312082731929333386050252112006807345880064713266643891024391700346350471880262858040712474770262634884317585612572195523131314179386278947285577465324615711086122333531902738278585784646020600313701514942125391959071309667102965885213697839889156290939743771636780743647494786980566347580750783699119643179162204062000548787439490012304199473697303589997900840621652874808426421326071990248127528436949608115779005494179734937511431781806145857785045035166485825750634750296960306410410179563289780730826789234509202931820390586826950654104129396809093876099264731036820798174964438055115624044199738101662825807851197445426685021856220844261848759266200674656511060029362486031624820819678918152181355926111923461166345822665086176145950743789341584980812952752231860843257985965288802261190266665922655937859396637134691957840093532444525473306658768602008060074798781369928554199058085681741549030727173827517234927484381244144270371887360574934364399214113609316363985218988683805111173090608023338304021000410004993333783004263450282560060958459050745590194592895933947062092079507573081523402757767724788144449830636192589330164576778830549052766661774876685632674136307814153444590770266999239828355457576813955421195065159397418434372715876860476997930972151568408519046320497117726447903332629934498123201460718775034315147902361476205883702162559670339483592737874161365824447049081019047867077729938161516575462820068029800463721563526770860295002450363435919771658499908957051051713169210155056685711478948292601652283703664279729412723327993385676972068945177529247890734902739568992396004082005895239640239584914895675194441732990455908284962508388272481664809644013695108530643590237328537639688567194704667459259852194847009346130261141412179411299994375826249494565666674099752312940749960678432841327379608811354294970105991967067932527833097758928415762643944723789054971807292766811411062804902336531718448905647640615296706335520835436041593386648611858094071235308269292644418143791110200993361422914793119640919331990182443330345380585754214640238824260774995215366915341497235208474057031765422776345411042327893101949992571577825558691897895422945443680380208657578495349595586606235401227143323363094432958840171215550050203924175856785197077586124718868813101246599573589030798669834807255201536300814627715056943239448585159116823195136012406495891984611338805585159868346247052637564031114665756371321951326231045738075829116360629934323624216434728253094934162532761445177538547165024471725562255682921126585840210275028026032072889156454737530566706272562834758199753126146886585122828302440171763025247744940890748240827209734322451822354861070551316853275578081420600654807730862579379336164296300651251035620903073641444759072951433003329108395228654468968443998724991943750648399825412774577834064138787246298154005871653201690041161564805619094094950177728315165333892502449398614595846310753261175601850635807705775203998921942871973931019055845469784764447913903988508253744480825540367906677867871057567478493188656741810436755808948879038430592843598118575241573451984420451874438273802788249941071249303464372879792957737080283657705694830680260355087766018017548240826889393233567613079361639516134438559058561470248595710630583243521624876087878849326799727058325744525127686358697175227126042729704763198212221500110961927927031953451726345983879650304506115735253749823992717894744913635383053788207368902228723257035589214660773099731574328578894614609958412257841707173544840654053687963529161718339377820673974804275660397594495763320761934541624154607081082091431381630887662852444276208094195753892541482888964133078632756060019952316521890141964819830541862502886279942861929515434864567266354539499955976735355894393495991004445955069390234829281284926336527704287398385545271066278910515123558177655155124804872688188708038652699563430158718539676417362165324740950301161676147226987091336686975730078772316774484804082212792921345388911884307584665906933970070288913666161767306556816492529686126542330576930427952309859851945687695616787391724886208606078219586577521157997471925755521830252778574776276558662045076936010197431001405073169538271205697390441457933908374685337544753066892359751986805458682161120599250577029450471790531116688637592044725816809350715401468061886209608998308808761053155925047485763330982810135796784437153235684378855933935608225979566539014908874229318867856908106633416008188397781368955225608754496472366002973989622781331076327936906421333836156329940767987829949219414282739937552368742050095369670510834581278968845142676270307586970560344050293627832921967047772968940770231187440894414891611957992234348384361908134992564366682665696510978419367665490400052255968546785818638881481409824051219338973454619317589006191281840488521392932267525779747925510077945960279398495734167739330399574628957203655424637187995438121309889157318399563297897718347938915006476879059728332276590034174776666804805807585137415933903539371546508657211772037063013142093943376911484717585548985036753668986990778732349370860695937442389869679255309585195314500199898018163496806602205369815418049524140539038443752983715573321216713716303309876573223472073494658660387196143966238355254434272031875166654429112534708035265585042313178039140504966786200157779032253018379775395031624177802409362800776274088937204606438009792960229334141357316853027529326270934813060617513040349194939506111829667596679721724554842338458197057324866302813949134291966549465895240393949176765935059682165276533388253260395177273452448414734481084363051946017495590145528378728694589718770632641502417259843086559611204202453814610339462803726715365311373975645333786896813006476033470456391277472796397664318741782445580539265623629643719879907041630801149589490342214249683643075413638713825740975202255710524519005628410890292248754754939152754157107953000785347651731062707781298031248059008088083511571893341447743035315052308357772390705357815401965655229378522974863831081531326498095411458206016343526704502197334552693425313951442693600699979416793419044571047950054591933973470783926474430571876070606494546076496652235432486913277445868254001418092467524424087719936981330245844189018050669626927477561635971967675947936667840573264315222817706208841363096504161459299455789615473844664822043191643886065072888244114235145369904453860898233956764637008735231406874585372559803108174040402975992668970470323458706663340829004120177247777909390407650943557103557176164798280730176947885600023350422406684015217003439639897364954618944020288720946937413542886098604075227026482788702174057857719036625711012261058982176805769679934893705049041439972935657555686872759565537429136163222780629831139827737682328273538007173604361766686339194080863757502388242360541635097206494291599132259373964992477759699130503679859467387685858969458881363954404384016848950761974795313353392698993567078740170008504367063192312102584020548165945222524105239691877251826775214235888083623030633684703867930130650125295968428623742677462191715457239299389032287069336032372302828098382506936703358757555827103340491155787211743066715263418577384309801993728612813203556766993754656540038816495840381520797028440484282254884632112821925210033546824602794396854826423202843726689970480869195071650949154727258460224485143154709172855637969394753939537534842454461823870448127360033316087549390339491932603424096663377705656553981384251344651715053403923964417851970419752086799349480032265992581424000705801737101791445964258963875786190924396690033057790178748531407381054411659092462411237526877645210411022521678216396060020924621034172725054413396654304600511543838181495559908429007654906632941883397253075597857634654462449755501594356663254192887988476758127961551318345779438588059118960711018114915926214069348039421926460721297822408069255012690250178221901583499188663372994201653644081755046119923887957198992066054340294114974546071159657605660183300202102344309467802093991861862965216891368515339833603657760186751215707978850910662690444513903724718434232835066662847876807387275374320546636913075891542321272611108399646743762333862252602882930547232324311990485665318593042026396489306780598510984447945017700408320977028919172057048382181924135570226760960898139417290817645998917756855185172967724992933123052909118247462398492666928951967247431522756106437050491531797002473836449419068540277472068963138393177448233961148030322348372301545504016732072510497336139578845609651207819365400056853303027235062359420018098760449076899084941741369357339039371012080828320780934162749276755522409809098153174862234168142466848375913203535996417859932173938627851656219636450621416451865792169471928789091851626456347026830292184338577370915000158169528450080894744186642838772985819834529563611933373632440708524703027899883434677586606441445529530405836184308602571764765354456106254643446906140012957381572512463660138820345199166078432074790037248546139205726353557158090656959024185745345956546890947422882539337183883406929169297400044137877815260349485959875657881972792337911693367611917919131915027920557706737769810315715359926487713855353321793871564010753738106086321230546595044476485010200470235649943642098272637082343166210803794993910337605136239806876905139720151979070575500255076889855737572108112919425325518445248006933632368025157148533351689787936121880720836116653840743617415571493745387797691042574418704937861768435997110148267844022966899508273305125680545431462825242960113760480968529000760808009707472576440561766071700939806743526995640583592236944120793230124851216017592161718568695361629331621064836815339177400421921220156618102527651553489597482005681543009594232948075392858721451225712296026349598054076571694498983982619415761813379326410749885515537518666751789095081260226732887008501369033072022423311241991556050372244766164397155244356247926874588767338935163683327933554702277547935287703755133035368418595728953591127644725043878325718984441974471692217612825126396314128770579712175562666092567978624210753782825275802681456221191328149519567354816438303073809218496633499815268520022429717046018825658842467015385712669468265707555696525948903227914864246346468870618605734062682911322413808861525616756567945364657325139882917475692209277183304968538734947428728388582797185751925085125363729075173796643775804671009928949220293268670456975658752584332903400349503949011586021175082326448210272758388252815782194585442203117090992668634959462750022443452546012055002758055127454792702255890205631701275211122693794920290417833369691631162589900706279105985583858392017695508708913053733434385675958920310284847781339811291863191093386084475914087239356382800972352347223372355619360570354411451544244307940032823148529609638296958288902010391872278763245256372127500248817419151015466871343223054572424151488837160849087690844793830186151432135847711240614541446439183938044066695316622116741046472939622004638961665608819717101930135624767270181741989733125492003140924411241153224900070754907516184957543551611208022204023968376636880451822691297708293688894074998217185540931850449663735709971989960908519813174658217406440733137654410084264390199313344416298280201059159586221741529060546858446825609039282323617534880583845852642034407748295813317970457691956263225675641685811512670217066518907796204233575773817564814095574905621916350619556603859001230105241016047652273704404479564336649968708539745125105915160022240368627482259079202336430778070946622175011973214230565495684814465576107906033710595350568611341645767396110859401880245617579689883266256409894693280104365291970684730005887925438391662019569596571533373614115187189312356643389006800187024689032302797342271128282171799878713212117329036060371547786892810406560993783700207922558468011335587906261901093629494719347614610784908347727972664981060886160896302867201510015108566161825129634975425024272081557002265941815391290337945136518047397974376034831138219062938133831604578871761305972624279786410979461568839594456833208172319195856872204542603316087926558321489377543723491132201816700479397540948217989075370768230671731249702531673564543406062253586483721876364885815656468440728188332621030006260484399864535626813077449518708844252479808421884652431126530875716970356579193081754594545979226680522690302736699184607929615623142663354132052863597405323796639870431453066308061197943832308479553993128427148101202879692518240366933913835269757022542403389041102563931777385856395150760422381552306943437155154770876052232484595793376372779715779096638669304485249549423986081793893310670696881891161170144901546778001550049111602186286345163199534989815372560517348564641269606632792272652115204168983118001639477232503487517975266466538605885310375386323449185231709798124778365598533541593980958124433491037239259424061787818955206789639301137224039378855362946151869759563140264720906997750013611877360612394880182302599632772460731913224265247765843851870907483675299829361720529022209380906861000458689821676603902075564791012594713699959332168445898305343858211764958004751287406251595999467293204674470870715167851421656776355939143657993736347249925156645471605043233097281630642396809038021750687833536173404097614118680059037340312341605883455235067338752800787033133391707487966849528493075647320868840934380554883195960251773502083727624240339456212211925683490737454112277877641954542607470029658579411795883383494012636284071606370192505278671353911009904407560251382987723241502706898676119014622076654875776162540892477299357715761700750960446391506332058899436675190871956939800022687432780180818392178709073123353331373011315965680280896735755650091675680722007667153708728485188186965653450591919415129897772500704531083484204256009802043625565542287774299566636078316295125113411325583706020566573294986977164698547137703200443022008505653377365378947288543862725055911788727943036314460020086504429170778872386381956215475209306444914466262735267509651875004139279370893320240127688827675054296294093093354920744403327434214120799757340314496705538078219995180518082515428583740839433883842984823268317117814453641785347046845620463915826027190815790559731433923858312882529042132987246860789417898096245935117545754705002593969747758470845487352156660639391962457416095124403612942059946284579486042861317902103275464677157584106545775551518446983441064825708631574744541847215534147110002165755331087323942894411304556036096', -); -test(macro, '1073741824', '0', '1'); -test(macro, '-1073741824', '0', '1'); -test(macro, '1073741824', '1', '1073741824'); -test(macro, '-1073741824', '1', '-1073741824'); -test(macro, '1073741824', '3', '1237940039285380274899124224'); -test(macro, '-1073741824', '3', '-1237940039285380274899124224'); -test( - macro, - '1073741824', - '7', - '1645504557321206042154969182557350504982735865633579863348609024', -); -test( - macro, - '-1073741824', - '7', - '-1645504557321206042154969182557350504982735865633579863348609024', -); -test( - macro, - '1073741824', - '9', - '1897137590064188545819787018382342682267975428761855001222473056385648716020711424', -); -test( - macro, - '-1073741824', - '9', - '-1897137590064188545819787018382342682267975428761855001222473056385648716020711424', -); -test( - macro, - '1073741824', - '11', - '2187250724783011924372502227117621365353169430893212436425770606409952999199375923223513177023053824', -); -test( - macro, - '-1073741824', - '11', - '-2187250724783011924372502227117621365353169430893212436425770606409952999199375923223513177023053824', -); -test( - macro, - '1073741824', - '17', - '3351951982485649274893506249551461531869841455148098344430890360930441007518386744200468574541725856922507964546621512713438470702986642486608412251521024', -); -test( - macro, - '-1073741824', - '17', - '-3351951982485649274893506249551461531869841455148098344430890360930441007518386744200468574541725856922507964546621512713438470702986642486608412251521024', -); -test( - macro, - '1073741824', - '22', - '4784065733063810973581885157618788676291241975216665977767007373648750357731006099232824032039924032894289638403441329240212719241920971274455782595989040464660523567661989180298099889009174801022976', -); -test( - macro, - '-1073741824', - '22', - '4784065733063810973581885157618788676291241975216665977767007373648750357731006099232824032039924032894289638403441329240212719241920971274455782595989040464660523567661989180298099889009174801022976', -); -test( - macro, - '1073741824', - '24', - '5515652263101987298728728207430913795608113109085112352897269396216198887424215820128660001943808587833784893551335930816647064191168732319583111500951066614122648616177179922993422016587311577585463592732098692120576', -); -test( - macro, - '-1073741824', - '24', - '5515652263101987298728728207430913795608113109085112352897269396216198887424215820128660001943808587833784893551335930816647064191168732319583111500951066614122648616177179922993422016587311577585463592732098692120576', -); -test( - macro, - '1073741824', - '27', - '6828046779268970776657768233698567984276232522051489956245767999246374131525255241237946573692471593720760228447675638216590132893818229842292076597586769967201441361422350907866192164773697561322460176523147880429251325990375896362151810433024', -); -test( - macro, - '-1073741824', - '27', - '-6828046779268970776657768233698567984276232522051489956245767999246374131525255241237946573692471593720760228447675638216590132893818229842292076597586769967201441361422350907866192164773697561322460176523147880429251325990375896362151810433024', -); -test( - macro, - '1073741824', - '29', - '7872201966280717348342236651726314522606839627565764220475565031568317153405023507392663596386569558004653379220621715171372109048108541030444785631640845193093816697582678260933332408613360539868835105124282664122403089594119217080450011771426148362301864935424', -); -test( - macro, - '-1073741824', - '29', - '-7872201966280717348342236651726314522606839627565764220475565031568317153405023507392663596386569558004653379220621715171372109048108541030444785631640845193093816697582678260933332408613360539868835105124282664122403089594119217080450011771426148362301864935424', -); -test( - macro, - '1073741824', - '1234', - '135032864495417264161796347776955705785892222817973553418838034178314956028897546684160639856425763595503385824329054755201421463563212980917112733900937587464576847323832924136423515380546856668025289567166571296527646275461473028717333267141003518332467805495676717695347879685792063703697070949206732122179518994434776335316458684468092377731792188239016034485284630253586964894185124335453057822293914949906863158326432012623661553678396250401107915138994915256878813546994860886329001648396962604356523710403969300362981938297962596264354907403355610003410746213618666434661128903020244869263896170471066369182082892608827489848219714660341764073206537992528782425500311374732638679622889592596379830695201794132135693911769551065799954240113610377067376683502257705550961373070910821982440913313765403579054599921224319207778610832609088192808064360990585104697667138615140446175879997439210654552913976627035980457885269693547247688226220637387637045378917414583352542513965899437900025330512737621517111697083031434057763772292768696151657707923184295380055081923115043272032888153271224470285860092716037417011085867348183777640814999517894828296507433835585929567261420420462344313146389909474179332054613893650718599796623059768279453815288538594004374465681087299360879696203325418022962651748866461417173042714747088991460375318785407702300361444578324217092319160985594722221278104937860539603355035209045656876866415381803837578632001346316535288568593998708433385135715755188408423372052774222216062791048328356892426522413633286855317150328892404110603628893696215163566867442031835287126762113760377467604420360968473120576018581379277564986140009067855235173575587538977545428601733720192069320627430054733306784720670681238722112369930138992200505842377717496879786984447202871740228658026814953856942888153479080568126661272713405724755303867126253550104922434031984783644501692789857112933381811554363124855689663968314433936452490388268436076601610796805828686914442925663191706651004835742754007540713785525346442305287873815143574033326807511787052642265739017004565917956613363367471933672846629587711796258007368503719485449080451730511414011638477972141851445718086957116808591931107452359052957804865633522313939899601083954314084664652521357737845635635594429769313821802217558277658299721865464301558666750790259183567098179113274454668640485452931068066002908997277843409635151859336573513012860151545891329235097673549964928547801966932932777277610659955980339629366284864226600662175274920200231799911374929694310790998989788523133581837411706270099109279459393672455713820011546843294753524645198035778900516714217425354013155387659200293566814809279617708397538819427548364362324788662653106656895970337977138117687158105548389244431881662586459290188692191645535827574319724588383784870507646115475296972326304672165083538472785124541284886058416994446142617361494723365850552096782926362377318561314608226102827450344958934465468245954006024257745239912802322669809977564421376969565655823452390561157232875258411436971600411470668202989843565841480016584687122684712266492502542278163229587079707811073162054156571019054961062952927977983554302015866971342580754327070415115073966145426561158662194502911612889959593112256884020821481134001501231980935188947653774740923939867063867862219999510114357601167654576478400771215648552504675553652631911512293697639701046365273307557081624386985153768458592210790101466864820465666077389235557282441554467556137942439039191407590628851042708228500292413849444833651262460968069570764996387290215723393788781245642804553333508408301261343724697551028018989537881749905976076338448452394908535816426586597030779896515482117647557447860634450527101713121746502484479941152499856376739864275419495610691316310634478200363068897623674033337430538837932663020502333882835672567028049270502480555370060999493787391837671108324652717939749490597481250676971715293682844252870745501145551758940066811058992261248151841276017611811411887274572413802287051107702233361626519940861991365151787177732149135343171325963570255705926609298821759763745740605618507883067662117450926227987106288796642374051280660094717537306446983341125766514345467801301022109170850857456333788167674306579695352752143676166869626035002861003680151141687395013408918901196436576953798322233993027260775444170722889022629783177992510442629535947158550432935980049655104057058621049474066059547684213926506563385023004213643849612559790681501591969143956634858312507054320677326538188275884275107886773666192492559052155330294262524555672315514034789884026392912345926416901360808651772382910047100655600280544831642567723450232097407181605364971159781140990727057283670253338705128542777670983899963185946930240111611346828021014300849527667380963493241772072243503208897153563615767202700820461479775801950340023203862180599061144940297631835377016813742279451921894644661911014611402981461194280564179453079023523411900246837570509101994534431957542873784483700881074971158165429546479001645257417913405525852266215205603087742174929432327288507482831107662551472614657976383161884377268463657025482687656063877010334242025290874089994813121457120585350369438678750482445541628164325776911259393529988611879496239373025342855694600744246027039218591404431155722013586923335365589621061845464264820717668612915592171183491557882072775450347227785803371128754402118852662696497779734299037300726805751376345509065452470499771152338656741540759667286001807828234665941391188447950478415299791715469552242795959977483249749098144154729856726398843394843136479906418546581912783694281934186249899746840563706877029836122779488478015849960103559937024687849690515515689170897889503967015459345616938867807167382350934016893152627043030526997853293078436718226621464395154690848550466482856381991831742986166751803513242752173233490694252183014711530077920709629933842242926656727149369031087137074130182692159013533974804462296354847649804625060701458152488648760236684887914355314516265818917796761265782595118181981681044254889996850913972129942574101636910767699459646998565563334934817729091557460304359721174908710624610165520926996466684432035990548126234720976930050635146064837916857286368443462256725410214925359769688795382559406991790923193015325212536964901024443651640395352239064142041323998597222052931115684682639641634800512022146941484482355702865668732720081140181922030567504656879986036737923027379371333794512102069490267986276796423969331880136840719651462034396200061876091366707548763496112346222123232248230388694153688276766328691064711815330435460610088491421888195612048740193844188314932702563544622667512558911661710630118364274196170285674349766269310062034958003334299954120247304438475039760866057864514345508533138628508770723222951065702526427845206142448239674333189634298931074576766130399670656349372266937207854772004314241332793691477905804194502714575051020048862726839370657406000869875185698670555381280201599182665294886015354833856011808620179345081837914124086071187518476483594847918835733763073473814523558994575501588763392130790088638634309767210564561156248614464688514525041131096155150204607020153647966454650761265273455261627425314514074528596787641024836845254467857223858579509706178001258970617383401025827829579991212553362569959842654814709014550315424922111780290827915930414726165818710997646590887384752885393971444427639715814163996840822838498023284380865733129768795804080108863886307701355417615576573589725489445560015923098909783946350493434691086273697821816061793195812770178371503741153108240688178150147461201688003004263999364357199123049902951417798592453452403101562071608640099027564271983356263970688542541011654918968049984647651232137086895404259830149749220416879709959182020123061308112888239461649235275893165452695700741882252283027093045450482557353241644181353530529653471719973518815321814018114021209910092621976503477515448618895747516994954217971534012469546841874151849040054346531026855470552536470226180210581952214311535603720572039239234584559973566186577426541184455268877699457062169502204867831831763139996332553492281719620044008348442819347402916347449063826287493279275546962303367251145148862797186077453729802990592616042296098334476139933758210139481670253798728685880004650690300243587853634793764661363939548941992865429829630011064793643332258817519440699413641147721299779933762272040597516388553460177074372616592967741331217479003988681016928742585365278732728251483499212078891220690889658188156539798384331139356971957782445900967760132357158387747329622665956719786329684268357644498465257273930645057475745581973619803774790375513161774140411043479424601685237941073465868677839867198646929631273490654610573573656534496084196010506741518390113797703827155068331674200699131411229929426209680688487714374805974168983332553493786309966923567293209378744360953393793837125430206186894839350307705730235833717173154106746899348996486996231198585887923276258550483914940308115576604381833814866652308982829995287823135115578881841683647985874625837749874589942687788384192613487693851248999443749739642785826605231657455343877879315308426560948548969337045420424230665445855165336217895834289470720467926611740468031169083110333367765062731740323306977689561405194787701475443626301894061597784690178137908223901264029854714026072728307465863936978689722771921158057199058515421972406268544249165602289029057506413446029967238761073334521038239699127377613786798068608688136455403186419278380623768639967693818903002914091657689851030323485482272515883706497395534650119809423124565836391369793842875038747816600835980202179604622141185688760485442517152962269215524720968096159687665960838433942792005418796157545207812339197623327607879244889471757058218065058047984089888544282248414904169827449234143857530585526799957307705003072573479826497347064437602871900701432264712373284911700095912533127999896443887782038410277845379907218733591984612184226296351103012869133391467968434446494841517603701783596211408280361807750260109809286092555909870372810146591135183334539196312751504033478470726845817388732348939299912436932024285485403024073626586251026026899899295415467127267737038677726809661009108302376683834416191919481724680647658317867588060396025374752516402209355880386153514329598353790340684707527726798504415578402359843949160793333347705630484913082537803617023770261845303091364666015596737350934362512646919111958540171867785831140669826682679983246022184079073759821259756221015486738276522189431610413723028908457172736855850746058294313588226728849768689794812414866669348870741591827776664772445325863669071829320107144423553422120538225532216445443836199238118227392732940295380857114186288402531225261406147809210925336362075376428503158948931501742771923187008514442594711388876951547491075456021295349274877008031010408946253351724911972191625857419453217284075817281481549626955942730030530589242183647212102223686706445886268268877799837073315208919568520733667353137904980761596821645748802852145377472403345961092081642831719685504154626740435161580568576', -); -test( - macro, - '-1073741824', - '1234', - '135032864495417264161796347776955705785892222817973553418838034178314956028897546684160639856425763595503385824329054755201421463563212980917112733900937587464576847323832924136423515380546856668025289567166571296527646275461473028717333267141003518332467805495676717695347879685792063703697070949206732122179518994434776335316458684468092377731792188239016034485284630253586964894185124335453057822293914949906863158326432012623661553678396250401107915138994915256878813546994860886329001648396962604356523710403969300362981938297962596264354907403355610003410746213618666434661128903020244869263896170471066369182082892608827489848219714660341764073206537992528782425500311374732638679622889592596379830695201794132135693911769551065799954240113610377067376683502257705550961373070910821982440913313765403579054599921224319207778610832609088192808064360990585104697667138615140446175879997439210654552913976627035980457885269693547247688226220637387637045378917414583352542513965899437900025330512737621517111697083031434057763772292768696151657707923184295380055081923115043272032888153271224470285860092716037417011085867348183777640814999517894828296507433835585929567261420420462344313146389909474179332054613893650718599796623059768279453815288538594004374465681087299360879696203325418022962651748866461417173042714747088991460375318785407702300361444578324217092319160985594722221278104937860539603355035209045656876866415381803837578632001346316535288568593998708433385135715755188408423372052774222216062791048328356892426522413633286855317150328892404110603628893696215163566867442031835287126762113760377467604420360968473120576018581379277564986140009067855235173575587538977545428601733720192069320627430054733306784720670681238722112369930138992200505842377717496879786984447202871740228658026814953856942888153479080568126661272713405724755303867126253550104922434031984783644501692789857112933381811554363124855689663968314433936452490388268436076601610796805828686914442925663191706651004835742754007540713785525346442305287873815143574033326807511787052642265739017004565917956613363367471933672846629587711796258007368503719485449080451730511414011638477972141851445718086957116808591931107452359052957804865633522313939899601083954314084664652521357737845635635594429769313821802217558277658299721865464301558666750790259183567098179113274454668640485452931068066002908997277843409635151859336573513012860151545891329235097673549964928547801966932932777277610659955980339629366284864226600662175274920200231799911374929694310790998989788523133581837411706270099109279459393672455713820011546843294753524645198035778900516714217425354013155387659200293566814809279617708397538819427548364362324788662653106656895970337977138117687158105548389244431881662586459290188692191645535827574319724588383784870507646115475296972326304672165083538472785124541284886058416994446142617361494723365850552096782926362377318561314608226102827450344958934465468245954006024257745239912802322669809977564421376969565655823452390561157232875258411436971600411470668202989843565841480016584687122684712266492502542278163229587079707811073162054156571019054961062952927977983554302015866971342580754327070415115073966145426561158662194502911612889959593112256884020821481134001501231980935188947653774740923939867063867862219999510114357601167654576478400771215648552504675553652631911512293697639701046365273307557081624386985153768458592210790101466864820465666077389235557282441554467556137942439039191407590628851042708228500292413849444833651262460968069570764996387290215723393788781245642804553333508408301261343724697551028018989537881749905976076338448452394908535816426586597030779896515482117647557447860634450527101713121746502484479941152499856376739864275419495610691316310634478200363068897623674033337430538837932663020502333882835672567028049270502480555370060999493787391837671108324652717939749490597481250676971715293682844252870745501145551758940066811058992261248151841276017611811411887274572413802287051107702233361626519940861991365151787177732149135343171325963570255705926609298821759763745740605618507883067662117450926227987106288796642374051280660094717537306446983341125766514345467801301022109170850857456333788167674306579695352752143676166869626035002861003680151141687395013408918901196436576953798322233993027260775444170722889022629783177992510442629535947158550432935980049655104057058621049474066059547684213926506563385023004213643849612559790681501591969143956634858312507054320677326538188275884275107886773666192492559052155330294262524555672315514034789884026392912345926416901360808651772382910047100655600280544831642567723450232097407181605364971159781140990727057283670253338705128542777670983899963185946930240111611346828021014300849527667380963493241772072243503208897153563615767202700820461479775801950340023203862180599061144940297631835377016813742279451921894644661911014611402981461194280564179453079023523411900246837570509101994534431957542873784483700881074971158165429546479001645257417913405525852266215205603087742174929432327288507482831107662551472614657976383161884377268463657025482687656063877010334242025290874089994813121457120585350369438678750482445541628164325776911259393529988611879496239373025342855694600744246027039218591404431155722013586923335365589621061845464264820717668612915592171183491557882072775450347227785803371128754402118852662696497779734299037300726805751376345509065452470499771152338656741540759667286001807828234665941391188447950478415299791715469552242795959977483249749098144154729856726398843394843136479906418546581912783694281934186249899746840563706877029836122779488478015849960103559937024687849690515515689170897889503967015459345616938867807167382350934016893152627043030526997853293078436718226621464395154690848550466482856381991831742986166751803513242752173233490694252183014711530077920709629933842242926656727149369031087137074130182692159013533974804462296354847649804625060701458152488648760236684887914355314516265818917796761265782595118181981681044254889996850913972129942574101636910767699459646998565563334934817729091557460304359721174908710624610165520926996466684432035990548126234720976930050635146064837916857286368443462256725410214925359769688795382559406991790923193015325212536964901024443651640395352239064142041323998597222052931115684682639641634800512022146941484482355702865668732720081140181922030567504656879986036737923027379371333794512102069490267986276796423969331880136840719651462034396200061876091366707548763496112346222123232248230388694153688276766328691064711815330435460610088491421888195612048740193844188314932702563544622667512558911661710630118364274196170285674349766269310062034958003334299954120247304438475039760866057864514345508533138628508770723222951065702526427845206142448239674333189634298931074576766130399670656349372266937207854772004314241332793691477905804194502714575051020048862726839370657406000869875185698670555381280201599182665294886015354833856011808620179345081837914124086071187518476483594847918835733763073473814523558994575501588763392130790088638634309767210564561156248614464688514525041131096155150204607020153647966454650761265273455261627425314514074528596787641024836845254467857223858579509706178001258970617383401025827829579991212553362569959842654814709014550315424922111780290827915930414726165818710997646590887384752885393971444427639715814163996840822838498023284380865733129768795804080108863886307701355417615576573589725489445560015923098909783946350493434691086273697821816061793195812770178371503741153108240688178150147461201688003004263999364357199123049902951417798592453452403101562071608640099027564271983356263970688542541011654918968049984647651232137086895404259830149749220416879709959182020123061308112888239461649235275893165452695700741882252283027093045450482557353241644181353530529653471719973518815321814018114021209910092621976503477515448618895747516994954217971534012469546841874151849040054346531026855470552536470226180210581952214311535603720572039239234584559973566186577426541184455268877699457062169502204867831831763139996332553492281719620044008348442819347402916347449063826287493279275546962303367251145148862797186077453729802990592616042296098334476139933758210139481670253798728685880004650690300243587853634793764661363939548941992865429829630011064793643332258817519440699413641147721299779933762272040597516388553460177074372616592967741331217479003988681016928742585365278732728251483499212078891220690889658188156539798384331139356971957782445900967760132357158387747329622665956719786329684268357644498465257273930645057475745581973619803774790375513161774140411043479424601685237941073465868677839867198646929631273490654610573573656534496084196010506741518390113797703827155068331674200699131411229929426209680688487714374805974168983332553493786309966923567293209378744360953393793837125430206186894839350307705730235833717173154106746899348996486996231198585887923276258550483914940308115576604381833814866652308982829995287823135115578881841683647985874625837749874589942687788384192613487693851248999443749739642785826605231657455343877879315308426560948548969337045420424230665445855165336217895834289470720467926611740468031169083110333367765062731740323306977689561405194787701475443626301894061597784690178137908223901264029854714026072728307465863936978689722771921158057199058515421972406268544249165602289029057506413446029967238761073334521038239699127377613786798068608688136455403186419278380623768639967693818903002914091657689851030323485482272515883706497395534650119809423124565836391369793842875038747816600835980202179604622141185688760485442517152962269215524720968096159687665960838433942792005418796157545207812339197623327607879244889471757058218065058047984089888544282248414904169827449234143857530585526799957307705003072573479826497347064437602871900701432264712373284911700095912533127999896443887782038410277845379907218733591984612184226296351103012869133391467968434446494841517603701783596211408280361807750260109809286092555909870372810146591135183334539196312751504033478470726845817388732348939299912436932024285485403024073626586251026026899899295415467127267737038677726809661009108302376683834416191919481724680647658317867588060396025374752516402209355880386153514329598353790340684707527726798504415578402359843949160793333347705630484913082537803617023770261845303091364666015596737350934362512646919111958540171867785831140669826682679983246022184079073759821259756221015486738276522189431610413723028908457172736855850746058294313588226728849768689794812414866669348870741591827776664772445325863669071829320107144423553422120538225532216445443836199238118227392732940295380857114186288402531225261406147809210925336362075376428503158948931501742771923187008514442594711388876951547491075456021295349274877008031010408946253351724911972191625857419453217284075817281481549626955942730030530589242183647212102223686706445886268268877799837073315208919568520733667353137904980761596821645748802852145377472403345961092081642831719685504154626740435161580568576', -); -test( - macro, - '1073741824', - '5678', - '28148898337860105994977487045818154315885187098857720123923019503536550068661096672354637598480165134022041984837084308868395452311053157640615896546050985553558586892645700423928507935726495168161698045415140497515602386527627319206488017355554288186119966734541348472345944365178980166309150611812365395806608007167010671798672218072170128957907439061754394300128594626814429645477396628406899347464530711061456854894379095840425674956808441653400041181506139011927908393244086335493121681302022622095101860620829845276309901056671871394201026397395171820873860291913878080280170380979892472296164150372296767377145551512657194585337453691634475382711660977481092241928982823053143625635560423178221937797712042117395219329456302241242041523769729459117196674726421874136677546084294826873902192894352596290458993633922997209073832114653500019746006542685067098597091796593235383026677957632827401939309333387666537839316094357314127534920705674404309028805143966637229018794907522055172849778130036761405770603918926933967928498088220730576083729725145992964744748428164200419463740275487586933626822729962824800560240761474558428430552602958126365583033236298214451648931511755996108094562356049299254807663118738845759260918867850503834415322452603653397365429159370357398957195114808416983753993622244836716555146831907033098694343145327951581021334647653286088313114479559741196437718942355964184601385362964266877652784804939052253222575619622416395426846679242522689602653790030499520892085577500725499201404182852867226125589028845844427853042309885329741850855526415975172436890910632693916719523636332471118794070682433535223602563287248795595868253883675189904726519119448801915261351526420699337492762857231988691678382926943587916545335155283702413750409505677924941689908432596377494319662783929468093868450608410231488451353317560659020100954006099204197631204922322164052615891958008133081819761014762487524836715828049458561031763108536694043217084348793653430411896364791299284106421121855831489687835195476115378899943269695006351002750960984964426672142770799033138424141023720291141340435508636127792984379054343612312021179919125313130082850457997100339188672577640528770106417201838870495993792046104170422555977835287298352499757882230600591394487250631375216854641145304444397854662472195749485109206617330733383898435103350307488437904097790795468490159665178407362104384319804361651012650220132889393331591715558188458831449467209968941910069520056730023723713589013657691484906132221013788386184219197754113246865122654385680123164873741763553852763331300981166654373006819001402186381647154946999554421873268375821628561307292124869782352332192908982894920263895011772173577732089662917292761688897717750366293629569204248484060863934466108937195948443800932184673102763342937824460121045896218443122360882698024688871403860910852370898051562718960418260546695613954738347691519692022893663002976632717861663007580356823097781646192222209252702435357691413104372734064147456843965665955652873096110765830684236182089087886565807972209217987226299585696168982138854941280194328335120626512261001331081248654357371396176501075032152655115462224365334172115688122152776903406306442312011439667376618560819888585728027310382981804901247107028140882078332241335878660689097272500434681089309886067525115434143986130726703706878433743992681042628744048964001570508077876948518135387246241479296880092162188798942915085422997374189631465329853471853984489176174861323479075234363120290867769013702739919612009426292832097099802965008680479851809369240814572285623180146280697670984531193650342503967101652478766807739947358226388629806728654389375296457819784548065774571293116718672409678564611844170365489608651048260596575158516893594390739121659741649999445353536303503061294401994598214548838049962733817701620624687363493549713852174836185700963467241090073849191740103227875513619343224494993071747822732607018496581774525356633102020037794640774098109121417106381829411247224212510736696706825452538654935037259956407630578146638429226378102600142256743099393349884190724617199388463752205790794440451940454605274720879574121263752007572801341506805655067825631941739793740936589208965150634092530408044204662895618653609322262359163887982449970383124228287512441583793977627962068395199273400344976325835945060297779883770211181669216457812349694314847337342309957623761533535923980598873005880875269599846465045392510668257169787436828598047252165951647190114307062027405441868359474835271630041202717715681530050858890904183091778324015733255757236109101580482580441967985828890176389397718041212941356619163330226370976268329734773630524413753494529257754781863229577908457569032718062086750844184472834347570239536056326155201810881038696860481717433476664625621082241586991225812173672952437197866259897373157784743844679729067516736518800101031672599250959815137720332161848205045025007611471141186707050967888154770682560924038751737207811193901992570725369435103201791686524505756647772640472180936813395743439078761800234463478180846516292693783004681080895964724137021083746991000603574423399483472642365997697739565793596648669477318614358267250383134596038860702874813526614432265002227880708968988988737493080405962374293053076826540765411717793130826541346297462776836630777435661531826481318792145062405811198530844655829858226912380798813160973881440163721569917634885574462693105998116146807054360746972666730885604323790569427284253076223964273715359978030815340692680006321945430455280199860142711370872816427712142263431097232719784998704069638989755157328661993441529401194894894909869599801115592481835323158814300011842131902588936147873994871847028405399169811064272549350520174591847212829792438106825404534383049157807382417071716548998177187833979248225968420666706416390190707768457675226123463626193995384720198209759936791376844052254490031460575054413862573529726918023653700705063568941702083630891996044965826722959248558923416329510449787545274111154340053470755669172749024818935495960038271562190088388398068258567446215438429638813416144469861387009096942616760208032476355018814040329680679835588802653484030011247737226987035720770688024054612187818344447061414642220551886870397419965104800759185726414865048332705445586347178339611571166805268460025130817411913319730985020314703929369141828244979458118746350794440972469365515773623521735815053404694400936400473790547133327308952286757212455297814986317480141532831981218157144776502263149001123086063793023408647358626440541879077132102385221082903921513070649860566861228278306927456359858970160082545255406851398044427390606896847739909856033659996912142151062203182419823681576029939545766232546225798544936003488100493795546219182495490312417078545669619133839724414087313221443223560772275469655787068013125130766170757522755288995196083208632760367504798374588838275982584188716625435557712975930208506356967363937122210773117642423759034688847074262569157860691733884420095472655868693804788798853460305074114676050174059869840188238249706756922707852403016294480987516418402809622158722332117912191322396344308046005168529470763240755288495911503467885568547110796443005962189288373077954193026536584426645858119360236884973893893358131236585957253729142968547596265350388138211504681166184873067638534159817198960647922530056737171392998222652344768890440903942958874497053450492657340534404950722261826476694600389620993991121412934627781512375531587430119694418600921042491946241808425609218148001707575278154030998716384895216667657329409014393641864525969281112155349965482510043869560234065512374117610382279304357796353832138535779361023572767566136655174688134341190085638519772716269105777397667544752112308407281551063186641110391181368268011784028035535033180997148034817583725977310854347328290703963033914233260949053078632664379976313477320469323833039980151301644772548530801510197665795747529811668583071320734297978242386191013538568847456151931045213697759408021294424885981327060102359352968094713641880316402184069434459849295665713894902493734764537578851014033582135990357328370745283459359873866508862907217949984436520976291123753201389817868962086019717213048013769401358081253749874316414733761110700403879731481327366128134414614015062028812312964841192776605772461602572237848579751596062846119891809475923058727329328606164325877380198476851130919034536367632484283364665496341548696606675798822283175208724674569561785917038686953070189275754779088627350245328334100342506484849574784279451309720531675563912478225243235012917746633631513142936777117922425886154614922105224375020527023628916774071542994620484847765716560515554737127344964768600124294594714592715001471003807303089010784319406981481509952504990850744144964515173603048334536187116309970688343136766612177268007668348523128350364138371524518071578343144952047467567938905941913593215582743180827679406961185115865886327377643057697587542832729089317101509237763970252435463768975389494971467359397430380888536860037432765702651569010253133830734119885207436369488914639018501744924571605683611573454465059643881519676195549227750953450440893566116496066519058403193663154983497437154203819963260242165229405208778700716060684766534758748916704009916082633385168020080405048885760694176577865460810820723540078488639369178154320241426505293354277745875660846622369288568123133292561261235256785531922213375332813363516492867281651918872071496312751377718845934838314667391677793894714490889453532680855202389134062406106528371557396680459568935062620695390268278489516786937751530412550577162465259150382716339278325770531171352930227692196632869620798522311181142960193953850924687498620070544338109430949277948159507329879155210160241450119748611369522285092212852813824570293032227779647026176189223572123084451190061745506256343264326562147424832561761153522386762221700802908370661822157393320044695725445229989991188431755677388407747966911115439215417944956153478651673184696643896949254524276369957021748106422271849652943735723075220056207411130072896924286451944171527022637264455020523596282445070630771934761579048221305568215457139994617211411085307850660300120371189812200827308583395539820589069061017861328862614076955537014856977190049697039330309651801348304720476087039640721882498623638587478814436784569169724978777030982272340221145046578552827191352546947143035275990939793413754422719012024556590240543018750125119716435776594606691472552962887122631806058400823255622524530384727573782908089505801222820975600456796411789607997183949633694399179379455469571927557602044778175978015388866388477893024649939309704230972907459714140113585529896807765412294459996359442449522528811461650087362667428633366378783346662514627715854569781388778149878012550900142410424032639113511075518363232906427235201384917342979688961765962102151375425532423292393037112830729746922825304316043663626837496782405688495899065655537216405612388901278198928051245924054604064320232470222166534446528962122067805923069489828996675843271638295113384222501506572543452808653339012061245181593399976731212745904191650313808438588548016446126120674226308029977326300360093713369252084641668517986682964017531891894972707847947894703397603382187246975964105692629345413266060528347071427038400660608705761598293765664181968080597125867912583308892435338706392483149232139991310577488003922853083026387762353546878968616781786702320683290245408076838623224983658193002922968799601420269991247101304606880493000638853120262969345837845575632652594203162116188047397369127024269086257206506049305152721408369249824397488170653226655559449775665832715337829296847540526548358288035657313921214610780153539347835226207976076946168876430114358524272233723646988855002094455275840302962666856844081766293291452137772048110790637266536704660807449519739327018721619044684676011960134044956848557708417750475836513642574721735576244762978717150713261667412716273664438107629604313094428969497371965141673202051915817445633979326940820989733688568069901109275117585286470786533583664247227757623461868123616550942380510328263064047797942151063136084100508835563648567547381317493212871351484118995384664462190866589013506449874230637279552571417457669151996916924270409859368135881488538365606716772030232698811184558469064636039865808366906057231656211951193116937650377253371722258540457313473237383533121791937083143459043495393649754643213866611930380243460376842178995100338772584518299046902703748625190488159098692582062884386819474282872980115522829156617371896871414855580179892864231619779226423289057203279126691229766046555328864768267364321578175263384079348441103395394618249025089795196954124821643685972538912223482310109199583464708899243992298931497078502095787511123559987214651034665741434614829428967428333802394306584477458469633359430987362811953453518400356509454058669839297226788372776367280158730642818372182875605917838630804855852420246178189659203437587382007313143987554772337361728272583250185719831437811387405182412368783988197961286391351624156213505940541094805465500164206288920572949611162162113050402038557325431333024558950631067367936611318153854810023507303764110973942973756954917700791836575148652033411756519651474800034591874142970228482783950150557217039469375536911748110596177461367744944289602462137274637274069720165611598466507748445243616769937369465337749866771841938628315536271843426900115553507410869477054081430287053781532316668174001761433261847823250273169400494042990324465308492795796008958697421991828212877366624163731089097149011406345956531300275914140023841183483485265586993192321555157485947797690816166469044557255832260658892615942710042684013595996265472441252752479660126933682227709014013002675508541470117652788250994783969626624171862885916722522793464173019418067898505345599496735174015977358875619968199716219533552738926637031051890494978338580207273924479022246491648620522810980430864243281885381172828258575698372088024439462447934958632586064921165575955786537269481483937723577490467737221720409666604585388204859474442997324805317238786488235195413838346371458154199153397286434670625395599277956221756084293733060481746683886469999967199808248860997598988465769993529406058206112180431991132713457015628241212019583216636957380809911503435447564199491276079636441647078944643232895303344668713941249744967791690209229128883799300994462500424955736495750871431874087322800538276593777301272661937240773237633293854544754939117218573431236413676044727898884777030673570034488739595200946297274238360844588881821427893674692289872719794617552712949171013259904704167278643987743105273334320443413659380726864695786527091362412670288650332875617283949480199386204263527209082186767929892326304543956845184355613429740397723016551419039154318260427281778819523773313505580722929854977110755322952416544942744038661223221183759746326498482668536001557277096914159111874312153517083375211013183593250726321533259140501285618966863802490518474254707070066879721010077181030496698210597599398932161175581512349806140123118157674998684530687977209656109669570842567739926631008487026917889091286956137809901880327742971892768270601951934752109320934869765144253043800750296293513146606452851069332013443570630554704382747449487485536496427956274784905893103873987768740604182379428000525642086938721704335210558279257980735181414966979314982367116027137599914079057701202907012346767620471172401133094852140947507709878927974690819147519376781258916641942410215263854181358354623399721795114283058445754664116386572155146227613060724837022655475289960130851827789796741182786701725436689175126115738951255328459283705735673792038332771275966384139356869886544157959423900159524818315186940605161679257955706740318466678645508179828694369147823415549800070451991820864586919375260489703149506500802123898113416334762997208596193606353010669216102269842389887094552624430998968131186451615404193377168588441373578538825728592377440448612020203066191898235515693843215931480135839738134274029581253133656093204899636776425859689995495873537309952309610072133005212939182414561325696226801098867717882906061991955075678342181331882095542089225604653021264291770836186590776579787363667069660002867694074402468427249988282181175359142889347493588450134025762040336381857980331092417620342654222801867511538594654519800002440876114049836951162662750192372554175899061991906290784393548297931360854697304660217388326454025385317464060515392460270735562634219706400179619734817004536958508273604064174329604012897892903752485301302318494759650641425275359084845658186671712160266483012379281979192335879671133821261746570768835599550683335228772226084199813244119457702012788644482031756025391901885339469726868198018085491130601667643050694626140156924968196367534431524629400571184798126488006430721476852350356305114701192180938078185596501406019121622406459154304979668159832955371593225491929291926247593357479974910111035479049436421729173094079651242582981533593842859642090017067207572422151856331378087765898272716477356116505494492527760323026755374093035374204268993047047278479131391553691647838872720204941034872333171803661000114147594995620657679606204475115479977905970944031101379807757313636918891924602682562733654982817525199083912568378542859662922923704736713241305728532013661459371953714893728644715593769353695924513479019412720277833400288463057686946226328790417273092172568136932546842785412317831005776620608067442091003848742510088030854918907472765326404312356309549410618389906172934527763348333129738356175599668898544090809612543931015042371463710234727490208128449271087498194070337397932790231655494664919249685556900070331820527927700923879904712981785622980056040860293852786608014416839444705794599237330395343625677231165730337929171123427679896358733212313404887778628928451238376200468283542093779290360409735166492249355597416078350393046779330842606201068250136256437582935384024422088122049514231186924987486386922255709770571686751402668463117086056087909722759647760111192263760999074221853531262551997916860630419344885774566813330605196726150306444911793623636315706197278750196545874376400639813558827027494733550174136896390860197943805543393966475454387001187325653165083037204644787454406449433808128377060422465144611339962742733002574791924410578469257487544550966959852204997217505241888127436816371252790120771208092431156862674023113879531236174297777218690854959431629046382150819392457019720688697146956554700635427875989653883984765265971447058319231040626981527727045895977255770905523050300664800936806107450054604610397698279501524594807393099512501267065236510023558743136424070008416804213522349576537960765214664370640100210453084611914479027691656864136391290070746628452999965623824867446732398214983818615825977108668636422441563513003831975312156804175525835009983723583171193533501782236576964961510324559549005090600262768394195823389119794969001830645368080861318691095973101919011548228483763812949239379397626324227241369442235711216350246757630159193695160367142155317905915084581982797609343509326821521911481105188403479863217823202421104691839244143919644602509537137465590142091458129871968626743829025365323860594221268369465152742323854658707635430807412874755583770885944383748932124569993895933658098650493753903580677968213439946116629845206367354440478040241152208147047847884378168346630550895572113154003279420848335567732550380587563785065372446579951171277007080376181880859588508139391302063701382117980942753440726346766393542850829543275168072355642671555135145516266084215524110054708924580833152698259832144444062702113296080126316162775848061402470651419774813974402257085656428945474157242235893836799387584558606751664927393493334857578593093025923033903249925802452928325559868490477635990253074330537697360009102142806389826773193350715830565814882983312166010168578638318113581909715614425901966904069916789058597977766919792967752743913284801516270290058840699327499070875081504588210302710253892626213023043634438957621385860258666727257127841683811540495720040171541891264342129606769050464645389966030356482089900989596777679522985065453229500095190697538100163379643439267150956032532346334280315920319424327896526362404605954432140230470878470882264003739306894517976684362812045551613042852192669772965726304705516783708137205632647644097851889002247751584331244400558203132964873335621281299717509879304619288476150109332057109283431502529001299150493028581031388664548216000769077942923394288901958119435090722574806233751271973249874552746532634460237024563407790213999716314923882457446186579151315812380783168745156472877906107226071419443707680584882191451197597628219448713650209673215406805360654332701478226078972457384732586255866424341772998013397576055716829423544245310237330356105227120287256517184974300181658805985949145921001482457911564043446049296375077517623765343452571128748736683475042340324486422980741771950961157672017460212375000343093255257855859277198951018128053837238080978550325407234199361789853768134577442527702115229975219525718789959045191073349653955820878281896398142889923003479767972076383190379298185808476922809215238314249626074164796021558425557210308754766801631838440222800550783465777015428522380797710835404996664778131573332303144318415473153348891859475225796874442481044462069842108821743637445608331048146899622744287339341798591369054634267513173964115613718772637770100806267461469864702974890809600842718955909073251470396524319777099477171768967587473664352749169748604394124828227185348843004451978265273237048553782545156365567001316028448768834710532422641102380518061679205162015773801588206664244457180510418277261829269152549407626154892937631258492719033672820382433466745502235228363223303303588498621164057491411472890847331713440771748363429011212793517034275378352451698293411530204186563333810558260562682373432930496010859284665817691922432863011084933699996961786462463745048747116470391194990030628015332701370191200450760857094229809065249035739502022559141983819390742711457191605178020143282612262800696462461845326859864102767722533666771388582815245205576926226742350534264234612616163494445478555919018674566723039443492562381116590300549213807725226129072939143803666847794403804034573197127632276495815673691688391776493042924568568460383396331869780349811708739849417094527914268223170364569506352973511214621114908992490959875119891914002201928543340360020016065452018805546551793704705117911784155214540116673803430547871133266630619513912440304683435504710983133680288052313077803153090031854465575440001750060605408581808515948034989770356122583873261823440265390089426304521951729320287328409207700383100123151876966524323583031388935239745236968350327632037316230013986711095983640286158845854503322070918325810361899675959053468566534714906108407864581052288055415062268431577178677164927351157974624449718170551912415953093539272615139170040559982269069144788537260760097258745113985468798064087385257717936930463104173511481167429308423462459460962543960069832104794421579983837186447051182599950438328122680458288337425520120137574451732030637289392014736022854027545044245408438033635786397265945453723332808703182454632061130743471916259007228432728541803309270197500946096444605584853072197436724505877621601824420511356681513957999452264448682983769699343994225768926072658063255358146106163505098999696551897853532925142643283744909834395865851620590128292004057571404777642678387685668703868806130918608461650915274491926100585166495256709407294941727457418325940432516141904359150294292748288413140787948986359366462074746713836604803390213998570822968145438813731705421355204337496672010739199285545674998128780178114493708777570231591229449657604145369857370727860129063567167048674305858866375066717347101711427057387739505853397158515841254093617246606188397586238440372102294736076889840979753873898793143249127390280808824855731104585046537769857330026521552755052259518063241611856641516275156726512986189523254888151278812592686063111446785816181415218227445732930445311585144011106096911480434585749527586559521968949018049836045512020729497009550286634399863511982953971128118927749655951377838933784252855345681378774160557470438174481259093651353914975509617330930104363369097847558011805545516823230152705422673827213285554606402424177535395875396349439257879147269990316570555566363631107873583908853302109598741956597344312363552802425107351220022316890426842094449146094093908848454232919398697089400054268720672186047939476318363153358024503206934420826394819801998769864748411198961176921530138349929123130568849437161791761185855627806231398428339981489989031517554700169925879901481360164293541370512956624760397990743413674286804847840458699624232365464488482648339370331099527120400687180993305421299234942550487704295774851922811662380580543940934664708380776764694636606791934436854233668907969931816983166891497973095943662588130142677860603610047337982454343702508574417771555874499100448295382819121831778816886809637030681464951442852987045658744822323017354193015398929135356947939839140306698866302482879187121853214437761579840307617080110522099185105281184531897202070221182174780155244891343031372681720259990267379551766505422208965641261232230697112205687652134593678103177579970271087834049239379072209949397401559634057001243257514833108769363888955683621052565237599125728261239118022575912894175987408009344745117251993238187747886278888586407900202408943623153890915214818002421838815923966958787049692850878031566893781773464813916368968542781397442084762131956466252849726966494397504673443856343004132647844309750841983656463183520640918053128194362601997214048354393807871873141019891406717655832279814142519576502831792032213339668060138693124678086147323694655541522077131244528253802212257686660195802890422055107005242552590674759212912277749904354621960351337529800061117715230093493340418671330565674438486174036271062712551650355860019081761842688678384695345181209344993751433013590249265630411818871254942665247341590902374863056013659912681932484952788985051121820811227358115551518694832616404366490062429428314767614403471928494311323127965060377740115015320155059011183773686991112928134219938238861942579094187368578097611857130108971701774055507254283957072531780780052063471633303056993180268811324636908498651379339810544455043184362168932560296467858789354987134340096423851366091213584971916411716002520202011394261611806506910717102336647860845390923567597373075328613344631519251210849547351316195902683921154170420914315410594227945953667999824864089646190094752335728668593487864038958074636801121239687073243551314746481125760217832551027923488199932464686665557283280854081782932546169494512387423905425853523327120893410410728807263709579745414874034347298836164872219912390950976376370657059966587673786130299383959548096535839326684422935261597602533478601891806412747416883653296136723782138835982528170764256084886875777597602961751140496094774423625070287438285325047835576946313794396636877736116310029692958421411875762799468941694906926445604500237069120930529645136448763546020507845697850054138785172342116922512128840514349291988431425294645753905990244686733733410385281678970312606729383537299554607797672907990394591796359202264492486835738568186180945133516707434961240365199176036679479430505970223502962244183781380913196804818441600413779120622805317818799661043554644440443705675483765184690435438142246744131509594661229983124492357221608279423279364533295157372659250705441584344308292111187384818184306257974181607894350319552740374868519341191483135283763350477192196383786427703966689423831363409240725954775713154895328593988160732590160054997239929414823714727974826024035217860503862168944433455274636864484104518503915125790030638481521747050177942348449246957290358941785218596751364264136325302012127514536979011995360578526074657060450670609980645092613668861127834866905147761396712739540375500705135160407800946104520181528985815263489926159911880084213321212768952431725838938601672188812651102720142982130177098645113732975494219793752073889227065759762609687893651335914924691660042543013159140121403093465609000857166311112970382917214818048185101582696684107408042143042945014390810480019118356949537099663818754715059209366691270390106111853299655506660134809491448878987832685380104145003045774887739416422218687559783784403589016023706079260754932303246949584114360114089506475306440896925694575031099223891967798964042809303692120072723649900326855730217433709980256225249076797838874125035531112686624813374295588750086023037138555024936706002261539102751472102701168353855022613318138841001365460254229596701129402640443828649877042750795516229713646589327314125732074265431844531268182493212072736085146019842646560868628969743149933436726067266230293919685332063288083684098369674426608064526187772953954892826318674314993417979569039823495888917128289051117477198054203719038275454185022748040457767103249901035731885373830510569953185345260681492090178619428435327767997448105824239005042284690390909455119903699725245439425773459997919739647511506450037183108134359259135471444850889646470849065205304395614092274471027676451130301998192579884981980383331004755985458519740718112147812962705310617555010259274607985705228893551463836617686124231748426817936045494654384933976330192421266623131254582148198369659191509650211552964003305770959771233149223935846202962723117218456932567654472669816733803847092639735772223976250554596127643265710435182191800068647592743527104298607516812775387380003886771219532565745981432787326595836968342349008462815121251789385562875463614831060974949395788692980727720786032761748572416672895325498419331366014371448904732847968285929375551256672205371236319010761607531035489389025830582442491033340311783200278400330573275229324139285691959682207033048166845240280073722049031522270750064451502205702838802314453492907125113196867357626343878692666709910893945062710386453480965984908868928331852364750709250772228522623061255781933618377709440518884675617168771208213362028807000568991336640250325843144807507365386167323430530383757386514877678566741578803351624259009223626044690394968507237740190193077024096179943106691946391713265839010095279092109535492123342892233114535396448888859072578357724845567858023341418639436957064116245382812764104096389861125288235620089839796959708844667271837724791853923155783350300837209697417124820469598763421016230556944144273578255047209140685603269167269642662464781417402044138800193094975708451596078152422131206951630446037496865433989208174418961047669463435692646401380865304211042807149992732461476622644253291650530746199877456840901162470871578154957110644808251440332624321213214254142116691052442993385768448482702905034603814208635913143936488381755746324155738630413306167461255699186732545319102104515653378661263778599973833109965924889965578020478609385756785428483645146480030473312941683848824619427905074772081786032588682913441577171034065769355232243310095044798628461790230246155642424833564029628986053338033122509288271156493098356126356548508541821956447282864237858810739664866039796867178105481303341995681155609103956708352541385258044674233021538488882256047867864755689487264233200251948632434367557411696985908027963208271722356561030717196004391383906360151985343954617673570213543813895091001157665808641175774156333012362213294444222039514585400935738306777816189406291014204426171617177142780096988819473458459887462124401026378144063946634234937478266777216707400466276855252285387625315985860983345555708831049494034215551909856922269254608364369447708759473754568912693844211940774320914411502602340550200223765229096489309938496752456919270003385668591424974211318904032650304107631242385298382914407054967999534142551977432253069569518207821850880260921220586532594795739409805616209429954329604196061909860469006839106493724703640208556506345365382655886368345271812409551029573250054776291206004935504682461872164043783174653715005083196118181680022375451553428281102240058446959296955227821993514685348539842528436786789259135360096841258032925547689013177486729459318947085055431774319351281557368747716393992737693541108230965435660525692480717964031924241664724388845193264670242141356326509471299306016413454162671571381531753658371397956451669887495352630248631157664761965740380082152914081452732415621628375282370868233950168887184531780269004718739099708910660900090201255053397723188285495192828542314394947620483330304687649237120551521237832434525777447953092911201834715259217245519280176880179885337857732604864405057483694102485505256429471768330406332418310295400408419432432940963470934061812695129941627390018523946146290853393677169776503143927133001591974399819542958121940959619409121036386106497029519948200613092346225268222984335952952211870862507812271819553684431413604081858429624556100379315289298469968791166103454024434690367788140204407001004669551371707738311759495150757612726027877731029702306303481073738582347882595922394576946021621186829772467105355572710477124514971906584017529758090618910480942805666401277004037346463984772905375809948144463853491825056157101189240572959686371293182284160480818545596306440473897493917768183499944319205900645179847295735484551449225229261645269968906429508149998138016622129015857135775809846587750617782253958791389940037001143544832241065010658361305409557331037342515976928994199426578267553413249193592307251067458813978078291350669052525953950112448480003624625092254818432528874435095079342421604083110240934432048412320452642368267544141594660095901465974593532827701312505826582575011497446990637441740616567155660949020249228616684830320354314707270016757257201734175571113012610174151094479944413698938350396910278103547991209738636261259356477694949886515282971734718664058449032335352583037449070952755124611382023143401658303667877578519296296527334023449638130475844470991345333618511394777165597830452951636561490737471919475646861928324359374967832521186421053437409487480470461954966554705773855950738645971740817037823241512416093275245345820788368984925734262305322634441156380026457447197182213483013402950350246138649304465256498219312777160525099167726998120704957725403800575045490582281116114994378718817183032439438208226746360325766986720916774835054649560456316259175632867603045141112409889552612372622765216331693789078480741915298207295555848306263838407170482811223590205255671667422964415870641962144241361255726603720198161298973619057586912427934170325155184902616599199143436064767051953442782556327831427853713857411098088989225849680427893366785692117780023838758363675203567047751767933295657237755027185531691483903456972232893961200648229859233228579781125136864313569508852945160079164443773633476981446295403950535828103167719751726784350601629663178850550389728335502140195564260831725188380387307159781158911038797569919167004945795140577149749170901864075423619030300911182620763077511907189012876305215130787412613925421216160360751332520310931569700798283937005333531483817004253266974122408656002783119309246945216360789948717449837131577677922669864583629782440739388630470181967026233829667565773873102079102987908580164142215769036178315875089633501680791005716918960107298151922455023391131279507844863316483788898011992028922935242614044660187284736254085622682834529882590617733762378374747202648059522912576707100472276664571181081828497963723051983320823361890551873317486588183597041968899647405888812769324885665206175649824784331136051942330320955997813290150374169555690598341682414758358005345032263076159951017735855589303019820663937187166738223420643133072273883753060709742405287892650826450075887658352906610591407918098029363694819236430463321771822021175150958737396912367945520530338753965695796553479705539515710152369148055346684802318377472296952509107769076222779644096906583067893946837767792663232669048207226484434581284994990609048194589647870843829686890438595763980976771026423557663089024892131001305788227380520948975891163833166047675665100986690807244435880890604269549826217825523138658314976275936944089547382635813595490748259777205666498345149897846304836074875260873003896477439834091090867636750095043118229481634887286877880618142748512183455056884216089061037969239651354971148328982756655369145281624013806819439797157064508394810115585016956024709722310092594188732446592100117958881002635994259708482658147888287467568985217077229723202214489094759132716574769640290873606782618033552995230016319587100167955339887968922205047010011389063615635451818872082020951265796370440182994059107927214391413065859873935945939866806647249901995379512541102421318646178957796346016199498645184725987268058320037711898529749988840623868356343243014613790813886854385271790938818469590098025543064598325239352259049625770848587072012496241155997192163530260660709931448706553743372471711358996628745306173083673087048269342745699715075360398067471245252833958545215646060059000665959497705967713122400751567337815731755845116818658270900111989799269094832164568929732353735566608022923214255026340432900765571233256796055879631067021720614281128969644791733928937006346217595371531877564139995663256573848449072798997910083484619753891994751816910829518221088342707669386410746832407567737548811686421700767615090296347645343686568901979295358016279996388099431659129877979491614467543895195928365541638941655634949364961607403740873577172023120167622227906175594503905136634860440145452083845427286042679614121738077233331267751337860968115995259442772881335900849426085481298429404772477164459261951878223611738672150293049444078426200516395163393367687521048654041265810615151381063263935652729823202648067856665037222449646098366399836365825764298326138044202049679510635928460540367467980830027780617634593554463824431146300071372144602579306617234168891833603527083083269873328058909495444334975114655549063249720495617631057572031874245243997961001300513101362881251642646541467566216418471740031857891367923431107308911790203560135760701742446161244397707823612390132206932904487297474667708365158321867415005381327784224688971310518664331206516637603593863201168061905577055537633677360364992716387876270201457406093693672211367026066251359512820184684258506560590497065152819145724007871945726278627820342047898093019876389613692251293554098133528921703415241378403497988370527212999054917321986991814063285400208883044316721908821428731628645291282887066115443721552877170570604616124348447368192516248043205025944481980530204535986716383404018559523989983031812399260867758441326518650885918827088514421998934133330104671880369209347348081232645725979472839249731922910513395615257747541668539314925713185740795246049806364284790354471628315103815173988609118640232034770300847089190756094694855291947481048264317280061195943077860015918935087735267314720428607580533653591482200744245764521762708826753820707439580086465928632736043303848285308853903855332348614871305843065583952661440745127334275983316524983354636338311850616828793114631386447872731549903896191810618225811994194258543856474840852403622495390802298101905113183569217747553051194324637039769564669265685730461935387485745474548531803797420197881185660590162228866272412460152679622021094012535010728078962481494326411253419325936549782831143489394327333139421162015929032280145593875719333520986496480401015368469256210183619123828239613847237761325489122341426463456792867754427053754130540233036035263170583560480037008121865434631069654336463838256630571872029280200897225456315873962517477987515356054666388335880482803738335843281234886361107822104373467807207148152456587769815724600397786335996139383096925464081053403190812702627052226018164361018089519728465893624253132229741126080320799891756070655845964271557907548948044677077363863257868119670264756034808085525933006104325450582318119445844371631130489034386859999641254958672328012330708972446485735538272452812683116142324976642281414157806727682979925482140939388726958044973071808687704736117992808583199418428491405610310555841404113412524512607651482794741704104508555513921174117909699949944138077122359611486542282513706246826158111267704327564719834230477914342600808913796656021750262931585150361150826736050413848790484905133275593843111446885863249713473516993295032625202150709018861820843089366420307862925612315011763286059087359702646725316162907318251933248352262736009240653208822499846306085714364841289204210934994061604517285057191437038278296329720531577065146776291030097029355798319414150197610941914453739920532379971545817364964168876652813969275610223555143453902384109425782195979757650614340946753732503697778300949396933922189195629933830643427842357993425928608221704765171398421314049866443720720332523788140277791693319134495238776754114249069486675919919115524635059068477480012114318640538800382974854180294512160755863961496844546963247293230634774004814278524154396815808981949969899661609677131701008847067152145047651867360230416267953917241882452727879680761316075541059208603633056503562463652855050253493849478608019628492062758037223414401417765687997128882287982851856003322488026022040865006856147528873435385875797540153930164571391471671391160042539309854941702496529294867154798015788742502152230116550540162661693692539273155844284794665714954330600878709559778016078241522501246825227935293632552928387677803748341379225975660508623451899520006550271647002585568931118574545455659515660038345490294841747607977013620826761777237291808944805985937922773779602164771924014259621421398152048641717356805328377078270519526709847397617420484043908676504757819931941243041177123618041199834460478895183606359631910158614297021460961506443641195117499315571630596201425150181128388605065882437056059202356631642243208507714451165052845415067097808080851672441966218691001993587878740388639996683623023734138001598565353767664950990981120035086276433367022305016868201908444769762114808566372599134247909095865960176282379704629611831845169982707258625668463208361346123275876520219495822276097730472791775307022937656401471570150603123068394019432703602830427629891416112019683710380141408360658819167165008669555364748658228361388799129393430801106411036742406503306803992584318621042791299946447585114169600357210438157957095528391813802687194266709630039430263970789169155406821880784658555589183142366431661016710970043339646209991971708490052667399949393124645885563312313000565256168576816471242098741078655616401684618105443606700332167319459199324804559567998844314002622600802628881188006088161891775688908776969324799915484922813295198723011775033753773984506158063112672102525281790176367584254556349673906995336472433972094889433283905354468728810249741810297092250546619901076403998845317693420655635133057775389193863669306991834605425655868705164472180005264501435736678480521635938716050416503207778590785511538467619550627020032108893492813556129597923638223179897023498575923081788821088015804957415400699801583142361538757925647242388065271363797533919781055008828224632453178217449526824788604797672702208962436493342699356518705273202494331071951221069318730689993098592688654567904468057095325225333473423398110323034834929517178574105226269026108740903170496491984283872607251986315802385098293436390674754854459924659801591397981418582800158623004657928930499141495824770952134245875818682387530291630027075762725947865821227819368622145724985158466580099763293854618850180801176478217411245219876559766971294143696106113612302343864027910528445943043133916663267112690598511400033628218370711265166997699353177108131047643498369142260604016608498278071054060236977815657846742243817272015351033515462368642825223680361745623868563711420294182888855363490410712215539677378212792938504001171148596659381275262256682730800334574549206704438125823923904766613486206013683813771293988827994751308475891995988301215387152574419412381447476226068834648858706639617162206593451235290457471618073014725679837379893842150101611995440452298353244439201356304245337965099464541409401494998025031536565597836490234188808696463603490112721627711519596821915331825959575551885212518211442269003344859271286227913506007307492776291453029668960179359667440503179328412171436131912330530510150770695249381710538279056954140700591999368475200255875436698833909225866367218550888340455501359261125896501916510656688648535225387182212843221884399211433135403492193025160357801967177079276486051857093141011025001336496825522387474808295736361392021889554180981081598463622614232871932724282534643030508717884192962595416173373901132147755094503249975052901677902751297694205366921037547465221635547109834317374178362148899395469037802172487094585186770930012509897916799608892358494351340358146933481155823397177111871069488870844726702308338279055819352376060712105984288779181524985526892916898169771532756305479326497428699889380770355624262738057395122369955283094631409213654957473184032227153342629154545066740409513258489251745894951453040542909925854317157799562581760030422099105501627694451657079935138142010860784796990853862871522191280775790778371590639687771159316980947819357536812939905863927717243432556756272342151545076411956132389217805472604221690864013707763682018315188952607119946758811062148170296556777942812437533627450340974634326975205472489671702387269156909914717782582977963643216463960975465090627229265120385884158666145053132529879199674915773930220784503882143864875273224940706693965405173279072485994435371203100135615211846813669839874064050008341057733642309562593482175302832142539877643154259022027570686612027858107329925902923992533804455918636701337810809181701161499325971154106538957803193456380395910615088491686184579554366213353862404529468229005466380181873403409584627731219911460708898848941094056348224778795961427666141965047354825879067952211675767220530116000295439261008669342189007742280071068070049356315167614419942532751651005774976056088498859079183494367859475921643977167294332870981630985883183324300422297953590981162371465213620389531664792862643382599634861925000395120572493802624931228823781014097594009428931662915167760327883521129852617756650413448593360913038295175844623203494974914165179908375706734492901224902529747574979742050002106663406003731866003308390615816816885072065325693182794964309658585406733281728826923008660251012331523873157425596492124889226549015883614419445399308078104363183239762732476535449006179002325229065282571464204281914919738887388806093573140020542097502020482802396957530453128838606753183180413618231714722120716858511620673458780848212762689022503174722516119261588243338767449952444434492732505531744736476097910021749893176437861458807350602081308059329158498808470348829171596127767256507414629365764148529834296644442209403194238593555813227361493776673378092377609835480829848834776365785714688656577506221151558342984932908100108088372100268085844151793490975148337058265267421349296237603497728123188032647729521086794670644515840940201571775430350624975038471658580078746878268495164463287848960878856056346450934896163169743105045165581323819513175905223706128682491544237639104590089628822641723836875903418320273003356617592635747925184879866743725876316742503710595986069001288762512476804118154783404812514751164897754250989522763124616991870608224785876468099785756699995690777785521839922485175041682536651172403481264582149129122640889832309992014062260099244291268883993005187894563801642518228414478270295351387046868187081518459838095851978514656128229212018856271178656781951865372510349741871729755268077300762982107262353653936518893638816222941960957234072662945228277096588212009569956941412021462076133412738736146790862165840981502021144402381041280424251250883937325527577117337986616772117322486188058793070661939091520797904347760947648229902630915645259852652351426082406577287674223134756799727233169989521419114425894731716176653550245770496344605597265572794815166192064124403378151092763885978383102009455257854519465550301246995381640601210343662742827682420934279626373395652395999817378249059327854481350431454370932564627625133649242512820576486994269314077980997512181283650077115840159571482838806660739273917501233904422474377532434136501025892293378909898783835997744621072578866963094511489842039592491140393655505817457506101458107717258837998857511634160292786691167461904365591738425550323512909380910134644272821236782228219560211903524789255642834093938631309207016144273343561768392015946096695071260787134006919955539723059270708621799610107543927526866927300423827447908075410338089761911335554236211607220959786761543017923621639938468989547957660767931657662555862328888341958281025006331151526846302872456080086024493507245030108230400783031595576151219819834046954989509826434061777922015202698717273136926158519899556374615974574751476743761878619405436331799448199218707421684180814768572994000075233007328760708771469685534860487027489184792709249535333983754626094433733032515199669313204947984860617843400446621737370155244778071837898583388336317051871475231701394053764483680409312689893186371509520310162182341717820195936661217314875571498709625015897265778525908426192975934981499327876012898297481801302513955401656740742216850342293182123512761948372907243591709809867936260493428885126511278718652820255574252494032278725612072481843951172165236478241369093618112853011844718845683244161791308969305441124717285732154355994917446499020686931075617421667334186609165302628815065613660124919531779983740755489097111398429642375934585615080318880945851714180064949364535973649030877678201116971542188813985546353470746080703026718628888167099094905487828127808372458317234986212227785960019744988804796058282310039384459545585269109729037178184648276479018986182113845519243079489398133256876630653378351331911274848188248662596501979226917582116118414287306394568957790733295371259982778148292520276396147454871187308323855969429534148144661681789463134733719964597750987783364244289405724721486331025051689631320360354172622130078192112932513759893682282761898438094232952668404869672405207574076058791075187428450213304735992945688679113077409644110920248046893065024931964522048240938556520005706710005859495886813562695510970268577213963715728820134124358408738944689728844164577395064088737288423942837489012346099566084287150267414187495425649479841848385871962820959477885446374521648256438103084109135495704911087255494677079761801565634611237266318594849791726944047395235607649191909852897356458928629738104459452802907338153775097668122498603398192996423582181648082577188518353374547684930803109595187299401366263822653454162234774772311308453961738397188217257178280423339056239809467587898119899705455896748544161972100059530059884503731622192443130376572006764511595596363774526764097092375628909773455008189308634710975487576532392383165983021315524343179231843380356936802680309074711077530643449857659333638389866129257243516335469244971824181245127687203135672398351564301811199850315776', -); -test( - macro, - '-1073741824', - '5678', - '28148898337860105994977487045818154315885187098857720123923019503536550068661096672354637598480165134022041984837084308868395452311053157640615896546050985553558586892645700423928507935726495168161698045415140497515602386527627319206488017355554288186119966734541348472345944365178980166309150611812365395806608007167010671798672218072170128957907439061754394300128594626814429645477396628406899347464530711061456854894379095840425674956808441653400041181506139011927908393244086335493121681302022622095101860620829845276309901056671871394201026397395171820873860291913878080280170380979892472296164150372296767377145551512657194585337453691634475382711660977481092241928982823053143625635560423178221937797712042117395219329456302241242041523769729459117196674726421874136677546084294826873902192894352596290458993633922997209073832114653500019746006542685067098597091796593235383026677957632827401939309333387666537839316094357314127534920705674404309028805143966637229018794907522055172849778130036761405770603918926933967928498088220730576083729725145992964744748428164200419463740275487586933626822729962824800560240761474558428430552602958126365583033236298214451648931511755996108094562356049299254807663118738845759260918867850503834415322452603653397365429159370357398957195114808416983753993622244836716555146831907033098694343145327951581021334647653286088313114479559741196437718942355964184601385362964266877652784804939052253222575619622416395426846679242522689602653790030499520892085577500725499201404182852867226125589028845844427853042309885329741850855526415975172436890910632693916719523636332471118794070682433535223602563287248795595868253883675189904726519119448801915261351526420699337492762857231988691678382926943587916545335155283702413750409505677924941689908432596377494319662783929468093868450608410231488451353317560659020100954006099204197631204922322164052615891958008133081819761014762487524836715828049458561031763108536694043217084348793653430411896364791299284106421121855831489687835195476115378899943269695006351002750960984964426672142770799033138424141023720291141340435508636127792984379054343612312021179919125313130082850457997100339188672577640528770106417201838870495993792046104170422555977835287298352499757882230600591394487250631375216854641145304444397854662472195749485109206617330733383898435103350307488437904097790795468490159665178407362104384319804361651012650220132889393331591715558188458831449467209968941910069520056730023723713589013657691484906132221013788386184219197754113246865122654385680123164873741763553852763331300981166654373006819001402186381647154946999554421873268375821628561307292124869782352332192908982894920263895011772173577732089662917292761688897717750366293629569204248484060863934466108937195948443800932184673102763342937824460121045896218443122360882698024688871403860910852370898051562718960418260546695613954738347691519692022893663002976632717861663007580356823097781646192222209252702435357691413104372734064147456843965665955652873096110765830684236182089087886565807972209217987226299585696168982138854941280194328335120626512261001331081248654357371396176501075032152655115462224365334172115688122152776903406306442312011439667376618560819888585728027310382981804901247107028140882078332241335878660689097272500434681089309886067525115434143986130726703706878433743992681042628744048964001570508077876948518135387246241479296880092162188798942915085422997374189631465329853471853984489176174861323479075234363120290867769013702739919612009426292832097099802965008680479851809369240814572285623180146280697670984531193650342503967101652478766807739947358226388629806728654389375296457819784548065774571293116718672409678564611844170365489608651048260596575158516893594390739121659741649999445353536303503061294401994598214548838049962733817701620624687363493549713852174836185700963467241090073849191740103227875513619343224494993071747822732607018496581774525356633102020037794640774098109121417106381829411247224212510736696706825452538654935037259956407630578146638429226378102600142256743099393349884190724617199388463752205790794440451940454605274720879574121263752007572801341506805655067825631941739793740936589208965150634092530408044204662895618653609322262359163887982449970383124228287512441583793977627962068395199273400344976325835945060297779883770211181669216457812349694314847337342309957623761533535923980598873005880875269599846465045392510668257169787436828598047252165951647190114307062027405441868359474835271630041202717715681530050858890904183091778324015733255757236109101580482580441967985828890176389397718041212941356619163330226370976268329734773630524413753494529257754781863229577908457569032718062086750844184472834347570239536056326155201810881038696860481717433476664625621082241586991225812173672952437197866259897373157784743844679729067516736518800101031672599250959815137720332161848205045025007611471141186707050967888154770682560924038751737207811193901992570725369435103201791686524505756647772640472180936813395743439078761800234463478180846516292693783004681080895964724137021083746991000603574423399483472642365997697739565793596648669477318614358267250383134596038860702874813526614432265002227880708968988988737493080405962374293053076826540765411717793130826541346297462776836630777435661531826481318792145062405811198530844655829858226912380798813160973881440163721569917634885574462693105998116146807054360746972666730885604323790569427284253076223964273715359978030815340692680006321945430455280199860142711370872816427712142263431097232719784998704069638989755157328661993441529401194894894909869599801115592481835323158814300011842131902588936147873994871847028405399169811064272549350520174591847212829792438106825404534383049157807382417071716548998177187833979248225968420666706416390190707768457675226123463626193995384720198209759936791376844052254490031460575054413862573529726918023653700705063568941702083630891996044965826722959248558923416329510449787545274111154340053470755669172749024818935495960038271562190088388398068258567446215438429638813416144469861387009096942616760208032476355018814040329680679835588802653484030011247737226987035720770688024054612187818344447061414642220551886870397419965104800759185726414865048332705445586347178339611571166805268460025130817411913319730985020314703929369141828244979458118746350794440972469365515773623521735815053404694400936400473790547133327308952286757212455297814986317480141532831981218157144776502263149001123086063793023408647358626440541879077132102385221082903921513070649860566861228278306927456359858970160082545255406851398044427390606896847739909856033659996912142151062203182419823681576029939545766232546225798544936003488100493795546219182495490312417078545669619133839724414087313221443223560772275469655787068013125130766170757522755288995196083208632760367504798374588838275982584188716625435557712975930208506356967363937122210773117642423759034688847074262569157860691733884420095472655868693804788798853460305074114676050174059869840188238249706756922707852403016294480987516418402809622158722332117912191322396344308046005168529470763240755288495911503467885568547110796443005962189288373077954193026536584426645858119360236884973893893358131236585957253729142968547596265350388138211504681166184873067638534159817198960647922530056737171392998222652344768890440903942958874497053450492657340534404950722261826476694600389620993991121412934627781512375531587430119694418600921042491946241808425609218148001707575278154030998716384895216667657329409014393641864525969281112155349965482510043869560234065512374117610382279304357796353832138535779361023572767566136655174688134341190085638519772716269105777397667544752112308407281551063186641110391181368268011784028035535033180997148034817583725977310854347328290703963033914233260949053078632664379976313477320469323833039980151301644772548530801510197665795747529811668583071320734297978242386191013538568847456151931045213697759408021294424885981327060102359352968094713641880316402184069434459849295665713894902493734764537578851014033582135990357328370745283459359873866508862907217949984436520976291123753201389817868962086019717213048013769401358081253749874316414733761110700403879731481327366128134414614015062028812312964841192776605772461602572237848579751596062846119891809475923058727329328606164325877380198476851130919034536367632484283364665496341548696606675798822283175208724674569561785917038686953070189275754779088627350245328334100342506484849574784279451309720531675563912478225243235012917746633631513142936777117922425886154614922105224375020527023628916774071542994620484847765716560515554737127344964768600124294594714592715001471003807303089010784319406981481509952504990850744144964515173603048334536187116309970688343136766612177268007668348523128350364138371524518071578343144952047467567938905941913593215582743180827679406961185115865886327377643057697587542832729089317101509237763970252435463768975389494971467359397430380888536860037432765702651569010253133830734119885207436369488914639018501744924571605683611573454465059643881519676195549227750953450440893566116496066519058403193663154983497437154203819963260242165229405208778700716060684766534758748916704009916082633385168020080405048885760694176577865460810820723540078488639369178154320241426505293354277745875660846622369288568123133292561261235256785531922213375332813363516492867281651918872071496312751377718845934838314667391677793894714490889453532680855202389134062406106528371557396680459568935062620695390268278489516786937751530412550577162465259150382716339278325770531171352930227692196632869620798522311181142960193953850924687498620070544338109430949277948159507329879155210160241450119748611369522285092212852813824570293032227779647026176189223572123084451190061745506256343264326562147424832561761153522386762221700802908370661822157393320044695725445229989991188431755677388407747966911115439215417944956153478651673184696643896949254524276369957021748106422271849652943735723075220056207411130072896924286451944171527022637264455020523596282445070630771934761579048221305568215457139994617211411085307850660300120371189812200827308583395539820589069061017861328862614076955537014856977190049697039330309651801348304720476087039640721882498623638587478814436784569169724978777030982272340221145046578552827191352546947143035275990939793413754422719012024556590240543018750125119716435776594606691472552962887122631806058400823255622524530384727573782908089505801222820975600456796411789607997183949633694399179379455469571927557602044778175978015388866388477893024649939309704230972907459714140113585529896807765412294459996359442449522528811461650087362667428633366378783346662514627715854569781388778149878012550900142410424032639113511075518363232906427235201384917342979688961765962102151375425532423292393037112830729746922825304316043663626837496782405688495899065655537216405612388901278198928051245924054604064320232470222166534446528962122067805923069489828996675843271638295113384222501506572543452808653339012061245181593399976731212745904191650313808438588548016446126120674226308029977326300360093713369252084641668517986682964017531891894972707847947894703397603382187246975964105692629345413266060528347071427038400660608705761598293765664181968080597125867912583308892435338706392483149232139991310577488003922853083026387762353546878968616781786702320683290245408076838623224983658193002922968799601420269991247101304606880493000638853120262969345837845575632652594203162116188047397369127024269086257206506049305152721408369249824397488170653226655559449775665832715337829296847540526548358288035657313921214610780153539347835226207976076946168876430114358524272233723646988855002094455275840302962666856844081766293291452137772048110790637266536704660807449519739327018721619044684676011960134044956848557708417750475836513642574721735576244762978717150713261667412716273664438107629604313094428969497371965141673202051915817445633979326940820989733688568069901109275117585286470786533583664247227757623461868123616550942380510328263064047797942151063136084100508835563648567547381317493212871351484118995384664462190866589013506449874230637279552571417457669151996916924270409859368135881488538365606716772030232698811184558469064636039865808366906057231656211951193116937650377253371722258540457313473237383533121791937083143459043495393649754643213866611930380243460376842178995100338772584518299046902703748625190488159098692582062884386819474282872980115522829156617371896871414855580179892864231619779226423289057203279126691229766046555328864768267364321578175263384079348441103395394618249025089795196954124821643685972538912223482310109199583464708899243992298931497078502095787511123559987214651034665741434614829428967428333802394306584477458469633359430987362811953453518400356509454058669839297226788372776367280158730642818372182875605917838630804855852420246178189659203437587382007313143987554772337361728272583250185719831437811387405182412368783988197961286391351624156213505940541094805465500164206288920572949611162162113050402038557325431333024558950631067367936611318153854810023507303764110973942973756954917700791836575148652033411756519651474800034591874142970228482783950150557217039469375536911748110596177461367744944289602462137274637274069720165611598466507748445243616769937369465337749866771841938628315536271843426900115553507410869477054081430287053781532316668174001761433261847823250273169400494042990324465308492795796008958697421991828212877366624163731089097149011406345956531300275914140023841183483485265586993192321555157485947797690816166469044557255832260658892615942710042684013595996265472441252752479660126933682227709014013002675508541470117652788250994783969626624171862885916722522793464173019418067898505345599496735174015977358875619968199716219533552738926637031051890494978338580207273924479022246491648620522810980430864243281885381172828258575698372088024439462447934958632586064921165575955786537269481483937723577490467737221720409666604585388204859474442997324805317238786488235195413838346371458154199153397286434670625395599277956221756084293733060481746683886469999967199808248860997598988465769993529406058206112180431991132713457015628241212019583216636957380809911503435447564199491276079636441647078944643232895303344668713941249744967791690209229128883799300994462500424955736495750871431874087322800538276593777301272661937240773237633293854544754939117218573431236413676044727898884777030673570034488739595200946297274238360844588881821427893674692289872719794617552712949171013259904704167278643987743105273334320443413659380726864695786527091362412670288650332875617283949480199386204263527209082186767929892326304543956845184355613429740397723016551419039154318260427281778819523773313505580722929854977110755322952416544942744038661223221183759746326498482668536001557277096914159111874312153517083375211013183593250726321533259140501285618966863802490518474254707070066879721010077181030496698210597599398932161175581512349806140123118157674998684530687977209656109669570842567739926631008487026917889091286956137809901880327742971892768270601951934752109320934869765144253043800750296293513146606452851069332013443570630554704382747449487485536496427956274784905893103873987768740604182379428000525642086938721704335210558279257980735181414966979314982367116027137599914079057701202907012346767620471172401133094852140947507709878927974690819147519376781258916641942410215263854181358354623399721795114283058445754664116386572155146227613060724837022655475289960130851827789796741182786701725436689175126115738951255328459283705735673792038332771275966384139356869886544157959423900159524818315186940605161679257955706740318466678645508179828694369147823415549800070451991820864586919375260489703149506500802123898113416334762997208596193606353010669216102269842389887094552624430998968131186451615404193377168588441373578538825728592377440448612020203066191898235515693843215931480135839738134274029581253133656093204899636776425859689995495873537309952309610072133005212939182414561325696226801098867717882906061991955075678342181331882095542089225604653021264291770836186590776579787363667069660002867694074402468427249988282181175359142889347493588450134025762040336381857980331092417620342654222801867511538594654519800002440876114049836951162662750192372554175899061991906290784393548297931360854697304660217388326454025385317464060515392460270735562634219706400179619734817004536958508273604064174329604012897892903752485301302318494759650641425275359084845658186671712160266483012379281979192335879671133821261746570768835599550683335228772226084199813244119457702012788644482031756025391901885339469726868198018085491130601667643050694626140156924968196367534431524629400571184798126488006430721476852350356305114701192180938078185596501406019121622406459154304979668159832955371593225491929291926247593357479974910111035479049436421729173094079651242582981533593842859642090017067207572422151856331378087765898272716477356116505494492527760323026755374093035374204268993047047278479131391553691647838872720204941034872333171803661000114147594995620657679606204475115479977905970944031101379807757313636918891924602682562733654982817525199083912568378542859662922923704736713241305728532013661459371953714893728644715593769353695924513479019412720277833400288463057686946226328790417273092172568136932546842785412317831005776620608067442091003848742510088030854918907472765326404312356309549410618389906172934527763348333129738356175599668898544090809612543931015042371463710234727490208128449271087498194070337397932790231655494664919249685556900070331820527927700923879904712981785622980056040860293852786608014416839444705794599237330395343625677231165730337929171123427679896358733212313404887778628928451238376200468283542093779290360409735166492249355597416078350393046779330842606201068250136256437582935384024422088122049514231186924987486386922255709770571686751402668463117086056087909722759647760111192263760999074221853531262551997916860630419344885774566813330605196726150306444911793623636315706197278750196545874376400639813558827027494733550174136896390860197943805543393966475454387001187325653165083037204644787454406449433808128377060422465144611339962742733002574791924410578469257487544550966959852204997217505241888127436816371252790120771208092431156862674023113879531236174297777218690854959431629046382150819392457019720688697146956554700635427875989653883984765265971447058319231040626981527727045895977255770905523050300664800936806107450054604610397698279501524594807393099512501267065236510023558743136424070008416804213522349576537960765214664370640100210453084611914479027691656864136391290070746628452999965623824867446732398214983818615825977108668636422441563513003831975312156804175525835009983723583171193533501782236576964961510324559549005090600262768394195823389119794969001830645368080861318691095973101919011548228483763812949239379397626324227241369442235711216350246757630159193695160367142155317905915084581982797609343509326821521911481105188403479863217823202421104691839244143919644602509537137465590142091458129871968626743829025365323860594221268369465152742323854658707635430807412874755583770885944383748932124569993895933658098650493753903580677968213439946116629845206367354440478040241152208147047847884378168346630550895572113154003279420848335567732550380587563785065372446579951171277007080376181880859588508139391302063701382117980942753440726346766393542850829543275168072355642671555135145516266084215524110054708924580833152698259832144444062702113296080126316162775848061402470651419774813974402257085656428945474157242235893836799387584558606751664927393493334857578593093025923033903249925802452928325559868490477635990253074330537697360009102142806389826773193350715830565814882983312166010168578638318113581909715614425901966904069916789058597977766919792967752743913284801516270290058840699327499070875081504588210302710253892626213023043634438957621385860258666727257127841683811540495720040171541891264342129606769050464645389966030356482089900989596777679522985065453229500095190697538100163379643439267150956032532346334280315920319424327896526362404605954432140230470878470882264003739306894517976684362812045551613042852192669772965726304705516783708137205632647644097851889002247751584331244400558203132964873335621281299717509879304619288476150109332057109283431502529001299150493028581031388664548216000769077942923394288901958119435090722574806233751271973249874552746532634460237024563407790213999716314923882457446186579151315812380783168745156472877906107226071419443707680584882191451197597628219448713650209673215406805360654332701478226078972457384732586255866424341772998013397576055716829423544245310237330356105227120287256517184974300181658805985949145921001482457911564043446049296375077517623765343452571128748736683475042340324486422980741771950961157672017460212375000343093255257855859277198951018128053837238080978550325407234199361789853768134577442527702115229975219525718789959045191073349653955820878281896398142889923003479767972076383190379298185808476922809215238314249626074164796021558425557210308754766801631838440222800550783465777015428522380797710835404996664778131573332303144318415473153348891859475225796874442481044462069842108821743637445608331048146899622744287339341798591369054634267513173964115613718772637770100806267461469864702974890809600842718955909073251470396524319777099477171768967587473664352749169748604394124828227185348843004451978265273237048553782545156365567001316028448768834710532422641102380518061679205162015773801588206664244457180510418277261829269152549407626154892937631258492719033672820382433466745502235228363223303303588498621164057491411472890847331713440771748363429011212793517034275378352451698293411530204186563333810558260562682373432930496010859284665817691922432863011084933699996961786462463745048747116470391194990030628015332701370191200450760857094229809065249035739502022559141983819390742711457191605178020143282612262800696462461845326859864102767722533666771388582815245205576926226742350534264234612616163494445478555919018674566723039443492562381116590300549213807725226129072939143803666847794403804034573197127632276495815673691688391776493042924568568460383396331869780349811708739849417094527914268223170364569506352973511214621114908992490959875119891914002201928543340360020016065452018805546551793704705117911784155214540116673803430547871133266630619513912440304683435504710983133680288052313077803153090031854465575440001750060605408581808515948034989770356122583873261823440265390089426304521951729320287328409207700383100123151876966524323583031388935239745236968350327632037316230013986711095983640286158845854503322070918325810361899675959053468566534714906108407864581052288055415062268431577178677164927351157974624449718170551912415953093539272615139170040559982269069144788537260760097258745113985468798064087385257717936930463104173511481167429308423462459460962543960069832104794421579983837186447051182599950438328122680458288337425520120137574451732030637289392014736022854027545044245408438033635786397265945453723332808703182454632061130743471916259007228432728541803309270197500946096444605584853072197436724505877621601824420511356681513957999452264448682983769699343994225768926072658063255358146106163505098999696551897853532925142643283744909834395865851620590128292004057571404777642678387685668703868806130918608461650915274491926100585166495256709407294941727457418325940432516141904359150294292748288413140787948986359366462074746713836604803390213998570822968145438813731705421355204337496672010739199285545674998128780178114493708777570231591229449657604145369857370727860129063567167048674305858866375066717347101711427057387739505853397158515841254093617246606188397586238440372102294736076889840979753873898793143249127390280808824855731104585046537769857330026521552755052259518063241611856641516275156726512986189523254888151278812592686063111446785816181415218227445732930445311585144011106096911480434585749527586559521968949018049836045512020729497009550286634399863511982953971128118927749655951377838933784252855345681378774160557470438174481259093651353914975509617330930104363369097847558011805545516823230152705422673827213285554606402424177535395875396349439257879147269990316570555566363631107873583908853302109598741956597344312363552802425107351220022316890426842094449146094093908848454232919398697089400054268720672186047939476318363153358024503206934420826394819801998769864748411198961176921530138349929123130568849437161791761185855627806231398428339981489989031517554700169925879901481360164293541370512956624760397990743413674286804847840458699624232365464488482648339370331099527120400687180993305421299234942550487704295774851922811662380580543940934664708380776764694636606791934436854233668907969931816983166891497973095943662588130142677860603610047337982454343702508574417771555874499100448295382819121831778816886809637030681464951442852987045658744822323017354193015398929135356947939839140306698866302482879187121853214437761579840307617080110522099185105281184531897202070221182174780155244891343031372681720259990267379551766505422208965641261232230697112205687652134593678103177579970271087834049239379072209949397401559634057001243257514833108769363888955683621052565237599125728261239118022575912894175987408009344745117251993238187747886278888586407900202408943623153890915214818002421838815923966958787049692850878031566893781773464813916368968542781397442084762131956466252849726966494397504673443856343004132647844309750841983656463183520640918053128194362601997214048354393807871873141019891406717655832279814142519576502831792032213339668060138693124678086147323694655541522077131244528253802212257686660195802890422055107005242552590674759212912277749904354621960351337529800061117715230093493340418671330565674438486174036271062712551650355860019081761842688678384695345181209344993751433013590249265630411818871254942665247341590902374863056013659912681932484952788985051121820811227358115551518694832616404366490062429428314767614403471928494311323127965060377740115015320155059011183773686991112928134219938238861942579094187368578097611857130108971701774055507254283957072531780780052063471633303056993180268811324636908498651379339810544455043184362168932560296467858789354987134340096423851366091213584971916411716002520202011394261611806506910717102336647860845390923567597373075328613344631519251210849547351316195902683921154170420914315410594227945953667999824864089646190094752335728668593487864038958074636801121239687073243551314746481125760217832551027923488199932464686665557283280854081782932546169494512387423905425853523327120893410410728807263709579745414874034347298836164872219912390950976376370657059966587673786130299383959548096535839326684422935261597602533478601891806412747416883653296136723782138835982528170764256084886875777597602961751140496094774423625070287438285325047835576946313794396636877736116310029692958421411875762799468941694906926445604500237069120930529645136448763546020507845697850054138785172342116922512128840514349291988431425294645753905990244686733733410385281678970312606729383537299554607797672907990394591796359202264492486835738568186180945133516707434961240365199176036679479430505970223502962244183781380913196804818441600413779120622805317818799661043554644440443705675483765184690435438142246744131509594661229983124492357221608279423279364533295157372659250705441584344308292111187384818184306257974181607894350319552740374868519341191483135283763350477192196383786427703966689423831363409240725954775713154895328593988160732590160054997239929414823714727974826024035217860503862168944433455274636864484104518503915125790030638481521747050177942348449246957290358941785218596751364264136325302012127514536979011995360578526074657060450670609980645092613668861127834866905147761396712739540375500705135160407800946104520181528985815263489926159911880084213321212768952431725838938601672188812651102720142982130177098645113732975494219793752073889227065759762609687893651335914924691660042543013159140121403093465609000857166311112970382917214818048185101582696684107408042143042945014390810480019118356949537099663818754715059209366691270390106111853299655506660134809491448878987832685380104145003045774887739416422218687559783784403589016023706079260754932303246949584114360114089506475306440896925694575031099223891967798964042809303692120072723649900326855730217433709980256225249076797838874125035531112686624813374295588750086023037138555024936706002261539102751472102701168353855022613318138841001365460254229596701129402640443828649877042750795516229713646589327314125732074265431844531268182493212072736085146019842646560868628969743149933436726067266230293919685332063288083684098369674426608064526187772953954892826318674314993417979569039823495888917128289051117477198054203719038275454185022748040457767103249901035731885373830510569953185345260681492090178619428435327767997448105824239005042284690390909455119903699725245439425773459997919739647511506450037183108134359259135471444850889646470849065205304395614092274471027676451130301998192579884981980383331004755985458519740718112147812962705310617555010259274607985705228893551463836617686124231748426817936045494654384933976330192421266623131254582148198369659191509650211552964003305770959771233149223935846202962723117218456932567654472669816733803847092639735772223976250554596127643265710435182191800068647592743527104298607516812775387380003886771219532565745981432787326595836968342349008462815121251789385562875463614831060974949395788692980727720786032761748572416672895325498419331366014371448904732847968285929375551256672205371236319010761607531035489389025830582442491033340311783200278400330573275229324139285691959682207033048166845240280073722049031522270750064451502205702838802314453492907125113196867357626343878692666709910893945062710386453480965984908868928331852364750709250772228522623061255781933618377709440518884675617168771208213362028807000568991336640250325843144807507365386167323430530383757386514877678566741578803351624259009223626044690394968507237740190193077024096179943106691946391713265839010095279092109535492123342892233114535396448888859072578357724845567858023341418639436957064116245382812764104096389861125288235620089839796959708844667271837724791853923155783350300837209697417124820469598763421016230556944144273578255047209140685603269167269642662464781417402044138800193094975708451596078152422131206951630446037496865433989208174418961047669463435692646401380865304211042807149992732461476622644253291650530746199877456840901162470871578154957110644808251440332624321213214254142116691052442993385768448482702905034603814208635913143936488381755746324155738630413306167461255699186732545319102104515653378661263778599973833109965924889965578020478609385756785428483645146480030473312941683848824619427905074772081786032588682913441577171034065769355232243310095044798628461790230246155642424833564029628986053338033122509288271156493098356126356548508541821956447282864237858810739664866039796867178105481303341995681155609103956708352541385258044674233021538488882256047867864755689487264233200251948632434367557411696985908027963208271722356561030717196004391383906360151985343954617673570213543813895091001157665808641175774156333012362213294444222039514585400935738306777816189406291014204426171617177142780096988819473458459887462124401026378144063946634234937478266777216707400466276855252285387625315985860983345555708831049494034215551909856922269254608364369447708759473754568912693844211940774320914411502602340550200223765229096489309938496752456919270003385668591424974211318904032650304107631242385298382914407054967999534142551977432253069569518207821850880260921220586532594795739409805616209429954329604196061909860469006839106493724703640208556506345365382655886368345271812409551029573250054776291206004935504682461872164043783174653715005083196118181680022375451553428281102240058446959296955227821993514685348539842528436786789259135360096841258032925547689013177486729459318947085055431774319351281557368747716393992737693541108230965435660525692480717964031924241664724388845193264670242141356326509471299306016413454162671571381531753658371397956451669887495352630248631157664761965740380082152914081452732415621628375282370868233950168887184531780269004718739099708910660900090201255053397723188285495192828542314394947620483330304687649237120551521237832434525777447953092911201834715259217245519280176880179885337857732604864405057483694102485505256429471768330406332418310295400408419432432940963470934061812695129941627390018523946146290853393677169776503143927133001591974399819542958121940959619409121036386106497029519948200613092346225268222984335952952211870862507812271819553684431413604081858429624556100379315289298469968791166103454024434690367788140204407001004669551371707738311759495150757612726027877731029702306303481073738582347882595922394576946021621186829772467105355572710477124514971906584017529758090618910480942805666401277004037346463984772905375809948144463853491825056157101189240572959686371293182284160480818545596306440473897493917768183499944319205900645179847295735484551449225229261645269968906429508149998138016622129015857135775809846587750617782253958791389940037001143544832241065010658361305409557331037342515976928994199426578267553413249193592307251067458813978078291350669052525953950112448480003624625092254818432528874435095079342421604083110240934432048412320452642368267544141594660095901465974593532827701312505826582575011497446990637441740616567155660949020249228616684830320354314707270016757257201734175571113012610174151094479944413698938350396910278103547991209738636261259356477694949886515282971734718664058449032335352583037449070952755124611382023143401658303667877578519296296527334023449638130475844470991345333618511394777165597830452951636561490737471919475646861928324359374967832521186421053437409487480470461954966554705773855950738645971740817037823241512416093275245345820788368984925734262305322634441156380026457447197182213483013402950350246138649304465256498219312777160525099167726998120704957725403800575045490582281116114994378718817183032439438208226746360325766986720916774835054649560456316259175632867603045141112409889552612372622765216331693789078480741915298207295555848306263838407170482811223590205255671667422964415870641962144241361255726603720198161298973619057586912427934170325155184902616599199143436064767051953442782556327831427853713857411098088989225849680427893366785692117780023838758363675203567047751767933295657237755027185531691483903456972232893961200648229859233228579781125136864313569508852945160079164443773633476981446295403950535828103167719751726784350601629663178850550389728335502140195564260831725188380387307159781158911038797569919167004945795140577149749170901864075423619030300911182620763077511907189012876305215130787412613925421216160360751332520310931569700798283937005333531483817004253266974122408656002783119309246945216360789948717449837131577677922669864583629782440739388630470181967026233829667565773873102079102987908580164142215769036178315875089633501680791005716918960107298151922455023391131279507844863316483788898011992028922935242614044660187284736254085622682834529882590617733762378374747202648059522912576707100472276664571181081828497963723051983320823361890551873317486588183597041968899647405888812769324885665206175649824784331136051942330320955997813290150374169555690598341682414758358005345032263076159951017735855589303019820663937187166738223420643133072273883753060709742405287892650826450075887658352906610591407918098029363694819236430463321771822021175150958737396912367945520530338753965695796553479705539515710152369148055346684802318377472296952509107769076222779644096906583067893946837767792663232669048207226484434581284994990609048194589647870843829686890438595763980976771026423557663089024892131001305788227380520948975891163833166047675665100986690807244435880890604269549826217825523138658314976275936944089547382635813595490748259777205666498345149897846304836074875260873003896477439834091090867636750095043118229481634887286877880618142748512183455056884216089061037969239651354971148328982756655369145281624013806819439797157064508394810115585016956024709722310092594188732446592100117958881002635994259708482658147888287467568985217077229723202214489094759132716574769640290873606782618033552995230016319587100167955339887968922205047010011389063615635451818872082020951265796370440182994059107927214391413065859873935945939866806647249901995379512541102421318646178957796346016199498645184725987268058320037711898529749988840623868356343243014613790813886854385271790938818469590098025543064598325239352259049625770848587072012496241155997192163530260660709931448706553743372471711358996628745306173083673087048269342745699715075360398067471245252833958545215646060059000665959497705967713122400751567337815731755845116818658270900111989799269094832164568929732353735566608022923214255026340432900765571233256796055879631067021720614281128969644791733928937006346217595371531877564139995663256573848449072798997910083484619753891994751816910829518221088342707669386410746832407567737548811686421700767615090296347645343686568901979295358016279996388099431659129877979491614467543895195928365541638941655634949364961607403740873577172023120167622227906175594503905136634860440145452083845427286042679614121738077233331267751337860968115995259442772881335900849426085481298429404772477164459261951878223611738672150293049444078426200516395163393367687521048654041265810615151381063263935652729823202648067856665037222449646098366399836365825764298326138044202049679510635928460540367467980830027780617634593554463824431146300071372144602579306617234168891833603527083083269873328058909495444334975114655549063249720495617631057572031874245243997961001300513101362881251642646541467566216418471740031857891367923431107308911790203560135760701742446161244397707823612390132206932904487297474667708365158321867415005381327784224688971310518664331206516637603593863201168061905577055537633677360364992716387876270201457406093693672211367026066251359512820184684258506560590497065152819145724007871945726278627820342047898093019876389613692251293554098133528921703415241378403497988370527212999054917321986991814063285400208883044316721908821428731628645291282887066115443721552877170570604616124348447368192516248043205025944481980530204535986716383404018559523989983031812399260867758441326518650885918827088514421998934133330104671880369209347348081232645725979472839249731922910513395615257747541668539314925713185740795246049806364284790354471628315103815173988609118640232034770300847089190756094694855291947481048264317280061195943077860015918935087735267314720428607580533653591482200744245764521762708826753820707439580086465928632736043303848285308853903855332348614871305843065583952661440745127334275983316524983354636338311850616828793114631386447872731549903896191810618225811994194258543856474840852403622495390802298101905113183569217747553051194324637039769564669265685730461935387485745474548531803797420197881185660590162228866272412460152679622021094012535010728078962481494326411253419325936549782831143489394327333139421162015929032280145593875719333520986496480401015368469256210183619123828239613847237761325489122341426463456792867754427053754130540233036035263170583560480037008121865434631069654336463838256630571872029280200897225456315873962517477987515356054666388335880482803738335843281234886361107822104373467807207148152456587769815724600397786335996139383096925464081053403190812702627052226018164361018089519728465893624253132229741126080320799891756070655845964271557907548948044677077363863257868119670264756034808085525933006104325450582318119445844371631130489034386859999641254958672328012330708972446485735538272452812683116142324976642281414157806727682979925482140939388726958044973071808687704736117992808583199418428491405610310555841404113412524512607651482794741704104508555513921174117909699949944138077122359611486542282513706246826158111267704327564719834230477914342600808913796656021750262931585150361150826736050413848790484905133275593843111446885863249713473516993295032625202150709018861820843089366420307862925612315011763286059087359702646725316162907318251933248352262736009240653208822499846306085714364841289204210934994061604517285057191437038278296329720531577065146776291030097029355798319414150197610941914453739920532379971545817364964168876652813969275610223555143453902384109425782195979757650614340946753732503697778300949396933922189195629933830643427842357993425928608221704765171398421314049866443720720332523788140277791693319134495238776754114249069486675919919115524635059068477480012114318640538800382974854180294512160755863961496844546963247293230634774004814278524154396815808981949969899661609677131701008847067152145047651867360230416267953917241882452727879680761316075541059208603633056503562463652855050253493849478608019628492062758037223414401417765687997128882287982851856003322488026022040865006856147528873435385875797540153930164571391471671391160042539309854941702496529294867154798015788742502152230116550540162661693692539273155844284794665714954330600878709559778016078241522501246825227935293632552928387677803748341379225975660508623451899520006550271647002585568931118574545455659515660038345490294841747607977013620826761777237291808944805985937922773779602164771924014259621421398152048641717356805328377078270519526709847397617420484043908676504757819931941243041177123618041199834460478895183606359631910158614297021460961506443641195117499315571630596201425150181128388605065882437056059202356631642243208507714451165052845415067097808080851672441966218691001993587878740388639996683623023734138001598565353767664950990981120035086276433367022305016868201908444769762114808566372599134247909095865960176282379704629611831845169982707258625668463208361346123275876520219495822276097730472791775307022937656401471570150603123068394019432703602830427629891416112019683710380141408360658819167165008669555364748658228361388799129393430801106411036742406503306803992584318621042791299946447585114169600357210438157957095528391813802687194266709630039430263970789169155406821880784658555589183142366431661016710970043339646209991971708490052667399949393124645885563312313000565256168576816471242098741078655616401684618105443606700332167319459199324804559567998844314002622600802628881188006088161891775688908776969324799915484922813295198723011775033753773984506158063112672102525281790176367584254556349673906995336472433972094889433283905354468728810249741810297092250546619901076403998845317693420655635133057775389193863669306991834605425655868705164472180005264501435736678480521635938716050416503207778590785511538467619550627020032108893492813556129597923638223179897023498575923081788821088015804957415400699801583142361538757925647242388065271363797533919781055008828224632453178217449526824788604797672702208962436493342699356518705273202494331071951221069318730689993098592688654567904468057095325225333473423398110323034834929517178574105226269026108740903170496491984283872607251986315802385098293436390674754854459924659801591397981418582800158623004657928930499141495824770952134245875818682387530291630027075762725947865821227819368622145724985158466580099763293854618850180801176478217411245219876559766971294143696106113612302343864027910528445943043133916663267112690598511400033628218370711265166997699353177108131047643498369142260604016608498278071054060236977815657846742243817272015351033515462368642825223680361745623868563711420294182888855363490410712215539677378212792938504001171148596659381275262256682730800334574549206704438125823923904766613486206013683813771293988827994751308475891995988301215387152574419412381447476226068834648858706639617162206593451235290457471618073014725679837379893842150101611995440452298353244439201356304245337965099464541409401494998025031536565597836490234188808696463603490112721627711519596821915331825959575551885212518211442269003344859271286227913506007307492776291453029668960179359667440503179328412171436131912330530510150770695249381710538279056954140700591999368475200255875436698833909225866367218550888340455501359261125896501916510656688648535225387182212843221884399211433135403492193025160357801967177079276486051857093141011025001336496825522387474808295736361392021889554180981081598463622614232871932724282534643030508717884192962595416173373901132147755094503249975052901677902751297694205366921037547465221635547109834317374178362148899395469037802172487094585186770930012509897916799608892358494351340358146933481155823397177111871069488870844726702308338279055819352376060712105984288779181524985526892916898169771532756305479326497428699889380770355624262738057395122369955283094631409213654957473184032227153342629154545066740409513258489251745894951453040542909925854317157799562581760030422099105501627694451657079935138142010860784796990853862871522191280775790778371590639687771159316980947819357536812939905863927717243432556756272342151545076411956132389217805472604221690864013707763682018315188952607119946758811062148170296556777942812437533627450340974634326975205472489671702387269156909914717782582977963643216463960975465090627229265120385884158666145053132529879199674915773930220784503882143864875273224940706693965405173279072485994435371203100135615211846813669839874064050008341057733642309562593482175302832142539877643154259022027570686612027858107329925902923992533804455918636701337810809181701161499325971154106538957803193456380395910615088491686184579554366213353862404529468229005466380181873403409584627731219911460708898848941094056348224778795961427666141965047354825879067952211675767220530116000295439261008669342189007742280071068070049356315167614419942532751651005774976056088498859079183494367859475921643977167294332870981630985883183324300422297953590981162371465213620389531664792862643382599634861925000395120572493802624931228823781014097594009428931662915167760327883521129852617756650413448593360913038295175844623203494974914165179908375706734492901224902529747574979742050002106663406003731866003308390615816816885072065325693182794964309658585406733281728826923008660251012331523873157425596492124889226549015883614419445399308078104363183239762732476535449006179002325229065282571464204281914919738887388806093573140020542097502020482802396957530453128838606753183180413618231714722120716858511620673458780848212762689022503174722516119261588243338767449952444434492732505531744736476097910021749893176437861458807350602081308059329158498808470348829171596127767256507414629365764148529834296644442209403194238593555813227361493776673378092377609835480829848834776365785714688656577506221151558342984932908100108088372100268085844151793490975148337058265267421349296237603497728123188032647729521086794670644515840940201571775430350624975038471658580078746878268495164463287848960878856056346450934896163169743105045165581323819513175905223706128682491544237639104590089628822641723836875903418320273003356617592635747925184879866743725876316742503710595986069001288762512476804118154783404812514751164897754250989522763124616991870608224785876468099785756699995690777785521839922485175041682536651172403481264582149129122640889832309992014062260099244291268883993005187894563801642518228414478270295351387046868187081518459838095851978514656128229212018856271178656781951865372510349741871729755268077300762982107262353653936518893638816222941960957234072662945228277096588212009569956941412021462076133412738736146790862165840981502021144402381041280424251250883937325527577117337986616772117322486188058793070661939091520797904347760947648229902630915645259852652351426082406577287674223134756799727233169989521419114425894731716176653550245770496344605597265572794815166192064124403378151092763885978383102009455257854519465550301246995381640601210343662742827682420934279626373395652395999817378249059327854481350431454370932564627625133649242512820576486994269314077980997512181283650077115840159571482838806660739273917501233904422474377532434136501025892293378909898783835997744621072578866963094511489842039592491140393655505817457506101458107717258837998857511634160292786691167461904365591738425550323512909380910134644272821236782228219560211903524789255642834093938631309207016144273343561768392015946096695071260787134006919955539723059270708621799610107543927526866927300423827447908075410338089761911335554236211607220959786761543017923621639938468989547957660767931657662555862328888341958281025006331151526846302872456080086024493507245030108230400783031595576151219819834046954989509826434061777922015202698717273136926158519899556374615974574751476743761878619405436331799448199218707421684180814768572994000075233007328760708771469685534860487027489184792709249535333983754626094433733032515199669313204947984860617843400446621737370155244778071837898583388336317051871475231701394053764483680409312689893186371509520310162182341717820195936661217314875571498709625015897265778525908426192975934981499327876012898297481801302513955401656740742216850342293182123512761948372907243591709809867936260493428885126511278718652820255574252494032278725612072481843951172165236478241369093618112853011844718845683244161791308969305441124717285732154355994917446499020686931075617421667334186609165302628815065613660124919531779983740755489097111398429642375934585615080318880945851714180064949364535973649030877678201116971542188813985546353470746080703026718628888167099094905487828127808372458317234986212227785960019744988804796058282310039384459545585269109729037178184648276479018986182113845519243079489398133256876630653378351331911274848188248662596501979226917582116118414287306394568957790733295371259982778148292520276396147454871187308323855969429534148144661681789463134733719964597750987783364244289405724721486331025051689631320360354172622130078192112932513759893682282761898438094232952668404869672405207574076058791075187428450213304735992945688679113077409644110920248046893065024931964522048240938556520005706710005859495886813562695510970268577213963715728820134124358408738944689728844164577395064088737288423942837489012346099566084287150267414187495425649479841848385871962820959477885446374521648256438103084109135495704911087255494677079761801565634611237266318594849791726944047395235607649191909852897356458928629738104459452802907338153775097668122498603398192996423582181648082577188518353374547684930803109595187299401366263822653454162234774772311308453961738397188217257178280423339056239809467587898119899705455896748544161972100059530059884503731622192443130376572006764511595596363774526764097092375628909773455008189308634710975487576532392383165983021315524343179231843380356936802680309074711077530643449857659333638389866129257243516335469244971824181245127687203135672398351564301811199850315776', -); -test(macro, '51676101935731', '0', '1'); -test(macro, '-51676101935731', '0', '1'); -test(macro, '51676101935731', '1', '51676101935731'); -test(macro, '-51676101935731', '1', '-51676101935731'); -test( - macro, - '51676101935731', - '3', - '137996870875659993023030601717979081222891', -); -test( - macro, - '-51676101935731', - '3', - '-137996870875659993023030601717979081222891', -); -test( - macro, - '51676101935731', - '7', - '984075056308295134728924301613024127189711420386591471717924665943308236455086452620716372586011', -); -test( - macro, - '-51676101935731', - '7', - '-984075056308295134728924301613024127189711420386591471717924665943308236455086452620716372586011', -); -test( - macro, - '51676101935731', - '9', - '2627893230921823604806622170301238567075367550796577156262388588821361374710043228118573957775035487173592314570495647093971', -); -test( - macro, - '-51676101935731', - '9', - '-2627893230921823604806622170301238567075367550796577156262388588821361374710043228118573957775035487173592314570495647093971', -); -test( - macro, - '51676101935731', - '11', - '7017577357393414069660702103810709794111639796715410950809665871416156554402226865497006924403635139554341331701687118636537520158096482611987596307531', -); -test( - macro, - '-51676101935731', - '11', - '-7017577357393414069660702103810709794111639796715410950809665871416156554402226865497006924403635139554341331701687118636537520158096482611987596307531', -); -test( - macro, - '51676101935731', - '17', - '133636682614207953928748833850325980733386921434321011865528143804403832298431098135380464855882180500142250108938933037601304663280771463018430933459134652554649625077355814284452093494072216581175752265212265439075492239388118741811', -); -test( - macro, - '-51676101935731', - '17', - '-133636682614207953928748833850325980733386921434321011865528143804403832298431098135380464855882180500142250108938933037601304663280771463018430933459134652554649625077355814284452093494072216581175752265212265439075492239388118741811', -); -test( - macro, - '51676101935731', - '22', - '49246391967000732783507102143055596698062541496879424569521554617507032914914454137461679988278650797334594157775094696043090861230475376194375316521688783968615512922433798610465048085885649879473134467691860598529596944970613815754223330498710317737303087189649634312376508482500446153530865527315961', -); -test( - macro, - '-51676101935731', - '22', - '49246391967000732783507102143055596698062541496879424569521554617507032914914454137461679988278650797334594157775094696043090861230475376194375316521688783968615512922433798610465048085885649879473134467691860598529596944970613815754223330498710317737303087189649634312376508482500446153530865527315961', -); -test( - macro, - '51676101935731', - '24', - '131508525968430457729352665685966579498949401101062972415020772435432844742532822029053861945108891212811973673289631212054118103889130601356311755368990255559386038292351210647400499145803946225847945057201109848257891860310495954779113656786197608913596258321184172812660728137089758780590575321178923726688892590199481699405921', -); -test( - macro, - '-51676101935731', - '24', - '131508525968430457729352665685966579498949401101062972415020772435432844742532822029053861945108891212811973673289631212054118103889130601356311755368990255559386038292351210647400499145803946225847945057201109848257891860310495954779113656786197608913596258321184172812660728137089758780590575321178923726688892590199481699405921', -); -test( - macro, - '51676101935731', - '27', - '18147765077113876911302828311188973140568509988864514321318950227295742688037464926647103633287511191936183601316483196589434477469945433422640225075158236638385320220491900270340310290917462596573996639230442725247179360636496672307042746911978502976958429476017502296658675079086344867081673179346751656568649207060344721536870325119505423628920139126455081000886137611', -); -test( - macro, - '-51676101935731', - '27', - '-18147765077113876911302828311188973140568509988864514321318950227295742688037464926647103633287511191936183601316483196589434477469945433422640225075158236638385320220491900270340310290917462596573996639230442725247179360636496672307042746911978502976958429476017502296658675079086344867081673179346751656568649207060344721536870325119505423628920139126455081000886137611', -); -test( - macro, - '51676101935731', - '29', - '48462145947906619312350693780921922040423061718629753751200616100444307162466564390962728897898203939025561944853542772935543250149935950441420073115202129685015069493947975962419875285445358970303515733347425597885530386757928989657327135942306712537754584065199854414524879131878269249276451508346267360984001689290919795053747833808800804304207297975041606946075388009728565472578248141445621571', -); -test( - macro, - '-51676101935731', - '29', - '-48462145947906619312350693780921922040423061718629753751200616100444307162466564390962728897898203939025561944853542772935543250149935950441420073115202129685015069493947975962419875285445358970303515733347425597885530386757928989657327135942306712537754584065199854414524879131878269249276451508346267360984001689290919795053747833808800804304207297975041606946075388009728565472578248141445621571', -); -test( - macro, - '51676101935731', - '1234', - '158324042278377313925303658781524871614898748673989982468397056801513262659968003390685627949704258611320160536626820028889962136800384219988465148278031573450509106387239568116863743081510112367947744316933204800345240432247765898932280221777380025886378197115150023156888075592661959629600638394821303250632425654059380834813385429980578207356778680885151122557244823021413539337390766886386023683774012622502869673441546686299110751211243381992933447873142802156806866162053801684285033755846634081232710212999710106103508622919082329128210235683603138941762803368001142605648619008990425285579947768914521571612053244135664040468206471912029995462838737725025722037780961352097655556940963081046269689524507058695919021145649857025466601631832206335908714770892218847010797983061128886699295778458908026100799624592058868604507879625795059341788256071347226801293035257896677449812101619168410274645467937698072600485973695316558617078697826464067560685120905997944243512191651052772680067894809080799438615784588878741144055738313954890688400429893361117159935248693696396627137695916187850803885204391372040167551605832355933919492494203181745050697494649819656173693467296980021705890813609884785517604611253528819574733690077002295678785343609499106604869068180574890180024198538158171783307883610859971770618231149618665209136576442748277494550519027415619444394250603341387572991349015145136953473904476495181684188774626834750617818472938996987683214283309439924103189995535468277303822947364785117218431807701765196665481474819809014739483414625184823572545931155707708389629548395519118401609231979035135464875664607469901894710597734005254396315648601392217921679551086702353136339520705796471641431879666411557946264230276753464580691493861591875142232836387168105624036383384304939623273671227663421382364346405035511757097384178188343056871496957008430970719845337135563975023000121180003910787544177586770185372939136428614465285828597849364223527930973569574297409565906234014152140399051264908028037854285065695691516894764306741200445258651130079726633055035454707400264143396200125546607001935250751700196849819373198663005937089255142210331719097533030824267705354302579492394252054624819810635910772930818973501002381509037985751201262426338686073137167777790210884526513502529974672754561818929196841359487503116806374857279102032619499735463547437917873852231188627313193995709278200744560332235099781528906681845236757294232939540840501710793402651215365559223726732901232304332589555728463490815104762256836437378942770237781171541242665277050803400441103245698206078424116844542305855433985742997194723110120559706402361837255518215431654983113821256777518566578007246638117303300813282471059695780960937192471342720483093022397272639388862609111334563922759362521380716417092672083635856258692643635802385292897608203124530755925272475970099885482900647144339393451148660375139200420049453396533433237007433364495099843124339385777936467767832834097532992680258633382504023134945528051080162773976630522027388364871860673885601145463850278499705365785873574057496070902362590690329163430582931012722823339673749687448879341947128478168108948119496075857326371621272158040967590212259705607234109590371908430237962275467620195565091210074536958791316104893306127805978301999920209853998214358942944312450676988966603743669909381196873223441882204064076740792698565324619823892332131678341250397203399047128712276865053621353068705821363484016988865027435388961661676827059827201761588689945100159628259798636637114887843908407692866645165407556635346270470882762478678318748969509612841224405192451391751679491699159481451781132856593225478798461105500650078302736522399508859604061090018430782371103406780095793970327199466172644652070455424994736654900037878682536762730674188797509195743679412902718668219372565376042254451189328399930173247680691539750124735316777490200616789118915166628770213641217493993403209087930983866118739242363270739641673142095457606027878252411764298206871520866755170134693811548956683565065642028688637479006103660374113920609307215137832756503673451270374534771904030303590041498702749217222999004759003357602091152034722604948534571885348781516114248627593361371966083846505528180094830427733303359954633778102329930129088225944419675472344592340947633203426100068451070062748913329381430835928677944810202891752490896892126540425812163639252121628049481160408647454747378481685454865724857469700081698360897592285719829250458270700796398492146131941376976151305748227248367443062739785389412243719697174747793918305844429511703312893537458763839752259611393771379620065253777610623533134188428935625387641575540926717563311541862831476044794518109895950317069739650023453809779525953218406298837457049987396316333779299477763690386671808883206738746473461031527288187096362547392481733828192703691811275652684091878491782335647464304090599317117223713118270154362644379673966875526023251794033742058280817715606901272370694953811351940143399555738367916981834656631234106492867315013462578161451861851222727927484978513364472656866134489436147990440601567348247368143427992571647342689311925448855042244915814046156681924587686088299035248256687768173138305271776131448783660494290452155267493170780209088260573726810563594020164626876894543544776117725891695956937655222596747253562951739070430520784626532005865397891770599810947915766027843984225809506465099491726669647675836542704925940472862292458103317707001664851510631632483368333519166567495603149523436655902927352564469259379326902513957700266530203095978420437621994997883942015182535685373952581674954526368979534376580657019506688748132488994259649481602782027268796321496293234619922858621277867678825491370164615078298949196552511455124851536133799925473329405250474593913924912551804901403390831450711740501508314471344016110507593788337973582789067759260879539344607152262224215382333489330153894940009834586533901180095846730855291500939551837669345284373711184756405666180209071363312585030301685774779292178313316406602373255646327348281134955048336338727490454877812787617492427362023670761057324483134159661968729511955276617697409266496712072219753283729016198339234913450671856683431220026361896256233229763483100008432120294903953687352831503401656888244700073250811277269623445793796563405171676855616924791868998241051758600745245397052440394156686933344580101379617401437696817984459028218921041977399588148719347919096302390719921087960315851964586936208155974897770793714626502400010799023394074901830556484876564044019461148646704484745692998552151910298131789877533559303845220138187074792203552289300587811989652204054350569388609355366352079539773210398305281469358542324938107197041217218595947653381833043778081164511742732935680326233241131641428417476654793443376871059887960714321380031930204997295874730540407682218645410154547363569726463842192519870398072169036254497989626119475346195254734474880846366685010394270094459050207503355330015842707449098167167948112211428609169028462215066248890291708247636295839908593225052889285032180148515349175791108452276764174092593481970638911935180284154383805459092545680971655577656000718287895404174650864444487637275330486618588627887913198091137313600079403324248364944559239416972594744134017813214704259974060248545972845617599594908395004708799034010940349453335426733467851508855124434739037794790113915284799938282633515926124039300489403274166512016144314450767050504019696951073496152282334971591755531534918527658116356766005810018865387036502835277104484897521399845192578397217389066546258015343671781439530194484186424336132467982739290593716534087153430243415506786743021432802857971661907233602499902567387941782564166386342672410874812089691799529503443000488843767817702945159240603649832489196454539442081235188719658702765814391130506231315568011273524165094617918503831867012569022324402969461007866076655261544955353941677901200948344001405059672259174534803855786509381749106901797774448058734457124149367609992922544375497404889378084258630248150919968340293441413856717836345219286003180349374207341129088557493435423239964391016550727225456481162350628594289395184071310300179756589174536625319150383798785373066376691658528761564820534618453895379491843182268871603588369275077855410841475816916672608469381494765293579645251398504292250764825206147001031380918536905798997324364665442675157885496504116737588881183129820652811664336805124175412738167561167253417906013601281586840716605226757932860034772050966241473341886952885772364434302876604236880399216981777408544673261443252042495657687251968928902101306694702738065723310727043271924859335698667952366365883749591917139742105118753077931026478251365210693917236917159155967697763044367201149926693443948539699579913602708706722711432838021246855315885038460450756859122906583939756348652891700451630407133090901515174232078445554725093208016341426376158610309666955884603433032223065165852248565738599860177261970078536206931153975848971431287001632805433404957578207772941765098112799264026267445074698665059729145576674938934608054531809788773719961126616990316210326818453980080321988760982334379271531791369297582640574651520702873403331880456606970974892343433336446248718921846000086640006680764293893307983492389270379130633842798650803348158429980408513212973097444321318667389109611955924135884714672638284288772566998005211664934734547822982660638379730254204195834897865492728459422863551908452096176425627547324850175172784662840168613264736639310780854731722004175205456083684478275667370139311794044918888433282117891203786131932421524201946630405904103705604352951344094166243627023050380063835187325378976884921927883069821201742308833558695341662261151498959733037164633952848288492505505197499859566019268823236129754425893906449877905855504081397182635782376853937776733107007960687910397361651834577002303143087866448497366428780519572180278375369679225575668491891544012967905489645541044473614128660244742603437904495496004459121145000204660640788761369040236852666481807337266045681038338455762663801212249239773760849573135339910245942472057741897143798714888511942994856977741299663716890747044572844810556164536063761986767836402140711391146026318746472684683736517628592458110701485687350372867786408697530159165580262455780381579264667555447984957739182385760977780225061084004806106049112388374908757400568145385583888461889658540915335972493538978104321154519123769320702224831927212063777898343511469299130626487155185875277476235831577797403193411734525969805530291201270196761046479780099300862785898294670735985568048204412072182439508001601125949813004653714414454010147969834379658692070731355494945150892188648577526049837658909733330381505835664398796899002686901365148731947521928717964471059772305071463737374874406416651278356408918633301449776192835629215568915731374744480004571009884843731735476903477562446584279323243628329043070154171111030416954029897290949469967976161666719811003325138761099757410714225754805089491754951146648993331480859725730046281101542321018226211161218032808157377990274486574775247295293446271999216933362071677144037958846938035870357017121382946099997460180182187217217820316108638070949402341509021488404838623964004697749860791584971181351855741948571771355034517420282039098468418778809673122690363103723019689210278682644736222976118509622284207375261241784528558945409584782281603428222482076644739841708067658443152632760947992710970595496336571116020117920899681972595692145247586867390993275854296221489381933037318139292360281964291441764499495760508673368168379423816602792242572983422830229937308653522404847350290384106194221461480553536360110558204157177392001034747822538121785134044265222471502565785788526018168367500851854368644667069187608053339694123467967831636497181955436837184144618605482450617195904135269079047201637007435156663520051298601126128369945944529481020638321516198582623214543218826748293953436296165935049635820455993901167665818294125029492356440701038244166842363513621908344320848585686797979439878826598478637355993217261347336958935084397089381198078856022083300330117262456180993049915148012467532881768933263035840131555093550707791000541507741393303110968532024193273602133335942404611643551498070626757534418055263575760282736414364452938769778575091320674432871296496661879381856396240520797406048137637370857663757380205251562705321737487489618016878804542225487729084746708529820375811443132907266237938994474813800033631766739207459417966080119828341415764580961209459326665346025307463631064586254511715110933308682061703769489020980806855962724479591125787395163620658259594004092166562170516032834000268855499213998125944650816177533565867482786957117566835113604843003762380044014420897831990140335889989942967539299895614370850827546132043892135670514224732115622279448086834055661975850510059575409653558505225706327368788238605905950679120827356203968736553949603508567674941011900196065319763868748440255691811431275690300510418853466423120699880274299502906401428179717337224051460708185153900592946400931539055519213456766111907891650507124264750664276520240241037246834114060324514820797852416016033426385928748625138008254308550145235061493199996695892684482660951996875137704256478179472342925959911345035957714418554051230886742531878578912441446768201652221881141572325507385719459138517136751018669079028246205826509211255942319179978511691727159374093169411671988666216994674771387581235589884768273625075469787220620863887485675316340301843253576693265829584060863611223658502419013220705349254141879296678287934598990177839246206875955136263946160336147575157943154184876112942552766291737477532772806816444968335075758603052677831616530597162083339994792052192524435339516491271771018617304228747316364353881326364901896898510732593688984287402238373219422623300832304655724736690619601526746558520579969086684975110249886471858004298619330841151157594042888413560753001085286164089989253446994193592178607918900886160044643360093127301377281151260181516816234448235332218822653468714779419621593045561237278383012807110518306356320302829822203975624356719898344296257410860244073851008991224738267988788643891504893485173066765606602131746590564072891775528764778009114601909601715732204601099651995466171422428561778738906387340637322539207184732852648369340774890627245756174444189797920171705224195397835012801944668568199244460984454556749562726348626755008071045094089456543538334719344496279903285819785473638260950225191989064998217546604935254843644830354787903047294704085156710060314626981157703292007319217920772059875929487108231502602963313451208908800123467770051210962134514589094511232458059331648208202240238411255010578542406383889733905056465012899219382378659412932505825923945018151275013771662079650082951456689539196985442677624790938978370091323150932644989813926815926713764846502628535537778970161281065391987916405930855478432409513765364564416242604015243337740020591190036055281150381447998127901685806875751795496258487587782150231045731795366439544769654743511101346187573916565954617871601220556806571910322664035856441943067590583463139288226902843506064510903232434224397360091696338842373040990564260619541435411792673618388777689980307230201828335309818088702867877855077758454325070909742544384843822430367944236208743002020404743158305208417720634625853803097299728910140526037383656368066889205000542592984418496643069772107977370892309483087973050493056264411495806490399183836440009935339770300091372817892264236279135289290245333645902675314110412649989844978340728685671821112290828829269519229582863992855788155443525507663925117628911796188678980556041341513060132014775432709153262923597668710862496337413472675889360137051840453387185317746367448685333562536587961087795964381494602518709912953530990322369678697647756220485903298571233830750815526500393713347618692958695894950510589138728887035609091986740671003066902402415899517198377159897977346749717804687344625438051024990052589164200510168556411467500390153089322228903919050120669166638660142562191207450620162728156493213454482792702092126905050509757880809402415274410795695253751046401154902184294192597738198949251837113299325218278871891594334354748578529416161681277186999781125923908898170603590196546728188587904407695359656110397019078754943031963775608531765690045741190503521917787960634065347919180851301558862438424029407982357071724159087489759092692094168623631500220272025560981867388778272041688773757867813778995307938836220728347748425397447066334129722102586996109604827849770056592342207245854658461155777410922160788502132706011423014788196149318932156333527262500699228183533489815176386063167069054855402190127471059557044073327189922247461125984452832296717571418178543557996289436839762935964681924754366975350149396326998775147547939177889984004415721', -); -test( - macro, - '-51676101935731', - '1234', - '158324042278377313925303658781524871614898748673989982468397056801513262659968003390685627949704258611320160536626820028889962136800384219988465148278031573450509106387239568116863743081510112367947744316933204800345240432247765898932280221777380025886378197115150023156888075592661959629600638394821303250632425654059380834813385429980578207356778680885151122557244823021413539337390766886386023683774012622502869673441546686299110751211243381992933447873142802156806866162053801684285033755846634081232710212999710106103508622919082329128210235683603138941762803368001142605648619008990425285579947768914521571612053244135664040468206471912029995462838737725025722037780961352097655556940963081046269689524507058695919021145649857025466601631832206335908714770892218847010797983061128886699295778458908026100799624592058868604507879625795059341788256071347226801293035257896677449812101619168410274645467937698072600485973695316558617078697826464067560685120905997944243512191651052772680067894809080799438615784588878741144055738313954890688400429893361117159935248693696396627137695916187850803885204391372040167551605832355933919492494203181745050697494649819656173693467296980021705890813609884785517604611253528819574733690077002295678785343609499106604869068180574890180024198538158171783307883610859971770618231149618665209136576442748277494550519027415619444394250603341387572991349015145136953473904476495181684188774626834750617818472938996987683214283309439924103189995535468277303822947364785117218431807701765196665481474819809014739483414625184823572545931155707708389629548395519118401609231979035135464875664607469901894710597734005254396315648601392217921679551086702353136339520705796471641431879666411557946264230276753464580691493861591875142232836387168105624036383384304939623273671227663421382364346405035511757097384178188343056871496957008430970719845337135563975023000121180003910787544177586770185372939136428614465285828597849364223527930973569574297409565906234014152140399051264908028037854285065695691516894764306741200445258651130079726633055035454707400264143396200125546607001935250751700196849819373198663005937089255142210331719097533030824267705354302579492394252054624819810635910772930818973501002381509037985751201262426338686073137167777790210884526513502529974672754561818929196841359487503116806374857279102032619499735463547437917873852231188627313193995709278200744560332235099781528906681845236757294232939540840501710793402651215365559223726732901232304332589555728463490815104762256836437378942770237781171541242665277050803400441103245698206078424116844542305855433985742997194723110120559706402361837255518215431654983113821256777518566578007246638117303300813282471059695780960937192471342720483093022397272639388862609111334563922759362521380716417092672083635856258692643635802385292897608203124530755925272475970099885482900647144339393451148660375139200420049453396533433237007433364495099843124339385777936467767832834097532992680258633382504023134945528051080162773976630522027388364871860673885601145463850278499705365785873574057496070902362590690329163430582931012722823339673749687448879341947128478168108948119496075857326371621272158040967590212259705607234109590371908430237962275467620195565091210074536958791316104893306127805978301999920209853998214358942944312450676988966603743669909381196873223441882204064076740792698565324619823892332131678341250397203399047128712276865053621353068705821363484016988865027435388961661676827059827201761588689945100159628259798636637114887843908407692866645165407556635346270470882762478678318748969509612841224405192451391751679491699159481451781132856593225478798461105500650078302736522399508859604061090018430782371103406780095793970327199466172644652070455424994736654900037878682536762730674188797509195743679412902718668219372565376042254451189328399930173247680691539750124735316777490200616789118915166628770213641217493993403209087930983866118739242363270739641673142095457606027878252411764298206871520866755170134693811548956683565065642028688637479006103660374113920609307215137832756503673451270374534771904030303590041498702749217222999004759003357602091152034722604948534571885348781516114248627593361371966083846505528180094830427733303359954633778102329930129088225944419675472344592340947633203426100068451070062748913329381430835928677944810202891752490896892126540425812163639252121628049481160408647454747378481685454865724857469700081698360897592285719829250458270700796398492146131941376976151305748227248367443062739785389412243719697174747793918305844429511703312893537458763839752259611393771379620065253777610623533134188428935625387641575540926717563311541862831476044794518109895950317069739650023453809779525953218406298837457049987396316333779299477763690386671808883206738746473461031527288187096362547392481733828192703691811275652684091878491782335647464304090599317117223713118270154362644379673966875526023251794033742058280817715606901272370694953811351940143399555738367916981834656631234106492867315013462578161451861851222727927484978513364472656866134489436147990440601567348247368143427992571647342689311925448855042244915814046156681924587686088299035248256687768173138305271776131448783660494290452155267493170780209088260573726810563594020164626876894543544776117725891695956937655222596747253562951739070430520784626532005865397891770599810947915766027843984225809506465099491726669647675836542704925940472862292458103317707001664851510631632483368333519166567495603149523436655902927352564469259379326902513957700266530203095978420437621994997883942015182535685373952581674954526368979534376580657019506688748132488994259649481602782027268796321496293234619922858621277867678825491370164615078298949196552511455124851536133799925473329405250474593913924912551804901403390831450711740501508314471344016110507593788337973582789067759260879539344607152262224215382333489330153894940009834586533901180095846730855291500939551837669345284373711184756405666180209071363312585030301685774779292178313316406602373255646327348281134955048336338727490454877812787617492427362023670761057324483134159661968729511955276617697409266496712072219753283729016198339234913450671856683431220026361896256233229763483100008432120294903953687352831503401656888244700073250811277269623445793796563405171676855616924791868998241051758600745245397052440394156686933344580101379617401437696817984459028218921041977399588148719347919096302390719921087960315851964586936208155974897770793714626502400010799023394074901830556484876564044019461148646704484745692998552151910298131789877533559303845220138187074792203552289300587811989652204054350569388609355366352079539773210398305281469358542324938107197041217218595947653381833043778081164511742732935680326233241131641428417476654793443376871059887960714321380031930204997295874730540407682218645410154547363569726463842192519870398072169036254497989626119475346195254734474880846366685010394270094459050207503355330015842707449098167167948112211428609169028462215066248890291708247636295839908593225052889285032180148515349175791108452276764174092593481970638911935180284154383805459092545680971655577656000718287895404174650864444487637275330486618588627887913198091137313600079403324248364944559239416972594744134017813214704259974060248545972845617599594908395004708799034010940349453335426733467851508855124434739037794790113915284799938282633515926124039300489403274166512016144314450767050504019696951073496152282334971591755531534918527658116356766005810018865387036502835277104484897521399845192578397217389066546258015343671781439530194484186424336132467982739290593716534087153430243415506786743021432802857971661907233602499902567387941782564166386342672410874812089691799529503443000488843767817702945159240603649832489196454539442081235188719658702765814391130506231315568011273524165094617918503831867012569022324402969461007866076655261544955353941677901200948344001405059672259174534803855786509381749106901797774448058734457124149367609992922544375497404889378084258630248150919968340293441413856717836345219286003180349374207341129088557493435423239964391016550727225456481162350628594289395184071310300179756589174536625319150383798785373066376691658528761564820534618453895379491843182268871603588369275077855410841475816916672608469381494765293579645251398504292250764825206147001031380918536905798997324364665442675157885496504116737588881183129820652811664336805124175412738167561167253417906013601281586840716605226757932860034772050966241473341886952885772364434302876604236880399216981777408544673261443252042495657687251968928902101306694702738065723310727043271924859335698667952366365883749591917139742105118753077931026478251365210693917236917159155967697763044367201149926693443948539699579913602708706722711432838021246855315885038460450756859122906583939756348652891700451630407133090901515174232078445554725093208016341426376158610309666955884603433032223065165852248565738599860177261970078536206931153975848971431287001632805433404957578207772941765098112799264026267445074698665059729145576674938934608054531809788773719961126616990316210326818453980080321988760982334379271531791369297582640574651520702873403331880456606970974892343433336446248718921846000086640006680764293893307983492389270379130633842798650803348158429980408513212973097444321318667389109611955924135884714672638284288772566998005211664934734547822982660638379730254204195834897865492728459422863551908452096176425627547324850175172784662840168613264736639310780854731722004175205456083684478275667370139311794044918888433282117891203786131932421524201946630405904103705604352951344094166243627023050380063835187325378976884921927883069821201742308833558695341662261151498959733037164633952848288492505505197499859566019268823236129754425893906449877905855504081397182635782376853937776733107007960687910397361651834577002303143087866448497366428780519572180278375369679225575668491891544012967905489645541044473614128660244742603437904495496004459121145000204660640788761369040236852666481807337266045681038338455762663801212249239773760849573135339910245942472057741897143798714888511942994856977741299663716890747044572844810556164536063761986767836402140711391146026318746472684683736517628592458110701485687350372867786408697530159165580262455780381579264667555447984957739182385760977780225061084004806106049112388374908757400568145385583888461889658540915335972493538978104321154519123769320702224831927212063777898343511469299130626487155185875277476235831577797403193411734525969805530291201270196761046479780099300862785898294670735985568048204412072182439508001601125949813004653714414454010147969834379658692070731355494945150892188648577526049837658909733330381505835664398796899002686901365148731947521928717964471059772305071463737374874406416651278356408918633301449776192835629215568915731374744480004571009884843731735476903477562446584279323243628329043070154171111030416954029897290949469967976161666719811003325138761099757410714225754805089491754951146648993331480859725730046281101542321018226211161218032808157377990274486574775247295293446271999216933362071677144037958846938035870357017121382946099997460180182187217217820316108638070949402341509021488404838623964004697749860791584971181351855741948571771355034517420282039098468418778809673122690363103723019689210278682644736222976118509622284207375261241784528558945409584782281603428222482076644739841708067658443152632760947992710970595496336571116020117920899681972595692145247586867390993275854296221489381933037318139292360281964291441764499495760508673368168379423816602792242572983422830229937308653522404847350290384106194221461480553536360110558204157177392001034747822538121785134044265222471502565785788526018168367500851854368644667069187608053339694123467967831636497181955436837184144618605482450617195904135269079047201637007435156663520051298601126128369945944529481020638321516198582623214543218826748293953436296165935049635820455993901167665818294125029492356440701038244166842363513621908344320848585686797979439878826598478637355993217261347336958935084397089381198078856022083300330117262456180993049915148012467532881768933263035840131555093550707791000541507741393303110968532024193273602133335942404611643551498070626757534418055263575760282736414364452938769778575091320674432871296496661879381856396240520797406048137637370857663757380205251562705321737487489618016878804542225487729084746708529820375811443132907266237938994474813800033631766739207459417966080119828341415764580961209459326665346025307463631064586254511715110933308682061703769489020980806855962724479591125787395163620658259594004092166562170516032834000268855499213998125944650816177533565867482786957117566835113604843003762380044014420897831990140335889989942967539299895614370850827546132043892135670514224732115622279448086834055661975850510059575409653558505225706327368788238605905950679120827356203968736553949603508567674941011900196065319763868748440255691811431275690300510418853466423120699880274299502906401428179717337224051460708185153900592946400931539055519213456766111907891650507124264750664276520240241037246834114060324514820797852416016033426385928748625138008254308550145235061493199996695892684482660951996875137704256478179472342925959911345035957714418554051230886742531878578912441446768201652221881141572325507385719459138517136751018669079028246205826509211255942319179978511691727159374093169411671988666216994674771387581235589884768273625075469787220620863887485675316340301843253576693265829584060863611223658502419013220705349254141879296678287934598990177839246206875955136263946160336147575157943154184876112942552766291737477532772806816444968335075758603052677831616530597162083339994792052192524435339516491271771018617304228747316364353881326364901896898510732593688984287402238373219422623300832304655724736690619601526746558520579969086684975110249886471858004298619330841151157594042888413560753001085286164089989253446994193592178607918900886160044643360093127301377281151260181516816234448235332218822653468714779419621593045561237278383012807110518306356320302829822203975624356719898344296257410860244073851008991224738267988788643891504893485173066765606602131746590564072891775528764778009114601909601715732204601099651995466171422428561778738906387340637322539207184732852648369340774890627245756174444189797920171705224195397835012801944668568199244460984454556749562726348626755008071045094089456543538334719344496279903285819785473638260950225191989064998217546604935254843644830354787903047294704085156710060314626981157703292007319217920772059875929487108231502602963313451208908800123467770051210962134514589094511232458059331648208202240238411255010578542406383889733905056465012899219382378659412932505825923945018151275013771662079650082951456689539196985442677624790938978370091323150932644989813926815926713764846502628535537778970161281065391987916405930855478432409513765364564416242604015243337740020591190036055281150381447998127901685806875751795496258487587782150231045731795366439544769654743511101346187573916565954617871601220556806571910322664035856441943067590583463139288226902843506064510903232434224397360091696338842373040990564260619541435411792673618388777689980307230201828335309818088702867877855077758454325070909742544384843822430367944236208743002020404743158305208417720634625853803097299728910140526037383656368066889205000542592984418496643069772107977370892309483087973050493056264411495806490399183836440009935339770300091372817892264236279135289290245333645902675314110412649989844978340728685671821112290828829269519229582863992855788155443525507663925117628911796188678980556041341513060132014775432709153262923597668710862496337413472675889360137051840453387185317746367448685333562536587961087795964381494602518709912953530990322369678697647756220485903298571233830750815526500393713347618692958695894950510589138728887035609091986740671003066902402415899517198377159897977346749717804687344625438051024990052589164200510168556411467500390153089322228903919050120669166638660142562191207450620162728156493213454482792702092126905050509757880809402415274410795695253751046401154902184294192597738198949251837113299325218278871891594334354748578529416161681277186999781125923908898170603590196546728188587904407695359656110397019078754943031963775608531765690045741190503521917787960634065347919180851301558862438424029407982357071724159087489759092692094168623631500220272025560981867388778272041688773757867813778995307938836220728347748425397447066334129722102586996109604827849770056592342207245854658461155777410922160788502132706011423014788196149318932156333527262500699228183533489815176386063167069054855402190127471059557044073327189922247461125984452832296717571418178543557996289436839762935964681924754366975350149396326998775147547939177889984004415721', -); -test( - macro, - '51676101935731', - '5678', - '114598568890558892351277519655251349170512457301108169122918046980237508383487307624081510756564677550336178477302154205298849988621620086922824241203952845169587118918761676702275886803533985126048599159621880798222780212304246817740927997329598603522333259993676023070883723250177300932925278631685866750044996349161018487418710787156824698743699059007370890842841419231416436426583294134280327799008795618556337681789763639042135318458712688112601941846586049438371804926113126508996078777819094310659599757182791807946793330068376689258887811689995072195331087218152210579989587318167100041773383622122477291943850218476496927044272842237554951357422835645664516760841149829622887677523325405719345978782256416220091760753375551941881093250856520343277787117543740369641738849743550250267305042707228709682744788048246753481687183391246480490101912653586013524077299683599506874945043746289984496657526568247754108757916023746860823651106704947454023630829841108532968959604789557821034558282678387782274892400435740522133769190575725840235412871894976415960900858952703549298673487135436478720837173606603965003749202465844411925396601850697464037386444381718980799446621464654550821206321596000370929647608427450678602369409467488634567676260749990886237210425012278562172533337907188794399372225626872733254924000975445679212294865582779159284739536067574648674948637306603357526281158214867606477582551408107503527328338793768794019922917887582376894908153461450324195019808790951956266885107461973925559489970262966079308484289377245650607102408136209843678657317031621605407118233165024507780188477008776626376774732469991901945525053633560386998290497433245057356518070213620275700745654781100039839338506451450577013486892471483552928409289830016271158248107951963293890564868178813169793288638609421552999187733984144553406615257602536512368045676140620190929856992488533649322354718067519310329366233012095782513367770623099210385145306068882019668219811962909945944938303357412007436455159207921731034641005985972731076872404481351411053559046816512985501762256787820371273853296301441525251524961854980951466415757745095790408750111233498938399843328976884101167576106332111369898329073992906185716431137905217592404057225277504661400556077285374257237710751164948498254228336520906926692000699164318088485138209956632046211769172737818805518350576876409911238994857621609965737246540747228915599832803850235006646505920161663461782710578007459880127628658300436718162035702759857413264686037450843066618529962777161180564480610570194083990996868348589497339967832525631952114004244381394862686005465286457021469621822619867151692227701982207711240403754089139160258204655040380941387512320543125847873280531581254727837191059980870831091122923417959861596435814654220789276907248261882603123131749272763005899889970210586720440187361168097472073369327028087807891921073775186041480435653913681928394558065224090076679384591070891307475995293653429635959202548503686994214508788450093243004124213718944072946348546273490462900925735733454594192759136002496877104912413694566063277128709834235803795521599955020375102449787917179385948650401410782450535088196592336719230363010532216782360997264383385827672744353408971592600267691136637128647179666091641390767353626655629610767925329336924814212570169908132079298822259312790776336192539171954812142459076936946385158760440753962659197081868092892356974717649297318187816581273710002222637822422625907248946609177471022616696078166962638903351786881559353388016022793559059422611570772104441502159519678683680896440534678482697361220573057326321241467487140124612227021769519132788278891261578500937493023431494800715316974572061757711388338850673314696559686053949631600706217179936149359062760652855148968218517603478406764660079773518392515740066557654365463358812116383920109518376511927056859803872276659655935142427958378419267026204993883734671725916631060714088945987606306190400841739343960163767980632636951807150346899488246361701225858275512527213850024197265932454942520600005445974264278700061722886358112352180245501375011619481895903494024525948428278732709789878138429844599672738323876521649110855277792436882821166942741738868002576408435397753753580116182952236210916267829966145925028378437875898705477022525397608430772386789943421906088726337517286361167325374608638664447743003669920203279685500192102212678244500280945163720924806258942015670529098264965727843346426114488713290334508104318728502382771728945872501553223396187212916235118458655838036585541800475260873636577479118287025217430116350907433315459696137904514955307303089701947453368286386613774098275500676250943657017383834720061347722825211956235385743059349300184053076658159489552304525616565099968774334572359425467321345729237028949216589829910496148348266399952259506966453084807497614865786568010359718381755280552030450357482091573325492727231276923993244258612115652943501643076670607096916922788985244717748167425031600866371091539018747314619844176434458885344303041217826099156483212620631712885522804065144269853819342281878739269471469710167419263261298426536005724710899328976253518828717132656525336398408521558604682092666618949049723934689800847063844761671282296978918952554214898709123610631472079549040944065036271515445762211638184670207178784047672153843595557392899022269520772862968918684932700339559357972321385437515253951979000296108897236060608128673387896445773358382692008138068938089087965375939805087660261553154170365883140110004255362850999174312472258828659845801114248663995523535651080385407122403810220614699534394862199070170516370529573724426277383249873364882798357333666601674798052228774948816335992020369901620508453181317972153011582161807177844672456985443467954652113777013601630746866436183732233279064589871750135148960495813527709288884229866780850817394534670003825516127760071436525331020214654659944097612888206044199184355427079633744822550780458499778237357353947422296038656940932241020563615278249555508480330508674120678052089502789507188213274173100770916834969313508824784364056056402134407244119638598785990062688861144654163575302227468770905464187883181134822725915136640612107272892247282302709032318098895359710245013039285473099721463792717954735326941637258027020359449474131956608190956922971406645107469617185652049606430376373658432400056414731724407005001708692411063413271177513212657905468790370163043951258130982778875673922295809518571866979572550249035569072335930443175450876647946083312614092963535991789686984682545283358632371449413497269427928750522476008103850277182197862744717478903974777451339726925492684847344667201465331748104805481572363883196797787778153950751138898727728375184289353676704124928349416752637531102490310279351764714073405197836749014690395282266606472002997382187295402889448513435174099451342568509159453242120888320839737697049616714431772174331671258229322246266889685257316038839337528724509464509575560371587287218382144584572419703181295877602278221106570930586664027065311454892200273818659381311150404756262029418161040565111664447264252108585981706307591881047374954123445586938599411011096620619274323216164888259706949545584064116931697419880810232135950719390350713062967911958144149654637677624682217905237402682589189689936992002791828405957862158911334297099480655817390013698092780805866900709190383307511190456176470564094830491741371514412781382471608566016857542175626271815830825751173841300134557318244910059728166314923856198690466209098544666893459074761870150034083238014245526074209050076925214228138545561830243367680472907455390358950492305796631316420731434125187536810546887612854361525903826549660077385607201642040850831267699276814362171286190066768458981549632902853741404667094999899553250446338548089645534133891269993883172431804704263925215719942166060373843805638153594804487097561950457231382850176704556278355177741960834256932103041468108431421024565688930277277827204256767781041934083737995080790793709338041932760953129953324240749245316117068345243350389721646548464456799564122538803508302280206449283869830911336778221946967418555187670963441198271217790496259964780654563445592505556519078267175564184094236772289072470230033320640614537275025449633888698376301092731992965463666856043698716302806693885087426713749261988769556429463390046244837567904659070225420983410009710978888428520162826187731324371494738964988237894717677430862117281326863913479208553025891950712021033737482821762882285969238709814995624715621242460823465809517565513365312665098952226387532971101201851401611211767107556328808562154195909528062579532668678860849786353548436978596941540803973584469644923040177756384343881496136104278613378924581962143710807219315022833887527431763513942927784402594506818541221504288809623165972198540933669494785758163834650407164355749575134198337788610507044159766150241794499149571096051559220223878817602912552525929282957515181558545301005606558272154807998739024160863626434649314036466134847629318039975100093407373104577388406981878656175843258194717523909092875616040477453623785051493436611595002796440848161148666254022016142475461311658387441335732482745839024940608008050016971556249565896984096952364713943123112125591933258703693851493005494192677788993225349131525711396145903045479052901233399936977821783416065979989065328839546014013831203847910851373499087681269273873808794681827032455802487324933071462267161585550348497079770547563318071210788547323150873537668915925365865275006606032948938992420253484030285899801624037645490546643734003092212092762896778094831579400704783040331797648705647138803684988666221643282949518185294231209149700862655885675685742587977247470742881671606128975518282142621174602709267031158360580359120233235473997243785917055987801766020914435512416873713285800875063783960692674329948345063193713090346106430960233900220471049512359484540660252000207287048940904649627356855235310748631701290142334022573624657571685050543054539462593343925120666965564304346218619573761401243630815566172421336337019044921825132743027076074431860266381081919439461501518228192067428154599552061956522454587058878725629423271121973055948964177586675025613775553459402756099732937841164187693906160490012428728615553281749083877569856034002578003805619108603440019554292851568931421048023066958052204343883372931130679073105823557408875100214126784759475874110505599354169570696609784560599958215019928598013718187402289676120592754363058386217976480889644579627120147953445090187876503616327911008391800184735093377883625195033462470489375923507822652512086242908850264792687042789386655227831819214938281104644932640292609019834942621395608142214243559409841197661527772521605594271433534022197568992584336382425215293816118135415822763659169694051345319875623274091939751368133997813845916207449451701850545644437368283792955041875417825002650183812267921554071554148141810545261132326348765749042696757503149872630966032411848943742788719959766685423336348908720532382273782455044811025224688005258724128117375301877446615463103917254847301569577217661986908844517236064250159012321706048888909681124601158873187553237768719599661206118675972473809098983711387501122615038573963236084013215429847727184258992906237874964751406104681742937670985077393504140518585378445945934961441800684055554038233956351167210957484786967705794592308352175762541752214854817124986107384580167149061884866946918670005168162259392927744148326558953622056499756057865517495516987090419182627739373939985152189775038553115538646471075934221909696916621433427020321907211290750366847722032569885358324304825748519823761695735069483610277833391784268305687555417321060681254063601376044472764727209479821068239831947119222642427588604524821548797463869612449236554848366936415329635310834448639523331032214535561193061625240491292472959421415693842751590387163835477828542899873873355067539845115993799752754206275423338217062076744831694087595991582736550683224860678822779524670167708708091493709146151122212285091313848566637581973054913102622054948327816252692080182215324465447499805634653027067312991605368041127365270645100770232874469104024167016075695806268258050422993127312933128697504418653934394765893583568834878949604860449521880438659616802122657499696711371950669696088698654540203231615696906652300496120780993861295366389568887602126999373711575248980111463126737434199999923186123228140458802135764964497499211839068795147064258579583962890520656631190772155927073711649314137404718303647113380977808317817846980386481066453326264620161085488324738434460460038866634635020866393862469381723564361661779993116516911788408702482058657042742027085322886734485737469665890653383965527251028179320635401480247183169549776451102905415564180956069929150480364980253864993561144620337603341026450280648329108363155941423746477676441226330763778143302558927254074511454873470596647216773968167693426794670205504808306963783432036244979681725783341795616208450760202661124160076951242290485270351100016293179519729579532961953093883990623843703845911016699084294413469034800124849706899721051849479889146370628964206263232509984714695180238067877770898591308982070720120248367443358203058594410980465031081259361282748294276045466637842578800793537425693971319078319720309483472991281827652766395632559627448449322724455935973458554816112349560437316476772468508305512367513982203113683319867051472957794682903830326933115041030819168485955295547194534592544854770444190167625774242882339856600323988117721872329621119307065210242378471925603855682602511342933926964022027574473668074767250277614350240898114804833628233917590283331643902799593247663848733995782588708639967040765878261594144333897235212151312166170400673009191876880782817897642797305674083214304116001846541558880139343876729547122660589815784784823845573389037426438950965231475933765920983976255357185318394294462939870923725191627253724661104724674152692069584822984507668895796308777450228162744501914688617738288423774855905509153854844523303840957562160021954437904572106375782764718235463296636952021626993854683250625366396838736958893686683145675963239492023700157535671554883718959215653559018684790556050406047348053882167970909777535677010769091602244371438842557331819164644414366880048931933080199464775719509620992644091954275270680288884109813652088838217429569522796724565190899510248605280475710488565214118916127660760240741412774854958523464875335791354333554221114105991785983393823020076734058183927249261932463022507518378417531613595367008713063568456526553921055526758039628801741635831559596552015920057728581873824235567176123583511244661921620535917294970250780006254560913313662765305807933366774232072453360650960008438817118037078045098657774617616105096015011390156583453754385678396291801322575711617682706241038506687001234836301806498523163010650449912433471614658213754184557683081702691883198005157762869533426985772871548066409461102566074482585186196172527568428897050456306066648582770036459460511184764057517774896339386592062506459252579461592560474665528416239792702809524368229823156443879848127098290936890568640344899841675398255520835326531345996368545121081712559676548972073976307843066272299578779899750067849171423314509815187548244077378329796193933542997364333804995452518983295374300579841041477430234285996531274115737469223410436044734098218596575261885585549688086844423068789246324166549747789727265524050455962780001580710226770900533745079189013929659478693513587745539578848213377469358275467176678200951122297705749503306698574297410712427125825591862363276134686251235055301972061105661224639007183964902695034424436437936253659197166818614429825626676264111882581783852335169138950280191270126993381055654149481441296522956835357856587690439122868336488948939918429473181311497573245935858058048846043815567877289011167331444931953925754671240134069623866836792786186011879777990158691547401988209088233436138946304596662211246080716963940999419458347032733075551690030530582476791228961785738428344668271954394260631144673445131619681560910288236163257493867850591921101601774216283724826035337528992934585854238509545972201306935022486046021526186153884783616668536070352766884410433501411997774544944294529752318683967218547747054919125920723787453768874396140732374376069661038491913390225584336932342777315761255948878551294079902768864779706744004767497971699010857817837320331732586562556917485670513125539936647354410777628785488698349835379591475098154799827267570479952391820096174179651670850574284042676840011853046780858800494312309921469703542619592726263073590976462669364922795234207666005686292826903212848877481605826947453296687451059719061958356539720636942722901955175023641714596609837815361932183405821894237560762724700527878714340752426908901818205438166928697623647899633610409766731686872645318577714032460894835086863906305213902132263709453953046543560314104677422693777305934218298526734878837051106284119542143667788585456657142746665427084921846682769309335227479860142774263718482271045462438363768361342074577613689416306245388036366588228918750297891553343601271116018104061166106299788463499404576467234680999408128685491495431444663757432415240164158488210900819745907723117930120695685024585064625587827493034169505631321361629073305032453650015121172416455507667013522455054423012824659556913170191784272134013229862167933357870440372597009868509136667331096909772244774497523425649971713882182557907497459362685468864499900443106554956344003403877683026526745408126870149084364211072799881433860076306106247851979718211066568293397639539451283955573658564108776175764110532523449193170074167594375276229899521780717952518583208904105756371686598266057406647087463129407379439591678526118563375375353708424759178126712588851088358543556455828259242229752207982655534691287505400579846562914613465114055818872346386918363454946173595045963724905520868541270473697264250446046089642748190999453356935960747546554692305385529475044104740895111094053981210797991140570926872891670773814468169522981197767273686316613791050298552624472953601064874491619431515581298483094974434200152544999972253615705670333910064258013397051190672327809649449512231521002044431168670777665701194943318920142732683570462533039523306263620225871545457775764770604929953997570625951936899909518438534435970611071611463871839879758260799824991623563429811928499039440771973070864273967278618870976632376075488071575461144561219935848976261991995743418626824010282377472581361028454622921441883252823380473535980635040675347266665813701114359254871281962513087998501938848746260785427396775049514168562612073137570353309933421182587431285208099490235882059772793358564991437202016800963518589761455026124188003465061263343783842908952238749299315855490241309786950824004062760976904187502795945035840704763791629996479207882802190639214588281672075545825412562820832491492193486742631064101780835395570244051743402738881730159768458032350492340983945389655058528481715594070179000970782625156057915320413986266019990172337946416918557063800133747641604183437713060443142402624891881249459030992935793527950409840201343706778667031036382270368309922120727685173156943536928765918297523291556499898745165164935596868942828843358938043957961029987646769997740718353298902113509786945580718208991358463177836638025806577481206139581029605232343390118748079783839195843230044920030000293609262840245610181309358224141510030238251805707053062432073731984040628183721390347726139606685474826304883630174052769377584217789247910727483325946473633314792666461326212634921565119552168762472730204002086252124424937891781185484626212876955436221477165360031020231430386214870054108295007899715254119071513260472470230202533983791307938408960011206611455326096801350655243853398472597807466586200601253211741913149771316966742972424796953362829778527691461619646698652901365907319538496395153314189223850326377266970571724729299225616643375250610943592593231827466075999846471798767809815413033084807935411432143738782707086800700249890892016781300755462774204025643372850935993536835930431474211275360661334909180169369108705004893833932685971810039967903674985151600881858004723253102936206563045825118090129751111068119272073957023228117535946104197559484455044224813743551400684035958704844910240433782794543523046179137502988175588334343929604010655262873143788409800103840149709367769678272389350632655653061526909944375166865821226676124073718040169866120459345622225584107723626981527594409083885799002170436455111357966813110193233521883524236223930189338177788877617266977925443568413998134839137304794431773484057275907471161083605792371548269896511232018878269590877998951467990708359705970388117405757636229559483770009754679879169950634139569036627493168743252032958240435946744381139249473095508589299567208080597578309780705860706366590038525752672682617991285144702659613402563158938705017883355247903759797019472262560188954212310667319942679244018502332473572330860141285275142567616352011441717389434820775671752035498192835097210704346762871785843394366619830754655068315068021943501597109761283722605580646118265029950836645428880355482809418017207519930746525482467660956501946286248673803148678778320154527985484392151772657071003568822396992334569447439518931797472794360893625913323930637936123592307936959744134660419379541520223856359015281561124867120268443532762202836358157067397969523277941814805842994278790015196862449348685333746940835406048087120468705315737810814851006986239662973395622981892417635797361552255577200093154926399160041205233526050099942113585424767102462092543693848903032320176365611859456909911464662553394222492702361972492589328743134628042819438985147526265136537852840491772207661691558509954371067469519662258250666590165226871146827599529979187274127942586949484821499948977145043677342942737229631023377843981185400933835831423767351371476191843662990866109519730716132126804072070640870780628344547744782396291260010070383315973397408134147633405837121702299828479485082965001168058308660534087429710071643832112134185681191355797031035640660674171124608581811772720944526748929882880981531600483484334329258782080131950152990379792064594496526209604646130807483497903997981366660814109367081501493013317987778423970445235345262451162417303194219408843842138074967028470582769901836866713822445861935378961772248421345450181825317803057793865331808243999032870740776976064805740571853847337064834310551096634478336669042763136704807586517365797136211624710257953267355206084531695186978286706442628626395149607414222118992574163280333685823680906473269108560879550907146951083501973652650163620691173614434376022074343663278172616794365354028350879611668170977299413329242853102242731460245981931645393086566419168095714547735636341109457537424127013466092829987029469225005609148935719219627886553517060926819156103842061184103249786722102357857380363966877195050686029417164805540813780785634440605334896258106006438094052913691329158675367290141201254618676773332219794175088755775479718673883939486154200593603203954816323103020616423867397093710839615897871898114553682658447075458783118190023366087506978374367440207438924966819405213686487476793825253259734471325657957108673156552118127808366008364042860528540535034950176612182005881123405988511608306144849231503055132715499943836726775291396811671741107037864808220275570128503090451498085660993674239141408137294509508916040084880385126052374726220832131130118877249390053885190862016620304127338330822376885177520007162660545308168910551027048206864259306643403258146047122775364888620470370521404458837255123240697440311548296630455328683555320575028845668660604051631191978861891344050450146706574218145025744150912515431643639763471496084616921691588906643318094161772942444267813744245201380387655455570994259537781139991672727963630401572633729986361556875282295744688790419550042115325815066901167830915280249317272239032336428833326465165088029450553351265755331884109528200193953474902952152924946185562536338925534826199411100653632718279533909714213316643228976513653756607679272611930525331509533360676882289504637968260788530354999017751472236832783844855905587554729452514767314824700008649155270346776891167316609312798908304391728180382885705826358462049930067611387677311125159653938052767644809094689360554558540305110248935812740648171186350593122648008331898865084081910232912772214306873277181550887217911939282490833562582253824958566304651212513938680716752798136384903060676496603824306844521424474974798402169651179277198301900928835877874551786318031213157816266052352420958386807745919890178528945692073978829824318254828803767836945769264370965570278955420236563465318633087533589358061430931666035989509802975402163642667940061694906307745403336415888401856273908779094219374541395289779919505811512398727811277052044628889676576204347887155453152137381991361998780634451422237710883316724087265275331735893833197129258839234716392342611646952816033259950054307629463527993424446629554718055401467323011537168845330459671616005062986429892433717372769708986976311304603813694466876866558852113339228482279288771725065980107614730689732508546319518769065056680957782914367866215918590112732510471009325001837807792226514983632349787121937850873634795369167442047937893608233634609666703704587131733723929085811244615783860405178507877859666805690049528538712275243036223309707838878743093968440740186365488240924198311296922550429467362803938321202544305084030232602891812533837834720169281029831388109862088373636124595410033526477352125408960443495710872004466944740504181430539375974997235191384764262912442475167562557149784655839519095519656973612676149775555468394211684073546313305136429488931374979941004482067517955299494545191338214275004688648850080625425657255697031851628472826812878438128524708409359692881087063253264481220907184058301090967458080899506347453532002995200234316121374098161410900539135981863658581370995732911051446451138998982787447971905437800015184192194998890428219996377737564767442914336298428740825412724669981656100409516386221832151219625497417581073077338087294189592180026420910118672014596652061567734369839911877944565035730463100962767041999720431147498003871428186236484743508773318443952371300988256662194348824041466733754460943324754187692906063468991068425866078952725816706806990970194721942596702352590797837064926809786719427373172154689565613653917663261933894602724198203854026358029130198575484449317765398657516813791597967078843130547339469073783524497382496877243498441684162650928487855937959542776542381517702580219111410239373945791463335216468817891797159897821504141336134011961229585863213744116868341898479921270173994357042490280766042368231306294592305816034402114190442648210070915119128632526643207927399206403270502196136290923785508894091611892797999732479898770027343898906937912932694388260729491337611804903421576030209232881941209677305990236485778758568570909511203847749727139447140750017842138051158739164470079822994287470311711455580863809119499634431231542924995363573544534166199416944524373140000391672173343392584556167540657516390123765234814227550308964579212558077778186821292704585207362004093356520798803551721188807088087772466898440741018646115406804612936758076828507023774182209672664449988128724902414993501219401001765370672317191401925997949428670713449531376719892790107292559315329271665439517184073930078672355080717529913180235718999452728793715874798090520042529997304171394608223665519403070588265928559013346665409955899514815287087015895503845612331949334663867288844709249699760870154746576067740617109411671360905733205915721144812868914282146396418963599623786016511558301453135637971753217719122740923575115844689612181585533098056418282958853896584799967463642188879073429673984966106974767322904274930921304431241275791867912140260586098638979591977302253507591795249943499668854219091401728091291240324419097106670936334674554710470587846998580373319693822832186125663563662227300196033318571309952940878063796339388257833300085483835132481959803926226375922877243938995147684343099551037900344498227926589430544888103232468580078181742899166208452521226468017225770159292796370494628221608659705311860880457610945893698767024912686130786102451619763311388742213622180967440266735615377707064630432362851346787104938266503146626301826386009911001332410273267944348625003805191824863507525729321246269404084347151934903222130472688695181142909993054528914728385212132736819895913661164653395636100392775995046821116359166052147490259673545652512579506858292074086966566678148092233349090670531856554153436180220853767903100802098585062424675371471614926784976597351943926464759004842764683915776120276735116378854746819555607095002547606392301607456201613727812460712017149291083250455836242558225613747332670029560146313664626625184108408526435551075760616558918639998468694149252839714828173433759651731790585540238768981676874286013596872690278563046650509425213768568600827027602310874261454666959825912534982207381304504165906647669730083754622626706293980961379228599568320787109947615111949624856762702790577996604294851650710262744819536909560241872405354015195815901368973088718316821955357398270458847336192054118678494760800661846422575105028339264471032443221584848296622560987616922442031578568960816859233700095456702725652471996634621805360039904773049493081061117890447026080993179208164914084001561137279717964474457910822698800571370948730739574958519456023949553713352403879552609629342711187222946890885571493932420920963889812746152759211771233710658321471894667865836881256359416902697886305637566565270511589302949804123378578009588741245234061360202559864224187793107140310370774238991415782896268860247160087221743398632360201329490179060521461387097002495616922113269135683217341549840373435949057182322394943783472872058473593126858273723016989321497958715693848778260916053432892608850153974019086350180056263354802687994169752296797729166187979142462997664638545934162928193655800594073599868087694021711982073641040542199591089911339670166122773835431930957664741772458832249655277342309784943306925485650386363310465509184262852528967556488981679969063781668502292160178629319257109918089175245793016717386236635810518592787953993726687773744355504320944066168920405278890106620954397703842075409790585293639502140471672275176364054469159930595251498121123000632836929940035415174800963695560911591519351305097536056757497122738733247223334299439795964416272756974788281452938919543919179780495830578105176873022791010237618749182041436120814538747344362413981166492880532981408473122438956024899704764414827372680888359069383203084252482710559799658759140471216458496005546408675587772142479513233766094809931909320095433919996718551768358151589619518928107632509757299346855803242881198506144473507763036827161335579895814696687756797267492473907511129330448610059311031697081944370716803795577518487360501045579868709621241757229741722143091970632237708849516805918096189012758100919518522581134272755075309636666228932838080599671285408828093511202116961319849653073610668505654418211025373854469615185587420505700575888261495326807192713148159720874106763838858514416282535260626452514445199386144279460790374332488395321942092245696971633409779711403667148196791467370350138794216664252879537117245964416540374786812119366723571213640039312537831206990870490421854920889257491088284125753811729442672269609411252776690642554159109624124410614773690847589962809481591267437473683970316925645103066449528952833136986667526561057302938060806717705640347372758940854559438090824022934117904362128241289781935585414469223058188520370422811243860774239667131292667503614480954661643166021094263565562954650536478763836171348484291106790718789951482491353812912872996022446709005369204478525205413817559888660494002070759867343020833304262695786258762182090471108517478008062047916158342858928375981008630590361530730991533337103005007767024431048399846363323604547570763844498393678827412313502948266613097046593733067129592808782764829082779540513431895899823748129703286439371900576065601753249715130145551395611158446136282331860450878473803949375391163105048460542796053348711044126190850489694720890621885113977651566300965967733708467656571181095189043634361442938460620424892828907311518705548399259321673290854432989232402033427695505537391672297800738391325014683049620765825976502001490715724896015980764535931939727448433948695121642423627605318724132757699110767075442641487063525797598420578507881625322631258275225375353312907827229233991901973469958877318300954825891826980150082560409853023435179352929576326184297304876469260675852353214336752697472278921785590185472893192209568387192363535612736411827177789230687431274148917049359515220791900149954463891144855694570764248287491511795465355571647974077067810042898359708679406723077456168802915159985106685165278844446272185418039624433414989676529360733224196806303027701699401813246007448367635711560091194638564196215462750260469722895057683130186655197563435087042456745552261726792507936708788382778795714813046436130676422706429620437824366040216140317789120666296561961817276627472468337572371444709160465057566385526105800512406353089397311243525990809771719833722278531018522388436675146455281597431804631523542433155277652876622739675563673188640006742892639445098465242739506308240042149149884627632749060858136523029010127328467486160496136970964099609404485275485587599287991078550382891153951255006778605902787210807236763823509705570383045418472207043091603551691808413012509993628114628175790641442073599128028234496708954756607086944124895421408720862402696781696349037884497396953950073338348468396830752927901597524196430868111165262332019170855492271790130827789573109557139053285109689778332545958693287355659898640515042491550628028917049986801903913280115785942913725572192146862247809512151632511954616445305241282672393782775249991259990268401573895663033422145829424653742257468572830795144571447217172170344390171558138444299290663385049414552445567639181283014510290419785983701505834195674761038613042562189128641343318579288380854262613061171426518448419053079528551126733990801837900708461500681574188884795165426161291709564074295450881956626201918302402436945381093124745577171671312225963759197527876184346331791160454187021677119481282452140937671112699410475067112269611894574476316058950214818972540215691086743676782333339834793090049695579827352673705992602098532938745690406929370454895121406852644336817988310511018606485003687435377377880357687101549923752753870842331086890020957072110482921078203892582825430743853678938678845171550824421056075012746445684719777935620199933697201020688921671515732288023709159460020579281422206200660770662136186411119039464511246972567849083853953974560152919983727889703872145059312940206651954534823197197456037124574320069154489362428152384518561176908584188017896443196497458965211081852296712793505164224540578823521427317961999439433840947679261853070347008183355600509419881301091737467053884095017880299752423221585377626802533750299111687354685486159204618103044084872599593910681436894070175869895284548114007698177881132942381244912110629421844127353550884486951712261822154242410334674508400867284003116207597789041715421899510712174705598161680472160639854366218120520371025267080822589762082721234822899143897023722519527191182967187424707516302075467248142839624551051489916072253973677889265488627584976956960720624875569085896430625668405496389507310955276293395519901278703982054295957616190481642061914557057918641411590376116837069898283627310675729905679075315341752230316326873798944842338809064711121830318844994995728478247554519759647479833188840882272330805936564717875937759645466235877959356774680757359186747964855850779950002190153225827761646716858046423788030255771497227479049063699882556523239832981578690856832572914858098641904135700095112492548076201483334658215008902573568715728628589777880228112444674918240096125221488915805020859677852091654966635145651388632847300280396301961059638194991615057652714347324569091348372183877979671140165075401908204991585820352573960135268809787675490861799359172749390316567281411205233112473050152264568898538213889610052662413601412411722965122929820314537969307515359259003169193350947717065852529386538881686267170773291846400688708486999155003104663586382344290816318064759978010654953537866623711446364570626969502173544423423074929404208942616624720195343641583097741467031833905383231234374060924479894152342878888888587110637396276339544946001358888192005723471164751936785560384570786894012343324076324959874814196843505410918926079285183879707107430170210495856306080442455608822862122117572876456630741312672784076158322593594055019414285422443235678980565689755317999308802910505961137210498567710018536735289083212063487672806707334546206404814261141369706196328862821461886994687577175390043169221020130498162026839862458973943014519368318441838195560100295968496734198518495996314945289548715598718870583552621401683863581183106851205684154635910380524563847117217821212106128722162524253763046827147151974918777923681784807700970624766909477312166760595507462337125669968044357089923070482883709634106122062070766308810712735710624862438926613157497959226806833188459480017662980172063360634178971275611314406393895211433271861436947760659023345158492960047345295499295662853340265551685535599800744092303711269544719828803680436916119091632263364533324661266862974434455516831152632639373435575795104537875888710518410020589958339879959822445451353658029443025792509752253551525308255741984775779270729019138683637750829888081844708006890211552146344622614088468708319389319850769307851285942767252474785352358559267431807815209013706262561029595478897605034763527896789052350336340918526657057958081872287341591904736173950725836194473696707391163580393299902911848791441413850082003693596935427471422729646162077763129389201152696915172964938281148555040979580355711393742641390964747263809506784813646753925737960500015999521599040534422500550634111212967036120707920863177566166569229503234057262633077041307108981897403699595707664375223053442154801646621952674073998016018204114207792322619912823001873411899291943544289433976296710950251614937569204757779765928995747738757818760854802038762304982286305288261345463881107741394409631520373874750233139799838650413255743318875470620818472533845161123753583328874495241216906348859022307736592331867789432771689184631548324581181882547915784645287665908939251778029107639157159289196176127518723121751560070469290085609343869257334092947393223315517614003002467048702184847384690761234900833286623358455281883757151812237381345516686955628191314036123519539678665398336254286303408505084714763392222044018726750547293413234050365413766358316654410953551281819431995257295975108311779909520303889212337450841246936324792672921730951765343962514538205080555856311467242150053436496567701001851431642012883560394627048117888153808553859689392563362831101945847612823435569999360628749362849396263121141428978393706694610773760753498445233988754224335605409426064724465150571453306140168263830877100622522054887364455754048830624591098148199844437954318671983054725473714673721746781284214097106750134651020281137856143339404661336097397401255849460415338500002693898912492847012546892053061780546003055285372933509996259190318553322495887219489025100141803027682285498654701158621266627181173588718688738389808332699617026792423659913858117693296106288197971001919395880629554677187346338125838160292486198360147729979871273120571322032028504575690735750011778046083231651989085708906682400875964848727543577767320694907469192930438894927009743546491436041357955549348300042338360759281377236265892227047663620196806664771980284507347099402902967733697999621184233818138249990684015970535495278317959125975524991795957531505015611136002871680310533093786875108515066706678620823077849432976257275439747172137699295045174649617946011443989552460583705965135899024689374640564101925298778186797415025378969912635036062934209463477387146111182074864014263939109691429255035354418183096283089143643718609144817465350868728368487526110304341902202363658329806583404243426301929038999413811963719928900533075863880385638026377355762024440421846082611952343954020299294254318741900205024128317877368328956627168050002516703106370642969704283772358296461093955291187494644342390316988195849776128675653911509104542124861217280772932996221537953310962029452657975182251689107870392012504852892547316032463597681300089847160255250462914104176616050444245028613939373851574524967337186933259018554428928015559462061881262235852459856089108099770130466183985887436588873773243601088860550229426153384432008657567689985229925644560273502542282381742604579927654137058837459574794972575192961456785170540640531904771432931209781137337286211239818317844041106915878514399961654100374566986719879295231727712111771772229486027185802483882395198074790128622402561348121667919956756920273231028898988580958707002246439749981244065925735360676364733954118132106641155299199544857249592009103053430934913609249297653361487158248749289098935130229734152531034647060511392685477854761239602786254479061019382441139667288410559126176759142054940087896465268370081054931187899275164499441058030518288371926823323313797222058155222896466033422597096415435116962085378815549492184638325958401951721290473197241670371516491881467203347875585007359331254528344449459950467758875267278189820752127439854852566552803870490438503143232653957782922118685816688148722781734903296936610500471173522177161064283024894888579788472305995091180282414062431445897622125893030305492825543169066044111330888912781754024348338736557326750833574402747013630048297404805583748083230530028596408741040030162350741781079342392865246051725408625341045214944667618371021284914091497257188761924767939637028534628334759882175770670772289957481292738316309937728650022513231422234754422579929841855985946451468684350390314845273621075639131390824319325380971724618039332427557919436402942528867210146505840229198062530002639445641553444719681044247172959043190866680070064196331063863914130249071095131248563606711066426848149947420902504927075034868938069205285471610210028557331474791661084008529287736898562988280474609439222101768158060840395982029394044056801641541171538945243610104322534200730204315260865284828953604535787727385628812968114791370986014951254706844185451923929072881468774586758820306110885474794911532141074138864914763733541384283976740191875378571118515523438069807588777000827782446489266182050245346558837361947434377809680600377844482788019840369988901856492040146378437457195604765771763497148753529247674438388594397093126205511452264943420149474713408497012302647389453439359384872233770236640360026013633256865164883566645637992031106481526435623633931034222232355213509370961371765010288817762179693552242379775216656260241135497573014130795564397554787053584387187656853711857623431937857471939579985035081848718829777316272176681052612968630380592713032967004361608181691291430592912818088530249261471767125961629681696763811424116391066373303384993152768280740948118781184558104319987675542498579919858166065158389793255707776743744116436672753184816598112104831674522931550279998771106215597545399479437343520773636597563675211447481439779932609623982600338971268883683768790803057118303171340769493891379059633504014432705976380151918797310743478564409243233539718255459610193420711760557630156927018163410042030919328901263062660290810416055096762283837210531454115711704392214764971534200239720890924410613605239216073127851967270391325506751978212863009614699353698989489629129966825662563519386134716961129383146386288035146250197315211925553022512173302931962094722039477374774504846268505683930350343868458784422880640500784492844169201589431927903016379662303396527872095562568156390966362645360971925681857871968341995483947410283964766743270092620340260322997257237091573993613689320984290367200247030533720027280038417097783212839273035096338938542591727622575162362022599685496500554429222347884038006453190248400027743775341348801335215989938742326080054254247170602001952079080816650302245176710604093355842163642360723052540350943441654273802237051128416322439426475234583967057527446258480482041840231234842602058417412378587528062618463131988655226053150118765238820025342051914431270624521243139110536045516721557341224477691444072542250943379523540914610979701581620559268793412031737790984636977046879757487332724442490312397606565039366925463662967999702808542773925468580692839991293056392310917374429934951347005612307226284322964209030221618750098429366099194983439477136694496857689442264881224914039910670322116288372730289047738573108522450033816672394101565965048622910696973855813020101016596778492150524524163597858951412311844796147364899117621449468760602813472330721658608635506930727103404682194935368589333167590774588214751222713377251630553526943871411102693132298087279434996411605103626921829523837922181308665640485185328298412378683376130991261907022373866335460773339455678784703129263634716537532090282547777127534019418852120934212233684269568396133976431366342292873151938449479967788561358899533463702974267094796359284987637751201598974404152475871775040728557820818028482149140963098586410453529806961657287735738138755712151598174425380024951275335199558910669206209576113284903353418478945780694878129790034895748753362050781539824584920892084749347087235642519520452342493927793799776786136198617469969693126983224168201909587877154725998407004749212713544394340278146389166186340477628969995703328593195001704673717058025352438357468612946242018587325606773986648467186870072551528951891526255461310771157406650956757785133396326012890387635813591423184033135516070805571730845080137132045429491261012978403015641430817512666681469843066257060720964098086648402611312090715751833710679060879766494555066896257649913350023260836668751637428823100349524601403601892419159189925922959275820633937990644299249271169988339019515965180613573895432999894831577608592304848155696364198541694025900829134781366210991417472495148139315405572913400497872095116583163635740301688579861226084476006780263453790933289131487409161550962668826089637489553038837859879843790532691421980575061315224117692153481092599586056471601215629186621130434664996556516932298784329307022398027011414332176083277481254566740985113591763468957331875643736921355329794098131053487627474682120881562550550881428255655602726301461818701211939805917586146895437388795911816068375606614039394049767168461259001949273538210144048916666534903327280258028482616623798309398413700586176634115625829647911232227507375334923375588614078459209835676422299267049663923396700676273951091983057302624288416865668362779855525365118686744053391254580621393591196711448438077488551738236403307762952589858684493455657463478117126363062783121291423235729455410918637867035685633113782220139687642412165249598360509878714727491849673012334378180463831584187354582895646400179807708658382550667724914138565820039682009987745157792741850123714960764039841065734298623591290702110380779922504349890524389320347890308828719589040376100679017864219311467557598930026491189345663675214233027772264878374490381972865809240289051249348258334250741010764402699448241367513588990261100526633287903176928198197677117933055092254550168988385755711184604062724032969041641602920344983239296376314963817502741923901882100981471281443446703980599875657083621988880973620719138197772524100421922113549246894114245414372112090493791692600291606869049421927806267868540149608572744342888343192125058473363971742076638014712200975997813876869820888826654477230072783335769094726343439363924451093740799160365246814221521418251509165560016088242931176476666040166149409617751387959304000667838298475779617451435521971107542909535756971647840211114967059219572740619358273317825413217697042690085081762346191097822496311788562562031626726216116215298679994354658456828777010935958029126216060917819707341303406969946319555176649237050902062556966761241375058739571292436871898013175671381669805507508696910381959470264039318613075638568464398580077833659887720496385166104378193365458881086843156468468523490854549529450710965680147266392003581831969193933659362316072852675420800357125522249098898054570353965505168107882852864529840652677935931955087124815626428567901773577880059003707684993021595642820310207853594456286754132723969857923337469252202259735727997751116848764487235601899102596111514927141978064206334037406646670461524244267294399389563489619484717324536636445719285643430736881017478756148754273773852289888136125549801175894395271495950395640707601607104562785797592351715554623869028246265577155348990843423689483732331337719099850118433499218006218421240299027208453829439559447186342420117431465432792072288988488740343057267417723708067738577852233243672319230819937439683915440649582059516544561598623280971773789120893086121672269536624083598033868209624720281605641588278852741452020860395156344376951038233934553306218241725396467724828107444994633708693546367123495314361476105770109803860472148239644683473596101653816933207579295804239795231250209707489881769264862491580478053842336543358337010193843107143139943833585292436929169794827683225645488250493758065708204332690153429283252246824483410972045997105029219491200004356064388873493046364077650981091839516620395962650712687713049420813661020164790060026130112716818875580888149422706314230708204130100772098049184062203228041362580051800921206280742731510572822623376036459787961780882292249221002031736456366826421727834687640584814053632480791830200948413810861443283626261692032040972578925220311877455650049930685081104107394628130349553352694618261578823385706710078304466022726537115509158412710129375703385879757237284539292895988728180490390220496139617988669206437315385861127520716472864870732451423836516235084903022716386874198709556735053670824221685660220728278626961642949943462735737024852061880916852346905339456156753923289238892045090888056432159120268216479709411830925161705073727852182241843774144994444796800812422381396128011433956107925125566938292728894518495205656479288798467478295768971565046605743380817683675039276816505508751212423949926029841364819217401250701049413854705548216151519699389827283019852789171293382302732747354572335967904262121679778835809536307205684993347760735860485162352359870983946965085935681532501893160966722375508805057199214927917795853333092263437505359039352967087492413012955087698529172665198805420638824693085516459299213503601188841365820793247308338096862952405825957815923600207308796364681882565126559078649360912095932577475791841991368526488425858095470521872452183848155746479635949126054100759873565047420408657908196467861088860745823440200596937137469726554619440021533471197651802029945746028546114454400341137146234850866902640999835474619226352406181906965593958219260459751945218547186010136586725824330239183847055787095688060314095111184685688138832308190665361771520893357047382326528633906357935617076387165550366027262811769099959556389802647692621844549401990735569529998624105286253926755935055719547875890932694340554447107616689228089562066086569944905859544518038840788528630069102190204691632172591973746465885214629803758001818354722671577554377946458675180639189931170900056297193465314174724380797003889515935304761631926385152267377564862725712122407042606969044731545405432011544768262989326191733481446407893297863327714256422001628622845256022926722039032858852550966980793417370766719350671793803838423609435455646884754065033709502751899071375163169890856762230034353248802768786910964565926739703092124666704198303948460691736963253713870119591703313690617965257847769243951364137415307103859326650169756472734611428216414046385745227023184773573317555077165126936736741629792481292498743205155835997683268172359371347012456091212295887484642867877578646795751622965835785463864395557880638259410281317519825410588466995700288346083450655637106260214808311406178732561340081016232526189760751886271379564740782676263559705973541667456189291443581212424404676011914816089260905831619643542553993402039798670408163878137967461241701829503692199517679672763486035252098113450580438489510602779967538406778194913724886699243032503589895316658938365078639346817966446042366971598315102456226149656515684119923736039138700680083951001771224019777161575827820297993227494571953532246936982900599366416589787251517727463895146269431106027269854190552230633092628014821482309609635823553388474087969696520047538050162437487064672959995402543841470139970706134643073875937981889199695346910796106300932889981171735045657785459463379515938396509980647441968924682241853711106019941292568600206670508573236766497716210397782410983939914467015508129203700417353471801331728912556922317624644415889241609181001149181985321743941473620491460989210711065194784149182976559106558188134333708873913801535240126355571162155611895528080568951526554987444334536731499537753528195430833779794624656681766785270140096283044140898051247012255419499146558168259139756529674323772834587323355629868317816780292113528663119722680719024978280040818470547128362669379424806012577422038887191868631883448040020015452134369307399895551088373207616043579965759272959559449403269879855598910900010706024392636484042799046911831117069348975342142583017574911456602802451624070688915906429274072763654290623835166951367071267497654861627881666298541483065726588427718084629534053816735134742365841971731795029103239286268275708328610899135163422402889934113026131852180686527150505983759002779807773566223011788941689719454712179344607326254690287120395766024482256671418388078554228023784784496201187429256077058990150435615351155216101657438309215090638315321592936537200580321910657657215666815341247654573083731344740394722638474346512544521661792980002338816800181577838361703000507770721899400195844878004251805255464724701063911083619487594713834381627924257067711581105282570735802353540652641183829634997288735297250112282208477996416073074851093528870765045321232820222921439911099170191434612580973635919820391541809473112124075733876951153040686421981760730940392248786343513079856829965044538757787037942418740284997136502228750221662928279924265870962201635314064803827203966095428887928130337192039410759247169242739168498523247197273121591784250520458251462557288339313896397732661534729027052493515404201580059981956608905079272892706164790429218771081619749768508639849339364643058661360212160610191272076371006352322980097730083536900596908930188252920677441148336565335213544052062940677350237569694340838070570449158815512736492862139779132213211843388066176862669989419112198876291824452684702959605871999341982491423024679580081630979799600019718579349756991631102855467872079017699044841433689138792070082691245858860091100747333527615921285623074522312582760989162946865573374037829302178739225575289042659045727978291390647109321424303936944279972788242891964130377157310772605953533486292992603361085012572105175885943335595705321341456889458117518989992036681091968371021602143621382567898278967201088486661538826229576844449884230327889089656416829054301277201456616051237734474662164978054102538036494621644430726212087953103526033051131027386921359383088225533719150606934884972757665515341103897402690521343519506346008077717938429482549626794547576980199283223676534407717065157853712801659521185640516453515871565192484321804442962765733972699330046829989406888341627015358639514826801677079021155478293962619923778866000228101968771938334162366469804573202014667190358534377215482330962923275262634963671825984637003914633619143396330500521755888969843386922843589872134400996113166528653861650963770197465796117647298541079103250256973646631652580593033941058305941438443670583302078961092385000096028004387250797639227058729182855207638716095753795885220489180587608501087576665670950961102068748473102397688480068745397125317899151900803171836227422289946173194639475472087332607221032204172993718739866807063991965434685529724874290316386815414750536825089647609755324478912829208542640630837182428790314967707466436030120046677693513719304754091874591925748831794738661935209325972784637836372417065832634101495661541702552237720067651495419730409007777535110394473910436455762333458257497687020560780560125766474028996604483310845299656108458520836187635944075062965164082259016665860024741824447869072154938884824126520956717610359345956570059031363334002503160837760160190522749970822199550294007333039256459130986258366814988498652039570467430857270936255566922917138875176546035640770701881537448577626102002317298447304080275355918518719943682484835725447927289531637629163866387981244986227932821777092957191598008618007108755043196577493390795743913791435300045489842318803840629056604453508622889454329052961581308249435966212373719648882667006349214657094779879673766929203239990406226893937690672818422017388165317029813987140416820890222156353954178254095413385973580442456560445558499420284582912636669611387427404451225546415356155838383066957787260635657953616728518750757252485659572480629089199805995107320554322842323926689320663451184520268687258689886344606068388694479162354509096941490038433598847203104301976611951445601852362544266638679678290075412941302729162013553313728522646010957992606699109069616544863135068561276755095781547242671190932783722064505309964908887877840158912914910105346231151775487613772792899879678519963830591786250997836698271218528501056595898076691114631296567610559849673121473718916782416581126344147631655121086933981180869415987776601838722614534041581254100451763340221780549086746753938766610289735053241990894606197687789239665605165716452187952517064149162738755920000811374455502914943892262459729586085538415828908694331245193074260696566568387741004970586046250406779678496790295648201386486985620162529677519187045200318621917855086482423481330608007219543743506802384438536607353392218691697424857241893460152387618386782325153321432760552484142145781862136735387766492081605376589501268788700420050453317070218115339201229440765302660291694287227700950440380765107112761096963572158992801291875003909086676778623232366690994533299491222168137364267573039455654289904047646814229327801683590630142563153751747079457858925522910205111288353935603204598220411265610249301465496049605100661153637159888807908902323782288115917266030548928229073591717694655741521631460966838791102199409138425309485441867582737071365301751525547942825571779776968661573074132570848279551828767121886018701878619280272422103259889312657193875315049837541388659071098765055026282156387486107899591956053135772784100496825157507016394803644582281562465844931202245768097460360009083034532364442320183540873202417639221501463884395812838717474792815470457888288508076821945174144028105860328866061726727674515030087857289847427613927570162848467465868388369591904690837471560863827694337872032073339132310877824074716599328692954368440290176778939622098606562704309952427724800739407743083724696349092602202149637692306858199125713600548864386864010917928499351492615039593355117890366131905372145092198636688161883816483303851872238717415106454350355132051773548989777552757443255371566372474534435441848412809716879074979241665690375961387244267989469704939164542096816857631992943353367922943450974577981735513285980794037989658748077626750133198955052583318759656463244526191339847597578899938757558196148864075073244250467261088756301070340776077937405119970413498591233848696140017565253179511771575795275131945857256304538740165986955527162558693404651982237870681250364694679537863190584566503257017428760056979496904352580609209111103053294614675377385059624280899965796306324467850909780831489026318753391745970785291441580820547774726329434556660527022852038096530229629083381153469692319673185432212788337117250065774907249107252485740348419082835779774814914168825271376969001094340761377648487418731698243293622743693716904170881810872101742928109037100000977309557903344136643273367808231025012640831073700517532261466072965558652756539975841935786806116867047742157426598876286995997384905698693761028030005126905217313490141907445119240485586174004947125072513293761190201760157186724092851713785477603552145995848354307689575140731563893520272232436224697297570996577403366115446408204985059861276880231146593632332116664047060124406837360322379955207563026996917043872020612169132773506149751543096030902910862068818208029741138639192386867608762741997860087946363183791825619263211533747157596191757134157369834295405013020010499759058170439698811648143980733751968237686573164454534211394206136959587926718539689642312494935570859665860568612537475919659068040072420100618936747953737753705749383127291409003383837688855841053309435892404414955527379658360309647135313289366129538476897703162917189354281206164435348255552192776966124707287270272355902245433955885751207009741227994192134495378305063561634794407295832195458144059625112222238732508215922805408792621363851812950739715101715283572373388069309775291979566994423956314498349376967149231461962778062765502443563061034611737001968423504862603967799669087117588804859019639157112753414649335925988454052986607957770870482923146856099244325494894435569370404603972409346620158075409396512099348903782562196646067345376443663877635728814318418090231549113721533373625163581574526840997161673119389664334579356556456354401159515864788956168788481450985197215201467974181561001940631241149619657961920795580250374263473722428593232378725810430245637202518132904531251551627240821059617789024316527079137041828262423203999027718050493278416463558083739015666535614730630528564883352138943172947828201962484672894006650945217851258824311228840838756059704734974004156889921429014908926432337401389537678225680966329782263719847506238362967059541391051250329777158461686302483375117714795942380458251770588312881492313634727768589869682161697321291504228940601873619348996292388777724630285389255078462577634963779959329989151426153404562174906613363783607243267517210079578320766293154362152207280832251485579899573303194771526628078798007578233062417352061348072159821545393566054519332770028296707118564344742106657936278687268732675617734737178056510690046607762220209746122648008510436643666435541902320142352415694782992027493364828745928747851672282706320889132159909846882540327746849007379809382050344297894224907120550708900023237802233950487712523780018161507312354618054223609497536035163494093928091032767640336242711088275287685948003533785270118743240118979225026796544540327468208658559416238357927216565224536669218251472645443651889081645564816245005362169954201386198950135410692688457725430323102706392241999820836165265276591679465060858160505568568712438796347024605304900308450966553605733042168429732916370172195896437974642297090857585959129744911909686268599809774528624601994610190665878857027337811884181381233078873788158373359983366672234669655911799888726805731249876450737363254821569278028649052801255401131062341913855820271583117070719273865683054999663069013111249121297160457447041240423061246140642426490959698720730873511722072350750404737742430572024048268685119133667530568425561907620950064557291163632179554525056907363270277399640559645834440273363853661188000047234146519397763559239145260412600704968936012028106894549688440479900267973574869188916898200795990111065008878815333729179214937996646495852784883698591027255166736443038004395574418572899294370967551529143179055369802934328561669594406191593608936964899070486635648836640763029576597160034720166645043990534279613912479497024231544925793613084992394121484803964852738532840786244112636713504212176390740168740010064318423771759800182571206639184134636335947786714976994584189825206727396176883875524645479643946415113644023798932248203117158653341801005086972304051184189910711151723320637594773150678911124405222765005192822545537671036184314807662167004590802562833162356684840697492521011525880952899271472039977820122616771265024357322419282091459744940443106332422973501916691938329374288973886386034592918524051364182398592764975688780001997803671401869838010577270717330444418407603271989346719916686888680593245148354943447462721033986270080485900155124951082963992792987842114837857821508811758170325737210523836242819698681325151023148163454095321894993683800138795128096101389801313982043237028325779746911915430218574372464407978667515942327600656822134915485630059582718562671520698991302473350312566427091102259532338314893989689756822401425548363478786325343080669902177859287335109626530228527804055908960006937280662896796945405843803882948848124047942281965182397536936457929889578255794210593948378679524919234465908033421164868438416051929819069131125432441300566879775210550054157419483806784214653243093753518480506741715472803332755990227351462034161722520909347730060870649660727422118067613395865270827693082504392270738618254811116949038529595723094576904555387646766194045214126185045174967881222625225420294995105078164391170749628652025184869718810057932904459780474128600044356721564987537843310493494303165385746459512014483412377153293124606805820556680644340261399666836315845102022850213187298338640077707077917127911385849411484173150612304233608674207467083445888214784873006838124326048603420520398039994672066938235732542051375164474479235433550682373983123832947238416282024613236150041949833072908669815550674617589673248615861702017780769184080195436695753443836861503161723295315725658560497271219460777837509040504799004521018029935893811387189517865310399566336628995254428616900954602946642481835104052723177763215261081807631624720322398654828944688261281379543513838399159096503176110145561673340859375841223007298962049354231684731456119013370627451653372101952784150843366485718683154707759266001380413461198030059470241851889381598790912932175523398760753164627792920260871619044331651516812323419790246774100510382849642369445921137356415332559100571402192386504324237600586223716858020906861290616574468722975254000616033200134525382789948233703766721713913420053378522189534440356774167756989838340371683053339160303712468122195094451323769643603060107933336317574884600660754013122975875644836292687447653875456366671633406699749727233770775602930171119873713327502029649301339157436902586985805804661850651842865010512710599579744907900725568864758808468315496153957143231085273655909832339900927873362328571917762632399121621719422136842073993822309314300099352877919729663183063706089857543103711226019781257589533875565388292807852373328379571498654743595708116126805997489585227762613411374287400898540454081729983600454020975504859445623078574230082737441934713309411334435977095406278491948107490251001075326160260816166141665828764940536675366409103075438140950942363295087616474038594568300076749067398262609892149434246290522082284867369996747369036618212558758764999033240531377456820933035653514739288807506785309262157018155354164246038618753605910751171596544451629138375154996561231768056352944122861796274432731602355764359001440423701221314110232709724507824830537580539309136187075390125804621374052404104186962215577145031687226391307500214048177954438873320863455884008371509806523844996560156955171721235083443685969318160004631899389556155154887502954567874337030723431693153231859698126685897895105095148228879264170688790144046095670747756454596689425959992788755978477536636909986217025002679023725302120269168121827137745844016745136986531559713305374725826662884442853078675832269357444922580319812405402267749674742781956841448786497782251691834976002692470785895021703704858388868515265760165621177267080605919982230358195653707487049616510340265334858744325169430110779016508192911580225932171227930158137898121057272065802163804143176177861748042060613560746270301387882517734888125466322091023046199189071897531864764481596203251883661383342557380251629906535720631765398761130171689454545284542849138949012752571883712193005628020569517371873637657312815325305329151583778151502917902733190305271744684958622121010306471264222608732792916887491000707158866999254047913786054611810141366817747429490945735777114365311619138196776056638249387208249599690279274158972264263533482913699417066232424301052566108557105882321860415953995261011470246610385777123349945013365720795738329033328267790338461440694253915947579607200765511873466671258279119860920470033646635678259287228565899281046026195224102321794080074560857019502214981683804045378001236533286039783959384004974440166902266486137702679291194779601542349226685477920055280270194687371379891364308309741325341794454848006333434887621180433722346253849620431677039433650809755697980501277777113845268685091187424823340812151151597036955214920274705302810590187488774145471376334439641472564400585203279952036644952915857362994275837591364735007137899752917263254850243740999519067606448557348572716000678300808919766778877206053237007230414810898261174192999230284869838903138569158526989803738366062311867394482801934669491046627645436363276196627877141926295125717141746847349260139498229621952941926164899210479487462540920845674239802557539445478424605466878288948565437238163965174286067026364536764787585857086934460845630429301475483163588819083876568053843919529815202317165149427461863268394120150501380274794164226549074722497966714770269857429653319371853947557581888330894630187929986442821810999712432279880515190220225825103925627914262396261528127570244033580516736900703944157759769468332776781478170997801067263584947564578699956407063202560483281763769954234650000264770866320237533750709170825618178829121555348484981912976077434644897683103996518259302203185739168355670343119920701453229307854524542846194775780342354148147108371829689841186079764946697999961540609342917861302618236089580266302442813911419612144783451058076754515595931540231562270809029227064151150119300956423560999465999653837045524948746983692965835699733590149297182040483811117450935081926236794221159650071490425720958495747811724299488339537170111127932294679341722267132041146536871343639598304001759956917134651127380387343487435851780856522271135939193895628494326974660699269244961652914573600667083355775273620390457210060853612580746188269631693582473145445281407145308991224674238036221680829298174220621860798197137043727200723464659535963188623974496505669454742056367794214902540739842325758539378897401139581409478646694538433617227363033864822552034428500528123827744206093078356383899501146590774355751444444996321829960061275708179358728977432374068967803416414619266061210292307970707626315000351235693107429383685067164757433404492504794750614444438344268104672144761836840853236978233062403887482344558895359341454623603202631096561293380806547311399902028110050717415339231618537126224678146138703245509801626065686426890214790932004293128602116907695945906954418031458955572518471438409956497985277462584714340876550751083482988783963757153324906662143577507370210340928704211200056560771784033654183722097707039082998185723278388513255915407843806226096942825934133693270436473297298053131414410673096167498440524501223865224580163159731941779290670475905774711449587324396052040903560867749633607269786383362511207050385233066787151038662750888189396417820848864094163550696516989046092304161178546471108800040333177562861096097669402728598019472317127433242097596374209926949769666919449022650020469268773013778291584111777734801678122336199306707466885245484440238800072649836711310342917062136424156843313918053232383983078468123706545170731937525394324743353102231318881796761219340335058271096924509959581007125101692341639032718526132731465816895432810824251550267187134476525004805214087356728063163982776436973281937480367061490759085981747339946738833819701910602521740453589700326016152713271589647731441404281010739627169860256321696918143984628976348066263640404724742103943068890300262217919407490294185056643193778672788621514872444857040570417491743083668801820211916799180279149123365031855739327527333088498161734020418254440569737292101091210357772958736197407944977294083500388828156900799618885648926774368028577963627085062949536784319273455247935719907179765485929514896555210085742609479677331538755145823312735881427161972974752998566400151194369472948682330746237551435896015230533986496331433897402923227963168267620139539062424101002664413774030587496049713880031234957424411170400692461605233008783471512801605298659812776385852174133626209981186918938358345653057146829280758503052663152684412143145572569203330345681676854169401128235623310323455220016266200412727026684927816836926266791942439320137398200185642991418955464718939675339859727226028984577768619596135554459532721055935991298244358265061294663738057242475692460861527669477565237601695691691877575077509877316632375206719112645395824232996123929118615660776830180353162751919847202804452994454045882395557025233387374545070083797953533868365884599308144877121224106120864464121937933917213846371733319958318928844743660588628753216510072394367819660276153579065026923320200465135622260332133326790916912968206896304595976989601528304064458567050884821874068569327242388967568172502936668476374070466511317019575209348088040354641188892289787348206240433877593443377351012788990782745082720418094253843066182615519009334935552955266684858475485494938494967552976557793389120050509603720244080853334662123762719793723288604484467147679471941170534997419483368784944658587229478672681938138968282221403428105437551913127361355898698289624008368882129842599996702944503383544658955991070462640172667935141602759653551368815776369942044583995137647829628663131001221231534965839399461463026651772976511526811468953158755101980388687271069507127424565908828648868313976235679953426838583195080029733092861157150407331246858177025938607115915623640069410010572713698395553642613995001507855911638582456822041072917198751686674415946936002316231579585375014210379780938502025242931562025826376153063786386677390155167472847163910141829719442198145128316851168493735526463730798576431768575701484236408740789352058681668788075735862455978596131420928977008662021317085139495607926794154839643638696960646064044825882368579418247614851405354060662705787252435746949859486068833695557311397454945200620586897382572493191047700347322661176946901552848619336843851237375520485128070259328150932433696874607136164590619330725124114051944408510453107152694912451523749776692224397142477111739160271001055661493257893822390736623648614862400268263497424561751004005831896928283068703198441436303294281620983292409389164251515600756093175861284494043497224235994824226709698917461917863787094372023594255212399834252267422936777442893986231106470680422080051493723415218391429320112757538538152722308570014027075530844822501991820874404857371262082276060042328948543302599518455335980198371870313013246335949291371848114991467063678242040592349751000085649630969728832751513083136617133164475700823575348532001183443076306074233894249336445788755808856138636225218959783400429992989436381421511961005832721133631275549113641226868484408007284898058005197058362236770869886182300061523332360237274414046733500673667538411330822614792668451105454556192218178234854687567453892043600237068992115945877699734273688549462432595826857808760858752097166448743979126536642225144766853882164897991219139703135886522295432375281686953025665774373025556138491930286406006798907600465458206946206559399603295541764326024991786904949110480071204024813493511561562807263177679249625023722645669629485182963500555510003335448887796367378236138310691157566684115092107052582867873880273394459968866636536467871590867185180009580075210563577153824342282110770314631151974145511413151112232582017775144045997964536000603811954043472225003066247455557263394762082853850116658090037261991247692211882538771190182621125886615683314903791497925118251236601408921425321372440272474308166026376566103285492314773620130839791355348313991833920577761293186161487443714546368334266843700926550269914013363603933096481736261401808646916666943053625645047277738712426916089523675260346358278950869126866196618323149946519669426092399385520071822088538968327620951347854373933736478358464833341988758379440954439546160099695643379929492941368487698245794174994884303415895408845403336262531882986477376183597159377008643623592744228955744851179963996057437998203792488734880620325546390780235577360282627691738879284350348303931706658969021190228577090613214548879403331887319146436620250981113501638403068994314100847127956423998146619152481508119331358228736762915421760355153676599027887866998088313007968660592865811707769576845589411213031205772873869932186264820028102066026067911651743403664004162278364920630216801991357759335718017897355535376875992900410463543711577972110530813339952464979263630750562505388948802268679332820101592290211794529137334659869207531837711768969445037532706728557894994806768360107989358484976663557718022193801196136210942917405780671537338138341560189293146145018854550800490363261289124650531215691866178661123946688832836387910091158318626391704067701909442417173700506691173895530421379380710863913241518828902128499464067152291584149084550831801244343608041746464087808753602870085445324097573012361069010422206760722613567966626449015641', -); -test( - macro, - '-51676101935731', - '5678', - '114598568890558892351277519655251349170512457301108169122918046980237508383487307624081510756564677550336178477302154205298849988621620086922824241203952845169587118918761676702275886803533985126048599159621880798222780212304246817740927997329598603522333259993676023070883723250177300932925278631685866750044996349161018487418710787156824698743699059007370890842841419231416436426583294134280327799008795618556337681789763639042135318458712688112601941846586049438371804926113126508996078777819094310659599757182791807946793330068376689258887811689995072195331087218152210579989587318167100041773383622122477291943850218476496927044272842237554951357422835645664516760841149829622887677523325405719345978782256416220091760753375551941881093250856520343277787117543740369641738849743550250267305042707228709682744788048246753481687183391246480490101912653586013524077299683599506874945043746289984496657526568247754108757916023746860823651106704947454023630829841108532968959604789557821034558282678387782274892400435740522133769190575725840235412871894976415960900858952703549298673487135436478720837173606603965003749202465844411925396601850697464037386444381718980799446621464654550821206321596000370929647608427450678602369409467488634567676260749990886237210425012278562172533337907188794399372225626872733254924000975445679212294865582779159284739536067574648674948637306603357526281158214867606477582551408107503527328338793768794019922917887582376894908153461450324195019808790951956266885107461973925559489970262966079308484289377245650607102408136209843678657317031621605407118233165024507780188477008776626376774732469991901945525053633560386998290497433245057356518070213620275700745654781100039839338506451450577013486892471483552928409289830016271158248107951963293890564868178813169793288638609421552999187733984144553406615257602536512368045676140620190929856992488533649322354718067519310329366233012095782513367770623099210385145306068882019668219811962909945944938303357412007436455159207921731034641005985972731076872404481351411053559046816512985501762256787820371273853296301441525251524961854980951466415757745095790408750111233498938399843328976884101167576106332111369898329073992906185716431137905217592404057225277504661400556077285374257237710751164948498254228336520906926692000699164318088485138209956632046211769172737818805518350576876409911238994857621609965737246540747228915599832803850235006646505920161663461782710578007459880127628658300436718162035702759857413264686037450843066618529962777161180564480610570194083990996868348589497339967832525631952114004244381394862686005465286457021469621822619867151692227701982207711240403754089139160258204655040380941387512320543125847873280531581254727837191059980870831091122923417959861596435814654220789276907248261882603123131749272763005899889970210586720440187361168097472073369327028087807891921073775186041480435653913681928394558065224090076679384591070891307475995293653429635959202548503686994214508788450093243004124213718944072946348546273490462900925735733454594192759136002496877104912413694566063277128709834235803795521599955020375102449787917179385948650401410782450535088196592336719230363010532216782360997264383385827672744353408971592600267691136637128647179666091641390767353626655629610767925329336924814212570169908132079298822259312790776336192539171954812142459076936946385158760440753962659197081868092892356974717649297318187816581273710002222637822422625907248946609177471022616696078166962638903351786881559353388016022793559059422611570772104441502159519678683680896440534678482697361220573057326321241467487140124612227021769519132788278891261578500937493023431494800715316974572061757711388338850673314696559686053949631600706217179936149359062760652855148968218517603478406764660079773518392515740066557654365463358812116383920109518376511927056859803872276659655935142427958378419267026204993883734671725916631060714088945987606306190400841739343960163767980632636951807150346899488246361701225858275512527213850024197265932454942520600005445974264278700061722886358112352180245501375011619481895903494024525948428278732709789878138429844599672738323876521649110855277792436882821166942741738868002576408435397753753580116182952236210916267829966145925028378437875898705477022525397608430772386789943421906088726337517286361167325374608638664447743003669920203279685500192102212678244500280945163720924806258942015670529098264965727843346426114488713290334508104318728502382771728945872501553223396187212916235118458655838036585541800475260873636577479118287025217430116350907433315459696137904514955307303089701947453368286386613774098275500676250943657017383834720061347722825211956235385743059349300184053076658159489552304525616565099968774334572359425467321345729237028949216589829910496148348266399952259506966453084807497614865786568010359718381755280552030450357482091573325492727231276923993244258612115652943501643076670607096916922788985244717748167425031600866371091539018747314619844176434458885344303041217826099156483212620631712885522804065144269853819342281878739269471469710167419263261298426536005724710899328976253518828717132656525336398408521558604682092666618949049723934689800847063844761671282296978918952554214898709123610631472079549040944065036271515445762211638184670207178784047672153843595557392899022269520772862968918684932700339559357972321385437515253951979000296108897236060608128673387896445773358382692008138068938089087965375939805087660261553154170365883140110004255362850999174312472258828659845801114248663995523535651080385407122403810220614699534394862199070170516370529573724426277383249873364882798357333666601674798052228774948816335992020369901620508453181317972153011582161807177844672456985443467954652113777013601630746866436183732233279064589871750135148960495813527709288884229866780850817394534670003825516127760071436525331020214654659944097612888206044199184355427079633744822550780458499778237357353947422296038656940932241020563615278249555508480330508674120678052089502789507188213274173100770916834969313508824784364056056402134407244119638598785990062688861144654163575302227468770905464187883181134822725915136640612107272892247282302709032318098895359710245013039285473099721463792717954735326941637258027020359449474131956608190956922971406645107469617185652049606430376373658432400056414731724407005001708692411063413271177513212657905468790370163043951258130982778875673922295809518571866979572550249035569072335930443175450876647946083312614092963535991789686984682545283358632371449413497269427928750522476008103850277182197862744717478903974777451339726925492684847344667201465331748104805481572363883196797787778153950751138898727728375184289353676704124928349416752637531102490310279351764714073405197836749014690395282266606472002997382187295402889448513435174099451342568509159453242120888320839737697049616714431772174331671258229322246266889685257316038839337528724509464509575560371587287218382144584572419703181295877602278221106570930586664027065311454892200273818659381311150404756262029418161040565111664447264252108585981706307591881047374954123445586938599411011096620619274323216164888259706949545584064116931697419880810232135950719390350713062967911958144149654637677624682217905237402682589189689936992002791828405957862158911334297099480655817390013698092780805866900709190383307511190456176470564094830491741371514412781382471608566016857542175626271815830825751173841300134557318244910059728166314923856198690466209098544666893459074761870150034083238014245526074209050076925214228138545561830243367680472907455390358950492305796631316420731434125187536810546887612854361525903826549660077385607201642040850831267699276814362171286190066768458981549632902853741404667094999899553250446338548089645534133891269993883172431804704263925215719942166060373843805638153594804487097561950457231382850176704556278355177741960834256932103041468108431421024565688930277277827204256767781041934083737995080790793709338041932760953129953324240749245316117068345243350389721646548464456799564122538803508302280206449283869830911336778221946967418555187670963441198271217790496259964780654563445592505556519078267175564184094236772289072470230033320640614537275025449633888698376301092731992965463666856043698716302806693885087426713749261988769556429463390046244837567904659070225420983410009710978888428520162826187731324371494738964988237894717677430862117281326863913479208553025891950712021033737482821762882285969238709814995624715621242460823465809517565513365312665098952226387532971101201851401611211767107556328808562154195909528062579532668678860849786353548436978596941540803973584469644923040177756384343881496136104278613378924581962143710807219315022833887527431763513942927784402594506818541221504288809623165972198540933669494785758163834650407164355749575134198337788610507044159766150241794499149571096051559220223878817602912552525929282957515181558545301005606558272154807998739024160863626434649314036466134847629318039975100093407373104577388406981878656175843258194717523909092875616040477453623785051493436611595002796440848161148666254022016142475461311658387441335732482745839024940608008050016971556249565896984096952364713943123112125591933258703693851493005494192677788993225349131525711396145903045479052901233399936977821783416065979989065328839546014013831203847910851373499087681269273873808794681827032455802487324933071462267161585550348497079770547563318071210788547323150873537668915925365865275006606032948938992420253484030285899801624037645490546643734003092212092762896778094831579400704783040331797648705647138803684988666221643282949518185294231209149700862655885675685742587977247470742881671606128975518282142621174602709267031158360580359120233235473997243785917055987801766020914435512416873713285800875063783960692674329948345063193713090346106430960233900220471049512359484540660252000207287048940904649627356855235310748631701290142334022573624657571685050543054539462593343925120666965564304346218619573761401243630815566172421336337019044921825132743027076074431860266381081919439461501518228192067428154599552061956522454587058878725629423271121973055948964177586675025613775553459402756099732937841164187693906160490012428728615553281749083877569856034002578003805619108603440019554292851568931421048023066958052204343883372931130679073105823557408875100214126784759475874110505599354169570696609784560599958215019928598013718187402289676120592754363058386217976480889644579627120147953445090187876503616327911008391800184735093377883625195033462470489375923507822652512086242908850264792687042789386655227831819214938281104644932640292609019834942621395608142214243559409841197661527772521605594271433534022197568992584336382425215293816118135415822763659169694051345319875623274091939751368133997813845916207449451701850545644437368283792955041875417825002650183812267921554071554148141810545261132326348765749042696757503149872630966032411848943742788719959766685423336348908720532382273782455044811025224688005258724128117375301877446615463103917254847301569577217661986908844517236064250159012321706048888909681124601158873187553237768719599661206118675972473809098983711387501122615038573963236084013215429847727184258992906237874964751406104681742937670985077393504140518585378445945934961441800684055554038233956351167210957484786967705794592308352175762541752214854817124986107384580167149061884866946918670005168162259392927744148326558953622056499756057865517495516987090419182627739373939985152189775038553115538646471075934221909696916621433427020321907211290750366847722032569885358324304825748519823761695735069483610277833391784268305687555417321060681254063601376044472764727209479821068239831947119222642427588604524821548797463869612449236554848366936415329635310834448639523331032214535561193061625240491292472959421415693842751590387163835477828542899873873355067539845115993799752754206275423338217062076744831694087595991582736550683224860678822779524670167708708091493709146151122212285091313848566637581973054913102622054948327816252692080182215324465447499805634653027067312991605368041127365270645100770232874469104024167016075695806268258050422993127312933128697504418653934394765893583568834878949604860449521880438659616802122657499696711371950669696088698654540203231615696906652300496120780993861295366389568887602126999373711575248980111463126737434199999923186123228140458802135764964497499211839068795147064258579583962890520656631190772155927073711649314137404718303647113380977808317817846980386481066453326264620161085488324738434460460038866634635020866393862469381723564361661779993116516911788408702482058657042742027085322886734485737469665890653383965527251028179320635401480247183169549776451102905415564180956069929150480364980253864993561144620337603341026450280648329108363155941423746477676441226330763778143302558927254074511454873470596647216773968167693426794670205504808306963783432036244979681725783341795616208450760202661124160076951242290485270351100016293179519729579532961953093883990623843703845911016699084294413469034800124849706899721051849479889146370628964206263232509984714695180238067877770898591308982070720120248367443358203058594410980465031081259361282748294276045466637842578800793537425693971319078319720309483472991281827652766395632559627448449322724455935973458554816112349560437316476772468508305512367513982203113683319867051472957794682903830326933115041030819168485955295547194534592544854770444190167625774242882339856600323988117721872329621119307065210242378471925603855682602511342933926964022027574473668074767250277614350240898114804833628233917590283331643902799593247663848733995782588708639967040765878261594144333897235212151312166170400673009191876880782817897642797305674083214304116001846541558880139343876729547122660589815784784823845573389037426438950965231475933765920983976255357185318394294462939870923725191627253724661104724674152692069584822984507668895796308777450228162744501914688617738288423774855905509153854844523303840957562160021954437904572106375782764718235463296636952021626993854683250625366396838736958893686683145675963239492023700157535671554883718959215653559018684790556050406047348053882167970909777535677010769091602244371438842557331819164644414366880048931933080199464775719509620992644091954275270680288884109813652088838217429569522796724565190899510248605280475710488565214118916127660760240741412774854958523464875335791354333554221114105991785983393823020076734058183927249261932463022507518378417531613595367008713063568456526553921055526758039628801741635831559596552015920057728581873824235567176123583511244661921620535917294970250780006254560913313662765305807933366774232072453360650960008438817118037078045098657774617616105096015011390156583453754385678396291801322575711617682706241038506687001234836301806498523163010650449912433471614658213754184557683081702691883198005157762869533426985772871548066409461102566074482585186196172527568428897050456306066648582770036459460511184764057517774896339386592062506459252579461592560474665528416239792702809524368229823156443879848127098290936890568640344899841675398255520835326531345996368545121081712559676548972073976307843066272299578779899750067849171423314509815187548244077378329796193933542997364333804995452518983295374300579841041477430234285996531274115737469223410436044734098218596575261885585549688086844423068789246324166549747789727265524050455962780001580710226770900533745079189013929659478693513587745539578848213377469358275467176678200951122297705749503306698574297410712427125825591862363276134686251235055301972061105661224639007183964902695034424436437936253659197166818614429825626676264111882581783852335169138950280191270126993381055654149481441296522956835357856587690439122868336488948939918429473181311497573245935858058048846043815567877289011167331444931953925754671240134069623866836792786186011879777990158691547401988209088233436138946304596662211246080716963940999419458347032733075551690030530582476791228961785738428344668271954394260631144673445131619681560910288236163257493867850591921101601774216283724826035337528992934585854238509545972201306935022486046021526186153884783616668536070352766884410433501411997774544944294529752318683967218547747054919125920723787453768874396140732374376069661038491913390225584336932342777315761255948878551294079902768864779706744004767497971699010857817837320331732586562556917485670513125539936647354410777628785488698349835379591475098154799827267570479952391820096174179651670850574284042676840011853046780858800494312309921469703542619592726263073590976462669364922795234207666005686292826903212848877481605826947453296687451059719061958356539720636942722901955175023641714596609837815361932183405821894237560762724700527878714340752426908901818205438166928697623647899633610409766731686872645318577714032460894835086863906305213902132263709453953046543560314104677422693777305934218298526734878837051106284119542143667788585456657142746665427084921846682769309335227479860142774263718482271045462438363768361342074577613689416306245388036366588228918750297891553343601271116018104061166106299788463499404576467234680999408128685491495431444663757432415240164158488210900819745907723117930120695685024585064625587827493034169505631321361629073305032453650015121172416455507667013522455054423012824659556913170191784272134013229862167933357870440372597009868509136667331096909772244774497523425649971713882182557907497459362685468864499900443106554956344003403877683026526745408126870149084364211072799881433860076306106247851979718211066568293397639539451283955573658564108776175764110532523449193170074167594375276229899521780717952518583208904105756371686598266057406647087463129407379439591678526118563375375353708424759178126712588851088358543556455828259242229752207982655534691287505400579846562914613465114055818872346386918363454946173595045963724905520868541270473697264250446046089642748190999453356935960747546554692305385529475044104740895111094053981210797991140570926872891670773814468169522981197767273686316613791050298552624472953601064874491619431515581298483094974434200152544999972253615705670333910064258013397051190672327809649449512231521002044431168670777665701194943318920142732683570462533039523306263620225871545457775764770604929953997570625951936899909518438534435970611071611463871839879758260799824991623563429811928499039440771973070864273967278618870976632376075488071575461144561219935848976261991995743418626824010282377472581361028454622921441883252823380473535980635040675347266665813701114359254871281962513087998501938848746260785427396775049514168562612073137570353309933421182587431285208099490235882059772793358564991437202016800963518589761455026124188003465061263343783842908952238749299315855490241309786950824004062760976904187502795945035840704763791629996479207882802190639214588281672075545825412562820832491492193486742631064101780835395570244051743402738881730159768458032350492340983945389655058528481715594070179000970782625156057915320413986266019990172337946416918557063800133747641604183437713060443142402624891881249459030992935793527950409840201343706778667031036382270368309922120727685173156943536928765918297523291556499898745165164935596868942828843358938043957961029987646769997740718353298902113509786945580718208991358463177836638025806577481206139581029605232343390118748079783839195843230044920030000293609262840245610181309358224141510030238251805707053062432073731984040628183721390347726139606685474826304883630174052769377584217789247910727483325946473633314792666461326212634921565119552168762472730204002086252124424937891781185484626212876955436221477165360031020231430386214870054108295007899715254119071513260472470230202533983791307938408960011206611455326096801350655243853398472597807466586200601253211741913149771316966742972424796953362829778527691461619646698652901365907319538496395153314189223850326377266970571724729299225616643375250610943592593231827466075999846471798767809815413033084807935411432143738782707086800700249890892016781300755462774204025643372850935993536835930431474211275360661334909180169369108705004893833932685971810039967903674985151600881858004723253102936206563045825118090129751111068119272073957023228117535946104197559484455044224813743551400684035958704844910240433782794543523046179137502988175588334343929604010655262873143788409800103840149709367769678272389350632655653061526909944375166865821226676124073718040169866120459345622225584107723626981527594409083885799002170436455111357966813110193233521883524236223930189338177788877617266977925443568413998134839137304794431773484057275907471161083605792371548269896511232018878269590877998951467990708359705970388117405757636229559483770009754679879169950634139569036627493168743252032958240435946744381139249473095508589299567208080597578309780705860706366590038525752672682617991285144702659613402563158938705017883355247903759797019472262560188954212310667319942679244018502332473572330860141285275142567616352011441717389434820775671752035498192835097210704346762871785843394366619830754655068315068021943501597109761283722605580646118265029950836645428880355482809418017207519930746525482467660956501946286248673803148678778320154527985484392151772657071003568822396992334569447439518931797472794360893625913323930637936123592307936959744134660419379541520223856359015281561124867120268443532762202836358157067397969523277941814805842994278790015196862449348685333746940835406048087120468705315737810814851006986239662973395622981892417635797361552255577200093154926399160041205233526050099942113585424767102462092543693848903032320176365611859456909911464662553394222492702361972492589328743134628042819438985147526265136537852840491772207661691558509954371067469519662258250666590165226871146827599529979187274127942586949484821499948977145043677342942737229631023377843981185400933835831423767351371476191843662990866109519730716132126804072070640870780628344547744782396291260010070383315973397408134147633405837121702299828479485082965001168058308660534087429710071643832112134185681191355797031035640660674171124608581811772720944526748929882880981531600483484334329258782080131950152990379792064594496526209604646130807483497903997981366660814109367081501493013317987778423970445235345262451162417303194219408843842138074967028470582769901836866713822445861935378961772248421345450181825317803057793865331808243999032870740776976064805740571853847337064834310551096634478336669042763136704807586517365797136211624710257953267355206084531695186978286706442628626395149607414222118992574163280333685823680906473269108560879550907146951083501973652650163620691173614434376022074343663278172616794365354028350879611668170977299413329242853102242731460245981931645393086566419168095714547735636341109457537424127013466092829987029469225005609148935719219627886553517060926819156103842061184103249786722102357857380363966877195050686029417164805540813780785634440605334896258106006438094052913691329158675367290141201254618676773332219794175088755775479718673883939486154200593603203954816323103020616423867397093710839615897871898114553682658447075458783118190023366087506978374367440207438924966819405213686487476793825253259734471325657957108673156552118127808366008364042860528540535034950176612182005881123405988511608306144849231503055132715499943836726775291396811671741107037864808220275570128503090451498085660993674239141408137294509508916040084880385126052374726220832131130118877249390053885190862016620304127338330822376885177520007162660545308168910551027048206864259306643403258146047122775364888620470370521404458837255123240697440311548296630455328683555320575028845668660604051631191978861891344050450146706574218145025744150912515431643639763471496084616921691588906643318094161772942444267813744245201380387655455570994259537781139991672727963630401572633729986361556875282295744688790419550042115325815066901167830915280249317272239032336428833326465165088029450553351265755331884109528200193953474902952152924946185562536338925534826199411100653632718279533909714213316643228976513653756607679272611930525331509533360676882289504637968260788530354999017751472236832783844855905587554729452514767314824700008649155270346776891167316609312798908304391728180382885705826358462049930067611387677311125159653938052767644809094689360554558540305110248935812740648171186350593122648008331898865084081910232912772214306873277181550887217911939282490833562582253824958566304651212513938680716752798136384903060676496603824306844521424474974798402169651179277198301900928835877874551786318031213157816266052352420958386807745919890178528945692073978829824318254828803767836945769264370965570278955420236563465318633087533589358061430931666035989509802975402163642667940061694906307745403336415888401856273908779094219374541395289779919505811512398727811277052044628889676576204347887155453152137381991361998780634451422237710883316724087265275331735893833197129258839234716392342611646952816033259950054307629463527993424446629554718055401467323011537168845330459671616005062986429892433717372769708986976311304603813694466876866558852113339228482279288771725065980107614730689732508546319518769065056680957782914367866215918590112732510471009325001837807792226514983632349787121937850873634795369167442047937893608233634609666703704587131733723929085811244615783860405178507877859666805690049528538712275243036223309707838878743093968440740186365488240924198311296922550429467362803938321202544305084030232602891812533837834720169281029831388109862088373636124595410033526477352125408960443495710872004466944740504181430539375974997235191384764262912442475167562557149784655839519095519656973612676149775555468394211684073546313305136429488931374979941004482067517955299494545191338214275004688648850080625425657255697031851628472826812878438128524708409359692881087063253264481220907184058301090967458080899506347453532002995200234316121374098161410900539135981863658581370995732911051446451138998982787447971905437800015184192194998890428219996377737564767442914336298428740825412724669981656100409516386221832151219625497417581073077338087294189592180026420910118672014596652061567734369839911877944565035730463100962767041999720431147498003871428186236484743508773318443952371300988256662194348824041466733754460943324754187692906063468991068425866078952725816706806990970194721942596702352590797837064926809786719427373172154689565613653917663261933894602724198203854026358029130198575484449317765398657516813791597967078843130547339469073783524497382496877243498441684162650928487855937959542776542381517702580219111410239373945791463335216468817891797159897821504141336134011961229585863213744116868341898479921270173994357042490280766042368231306294592305816034402114190442648210070915119128632526643207927399206403270502196136290923785508894091611892797999732479898770027343898906937912932694388260729491337611804903421576030209232881941209677305990236485778758568570909511203847749727139447140750017842138051158739164470079822994287470311711455580863809119499634431231542924995363573544534166199416944524373140000391672173343392584556167540657516390123765234814227550308964579212558077778186821292704585207362004093356520798803551721188807088087772466898440741018646115406804612936758076828507023774182209672664449988128724902414993501219401001765370672317191401925997949428670713449531376719892790107292559315329271665439517184073930078672355080717529913180235718999452728793715874798090520042529997304171394608223665519403070588265928559013346665409955899514815287087015895503845612331949334663867288844709249699760870154746576067740617109411671360905733205915721144812868914282146396418963599623786016511558301453135637971753217719122740923575115844689612181585533098056418282958853896584799967463642188879073429673984966106974767322904274930921304431241275791867912140260586098638979591977302253507591795249943499668854219091401728091291240324419097106670936334674554710470587846998580373319693822832186125663563662227300196033318571309952940878063796339388257833300085483835132481959803926226375922877243938995147684343099551037900344498227926589430544888103232468580078181742899166208452521226468017225770159292796370494628221608659705311860880457610945893698767024912686130786102451619763311388742213622180967440266735615377707064630432362851346787104938266503146626301826386009911001332410273267944348625003805191824863507525729321246269404084347151934903222130472688695181142909993054528914728385212132736819895913661164653395636100392775995046821116359166052147490259673545652512579506858292074086966566678148092233349090670531856554153436180220853767903100802098585062424675371471614926784976597351943926464759004842764683915776120276735116378854746819555607095002547606392301607456201613727812460712017149291083250455836242558225613747332670029560146313664626625184108408526435551075760616558918639998468694149252839714828173433759651731790585540238768981676874286013596872690278563046650509425213768568600827027602310874261454666959825912534982207381304504165906647669730083754622626706293980961379228599568320787109947615111949624856762702790577996604294851650710262744819536909560241872405354015195815901368973088718316821955357398270458847336192054118678494760800661846422575105028339264471032443221584848296622560987616922442031578568960816859233700095456702725652471996634621805360039904773049493081061117890447026080993179208164914084001561137279717964474457910822698800571370948730739574958519456023949553713352403879552609629342711187222946890885571493932420920963889812746152759211771233710658321471894667865836881256359416902697886305637566565270511589302949804123378578009588741245234061360202559864224187793107140310370774238991415782896268860247160087221743398632360201329490179060521461387097002495616922113269135683217341549840373435949057182322394943783472872058473593126858273723016989321497958715693848778260916053432892608850153974019086350180056263354802687994169752296797729166187979142462997664638545934162928193655800594073599868087694021711982073641040542199591089911339670166122773835431930957664741772458832249655277342309784943306925485650386363310465509184262852528967556488981679969063781668502292160178629319257109918089175245793016717386236635810518592787953993726687773744355504320944066168920405278890106620954397703842075409790585293639502140471672275176364054469159930595251498121123000632836929940035415174800963695560911591519351305097536056757497122738733247223334299439795964416272756974788281452938919543919179780495830578105176873022791010237618749182041436120814538747344362413981166492880532981408473122438956024899704764414827372680888359069383203084252482710559799658759140471216458496005546408675587772142479513233766094809931909320095433919996718551768358151589619518928107632509757299346855803242881198506144473507763036827161335579895814696687756797267492473907511129330448610059311031697081944370716803795577518487360501045579868709621241757229741722143091970632237708849516805918096189012758100919518522581134272755075309636666228932838080599671285408828093511202116961319849653073610668505654418211025373854469615185587420505700575888261495326807192713148159720874106763838858514416282535260626452514445199386144279460790374332488395321942092245696971633409779711403667148196791467370350138794216664252879537117245964416540374786812119366723571213640039312537831206990870490421854920889257491088284125753811729442672269609411252776690642554159109624124410614773690847589962809481591267437473683970316925645103066449528952833136986667526561057302938060806717705640347372758940854559438090824022934117904362128241289781935585414469223058188520370422811243860774239667131292667503614480954661643166021094263565562954650536478763836171348484291106790718789951482491353812912872996022446709005369204478525205413817559888660494002070759867343020833304262695786258762182090471108517478008062047916158342858928375981008630590361530730991533337103005007767024431048399846363323604547570763844498393678827412313502948266613097046593733067129592808782764829082779540513431895899823748129703286439371900576065601753249715130145551395611158446136282331860450878473803949375391163105048460542796053348711044126190850489694720890621885113977651566300965967733708467656571181095189043634361442938460620424892828907311518705548399259321673290854432989232402033427695505537391672297800738391325014683049620765825976502001490715724896015980764535931939727448433948695121642423627605318724132757699110767075442641487063525797598420578507881625322631258275225375353312907827229233991901973469958877318300954825891826980150082560409853023435179352929576326184297304876469260675852353214336752697472278921785590185472893192209568387192363535612736411827177789230687431274148917049359515220791900149954463891144855694570764248287491511795465355571647974077067810042898359708679406723077456168802915159985106685165278844446272185418039624433414989676529360733224196806303027701699401813246007448367635711560091194638564196215462750260469722895057683130186655197563435087042456745552261726792507936708788382778795714813046436130676422706429620437824366040216140317789120666296561961817276627472468337572371444709160465057566385526105800512406353089397311243525990809771719833722278531018522388436675146455281597431804631523542433155277652876622739675563673188640006742892639445098465242739506308240042149149884627632749060858136523029010127328467486160496136970964099609404485275485587599287991078550382891153951255006778605902787210807236763823509705570383045418472207043091603551691808413012509993628114628175790641442073599128028234496708954756607086944124895421408720862402696781696349037884497396953950073338348468396830752927901597524196430868111165262332019170855492271790130827789573109557139053285109689778332545958693287355659898640515042491550628028917049986801903913280115785942913725572192146862247809512151632511954616445305241282672393782775249991259990268401573895663033422145829424653742257468572830795144571447217172170344390171558138444299290663385049414552445567639181283014510290419785983701505834195674761038613042562189128641343318579288380854262613061171426518448419053079528551126733990801837900708461500681574188884795165426161291709564074295450881956626201918302402436945381093124745577171671312225963759197527876184346331791160454187021677119481282452140937671112699410475067112269611894574476316058950214818972540215691086743676782333339834793090049695579827352673705992602098532938745690406929370454895121406852644336817988310511018606485003687435377377880357687101549923752753870842331086890020957072110482921078203892582825430743853678938678845171550824421056075012746445684719777935620199933697201020688921671515732288023709159460020579281422206200660770662136186411119039464511246972567849083853953974560152919983727889703872145059312940206651954534823197197456037124574320069154489362428152384518561176908584188017896443196497458965211081852296712793505164224540578823521427317961999439433840947679261853070347008183355600509419881301091737467053884095017880299752423221585377626802533750299111687354685486159204618103044084872599593910681436894070175869895284548114007698177881132942381244912110629421844127353550884486951712261822154242410334674508400867284003116207597789041715421899510712174705598161680472160639854366218120520371025267080822589762082721234822899143897023722519527191182967187424707516302075467248142839624551051489916072253973677889265488627584976956960720624875569085896430625668405496389507310955276293395519901278703982054295957616190481642061914557057918641411590376116837069898283627310675729905679075315341752230316326873798944842338809064711121830318844994995728478247554519759647479833188840882272330805936564717875937759645466235877959356774680757359186747964855850779950002190153225827761646716858046423788030255771497227479049063699882556523239832981578690856832572914858098641904135700095112492548076201483334658215008902573568715728628589777880228112444674918240096125221488915805020859677852091654966635145651388632847300280396301961059638194991615057652714347324569091348372183877979671140165075401908204991585820352573960135268809787675490861799359172749390316567281411205233112473050152264568898538213889610052662413601412411722965122929820314537969307515359259003169193350947717065852529386538881686267170773291846400688708486999155003104663586382344290816318064759978010654953537866623711446364570626969502173544423423074929404208942616624720195343641583097741467031833905383231234374060924479894152342878888888587110637396276339544946001358888192005723471164751936785560384570786894012343324076324959874814196843505410918926079285183879707107430170210495856306080442455608822862122117572876456630741312672784076158322593594055019414285422443235678980565689755317999308802910505961137210498567710018536735289083212063487672806707334546206404814261141369706196328862821461886994687577175390043169221020130498162026839862458973943014519368318441838195560100295968496734198518495996314945289548715598718870583552621401683863581183106851205684154635910380524563847117217821212106128722162524253763046827147151974918777923681784807700970624766909477312166760595507462337125669968044357089923070482883709634106122062070766308810712735710624862438926613157497959226806833188459480017662980172063360634178971275611314406393895211433271861436947760659023345158492960047345295499295662853340265551685535599800744092303711269544719828803680436916119091632263364533324661266862974434455516831152632639373435575795104537875888710518410020589958339879959822445451353658029443025792509752253551525308255741984775779270729019138683637750829888081844708006890211552146344622614088468708319389319850769307851285942767252474785352358559267431807815209013706262561029595478897605034763527896789052350336340918526657057958081872287341591904736173950725836194473696707391163580393299902911848791441413850082003693596935427471422729646162077763129389201152696915172964938281148555040979580355711393742641390964747263809506784813646753925737960500015999521599040534422500550634111212967036120707920863177566166569229503234057262633077041307108981897403699595707664375223053442154801646621952674073998016018204114207792322619912823001873411899291943544289433976296710950251614937569204757779765928995747738757818760854802038762304982286305288261345463881107741394409631520373874750233139799838650413255743318875470620818472533845161123753583328874495241216906348859022307736592331867789432771689184631548324581181882547915784645287665908939251778029107639157159289196176127518723121751560070469290085609343869257334092947393223315517614003002467048702184847384690761234900833286623358455281883757151812237381345516686955628191314036123519539678665398336254286303408505084714763392222044018726750547293413234050365413766358316654410953551281819431995257295975108311779909520303889212337450841246936324792672921730951765343962514538205080555856311467242150053436496567701001851431642012883560394627048117888153808553859689392563362831101945847612823435569999360628749362849396263121141428978393706694610773760753498445233988754224335605409426064724465150571453306140168263830877100622522054887364455754048830624591098148199844437954318671983054725473714673721746781284214097106750134651020281137856143339404661336097397401255849460415338500002693898912492847012546892053061780546003055285372933509996259190318553322495887219489025100141803027682285498654701158621266627181173588718688738389808332699617026792423659913858117693296106288197971001919395880629554677187346338125838160292486198360147729979871273120571322032028504575690735750011778046083231651989085708906682400875964848727543577767320694907469192930438894927009743546491436041357955549348300042338360759281377236265892227047663620196806664771980284507347099402902967733697999621184233818138249990684015970535495278317959125975524991795957531505015611136002871680310533093786875108515066706678620823077849432976257275439747172137699295045174649617946011443989552460583705965135899024689374640564101925298778186797415025378969912635036062934209463477387146111182074864014263939109691429255035354418183096283089143643718609144817465350868728368487526110304341902202363658329806583404243426301929038999413811963719928900533075863880385638026377355762024440421846082611952343954020299294254318741900205024128317877368328956627168050002516703106370642969704283772358296461093955291187494644342390316988195849776128675653911509104542124861217280772932996221537953310962029452657975182251689107870392012504852892547316032463597681300089847160255250462914104176616050444245028613939373851574524967337186933259018554428928015559462061881262235852459856089108099770130466183985887436588873773243601088860550229426153384432008657567689985229925644560273502542282381742604579927654137058837459574794972575192961456785170540640531904771432931209781137337286211239818317844041106915878514399961654100374566986719879295231727712111771772229486027185802483882395198074790128622402561348121667919956756920273231028898988580958707002246439749981244065925735360676364733954118132106641155299199544857249592009103053430934913609249297653361487158248749289098935130229734152531034647060511392685477854761239602786254479061019382441139667288410559126176759142054940087896465268370081054931187899275164499441058030518288371926823323313797222058155222896466033422597096415435116962085378815549492184638325958401951721290473197241670371516491881467203347875585007359331254528344449459950467758875267278189820752127439854852566552803870490438503143232653957782922118685816688148722781734903296936610500471173522177161064283024894888579788472305995091180282414062431445897622125893030305492825543169066044111330888912781754024348338736557326750833574402747013630048297404805583748083230530028596408741040030162350741781079342392865246051725408625341045214944667618371021284914091497257188761924767939637028534628334759882175770670772289957481292738316309937728650022513231422234754422579929841855985946451468684350390314845273621075639131390824319325380971724618039332427557919436402942528867210146505840229198062530002639445641553444719681044247172959043190866680070064196331063863914130249071095131248563606711066426848149947420902504927075034868938069205285471610210028557331474791661084008529287736898562988280474609439222101768158060840395982029394044056801641541171538945243610104322534200730204315260865284828953604535787727385628812968114791370986014951254706844185451923929072881468774586758820306110885474794911532141074138864914763733541384283976740191875378571118515523438069807588777000827782446489266182050245346558837361947434377809680600377844482788019840369988901856492040146378437457195604765771763497148753529247674438388594397093126205511452264943420149474713408497012302647389453439359384872233770236640360026013633256865164883566645637992031106481526435623633931034222232355213509370961371765010288817762179693552242379775216656260241135497573014130795564397554787053584387187656853711857623431937857471939579985035081848718829777316272176681052612968630380592713032967004361608181691291430592912818088530249261471767125961629681696763811424116391066373303384993152768280740948118781184558104319987675542498579919858166065158389793255707776743744116436672753184816598112104831674522931550279998771106215597545399479437343520773636597563675211447481439779932609623982600338971268883683768790803057118303171340769493891379059633504014432705976380151918797310743478564409243233539718255459610193420711760557630156927018163410042030919328901263062660290810416055096762283837210531454115711704392214764971534200239720890924410613605239216073127851967270391325506751978212863009614699353698989489629129966825662563519386134716961129383146386288035146250197315211925553022512173302931962094722039477374774504846268505683930350343868458784422880640500784492844169201589431927903016379662303396527872095562568156390966362645360971925681857871968341995483947410283964766743270092620340260322997257237091573993613689320984290367200247030533720027280038417097783212839273035096338938542591727622575162362022599685496500554429222347884038006453190248400027743775341348801335215989938742326080054254247170602001952079080816650302245176710604093355842163642360723052540350943441654273802237051128416322439426475234583967057527446258480482041840231234842602058417412378587528062618463131988655226053150118765238820025342051914431270624521243139110536045516721557341224477691444072542250943379523540914610979701581620559268793412031737790984636977046879757487332724442490312397606565039366925463662967999702808542773925468580692839991293056392310917374429934951347005612307226284322964209030221618750098429366099194983439477136694496857689442264881224914039910670322116288372730289047738573108522450033816672394101565965048622910696973855813020101016596778492150524524163597858951412311844796147364899117621449468760602813472330721658608635506930727103404682194935368589333167590774588214751222713377251630553526943871411102693132298087279434996411605103626921829523837922181308665640485185328298412378683376130991261907022373866335460773339455678784703129263634716537532090282547777127534019418852120934212233684269568396133976431366342292873151938449479967788561358899533463702974267094796359284987637751201598974404152475871775040728557820818028482149140963098586410453529806961657287735738138755712151598174425380024951275335199558910669206209576113284903353418478945780694878129790034895748753362050781539824584920892084749347087235642519520452342493927793799776786136198617469969693126983224168201909587877154725998407004749212713544394340278146389166186340477628969995703328593195001704673717058025352438357468612946242018587325606773986648467186870072551528951891526255461310771157406650956757785133396326012890387635813591423184033135516070805571730845080137132045429491261012978403015641430817512666681469843066257060720964098086648402611312090715751833710679060879766494555066896257649913350023260836668751637428823100349524601403601892419159189925922959275820633937990644299249271169988339019515965180613573895432999894831577608592304848155696364198541694025900829134781366210991417472495148139315405572913400497872095116583163635740301688579861226084476006780263453790933289131487409161550962668826089637489553038837859879843790532691421980575061315224117692153481092599586056471601215629186621130434664996556516932298784329307022398027011414332176083277481254566740985113591763468957331875643736921355329794098131053487627474682120881562550550881428255655602726301461818701211939805917586146895437388795911816068375606614039394049767168461259001949273538210144048916666534903327280258028482616623798309398413700586176634115625829647911232227507375334923375588614078459209835676422299267049663923396700676273951091983057302624288416865668362779855525365118686744053391254580621393591196711448438077488551738236403307762952589858684493455657463478117126363062783121291423235729455410918637867035685633113782220139687642412165249598360509878714727491849673012334378180463831584187354582895646400179807708658382550667724914138565820039682009987745157792741850123714960764039841065734298623591290702110380779922504349890524389320347890308828719589040376100679017864219311467557598930026491189345663675214233027772264878374490381972865809240289051249348258334250741010764402699448241367513588990261100526633287903176928198197677117933055092254550168988385755711184604062724032969041641602920344983239296376314963817502741923901882100981471281443446703980599875657083621988880973620719138197772524100421922113549246894114245414372112090493791692600291606869049421927806267868540149608572744342888343192125058473363971742076638014712200975997813876869820888826654477230072783335769094726343439363924451093740799160365246814221521418251509165560016088242931176476666040166149409617751387959304000667838298475779617451435521971107542909535756971647840211114967059219572740619358273317825413217697042690085081762346191097822496311788562562031626726216116215298679994354658456828777010935958029126216060917819707341303406969946319555176649237050902062556966761241375058739571292436871898013175671381669805507508696910381959470264039318613075638568464398580077833659887720496385166104378193365458881086843156468468523490854549529450710965680147266392003581831969193933659362316072852675420800357125522249098898054570353965505168107882852864529840652677935931955087124815626428567901773577880059003707684993021595642820310207853594456286754132723969857923337469252202259735727997751116848764487235601899102596111514927141978064206334037406646670461524244267294399389563489619484717324536636445719285643430736881017478756148754273773852289888136125549801175894395271495950395640707601607104562785797592351715554623869028246265577155348990843423689483732331337719099850118433499218006218421240299027208453829439559447186342420117431465432792072288988488740343057267417723708067738577852233243672319230819937439683915440649582059516544561598623280971773789120893086121672269536624083598033868209624720281605641588278852741452020860395156344376951038233934553306218241725396467724828107444994633708693546367123495314361476105770109803860472148239644683473596101653816933207579295804239795231250209707489881769264862491580478053842336543358337010193843107143139943833585292436929169794827683225645488250493758065708204332690153429283252246824483410972045997105029219491200004356064388873493046364077650981091839516620395962650712687713049420813661020164790060026130112716818875580888149422706314230708204130100772098049184062203228041362580051800921206280742731510572822623376036459787961780882292249221002031736456366826421727834687640584814053632480791830200948413810861443283626261692032040972578925220311877455650049930685081104107394628130349553352694618261578823385706710078304466022726537115509158412710129375703385879757237284539292895988728180490390220496139617988669206437315385861127520716472864870732451423836516235084903022716386874198709556735053670824221685660220728278626961642949943462735737024852061880916852346905339456156753923289238892045090888056432159120268216479709411830925161705073727852182241843774144994444796800812422381396128011433956107925125566938292728894518495205656479288798467478295768971565046605743380817683675039276816505508751212423949926029841364819217401250701049413854705548216151519699389827283019852789171293382302732747354572335967904262121679778835809536307205684993347760735860485162352359870983946965085935681532501893160966722375508805057199214927917795853333092263437505359039352967087492413012955087698529172665198805420638824693085516459299213503601188841365820793247308338096862952405825957815923600207308796364681882565126559078649360912095932577475791841991368526488425858095470521872452183848155746479635949126054100759873565047420408657908196467861088860745823440200596937137469726554619440021533471197651802029945746028546114454400341137146234850866902640999835474619226352406181906965593958219260459751945218547186010136586725824330239183847055787095688060314095111184685688138832308190665361771520893357047382326528633906357935617076387165550366027262811769099959556389802647692621844549401990735569529998624105286253926755935055719547875890932694340554447107616689228089562066086569944905859544518038840788528630069102190204691632172591973746465885214629803758001818354722671577554377946458675180639189931170900056297193465314174724380797003889515935304761631926385152267377564862725712122407042606969044731545405432011544768262989326191733481446407893297863327714256422001628622845256022926722039032858852550966980793417370766719350671793803838423609435455646884754065033709502751899071375163169890856762230034353248802768786910964565926739703092124666704198303948460691736963253713870119591703313690617965257847769243951364137415307103859326650169756472734611428216414046385745227023184773573317555077165126936736741629792481292498743205155835997683268172359371347012456091212295887484642867877578646795751622965835785463864395557880638259410281317519825410588466995700288346083450655637106260214808311406178732561340081016232526189760751886271379564740782676263559705973541667456189291443581212424404676011914816089260905831619643542553993402039798670408163878137967461241701829503692199517679672763486035252098113450580438489510602779967538406778194913724886699243032503589895316658938365078639346817966446042366971598315102456226149656515684119923736039138700680083951001771224019777161575827820297993227494571953532246936982900599366416589787251517727463895146269431106027269854190552230633092628014821482309609635823553388474087969696520047538050162437487064672959995402543841470139970706134643073875937981889199695346910796106300932889981171735045657785459463379515938396509980647441968924682241853711106019941292568600206670508573236766497716210397782410983939914467015508129203700417353471801331728912556922317624644415889241609181001149181985321743941473620491460989210711065194784149182976559106558188134333708873913801535240126355571162155611895528080568951526554987444334536731499537753528195430833779794624656681766785270140096283044140898051247012255419499146558168259139756529674323772834587323355629868317816780292113528663119722680719024978280040818470547128362669379424806012577422038887191868631883448040020015452134369307399895551088373207616043579965759272959559449403269879855598910900010706024392636484042799046911831117069348975342142583017574911456602802451624070688915906429274072763654290623835166951367071267497654861627881666298541483065726588427718084629534053816735134742365841971731795029103239286268275708328610899135163422402889934113026131852180686527150505983759002779807773566223011788941689719454712179344607326254690287120395766024482256671418388078554228023784784496201187429256077058990150435615351155216101657438309215090638315321592936537200580321910657657215666815341247654573083731344740394722638474346512544521661792980002338816800181577838361703000507770721899400195844878004251805255464724701063911083619487594713834381627924257067711581105282570735802353540652641183829634997288735297250112282208477996416073074851093528870765045321232820222921439911099170191434612580973635919820391541809473112124075733876951153040686421981760730940392248786343513079856829965044538757787037942418740284997136502228750221662928279924265870962201635314064803827203966095428887928130337192039410759247169242739168498523247197273121591784250520458251462557288339313896397732661534729027052493515404201580059981956608905079272892706164790429218771081619749768508639849339364643058661360212160610191272076371006352322980097730083536900596908930188252920677441148336565335213544052062940677350237569694340838070570449158815512736492862139779132213211843388066176862669989419112198876291824452684702959605871999341982491423024679580081630979799600019718579349756991631102855467872079017699044841433689138792070082691245858860091100747333527615921285623074522312582760989162946865573374037829302178739225575289042659045727978291390647109321424303936944279972788242891964130377157310772605953533486292992603361085012572105175885943335595705321341456889458117518989992036681091968371021602143621382567898278967201088486661538826229576844449884230327889089656416829054301277201456616051237734474662164978054102538036494621644430726212087953103526033051131027386921359383088225533719150606934884972757665515341103897402690521343519506346008077717938429482549626794547576980199283223676534407717065157853712801659521185640516453515871565192484321804442962765733972699330046829989406888341627015358639514826801677079021155478293962619923778866000228101968771938334162366469804573202014667190358534377215482330962923275262634963671825984637003914633619143396330500521755888969843386922843589872134400996113166528653861650963770197465796117647298541079103250256973646631652580593033941058305941438443670583302078961092385000096028004387250797639227058729182855207638716095753795885220489180587608501087576665670950961102068748473102397688480068745397125317899151900803171836227422289946173194639475472087332607221032204172993718739866807063991965434685529724874290316386815414750536825089647609755324478912829208542640630837182428790314967707466436030120046677693513719304754091874591925748831794738661935209325972784637836372417065832634101495661541702552237720067651495419730409007777535110394473910436455762333458257497687020560780560125766474028996604483310845299656108458520836187635944075062965164082259016665860024741824447869072154938884824126520956717610359345956570059031363334002503160837760160190522749970822199550294007333039256459130986258366814988498652039570467430857270936255566922917138875176546035640770701881537448577626102002317298447304080275355918518719943682484835725447927289531637629163866387981244986227932821777092957191598008618007108755043196577493390795743913791435300045489842318803840629056604453508622889454329052961581308249435966212373719648882667006349214657094779879673766929203239990406226893937690672818422017388165317029813987140416820890222156353954178254095413385973580442456560445558499420284582912636669611387427404451225546415356155838383066957787260635657953616728518750757252485659572480629089199805995107320554322842323926689320663451184520268687258689886344606068388694479162354509096941490038433598847203104301976611951445601852362544266638679678290075412941302729162013553313728522646010957992606699109069616544863135068561276755095781547242671190932783722064505309964908887877840158912914910105346231151775487613772792899879678519963830591786250997836698271218528501056595898076691114631296567610559849673121473718916782416581126344147631655121086933981180869415987776601838722614534041581254100451763340221780549086746753938766610289735053241990894606197687789239665605165716452187952517064149162738755920000811374455502914943892262459729586085538415828908694331245193074260696566568387741004970586046250406779678496790295648201386486985620162529677519187045200318621917855086482423481330608007219543743506802384438536607353392218691697424857241893460152387618386782325153321432760552484142145781862136735387766492081605376589501268788700420050453317070218115339201229440765302660291694287227700950440380765107112761096963572158992801291875003909086676778623232366690994533299491222168137364267573039455654289904047646814229327801683590630142563153751747079457858925522910205111288353935603204598220411265610249301465496049605100661153637159888807908902323782288115917266030548928229073591717694655741521631460966838791102199409138425309485441867582737071365301751525547942825571779776968661573074132570848279551828767121886018701878619280272422103259889312657193875315049837541388659071098765055026282156387486107899591956053135772784100496825157507016394803644582281562465844931202245768097460360009083034532364442320183540873202417639221501463884395812838717474792815470457888288508076821945174144028105860328866061726727674515030087857289847427613927570162848467465868388369591904690837471560863827694337872032073339132310877824074716599328692954368440290176778939622098606562704309952427724800739407743083724696349092602202149637692306858199125713600548864386864010917928499351492615039593355117890366131905372145092198636688161883816483303851872238717415106454350355132051773548989777552757443255371566372474534435441848412809716879074979241665690375961387244267989469704939164542096816857631992943353367922943450974577981735513285980794037989658748077626750133198955052583318759656463244526191339847597578899938757558196148864075073244250467261088756301070340776077937405119970413498591233848696140017565253179511771575795275131945857256304538740165986955527162558693404651982237870681250364694679537863190584566503257017428760056979496904352580609209111103053294614675377385059624280899965796306324467850909780831489026318753391745970785291441580820547774726329434556660527022852038096530229629083381153469692319673185432212788337117250065774907249107252485740348419082835779774814914168825271376969001094340761377648487418731698243293622743693716904170881810872101742928109037100000977309557903344136643273367808231025012640831073700517532261466072965558652756539975841935786806116867047742157426598876286995997384905698693761028030005126905217313490141907445119240485586174004947125072513293761190201760157186724092851713785477603552145995848354307689575140731563893520272232436224697297570996577403366115446408204985059861276880231146593632332116664047060124406837360322379955207563026996917043872020612169132773506149751543096030902910862068818208029741138639192386867608762741997860087946363183791825619263211533747157596191757134157369834295405013020010499759058170439698811648143980733751968237686573164454534211394206136959587926718539689642312494935570859665860568612537475919659068040072420100618936747953737753705749383127291409003383837688855841053309435892404414955527379658360309647135313289366129538476897703162917189354281206164435348255552192776966124707287270272355902245433955885751207009741227994192134495378305063561634794407295832195458144059625112222238732508215922805408792621363851812950739715101715283572373388069309775291979566994423956314498349376967149231461962778062765502443563061034611737001968423504862603967799669087117588804859019639157112753414649335925988454052986607957770870482923146856099244325494894435569370404603972409346620158075409396512099348903782562196646067345376443663877635728814318418090231549113721533373625163581574526840997161673119389664334579356556456354401159515864788956168788481450985197215201467974181561001940631241149619657961920795580250374263473722428593232378725810430245637202518132904531251551627240821059617789024316527079137041828262423203999027718050493278416463558083739015666535614730630528564883352138943172947828201962484672894006650945217851258824311228840838756059704734974004156889921429014908926432337401389537678225680966329782263719847506238362967059541391051250329777158461686302483375117714795942380458251770588312881492313634727768589869682161697321291504228940601873619348996292388777724630285389255078462577634963779959329989151426153404562174906613363783607243267517210079578320766293154362152207280832251485579899573303194771526628078798007578233062417352061348072159821545393566054519332770028296707118564344742106657936278687268732675617734737178056510690046607762220209746122648008510436643666435541902320142352415694782992027493364828745928747851672282706320889132159909846882540327746849007379809382050344297894224907120550708900023237802233950487712523780018161507312354618054223609497536035163494093928091032767640336242711088275287685948003533785270118743240118979225026796544540327468208658559416238357927216565224536669218251472645443651889081645564816245005362169954201386198950135410692688457725430323102706392241999820836165265276591679465060858160505568568712438796347024605304900308450966553605733042168429732916370172195896437974642297090857585959129744911909686268599809774528624601994610190665878857027337811884181381233078873788158373359983366672234669655911799888726805731249876450737363254821569278028649052801255401131062341913855820271583117070719273865683054999663069013111249121297160457447041240423061246140642426490959698720730873511722072350750404737742430572024048268685119133667530568425561907620950064557291163632179554525056907363270277399640559645834440273363853661188000047234146519397763559239145260412600704968936012028106894549688440479900267973574869188916898200795990111065008878815333729179214937996646495852784883698591027255166736443038004395574418572899294370967551529143179055369802934328561669594406191593608936964899070486635648836640763029576597160034720166645043990534279613912479497024231544925793613084992394121484803964852738532840786244112636713504212176390740168740010064318423771759800182571206639184134636335947786714976994584189825206727396176883875524645479643946415113644023798932248203117158653341801005086972304051184189910711151723320637594773150678911124405222765005192822545537671036184314807662167004590802562833162356684840697492521011525880952899271472039977820122616771265024357322419282091459744940443106332422973501916691938329374288973886386034592918524051364182398592764975688780001997803671401869838010577270717330444418407603271989346719916686888680593245148354943447462721033986270080485900155124951082963992792987842114837857821508811758170325737210523836242819698681325151023148163454095321894993683800138795128096101389801313982043237028325779746911915430218574372464407978667515942327600656822134915485630059582718562671520698991302473350312566427091102259532338314893989689756822401425548363478786325343080669902177859287335109626530228527804055908960006937280662896796945405843803882948848124047942281965182397536936457929889578255794210593948378679524919234465908033421164868438416051929819069131125432441300566879775210550054157419483806784214653243093753518480506741715472803332755990227351462034161722520909347730060870649660727422118067613395865270827693082504392270738618254811116949038529595723094576904555387646766194045214126185045174967881222625225420294995105078164391170749628652025184869718810057932904459780474128600044356721564987537843310493494303165385746459512014483412377153293124606805820556680644340261399666836315845102022850213187298338640077707077917127911385849411484173150612304233608674207467083445888214784873006838124326048603420520398039994672066938235732542051375164474479235433550682373983123832947238416282024613236150041949833072908669815550674617589673248615861702017780769184080195436695753443836861503161723295315725658560497271219460777837509040504799004521018029935893811387189517865310399566336628995254428616900954602946642481835104052723177763215261081807631624720322398654828944688261281379543513838399159096503176110145561673340859375841223007298962049354231684731456119013370627451653372101952784150843366485718683154707759266001380413461198030059470241851889381598790912932175523398760753164627792920260871619044331651516812323419790246774100510382849642369445921137356415332559100571402192386504324237600586223716858020906861290616574468722975254000616033200134525382789948233703766721713913420053378522189534440356774167756989838340371683053339160303712468122195094451323769643603060107933336317574884600660754013122975875644836292687447653875456366671633406699749727233770775602930171119873713327502029649301339157436902586985805804661850651842865010512710599579744907900725568864758808468315496153957143231085273655909832339900927873362328571917762632399121621719422136842073993822309314300099352877919729663183063706089857543103711226019781257589533875565388292807852373328379571498654743595708116126805997489585227762613411374287400898540454081729983600454020975504859445623078574230082737441934713309411334435977095406278491948107490251001075326160260816166141665828764940536675366409103075438140950942363295087616474038594568300076749067398262609892149434246290522082284867369996747369036618212558758764999033240531377456820933035653514739288807506785309262157018155354164246038618753605910751171596544451629138375154996561231768056352944122861796274432731602355764359001440423701221314110232709724507824830537580539309136187075390125804621374052404104186962215577145031687226391307500214048177954438873320863455884008371509806523844996560156955171721235083443685969318160004631899389556155154887502954567874337030723431693153231859698126685897895105095148228879264170688790144046095670747756454596689425959992788755978477536636909986217025002679023725302120269168121827137745844016745136986531559713305374725826662884442853078675832269357444922580319812405402267749674742781956841448786497782251691834976002692470785895021703704858388868515265760165621177267080605919982230358195653707487049616510340265334858744325169430110779016508192911580225932171227930158137898121057272065802163804143176177861748042060613560746270301387882517734888125466322091023046199189071897531864764481596203251883661383342557380251629906535720631765398761130171689454545284542849138949012752571883712193005628020569517371873637657312815325305329151583778151502917902733190305271744684958622121010306471264222608732792916887491000707158866999254047913786054611810141366817747429490945735777114365311619138196776056638249387208249599690279274158972264263533482913699417066232424301052566108557105882321860415953995261011470246610385777123349945013365720795738329033328267790338461440694253915947579607200765511873466671258279119860920470033646635678259287228565899281046026195224102321794080074560857019502214981683804045378001236533286039783959384004974440166902266486137702679291194779601542349226685477920055280270194687371379891364308309741325341794454848006333434887621180433722346253849620431677039433650809755697980501277777113845268685091187424823340812151151597036955214920274705302810590187488774145471376334439641472564400585203279952036644952915857362994275837591364735007137899752917263254850243740999519067606448557348572716000678300808919766778877206053237007230414810898261174192999230284869838903138569158526989803738366062311867394482801934669491046627645436363276196627877141926295125717141746847349260139498229621952941926164899210479487462540920845674239802557539445478424605466878288948565437238163965174286067026364536764787585857086934460845630429301475483163588819083876568053843919529815202317165149427461863268394120150501380274794164226549074722497966714770269857429653319371853947557581888330894630187929986442821810999712432279880515190220225825103925627914262396261528127570244033580516736900703944157759769468332776781478170997801067263584947564578699956407063202560483281763769954234650000264770866320237533750709170825618178829121555348484981912976077434644897683103996518259302203185739168355670343119920701453229307854524542846194775780342354148147108371829689841186079764946697999961540609342917861302618236089580266302442813911419612144783451058076754515595931540231562270809029227064151150119300956423560999465999653837045524948746983692965835699733590149297182040483811117450935081926236794221159650071490425720958495747811724299488339537170111127932294679341722267132041146536871343639598304001759956917134651127380387343487435851780856522271135939193895628494326974660699269244961652914573600667083355775273620390457210060853612580746188269631693582473145445281407145308991224674238036221680829298174220621860798197137043727200723464659535963188623974496505669454742056367794214902540739842325758539378897401139581409478646694538433617227363033864822552034428500528123827744206093078356383899501146590774355751444444996321829960061275708179358728977432374068967803416414619266061210292307970707626315000351235693107429383685067164757433404492504794750614444438344268104672144761836840853236978233062403887482344558895359341454623603202631096561293380806547311399902028110050717415339231618537126224678146138703245509801626065686426890214790932004293128602116907695945906954418031458955572518471438409956497985277462584714340876550751083482988783963757153324906662143577507370210340928704211200056560771784033654183722097707039082998185723278388513255915407843806226096942825934133693270436473297298053131414410673096167498440524501223865224580163159731941779290670475905774711449587324396052040903560867749633607269786383362511207050385233066787151038662750888189396417820848864094163550696516989046092304161178546471108800040333177562861096097669402728598019472317127433242097596374209926949769666919449022650020469268773013778291584111777734801678122336199306707466885245484440238800072649836711310342917062136424156843313918053232383983078468123706545170731937525394324743353102231318881796761219340335058271096924509959581007125101692341639032718526132731465816895432810824251550267187134476525004805214087356728063163982776436973281937480367061490759085981747339946738833819701910602521740453589700326016152713271589647731441404281010739627169860256321696918143984628976348066263640404724742103943068890300262217919407490294185056643193778672788621514872444857040570417491743083668801820211916799180279149123365031855739327527333088498161734020418254440569737292101091210357772958736197407944977294083500388828156900799618885648926774368028577963627085062949536784319273455247935719907179765485929514896555210085742609479677331538755145823312735881427161972974752998566400151194369472948682330746237551435896015230533986496331433897402923227963168267620139539062424101002664413774030587496049713880031234957424411170400692461605233008783471512801605298659812776385852174133626209981186918938358345653057146829280758503052663152684412143145572569203330345681676854169401128235623310323455220016266200412727026684927816836926266791942439320137398200185642991418955464718939675339859727226028984577768619596135554459532721055935991298244358265061294663738057242475692460861527669477565237601695691691877575077509877316632375206719112645395824232996123929118615660776830180353162751919847202804452994454045882395557025233387374545070083797953533868365884599308144877121224106120864464121937933917213846371733319958318928844743660588628753216510072394367819660276153579065026923320200465135622260332133326790916912968206896304595976989601528304064458567050884821874068569327242388967568172502936668476374070466511317019575209348088040354641188892289787348206240433877593443377351012788990782745082720418094253843066182615519009334935552955266684858475485494938494967552976557793389120050509603720244080853334662123762719793723288604484467147679471941170534997419483368784944658587229478672681938138968282221403428105437551913127361355898698289624008368882129842599996702944503383544658955991070462640172667935141602759653551368815776369942044583995137647829628663131001221231534965839399461463026651772976511526811468953158755101980388687271069507127424565908828648868313976235679953426838583195080029733092861157150407331246858177025938607115915623640069410010572713698395553642613995001507855911638582456822041072917198751686674415946936002316231579585375014210379780938502025242931562025826376153063786386677390155167472847163910141829719442198145128316851168493735526463730798576431768575701484236408740789352058681668788075735862455978596131420928977008662021317085139495607926794154839643638696960646064044825882368579418247614851405354060662705787252435746949859486068833695557311397454945200620586897382572493191047700347322661176946901552848619336843851237375520485128070259328150932433696874607136164590619330725124114051944408510453107152694912451523749776692224397142477111739160271001055661493257893822390736623648614862400268263497424561751004005831896928283068703198441436303294281620983292409389164251515600756093175861284494043497224235994824226709698917461917863787094372023594255212399834252267422936777442893986231106470680422080051493723415218391429320112757538538152722308570014027075530844822501991820874404857371262082276060042328948543302599518455335980198371870313013246335949291371848114991467063678242040592349751000085649630969728832751513083136617133164475700823575348532001183443076306074233894249336445788755808856138636225218959783400429992989436381421511961005832721133631275549113641226868484408007284898058005197058362236770869886182300061523332360237274414046733500673667538411330822614792668451105454556192218178234854687567453892043600237068992115945877699734273688549462432595826857808760858752097166448743979126536642225144766853882164897991219139703135886522295432375281686953025665774373025556138491930286406006798907600465458206946206559399603295541764326024991786904949110480071204024813493511561562807263177679249625023722645669629485182963500555510003335448887796367378236138310691157566684115092107052582867873880273394459968866636536467871590867185180009580075210563577153824342282110770314631151974145511413151112232582017775144045997964536000603811954043472225003066247455557263394762082853850116658090037261991247692211882538771190182621125886615683314903791497925118251236601408921425321372440272474308166026376566103285492314773620130839791355348313991833920577761293186161487443714546368334266843700926550269914013363603933096481736261401808646916666943053625645047277738712426916089523675260346358278950869126866196618323149946519669426092399385520071822088538968327620951347854373933736478358464833341988758379440954439546160099695643379929492941368487698245794174994884303415895408845403336262531882986477376183597159377008643623592744228955744851179963996057437998203792488734880620325546390780235577360282627691738879284350348303931706658969021190228577090613214548879403331887319146436620250981113501638403068994314100847127956423998146619152481508119331358228736762915421760355153676599027887866998088313007968660592865811707769576845589411213031205772873869932186264820028102066026067911651743403664004162278364920630216801991357759335718017897355535376875992900410463543711577972110530813339952464979263630750562505388948802268679332820101592290211794529137334659869207531837711768969445037532706728557894994806768360107989358484976663557718022193801196136210942917405780671537338138341560189293146145018854550800490363261289124650531215691866178661123946688832836387910091158318626391704067701909442417173700506691173895530421379380710863913241518828902128499464067152291584149084550831801244343608041746464087808753602870085445324097573012361069010422206760722613567966626449015641', -); -test(macro, '717897987691852588770249', '0', '1'); -test(macro, '-717897987691852588770249', '0', '1'); -test(macro, '717897987691852588770249', '1', '717897987691852588770249'); -test(macro, '-717897987691852588770249', '1', '-717897987691852588770249'); -test( - macro, - '717897987691852588770249', - '3', - '369988485035126972924700782451696644186473100389722973815184405301748249', -); -test( - macro, - '-717897987691852588770249', - '3', - '-369988485035126972924700782451696644186473100389722973815184405301748249', -); -test( - macro, - '717897987691852588770249', - '7', - '98274117348321974353044780928022697503543794108996224149902690255438168118107927224939057895356483251830948245334782867413814443266637838233302304694183773324275704249', -); -test( - macro, - '-717897987691852588770249', - '7', - '-98274117348321974353044780928022697503543794108996224149902690255438168118107927224939057895356483251830948245334782867413814443266637838233302304694183773324275704249', -); -test( - macro, - '717897987691852588770249', - '9', - '50648270951104922750154368051586870571131493195253277558448154467572398239992609359412793847046346201052022004762903721738077206909720257557511103348958535839847634617934011064335949101435909492826285656394536682249', -); -test( - macro, - '-717897987691852588770249', - '9', - '-50648270951104922750154368051586870571131493195253277558448154467572398239992609359412793847046346201052022004762903721738077206909720257557511103348958535839847634617934011064335949101435909492826285656394536682249', -); -test( - macro, - '717897987691852588770249', - '11', - '26102980312143604580379781426139335779091260301758026221495303393196039344305009624874488017227324790317412920525253886011853217074287636537729904547128731845728160914486066244742089352609334182138245049106257642108402738856230144495829015803277090696341313660249', -); -test( - macro, - '-717897987691852588770249', - '11', - '-26102980312143604580379781426139335779091260301758026221495303393196039344305009624874488017227324790317412920525253886011853217074287636537729904547128731845728160914486066244742089352609334182138245049106257642108402738856230144495829015803277090696341313660249', -); -test( - macro, - '717897987691852588770249', - '17', - '3573275582766550916421412995798134382789703709314385104884818112662852238582986404829924618616654726489613490560634610856652852433199412781955936605818387336430363300497297843489165805533270350826963139013723342117143973258213022730407788251463239302985363622895194233407234360656339752537037204386160966863282760795179386609783329264325715584866656109211813856395434440166721187549981532749010960740594249', -); -test( - macro, - '-717897987691852588770249', - '17', - '-3573275582766550916421412995798134382789703709314385104884818112662852238582986404829924618616654726489613490560634610856652852433199412781955936605818387336430363300497297843489165805533270350826963139013723342117143973258213022730407788251463239302985363622895194233407234360656339752537037204386160966863282760795179386609783329264325715584866656109211813856395434440166721187549981532749010960740594249', -); -test( - macro, - '717897987691852588770249', - '22', - '681365581176156632412753534374262781125282012419825049087724194682872335055219639396310501297264530289064963157507569861612948673702326507540305843556830845144470742979453946547899015520738361534628988759199748641145113940154534539818775453262688963129311220968303038658465790258784846759677427047794151246302947777449489906933250186470399660798890218035218608642881019130459098257182422713814006185934129977355115289444874704561056766143547053999767907222964203241196702396756209771576441224761301925355900901280569802742001', -); -test( - macro, - '-717897987691852588770249', - '22', - '681365581176156632412753534374262781125282012419825049087724194682872335055219639396310501297264530289064963157507569861612948673702326507540305843556830845144470742979453946547899015520738361534628988759199748641145113940154534539818775453262688963129311220968303038658465790258784846759677427047794151246302947777449489906933250186470399660798890218035218608642881019130459098257182422713814006185934129977355115289444874704561056766143547053999767907222964203241196702396756209771576441224761301925355900901280569802742001', -); -test( - macro, - '717897987691852588770249', - '24', - '351160503938693614343626853747071562171016188034295260095490111881784318374960146045355120758560422119505624375491533176393589903573845466689382216842197981277867514717013259791763929689440964343969395781792087124646063583944648684169111729145300510135702655848244592583122673432949987979858826614906829469635537237525614665196540272658828569629679791428934101079072719564710584542576589075082850692588439679596816834818341802539921621995225917260921044846812391894365530686773081140839348912145464664288336497209664739248364322768319800659209785240272285297767697234264001', -); -test( - macro, - '-717897987691852588770249', - '24', - '351160503938693614343626853747071562171016188034295260095490111881784318374960146045355120758560422119505624375491533176393589903573845466689382216842197981277867514717013259791763929689440964343969395781792087124646063583944648684169111729145300510135702655848244592583122673432949987979858826614906829469635537237525614665196540272658828569629679791428934101079072719564710584542576589075082850692588439679596816834818341802539921621995225917260921044846812391894365530686773081140839348912145464664288336497209664739248364322768319800659209785240272285297767697234264001', -); -test( - macro, - '717897987691852588770249', - '27', - '129925342856448988764251542089065045786155911790890516647657119087489042404899060228369392822075223183739765014052360206502536732276242266222695367972367328452765284427361172142362321443004910207800039177476242301577150613859831776093328430566500496443594413224371824361420410550048411417760224137393585174427565041635390932623375118187728586008978789234310569306311929614122033949249592316841971560046372431039697669234018577505272948749285774218193495971402810317470288145379703055809020802321420732619980008200661347545521210303094880943536506460031092224160192777095197322219385161928995729071382072812239062743558406558464517305710105484249', -); -test( - macro, - '-717897987691852588770249', - '27', - '-129925342856448988764251542089065045786155911790890516647657119087489042404899060228369392822075223183739765014052360206502536732276242266222695367972367328452765284427361172142362321443004910207800039177476242301577150613859831776093328430566500496443594413224371824361420410550048411417760224137393585174427565041635390932623375118187728586008978789234310569306311929614122033949249592316841971560046372431039697669234018577505272948749285774218193495971402810317470288145379703055809020802321420732619980008200661347545521210303094880943536506460031092224160192777095197322219385161928995729071382072812239062743558406558464517305710105484249', -); -test( - macro, - '717897987691852588770249', - '29', - '66960601081613218995545615402693600374639583627057873894478996761235534940521876203825851640372285281121028022306706156922783036648760227593129124026972625933013798555768937762460772142044797003957960219229519539565564116948220691395428662251667454449762970671596782912888080349684772071024984546225188460055852555657228531306371662448557023517396895942248714935653633379580289509781187157995620922388883890668691615375469973820302219060616733583757178470584754927697520205194864258128911605585342110346435691476086856952623133602717988980966508297658793357400697431392332924229866368079543112854041068400435054566433206423406557876970185985505776428441038078323222858222598473938385526462249', -); -test( - macro, - '-717897987691852588770249', - '29', - '-66960601081613218995545615402693600374639583627057873894478996761235534940521876203825851640372285281121028022306706156922783036648760227593129124026972625933013798555768937762460772142044797003957960219229519539565564116948220691395428662251667454449762970671596782912888080349684772071024984546225188460055852555657228531306371662448557023517396895942248714935653633379580289509781187157995620922388883890668691615375469973820302219060616733583757178470584754927697520205194864258128911605585342110346435691476086856952623133602717988980966508297658793357400697431392332924229866368079543112854041068400435054566433206423406557876970185985505776428441038078323222858222598473938385526462249', -); -test( - macro, - '717897987691852588770249', - '1234', - '240666810925796631497300464125793793876153875629096662520743987128655138300518806793333863505002370424150325835897522997035758513508393749421313311380386678245885529902936330574270897824424068780701595312024191583797781168159472099893770860328570371993646844140203799118143686616439077080118602046330501107174223757814456182746333086177504034894868587120939461313455507702811247120286468199645215838215144781536578745753923838005482894245501661797497042343390617151204343021554518498735362447358070369090432988690834865403291509113944458407089222159417866640525805032080821319406442026747974929325112928921447323232212274973452975883062343094212146738595192633791120734889354763869347495932575155161944862722200405955280366430399276362677049013925041871227530264219143440107033389736110114624783260190579707152045014476353193813168715289380838132597179842738854542064339183902073367485289715584943627672587668112192162491400086760878390153498140343600949752356890781346460139220027272654766196351251998753435700609187724419282733374517073505387635776141937057086008339977487598351396266355557385114078610220987097361567756363195532914764004598634407992908600646589647778700597919884751054929681098369460031512377150901578312180257824087931889292083387179002094560172630492173743471238348161722683402811331621904068461649853237649098667186022410987655766907338482317060412259815938817187300402820360378490149991171370482329371650505043884192332467954232225473438096361196485730615702706338896803459544893784510590248023379843299267561024474106199710926586300140256218142748793677805122624858592543944305974549597571554026676016225109087448889480206990407910658105566060532854331549685512672824252906121631110818833232354043403137418311925998804066986754875440423240222092764003746250623404175411263344414954113517360947070716557546634100780648355973690014553189027477234402720353402501541699079073208241754265407813302554719501911786154879576504690648777330790234360752380718909924776795870591070461878764685781345393089291677007084060723076292423331888969906994889802559722805557544432185305096822014262735051471669354024897723343139333199330147964590265703488059466191857192410897868609291384108526636429139154008874646743040881795937998168293882623621583556584500036772108578773075747899050834512563302362032542587715210166387236382275419681547020073143476402676839032589356933008399060939093631291937107000000043323532799137849647405096232083364392703455257640562906669605316805575467472071569944146598547468221559924113348400144610716847685364347467929073894879899123491301645104075537984420168183636199226629624957989433534137128744185230344994592856898029628268331117744171243766865397230810342464227680605486409079213386036803957679866952104779315664126405241076356017313310476722815126991777729855840510871727519397893209033487330193378894526790670497601404262388611693537246084432220039998668497909914891728825779959838738394310285580938434539221810042937887451215631212371491462951157863268559393019049906492412696634901678674798328369463166268199126370427527431576741235550771195727247585539256417952853329478914515539806021976444112084626581019338193239617668568672517993467174255845823702683834750228698628538106052353376750716489661771727612994518487692989696065706319916267876683157185246663635313221904866416368381426519462074273529104434353847460205734702566140847713395645548499357551950806690743433954202058581687009317012817649884159064284249335591683480037524895848927954651846952405664224327697084573143825212146169786019851375852570935645324673501437526819689862546523710166522763874255457046134768878318504847569562740775920029079242062671507739909787305724552670012633097279820790400444955953186180036141498111027556284782611831968632960254971585279229009517389124640521071182508552930150093115185298823230740659868195268121798981841121508518238922062146832778512233130516701388382270437021078314304384358232872632935033731255504313450018207186652992855974803423357233611324893304082721355054709451741004386686923054310723261481499154665026674935888222845457736324171023246366147102994195305848085588996476494973007973902151008585594112156233214360569556745482837925015827621067498561246812344514749188513286706401554080345967322077722072126008109427433431070325726521163012868148649582784383995723396360310319509595957738338411942892357400728388524308685812413893999404967999249813865349937751377717926369301101787921984260122186159989136656801540380770978320766045936205592959488163833618604355519117056970124007977963289037930079739906574432060855963578944486246793175242282673514112660912407087562188397053739993885193130818225601480302627529684348527769410385079008546741019828845532655444621234451156249631617457720152180989156738006670404506338571918208165921758803413253593685587469101580701192606017766650438994704981870117413061535622136601016979952697317238276873256779729419028069631432675219491767318800339045855442030264560075159056776340091166641523596359578961807101748144945138318607039052076486075699577782685718970588115246184745849474239861848227033647872319200256588719967644217877454602724612457063846122996574940120482768446762101146242787977449369937867250832112867230692912468970042855717280755106531667961937332446742078258774278002352847604203619178315262206430766732415004556722421674647346648829974839968356832918027747760706008251337997576672550889603071310089578634747901944072670071985016123486885045817879153495396347705516599056944513760289619758242073133217108261158438678792867348399912643882264938522086425924074531699941057823129668543509614970599670225949760759593973290456515031451150061095408009491932533974765354150005121720734711745252878859000575558573436139695813170049848899622852245653141171375285116196880631468001421360473881187149476805269342296424485310215470494796178401944348619754324798206578015187379609260920882768561974442771209643829629212007051116346637625763873106848673476948458383017883010996340518563860345530523780019175023658557801658436627673907676975971882109751635784820139654624656191522441490775749907596367211611579452627181067685977845460985237049896675479606151704752856005151770161591738112961723993454693092539303522485285732895462643804740701516376964927670122135657823916458074535855817547513841507607015010962514867231406668733574660708546812140757605323461188423370665178218323843285796646737709047020502755313516962625148241570458025214707284812497971943815765595261077725596928727447148413360293693704268976245064190940961850889245136042407154085469838297857292187347035492359540055492227822512458140269037567546119976309595685267059328503097802601274596051953728897555043442182432638912118214086596792857025735173692744450906559633901069848611000152694981799908562674080212673483483714535683816021391478836663467848746594481778215255545090822995407416235269774848665232107297962031453869358953402040347982467139283098108055610285820589613275368865515242210501491361858362122708451547647239066214844062386833772040444917284525202881555120247439897055373293814403955325754500816079489668326796664509455821614956472480002144936394671934338050270783459361214210050599756870439116283220868124998006625761895550396584389321270476762755086709308051601531689562716830791751872883137993455070471233464948461931211369790177531373113631239997994291418256714478265196669753238257830553539691807842745455955136875773828554605336260805640377757640862870194935776092004134130289520896834858656317913097532957724133151945092000859020920237096913664009534675855229755344172129957141641791984538395100720317980525185769142781585509930975604069100811643163009360481907738801078884830886276286316858755498443168347068032348883021378746194698784811802339515331441830238719175466597762050420975691354490653471436861965025398816127746666639354864324232964949049300538005293308845940271700888627199662903120034287206034687813252949705816491402178398645719387809539644872118409461401883654312922279080211009210189799876128819902719937084606802972639337531957278291820852311932551591955350790335928152884811433450537315845604917323956883583239480347219971438941586085711934485815121967398164101784083619826265891401802416571741345090544188799381856839432343498457496360597455526238460117589115787753968612657150077978004530794321967803330389249425352563744925321708518378671586645666604614530902858059020840074105043307623670946950043194604176031013849727052783428735689851667778432798381033674827978887751236650974118849759189503239625343304532523005839417475498961072873029640889256489519703706344292253527801297251124450502273288023521577486079679697498402526688946738210589004011833446500132651961861200853340654900269802660034733678942996167533210265105504648979731317667399933165040919109758988751189548962159739945527299915654716346246041095050960741515495587998776985363865506374140224005340645853795347072152325663672271845064723399857372941894460100333264447275387920605177410030429482678126703784114018103844023345892034742213333395468046660012665242882251447818527188389084106839211601891516465629590896364692175169015105701572123182161899801710734441225139364024469426754491100056297212476895075865513734972712990677136692220035091504362225897411284355159962673082264518469172649285965322881981348609178818294743174542244219819932183490365756919330710479957613508601495497295676950329757448944977362883166111823279769434700959568955927643656859063742327008267599164937006804048910677286568538933031439840564237461535941197796390759052457284051017778672694027120426633268111056448896881308374127555545225553090822535510692077989067554686838662757792829768851773704480230259292642841141429771977100764471997993102274545765814837384547498350869645999651843659166200886176115555346289903469340446739207010577645167542297460407137062960215028382415884570633157792532691792641314278905490923087079766067798937780659109451731519734592939579025164926515523248807352103381305168229367358321432773551392789398713507962778942820119469523225162863178680183911570348027961700553229115316563272964376101119188825605514991804081027954389921141273219285131032169547368944389824308436381941175515798111830481000043636844809228835704445068305252750582078049987152297826581119584963878880864201441342341314647264252390676175707582693479476352854352886370525502607349886832362596404647139600857534060227964743860211405500060294329186630176879724051222152101141867575359408008501674175606199047463432213378831599134528934108281929480497040842200684432006775368915613194065693056672838195707429303679749464784054705434213357415294902116744802057352193718342238545126703326661042546563491168121691269341550977021406438785288342043569889077634089317033122541296230748114388665029044499469546397108299753200706114193470635536895967048169021873576306364846257373205822028138269759764442484817509279075026743603019509097159849066563284407999202539936119877761212471543147933987133791650432393675308321559611393751092509456575599446737432047081189236910050329727334141146991725988700140584975269036834508080148636316737184199462112708124889925362377529178344014590919552819769657577672702978011641143673156015114065926314546589192090878523676668017033871729579063980669673546335286849239147941679867288782496042348838505520661208416542384402601836938516863582808398758530009389050063886699985783925267497452701039388970042411071173551559121683897134217799905956381777617760035612136975496448360169358472611166991247066660361258257792717955895802886807621142240955311727190733860080248699104145339409596193747533219052958194006816842395395133815227958447183027408201887154248055155515252489593725880002915429087346780489686173993006485543412786317161927405570384085201230519902078033355645726810161924247926196020315576428292022629241922920330634879366713250236205513546588717366123436426532878032863695637071735051269224304497931038322951508526569846253683590423751042200651378810558188601895181845187598166177418938407685219535673829472096697071612870362277436920342738049215807079089141509386167010651751786772439419974350420945450780317330425760939076658378846814831229353170269675745570687143370733413098798744099031911520221044007327256897909622230050896081391104380973572938318409605238511264413423963577109959485446578175113776603615777667633293449071495602382745493460804765597670064823587149295646560929042625803334777303751883329502685780494009410515987822344496036156411290474009548223625232450188758230491801781290987433426377664288677071271225318178134265723090953908487368210301890173799337794414289839164334384499838476694064042562380923392170814007209797114936223969923288492450317383650369779029731134714434936391643766311336738629884184770965675076449262359336759950385687723231779915621937147640435620959355327348891883061403815008875737737458441613654230046515389312374996035407943181440498220354304355266414125515658969508581407533490313522890987856883087879602650008064327529989955508937331955239874722401238624800305487314538069958888480061378318398494570408743929545890698144755401436645575305635886766888309290821752239252465276109182753977002117165726763101082508643896734872331680782581238479701159334042497390606376542941582331808271248759018721187949059390620081627947668715490802983617888543466920624132979650708704245244736734577571335364024219584348266021595514151130896017976378599765662306270194051912298827281348333359149495872248207397081180112660679500488646194492335713944553578485524340274065812575443967506816413669283541021458439360404721464264498869630723885583385346819805722244341238149657763492548458459521747402931332148061021522859079768700468052335856043104242388423745990751764752080395046941015982884875151539581000878641435603583824562615084914225729901628394177372130985466208762313918008648944381048427957163858317218102829834343833633544901126931143569398807905684970202348964194612275298885061923925145525774876352222523781858372282001957198274173098329010279847291113009852613678253123199322917136025127117154756978089704874006129913373888341731677935563427208491533468982839070555222905600716758864558055015455443368534003989339266991496574749087456141207063618250411241902141164015442390891110956633395370303166431966298954503533779086717784121585666343471909838926386599682823714314774096149220614537617503626682222182615668880281733598355987215201453863347388340090921698878129884976286937514133684565405410347549261471700192037533086493793953508999824708254409983739425082813111045769624535087578645427477116700686622592971553298713236705554924227547844058030634294043977065066654988266829751374105278390824121371044031181008428048205223923243651098135005092948487395324912456217052331950187603567228183420265978222659169332375919592362911152011838702189535847577763714114425190514299564739774757564037598485982927812147173140747827430978393017504243724684098500167685714749941846120533181791178220367836024729909146669128836477415610531307171288054524223649506374655503312084693854015857030163886937766181098823169023181572231477404931598733389102380674704591127778547890467262756173574558080654790642471369332640892203135294330237246272074631760017202872694312963325722611729402358297429077465902624984852437593479190867737167006749083009854670384065327519801302083242691293439616132893416660268947919201637739258769771607084518793369204312869826490193716352930819450570212844033786667236068075375941453964216107149779664323628747272497685794971849040594638565097670630010455310220514277785818284186463200618441748478788591987616681646033755321959251953987293706031605827100615706433378711983560088154239750803537349035070283423517350889381534886372817293834165533055835445256823942303051891255521175486827650886133221071633589921707722114526609240665260264492305806982431844042679579783582551609283040246523428581845720374540737897789979786180180579009825935175015723992444590406056732840128165816199908483281974729283159640149821021618151095300252407271226953926728439712096665201813821962143089789720545389677608391629805852569311950851389264151131224953921752017840922075938093985062781184787646406285721393870539756657767030925030053022461302204093227393963491255643017235236360807076699601286868224950349231983608760919780584266842953210668067889511328397050532424837545546721403509681669483144282692231815703147470176852156718005759125673967988457229048839619145997585270368102435074595029990094324102493737818970275642575407600875588537013441673454455861497898836728065291478392070865090189959309947742444986923526745948057899128034232868017159368271694223700039666236730894705407231009389857561190687139334624948051152611495443371208819706799382667564652218904459544669746954713753183826624347921466724650586905939136598547335012617702607014113794591546834254696563524548343500981096958481191991323022742758572702244370470464413665803392605126994943740602380225661619992335366449312159389272554547255369597536289533017879667844179574297853538262473990737634615419535991688218597561417950967595509116168022993443293531295365421530990278428579503023488689022645550899786226625323338180515144059213727584521215321722089993299184212218054163465777614637889378688685803879328452385390951350548924489120271418100487678768868428228212387228503799518279495595264908243662176970443975028752029355061454695157141184819938299926947437018478957044395662391617808375468649007600370172940115843761412592237460566795143736348519450988859101853660296226210668299394693230720927858276964586740548558363904065214488088226818002415057852903743836014126022876012254536312345404960062753442098036019060443237049994545797682297235099797863438436593216207403158412477892107575374686442179451430350704320791891708254315536860892520182634206456725864813704568320562591782038671811141093425946482688159934297090882997856490197026962532578625837338928755211465291529523683918247460452910194710972484675179153177104097104259910518268539520304289744878391349554947980543388976876106090112798575825073980240911865137171222653996955929253877954855333315507869969643594964229605539468134884245036416894025484737992830203554155653978459691014928198149428959910752989307071317377965664300905553289327994588549850950284644007080706241112418494862133916539297959029131158062514264923394985650739154621700845808120916284537924609624030443114218948985698358239949762635499673659005627824880546112922811671183977198549908295009183673236341667156736650377361061056737332063403410177715559814144656394550604447538215779823278536104712565326761405690441339115296210030702222989203489845948281369398678770779363415632864910236794328437692624022552548328392842615492736782204301768665965365930746241254165608754964908497067499545759985298460945344650446835792542841082131510112938961881927693248231120221756864036707731726487325938077272576650743798183544800139162905157445216386915371613768879264078891644381253089581539609558090983181521395649500355526541811118635730569046931361684921810261207373485062516626873625896376115969793729107031511621422445382850451172374270682693053568648031104008891817274572963359437128249991844891468313131004074851541435190896882353764875480896554449408432067645595533709041759932190996007431454089967656531249566609171679862639011907239936167049017771581006836981063193553563613522749187290893357797646951653930745484252566662895227296365515537656517639786730623586151975310765480540289532531601949395336304927562830700960037825411985561643821347883034995939999815320371904489018486314948455952559263146409710068471713259502647267478001977847611896061825935753950424233795977832748562746151379388667659849662204204370582406208836832264614999774576849343391530101628342373099807709619251009982948420174200692400576186926512032915961194241973580587141742017725523177905799155980685544702998175691236820149021743148908860959473955326805004843786317283255788228027783973963775307044681831745418957729607897287660450576165731690039127804414511168095180765758455897687743007250305015608713824106966239837615772559788333446260389735144551194566097856159222619045281993121036130544888850748533209105902290817972040683491743672438537427407555076754103740470470519996488106893988963679893402926779777315510136748292964498716616387480928391333727613516511458687653975670170800714203116160576633121381876444223289818335512535646590900478008372238152919598466400554972447258395277820369798167170321756327919408066285581702239995204777287480387161536727459448442509762680258106041535327214632697312513497219121039425133532472242095253942361432227842877340347922588175651734262339738440446492272637919578131157514237627203984698773116783796765212222546280365874311759355831644675241116934493294688108999510961605213084570721687715849450396639049106141887860856148954550750471455629931627105000620532269066137825781316017603220973433261333991034567108467510498624962642488699169465874363399488868154638948242465984577292633553735556852420099382096738662832127104872725881996505036610995572650123609241043781086883738614012464955179446535377004978611118562176293167638027449612637695085975726247778121052711332364566219200112876185845464416120363602708440087210524126961712756204182189211477418943839212507448032291316566737926226650207942465800405168687099249273393069060646360798873617365864441322829730079901581793477840461467290903920089953743513557150545457465001493281676469801544541444627173505187869563691796834575745981341826378231855942604285683577230974772727095310465725871392788376171498988325165587658459242478209763818343931715246275249033847544355256625769712507232847344158590312425822454135201105768865080501413412277647350979797597165322409320114702032426981288520271353130012171484594553991124856728942246176555811779216453894275972582641573921036716718553318429096852951098778309232081644343337035691135410384601765183315931601762146264393426528312050751636769212945201832547953844492774251628393141343106226795356284876139469403273284444586014152400694986734961594079272858809061960949904448174959103909564433761703907276125412354892775335876415272646526126192989549857858930065881045254576136386486138517438556555308338685607210816131204906145887848650892144421256413442786428159719389978047391109134257790046140655520758094636923303925473166438103154754510983147606737926330885845999568999353851276202586739695128035976057952375907156376600975164048300965313860942704588148212587962879654957903805340177854247259711308541551603503567837780970461451995771047865665783511661730311276567901518165972850520986636796137347177492175264790310493561351654339295597668712467832251955744640272444007155359474048804304065788982945928352532307632627576930665303670890426050955025688528627309916477125616012512925234970728304675990574496468777227069085170298364495254489068034897491392933909636369331527636742699013284766902371352506091776350995292002731244023865757006858780469293597018620342571723772179977093125789699475496105523743724832176529540068144093345882387953940656084217900519955099464578748726508611651485516665622261135808230656113185935758123090731435124996047414425279597354359574378856570913306377601759010157157490619551740940998388274502844305091669547119876233489292751989516078837544062423667004292912251992330172087279616497346882233046859736081564275972335625958254887035338484716664189318473872485695845339136606272315059741608927734938768821670382249825317380542046557829438761966527834167384855716224439462405323266438326536377961771823507569459750423103138290848070089339750740358977330113970497456562209782789816756431729085281442325129945131381329920983439892601873489278892739994343671536564003094063601168102358102060511646184488836555280866265439572865577916493719868641514516664261116535122724396782278955528978764063014169535540654859120299172230842177436210545014476071475600058330214022044195137271228882609806962913480150447375885450575324750279251402851061941914287093134507336790423199888450218824466412490267199774666086468918833734387337497335144015840693004008549890781493464193192460097751739334161380017888359443004786038046374825235310856409598367802175188078401652900630883502414596986630872311085261238505708931003788068325087199867279768495262956883650359670743609352716895125122349956601558456299500231541599105539315180746997839621279353395686142155700423447977269222089468138684489318419154262504409821198761325705465328527695537157420782082354078175035903462010430134986159387812646272750962009925857083492829567970790332465325289206689049063764087436241829439763284627544144883357167770069639466367471860398862788075053410539365200406384307372970511564096399841314435051459484946899992507044444836354985269418541366246616097379154763081470481918007310765539689731840724466167823996718641044946480569623102013135147003272739284086213587006083417239308558779132947952435879189833909533561483821067431049890268359556509392353401539333788301678145208658937272723188794578112686709909491108016192828130703303524780820687044001344046854958188080136806595303293237463476504011920463204562731540166037081435695648333493988584792808470211132901764592133330530980096778425332932212735837577215893864016217901368345444882023496497506785629435246203379531538457462340173890359032774939687844147198184957025212849427638320378720167398909916718917724985900920192030214246493573397230398365110417352778733527631095124650992710118667623539554692566783429394136221716928121159143717386855853984409631021985053790618629812165917024946228153251349408767853192940114553370189242241369551007994010028856078603666746043453656590118761983375709654169884658816846754918144899815282484040063735003947309015844941305847294632029009712335365639096408778574091927109550299652681981479767150215206743081866358869114610816772333138477417708074433283279303532825808874057642839515755856791048739006988848065926839028819778433988669939558066650036824490486884666934262276513630175045822348774690095228540301868104997197326328212569850060274724529767914857676420841256961349265084840795236300841400994212367633572991161913691050780025455347823394988202788101768864502813390202856859126972599856839543990159365234030538827346354126800097285185924007284964690706128142631879645458992663766048427439769100788649351932617465546902567125707865370814068813860587244367746419075848390538678832569432671471062986454254204755506074801888029161552920066319891531957945773273477214975812022453730709392776469844678661783580960787047698418293376308118134867752848112612486402593064704496634807094220104296663754040709636340404817455410880891536467187831977983640996849951650389805873899168181319390054320789631028913388232046260307268390249991322854583613804193446810865918674501358892715568404694072865540886401726893184784714501860380117604550931574048136798023258513596201002070068810852653249151000051456727886861808962487581377647552163976398924881561622659417081146106665646072744668498044426052522804636851043773834785399184804744620318835737108437901882030516095623037578335280017150548691261342926746197516595593226496924022045173580598481046504353473187019615999528239277638114058438415735028254220037867803763085393466530484468108461280119649653140359265924176687880191882252356096667279055875924399802049955390469540917907333623282921659561338713671919571784854447264751582461161121608220632552535539574811239491907977080055351867435082725503419467499187011802283659752233542349669207811280081047966667824818523441274660618920625130919101015888482026053951969439894711895548441586107366790258898741612638693297959237922447608589158095992135723952461923994687823650465896764883667052137155194576002906847524103760645387180490146865124538922972372819826875923731390254431637342915817358546048808767134126047097505431381328118991195760134187889545091844395783645096128280496313025953970498006602276712809536127205652543720418045709969402565206329936420465311999349099261495766939883753463147455929093001269063984253071712863023553747896664603639453734132845027589712104259060427174009223665700657893713650553018587778453891754253151543028835750947685193000377825566600933648482508779760768199662372049766387638985631992100720003474151721375703211133912952407983355924232680111677587187241552829353741946423917448296404338549819202048685814597880693735805572741960307139515943152276365487150482922514045581253293812970267225644349179074560531877646062461313500613224648092931335926366379056886844623491593907009953911828052093623916145953431995773150699039217050325951921320241782503621522257361377451082489605564890402097866814491505081488150019983296575499211151451554027366425864934924114301930078755148355932268605394003602081353485970925801149654213968714040128138987924299507789192344817388231539104117379617054404077042219865132840948934920651343894411168095993753287475595036673571212995962900134686846347787877484062299240326083529798662229832353356661104190733708040289237334415143318464007457016765783370725688178760684007631997290723697308539152704845065598303686071945621892934023531809446634995403272958391058435649685487542623361855343322082521933633876027950702259029069185899906864695622617535870612593631958372152800863964775616329570345552185613467025464216600056930056849030169878244758163240995914072907600096163507820815348734058513665059114508068178367617804243332753749239571295040855080590873111579164335770288383740923440579367884707497712423043388562508100574697765074001', -); -test( - macro, - '-717897987691852588770249', - '1234', - '240666810925796631497300464125793793876153875629096662520743987128655138300518806793333863505002370424150325835897522997035758513508393749421313311380386678245885529902936330574270897824424068780701595312024191583797781168159472099893770860328570371993646844140203799118143686616439077080118602046330501107174223757814456182746333086177504034894868587120939461313455507702811247120286468199645215838215144781536578745753923838005482894245501661797497042343390617151204343021554518498735362447358070369090432988690834865403291509113944458407089222159417866640525805032080821319406442026747974929325112928921447323232212274973452975883062343094212146738595192633791120734889354763869347495932575155161944862722200405955280366430399276362677049013925041871227530264219143440107033389736110114624783260190579707152045014476353193813168715289380838132597179842738854542064339183902073367485289715584943627672587668112192162491400086760878390153498140343600949752356890781346460139220027272654766196351251998753435700609187724419282733374517073505387635776141937057086008339977487598351396266355557385114078610220987097361567756363195532914764004598634407992908600646589647778700597919884751054929681098369460031512377150901578312180257824087931889292083387179002094560172630492173743471238348161722683402811331621904068461649853237649098667186022410987655766907338482317060412259815938817187300402820360378490149991171370482329371650505043884192332467954232225473438096361196485730615702706338896803459544893784510590248023379843299267561024474106199710926586300140256218142748793677805122624858592543944305974549597571554026676016225109087448889480206990407910658105566060532854331549685512672824252906121631110818833232354043403137418311925998804066986754875440423240222092764003746250623404175411263344414954113517360947070716557546634100780648355973690014553189027477234402720353402501541699079073208241754265407813302554719501911786154879576504690648777330790234360752380718909924776795870591070461878764685781345393089291677007084060723076292423331888969906994889802559722805557544432185305096822014262735051471669354024897723343139333199330147964590265703488059466191857192410897868609291384108526636429139154008874646743040881795937998168293882623621583556584500036772108578773075747899050834512563302362032542587715210166387236382275419681547020073143476402676839032589356933008399060939093631291937107000000043323532799137849647405096232083364392703455257640562906669605316805575467472071569944146598547468221559924113348400144610716847685364347467929073894879899123491301645104075537984420168183636199226629624957989433534137128744185230344994592856898029628268331117744171243766865397230810342464227680605486409079213386036803957679866952104779315664126405241076356017313310476722815126991777729855840510871727519397893209033487330193378894526790670497601404262388611693537246084432220039998668497909914891728825779959838738394310285580938434539221810042937887451215631212371491462951157863268559393019049906492412696634901678674798328369463166268199126370427527431576741235550771195727247585539256417952853329478914515539806021976444112084626581019338193239617668568672517993467174255845823702683834750228698628538106052353376750716489661771727612994518487692989696065706319916267876683157185246663635313221904866416368381426519462074273529104434353847460205734702566140847713395645548499357551950806690743433954202058581687009317012817649884159064284249335591683480037524895848927954651846952405664224327697084573143825212146169786019851375852570935645324673501437526819689862546523710166522763874255457046134768878318504847569562740775920029079242062671507739909787305724552670012633097279820790400444955953186180036141498111027556284782611831968632960254971585279229009517389124640521071182508552930150093115185298823230740659868195268121798981841121508518238922062146832778512233130516701388382270437021078314304384358232872632935033731255504313450018207186652992855974803423357233611324893304082721355054709451741004386686923054310723261481499154665026674935888222845457736324171023246366147102994195305848085588996476494973007973902151008585594112156233214360569556745482837925015827621067498561246812344514749188513286706401554080345967322077722072126008109427433431070325726521163012868148649582784383995723396360310319509595957738338411942892357400728388524308685812413893999404967999249813865349937751377717926369301101787921984260122186159989136656801540380770978320766045936205592959488163833618604355519117056970124007977963289037930079739906574432060855963578944486246793175242282673514112660912407087562188397053739993885193130818225601480302627529684348527769410385079008546741019828845532655444621234451156249631617457720152180989156738006670404506338571918208165921758803413253593685587469101580701192606017766650438994704981870117413061535622136601016979952697317238276873256779729419028069631432675219491767318800339045855442030264560075159056776340091166641523596359578961807101748144945138318607039052076486075699577782685718970588115246184745849474239861848227033647872319200256588719967644217877454602724612457063846122996574940120482768446762101146242787977449369937867250832112867230692912468970042855717280755106531667961937332446742078258774278002352847604203619178315262206430766732415004556722421674647346648829974839968356832918027747760706008251337997576672550889603071310089578634747901944072670071985016123486885045817879153495396347705516599056944513760289619758242073133217108261158438678792867348399912643882264938522086425924074531699941057823129668543509614970599670225949760759593973290456515031451150061095408009491932533974765354150005121720734711745252878859000575558573436139695813170049848899622852245653141171375285116196880631468001421360473881187149476805269342296424485310215470494796178401944348619754324798206578015187379609260920882768561974442771209643829629212007051116346637625763873106848673476948458383017883010996340518563860345530523780019175023658557801658436627673907676975971882109751635784820139654624656191522441490775749907596367211611579452627181067685977845460985237049896675479606151704752856005151770161591738112961723993454693092539303522485285732895462643804740701516376964927670122135657823916458074535855817547513841507607015010962514867231406668733574660708546812140757605323461188423370665178218323843285796646737709047020502755313516962625148241570458025214707284812497971943815765595261077725596928727447148413360293693704268976245064190940961850889245136042407154085469838297857292187347035492359540055492227822512458140269037567546119976309595685267059328503097802601274596051953728897555043442182432638912118214086596792857025735173692744450906559633901069848611000152694981799908562674080212673483483714535683816021391478836663467848746594481778215255545090822995407416235269774848665232107297962031453869358953402040347982467139283098108055610285820589613275368865515242210501491361858362122708451547647239066214844062386833772040444917284525202881555120247439897055373293814403955325754500816079489668326796664509455821614956472480002144936394671934338050270783459361214210050599756870439116283220868124998006625761895550396584389321270476762755086709308051601531689562716830791751872883137993455070471233464948461931211369790177531373113631239997994291418256714478265196669753238257830553539691807842745455955136875773828554605336260805640377757640862870194935776092004134130289520896834858656317913097532957724133151945092000859020920237096913664009534675855229755344172129957141641791984538395100720317980525185769142781585509930975604069100811643163009360481907738801078884830886276286316858755498443168347068032348883021378746194698784811802339515331441830238719175466597762050420975691354490653471436861965025398816127746666639354864324232964949049300538005293308845940271700888627199662903120034287206034687813252949705816491402178398645719387809539644872118409461401883654312922279080211009210189799876128819902719937084606802972639337531957278291820852311932551591955350790335928152884811433450537315845604917323956883583239480347219971438941586085711934485815121967398164101784083619826265891401802416571741345090544188799381856839432343498457496360597455526238460117589115787753968612657150077978004530794321967803330389249425352563744925321708518378671586645666604614530902858059020840074105043307623670946950043194604176031013849727052783428735689851667778432798381033674827978887751236650974118849759189503239625343304532523005839417475498961072873029640889256489519703706344292253527801297251124450502273288023521577486079679697498402526688946738210589004011833446500132651961861200853340654900269802660034733678942996167533210265105504648979731317667399933165040919109758988751189548962159739945527299915654716346246041095050960741515495587998776985363865506374140224005340645853795347072152325663672271845064723399857372941894460100333264447275387920605177410030429482678126703784114018103844023345892034742213333395468046660012665242882251447818527188389084106839211601891516465629590896364692175169015105701572123182161899801710734441225139364024469426754491100056297212476895075865513734972712990677136692220035091504362225897411284355159962673082264518469172649285965322881981348609178818294743174542244219819932183490365756919330710479957613508601495497295676950329757448944977362883166111823279769434700959568955927643656859063742327008267599164937006804048910677286568538933031439840564237461535941197796390759052457284051017778672694027120426633268111056448896881308374127555545225553090822535510692077989067554686838662757792829768851773704480230259292642841141429771977100764471997993102274545765814837384547498350869645999651843659166200886176115555346289903469340446739207010577645167542297460407137062960215028382415884570633157792532691792641314278905490923087079766067798937780659109451731519734592939579025164926515523248807352103381305168229367358321432773551392789398713507962778942820119469523225162863178680183911570348027961700553229115316563272964376101119188825605514991804081027954389921141273219285131032169547368944389824308436381941175515798111830481000043636844809228835704445068305252750582078049987152297826581119584963878880864201441342341314647264252390676175707582693479476352854352886370525502607349886832362596404647139600857534060227964743860211405500060294329186630176879724051222152101141867575359408008501674175606199047463432213378831599134528934108281929480497040842200684432006775368915613194065693056672838195707429303679749464784054705434213357415294902116744802057352193718342238545126703326661042546563491168121691269341550977021406438785288342043569889077634089317033122541296230748114388665029044499469546397108299753200706114193470635536895967048169021873576306364846257373205822028138269759764442484817509279075026743603019509097159849066563284407999202539936119877761212471543147933987133791650432393675308321559611393751092509456575599446737432047081189236910050329727334141146991725988700140584975269036834508080148636316737184199462112708124889925362377529178344014590919552819769657577672702978011641143673156015114065926314546589192090878523676668017033871729579063980669673546335286849239147941679867288782496042348838505520661208416542384402601836938516863582808398758530009389050063886699985783925267497452701039388970042411071173551559121683897134217799905956381777617760035612136975496448360169358472611166991247066660361258257792717955895802886807621142240955311727190733860080248699104145339409596193747533219052958194006816842395395133815227958447183027408201887154248055155515252489593725880002915429087346780489686173993006485543412786317161927405570384085201230519902078033355645726810161924247926196020315576428292022629241922920330634879366713250236205513546588717366123436426532878032863695637071735051269224304497931038322951508526569846253683590423751042200651378810558188601895181845187598166177418938407685219535673829472096697071612870362277436920342738049215807079089141509386167010651751786772439419974350420945450780317330425760939076658378846814831229353170269675745570687143370733413098798744099031911520221044007327256897909622230050896081391104380973572938318409605238511264413423963577109959485446578175113776603615777667633293449071495602382745493460804765597670064823587149295646560929042625803334777303751883329502685780494009410515987822344496036156411290474009548223625232450188758230491801781290987433426377664288677071271225318178134265723090953908487368210301890173799337794414289839164334384499838476694064042562380923392170814007209797114936223969923288492450317383650369779029731134714434936391643766311336738629884184770965675076449262359336759950385687723231779915621937147640435620959355327348891883061403815008875737737458441613654230046515389312374996035407943181440498220354304355266414125515658969508581407533490313522890987856883087879602650008064327529989955508937331955239874722401238624800305487314538069958888480061378318398494570408743929545890698144755401436645575305635886766888309290821752239252465276109182753977002117165726763101082508643896734872331680782581238479701159334042497390606376542941582331808271248759018721187949059390620081627947668715490802983617888543466920624132979650708704245244736734577571335364024219584348266021595514151130896017976378599765662306270194051912298827281348333359149495872248207397081180112660679500488646194492335713944553578485524340274065812575443967506816413669283541021458439360404721464264498869630723885583385346819805722244341238149657763492548458459521747402931332148061021522859079768700468052335856043104242388423745990751764752080395046941015982884875151539581000878641435603583824562615084914225729901628394177372130985466208762313918008648944381048427957163858317218102829834343833633544901126931143569398807905684970202348964194612275298885061923925145525774876352222523781858372282001957198274173098329010279847291113009852613678253123199322917136025127117154756978089704874006129913373888341731677935563427208491533468982839070555222905600716758864558055015455443368534003989339266991496574749087456141207063618250411241902141164015442390891110956633395370303166431966298954503533779086717784121585666343471909838926386599682823714314774096149220614537617503626682222182615668880281733598355987215201453863347388340090921698878129884976286937514133684565405410347549261471700192037533086493793953508999824708254409983739425082813111045769624535087578645427477116700686622592971553298713236705554924227547844058030634294043977065066654988266829751374105278390824121371044031181008428048205223923243651098135005092948487395324912456217052331950187603567228183420265978222659169332375919592362911152011838702189535847577763714114425190514299564739774757564037598485982927812147173140747827430978393017504243724684098500167685714749941846120533181791178220367836024729909146669128836477415610531307171288054524223649506374655503312084693854015857030163886937766181098823169023181572231477404931598733389102380674704591127778547890467262756173574558080654790642471369332640892203135294330237246272074631760017202872694312963325722611729402358297429077465902624984852437593479190867737167006749083009854670384065327519801302083242691293439616132893416660268947919201637739258769771607084518793369204312869826490193716352930819450570212844033786667236068075375941453964216107149779664323628747272497685794971849040594638565097670630010455310220514277785818284186463200618441748478788591987616681646033755321959251953987293706031605827100615706433378711983560088154239750803537349035070283423517350889381534886372817293834165533055835445256823942303051891255521175486827650886133221071633589921707722114526609240665260264492305806982431844042679579783582551609283040246523428581845720374540737897789979786180180579009825935175015723992444590406056732840128165816199908483281974729283159640149821021618151095300252407271226953926728439712096665201813821962143089789720545389677608391629805852569311950851389264151131224953921752017840922075938093985062781184787646406285721393870539756657767030925030053022461302204093227393963491255643017235236360807076699601286868224950349231983608760919780584266842953210668067889511328397050532424837545546721403509681669483144282692231815703147470176852156718005759125673967988457229048839619145997585270368102435074595029990094324102493737818970275642575407600875588537013441673454455861497898836728065291478392070865090189959309947742444986923526745948057899128034232868017159368271694223700039666236730894705407231009389857561190687139334624948051152611495443371208819706799382667564652218904459544669746954713753183826624347921466724650586905939136598547335012617702607014113794591546834254696563524548343500981096958481191991323022742758572702244370470464413665803392605126994943740602380225661619992335366449312159389272554547255369597536289533017879667844179574297853538262473990737634615419535991688218597561417950967595509116168022993443293531295365421530990278428579503023488689022645550899786226625323338180515144059213727584521215321722089993299184212218054163465777614637889378688685803879328452385390951350548924489120271418100487678768868428228212387228503799518279495595264908243662176970443975028752029355061454695157141184819938299926947437018478957044395662391617808375468649007600370172940115843761412592237460566795143736348519450988859101853660296226210668299394693230720927858276964586740548558363904065214488088226818002415057852903743836014126022876012254536312345404960062753442098036019060443237049994545797682297235099797863438436593216207403158412477892107575374686442179451430350704320791891708254315536860892520182634206456725864813704568320562591782038671811141093425946482688159934297090882997856490197026962532578625837338928755211465291529523683918247460452910194710972484675179153177104097104259910518268539520304289744878391349554947980543388976876106090112798575825073980240911865137171222653996955929253877954855333315507869969643594964229605539468134884245036416894025484737992830203554155653978459691014928198149428959910752989307071317377965664300905553289327994588549850950284644007080706241112418494862133916539297959029131158062514264923394985650739154621700845808120916284537924609624030443114218948985698358239949762635499673659005627824880546112922811671183977198549908295009183673236341667156736650377361061056737332063403410177715559814144656394550604447538215779823278536104712565326761405690441339115296210030702222989203489845948281369398678770779363415632864910236794328437692624022552548328392842615492736782204301768665965365930746241254165608754964908497067499545759985298460945344650446835792542841082131510112938961881927693248231120221756864036707731726487325938077272576650743798183544800139162905157445216386915371613768879264078891644381253089581539609558090983181521395649500355526541811118635730569046931361684921810261207373485062516626873625896376115969793729107031511621422445382850451172374270682693053568648031104008891817274572963359437128249991844891468313131004074851541435190896882353764875480896554449408432067645595533709041759932190996007431454089967656531249566609171679862639011907239936167049017771581006836981063193553563613522749187290893357797646951653930745484252566662895227296365515537656517639786730623586151975310765480540289532531601949395336304927562830700960037825411985561643821347883034995939999815320371904489018486314948455952559263146409710068471713259502647267478001977847611896061825935753950424233795977832748562746151379388667659849662204204370582406208836832264614999774576849343391530101628342373099807709619251009982948420174200692400576186926512032915961194241973580587141742017725523177905799155980685544702998175691236820149021743148908860959473955326805004843786317283255788228027783973963775307044681831745418957729607897287660450576165731690039127804414511168095180765758455897687743007250305015608713824106966239837615772559788333446260389735144551194566097856159222619045281993121036130544888850748533209105902290817972040683491743672438537427407555076754103740470470519996488106893988963679893402926779777315510136748292964498716616387480928391333727613516511458687653975670170800714203116160576633121381876444223289818335512535646590900478008372238152919598466400554972447258395277820369798167170321756327919408066285581702239995204777287480387161536727459448442509762680258106041535327214632697312513497219121039425133532472242095253942361432227842877340347922588175651734262339738440446492272637919578131157514237627203984698773116783796765212222546280365874311759355831644675241116934493294688108999510961605213084570721687715849450396639049106141887860856148954550750471455629931627105000620532269066137825781316017603220973433261333991034567108467510498624962642488699169465874363399488868154638948242465984577292633553735556852420099382096738662832127104872725881996505036610995572650123609241043781086883738614012464955179446535377004978611118562176293167638027449612637695085975726247778121052711332364566219200112876185845464416120363602708440087210524126961712756204182189211477418943839212507448032291316566737926226650207942465800405168687099249273393069060646360798873617365864441322829730079901581793477840461467290903920089953743513557150545457465001493281676469801544541444627173505187869563691796834575745981341826378231855942604285683577230974772727095310465725871392788376171498988325165587658459242478209763818343931715246275249033847544355256625769712507232847344158590312425822454135201105768865080501413412277647350979797597165322409320114702032426981288520271353130012171484594553991124856728942246176555811779216453894275972582641573921036716718553318429096852951098778309232081644343337035691135410384601765183315931601762146264393426528312050751636769212945201832547953844492774251628393141343106226795356284876139469403273284444586014152400694986734961594079272858809061960949904448174959103909564433761703907276125412354892775335876415272646526126192989549857858930065881045254576136386486138517438556555308338685607210816131204906145887848650892144421256413442786428159719389978047391109134257790046140655520758094636923303925473166438103154754510983147606737926330885845999568999353851276202586739695128035976057952375907156376600975164048300965313860942704588148212587962879654957903805340177854247259711308541551603503567837780970461451995771047865665783511661730311276567901518165972850520986636796137347177492175264790310493561351654339295597668712467832251955744640272444007155359474048804304065788982945928352532307632627576930665303670890426050955025688528627309916477125616012512925234970728304675990574496468777227069085170298364495254489068034897491392933909636369331527636742699013284766902371352506091776350995292002731244023865757006858780469293597018620342571723772179977093125789699475496105523743724832176529540068144093345882387953940656084217900519955099464578748726508611651485516665622261135808230656113185935758123090731435124996047414425279597354359574378856570913306377601759010157157490619551740940998388274502844305091669547119876233489292751989516078837544062423667004292912251992330172087279616497346882233046859736081564275972335625958254887035338484716664189318473872485695845339136606272315059741608927734938768821670382249825317380542046557829438761966527834167384855716224439462405323266438326536377961771823507569459750423103138290848070089339750740358977330113970497456562209782789816756431729085281442325129945131381329920983439892601873489278892739994343671536564003094063601168102358102060511646184488836555280866265439572865577916493719868641514516664261116535122724396782278955528978764063014169535540654859120299172230842177436210545014476071475600058330214022044195137271228882609806962913480150447375885450575324750279251402851061941914287093134507336790423199888450218824466412490267199774666086468918833734387337497335144015840693004008549890781493464193192460097751739334161380017888359443004786038046374825235310856409598367802175188078401652900630883502414596986630872311085261238505708931003788068325087199867279768495262956883650359670743609352716895125122349956601558456299500231541599105539315180746997839621279353395686142155700423447977269222089468138684489318419154262504409821198761325705465328527695537157420782082354078175035903462010430134986159387812646272750962009925857083492829567970790332465325289206689049063764087436241829439763284627544144883357167770069639466367471860398862788075053410539365200406384307372970511564096399841314435051459484946899992507044444836354985269418541366246616097379154763081470481918007310765539689731840724466167823996718641044946480569623102013135147003272739284086213587006083417239308558779132947952435879189833909533561483821067431049890268359556509392353401539333788301678145208658937272723188794578112686709909491108016192828130703303524780820687044001344046854958188080136806595303293237463476504011920463204562731540166037081435695648333493988584792808470211132901764592133330530980096778425332932212735837577215893864016217901368345444882023496497506785629435246203379531538457462340173890359032774939687844147198184957025212849427638320378720167398909916718917724985900920192030214246493573397230398365110417352778733527631095124650992710118667623539554692566783429394136221716928121159143717386855853984409631021985053790618629812165917024946228153251349408767853192940114553370189242241369551007994010028856078603666746043453656590118761983375709654169884658816846754918144899815282484040063735003947309015844941305847294632029009712335365639096408778574091927109550299652681981479767150215206743081866358869114610816772333138477417708074433283279303532825808874057642839515755856791048739006988848065926839028819778433988669939558066650036824490486884666934262276513630175045822348774690095228540301868104997197326328212569850060274724529767914857676420841256961349265084840795236300841400994212367633572991161913691050780025455347823394988202788101768864502813390202856859126972599856839543990159365234030538827346354126800097285185924007284964690706128142631879645458992663766048427439769100788649351932617465546902567125707865370814068813860587244367746419075848390538678832569432671471062986454254204755506074801888029161552920066319891531957945773273477214975812022453730709392776469844678661783580960787047698418293376308118134867752848112612486402593064704496634807094220104296663754040709636340404817455410880891536467187831977983640996849951650389805873899168181319390054320789631028913388232046260307268390249991322854583613804193446810865918674501358892715568404694072865540886401726893184784714501860380117604550931574048136798023258513596201002070068810852653249151000051456727886861808962487581377647552163976398924881561622659417081146106665646072744668498044426052522804636851043773834785399184804744620318835737108437901882030516095623037578335280017150548691261342926746197516595593226496924022045173580598481046504353473187019615999528239277638114058438415735028254220037867803763085393466530484468108461280119649653140359265924176687880191882252356096667279055875924399802049955390469540917907333623282921659561338713671919571784854447264751582461161121608220632552535539574811239491907977080055351867435082725503419467499187011802283659752233542349669207811280081047966667824818523441274660618920625130919101015888482026053951969439894711895548441586107366790258898741612638693297959237922447608589158095992135723952461923994687823650465896764883667052137155194576002906847524103760645387180490146865124538922972372819826875923731390254431637342915817358546048808767134126047097505431381328118991195760134187889545091844395783645096128280496313025953970498006602276712809536127205652543720418045709969402565206329936420465311999349099261495766939883753463147455929093001269063984253071712863023553747896664603639453734132845027589712104259060427174009223665700657893713650553018587778453891754253151543028835750947685193000377825566600933648482508779760768199662372049766387638985631992100720003474151721375703211133912952407983355924232680111677587187241552829353741946423917448296404338549819202048685814597880693735805572741960307139515943152276365487150482922514045581253293812970267225644349179074560531877646062461313500613224648092931335926366379056886844623491593907009953911828052093623916145953431995773150699039217050325951921320241782503621522257361377451082489605564890402097866814491505081488150019983296575499211151451554027366425864934924114301930078755148355932268605394003602081353485970925801149654213968714040128138987924299507789192344817388231539104117379617054404077042219865132840948934920651343894411168095993753287475595036673571212995962900134686846347787877484062299240326083529798662229832353356661104190733708040289237334415143318464007457016765783370725688178760684007631997290723697308539152704845065598303686071945621892934023531809446634995403272958391058435649685487542623361855343322082521933633876027950702259029069185899906864695622617535870612593631958372152800863964775616329570345552185613467025464216600056930056849030169878244758163240995914072907600096163507820815348734058513665059114508068178367617804243332753749239571295040855080590873111579164335770288383740923440579367884707497712423043388562508100574697765074001', -); -test( - macro, - '717897987691852588770249', - '5678', - '52992561458966917842048333229403244806917799627848421877881735070477262881098520765035249624964340882038688516377409835187369665592703958080735736766945912536313709777389461793817187662953548213601180992839097018162700540199444811234129652849225410276267930982552729151588039493817422762367215695837880393501083343614940195379176805915010804690716402053261575165097342342740863670719437568773682027047862479103787981449864557595411550480691451690239227939258640148661525627569354056573032574365819474479753874049318092332197860174730296445988139873008708564407683788184545625049358109338930604072043506368501486476015294370204931967091112231708457059830732539826223797283205277978138098770871113585235612923319080860928191126542635460138797782729492896291235430456696065935768220494159845006073392139110350323314505384289055017134916876163400462621881373937156047111273516233295024171469513762593244072341275620852077848874899582624269495895402815765777547424606219477655639449216632626280672365511304216574465048481409555551898153578798780997838187598030296504499299634026846370222734083675507056188173301287819190008251323703160735842279757966250463716342218905187576189745969039286653568566712245083192424309450098888181155360995569923237384829100088794333552637537227162177479701619093609870600007097257152299648831715938521942096231520452892461541884420652580871321292450318548928985510277252222535133365388202103209163165539197901552072608710284236732915850819518113234646115533291363606803403675185089565146698511010652775061073223214261491866092146057590474879116664838288380912194992229955697790523281474198511681898554287250127257584177956384808694445714111240128709963424475982531545945446204678284012510035965008794769324049843450109531060002528540713991395046933182699881232634176242677648962206607631738502280973898290005462656772264590786129579181328545465308696435762205327818322165386961509403474972525469518547542068305372202808432048462319049469153118249646785678722142597199696100956128198604501655682922926268156814400446792306656470188135722009834179368221149303323894575881803165080171867765138413350984666824885942458943042705023835971675031330773162756179573615771369921528023990741381103617964140627847781113773752668975380722356219881474606884340999916287255829002765995657643610750292167091336372823055491725335254964911991918866523018470993631691434109295300263601212125887194770564215757107756618621927605011672982388667069376436126257785256735035080395442838012293011886480858182971214107329249888540878170831338663664497081571648293369670697492303978168090750719696674347255594774732019346186950722015778265861706529434650218922964570378758677250144083322218433388621419998372158607084870550629095764769864396578302522198678754554607834625544465903300910375218946617943281021263817868702534903565965515996857490410905151194367951674404671401634726316031502775424938708095480058006939655833612970659151929020021108105677362480187576212239598103259569657352323481949129023622185672875961306339733885857708982104417776147428446169851035372923120375171782152648094932708525562623063044339202972582525453779487351603066880013958145443211731768489287736596200008852460116803737486674746320357688425959700168747470090109849460232048475582033235140686903423628462653109627172118888613705624945389644912331260448674882803772456442287538433120812454253132443354729068891796527676701606716457913622114298779919239138678095658602599035272101050540631199171079787674726148712746094500511958909309383648848324958153313684693020237870128517588375127269029825997693115614438073154312047924340357482412336581044347428383345931096734448615207346214924813291025243318597445591410601657643923497289883965796840775243249869681469920755474682727417587202159996646531840273727959008935890037688256043389201553466973472089962210203795891910446649680901883560841094031991763415446185012636385884139521383390919645656949585657311438685339885917614078799309904047978363483036838818577158746493373606130783588041171423001575976326332942068212106971788178296357879590268289870554895714998398477383074091612380803534549439364991095989289183083877933651758973534265032552397343750530201088858666516716202042806877592785968359618297523122663345711107589355569471982996246008945010788125903082708965247233856493295495884971617005159683177020951059046089360849718770603433176136962787644988761679786793574894146198596283619577589492917433648008790154607904592377489003959969338300144125428308936896784361334723137983098924994947562038207668868190447389976840741447171621269619747614678405424544476952607756858007392925674149003932269670585532289548230838340609191813200074864347826444440499651323577336653937195827618989214774650052553204749548153719625554328240930029474674929792915810450109353297164695948404332144143911830336116561122587580838323433271508758381427202886466864203006769876629040113309536126898286439306875888068434906684986109839807912211044229574073513385256008653277622489509139402265793326372569157760069106457217990235011506430988742050031863394618171218562494463476850191629255740324446363242993320648668718706796758945218459365076583628726166585648610786131608405727805072734696605117814467304269584486848714577856278821187639674139091420868276683680482402061170964129020179849417226407523345979683703744990934601753619379872634811616761518185857620947821097797023780246814812679446740501132957939033231020697754175111520932341860938863741889626558269454453009814222388294592392173794599397585978687451892813356296473121549635013676249164244665043044957101593039072361182135678926932958876432422873012810178205318591023576753916592920079031115341838800740563121977641772239560122596720253059357199257880604788460448454541912874334474110048318114397597184518307140986163690693584548192536813827180198436161154497288570678489493883807773676094581689577716104059811574599177659911227887188217401978474514757553745261264218832355099235158560242297233406180137292308698109610071281861640728221129462482399191931254988997403297870669677165754913546299432301037504530872073067858354779137558761312187986108590108671713663509463849235645441069025317032282653619885664511756487047824929057588473863132476505639554060087119089853326292527491890156165208813193528270287317866931952302862861082174087615226626147432099575255480389022327072418068332438673738233637882790315683455450464590709105784350178739780127964769969011026088597219619472341103459382289201174496483005244865985320414773065969458214373055466663167449827644842719260068316989039810368349530823214414315840300587086860582920441160086337872788129994593466901398749881456816893076117420457023093235142704769500472838381750950452685686468352355934718793080770041896266326591193598230038726258131382339638465090689033062834104050137121528398579502285618016610064410178458485780348478662846002089852720537701136965653853259363332024728436379986256649234691293765971251875100216741285408346246009343410757983483597963489740851123818712786795291798837714819930591978286010640687992692756495314962784887224591285887831740631885066445063662149099404455330521550962587381135521874864351037529468684827186997370955447481995887639571571525702373403403761671748587109161571183805369675426792116895119621582920253789699657615500011890976403807282199844302806272514657032217062946033211042074109494896045803992953473587506222506781346147810525891832442558813747914920938494195556975736956239077078403047716108873401240720217398379985768790248880164667538691286461771920136462983631359473029704858507306794650707316446091278308009089124701630706210560168792994743974642056525288870381921514176601924996181921908722977903765494032218635205563065562888264623205077967964252752702442201464476030020851153648989654374063092609825139716406169830702732441666788603492696815334157061439959989046789065423318960712201089688946540796678378497252260148940700296093007934347669870770800342086190913566676064617891161093655936605836899446861184700094847166382869925437304928565010472625277681782787551544062045311275114543518096882812611825710549053207666530027825046311534181156975603474991929909024388711945463808425263464957653237271591373069179547100808683091655216330416092310214397175383390044315163696300849781070219134615015219064302516596226701912265613020932966925428815092790344445459519486710818501491744578229686083894654498423852571127489975219254353172438337650602238280223597768220243105815348527252142824365262184240072688609964102457657199429178311502128276669149947703560777240739423309436247534508874804401314162274740915591635435183346939875420896409168143366133287003880010386186641170364265028042141513465453408101841921842528837600797310807883817569665409313593668849776576983790985321325237847569765650823790815463692017963395752927945155773792906513914253930342695948572439951274479143533256050317996678589637630517043566370062714774155238038673228364852986154012293796986173903941816772421914136811088242656279247112124439226958945034478877984596864873339798554814421219750181744221681578059062457004925780474249073437168128231790400216332672320703915847426463055894401088311795843457416623717000078714687159781995749578194250354449880164141903126715398601118555657753088212238422071158309996360998060316430904776007237664213238747361809842176066931627956726802459178808505394046664002938285314488362839317461527679372532822934704704470253690263875879702240062788026418261529389183596155698524599722228817999108140672748144745689714554812265041175714545225389990781353970530998752805250297945973556929670870774946985404265424068777800150897438843100570165412465536409965604362377295700424297999045416603027704210682281919437502308628718607989662408388051610908664802514940396058178295301888644151245892936386802507105326053427738255325180381762764389027620113283759653480743839809992357496074117200755535328327778239627950809058337055235742086687019858930046083297050726069315089882694837254737886800564117843966144822575643639731768343937069600705061564770014386059309401600994691145418984296800446891914436526504588487235668560512126375658106759961423238985938919327850368124270203404746108520903433047821070462173699752058768991623911437121303926263567247275258743101051399711951304774969904872170431870967998534905416515742768485058006433022048620528364549739197129869684349063800961670793383545725472346808561542828191153302612521938569967207547584404136442698715207952729855421979521420559878331433668100753209636435675712543276009510142074799136997641192447567079334735530723873493925022491212344710076896739154338361999719913499831623432329457641993249784570344228676317925346610689759322653659928903365020471696174639950909615303515965200146660518282411647170608800939660621685552950249611706475325198479518423077155301209371280575534360462938867984963297040183736104969929190183531952577283379234782953108926401989267488044466794228043770347285979888837421775091151607628072534183685174245345816369526145717126891495096063726823540297588186575358585981265343937095373338996442251138594460569709569806492449609367188654079820152455364920624125030761646597005088999711445807387895998396475835641806955712083403146532371590752368935420985233735695950492134965346564198873831201899225738635547303457400703163201429850285547082772143821844313238723456259228759115534200528631507109400219431734564426566942208047195491924187286616903223592310617985108600082628611087567285767001840566153820546701939593194433998024938689773662808625697973543664837705457336677737765607746286815865891347597385126417092248398027369133671804532615511954414419259304523253807140857494548560843072982788068686101289767274829556337961469578050554176149354133487258534215364379154660461310427570189912699705529950514413147328168458631103249872388038937376864265012237965847164952284836681545396080247290559401291604967701175723121502236181093388323626875423056619719092568232717945805103108385877791944344245670750247392343384296108323807858305055418400741553693700502565024106126585636797090774279356316370509236531508263353733878156923208632989404619022265962263865918260332262005803614050713268964027332085964017902372988449905870060050221522451244273428597501098201640739856281753377806262510621286335117441922221183997764738785835690806964058090618523209727153455617620262903964419882379089412045613968114570967614290250244897455062121766814873521607883867929237291112681395681208806316115052463955424369530957702703335301336133507196464013784297392355963686577412082487656646900727164897539211910515592015131790757084187802478999731058868779493827694303480414208944059771372285831516411891131036856120211199256880755033121745020506905940385581282403448035169726911436826243069847201133079363947969342361067328363441956715292529385906162072082866885762473853872136917177105248829462003088491198093528321254844293731158494353309329359943621539173472646030822664165537362617032785562181639419716789150739604369299294852110605262082459555983084488041202822751327819978152651961662242916641572040409255879415966668785223872853617095739101441693844227787889967257101619837706529517298805962370005920305999407921230127760675120172113782634335023130691310728800481538764425860624015422603351785485421993634219805565282967254634644843789616543323341653341146495092459321686531162492849751882105121323719768549112911144880654693888232614646653956763580397332567522797083319499426431434148243989859609258432804222067142397999063441042035277929314828603521084355742771233471852499158339778603981017500121847933601889420815095445410655577708991650898864592139988828909325847690688265292963327637387564935819554712076627813142907683346250203958929989323689935059457421263112380235019472983111424135581186825910973214910699149667710959563181536691099143613233601161732666745012245211307688622118221683809456064734882630698593204467656990257941572412614139802715394281994293120883156362501711873082011731962032490574884682131178885924065895059613017568119400856466320056952350332528728576467215637026738604714597593759418177681274482897193349099377791845071840865476390482509958300517175834887188010180465835340333367167368967646066303894894949259012937252758312734808329709232360933894530979086189948266744307651572635781288044544893571461370440118431167905294073527312254045244808871450613885567599305888413740007585647252065620950569327491405356998305146429471623136661921767554001049077582559141269075807726942292324962879195004849835063558899374919319497877100701211206496709025329275359077524423372451805882088092879051313263439053059246113586757853983808973560033255079821096458791208111949975520419973969738539460358523519982416915144979569986992658895580772468544281855421641228395656106360926287526507440986113241371749929933626943002948875469110027470912266294656790428857661799285796092963253692751518091473958954584426686863281912392953724819538676197544419608647219428371546066604565530829571887668487791705473466987941636508397417037367030291035726974209122929822977256282776129310660064280234827050717329256768834139633843952427070535536323343517859928713869623513480175609016408364304241592622958594443056559986989106563619631715224662514109451710877519669377700137922914878226108875076080968720985553774478319079858681651339801277697214672775772710298769965771899451131005224958432124257866462047576738776398467445567954900257927297206412032651048753538257470550748950042956467383856098326990699095531754983730997777376855850204059808381527746257418211558497066091371508074576455448794073221457106194028764995140574406949894779285509688637508122002763143590113564857465357157613251821223444359965532981305922833468097064802147367022534931051008695237039566704201353988540866088741667038552935423161581934287462404348346959712557410094417500120546248110357270320222372208679677188804508939856387875484398668973720610306440393165985553874361652311139176073072642232364301455756578533325673397255829115802632064375030488532724282480941523096056375612516691335273199076868478063949077979981834693199226789642526467313758886727034664155374708233413052241176017997770755357925454917422006910044558649830410441042783912087181440912216816911418077643846400706686847762348581058766312240711484387486718123588654129529313123730637305855816034535443508751239517641963906747738873083589048844951039924094554710311263734798500241327075231542378920749258310205825922008644493121370590192760015148501273427214461014155067372554805948839297269789248975606338557054691632614937241901458805041012227038978979812168094150773239740200926858206670986309560725257896194349092782159293694188307081347049188661030610107456715733073715420873434056971119630761658470234370438116245797515154771525887334083368102698399109278569996061959700658346646955565093203139925211068688479012109279872461395639869548120204532938913593022473786111209373901721432107297071448742770742412159279076830118439645403061943303917551223288001014702113659615663577592748103708841776873178445568235386839518530066675979433748005530615064885650866749177914061788524262808081456736332733040493983863214714692393115801670972860894965741349096171975727706157112301169070137414347667759125039407153467452265210719726714985635420293189470049637210766042254751512445609291095350283495503549502917353512206358756772848829158151755615008365723008445582823523075844725615067686956618810366284960890688672135540705475984841760373827462101875128799270857413282580082072800739904057148821354442778410810970050701431502851594089320392059591004827037030949407048303186582849254894900004175510461919883551638536839489510245449220044773071872011316439740663014720019722095387628672305811492191697738078092246616407460689410223935009608878423391167281114435298028095665936771603627090834937282850979762786426899134362341889415374040340896380252725754909908018401107333556100522040895675585460969780799009744922983914153517048037312468584877909733205649413029335540211297879068656419387807383048842494215387689331649844934805491180381285929557990551329032335758734597115389529509449814729908343459195813101027114347572133759851590325554983005153111501432758813072569701126690781490951740575825405497526335840722010023321789428374242548378889836216282253171286247053640123351326348638420215428018887341486150219038345363430704186782773219435948195386840643853198799818242098668338179745226151996534978279230096399308636037991368814207217507069935928147009785676785160027497317009001777550195024132691150567507011354412329032340603521157466518995650811670602491853174280204852628446269615787322879786482369408633164257134657023953228812362587592950746528121453810577970418765900895068401958324820738606431245080063027400254319882177028368653741793457795068935169938691425211024828792631933230877447721276360612404169065676636411366175986321744222814400246758586497722397143948714428396712767471630538898122410697568130170950184011778819880862316215372642601335542980464853249009026580690749759635033913834129498173805649521698922073038683841857811453879318495594875910979538327284780569733959417673964124812143583018523970514641401891081019284489763221082086325354879697385907787761049442665031058490028534622149846137905767487116029644971254430227080575349336243717394801443483839458265798732710051462772605466482812641037899172879970734427748668316293777647496909333662168116654868712457269032630974156741200422999141171874097340818602076458352626593605494845936264195396202806647904404677157734745652872270210704027405978135714048673747336292778720101960923698684395527092073172044177213818544969591585627238532808299570223371536372799012875224234778370905326852914976423861886454350497565400489482872955448045615907842220173649212448684979945647349079756570932865476086046458864652043811750235877344393220429343034415180297212581588145608747445493372426999318493938150343775786331056194752510426503166230913186538526760445807413799806204051029905931303093836872257279463684631738363832006044614840509662858475110814261755496445327276173263161251358809092006580985277059802629992110919876640778599238851224190806234298093499859897877945279235571464696627205637879325947667945367188005248720580469836926696939939415121732586533901411675573681854304269524168392617282088535658385037701299391440541334384518081022468387518749703363096233963804922423094068395126707285054702218861778016173542392815212283678372323848563282862826760297013819812339131493327915541965803998097384090951244169643369018641096219195430772492922432677413755019687006516340030964660067215342977430274756427296622985672207880091256161463966745535322513359262081324439248033434926360421216544044746832762555450035219016309931057323669695525075977196214861598745789848117118689974917406963326147153664733948922010644259043986576126492884735748201429479293157327397169116086340829373474447532461009810536262731597451754627874681161347317493618449699664690398390949643587566379695090443777568885944452505841199312483422475407319328641366974092114345516068535284073079980141067468263817385977308228962318323609469322490263507101669512786080642752319574742157425134152748843756299008728152305538809501024125010339213159780735824709099108882350824446352596024291069384003047531175618027373859127640704478972526885889432610483189753615050833681837753536005311543749368107499347315534545941713644730273702333948596900145557971505509367959108594407502948243020888234056853650963187076323765146652614211207546354464881645918117204811380635728429776867963381852884230518246631190131825530206787122927542913920281579736988824992521073962274953252144927376468933425658712672597384028057932228407070530265731165980966598601076506604289064934821557949717410539761505040873308406110474412692271216992858783788017692940669126619626790274625702146919817133167454141020585503777417647004018422961010432475942591656281157554753543866527442721860074055221343919493702427083052905183704806054896861313080853192781874338774353472175893928663360488609634784890485560515252214309637081204987618424027884591397424067625820413547165571090593288097729180898304860943714385424978418160835850877717027658521907629768814727424695191227358428401962885565649381238098204936255938797308193040643227676416950981533713051600283871175312807406414172316740879617172963584690587789848239482341701897688268557616992035582225306531638164023604262595670103263609695362798739463036593927714273709560324792380672245014432684528132529510597382659551239028729153767533108869546101650464606517031212471681999067256252173869702628620955732415793090541749027540473718940312552425322149119344958406002437705982398992267252296771928467559404038212669370252790729353944780711661881552113249584403769083480856475063987837244029373948596829428019040641426569984762280646821052726889241697080032561970596779105934595957656757479131467410030344286211442477923310898646446342650046369081113562118381113974544065289731235914381813526415129034466320886690781519982064571162447720218016309577515552126698701486349767343461948090842618080712299219097673966015228424172663889427342731020122066675346414052340618598182609249461329861211149036514914521730088889300616712047373574894553971526437268977130623792336839865094059220733603108966045443149552683777916379609517221061627320405151444134819286421255392382822364134687682168786843209394288411699746863444889434411414485519234492407599434325668997799101520066221602884158226756336984242409440361323534712903377984364440121709955882861088033253565408769726596294534478786779815095706073686709431442168829090896416212535563746063403950198043478906364003836786350526095004964058916984298874819382063723661497266846181942426357905013650755458667314604787157987764491101741899567408074361392569794087507924311908229702294763769391197478812554522186741135262551897352184690374471893073000220162512552332060179402611785987981834888043869118074160633762440696320006275857520907876405364367283599977809702429809327633774811777287837997929063319088643981288504577794563897734368357724456507233435413578168544122187905557510349163877892031860938380863700212457499941173051991635044055263541028899765559085615828388330183855986870987907204189354310066588413218192874980402116441641033329112521433352585269389744561428992772734752313702102338324264613628379476243754122969786509425444725576325781027140066964089023790292891876331352393285001370386695304261889280274262043056322796927733119572711356326685350484589411334123538058781520196877872573359539914258371620972518600167848136853804940166949001046871343046124149316149555200621260500187812862150026333455832936133319251080100944562462138196424435420637124060278270301200807655723626316279314677989720701526760643271100348145148124820564605091911779855169535418882307665289900355017573800822546237397396616805582194694056466899912723329771183008166619132092740342879643527581402206500436271851742975104495236263710329645094452343102310844177958838929699065716898974352408381283451421410089914102753296005962431058406067303947323833242313152680641247938380343115958860199956778403253209323348645070739497071952928327376353617380302386451510499726403590049039220125741769453186556766459550919922603305625386150812873799214104365798370292908598658060494523919882837028108696230018764525326479800889430827403509641329404504108584175416299778457550149516420306914056180810908889377149438217925739822836731498632998974190671944437651733816831832102819701452336948218481443109835371939006988086201718924066189320116586181314358289815550824203560990687366887222969587068618783822844334383574224286655847585666103020816988760101669647856537819653647348642372860462072094399934119806713804526340303858796726062832597308487962786568628209393365116177313500258916696602298504935899488231886983956122931761650910471751605728341369214793135444893690581825560582275170663803345907902656817500959962305071703161844221586272436733043463590790972533783408461905472360665984339275927320721268991984362793905235237928358401214308908599626975869024433459897721710178957512745942114341723971665941816834394308329806825884356070709685761638881841811423881417063972638317949761209293108884169157244310554120522091867059525129565074635172821024753666469843554970503238670636464476697226613787178875812109508162171406085559173637604564435642338746751084270357452547638347056148137732031656248286326291618903398185758507933313960978162364875292581607458217158798787916676003226916398811579605403809873107421485543087852003080885632791018542669430381491298441535109732809291308440227122322919323520142248717203062944396531767516101348669545805257723994808980312479264837725492136882355862941108451810186385271944727323937476421051113190387402775727960536639091788137833258176311969569961943551611853786770670960071652604792541940305956411115347733415222667549394453865233071674925052111317188727005402659672862870124353044134138940763586559553241714723475928344653659170671048092842027797901483049343811224941954463977298856433740106969036666079845988063391903825032855950193013788243789490182350376071702678007109765795706678377357340602031572982332824123773826221420577356000773691991307382149359100536109508425616929397580550980381697733400694828091467008203408893560621735626409474184799062207420684997475127497499271462600004670205579497645152495972389782480775949584706612600406180867943792941868858006175201936307008047616757589672523735789473093905193759863364945186628110590148829061593580057092925835363208545182849585868221368570360897560213869098865474255930740671657540215219483723251702391679084671148858456387364281103663462079699683913175189821329916045361853985054542513239589981629807348515391518514157410480876717317086568995965776721883816029400496479881361209069153709752129572198334892249502748191465310837081561861610032985534309285339681126580547626611304860810381677502832262489332934346926301205586228829998320869739620904253982155600321208706995102261899336727019317570934776614228279624359270351092121785581627705454815208145814747270980169200427592287264446298455337451867154675225312599671885696403119745068812877999940157697775260282173718338630223097905166067171605705202669147542203111329964484204150252769374041699642264247344682780556183768647043088086067328086717187740722470761010716276890826844033820289730485347275758989422619495961781370981845507287224106646612891699787304991489991450237892608587094959507431025121524157532996055387813931382902218941327406937104535120623519125622928074921413343511233341463048114587623180196119633871033128642353961758736942162376474650866446500486254254052378915783117942846877531394483736296707763850427149576406806692201719207270711640436539293214966734241103817572475879693972994529271225318511005262619518630808170022848370992692989178376091827819432746605823278836088860098280229785555789098175025591438486997677754831517943543494195444780421155712600231315338591816992539029327290383750279259408507030866894281949592643856951856970260492648859191372445722757560829643128598473999963495915365217562729260899176033339914368657427490270587754614627221314473523385599772728811860813438436363568535104917622395452899623639754284218650275206353695145264760567105459178562491882032831507849731082780751290549815090526014153248389638366562779197588704003763886554458980922773564631738946671358670002437792609926532640853858166371833689910006342371227521888985462256616595134913448753896321572610914451983732905554764025205460856114907835462908762361867725808829101494129427887010484807824575634192790958596192835856035642229775443466803753619433447559913956011510527564464490362903893004175699539657818550413774129471722988670400259357614877806334270973688298172787849219764510531270431348031231230366988119457069574129982095326123736732280724513806554712464556176030636815599985296475879329526942793809334154537286409720616279737748877805830625972559290659320870467177007699656878854930950374408662534796671508779289654115928497876570228294960433889385643701335793908755514074473749964759488535101951927148371376246782141759279753146527867175256859600371220723263087493647651934107824747038684956089218459994098442077055339542213286639575013424597339692639209982667429839922996745194919443742101455841754629560994904267305390310619195510596711795233359996984129886409644969307626193230100243445176341224116774838302230433293550887983785529668376917774923810049977020766265752226119147869678480128953266773825987624533026602499804124858105127910152228288680919984865137490347059505127939634012785058380116016158201512139929087364709693014634031763687342662706605079791983804043837557045973734575431521833043317763655587404678815578341748648519218701877257148921016285162472607623283323249556573753034374795565710904057626708068152251494257423269988884212986826103841847235290434753139713588793284927733100788323782464581521308771041340355123219181562733669769963813626654980259896667571531426558561083021853772568029181635433012078770849834446674149991209906653073314199262005928322117392615818629566430413616987317922057832297584265671398209566291140412705971275976266486649851786135002249020062965980087138574535447132363958635609925366757622786251073626356537120620726163351028366500669047752276806994698670175421508941444055686927449826465211114309355867990655881671257209904683585254426503206543491199687267119577128778582396178926678946290201534745035364519018795390246746811766723584255073984715970376061829082762752016704470773798620997166862372135899943680412430608608549449361762094538339329299440793971638832722944360033468293012144165093312313114839006029476318874961592758500904627465226488109581697907382066846687530136534632837946481815741937620620154295350284380932563345904144633726510177800611951790431250878298814044606538474701064227373555412349001233072133083235347487459787376279403703807888154514448002202951245397248869293062600560134295500105008538576207064629412523316530627112626565186270777090318018659291403078286535004079092813364057772695524445708298445548622123608796436695854008220295952906804796979613002284502190226292523908476214322919392774132723010892233879221455324852691358984021386299602980995708394090452538155116048679915227979809152112372669411580872195011069091512211098837265014358497390191374862378298332979828589280675262431318918898318225215446376722107524363251975033827569456312898080064881381141772242054225493451609900958323016634712370823083984626439009976816172490877077263224311036942854664827302424290250141379316709351675690520061130683735321311996496187247021962293994184343787870574057794627801215642399757391689423643087425702078241032082171429850853657783936393491748921202257137973536585938902448803265913705675751505623829853836767351048275120136814974429359820277661179090491547020218952518317240856799497902090061811729297871492235273099451994560780849999017077268810932708025581118347013333023449244901948116998051103180964193421409328454794534892399934923614215588057091032039363419930676743779898364001040849687155406279816603303339546771517073573996877517822995705129876831722490952428194724842099930819145094619254525540759400392691443317175946185255495513754986746278892496030387565394365588879946177842768690923727638413659745835806393996818031833024802300235446835796085570745553032228525815450531967652475109305456596317989530038989405999117072923810555284059845086948523349452739911967441605727895585516463617479813514316281381343200540684480647554584918667587044879862223471871709991329936110666394849738825285286263958437079344497666129723469849274424451217808101012327262154782486868475696579972204483320055712556519479118501769492253109282648803982799956007070413969057766641895108542980107519788443327966941933926975271423626274088356029953637857404994029785121788713172223066847502903458085949291823486875993171596694026412513484348659991282842807440540512919421580435830982886747148859097314781713081716943137837514388166635564093209988083853631966764152001236937201021272205337526464980001923248970935051413391014325982735295720169702781387326630373314301750994939700432204266441734849243617137063200743900861763556953331088533375662647974513214949950360582587461449318953013746171392411021921268719401083870455409243782703438717812520258803044022398736843362885510789738025682748439023460396397947226212022325837892155810227799539254487217780142395057860256227526753652355653439544898392544874518721260751136602267606533517775781758994893256983747903520154900084664232199826595227499066488170533660614570516974168882282194703476740231831764399346962406995812197194307712384356275327126581811963829857081764545583491933201665655011341750864389214260118093942175688349922926371415338795911538883608650663492494285079393689588623801351274317524162255546872032205137602055977698588526953067919577657802157230724010580762546282119676770146073279290190567417587379003247680752947289021207629278566655115192835788767007491592173561216460960732338187214850961468821550647703718319006714895171928841330718580062654702438419600965779600185378625085906358134551760230035403561105143710833508540322391028617424456041890440768192600260326521458091222064446938238524580192166531189004653013760970323476986163112729146041847368155310536930201842388100514907989986285028152232579121250243087183900990150304104081116859121286448239243348357354426439332087091013606470363706785376906184268755539296047766065167508797445567080041967876599818349026917276210630616917313061541554664359090008971749776374922888008224470479856127371383520079697079481864438879042548335953589849253380664920899400066389165030020576281747877494368823642902286149859757979430259416772186621524014692936483589683321666232231917198657382422968512537393374246432506459315712945887280161525313402564412785562279688402776014658097920177207595566191984505720566032171980817248093432499471573407422741267535537792190907867772310470192246974486242409294991646564339659296311172821487691415387361518368358002232126427175348186260983285915013630462489800994709039714768490653776139921591148425560513222581914691269099627882433950238366744049435126864696551517102338574990439051014288641107331775276925590557112123848552944123712559927798767656060604001870745831020943534367217710806627918743824819528778901432361132400874522503036881964803363227725213671319249255588338379558944373081448848288914340029381563870874199421074704225053940653263054076372331153673021564933861085136777463657122583608153245145603654759564012552343708794221112376282396672216677067893583529685387362866085958575144207549201885063634649664356022770450599025073193635589697904649689742659731140870664049705909529992131119908451169523625982480852065130458048303330783267873632661502527296193654564481985949017941867590637521370248661759842942985486580506523527905415291993129997589693562083571993824525692390012764335534053818968643292421277387911598443675823895632044862101929611888494601135784807263444029447043613253239718910969875605613576775133853633741165480175557199106843404370509722920321859723309901527892004815816154454240322704330590162893392597841258761159890728628197646144967822207646701728736399384331473403587477868423279416635027533248541770967263778198842567490190381802603584303232553124123738656775047738687142923133780711030685516297965124193566037052352262354539607323266508361484876586175823446779222126520889533051136757982925713629289751952089225590370193731715841445105382621870755409206256938181565226769507387707852521144122034388075830457994525416533663962455970297774911851804521911035459353309532169948020448427333167113803415885128164774439258952605402088109777145211067039266101515402978544740570697381766558881546774239387495303310021282368800400514079555621371851412626774730245176141487171901398964327496365698995566554278753549639947813610318041843322486236707793661756645237618569985152051174050866426218945874684052954853332216442206370490833124972712199887443585954028942543566576436008194402325554516608853398435525073932650524074286205850550540531543625550602818516054893310255606074691613285654709269754001340023163558376144694499945698271995324998769772391227717778525548481765287382012664202138451078614644891981447633443984616961062704113987629899385435093671888725031427992000013446048294556079409188916356329263861385119483041778470111323934672117382552154014552689712635622044067335585091419078549572685722517799853945139066113116557823200991839478980485148139756437276310315585052962711094520823502876017799162004452308825294752903780143322159163359216776682795639765675024359141047188281889450388835463485151185055730257857244956639772765885901407478608833348764219975332660938410968229409406088016572970425472041832771272378171279797797035736576275270098485254500981153781872753941048954786738308270916748413503252625251966120660459010356765817802826429045068657112315950170987790686087303575594630278186797170965451147353365942405760693758157024450678772714436915222715682621542648328393696771847903632197735143219253117775874065572827559278669061592703292357856712182245702829796197056320474383079124060345835424419150979181507698302000007069045583234865337926621992623375749971204642446990777626632490383499047710478578862245179305716165431024544308084192556089479503354600043311566543487429471050399741986074927517309966574629189828300270254631391989455006206141157242311958987861149970781306061082396476609746044799676946433313570016028171027821734752039087742788832856846639871795304172840764319177762201671679871703331176399614205812745806594113056822213610394374595550171039503669220580872124167464169590577829197969856928840564473147431728291951743418213909020891248139717532829309139307324676418134145138999363155157666822088563424974605011214474234561958644068385566981590500191642959522021800166068563481044756233678800379514457696678176805627254751999892080533501886765304008355851853948156310423934798610892860385518158372125742586604990037334390212148772332920836540413171820995316460503362722328438872099507648776358269375088834055987113695732969353422819649914493670628253189886707685826733188098490064699162769196462197178091601033240633742092060902726567598519786428036312494443148817711021658763571536644924743944370048324568741512735789195923635121797799038653592749525637165000255493407622344594232313502271601912269778165783446812278845417457586538145675618091493526724848167114864548061108275777820993568273138069570417876796279053044809083376787522011494624546074909061660691640637286419682093499212330107661282280374851441004473097968359669954161836104289719705649964194654369452812111646977860340985060266188051868138264924697766217093257796481229661635130361603763575209317631745373236794727193007345895568742625048392643535752017720886976385547006530147162370985119567662827452345951611661122285345274467812187128152772828198044470287829483436630828621443834283933061869973426636841662503174938088958731532564136006533111241497517080811026547277241069801619368046197038254330917315025484354794049944205979487352155731523443985515670321446995279071915493012622438463701624086676046991036641665468428667863243481438144104997475129384407937791753089800722213988580814506420181828434464111345849729424096408245260118164415180606108341818909452188841412079787980645835501934806620697807291698253154706727593807361760609508840206608172948784237440941360116633737918646533724288158512019153861656684310632599855068395383404299612799388078946939439804726113661786432879308541638420957312446608450673637732399682300434221464859925923221506390466698969039225502809581860888180763430173987356554433665298962587119505406649522644887130093859157162141940270620429317071422670076888270015287432039353142292463201458311748039953024013036300157681289307831534247803967378524151269240623018079511894898426335179627535676928729840275620799295814291986056942345428344453545269535794124327345707388409443474582974771283667398460633838739913858003572434702047552352950879994724952355013458855725485470732726133558254542140241633844025957105365419313572521406256164016462372080325523482769734126885228449084718164714605387688663314237773503394896942177771487500288657934065953470677148012467516329412866843212947650541393396631386347555804426102036080289255754843634434329602817459750576423199736486570021428392611373877893467131270574799604435726228651959220155729187266319233386485777943988660811844393451428256717646755716254300083904773522205309371240685190676214538753207966844645134821197918259003182495235479846985293701759492154378658914612708682142567444147095497018617281359110902117920725531122469148975703268958203323016883831569236133529003603833362202853118400173131984771412931859271574480640448580883928197270433178482028973090531595725903261739123015610187695736065475604480716148290769317072346477291109395091443012208320879788331725598789382708448112357055474285327626461197894056314208119696290296871946392825764203702558293596084592330063422640815063526516709219894586212199245909945107086110527318146202939164664570138496089256131319667582023030903220338472809679989900075966190134720802260549733743988009810716784814967132808315697037229066016638783617803049541403814297797063504097571959601223859618220236460435365468876273616964977582199141192717139286886479366882946601855885523540939542911001721165181303035250295757804176416487538695267810352135675174637329741832437202038317518501153696331084859275436546896784758870744418504221637131581695470043451607111498383586197039434557677809493753161844551986777183528706928317708570047213682844575429346154967850073774018951110599706445779164048664056208523721691779348621942136050587382152008824636852587867072370504325971481960878918898595254980293982721591693440821999279481942233518649498707717083882102011010920568111932250810913249902342481472764561569756057047564387676395955386968088987048250789547613391325196480282398866643140635374540815498886375692701566620478926327386180090314769809070586546850483645016414930149011180928072625396135675547919261758488905962683028189154974348858839670607559911538799594215181566419664461648293512903197378392772465968575275924040207070331647259700136865792916743805636460060225022009555911506758744722703329764833376608884035244776681807079272059851958248969103955274321981361055653095030882610383596652083951976626946931369787729556364440715932097751242497500001584071338920490837692185167860605115070019549822090122604643634410262326319800746320962802835287034390354111115865790874939042813949509988832911268012219132145696181195882383952958868481795589403551825711445660055304159790661413008365913113607195310961659663716376009165695349750905934408643499052196577976419823962941950712959992212234788580725813670158180525202141811656107580848620353789727923453309609949287741837902512599149154339176262431563817727378679677652789586189907215092360394745291315315178280769752824178866136127120364844360843686570666924377391665188451950415163418019008550860833335991205615992745172384110734413150392823334652249716284396986055940980014856009188306532585605420519999060408247632994088479770891700298117903439944095625163759805013608980060771557434355471774895250923968185127614872473437277089861855286234820208542123288985527978805250685814884921559427896393702833660533784695823628880970072319349073259978716833968468179590572694799891627034479004070759376277217793391752209577997711609243576249426419043330333248714674522314937604818018967788378992728856961524893134453753720792091904689980700491208047979392621587263636601034393317517058140153695430456108047489091988799433658727319727603208464797159018320689274278962431580710268611873345082042650017311093587316737506047072564104601699540422208265285367519250051097876841814985282642872180071842394128862870024131550427158424470800953331106953095712690997421000768047945089087663231635404628237322206056194051230418812268915485268026095537420507465353167347945777910402999486556725081524841236691353551068809229611287678981310879402131425967814033549233559647486789458759659524816156257785428046357885788728798334726449873717622126595441912361442030013584241365584775303418366701542287195829230746483209292971621640713714120962019145289378780969314257595128370406067557489678645404458053687082712789287239312499629853769537574070273969474157449684007131644293612697622540605642045541405898737405461999281923424705046372116343888909788638977762339671372562117660223660695670784812600612056762192717861277640703396725012445752647660972755926419081291679166524667260979795012933256505922882790031660146080407763031478392867425713264775858816101821915969759500481246145397674060323709892952582602767900235601067846724543572473980966420366855192885879180614548283832841466665075996354149725301338358519169323717267254062579184541615446217563552842801325876467818631048968727579042055430766829056006240108948018339677305715364169866474021158726443045415282083577876330771922441471903310208177751083536690365995902758865071635759854772834694926455251271950341529608500788151798625090215572084029028380951507817448298079939298183520695590038747651635996543349440728664825713158380373219558529466057128032322906043454271320772921500287417319365976168419625624605115776262120980985923226829065963505843252914585540909170419599634277050723038933433924966297553342377580579351310874515911272119419209407790850494402102776888845698141493104421164929231199034729805606023201679897060290278578720809957791951623105561111133441647850732477421840889254450727982538571816636875200828789909673369478549612505123453026030215697838939324904100215648041600048460039211128583146953718878628701163065895128903772760366897751078368367149449860760323482919313636639333077112532263506484449628903562140910917184883359776685061477491947729628529940226933346422619715834114167408979784271108750432262839890447106483996662801874672678069833459187503127812301867619501888954744651596042888493821496812330875953213277829557379428092928030401078060596211030759341486094758152719531736557706698181800703577011933959623488542790769609795754171725493159747905511760096118476672312212214368328427513637719899441014615290328882809796585736312071114005119700172543463579423776006423420286785176042602478265390069956838609562249314263338461011350408175605961013927967017552360420813070363697740897703263694257754856012654337464403965817533944829983303847137943128996206061949794495555772350381966455640399658960314931510072397034602157188468414498235332005390066923861865352437171408532901795023023963305004538478595986842966576827375616876814560462321033161451137536544148847560393613737181536328819284288283654494839769934062928897803037442335381073377792138665249528844845017487627988924712134129833878665284628767176241405461020337739105966169340002371434437030992017569093264600981712234552096820682678182956004241998659956895146005707847390853503811705773368682511571235504699508351848211408274201762880277944793124322084314104623005572039931534794296111644783972369615224022661119722029047041665683970708585749056976393919847203913389066146411665473936057926195115695695372679013803092665461271109469924054694941918792327473598367085225448873229547450901639248463592556312744455603370397515050475356724383915330376573631292372402745732770801947701519132781347983632063172159675682339097266427478373480515275484903594400622175573994679551026905871042323165045382475029142779227145853127831067763040180729594761438319420585431546444900131105212053283280444109163920317054623845778114784577652681377523891236283117469043861099922393013973145606449737426020400959335723260763918132824769576181564972959353534565137763089779652100094511330446364797507184259503543793453450700361208294282937345258864388186370815590043966329954654849125677177327740604000767897331162108194915690616287252972595860248117617268977717440000074061968313794506703892623292525804480259861766805425912512279877433662083855611776315705013366749522257941448775139795054547860959739810400803175328510521654357751870807142781191563107709530016678215888193691287437297082541468231278653445347712336543897189813930534546163421054102145489580924669226658179842336331091598641340097439471837720432580138626610040040257095582924562504785423881749020155620716033485839761416339278967015865325282388487004257267088252026526083144317305666263332820011765688760660248950414043569433347527093520428825842731654779513418611057685506312236998762941492403138134130278628895223957785888951153773377278219125362017598290832241727107181732628628969099360075180094934523410329138135442828417419667660450020302725791226991835309309904350519775277169896695751012666612484996123705824658061230636549341946353772353847256502559299230059708672205806258078192365971229407426411100522203370801883360978801045660422495415498395392435169201553938998447359782907217478259097827470124954127685902024144358350312650572612101443964768748398651928890056650901122614041238234484827589365452085753800901291898609505330030279920549391725529609085950104393364051410163218270357861744280293822046879547215661467548620526839159988042187655020925238897459763039384102623956395291728187832665657676191301309167658030267202643710625509623416068746532059528983901144863435882231708345398017370764455523600539902232933592756840568086521273281265548544166869155189217769253547646162274698681904982234866298619169147606728419531849753765787033118972568320216833418202898103877938830638735413399030740564216566952884545843561312568965256410100307415769201396847369236405710036800927520184308720379877462570422389272530968336374888153750668030474213183276584156135282037084306452805350387567036817741427086657772348793596448591205056211475960654991794579079509727749744145381046319701859330950696301434310162412623394533581040768155023230373375367951934091941241165048796250062129299057998101829846308428031549873308933439874652060342146147487112567741122821920746044030465493346166046949934759667809163747600240109859253313224534523318272414115305989077622667597620194386096109434183389241552231538271746064990361981994758480643400109172872094736135632452901332851948137971314553706055023957966448686966821991071157048343122334001260237583112954121317179044296283918200831396802298468845835281830105166394193289527823526663377548771320675672435904302829506965065381751997283437772160841249722003409268884062102256196782344983409233009570294135858257059097270907739258344911489341204245278111169086281184455973633769673687311268585203110806661036758146943995527693971279945008388466314779754691489727612537392064606860749506761615404385929028920080939532208104450150030102765923748624515319131703319720895752546614973524876482149732609293236236247273777247682281412717649106363575287531179493828389605764658808933368078871183171217047349880988574824325448372362610802218446169817070746575905701523040744440387553885188323723297560118413455086687428020491756241547694681510237054642664561138533959873257613324391861408301343062755145453231896143425698238618820153199341060086040582767420305271235520616347786529138839814469999702896131238637423238457679536703133536334614066610801078208632267460386521332681908693272437495162368891180048919544538231408211021882239835055241719820614932102560630354408793308986702893896750522314290296683540293827484505905300023101114992678464105412926567451101220289034894056181353733141385555104182626617264287068129416704930481819217760443171667541407462632641111979636261208100709624085412270249731273141538595684501410362538480004359104643319518414061525957275846423061937152965946901155002156142045064539496986370236697651210737114979925333838233483192299783546734471866931551536263459780264970260754449708918898646840741976940696392398098349093164620481102695289878324157316315265067700879853313949779009728011413535569426979582389581110912157244737931259265697284970217655135182755148621789122423740790275289578800695567912194172232381437001835055296422752802918477505980017007907830328996730968596231403288779932382828401789209564023214626352152557846773852252722874386407429775877571315794193926987712301114758359459503977627104506796335065315210696845619852741005843152072857586021494712277348477454941140247292113886806982524284931523693052325966127425300967746893055139725681250453767381048254515620100529385732505537575705833592952363980135107610728887764666569723973048108451266554589176904835207707227061181003264797909809603964010740136778165330131636080406736628862983444586970582772349185817537741391488455814718914037828201228379025106991928961877954472191162771803243900838963413363540922360099635689809501854005721083471139343422463302132347161478224568573755012232757654186967083217823591384926492065733104917127987001845373958949362819097899361570859947150307057739759117086549735298283819946900303841606500062502318918356952336582639401806122557399912051397857458771314546873219089182093197569434149084560114632323348457092797433851092597638983214843267901257463663134781314617308650305690845449700988250818658679957942716416638441577123155235542071894931406458086716314074927818884112642886658753625509830302008526793083053660843091515069802823880052816971852890353005110913111226709140643938928883849361969638411929899250818485685497351413304912979628343794926690672319498774771835144880126905945243021432825265901074072219675205421551379944471783809347780511228363292693403155051134265892661797569449245517472868660920599174127187787266072773703505077452795402984339284890109683702584921296131737245478223242813633895009345139605954330605487395849639794196025882962585218410041041429164367732771713486946842899444326395469338024741363056416431094423601582895344849458557569072143815600281853202226854482541926313966220609663653863085267317512426610902406967587585145668827935607177770167562516200765317627419446873064701802764040551347065283472151903752719308428159105984289801003877027690073436219093706923712506639592307178568316033439073153303229391098307418523745556949162370839618754825331714657520945252013875481051845919728709239722269244770125576684572285165138692025972298962448488064282487593614865073188125074142887636760634331369470666365999529301391916359895775328977931402715320155854718004339702657310779570651367343411980684708960460486854085813610752944735823372229719711477975083318919444329411604351499806575223073087721623022082458857799250279934773245731569510756715017313617596479814682740942606042680619141077209118785093772744481092324182153082120461148314509548822990848713228383587947163388561905319606931240687609278063872344362746752319253909833481608694446649396658474584472355022720916237042652989203977511744555535046390355716747577476430768291790028136110008828218535184055926064540415942043081374080942301716267577776825913761241698826441242707207132111082549055297779800869982368478064129006255786388275389167279944085935618049212708094398002773133828203282452806125310544290636953095062867364164973356884934487769366520655412414671998178217851002471623636416831521977100539461389358348201695611378431285352130979354332581354421771886107996693593322598686163173091956900566100319732711910014276847848482784607549460708071287982503797286563627735864685203387781411711447488662580506919074616983249559689439820043740266093359451795279470837398893812510457712164918416267341168526716387812302708234976506100956892054099586007977404466522826031043604785853756197203659574797542326864743641930696275983938639039383976918529453645314080185326049716458396631545041942484131324627562348361695524825293457752765911242135039196794110091975825747570795386505568799966389696249682246280342966618524092015699346105263218024163990791087132083482297903130763979613473913387176208922928712094682675515949616267443388284705478374658029384543881572979624256705070684391120324441805258828422852509250787864822604748651961772908816194380783959811159097025994482453404926919796944922483742026319123452985413278017571278566886309150358857124522190490885881345265863704746228263588956571919236644608937090368268874303754973376288862484085353465640115041462926017035394130089878665138771334776409467909158695157752579971217718909443837122861551887220981191484052592382920068292711250569816439601772572259768012623447983369317370268885112258821014795706180517495609583877032038048223764780202857829613900087634097949867241477820722398981112549887784310561560787017925696945478944574899189450789104776948969124427698064774021771308210774498675118083848377140246948789789200127922544042988206918987941080213229730827690255539103739275582043076502307615545309193623059515142968291118529600993950169553663464472074240224949614572614109928901068324130068211147114566598653975234575260644389185930565044366393116001108968881017090742771477265223806396303581603252017467829710954822985343413521574441176308265778385626082663160908651082450850219494390316261203030852320657614703993356424039212793921477017152023812702975090180642248767216176787186820146640075049858959179489141898945811981166766767170808958417303432764811446543595418634015844195047934691554050223561608312574096058566460662719383507164351661101386660993035073313069955716804706013822525515533056761110682353978362144060302654190404145577230935702804278403687876413224776226002198161508963623553291372473425796690649269790459891949449662734434497162619543058824618041217236890350648441493035341339677722497236966734545138008331189365802094164092973437751412787668677178386372246386901815475375282245813809318446288294605920682942075072774629822880638169371477662359989082379276962773285629649665570212988295554230364047191993415244940920604530986966933515031262488004170410349415695604383630856473825495652469190529276541843602095979249080866386859816410557433030131120597006919307418842721380676606492045017393675143982663469887726869561867405220787200566946232894314890798822098147226028444874947376198263353641501588628128443875786381112926797179439990922916825839092357124168749174656866448968685552166470253991097450460836745665776472567072345311249003579071254220431847829346190277916865241513339550320580978949242251407171309508801142462524615167545251923953553812812796260665256935971137006909979688518557390466617284338472954227671934777936276788589891063819758889652011751278052432598139972244722591673113941914651135780718062103411861458368484552768493818792461621795938862063507451763056325760717280557051015665570040719485293645791748867210332743309567807945264041911552088112683723606891810553846521465344581837340337575816983786603970147034983592476490445618714709223745252830335030049582105783537791929412139077666889615999658819848049169039429437562782426105040077835870008683383707489836861848947846519033195580928067520781916779357919581684434751406228043820330757395441949923732785636347709074020264905031104602407841853676929169108066940640934182483936811287487300187931038293402458787582994845693268663457343886526115370317989144981530950100566693608492368194385097064324657539024043053941959974602378726196174219543946708813954653192301733919067704673869912462150060977427632515602398636678171393136327767037299342951693778873671329147637095788215580934326288840911910852018852545035243020530629293621139561443932574144697089598068829122935731776730489045717358325562473156966942186455302127002114022039974608747779644709489115244797796589906384418770997189567851284837589695124739467392960938675720763779185299900011086163519213780957046726615385324925492817408567133339731588076377367093080077926628622522134161015406886491016458182682593162761762379998002418582226999896385410590275161171583552341286538648885208081413890952551752752797152221884999513693097781447598139937479799584372915499176297136232836731630374010313502043942856037083079284572855603421118286922603912225520993199838422159918448395641159089305976756705607255697017154184132277599592427392938983213868915348765539995943077594858133294717775720439621772454892132175003496794944803486399576292334316087142198570183000261767196592083498937714834808242405965785655310308867240264750725084240104837398367051824521123066238391904852929941093000718163245431136851931524669736901982562996216814232339219187517362249544143838108073634560101557169614027499080920897378574498357297870125151949273252611161270439044500436215339165600634590130638837538406159637912104127317075279667888957046588281010056971189276119613442952242095845370940420408785438221448450917300404499485015618821325815982156305406684467854915034867591295681736123801644123903472484880982695945490420745637844789016272486813545684665580677166106400066529378041174791179705123454191196373928042558220338091435619540304355802434014630796745807381153118372758265098581751614693253118459658201085261240929239816470742412216818546733542986999607169421929800394326943465975730067446356260970304813476771890576978631310520918610986809549213489461855270160970352221518582845449240776827108303819094494349973652345765519749649310958102444092065522056161957615174661219101969136249516408701120946402626071662270491861796002047372616649580878748688354792295293871534443385552049753198229230272437336753678022532393043874055184367911111756841551329365459321352608483315813334374337310568596237612671310603149703958105283852010022577250217733701047198419667300512304972779175103484703105288038490648270726239725182927861156936432252693896147533649924016941277794467332256579075124762539427709667169335313670086668318029176967310803557640237231328476703794053310311820101309395685542141383864830782211759227453232247222599993480652705495692598122075926249149059025080339063266945367639035599443590872363729278907201041022180650203892026357573097811468229412919246771523165703253446140387755383761517408100583680263192942088900969832791145099411098175243011028495152388183916902688052544899401372205613020195513891997531637831222041877674524454439472945945212254095374591974227370351556447699278732972179879420749801974327671114047748851166038416940672866245738532130035162815316105688928284265191769628703870398388478524535797061411200689742531616776934946758693566097915215363781852121921266589221146009676114370113880990427548952197197793587964394675135785553969275488255012991794910026117762758243938305646893882803367448467823194897238658298949353783762585384450212168523959099319015548041035269244644024724153384295951342588169331291340066513552922950611042664665784552557527329526991222642332215088273248516866665361603520835955238201517248244853520194287825971728930306223831381541107286874995748916814798772743186221871346550267849457341258409383121259355173215564802573398512742704407407353903309711766205739603005850572880227927179705863585546462587859618635376158672896533233699549913407067756479576671402085350179079209249233543131557488175982125732060048551988337610948620176856392229720122234214910003609592928397806655297646929652255915926843451405045566792524234905885047768125291074726237865711707059430190638416289880363751650390879052030444196453432195347346546471973595196025067314493203517091225798046431962802290239671550536465115332623149980169153056475053547607860207391885581969225821190724446164347656307844194594110576792306538361726391459536687379047485098306982872205684718711398869858317294785706246042607703321866399929168556274085551900157149582074858798858927963962886642316870029583741380775822184803732565395060022164330511870278833384757665789177983496628191962352707765946493535189857347970687549875458419045145213049730996897937959794156202605143810611598713734230136901890281412728525398320287477523443561838173293818292316049345833632539136167226924039140406480460644135895289197019166310421168967015930147894946958187321911099505281897711988711986440711206781762152755466176871831112451052660929435148527879081317378330218707839157868046840119670787750254465819236549430724723180882781380800498009997681913741209779008348640190124094824911594977145019009747796649127544460467428600868260071783252436776499503307448874271267037441639349631669659614339079901183854967640661714971402324716688608371364540073251883464247008581361272298946073942177695211713468753824764056219306029960615714963478676063271289460377364780779908789119694374694948721756119137458611220931626554435268407506342063623259853423754193831196822960510641939047408041517463239276398036147791768823711124554469403650924174273895189888261773301296597176093238168673898602284494223265973033503023529023169812999040854518427316573312766087472511745078594697118939720977713302594750217872938788577622688281692810911636801747417784941249725383961109844305428477014392159551331431076168788988569290084440324079103589355431543999281199292075106877733449820167248665228704540250235452159420892950731047234328569696921783329007157636061574786939467398213664407458777725098055171191943136064714165161316072512894042066104560945492786017799288070461971906640229475346422951137664902689538880023720233208657917884402752519306741337770701896574672161185533453422328642339907867753444909885936388031154743698567644292878171602323173273194876934667058056987393758751001171478861250884636993226549158207023070147724477550431365239144561160487466568984511452077444385275342682659058686754277070638882719331385445448903571853607535211471856374412735709013764283377436284460290231937342006032339701827707922817442089847588744750494996349517641320120671806850677834301397403339936324196914179019238540804491813927635863888947846261154343056708076375323933598767814935726758167789515936496642310804474947475865687661340840217148070121244073595708069268852618981241845239625501954372889470019480473741407998604411900951037029193441263418405020994094303361480076149295100962624745446550467217847414473500041749715164653532302920687277804823616802221784964851015064347929101622179630648327637687380603612754752974970029149053744377497534328571746960809258496336943458129317117108749110943530231269560651773367664239430832362186295189004611440592803547913033137146900023343642270506956296218655251529600728827340284662917217550133975294701804836435603468062751800831292702336291596085862177615293016738724534504884272841122349359660602202190360922370551132725799910004522848934386417702739100885687810909977641047143363695788010064393522909865656672138344979003352840989665576735791189768139643655400593235417439345892545613635058062893557581403178518529678550854034011830876857075004332710375269005275398156726238886594609684164522894656666643117415552255406921470418708233253877054918082927050214470427530282060399553781104384375329931827341236247969602131021426032878342743245861195045306133939322074780233254643933422730663181976488755094378227681335718503138551807719931614750344541719384731755237076027863556146460738410843506758494102586700860138868618715321908492007126865589707875689858105219292094170543344099565493690834388075882098724877634249396705111127634773665575252350634275462563176731500256038365869233021602990256900032352927488655490124416903452271837447299576242220639010907061858064097277856086727174377391537703531304601984931766854839949112775796533738980020917645130808081778526229854568799545636474153830960355056110667221970651174118436424704955422926114611808924206118633986104009778463930878802091271348693806759042132848977432544907839407229894124083874975784340941411789865437199229987857679079972812278866111383228117434403231935742412951943355777337320738797039792870381403337389249836994358066884293071110536418096095489031736481868834142904129262251299674149240088681775282677536767206682131494660086697105301879195912692669752737013459414707875332326832316805520209926198362044238796117915453474668621065495507685425295760656476351263333253557053579391889347869918730826586903927618911562012746134707451077209085361192437234954620077993720817707292652708920276099798204463859903235184577063288658339775658030543696920328358660586443711471963490741241704808567130613058265648429056733041283618448067490882859963365870952030401758438815166830096400653200589361857914073145024511257892789282012220366162507932778645783796644097201418760841458244803535271505188446325364600228373038329001148344983727415780410763608177474534085659766722855438779553141472201463883660140533273604776967204250729068893701780448002308249402131898895961276065230462135625138814289282424482034365894100618732231319262029630825600077324878984657127034891232398030151880850241090275223242683618285738275138652335488836850092016887233957720005123868359875312327017035129899936666445612378536864845904651190457646440643419208135324042038936473647725455300569901618785250323245030220455885019543920298770089651967385349965131986410066329735724022730291043988913669457208725464761438891007894401376051232101305572947867492280324821625860898937283773095038586551924151489767910591860630091629894310383726671100588154173294223723532094395594361641772465744163614789556332071501898580910681585287558325199372423177803751934338469445772702432876660006353837836703326676911276499512012962582693758329854966142867564873486417870035100330795449024284598485149429540972856737011140039980827119239141453802229603530372324417112527376064694011108981738030056876113314966941924915704431558708610086023561762708054622649049338521931180300209671257547211129794234628485633664404045197995878735616750046586846414924027073838323950629857186400659775611342196592070598169552997720795851864641489120086666175562439645778515180160384529046359837419156435243229978218877327828099325455308008277836672418275750435346665325739671985506750834857577562045612641496395264482426347660689847274946791804353362366051874308617906390474552359039812115785633662445482431920223051425348154020780114779718873485466160750066983756633375027947280911825376031437610838390417455312417927418478813239767795436873710212137850412494991847465160047196051375938686881233218288388039855640742456557676359641088365920800229589580739998212276979988060059286433886029676374980065493978457898258899695626513870863967195189417628051186051143850527902484536697960050092080018734068164574345216950905142467408231172362206509108459790789900935688249765506819076585037292263329658400840334443703911651918318863206224084506177979352979979285550048957452854769917110802987647100565140080883702332581718307479417361622995966993017794884062651434505397196069395116054966387078372208286495937249742717634708016775907594277259435004301089035868485896786714358190271668478971333623690298798338050336370164705382206735887598487705212548608557462124012177788808319104211003460062057906595584891542518494477419946177808481450736030647936524026490478748604770354459201268694152330901493672916895616887540284078399037382994770715721275703971619812251168155469894038647837135488907360139008313193339134501666772312541329083212102053108202297680534247758836007215220486139071741091128638505452260822036101738481918768120578834529930885032843468332338214627474749848240644896029175385104045688659856645221426062024389308831897432888911414414944316010763331281262581235973890151347909426838718615554968270002332886411059869219763135610736692850809498283104418349888858763568626218359772693675365334335478813100341812132988089348275392076257605274171608160729989915222663996382159687340262377596184844167241877430499467266696525961873922792118255327000888738216608308731076862754700201872012123299536865580913664556003609198864693989255054400782510467971752863106194886628216151529602069027034319849447481284632401402237915640524566126561377818427940870089696647162768112040175042203777960661383494935285891145967925288239477168587336692115864894200011358348022914538241180031723440081229178541616281104862485893862931314781580929099849929790025723663385256738050541378141257540675818027576504555692856993175194886865046922723986839223166952291510690890165099157192201938772180073744361395520795773414273656501934718321083650656676350516063046085473676585281605009155309372032971540546011226179858420919660100034986158006779424245268971529623483525659750103449182862259059710785618881444488273733830185781054259823531070834521256848926296318580901514461365294130225580731088689780519225535627633596308381077143519930759854675257282942009805297410267669201305522661882855813495497652520497056053749341782487262654372295554021810241157615877726221411357389852569916914983039078011639115242061369651371401013692164044884974391754028877524959096257867901994221198623002816636508756310729679857551117387731256752689642880393660681171598157168842922124970023435776343451437495070027872413143136382052730545706647770154682968890759108065134153342367104434332811695524280188861318426064822703530749854578337218868094306156272452304474994533083367209766079100311153501642596737484121665343039295709715162425462481765140610641555838017962917754230969231794114357430700387322717740738700586105183786602763547733814371035174551077017360266838442258888747614643313397379662416429156052575407391376193894937027042516265648175002807819642603937857799995239621182362330573252823250875082493043588960464387981115975753794299806069252212548430384332671093753746804835254281830285779599456875555812405004701236669125054076108557987921717995111107562970578244152387726255085686848362480641995183322918564509299994938762357299373267298403967538867641015301737963037778935533677014535475081011324338102251375453801006253492365919689556561806644926238039334003165876996374577216681658198479696434174576239983489285798119562279428430558802982138691171545290362097942755344284308392470149696692385008832170298237602126371562027732535865155136205379622116039954181782634415852155025443272581908624586124718784401841161075490255822610513885381104394407242095324645046737970945278053048720938057263899032107869608840684733339344162087061315569141541690358031957803785560435492216633041206749563324626493755605530361499281079517131761927349415342519441964635054465887408014195734522524559152447637762736882907199165483902875080669207754106332336256502832340626975864600210262400101441051902364927900090207197793645715907214990645793468082625989637516323092550321713708619296231930612607825968554907168407524424310608239531294860686660184589407429093110615079805651419178750377809588496473618838710537934025083717492051238501689615871861837795819859955137418083137190691464237122867857076941113699916940827867146546635155598183891552561999272509207582038186215300842416270615518293669136213077130202556885240270140233207568925519285405771849714349471020896876819018560735591774498811447805373682376709486718830434425059480764671062008087684322053388648762910271810955868607713741226069257158205406990492338283398598719259050095358273501618694951416638366242854951116180369522536621635584125214368967250494375705502954384661673054380970138541985618333307703413139071875739741609451613880135268595475819406443893674820007777916208203877574152238813569011666641007250697809462612754152291481878329339085734557254848138124936556185175334404245302932807118460919917012991472799316658902876636875604608849255271382448180701117467463509579827179311312155647669973918331820253398718845511467390114875450661531306595628856340586820203397692389477774363747053287232618196637648971073255115453659333031131019093837523754490397623506257940717326344758993739373009238759217149207727342988082941988655737337424383671105894614626266075399694177676862204501649525445460526198676572751698707949663525811638304723613463002135975787275725219470228977700513200757408099214966882862640139754551084791362693587493746696253240644150216789661628399342329702628214903408580361406044014865241815646434858794634740793744505042692975348467389001436204130244618877930798247365606706702153056279968717165902109591520761795948311965675398848465582109509788726131456674473360619242298493294306142893529140284629321460464139719168132403285421872814168793663610126392388471464309607701426225262223971884231211723241178528251170093721871534270061933311595498730543615131823936392577568967539517223475649003844997070368418613474674308765914208900631304862392751757847981277864004326705435717501130544568703269262181355349929067903403360424878045142937824589905520457189140714116930371407937881364516096680848055029622052790141508054303412531022029881056493817180956519513504013831135447586861323098418168321323757426239151245839501767790833857439105288430536520736402976318014980944312078301338747341912237683935233667387056271874000661136024717667617300205568593418411197402206628045098944517305843697594277739425160369909705027815638484482958311632383602361876126761221791635737974614019349604656322329612011064354929806407903660084039298666417004372296693731604322471838653582941761393122932124245459427083911147218652760745724866541400780804430839314587578113265531861843024870552342479925640847791089732550690026132077594543080636376137051201361452908792574156595525593276359496205983398608460565235736958415647552120820624337542814051703358253495253346020518449244995570377607785573434495947148424224572744751333165970865223005975038198457701646057586609251267367198979242242018515250637248688088871295146174992472816153707592002816226506493229697005533132193458466936497983217095620954670749188705355212240606036419133669480054626067267215568269605394789349499180845560667795288877079118365476136004044472585959458435736732884420822122890055697499620834968636670013561346785109748994354356515605620136568323207434115673380351968083658867696759771496500802578150156205511916453484276295580223652617612841420795331185687514955890841972539396331337316916351046072476706623699657385491293952910671198152781372078025150413035333790575059925316323076926234904691078439693919503812227253037319722474445107099146554139139585293136217432533683023927670384608882517657875687679367688826802695940687804841146418106685395001137486599604050942632173426026287127546531963762849816204839507096419762831052044956594159855004016940136789708720248178961350768270834378321868474677540495878377199733504049533538772454398417964054190556459785157395626879579992047816425017023482764979268964008018829532737403651620554211646915489164186182798316074919088977587575253262157720481892314821402725214316039005468056289053399124229893419377122172234826209868816665230233616502919564441257594581002453851979454393138900571698717665775892740867944879706667133985387529742552504368290666490233018000734096980479808073945050477005629620854568828395501105762860460748314986895073828914679474789748527513182033344638134277887902612963472901444517018438143417821376462657187420280605697389887995845254366288678659909456591066483923766921200942698991230878027491810036505479997723983042656597143100832318711397560932673606500607519587893898968006511950931308681524097327560388960449834255195599188432513217605952122193310060569405443670914525358791994638454429432326366615887989248283154920673603470580706613831867548250046983629614530832844894203115195024594470646988053908339618926329288307421635764352491973317395839783857928097959775462224577413155778815280270140280183489248197763398347358664975682943231645235787590879860390876066246240379451402426464566223188847688056924183288654691332901016380627219840395868061686735569710546245018166634138876378118656412460912988305033297231269719605327649849145386179128799275341959272146560632299549028810907091312356730423946815705261442498829696311632781749438332180642260451002539535926743011856879965684711808678271008917936930854554716587677417568858142399652272251496972961508077595477789735977166069206523904688265871486630416729839097194434388762595270762952480989071480850435073905871744681266533585665209763017293860317850306798448933509154741534217851834293717229819114541440577969862986380475729358654211570390196288226634588777383624005694618664604870482825275085166715081846966912011861668904757769629316542538464272966966702546856591634179170709790375852721660931710156886246555638054452364617443736259004578487317781662207444596091645029647595952532876958226373385749776121833977179892556808444531368422986141522654432213299872447682929801506860334099132784318954437215905328766159443181948841547946909751109178351160298054745607824597883460815700319418238597794230052904049854114762246201612608843569776717411765428764240033085327597705212634848400300748421128101784787599628399531772422652689523483453978463030948044199270373213609678688893993034604283598130447131074079839261197575844478543836718669148410596408518698649459932637590029734297837119733638416379734691214400231064602461058933789261762335312910074998462409709331485382264652492013791865251784211461623485811942971957458982269248373677379612275941200724619920657380899508626812125097502369559452314833258864413444720065537952020975396495991850901486731351518109598195687443139747651552324013557805886418933529947085566865372077889287252337948184687538937257038729540045045833436319085659052025791360048431816233635756387365413718971976625464688697596872128350645949087909756974073666125132452461233459265630928358888029908714397813123863792474307470691350937641561754523107565386801177756340991837065258690416650489911759226201293310124738536232750688214749827030955510983784128325372475161469965488404257495219056316372602483751466340010554492025083921368942015863898425791246738845851872718854832637858632363569243155707638645306391476136889149752807275946394403861412170215765362418180470323040380570108221370431503601899546230178315197685525715751551466151447719649094281690954346804349549315803597832004615651346211887077409928332658606628047657899854892509258886520396187956748336897332390926965463883841175378026821488605835558124650258632093049329910306812195104846742621837268128757419047426852922265868309214297082105469372575975176929180118434696948478735635004350260201072124473173510817529991708783527540203507444126568487182014012707333059916456897528833512138866463890054511850816447254550449860466339675370632744853836099597683423899729790361675693473167044458084656898049689383627760480335392379511841670954300312096099484678253036901110456621552286014981635335946702031364827302207937992625799382112541273652331824416795506012521275422939402357983947734074160692210440586935413034290060455485616966151091517939235565251322529005706626616399840747556161292409265342001828229214224771889207206563499360255538814431913796473292313626240757295374922151541505481486161439447708184391503375595637129668920933750343455058857906266102795051632484347517785978295775323313411556403338574996054791232512815178829995016073083615911762912807140943265709421880676954040922156791249216105364614646174270237019981464259861076961147343871418287024208577454102744157251374605807559652989668103983522331773005856798736211784358073721485893715199859942143076831892246250938439460795076346481880361828367706783175298020954885880573255887648742217293879553030687797055720059330561244848166263936991471959611810810988600032990009574880224663426077308171049142086505869148868192698897864934503622373256781630869980093411805561454357990857799965478299502781275790717707902607222618674689348285072030524157074910082856597144675664428920309135370902987523038654736312562578641361947882296467413488060279839437488088867599828236051930534701304652672217445735590772535403370902678093448222682680053593274050927198651958864999928587927875397210715075391153809797413174486913411766000980892551332294603430136868166360279931872592391424354929275993507786607438760277234827033453019219188269528949249774088459798992834262074116509659699273948423691240298934697772845831203728284342734080440582279279449385500813880860469186297615049748852512933782219769723482671459702540254235044536179822421216874614525001775749713947605392725371515410220051017826506129249370210074713215702646718970176529713529170846693381051341914295151409449535274191100251786675606588089286740192896220173361061377707404659207467549180382211210880569761422139184898779660299310669338557566288780097323071845964934545679097449303139272190049957007922314583636747895359566529361116457007403202909831940409008408006455189265916040115644007700978224902795314347419690556022233793451243422812163267353732124081552859052790805333444858580117846540174528080705596298960709801527940509275683218397940646245808634695942020582766084267011458198139134217769109493631186188584034555691133503811542411654924031597346116788156563936844605336064630810599891078683964173599911243401859150132908382095509344410768769312197988782293593537198007096111765417917288730733276028826279830984888069336133917241494472894000984748321005289428136407417143383750862604881892027565094938513244107402464312659770144751611495298642336640575468116437589335038757968609333810029938311287642384822983177956957457919821467535466615144194479940271281199097752277123252119610598482866706058077704801683207381237291016268712673697468663510162172182951210923396488561245335863030883344219370043264835426428832682045085253755391670342298510101240791652815282178053877948977154259387833692525521791097260735254755618317567726589263934090236977898070488889533001768033080964352020515624465895005372854060191248104423340744299475277063476859885100620036971367756235206040881659896008808970295379153880140188652519053561359286184993498714652572977374716481459400154748588295102164232072066728177279872344476533302549821537503226858890572258422159433131778568064332111856079614287771157174759861565675947119039965526059445784239886587228092494363643338630209966115619657624250037371779165687655095648387588685585792363772629008898474154430690326056968717544653041367105232246651558722455468732326955756053401047309862796011602372894278565100868637091089758266599361238734206663049144555150539070595637588187554293181813486405153628836709662862512993035807782770529389089919949664542622271445208193476990560947875444134292560734053337063940557698527728823901527391674988890430190248277740962123437623771908281171405783186441817996291976810993186075556557998226961899670505172503176970478318494381174105275028007164338657876084119897513726133620867213265307058021024183986849152145662738263711400764695322920097385398830140165112304853506792641405855223258965232350377597738969524234776253945915473091909670635824951733894422842441690890589660074437808252302182164094347365335981091810165325498936236852670961537328994524144662622431693237259802425553316465647703219931940096947383304113797575355299426165435216249264901202435937549720565760272838440903152626779553219325273970382404419424587985859846781540788635587515948941100411778748944502650203511973915518963080129984974652062938675447263343703802103216183312660101358702610588424035217529640766864782156402917035720017055514736724330170550520652178702579779484955594393385996288966604084534992808757887299465721086827531800822034503669206341119390769408551044063234359031185562305536043937417842317487170226200062346072656604035728764188813684832337862573503838491030861586594880626236663590941386623327835927321717242261635468987759100931389908205337030770125738718912435770089268772646148830404363784732440617363888102030072243083955413007193831439679970456749005959094031979836487634126392952125001974832070209779717836871185108707618032380023315277752035894893300486819522695218370814949896932469516548422492744407152604262917839754341539982172145176473319158732484361020100096843159572114232745239469462523284332950336060642864278383011730314933243463477469646126012777763143946081809278161847363459726085802082993954311369716895213259145683275933972210865623028510820734195492283984272237171447600320627621860145163832082725642648053305440108558000290856661858612943374585011721473586332779871910908665438633411015793112979556722608816324261617218240188630575982778748753216923065833352233711992412960663285551058869264633439446795915954686294614812267851897476985265416264653881588951986235110499785126886178087546621762307192867904079329799033213058893242834314134564638404027209296264546084794193282406062348821824423155096768904504497061310235195168378920891210746365273129740636575425724775096719685973840576077625549226389290134994901861591563708501023107317433094683524423566926509537438379112112112658879915751136317409207119917901667329649860100149711346557414843299024723560695387656137649394843018433478356786091791751305745282035536083934703526256356798287317181098199795831694546370237474853953650490965856766206827600821037559521394063663183057061934454436641882284337706578013703943005306609352594266289781854950351898955694436213541830663431623291621695983012038496943108637122750855537092780036012131708176091919272216046545333582484727067579416840034091823452982412452608419924000653635798647992947937057854184661089608239599508185063613570334829533970740227350035397393155717000491010204512679354461400115671394772335434139709506541341677872172226232919488944890308313364141651038254765895622435753193383680251800772959113895329441321721859304347096223992276458699860095587401063244938903631524427854527566729843925507208921156170380241316676078047203333145097818042063695366164952250125868882199360300793348864318938743538350779520736015874513241645425213979256676823982493109630427250526950543131849623812953265194125672661660564722217583709880675198616844293991683931488262348199697465820163923974650871923890267949940031368580963834738838382045223106716399600585770193305784153142999204994212344264185603545510277282390117483700082920984635953011329815361699580130063349632704773033869225243280908569596520924798977694322277132318091865693169389910910818137796930753149498399877281880235453475339256418983891401212406155809988252657479354535872175784013808059440368582374626977844863590704640726364297744401319292782694774852043441693789987538844035071829495800277347848392945872711029439190143738835446051406882570211233732353055205031785601381001751490539891533463476060914684491865795302793124812634292938729258908548785949974381609026349427257680016784008319822904823431224402746515750618877298990789566549591167421981146525982486041286695660346918649040893890529952835320375384828169153724378204160041109679640628149360050340719362200395015558988046003444392907438562636648996672619995607099011884690679787327881837494215470994195935009191107945020127290308719121239731563844162352311262518412437733499009201665458264015815084041372907673911545500186625364412514055512709567948836632239882862499529369150873406945635957430892689287223897788917209404656390186123754643704792312526659721911710831620882926714044399797932937935874846204682834735444913029508832604600747171792330300686670068879045983191414914556440968290589354551936445290932282717284780345437528663826658911009721234328805723634742252808426175723315214034767241558579691071299808539939227912672632135448482769304015962884348742552654461754813556572068845625918388293019201590573776635466348340225490519233570427113140964091080026750991318428149521130592552801650429338683804247951667750614813969302526367422406457815563011843737461106370447413823835929427571149495806735636579636505246039196761251582998379113194960798374548881126167046083541577264690350164040695374390403760483232487426907969264701730604605917641115872186492751601401540768096893232247106816237370071431262516928009116525918031071732149607695717330287664400388449004944403498864333360834519927216481199359488483600349580811081108803258488028117205380233106944766633970369772033836667500635856303866070883281834303457907185374443436889871019188538271949884260374458219127304807439449908032641760467442676895825187712284759765538892708197843487425672698947785306797456136861074026466056025262726253521599259674374717153826626922252778432014097817849155420887280472049764295288679353452257281475683610989060632309587905680120375957627610190163630854609626389444794718618646337790455190841902049220437390756944540835564472841204458038075119485233019599800644385006444878260393031248453798817756948921281426853927876203467130843966604509890604936184239397768012564657747251009692110704436962950828733238200269704213001973708578284212609185512288364053406427420303718076236718966075921928082423103412412810073729438174264930535115279310370809436535349704372122092772808311205709694838483480566612422178866540874830727924909126015149114122361383532493824266615853045739591845281785115924981801565811135432910818553666710891431263810106402449405293846623437189678807007567580086177116082086508543729472080209244417461996105698618463632958636895512937468286886682404553092230351494222523983785368113123054100219201694508508160335783567635083767105664768942661296097468283896289743762752819459804356761526930363403745840765716926799790752853383204561001290717065254048726204539116643589665766760207503852419405772018558805297914315650481025104791231536384841908392109956913137298910477627531090150672724521128080344094934375618956437285199128164017185489864055505480273524163381538021863534274161007995170494627712376739573174171577949643459882973059466169081648635125606820015220192986268562363724238995378028616673102128718868859658319934729971451370770952241624919178579880792404688510246051074486244400907290665535504891210734791442862664527925011154938086489761748830213420041441410795441427287670967734944140175009830148176010626330199995334445025129924805020099189346881861627509479431811633412006466439570334316748863076684188151895455803823629487713358007691599760014770387051723147876917505701098914898156122133031445729257132348607973498863402998273351611396186096977683334633642642475919666944082526369731541662808000659382179410786966504805500337258129350693101053207255202279770041500327998007405564901936828562060547815868627270776451890278957005689876700179680660140928575716108494803686725737227355919718772745097589449324636885629611882714228876922922654727015549270728493342955748787958683652293011241684802436474270400250339991796631824618261137921681148269031570836386231758265876473874785409074213192879447679603339755275165096464233516262846292240987012113005142402910732427670326800972269997556931810321969623075167947349664420039190015168031606911955116810359733062178050525928264724932867089085518874155222323826592938411100883237239419184717929853250063224262081910303242946266965212686054995542914328193708056213167768755029525425228121730715134066039136166913974313475237170559641391942930559556154768506208515234225281915601010429907045194668938269933118586223266628686524560667715561982855423538455341489501453565071388554543413749648778431986954572055748058525780086179666897015651026699461670974852804355186180055286280122388273709964778105732046855525585709331418308186257861378324726572970321067236186259757164365173062037174367307490246762922896153572456886183623969935172618995367851903065774032456161997373528485650562680301728277393976085706730015645692751763089210426842212469752577387265542210891229336053451882108895436093074719896835353915251316716889023128918198142247183496249375669742767821529802640336650566896509306560107164502860459284808453346020497140593686897163253179398741826121969231913899808762316510754425254214527198383609803492073431918205384313892349547927187330484542497846422247526867514548760491877160241712023567624788494434928841060712611775246913294873725213093415321346717577035639780758614167683275903632702235317671179998350358779664152708154826805626435810369727777705898847828223156530818093922760967429057841723216560880367472838031056702612438620596147962493894376430630634116658168081135637041043896498551610069029594620049986471482218095442076018635583292167262827239525881900914642855602062909618153167647301300257865177260440887047235966117406219906959148898946796785265630682107773324332816340438606462744761386084650946327756033944718602019303703826129060200685372385470410133550988380528141702110978409620807711997699979439215477794486894243415014562775659596501840302648309615813601078200240905076464301671678264357564791487825545492125005154563158399916778472384307047774025570427119515500850043845083569416806784433720974794127733799440155379312546033451236785670015641768344045426759121074314580788072339328233175418935760151263459569043791957344628793101241465836126365790826768941084010864182013856048108214272807421492723962155717422052392349992253004762661603830133636670865974026200369994082612122983027641984627467154924303293174679552820647120298635038596422626633367131070921212257380172519157892095091006266106336238865213631462749009201939446412199279992873912379794575302535380996591374368875867370683269214009907039303435258154034127358427240703569235722463117102489618311505265338894364396016170821820757424555729645751950938013045267030484071132579919704000383695297637175849308803685050271199402133951319424587426894270817726814085078707537025481185285217124747104571388430808225434616852501972955318332785066003160125045393202099220242221786632325664086168705178937882742242277165746617028186480005318789740910675334686262814998827237874071631478811776664224908230911808824944065082991981015553822387296404044844386735156296816936867251534686678253214752937639262632738482524494801384379332337480470709169945386371509647614941509343253879599228405683359341651150369200331627869129155068673882533164331711203264432784443794776075453809372085505973211287995413910137967773765035075707572416004974965375019430059449672115197114300308341296634363994018174330297705356895856527977484502082739452667191333702984833554618443509315932958410103837594032571605948350008824847778370755659616793205222944442367310107768568426622743058753667993503486152316260847004083332330934165984957571364648033739868094656854766500386094226118684316127496335727719622159618075553247931102450101054149694376997536689230943684015239637005008436776961362604652305250764577945044856588556303130337937637584568226098090221625852840065007874359290321320280588570788290885914502093892780043884142856683543161582956314949949293426434596312557816405452813904309919340117762606091291396350276557361466960427486323083036243880609805853987508200972976388861815215602054945816834928203725847667673945028734389184344497300002237854372859747728736574566265858956786353570529323722805481645627762807379385975585544049928360987093531707819283823266536710961820867633924800590269133451145478524723280221339382378445922687713943891845750409806611868670907219748024381644678781086851605483002667174026633942147115787092007842782089215280932470301448694378940120771506628624553222556977274369136892021197129214123263594672095597217355486420574693213184565388870349400407812238002050221101397933292440154429190620445874493260329716007771129191303341536040030592428787830710953329225322053382433402794995593643743855620097211156641499198323985531338448063465927345270793522844317122045095552926565677044820428094261462968855508105089039793320121397450575464235778223558550701675483599212849144814888133652970620146615312291602056113346547334646776467996624798663764467372375580618750128640544861527721799710886350650036297025492806666030463115163910449108678407169818833956842794038931950535234731256377643639809891076870027413672509017278335449342724752031217068013036299854864486679298821254140700140508370654161486627989944339229164887984150478813186460524403077637832381364584373993133638828939106376978010829730086696447469524751600169514925248184909347552458371906402894112143342913042425119075991498804897744279855393295019487193322201900767227385856948221965134031470815752979578234072872870864061610195683636663998136823702282925492401514502031130436657684615954108211084629706091437805772721273839178639131717887443026589301934722580722282264602230721192844748786432122622694374886983998153642178727677253887329096529940391620545690681265076676045454676208253215929693285211021809327343955990867532051223585898112036475970871713426656434583507474132880978383694284993881783628246832043836734870487600118712075146229509088907333216562883425010474157959519802753737353207074615734359950917633034041867497697849394985536732586580997316744690441713867540958059446378852789930297620222604833786957027197184006698392559628539458758277975628750775171072662357262156099911422044199119776211668331641095917636420244676259499477748560348602202823573665983770426282922735568820780900244211134532936029986419370700261488011130066473681600843990864279445635536649030253558266681746134732163994916058042638442347875574571919294921314038478195707704847242887613666027599240203590166042241934340471174690849959178248913783842199708330094706059766141282204703771349261845465467303949686774733804213775764864721402325034567509568877330744461204344698138303194549623159225216894758100480008789347237834635276279450652193595454415121670770058993190908223195136491307771401008770891360107630083958316519855924342524280718239245765071497107790470268951510947850084898361951159837168287131598618856023948505123054067976955802164238423731900524591132981388533153613275526318590113074530233657968268278701964894939858312848555329420551346758763412603037648991945626571950767817366711356065267604903640125757089182806339341468885796378166403252061915963576346584214070960520321235843301919111542224330257078627857685831760336918405043623623218177322286607121028025353816376982875087437289188692242440448124529064238399893918617384521476474527290475856945769548940414733949928109239080949364363998094818608866216883201409871009567794548425101533234569090375516630089610312693060075013396845329775390573341511572845753442124574506855139857087672290632520712822836898675653699908618283594666925898009548939833508608607260599779909008815361203081003227157528415246740299200554995948799831259966967806525309956398417425352543861623538307011474134635803745731847267250875746770766982302626792659921211234941731833882053196324508227865888959093887982719859970809616249967455654558771431045850598961881187639794534438030685376039310828691341548451406951017195388733834499617507054365137344410662419697760348536748426469448604793483530932640750916469203634994632111695419146368359339833746929053805269210488100993581075171407008234382621736446155623650688385406664750263808383762293216297895345148809644306105202242490456731839143553416517872397784142627170207117616546800488510968748159534050146410010900225410460505272717611800300176174751886985947613572282512798560845822104300231710375396317277094328371470734178310033428183218610039541143092072548258959267043864464067019986182140080743256758222364998974188269708680978061703088007330850301817979954406980309944743153559891729237589541344018176990147496150015837818215855483607900022663732655686300110093239694453332639499744272024497667341832341518261996223270150217325539338388475444196708640955072180280866107249608125454281286619085805121430852989367325716034183142321846736567033177166764958622722078083381202042487964418622425320574164505509217667075489286611913040599708716195534534575866921679871342975350542397202975526974957753497844993170014618854346782804011500877397090911335389729777688425147425653707225659768549265335006445942228732041557055574363071671478315218985234976551488390132425423807503054634266265542137826213300655078857699962239752567691950051475299821394882915795308134086830649337794708684433794705369036429172880274031644626953416473124875929802116738429300846368258041108589443155064127547730578769498657997299214316929898935573100095777193327343666456136807739936208212526323179690927158138732929201188422171096903075703929226961371897912656149953213489477096201294742738385902136137967167055346799290500698397301715510874102818517964855215115172099528516768891486769291346230843087259403358807539071183504277202836323683179078265380290655140041083740719498772639494011706018523988193688596387804837137717786509367084073068391855320094340208363746054252695211873108044187555617609150757296353758504243240978194894253561488051648399185550325409817923941633018831897300169815827459443001516839520793289738300462307725198142286148951142478439440317937819911800743416221271375057013264558879247432237718340532156058990251445907985761617469374174049678441215679716738971752972094145855349507157006920996807623674653318376939138922242997007311089636286145640685321012699136080416760311519093495183273488320240136224855610240134003134626860317310814142381469445745744312988970092743783644851419704393831404193089809870336977181337096190347252542337246633577184269223080133659191757033533670445433368346875296299597712382816252387319226452809710623121348465020836521844818866184432708251643138892691346300397967516905108567723009576758783140251278160521197786504211118003803877658280629033901085979269565501357187891176745582524331542155000436234325332651773064604028627338774142790245242183923664463705762075155544467497176172763469820054986252146724511695147486423691645218403742894405229905590313564067061881281936147158516087644390217739145563590052556448005684212375509470449959832354588039994963950899048481525477275883542383419590884309029779786306296038796100137911094697557722558499278494833301800755207967534234274887248989499965603683949638931118762378569545423932834137939138021647616118285271041532031479967768967462808938358947703060275473914250749974237751018161294576026327190979017858527604259806672994861552349980466179473571652046506342195244663206688176556106240872502147025613296682721844457249268312486837310823230261360564387698331214742713878609427817727747014502988707165820279954505779956773797633115663620397397289508489929230073829872744566111631572338222471484278324491268058258977023497243998988844939067198209483010356271863466864726221166286092829190808860962867602907791265041424348316701049279913939388016706714493232090945822681407566101660625138000793051663759617024346749625055889316850459372609378181761805626424927044621708514952079284031715105093449061273621226386882727965380249642434080605888446776533493338058135061734807525410509222833360336289595102939226655200812022605140049324644218351814904241332076450281003498689306907751777566101994377544114969360082451954596671173255725992859952119981246044186943505451985484433714684204234607713930938280777325979074551646211563456576877418149487019493256147325630113073449915110046253186604961336164705987026471007687253247036526105011083795161210599213425560459092290947785338107951611009854710399684225861046708990969462210054298677268685138827493436368017381290491823802175884434858199763060018402455043639347525831184432193636078822342855272045714074737369255993115783930109736819090487924888661206532460152000335168141422972804477193676562839111651217927275006871239204489224560659499951882162445251561519251541248698539440557530254984069771032438283335078495458321119998635017531513927437392901084739392972242542692195276630589584769378343518462089531228431076626920567680291911716197358785828771504571705365988485439338455687452361582509297690532338080100239588158759601890869057946746760040728484613767290873389593701930186035809192800969562487800035954203504649282600218351160276500359007615300515757508898779709877246512623459434858447146969974708619341633908471726486305914339279858862338017846384694050699293616338270067608418255741154878091279432910863846947853495266842413245686736164003947230214150059728260677166998592152224446922722452662753747553137462434046326231320967634891045845244598715834085735563556630887023572750027903905856709684257476157704227887757124631483082575613673921608702672850353548863884440900066221903279112207312376948419523363518890952580963345764362987689019978287277952578086509868522185854654213618794096811802407819350928688707440238724062879588975043085326106396878515638060391081322698344181591025607591793497200486019243990420559792338398268709614517166098033509667819207870694670445052964510380048754656246144268720559930338804756155067939792354864468392917295248902411941414395004555151105274496092565798501994597445334832292324136115789201898749628600240683858562935279953952763525046396599512968205865885738109875833622381771863255911903200835095037665281452075692485455860174792407834667524564755230285139131803587488375127641654069323952591318391877310092234823466809945560512533544279271701158598689104477558802992722469475457343409971488630110503021626875573525751934778139174961643122972879514029762422373759765314287522934382892975362750581751132453671903657267884376036661342843964219541887566119884579693381298937901406563419516192474661306516511725267669323609419087733340690450558165213454487297074862553371635331581087738855095802330159523967268648400713750438601474834235330437085390227380449117576988953079133406811397562588492545284394178380123683157531767298914314054054266990963190681914906510208311130377896728687657942468534543011606591877413631321762198303416289445543557360297724554881458955418542210450999122832422240671256313535578227419398806196547685103176356379705213628453476087647191624882510939310918226676457010246503649076887174058871800489062109983884602249535444174934077227481562851572448302453765047321847532378940907877851143226417167207865271313548633238344810072504878677344464081608772771449481960020157980944682498260587592717763415996642278042914584234546121362414297976133124187195363825151679773423909103521409278990450682793503356406863155407032340671391506418478690860575345041992163225409754423164352434991500264140292956147699696135281539726892935453106876852742287916824480432608704463478624349069682252057662741054671106465204178936003473244014157701024500525111785668386033963806047470587868478677866005941018778147625395184562630317637358327298263546058429323574557986170934591291167804403130173996890297165284394825291332954976005579513856860519351140890707453397241952980145879886978105344437928598187338219021315887361960592742773315472002853239408397789239344686421601638980426095208234422381784439647101937884365289752765795163630751895935377213417194091471158931428412311647990508749331887496749119177625623516517274409813373547097884797343831223446489714488277146796704707528417151005177758584705360452208655868043224502154261560328310031904546602778549929217020935777114230574433742647869213136054226574013575310385064398286790589577389246677367491487536907339515858623562466719142440369524996637703770985252803613777816346232435468253332516733074960201249413720878443642861735790578481437239478915479884748129025766655262300741908124515803036992955037147164379926226167619218381593549727846720152665688420845010280046156910091842431075734179979783749230883487520580468055061820398994057860895824863813246156474145956952950257440684073664889904226040560602079193578678161126084813574082600007829756702414971176685873724094152073889241847585711465880388970146267953322313509070101452690127057210105779022277343195276782480856529188340361561348550929855796859839712262320837313667484421485838926042660191699304201533766491830909468499432157653212172381580140823486192736058717317466163847683264531184832681703369211623877310612543643962337345035839522545922383698407681015377194206583397155612108653083191645988670212720030129762880942895247190983775045851394570956574880254102538475085951906008554776417154677487089697871874700602935649391122591469261263511710087692787102960769193239654139233235563061366787913078401419567070881356320830880213526970725503189214741870398652371928414023072687812809490256436240867996383840921607586376700609603866327956945454200216914054497140193729992601076381319927344795034858657960779221356583223536408862834118876504409798505054654654340618816822304137332216455898377580961438429059850323819755090293443799336410337513679189169504960056663576720505647998532197059594358470817219206875917266453374606287085863099056469497814288864827362802618046077223206196839764684021703896226885242604920443377925672122905761457061866837202922236817090556108848373230317984179859950962146699137111763195890862038319018061032059854841643758537559118461458584528636882655994870662977243594811242593731963776359913818723798612690418725118495457562018917042825869646026822042170164938176626617811529465195189729743965577948535312848582920828318037995320941088406331146501838211945555989460999499266195976995452899102082423620367295339270261124959008335815158764211599728620891355269369880777066243495576565602414466461313951949093817390758101911627280585346834490256559339783660736784597741875456385440960717762071157152054663841375517012505847417609854817536768451158381471816080654008826680154523338651980071906453012628196539678057912794047592200584891296694888963217168962672527132555070744099176536736468323874720058609140609125633443807501075614691579295085050547070656868116338927157780046853815222838857263960105057058243307334956179789792708461912072633112251197557082335365279102007024268161463397894521512991183827518360244054304112902681963889699612182085241809012781165396831190827645273329640058674414682090257661164073139455063771453745016860874539922946234522818828837496340942470763000717491170722821267660042795470521180204638104755668948924724039745847695888633985075452182680439794593084627425060093791510138248701420978485908934470218315026316537964710422414848508953653174885833202738382864411676022315464960073515324718648310766369966940592029950073626018052003382192830878675968406343999421251846765507910757723562376860823556630936746998493392075127302143459749574953145597189522407961223123553409134909993234776071487196398726480243384457525538908352522657598897188751829310731782947814194860357498926797639375692780897942649640984709512814089650303781983675097553142351844585048052518999108785885084128715673248602784852202625103212672429865661527695246604319778947900124911930886867136656012397500815427149001629595311461521909491378190818735821252571605128316359578846573762774931071481719546509212499934584164870580273389017244188393954501649198066523773617773603148318070338133033338972591051988165809681695447229880713273435088736826826770722034381291341169095581164119393086610843233071610442261294455334123815147843960365561837877205018038913232670227465189079832876850186118464035832178304638050199921558206268148596626835738621220408323149112415323716735712682952546582245705117230412997688385500025680894367542856812391925356804836843226527830989696461401860946353979452432274274964920385141721059486526602561621700757001951723017250514112376787574823102663139662690924447844096274279748103136259643012732398383704025649960014459222375208937377135086960530601311256939481230368773686301164318462671604583327430309190082530180667483584749343753766607113653497482984301901089950970913459388149100613517153938432877737734771821280254447470438819087196192237223304078940382387097398511730500403660027910360212920875397242062759420082766066071073341577474795254519604098132952303380378722701930037663925484469314023785380625108348136087828800437117299693827825611561606438539305841566582411873588437947478804984065159864435345076088007997181939891110871504386314503554946209094365654392650941459734437752499801655609105275249481281179902173573014492328741267556064260298802557836413692016016617669748043542306072551697935735746825089695874826948731881544269818023315400606701953197215378857346583566060188867877883402696009264891214523761321850570390767193931751146569912952896078615794446670090410139420800171065178067033197994516163258550311481959276610659074044524985800229299228966543054067588746481449229311460408549457355981220577363061921476421011073334112714243475459628100874153150699878674569108206416345365903297922921012380381007569387269116011092957834426860655788441475726921085179645009860474953277920185440079838954484886707511916628030508605658217777697998220345113976466651924617025416334341044221145733295408504392807954396151307885264705378477983896727073836856837620235140207456693911087053479132411488788790158615971668352740445806936367038922357337268462210096916521348168176682743961853038638673061119918119187716359164169444571406379455424290874419543670817530677676541875022056511296774022477450002728679040664986471899711013362194181815184472591061447488424875027349454680510566851684048259975803596168445168373243003982331546478158041588277779460034850719864600409493977640398092361316514907508342421422902139051990165573319189692423186174767104600600148134265471179386165793927640354534589543137690424787165731974481919188300904505418400996882308154835099253666611841538312312998231819699109801429636853713921345260197299766841937950906406548032602340054884977654139891095815240233234467133442021495220744851782237688425688959031252711264762708767338357468592642121004081137201237521417098050822536684007206712882631152148490890523814401714196984944804679489675174776184049404631094279956737122753825775748085792754776105710867256129753274940581094794847870606374893196903901621417734653625666077403420493919792655024777067311768016577482896998471910716852097033010898010186445031926303162374116046753551168125391955617905343365937938089282722859914768508181201172867540470665654742948597222563280678451402182626324367627789943262937705557087265579856057809551086296577566990613910362180278129785662042808063521713920147250640452588776439271155252643537150490630447948841296952179190073624651786379689854808868529795126378890858504242865541942872273056884845871457476143153314718677063731935291546180195217512217731081929119956154340451468735032164383282109523299782542573539172290016513396984876017270183825894574556108791029901424155246809340828709852267349158535664375031049444588500491485483180968913365990395654771006567422899781917903880556974077808484614702490694200671838213724208851280759884631990288078363988372431080994688444143679764701359755518252438059867085825863935412502662727657199067541943193285433812175474512578521148274909532958863395251951656595291321511692041940837930800910247884453729889188341633145491480408091982281173152722432780262445509782321678235044878025855705718538907483505898554256099969620966130090965658274503055056304302205589701600825504127756601491826803917988196135982155843447379573702413895350487644347515252532802411844463140907913400762357692797913754689226884736149676856077439534956014628788995262183121832769384699326248204543358092547676462813616252866002903472891134064144250270608421664146813965398780967700813244277543465345874410359433720560138908410081960804386664051419536311000388461950017124667515147440366134559808879788950521931999172295176273037788753694443728709322519027105308073803344250662527867491541720713646960403245267328210151103865256574620291837156086589496185518608531139968035120710186676603591051690907519688103777386210264556171179825957862984636184672745364037121364433025001866944845893062929771460245708428537857217531391554082579635931071315989384210450732463188365244921677970430073450551852731279385366659239344190124417726744852219108768490083445392411318877611652510551507575859804011711680935050414745944483162589233546375855776767002031155304479918355861115050998041016086837193337357975553651024649345386759740045299465443507262891914362838579825472072300373383314140809137622653162428553463542462300076344744853432331717707644082936407500448460168077342282673654690211705120825871739934721949817495250924250726925642789857144682543911295027774569440308524614307137969039330836064040018859177956858262686679114699075516215713058458238926200549247748286076368766901533212848354177289041468683550109704090524777537298208489933703135462881564099431841848525123082824584262118062924394370484670057600731014483833794809349939449513215416659281982338744013219843698812101653169164961442714143245482547387629724500143589118257677641415351286224243126644694731445894464907012370826536309474640534463336976668148365069960714298144682556320014978368933051669087408158855984456703270505669128365644980537540195891176195932619380439852108327520574536278469874845019532470297825798400478093569804309947662567686031949573083415953921209066913357170933142936795525992559921024120101313417481679563312303503160869343508168983778370718810001468711081456752658660638884619648395491000804102621263814323434264516893555329375430827852957296723644138547682740396981624166189947325058111521969662924312118815724801397142272873868447289013964235982967010968586926180105408495917618647401412474267934889758834498858014189818668698566257552425115133889558784816299389496397417033311988726873131528027212434926334053497309720298910228004908373296479534316950778781520725900232954876062179302157414640607899306414205889014396961918180959152949138198462355194937194456512982188462378681558730644868873850415529812634340472775726538865787580204790312618484890551873888725947776814785942928251702376169625542673210477924328163129048539475711728834200324746845178811691006259463580546059295237249941449674655889780033821763324072532714591843213015032197235641764896047227129055747346130958417293148044805889632654064150538697516962493630444716415940433176064306038719972147798773892848955893028582296350937617680827682919135911466714042777926514452512292960800340786722340541320649179899342782139190630921424731548524409813721719049277450147536299714482855123942922188882872165823371928562075908049597357931836592697073626866846662967056473414696012289054649334216959657450094861720796723399048221426950965351576190183628497897472913885974861195482287233272330631073272906238657963912961558017968672419636993357507327926654753450832552123516981295456326013018790230598241273242036157017241368719980083222349838069075595238052192860532054572107246906693777913015221780039950986575108200809776528168571461898916911635158704269356305188550156111768320987228764381341870572861116475331926890642183771521971835146026562830353905646181730936806570256764236706591127446751335707108810195680022570551336875595585544273574341544072591447472845400028098970682853724683437493734410851193196097453241753890472845085958747424602856097878528545187775407997154621177303031339100172669288976201057951121885825950956918526102107090036450824200069159718001599236330078833562106398636742717199392085787672934536134885946613681541796565247637961760715070517432423497976271253568381906775894367733653120631963151801986593531388967149711435973775550871188943713859848091954630234668612328899619278198946718625627630057172226198717255668223923904890768146987080707751220177091609648770120434768279559338063610192024519833268119705454153308595651538813921780342498141963164905511260143454931265701556562158264090824648351579043435702893453635054819012476149728370681444278505199006903212896548769236882909068546671150995589760754891507625492685131792418299782542728547778448453461101792924207968158552174577602546294984095234678192840960476386210024350185606609410667690932843429705931268359659552164788030824711745176610929643714782697763464025941436376119883442043651405819785395750254618094489169401030013543819259121122854238722988776519602373221724050916405650079014770648187623734031750235491964410642041932852871687936595663020518293155034697291267571007407824355433018154958785858475434507850904892164905683726569122392614760515053956908698779269999187649883835020011034268265026969018909896424000140656288941654229991152436190033893023874485198177367035859326595056483973691102528528964240238162690169769797872053924417306882145869496570622068064152567048641672910089034466482148259576598883675676559305620962774588428084766784414116997805736320364832583212662721001886011390639353175491376666606897406774841966431435260003955902744717191497660803060479889578097868601071357264140408520715503208109783638446056461520984027952828516557607719738796731794525772221096980949945273561032910012006494033523485945355873048645021280439047580017537220142423121774893185173329466211269176408088586862489556539533649460684315877915679859150495016361992776208222457743409154600833608278358758581453060018874654806158469935209424129086588097007658952952942711111315126687583428566179129561920536410044079683799872613222554918639288601507650870472774003701806254718086876319171696486793614727732979757046379755146280328266354020758820986430077712971580486344586381703953969346321181169192104636494630154711153619666625612026906439506854218786812240993780516646058740408377608389717211889712944024277671668754396479044681943854146770948657994287785792979803623008497859770742430848349599307423855758769983547158184688235373094032850678988103388739359527893501071404914173640804862181613420873011412458842231120289553227515291208261892442680444656692441590713999797893022991343828360615540663044391445778085139945599094074239762612456772578548076328639557450793670916499825916076795474644981946658952214795605488453772955033488494865214498815920404443957690438775163101524744668822878389148182995253640866407630244850888822773889814481442580382544887918223306200047057093191744017116590681555324789182407775866665100435926469674592435181453789517497170913007733429647167891477189372321676652882834647772070310297542094397523932163345722780599675988114774549208494809224706159973495073321478676741593210626463245533420320135047805255300115734651077808653087217338440136071977085011680526600480673446362453506269853330351107802011024714941904163599640702033334178009708280027243676240239632839833190086800100058785505242035602151193311212381125806324264054598875454442839222700398014359114677186893678295446859099994129657734990682460457444371064184692311755752541422151199708105198384237430802858411911034947006709981625809080232934922144135663658449085571277501979917843893240809260006508919841301015540362593229032108072689825169873993483717822344427052288062898849905137744969579079629178617645467526962720055032628667023552336797726063643852366606175531613341317196197864392121268769055177347789594578286793751698667802479410433905992805940732000255661814631962700778143239536096104701729340494466620042894434699772502523362436113819044501776630394960920395546918993072887803159200038513497548607143872818383086380817680722559842374631006953530567999908324197175226060014824313203037348268169926095288097144322551789684890648663457922550958843785072651487101659277551662918941361681291844882428584914633290399404985318303936955530378939063462556418941415029264319234049598323408367493224900433835477731924409751183050397065819857193854143426088211957823771085106209820471610682278689620969757921676775517314616530623257688107672947682658597173652390580624930436511108825021373017722979145548745526360319873068471900353622658246145403431408136194441206504994577360905054778745696917584830341379595574153259059234508991895104113725321454131921375733178112506607565288638393093800774772362121100123864093486021508415014831723894064495994297265569568730807876269888569731031755846775128444574553397997813792654431921834421363070757915775647019542518885598183471508749639882165975381022375915486437492344074425523139962629180384112629956456129401567847766137658011123670830980985007918997025977030110831796067951569965572007575902702144061044911452833206811316731088885223390097768175624261207932093558751202518412009102502007023386813814634972054308310984171324107369665562496654937381813957760624019775704510736176400350162938954403024939727373854471651438233295189222680764895418150428010246315726137001519913632525676047478506575714031274113457537113188910649703107854178914089554130455302878654582163342569616634049525997099279447905529226719538257258587393274130154916630672048328356066972804687652587441088521105876230763044801393780365032533142790361470708396485178111545244300098858104533794718403395346580859879503012075351566479135465214976248731740221718399842254842989306171139607700220638169440749741888701799889068347341403175965274567786320642727227656038739437174585149316301185870988806202046350716742616122073255219743263265181032576138673817502982223737574646083182965575011782438275471222775799172556149461261270904660505267167223932500389201907340426107384301197825454396941178367831034191888309584133979272805382546626473199829417047335138373106220916975733273156589158399416510189572510284174693874373753133185652978668579739303451944894907199782629217544087253869509690256364913361662649103302968370399404779514747755870330411967687050772107617321483418530312001893714042946479603145311350066416700023524669310259433718669444400963997152321649187814086836681368125870117467589428150519860600640710086475174958709157959905729767405260915067140443398013208738176994367507976640722447299842158803184305897947861652814216645807199421852517436374675233515223073367877374551529844461509573192306345037036313453322168768871805379018319904446550904855025013177324986195190433459157524173696890570121205948432263283565890164054944492494351263003114712693604264490550542501889653141667181313000917724453608551190885106698104041467588804923153077182674791076853804068398921227580309702149594473809868273473312340587938036654043442190717164560665129378355602095649072482648351965488556846296156897637715040962462010579776075850857781777376501426558909658580563413806753500690392254667257452261154877591099601883907846796078591115005269420617357121701976371785105596442959618559023720438391967628002735526981355323275637931672939282477623932022778544033100210379546063147023481872886415248211452729969152894850131780271188121472084090813830635493161325791646756216819484619434213399002311094007368175499040105370285459703462333608878126345166364275991309512708416171091252888271665752450769886751300197665033144009722236940513663503005517281624212062955587593905225204836125872420287156842497966510035381857017390496082026717117234446921374861682933593570817241106919584808267765255054877674327988929228526399335672320294573301001520843029197879539804218174400897658113932684317529388849754954547596665544635912594206180442533467344212032289410055743489598571841851117728886296883795457231078767117936640524239691929950908446099602437176001623544091050434889834488714558740591334803757508108213516471546244015687292725425961643005362084352528358998024484653362422817109599601827699239352698885776941029330533541192182033534815267864184300550859195484210442525809817478579086995239359572577878359857446016518293777772864837474595440203648840299944295003769029699812826670409448793305461680584150168511183561532408798094923463652836206847759544700761192784929675948448992774264756317901512710819515240377741714381578912318556683115599448809641013883431262041387895097129237574051734778907972947159713776030845364618737701437543788226417693517009464573693269163629836955181552453496432755298484707463786288236903178335220459845956025360838502442970340189970392285865395671330968107511680246013657146012292592726485990026067413336342912103988713654170966139605163811546859346092725013904046570958813090147586439690356080526002237067236208245581181104709820327435557479421048052102582945221727461079444883918690338568109856888473513216220902224916728774326675355246632875935193968645350659198408253015704540743454421175757722114992310792258682019154490386219338234855437019047513801817401966723441526965608853765796515819930902713986177822928103138866085869256177002823453937381750059810088988044992163878606494194942003728500483586733358419306065079413977546321632519557047405447758733069812177634710857655153708861398629124189882384961710471521696214316529809386737702792483019120104057983961636647935371498532955879072997143024922657859098831534282291039354692521854358932834033079077749660374347639359192129174608455854501478303286948350836377823786093757486840385379733704303180151630575572859840539517606670680890940314761502410867637720572494875842467283500906724147538683524285131521824679772373745705655291821841553636624574535994728495285140266712799463114681763773933801244847002709448323561838029381738291966632458552074655518389534127169628384377734519284699241471083404269760700018182204794404287701819691216381554007876115119366692872982493573130991180381561849948696022256167794093781010683628532555609969925503390052027633657135364055586665400097666209196786378997827923885723733291301616727422693871941122400000852137552752735919034668718884001271277947100817035228006279688274415192053253373855168093694549786789710733924396709597311514345638326570413189498231548126537259395975675283269228288437973242922424415919423396209042686615963781323856273642608141820472118230036648391889539721693265027529331515394513993428691615334165115485101112923744798941721691321577793251660840054500252718711487093865529781654778907992517365552078125868472676816797487586252427646134096661776029377149391080559672415449995426515067850638413525415089100674005993952074787337038441672320733134525556389880446580080915750147942037139997249753619127876102451083024162313175339423890521136479018002018284869981683123004832474627600914139214330016395652367362789835704364262039618514932181766121720953319121045210670266874090641919066784531915512931161152675968995662200513952927276870774262354013616729425606192170846845084136763603683726050134796690309333172432767501077016178941879137036576410003615620374169634228827967205498547282836561829082987166479810334518370009378884652334426945447921995955901150236225598284371072480043530582240830473314363170265028896465972017758373959256362854059666662550126674583687965776797215056816760067845756991797032721491730412298066456848713671526919843460994186809763222427245889347264252765604238690439311764137594322453250858384001622021750225328190551116273623414797841749098958001', -); -test( - macro, - '-717897987691852588770249', - '5678', - '52992561458966917842048333229403244806917799627848421877881735070477262881098520765035249624964340882038688516377409835187369665592703958080735736766945912536313709777389461793817187662953548213601180992839097018162700540199444811234129652849225410276267930982552729151588039493817422762367215695837880393501083343614940195379176805915010804690716402053261575165097342342740863670719437568773682027047862479103787981449864557595411550480691451690239227939258640148661525627569354056573032574365819474479753874049318092332197860174730296445988139873008708564407683788184545625049358109338930604072043506368501486476015294370204931967091112231708457059830732539826223797283205277978138098770871113585235612923319080860928191126542635460138797782729492896291235430456696065935768220494159845006073392139110350323314505384289055017134916876163400462621881373937156047111273516233295024171469513762593244072341275620852077848874899582624269495895402815765777547424606219477655639449216632626280672365511304216574465048481409555551898153578798780997838187598030296504499299634026846370222734083675507056188173301287819190008251323703160735842279757966250463716342218905187576189745969039286653568566712245083192424309450098888181155360995569923237384829100088794333552637537227162177479701619093609870600007097257152299648831715938521942096231520452892461541884420652580871321292450318548928985510277252222535133365388202103209163165539197901552072608710284236732915850819518113234646115533291363606803403675185089565146698511010652775061073223214261491866092146057590474879116664838288380912194992229955697790523281474198511681898554287250127257584177956384808694445714111240128709963424475982531545945446204678284012510035965008794769324049843450109531060002528540713991395046933182699881232634176242677648962206607631738502280973898290005462656772264590786129579181328545465308696435762205327818322165386961509403474972525469518547542068305372202808432048462319049469153118249646785678722142597199696100956128198604501655682922926268156814400446792306656470188135722009834179368221149303323894575881803165080171867765138413350984666824885942458943042705023835971675031330773162756179573615771369921528023990741381103617964140627847781113773752668975380722356219881474606884340999916287255829002765995657643610750292167091336372823055491725335254964911991918866523018470993631691434109295300263601212125887194770564215757107756618621927605011672982388667069376436126257785256735035080395442838012293011886480858182971214107329249888540878170831338663664497081571648293369670697492303978168090750719696674347255594774732019346186950722015778265861706529434650218922964570378758677250144083322218433388621419998372158607084870550629095764769864396578302522198678754554607834625544465903300910375218946617943281021263817868702534903565965515996857490410905151194367951674404671401634726316031502775424938708095480058006939655833612970659151929020021108105677362480187576212239598103259569657352323481949129023622185672875961306339733885857708982104417776147428446169851035372923120375171782152648094932708525562623063044339202972582525453779487351603066880013958145443211731768489287736596200008852460116803737486674746320357688425959700168747470090109849460232048475582033235140686903423628462653109627172118888613705624945389644912331260448674882803772456442287538433120812454253132443354729068891796527676701606716457913622114298779919239138678095658602599035272101050540631199171079787674726148712746094500511958909309383648848324958153313684693020237870128517588375127269029825997693115614438073154312047924340357482412336581044347428383345931096734448615207346214924813291025243318597445591410601657643923497289883965796840775243249869681469920755474682727417587202159996646531840273727959008935890037688256043389201553466973472089962210203795891910446649680901883560841094031991763415446185012636385884139521383390919645656949585657311438685339885917614078799309904047978363483036838818577158746493373606130783588041171423001575976326332942068212106971788178296357879590268289870554895714998398477383074091612380803534549439364991095989289183083877933651758973534265032552397343750530201088858666516716202042806877592785968359618297523122663345711107589355569471982996246008945010788125903082708965247233856493295495884971617005159683177020951059046089360849718770603433176136962787644988761679786793574894146198596283619577589492917433648008790154607904592377489003959969338300144125428308936896784361334723137983098924994947562038207668868190447389976840741447171621269619747614678405424544476952607756858007392925674149003932269670585532289548230838340609191813200074864347826444440499651323577336653937195827618989214774650052553204749548153719625554328240930029474674929792915810450109353297164695948404332144143911830336116561122587580838323433271508758381427202886466864203006769876629040113309536126898286439306875888068434906684986109839807912211044229574073513385256008653277622489509139402265793326372569157760069106457217990235011506430988742050031863394618171218562494463476850191629255740324446363242993320648668718706796758945218459365076583628726166585648610786131608405727805072734696605117814467304269584486848714577856278821187639674139091420868276683680482402061170964129020179849417226407523345979683703744990934601753619379872634811616761518185857620947821097797023780246814812679446740501132957939033231020697754175111520932341860938863741889626558269454453009814222388294592392173794599397585978687451892813356296473121549635013676249164244665043044957101593039072361182135678926932958876432422873012810178205318591023576753916592920079031115341838800740563121977641772239560122596720253059357199257880604788460448454541912874334474110048318114397597184518307140986163690693584548192536813827180198436161154497288570678489493883807773676094581689577716104059811574599177659911227887188217401978474514757553745261264218832355099235158560242297233406180137292308698109610071281861640728221129462482399191931254988997403297870669677165754913546299432301037504530872073067858354779137558761312187986108590108671713663509463849235645441069025317032282653619885664511756487047824929057588473863132476505639554060087119089853326292527491890156165208813193528270287317866931952302862861082174087615226626147432099575255480389022327072418068332438673738233637882790315683455450464590709105784350178739780127964769969011026088597219619472341103459382289201174496483005244865985320414773065969458214373055466663167449827644842719260068316989039810368349530823214414315840300587086860582920441160086337872788129994593466901398749881456816893076117420457023093235142704769500472838381750950452685686468352355934718793080770041896266326591193598230038726258131382339638465090689033062834104050137121528398579502285618016610064410178458485780348478662846002089852720537701136965653853259363332024728436379986256649234691293765971251875100216741285408346246009343410757983483597963489740851123818712786795291798837714819930591978286010640687992692756495314962784887224591285887831740631885066445063662149099404455330521550962587381135521874864351037529468684827186997370955447481995887639571571525702373403403761671748587109161571183805369675426792116895119621582920253789699657615500011890976403807282199844302806272514657032217062946033211042074109494896045803992953473587506222506781346147810525891832442558813747914920938494195556975736956239077078403047716108873401240720217398379985768790248880164667538691286461771920136462983631359473029704858507306794650707316446091278308009089124701630706210560168792994743974642056525288870381921514176601924996181921908722977903765494032218635205563065562888264623205077967964252752702442201464476030020851153648989654374063092609825139716406169830702732441666788603492696815334157061439959989046789065423318960712201089688946540796678378497252260148940700296093007934347669870770800342086190913566676064617891161093655936605836899446861184700094847166382869925437304928565010472625277681782787551544062045311275114543518096882812611825710549053207666530027825046311534181156975603474991929909024388711945463808425263464957653237271591373069179547100808683091655216330416092310214397175383390044315163696300849781070219134615015219064302516596226701912265613020932966925428815092790344445459519486710818501491744578229686083894654498423852571127489975219254353172438337650602238280223597768220243105815348527252142824365262184240072688609964102457657199429178311502128276669149947703560777240739423309436247534508874804401314162274740915591635435183346939875420896409168143366133287003880010386186641170364265028042141513465453408101841921842528837600797310807883817569665409313593668849776576983790985321325237847569765650823790815463692017963395752927945155773792906513914253930342695948572439951274479143533256050317996678589637630517043566370062714774155238038673228364852986154012293796986173903941816772421914136811088242656279247112124439226958945034478877984596864873339798554814421219750181744221681578059062457004925780474249073437168128231790400216332672320703915847426463055894401088311795843457416623717000078714687159781995749578194250354449880164141903126715398601118555657753088212238422071158309996360998060316430904776007237664213238747361809842176066931627956726802459178808505394046664002938285314488362839317461527679372532822934704704470253690263875879702240062788026418261529389183596155698524599722228817999108140672748144745689714554812265041175714545225389990781353970530998752805250297945973556929670870774946985404265424068777800150897438843100570165412465536409965604362377295700424297999045416603027704210682281919437502308628718607989662408388051610908664802514940396058178295301888644151245892936386802507105326053427738255325180381762764389027620113283759653480743839809992357496074117200755535328327778239627950809058337055235742086687019858930046083297050726069315089882694837254737886800564117843966144822575643639731768343937069600705061564770014386059309401600994691145418984296800446891914436526504588487235668560512126375658106759961423238985938919327850368124270203404746108520903433047821070462173699752058768991623911437121303926263567247275258743101051399711951304774969904872170431870967998534905416515742768485058006433022048620528364549739197129869684349063800961670793383545725472346808561542828191153302612521938569967207547584404136442698715207952729855421979521420559878331433668100753209636435675712543276009510142074799136997641192447567079334735530723873493925022491212344710076896739154338361999719913499831623432329457641993249784570344228676317925346610689759322653659928903365020471696174639950909615303515965200146660518282411647170608800939660621685552950249611706475325198479518423077155301209371280575534360462938867984963297040183736104969929190183531952577283379234782953108926401989267488044466794228043770347285979888837421775091151607628072534183685174245345816369526145717126891495096063726823540297588186575358585981265343937095373338996442251138594460569709569806492449609367188654079820152455364920624125030761646597005088999711445807387895998396475835641806955712083403146532371590752368935420985233735695950492134965346564198873831201899225738635547303457400703163201429850285547082772143821844313238723456259228759115534200528631507109400219431734564426566942208047195491924187286616903223592310617985108600082628611087567285767001840566153820546701939593194433998024938689773662808625697973543664837705457336677737765607746286815865891347597385126417092248398027369133671804532615511954414419259304523253807140857494548560843072982788068686101289767274829556337961469578050554176149354133487258534215364379154660461310427570189912699705529950514413147328168458631103249872388038937376864265012237965847164952284836681545396080247290559401291604967701175723121502236181093388323626875423056619719092568232717945805103108385877791944344245670750247392343384296108323807858305055418400741553693700502565024106126585636797090774279356316370509236531508263353733878156923208632989404619022265962263865918260332262005803614050713268964027332085964017902372988449905870060050221522451244273428597501098201640739856281753377806262510621286335117441922221183997764738785835690806964058090618523209727153455617620262903964419882379089412045613968114570967614290250244897455062121766814873521607883867929237291112681395681208806316115052463955424369530957702703335301336133507196464013784297392355963686577412082487656646900727164897539211910515592015131790757084187802478999731058868779493827694303480414208944059771372285831516411891131036856120211199256880755033121745020506905940385581282403448035169726911436826243069847201133079363947969342361067328363441956715292529385906162072082866885762473853872136917177105248829462003088491198093528321254844293731158494353309329359943621539173472646030822664165537362617032785562181639419716789150739604369299294852110605262082459555983084488041202822751327819978152651961662242916641572040409255879415966668785223872853617095739101441693844227787889967257101619837706529517298805962370005920305999407921230127760675120172113782634335023130691310728800481538764425860624015422603351785485421993634219805565282967254634644843789616543323341653341146495092459321686531162492849751882105121323719768549112911144880654693888232614646653956763580397332567522797083319499426431434148243989859609258432804222067142397999063441042035277929314828603521084355742771233471852499158339778603981017500121847933601889420815095445410655577708991650898864592139988828909325847690688265292963327637387564935819554712076627813142907683346250203958929989323689935059457421263112380235019472983111424135581186825910973214910699149667710959563181536691099143613233601161732666745012245211307688622118221683809456064734882630698593204467656990257941572412614139802715394281994293120883156362501711873082011731962032490574884682131178885924065895059613017568119400856466320056952350332528728576467215637026738604714597593759418177681274482897193349099377791845071840865476390482509958300517175834887188010180465835340333367167368967646066303894894949259012937252758312734808329709232360933894530979086189948266744307651572635781288044544893571461370440118431167905294073527312254045244808871450613885567599305888413740007585647252065620950569327491405356998305146429471623136661921767554001049077582559141269075807726942292324962879195004849835063558899374919319497877100701211206496709025329275359077524423372451805882088092879051313263439053059246113586757853983808973560033255079821096458791208111949975520419973969738539460358523519982416915144979569986992658895580772468544281855421641228395656106360926287526507440986113241371749929933626943002948875469110027470912266294656790428857661799285796092963253692751518091473958954584426686863281912392953724819538676197544419608647219428371546066604565530829571887668487791705473466987941636508397417037367030291035726974209122929822977256282776129310660064280234827050717329256768834139633843952427070535536323343517859928713869623513480175609016408364304241592622958594443056559986989106563619631715224662514109451710877519669377700137922914878226108875076080968720985553774478319079858681651339801277697214672775772710298769965771899451131005224958432124257866462047576738776398467445567954900257927297206412032651048753538257470550748950042956467383856098326990699095531754983730997777376855850204059808381527746257418211558497066091371508074576455448794073221457106194028764995140574406949894779285509688637508122002763143590113564857465357157613251821223444359965532981305922833468097064802147367022534931051008695237039566704201353988540866088741667038552935423161581934287462404348346959712557410094417500120546248110357270320222372208679677188804508939856387875484398668973720610306440393165985553874361652311139176073072642232364301455756578533325673397255829115802632064375030488532724282480941523096056375612516691335273199076868478063949077979981834693199226789642526467313758886727034664155374708233413052241176017997770755357925454917422006910044558649830410441042783912087181440912216816911418077643846400706686847762348581058766312240711484387486718123588654129529313123730637305855816034535443508751239517641963906747738873083589048844951039924094554710311263734798500241327075231542378920749258310205825922008644493121370590192760015148501273427214461014155067372554805948839297269789248975606338557054691632614937241901458805041012227038978979812168094150773239740200926858206670986309560725257896194349092782159293694188307081347049188661030610107456715733073715420873434056971119630761658470234370438116245797515154771525887334083368102698399109278569996061959700658346646955565093203139925211068688479012109279872461395639869548120204532938913593022473786111209373901721432107297071448742770742412159279076830118439645403061943303917551223288001014702113659615663577592748103708841776873178445568235386839518530066675979433748005530615064885650866749177914061788524262808081456736332733040493983863214714692393115801670972860894965741349096171975727706157112301169070137414347667759125039407153467452265210719726714985635420293189470049637210766042254751512445609291095350283495503549502917353512206358756772848829158151755615008365723008445582823523075844725615067686956618810366284960890688672135540705475984841760373827462101875128799270857413282580082072800739904057148821354442778410810970050701431502851594089320392059591004827037030949407048303186582849254894900004175510461919883551638536839489510245449220044773071872011316439740663014720019722095387628672305811492191697738078092246616407460689410223935009608878423391167281114435298028095665936771603627090834937282850979762786426899134362341889415374040340896380252725754909908018401107333556100522040895675585460969780799009744922983914153517048037312468584877909733205649413029335540211297879068656419387807383048842494215387689331649844934805491180381285929557990551329032335758734597115389529509449814729908343459195813101027114347572133759851590325554983005153111501432758813072569701126690781490951740575825405497526335840722010023321789428374242548378889836216282253171286247053640123351326348638420215428018887341486150219038345363430704186782773219435948195386840643853198799818242098668338179745226151996534978279230096399308636037991368814207217507069935928147009785676785160027497317009001777550195024132691150567507011354412329032340603521157466518995650811670602491853174280204852628446269615787322879786482369408633164257134657023953228812362587592950746528121453810577970418765900895068401958324820738606431245080063027400254319882177028368653741793457795068935169938691425211024828792631933230877447721276360612404169065676636411366175986321744222814400246758586497722397143948714428396712767471630538898122410697568130170950184011778819880862316215372642601335542980464853249009026580690749759635033913834129498173805649521698922073038683841857811453879318495594875910979538327284780569733959417673964124812143583018523970514641401891081019284489763221082086325354879697385907787761049442665031058490028534622149846137905767487116029644971254430227080575349336243717394801443483839458265798732710051462772605466482812641037899172879970734427748668316293777647496909333662168116654868712457269032630974156741200422999141171874097340818602076458352626593605494845936264195396202806647904404677157734745652872270210704027405978135714048673747336292778720101960923698684395527092073172044177213818544969591585627238532808299570223371536372799012875224234778370905326852914976423861886454350497565400489482872955448045615907842220173649212448684979945647349079756570932865476086046458864652043811750235877344393220429343034415180297212581588145608747445493372426999318493938150343775786331056194752510426503166230913186538526760445807413799806204051029905931303093836872257279463684631738363832006044614840509662858475110814261755496445327276173263161251358809092006580985277059802629992110919876640778599238851224190806234298093499859897877945279235571464696627205637879325947667945367188005248720580469836926696939939415121732586533901411675573681854304269524168392617282088535658385037701299391440541334384518081022468387518749703363096233963804922423094068395126707285054702218861778016173542392815212283678372323848563282862826760297013819812339131493327915541965803998097384090951244169643369018641096219195430772492922432677413755019687006516340030964660067215342977430274756427296622985672207880091256161463966745535322513359262081324439248033434926360421216544044746832762555450035219016309931057323669695525075977196214861598745789848117118689974917406963326147153664733948922010644259043986576126492884735748201429479293157327397169116086340829373474447532461009810536262731597451754627874681161347317493618449699664690398390949643587566379695090443777568885944452505841199312483422475407319328641366974092114345516068535284073079980141067468263817385977308228962318323609469322490263507101669512786080642752319574742157425134152748843756299008728152305538809501024125010339213159780735824709099108882350824446352596024291069384003047531175618027373859127640704478972526885889432610483189753615050833681837753536005311543749368107499347315534545941713644730273702333948596900145557971505509367959108594407502948243020888234056853650963187076323765146652614211207546354464881645918117204811380635728429776867963381852884230518246631190131825530206787122927542913920281579736988824992521073962274953252144927376468933425658712672597384028057932228407070530265731165980966598601076506604289064934821557949717410539761505040873308406110474412692271216992858783788017692940669126619626790274625702146919817133167454141020585503777417647004018422961010432475942591656281157554753543866527442721860074055221343919493702427083052905183704806054896861313080853192781874338774353472175893928663360488609634784890485560515252214309637081204987618424027884591397424067625820413547165571090593288097729180898304860943714385424978418160835850877717027658521907629768814727424695191227358428401962885565649381238098204936255938797308193040643227676416950981533713051600283871175312807406414172316740879617172963584690587789848239482341701897688268557616992035582225306531638164023604262595670103263609695362798739463036593927714273709560324792380672245014432684528132529510597382659551239028729153767533108869546101650464606517031212471681999067256252173869702628620955732415793090541749027540473718940312552425322149119344958406002437705982398992267252296771928467559404038212669370252790729353944780711661881552113249584403769083480856475063987837244029373948596829428019040641426569984762280646821052726889241697080032561970596779105934595957656757479131467410030344286211442477923310898646446342650046369081113562118381113974544065289731235914381813526415129034466320886690781519982064571162447720218016309577515552126698701486349767343461948090842618080712299219097673966015228424172663889427342731020122066675346414052340618598182609249461329861211149036514914521730088889300616712047373574894553971526437268977130623792336839865094059220733603108966045443149552683777916379609517221061627320405151444134819286421255392382822364134687682168786843209394288411699746863444889434411414485519234492407599434325668997799101520066221602884158226756336984242409440361323534712903377984364440121709955882861088033253565408769726596294534478786779815095706073686709431442168829090896416212535563746063403950198043478906364003836786350526095004964058916984298874819382063723661497266846181942426357905013650755458667314604787157987764491101741899567408074361392569794087507924311908229702294763769391197478812554522186741135262551897352184690374471893073000220162512552332060179402611785987981834888043869118074160633762440696320006275857520907876405364367283599977809702429809327633774811777287837997929063319088643981288504577794563897734368357724456507233435413578168544122187905557510349163877892031860938380863700212457499941173051991635044055263541028899765559085615828388330183855986870987907204189354310066588413218192874980402116441641033329112521433352585269389744561428992772734752313702102338324264613628379476243754122969786509425444725576325781027140066964089023790292891876331352393285001370386695304261889280274262043056322796927733119572711356326685350484589411334123538058781520196877872573359539914258371620972518600167848136853804940166949001046871343046124149316149555200621260500187812862150026333455832936133319251080100944562462138196424435420637124060278270301200807655723626316279314677989720701526760643271100348145148124820564605091911779855169535418882307665289900355017573800822546237397396616805582194694056466899912723329771183008166619132092740342879643527581402206500436271851742975104495236263710329645094452343102310844177958838929699065716898974352408381283451421410089914102753296005962431058406067303947323833242313152680641247938380343115958860199956778403253209323348645070739497071952928327376353617380302386451510499726403590049039220125741769453186556766459550919922603305625386150812873799214104365798370292908598658060494523919882837028108696230018764525326479800889430827403509641329404504108584175416299778457550149516420306914056180810908889377149438217925739822836731498632998974190671944437651733816831832102819701452336948218481443109835371939006988086201718924066189320116586181314358289815550824203560990687366887222969587068618783822844334383574224286655847585666103020816988760101669647856537819653647348642372860462072094399934119806713804526340303858796726062832597308487962786568628209393365116177313500258916696602298504935899488231886983956122931761650910471751605728341369214793135444893690581825560582275170663803345907902656817500959962305071703161844221586272436733043463590790972533783408461905472360665984339275927320721268991984362793905235237928358401214308908599626975869024433459897721710178957512745942114341723971665941816834394308329806825884356070709685761638881841811423881417063972638317949761209293108884169157244310554120522091867059525129565074635172821024753666469843554970503238670636464476697226613787178875812109508162171406085559173637604564435642338746751084270357452547638347056148137732031656248286326291618903398185758507933313960978162364875292581607458217158798787916676003226916398811579605403809873107421485543087852003080885632791018542669430381491298441535109732809291308440227122322919323520142248717203062944396531767516101348669545805257723994808980312479264837725492136882355862941108451810186385271944727323937476421051113190387402775727960536639091788137833258176311969569961943551611853786770670960071652604792541940305956411115347733415222667549394453865233071674925052111317188727005402659672862870124353044134138940763586559553241714723475928344653659170671048092842027797901483049343811224941954463977298856433740106969036666079845988063391903825032855950193013788243789490182350376071702678007109765795706678377357340602031572982332824123773826221420577356000773691991307382149359100536109508425616929397580550980381697733400694828091467008203408893560621735626409474184799062207420684997475127497499271462600004670205579497645152495972389782480775949584706612600406180867943792941868858006175201936307008047616757589672523735789473093905193759863364945186628110590148829061593580057092925835363208545182849585868221368570360897560213869098865474255930740671657540215219483723251702391679084671148858456387364281103663462079699683913175189821329916045361853985054542513239589981629807348515391518514157410480876717317086568995965776721883816029400496479881361209069153709752129572198334892249502748191465310837081561861610032985534309285339681126580547626611304860810381677502832262489332934346926301205586228829998320869739620904253982155600321208706995102261899336727019317570934776614228279624359270351092121785581627705454815208145814747270980169200427592287264446298455337451867154675225312599671885696403119745068812877999940157697775260282173718338630223097905166067171605705202669147542203111329964484204150252769374041699642264247344682780556183768647043088086067328086717187740722470761010716276890826844033820289730485347275758989422619495961781370981845507287224106646612891699787304991489991450237892608587094959507431025121524157532996055387813931382902218941327406937104535120623519125622928074921413343511233341463048114587623180196119633871033128642353961758736942162376474650866446500486254254052378915783117942846877531394483736296707763850427149576406806692201719207270711640436539293214966734241103817572475879693972994529271225318511005262619518630808170022848370992692989178376091827819432746605823278836088860098280229785555789098175025591438486997677754831517943543494195444780421155712600231315338591816992539029327290383750279259408507030866894281949592643856951856970260492648859191372445722757560829643128598473999963495915365217562729260899176033339914368657427490270587754614627221314473523385599772728811860813438436363568535104917622395452899623639754284218650275206353695145264760567105459178562491882032831507849731082780751290549815090526014153248389638366562779197588704003763886554458980922773564631738946671358670002437792609926532640853858166371833689910006342371227521888985462256616595134913448753896321572610914451983732905554764025205460856114907835462908762361867725808829101494129427887010484807824575634192790958596192835856035642229775443466803753619433447559913956011510527564464490362903893004175699539657818550413774129471722988670400259357614877806334270973688298172787849219764510531270431348031231230366988119457069574129982095326123736732280724513806554712464556176030636815599985296475879329526942793809334154537286409720616279737748877805830625972559290659320870467177007699656878854930950374408662534796671508779289654115928497876570228294960433889385643701335793908755514074473749964759488535101951927148371376246782141759279753146527867175256859600371220723263087493647651934107824747038684956089218459994098442077055339542213286639575013424597339692639209982667429839922996745194919443742101455841754629560994904267305390310619195510596711795233359996984129886409644969307626193230100243445176341224116774838302230433293550887983785529668376917774923810049977020766265752226119147869678480128953266773825987624533026602499804124858105127910152228288680919984865137490347059505127939634012785058380116016158201512139929087364709693014634031763687342662706605079791983804043837557045973734575431521833043317763655587404678815578341748648519218701877257148921016285162472607623283323249556573753034374795565710904057626708068152251494257423269988884212986826103841847235290434753139713588793284927733100788323782464581521308771041340355123219181562733669769963813626654980259896667571531426558561083021853772568029181635433012078770849834446674149991209906653073314199262005928322117392615818629566430413616987317922057832297584265671398209566291140412705971275976266486649851786135002249020062965980087138574535447132363958635609925366757622786251073626356537120620726163351028366500669047752276806994698670175421508941444055686927449826465211114309355867990655881671257209904683585254426503206543491199687267119577128778582396178926678946290201534745035364519018795390246746811766723584255073984715970376061829082762752016704470773798620997166862372135899943680412430608608549449361762094538339329299440793971638832722944360033468293012144165093312313114839006029476318874961592758500904627465226488109581697907382066846687530136534632837946481815741937620620154295350284380932563345904144633726510177800611951790431250878298814044606538474701064227373555412349001233072133083235347487459787376279403703807888154514448002202951245397248869293062600560134295500105008538576207064629412523316530627112626565186270777090318018659291403078286535004079092813364057772695524445708298445548622123608796436695854008220295952906804796979613002284502190226292523908476214322919392774132723010892233879221455324852691358984021386299602980995708394090452538155116048679915227979809152112372669411580872195011069091512211098837265014358497390191374862378298332979828589280675262431318918898318225215446376722107524363251975033827569456312898080064881381141772242054225493451609900958323016634712370823083984626439009976816172490877077263224311036942854664827302424290250141379316709351675690520061130683735321311996496187247021962293994184343787870574057794627801215642399757391689423643087425702078241032082171429850853657783936393491748921202257137973536585938902448803265913705675751505623829853836767351048275120136814974429359820277661179090491547020218952518317240856799497902090061811729297871492235273099451994560780849999017077268810932708025581118347013333023449244901948116998051103180964193421409328454794534892399934923614215588057091032039363419930676743779898364001040849687155406279816603303339546771517073573996877517822995705129876831722490952428194724842099930819145094619254525540759400392691443317175946185255495513754986746278892496030387565394365588879946177842768690923727638413659745835806393996818031833024802300235446835796085570745553032228525815450531967652475109305456596317989530038989405999117072923810555284059845086948523349452739911967441605727895585516463617479813514316281381343200540684480647554584918667587044879862223471871709991329936110666394849738825285286263958437079344497666129723469849274424451217808101012327262154782486868475696579972204483320055712556519479118501769492253109282648803982799956007070413969057766641895108542980107519788443327966941933926975271423626274088356029953637857404994029785121788713172223066847502903458085949291823486875993171596694026412513484348659991282842807440540512919421580435830982886747148859097314781713081716943137837514388166635564093209988083853631966764152001236937201021272205337526464980001923248970935051413391014325982735295720169702781387326630373314301750994939700432204266441734849243617137063200743900861763556953331088533375662647974513214949950360582587461449318953013746171392411021921268719401083870455409243782703438717812520258803044022398736843362885510789738025682748439023460396397947226212022325837892155810227799539254487217780142395057860256227526753652355653439544898392544874518721260751136602267606533517775781758994893256983747903520154900084664232199826595227499066488170533660614570516974168882282194703476740231831764399346962406995812197194307712384356275327126581811963829857081764545583491933201665655011341750864389214260118093942175688349922926371415338795911538883608650663492494285079393689588623801351274317524162255546872032205137602055977698588526953067919577657802157230724010580762546282119676770146073279290190567417587379003247680752947289021207629278566655115192835788767007491592173561216460960732338187214850961468821550647703718319006714895171928841330718580062654702438419600965779600185378625085906358134551760230035403561105143710833508540322391028617424456041890440768192600260326521458091222064446938238524580192166531189004653013760970323476986163112729146041847368155310536930201842388100514907989986285028152232579121250243087183900990150304104081116859121286448239243348357354426439332087091013606470363706785376906184268755539296047766065167508797445567080041967876599818349026917276210630616917313061541554664359090008971749776374922888008224470479856127371383520079697079481864438879042548335953589849253380664920899400066389165030020576281747877494368823642902286149859757979430259416772186621524014692936483589683321666232231917198657382422968512537393374246432506459315712945887280161525313402564412785562279688402776014658097920177207595566191984505720566032171980817248093432499471573407422741267535537792190907867772310470192246974486242409294991646564339659296311172821487691415387361518368358002232126427175348186260983285915013630462489800994709039714768490653776139921591148425560513222581914691269099627882433950238366744049435126864696551517102338574990439051014288641107331775276925590557112123848552944123712559927798767656060604001870745831020943534367217710806627918743824819528778901432361132400874522503036881964803363227725213671319249255588338379558944373081448848288914340029381563870874199421074704225053940653263054076372331153673021564933861085136777463657122583608153245145603654759564012552343708794221112376282396672216677067893583529685387362866085958575144207549201885063634649664356022770450599025073193635589697904649689742659731140870664049705909529992131119908451169523625982480852065130458048303330783267873632661502527296193654564481985949017941867590637521370248661759842942985486580506523527905415291993129997589693562083571993824525692390012764335534053818968643292421277387911598443675823895632044862101929611888494601135784807263444029447043613253239718910969875605613576775133853633741165480175557199106843404370509722920321859723309901527892004815816154454240322704330590162893392597841258761159890728628197646144967822207646701728736399384331473403587477868423279416635027533248541770967263778198842567490190381802603584303232553124123738656775047738687142923133780711030685516297965124193566037052352262354539607323266508361484876586175823446779222126520889533051136757982925713629289751952089225590370193731715841445105382621870755409206256938181565226769507387707852521144122034388075830457994525416533663962455970297774911851804521911035459353309532169948020448427333167113803415885128164774439258952605402088109777145211067039266101515402978544740570697381766558881546774239387495303310021282368800400514079555621371851412626774730245176141487171901398964327496365698995566554278753549639947813610318041843322486236707793661756645237618569985152051174050866426218945874684052954853332216442206370490833124972712199887443585954028942543566576436008194402325554516608853398435525073932650524074286205850550540531543625550602818516054893310255606074691613285654709269754001340023163558376144694499945698271995324998769772391227717778525548481765287382012664202138451078614644891981447633443984616961062704113987629899385435093671888725031427992000013446048294556079409188916356329263861385119483041778470111323934672117382552154014552689712635622044067335585091419078549572685722517799853945139066113116557823200991839478980485148139756437276310315585052962711094520823502876017799162004452308825294752903780143322159163359216776682795639765675024359141047188281889450388835463485151185055730257857244956639772765885901407478608833348764219975332660938410968229409406088016572970425472041832771272378171279797797035736576275270098485254500981153781872753941048954786738308270916748413503252625251966120660459010356765817802826429045068657112315950170987790686087303575594630278186797170965451147353365942405760693758157024450678772714436915222715682621542648328393696771847903632197735143219253117775874065572827559278669061592703292357856712182245702829796197056320474383079124060345835424419150979181507698302000007069045583234865337926621992623375749971204642446990777626632490383499047710478578862245179305716165431024544308084192556089479503354600043311566543487429471050399741986074927517309966574629189828300270254631391989455006206141157242311958987861149970781306061082396476609746044799676946433313570016028171027821734752039087742788832856846639871795304172840764319177762201671679871703331176399614205812745806594113056822213610394374595550171039503669220580872124167464169590577829197969856928840564473147431728291951743418213909020891248139717532829309139307324676418134145138999363155157666822088563424974605011214474234561958644068385566981590500191642959522021800166068563481044756233678800379514457696678176805627254751999892080533501886765304008355851853948156310423934798610892860385518158372125742586604990037334390212148772332920836540413171820995316460503362722328438872099507648776358269375088834055987113695732969353422819649914493670628253189886707685826733188098490064699162769196462197178091601033240633742092060902726567598519786428036312494443148817711021658763571536644924743944370048324568741512735789195923635121797799038653592749525637165000255493407622344594232313502271601912269778165783446812278845417457586538145675618091493526724848167114864548061108275777820993568273138069570417876796279053044809083376787522011494624546074909061660691640637286419682093499212330107661282280374851441004473097968359669954161836104289719705649964194654369452812111646977860340985060266188051868138264924697766217093257796481229661635130361603763575209317631745373236794727193007345895568742625048392643535752017720886976385547006530147162370985119567662827452345951611661122285345274467812187128152772828198044470287829483436630828621443834283933061869973426636841662503174938088958731532564136006533111241497517080811026547277241069801619368046197038254330917315025484354794049944205979487352155731523443985515670321446995279071915493012622438463701624086676046991036641665468428667863243481438144104997475129384407937791753089800722213988580814506420181828434464111345849729424096408245260118164415180606108341818909452188841412079787980645835501934806620697807291698253154706727593807361760609508840206608172948784237440941360116633737918646533724288158512019153861656684310632599855068395383404299612799388078946939439804726113661786432879308541638420957312446608450673637732399682300434221464859925923221506390466698969039225502809581860888180763430173987356554433665298962587119505406649522644887130093859157162141940270620429317071422670076888270015287432039353142292463201458311748039953024013036300157681289307831534247803967378524151269240623018079511894898426335179627535676928729840275620799295814291986056942345428344453545269535794124327345707388409443474582974771283667398460633838739913858003572434702047552352950879994724952355013458855725485470732726133558254542140241633844025957105365419313572521406256164016462372080325523482769734126885228449084718164714605387688663314237773503394896942177771487500288657934065953470677148012467516329412866843212947650541393396631386347555804426102036080289255754843634434329602817459750576423199736486570021428392611373877893467131270574799604435726228651959220155729187266319233386485777943988660811844393451428256717646755716254300083904773522205309371240685190676214538753207966844645134821197918259003182495235479846985293701759492154378658914612708682142567444147095497018617281359110902117920725531122469148975703268958203323016883831569236133529003603833362202853118400173131984771412931859271574480640448580883928197270433178482028973090531595725903261739123015610187695736065475604480716148290769317072346477291109395091443012208320879788331725598789382708448112357055474285327626461197894056314208119696290296871946392825764203702558293596084592330063422640815063526516709219894586212199245909945107086110527318146202939164664570138496089256131319667582023030903220338472809679989900075966190134720802260549733743988009810716784814967132808315697037229066016638783617803049541403814297797063504097571959601223859618220236460435365468876273616964977582199141192717139286886479366882946601855885523540939542911001721165181303035250295757804176416487538695267810352135675174637329741832437202038317518501153696331084859275436546896784758870744418504221637131581695470043451607111498383586197039434557677809493753161844551986777183528706928317708570047213682844575429346154967850073774018951110599706445779164048664056208523721691779348621942136050587382152008824636852587867072370504325971481960878918898595254980293982721591693440821999279481942233518649498707717083882102011010920568111932250810913249902342481472764561569756057047564387676395955386968088987048250789547613391325196480282398866643140635374540815498886375692701566620478926327386180090314769809070586546850483645016414930149011180928072625396135675547919261758488905962683028189154974348858839670607559911538799594215181566419664461648293512903197378392772465968575275924040207070331647259700136865792916743805636460060225022009555911506758744722703329764833376608884035244776681807079272059851958248969103955274321981361055653095030882610383596652083951976626946931369787729556364440715932097751242497500001584071338920490837692185167860605115070019549822090122604643634410262326319800746320962802835287034390354111115865790874939042813949509988832911268012219132145696181195882383952958868481795589403551825711445660055304159790661413008365913113607195310961659663716376009165695349750905934408643499052196577976419823962941950712959992212234788580725813670158180525202141811656107580848620353789727923453309609949287741837902512599149154339176262431563817727378679677652789586189907215092360394745291315315178280769752824178866136127120364844360843686570666924377391665188451950415163418019008550860833335991205615992745172384110734413150392823334652249716284396986055940980014856009188306532585605420519999060408247632994088479770891700298117903439944095625163759805013608980060771557434355471774895250923968185127614872473437277089861855286234820208542123288985527978805250685814884921559427896393702833660533784695823628880970072319349073259978716833968468179590572694799891627034479004070759376277217793391752209577997711609243576249426419043330333248714674522314937604818018967788378992728856961524893134453753720792091904689980700491208047979392621587263636601034393317517058140153695430456108047489091988799433658727319727603208464797159018320689274278962431580710268611873345082042650017311093587316737506047072564104601699540422208265285367519250051097876841814985282642872180071842394128862870024131550427158424470800953331106953095712690997421000768047945089087663231635404628237322206056194051230418812268915485268026095537420507465353167347945777910402999486556725081524841236691353551068809229611287678981310879402131425967814033549233559647486789458759659524816156257785428046357885788728798334726449873717622126595441912361442030013584241365584775303418366701542287195829230746483209292971621640713714120962019145289378780969314257595128370406067557489678645404458053687082712789287239312499629853769537574070273969474157449684007131644293612697622540605642045541405898737405461999281923424705046372116343888909788638977762339671372562117660223660695670784812600612056762192717861277640703396725012445752647660972755926419081291679166524667260979795012933256505922882790031660146080407763031478392867425713264775858816101821915969759500481246145397674060323709892952582602767900235601067846724543572473980966420366855192885879180614548283832841466665075996354149725301338358519169323717267254062579184541615446217563552842801325876467818631048968727579042055430766829056006240108948018339677305715364169866474021158726443045415282083577876330771922441471903310208177751083536690365995902758865071635759854772834694926455251271950341529608500788151798625090215572084029028380951507817448298079939298183520695590038747651635996543349440728664825713158380373219558529466057128032322906043454271320772921500287417319365976168419625624605115776262120980985923226829065963505843252914585540909170419599634277050723038933433924966297553342377580579351310874515911272119419209407790850494402102776888845698141493104421164929231199034729805606023201679897060290278578720809957791951623105561111133441647850732477421840889254450727982538571816636875200828789909673369478549612505123453026030215697838939324904100215648041600048460039211128583146953718878628701163065895128903772760366897751078368367149449860760323482919313636639333077112532263506484449628903562140910917184883359776685061477491947729628529940226933346422619715834114167408979784271108750432262839890447106483996662801874672678069833459187503127812301867619501888954744651596042888493821496812330875953213277829557379428092928030401078060596211030759341486094758152719531736557706698181800703577011933959623488542790769609795754171725493159747905511760096118476672312212214368328427513637719899441014615290328882809796585736312071114005119700172543463579423776006423420286785176042602478265390069956838609562249314263338461011350408175605961013927967017552360420813070363697740897703263694257754856012654337464403965817533944829983303847137943128996206061949794495555772350381966455640399658960314931510072397034602157188468414498235332005390066923861865352437171408532901795023023963305004538478595986842966576827375616876814560462321033161451137536544148847560393613737181536328819284288283654494839769934062928897803037442335381073377792138665249528844845017487627988924712134129833878665284628767176241405461020337739105966169340002371434437030992017569093264600981712234552096820682678182956004241998659956895146005707847390853503811705773368682511571235504699508351848211408274201762880277944793124322084314104623005572039931534794296111644783972369615224022661119722029047041665683970708585749056976393919847203913389066146411665473936057926195115695695372679013803092665461271109469924054694941918792327473598367085225448873229547450901639248463592556312744455603370397515050475356724383915330376573631292372402745732770801947701519132781347983632063172159675682339097266427478373480515275484903594400622175573994679551026905871042323165045382475029142779227145853127831067763040180729594761438319420585431546444900131105212053283280444109163920317054623845778114784577652681377523891236283117469043861099922393013973145606449737426020400959335723260763918132824769576181564972959353534565137763089779652100094511330446364797507184259503543793453450700361208294282937345258864388186370815590043966329954654849125677177327740604000767897331162108194915690616287252972595860248117617268977717440000074061968313794506703892623292525804480259861766805425912512279877433662083855611776315705013366749522257941448775139795054547860959739810400803175328510521654357751870807142781191563107709530016678215888193691287437297082541468231278653445347712336543897189813930534546163421054102145489580924669226658179842336331091598641340097439471837720432580138626610040040257095582924562504785423881749020155620716033485839761416339278967015865325282388487004257267088252026526083144317305666263332820011765688760660248950414043569433347527093520428825842731654779513418611057685506312236998762941492403138134130278628895223957785888951153773377278219125362017598290832241727107181732628628969099360075180094934523410329138135442828417419667660450020302725791226991835309309904350519775277169896695751012666612484996123705824658061230636549341946353772353847256502559299230059708672205806258078192365971229407426411100522203370801883360978801045660422495415498395392435169201553938998447359782907217478259097827470124954127685902024144358350312650572612101443964768748398651928890056650901122614041238234484827589365452085753800901291898609505330030279920549391725529609085950104393364051410163218270357861744280293822046879547215661467548620526839159988042187655020925238897459763039384102623956395291728187832665657676191301309167658030267202643710625509623416068746532059528983901144863435882231708345398017370764455523600539902232933592756840568086521273281265548544166869155189217769253547646162274698681904982234866298619169147606728419531849753765787033118972568320216833418202898103877938830638735413399030740564216566952884545843561312568965256410100307415769201396847369236405710036800927520184308720379877462570422389272530968336374888153750668030474213183276584156135282037084306452805350387567036817741427086657772348793596448591205056211475960654991794579079509727749744145381046319701859330950696301434310162412623394533581040768155023230373375367951934091941241165048796250062129299057998101829846308428031549873308933439874652060342146147487112567741122821920746044030465493346166046949934759667809163747600240109859253313224534523318272414115305989077622667597620194386096109434183389241552231538271746064990361981994758480643400109172872094736135632452901332851948137971314553706055023957966448686966821991071157048343122334001260237583112954121317179044296283918200831396802298468845835281830105166394193289527823526663377548771320675672435904302829506965065381751997283437772160841249722003409268884062102256196782344983409233009570294135858257059097270907739258344911489341204245278111169086281184455973633769673687311268585203110806661036758146943995527693971279945008388466314779754691489727612537392064606860749506761615404385929028920080939532208104450150030102765923748624515319131703319720895752546614973524876482149732609293236236247273777247682281412717649106363575287531179493828389605764658808933368078871183171217047349880988574824325448372362610802218446169817070746575905701523040744440387553885188323723297560118413455086687428020491756241547694681510237054642664561138533959873257613324391861408301343062755145453231896143425698238618820153199341060086040582767420305271235520616347786529138839814469999702896131238637423238457679536703133536334614066610801078208632267460386521332681908693272437495162368891180048919544538231408211021882239835055241719820614932102560630354408793308986702893896750522314290296683540293827484505905300023101114992678464105412926567451101220289034894056181353733141385555104182626617264287068129416704930481819217760443171667541407462632641111979636261208100709624085412270249731273141538595684501410362538480004359104643319518414061525957275846423061937152965946901155002156142045064539496986370236697651210737114979925333838233483192299783546734471866931551536263459780264970260754449708918898646840741976940696392398098349093164620481102695289878324157316315265067700879853313949779009728011413535569426979582389581110912157244737931259265697284970217655135182755148621789122423740790275289578800695567912194172232381437001835055296422752802918477505980017007907830328996730968596231403288779932382828401789209564023214626352152557846773852252722874386407429775877571315794193926987712301114758359459503977627104506796335065315210696845619852741005843152072857586021494712277348477454941140247292113886806982524284931523693052325966127425300967746893055139725681250453767381048254515620100529385732505537575705833592952363980135107610728887764666569723973048108451266554589176904835207707227061181003264797909809603964010740136778165330131636080406736628862983444586970582772349185817537741391488455814718914037828201228379025106991928961877954472191162771803243900838963413363540922360099635689809501854005721083471139343422463302132347161478224568573755012232757654186967083217823591384926492065733104917127987001845373958949362819097899361570859947150307057739759117086549735298283819946900303841606500062502318918356952336582639401806122557399912051397857458771314546873219089182093197569434149084560114632323348457092797433851092597638983214843267901257463663134781314617308650305690845449700988250818658679957942716416638441577123155235542071894931406458086716314074927818884112642886658753625509830302008526793083053660843091515069802823880052816971852890353005110913111226709140643938928883849361969638411929899250818485685497351413304912979628343794926690672319498774771835144880126905945243021432825265901074072219675205421551379944471783809347780511228363292693403155051134265892661797569449245517472868660920599174127187787266072773703505077452795402984339284890109683702584921296131737245478223242813633895009345139605954330605487395849639794196025882962585218410041041429164367732771713486946842899444326395469338024741363056416431094423601582895344849458557569072143815600281853202226854482541926313966220609663653863085267317512426610902406967587585145668827935607177770167562516200765317627419446873064701802764040551347065283472151903752719308428159105984289801003877027690073436219093706923712506639592307178568316033439073153303229391098307418523745556949162370839618754825331714657520945252013875481051845919728709239722269244770125576684572285165138692025972298962448488064282487593614865073188125074142887636760634331369470666365999529301391916359895775328977931402715320155854718004339702657310779570651367343411980684708960460486854085813610752944735823372229719711477975083318919444329411604351499806575223073087721623022082458857799250279934773245731569510756715017313617596479814682740942606042680619141077209118785093772744481092324182153082120461148314509548822990848713228383587947163388561905319606931240687609278063872344362746752319253909833481608694446649396658474584472355022720916237042652989203977511744555535046390355716747577476430768291790028136110008828218535184055926064540415942043081374080942301716267577776825913761241698826441242707207132111082549055297779800869982368478064129006255786388275389167279944085935618049212708094398002773133828203282452806125310544290636953095062867364164973356884934487769366520655412414671998178217851002471623636416831521977100539461389358348201695611378431285352130979354332581354421771886107996693593322598686163173091956900566100319732711910014276847848482784607549460708071287982503797286563627735864685203387781411711447488662580506919074616983249559689439820043740266093359451795279470837398893812510457712164918416267341168526716387812302708234976506100956892054099586007977404466522826031043604785853756197203659574797542326864743641930696275983938639039383976918529453645314080185326049716458396631545041942484131324627562348361695524825293457752765911242135039196794110091975825747570795386505568799966389696249682246280342966618524092015699346105263218024163990791087132083482297903130763979613473913387176208922928712094682675515949616267443388284705478374658029384543881572979624256705070684391120324441805258828422852509250787864822604748651961772908816194380783959811159097025994482453404926919796944922483742026319123452985413278017571278566886309150358857124522190490885881345265863704746228263588956571919236644608937090368268874303754973376288862484085353465640115041462926017035394130089878665138771334776409467909158695157752579971217718909443837122861551887220981191484052592382920068292711250569816439601772572259768012623447983369317370268885112258821014795706180517495609583877032038048223764780202857829613900087634097949867241477820722398981112549887784310561560787017925696945478944574899189450789104776948969124427698064774021771308210774498675118083848377140246948789789200127922544042988206918987941080213229730827690255539103739275582043076502307615545309193623059515142968291118529600993950169553663464472074240224949614572614109928901068324130068211147114566598653975234575260644389185930565044366393116001108968881017090742771477265223806396303581603252017467829710954822985343413521574441176308265778385626082663160908651082450850219494390316261203030852320657614703993356424039212793921477017152023812702975090180642248767216176787186820146640075049858959179489141898945811981166766767170808958417303432764811446543595418634015844195047934691554050223561608312574096058566460662719383507164351661101386660993035073313069955716804706013822525515533056761110682353978362144060302654190404145577230935702804278403687876413224776226002198161508963623553291372473425796690649269790459891949449662734434497162619543058824618041217236890350648441493035341339677722497236966734545138008331189365802094164092973437751412787668677178386372246386901815475375282245813809318446288294605920682942075072774629822880638169371477662359989082379276962773285629649665570212988295554230364047191993415244940920604530986966933515031262488004170410349415695604383630856473825495652469190529276541843602095979249080866386859816410557433030131120597006919307418842721380676606492045017393675143982663469887726869561867405220787200566946232894314890798822098147226028444874947376198263353641501588628128443875786381112926797179439990922916825839092357124168749174656866448968685552166470253991097450460836745665776472567072345311249003579071254220431847829346190277916865241513339550320580978949242251407171309508801142462524615167545251923953553812812796260665256935971137006909979688518557390466617284338472954227671934777936276788589891063819758889652011751278052432598139972244722591673113941914651135780718062103411861458368484552768493818792461621795938862063507451763056325760717280557051015665570040719485293645791748867210332743309567807945264041911552088112683723606891810553846521465344581837340337575816983786603970147034983592476490445618714709223745252830335030049582105783537791929412139077666889615999658819848049169039429437562782426105040077835870008683383707489836861848947846519033195580928067520781916779357919581684434751406228043820330757395441949923732785636347709074020264905031104602407841853676929169108066940640934182483936811287487300187931038293402458787582994845693268663457343886526115370317989144981530950100566693608492368194385097064324657539024043053941959974602378726196174219543946708813954653192301733919067704673869912462150060977427632515602398636678171393136327767037299342951693778873671329147637095788215580934326288840911910852018852545035243020530629293621139561443932574144697089598068829122935731776730489045717358325562473156966942186455302127002114022039974608747779644709489115244797796589906384418770997189567851284837589695124739467392960938675720763779185299900011086163519213780957046726615385324925492817408567133339731588076377367093080077926628622522134161015406886491016458182682593162761762379998002418582226999896385410590275161171583552341286538648885208081413890952551752752797152221884999513693097781447598139937479799584372915499176297136232836731630374010313502043942856037083079284572855603421118286922603912225520993199838422159918448395641159089305976756705607255697017154184132277599592427392938983213868915348765539995943077594858133294717775720439621772454892132175003496794944803486399576292334316087142198570183000261767196592083498937714834808242405965785655310308867240264750725084240104837398367051824521123066238391904852929941093000718163245431136851931524669736901982562996216814232339219187517362249544143838108073634560101557169614027499080920897378574498357297870125151949273252611161270439044500436215339165600634590130638837538406159637912104127317075279667888957046588281010056971189276119613442952242095845370940420408785438221448450917300404499485015618821325815982156305406684467854915034867591295681736123801644123903472484880982695945490420745637844789016272486813545684665580677166106400066529378041174791179705123454191196373928042558220338091435619540304355802434014630796745807381153118372758265098581751614693253118459658201085261240929239816470742412216818546733542986999607169421929800394326943465975730067446356260970304813476771890576978631310520918610986809549213489461855270160970352221518582845449240776827108303819094494349973652345765519749649310958102444092065522056161957615174661219101969136249516408701120946402626071662270491861796002047372616649580878748688354792295293871534443385552049753198229230272437336753678022532393043874055184367911111756841551329365459321352608483315813334374337310568596237612671310603149703958105283852010022577250217733701047198419667300512304972779175103484703105288038490648270726239725182927861156936432252693896147533649924016941277794467332256579075124762539427709667169335313670086668318029176967310803557640237231328476703794053310311820101309395685542141383864830782211759227453232247222599993480652705495692598122075926249149059025080339063266945367639035599443590872363729278907201041022180650203892026357573097811468229412919246771523165703253446140387755383761517408100583680263192942088900969832791145099411098175243011028495152388183916902688052544899401372205613020195513891997531637831222041877674524454439472945945212254095374591974227370351556447699278732972179879420749801974327671114047748851166038416940672866245738532130035162815316105688928284265191769628703870398388478524535797061411200689742531616776934946758693566097915215363781852121921266589221146009676114370113880990427548952197197793587964394675135785553969275488255012991794910026117762758243938305646893882803367448467823194897238658298949353783762585384450212168523959099319015548041035269244644024724153384295951342588169331291340066513552922950611042664665784552557527329526991222642332215088273248516866665361603520835955238201517248244853520194287825971728930306223831381541107286874995748916814798772743186221871346550267849457341258409383121259355173215564802573398512742704407407353903309711766205739603005850572880227927179705863585546462587859618635376158672896533233699549913407067756479576671402085350179079209249233543131557488175982125732060048551988337610948620176856392229720122234214910003609592928397806655297646929652255915926843451405045566792524234905885047768125291074726237865711707059430190638416289880363751650390879052030444196453432195347346546471973595196025067314493203517091225798046431962802290239671550536465115332623149980169153056475053547607860207391885581969225821190724446164347656307844194594110576792306538361726391459536687379047485098306982872205684718711398869858317294785706246042607703321866399929168556274085551900157149582074858798858927963962886642316870029583741380775822184803732565395060022164330511870278833384757665789177983496628191962352707765946493535189857347970687549875458419045145213049730996897937959794156202605143810611598713734230136901890281412728525398320287477523443561838173293818292316049345833632539136167226924039140406480460644135895289197019166310421168967015930147894946958187321911099505281897711988711986440711206781762152755466176871831112451052660929435148527879081317378330218707839157868046840119670787750254465819236549430724723180882781380800498009997681913741209779008348640190124094824911594977145019009747796649127544460467428600868260071783252436776499503307448874271267037441639349631669659614339079901183854967640661714971402324716688608371364540073251883464247008581361272298946073942177695211713468753824764056219306029960615714963478676063271289460377364780779908789119694374694948721756119137458611220931626554435268407506342063623259853423754193831196822960510641939047408041517463239276398036147791768823711124554469403650924174273895189888261773301296597176093238168673898602284494223265973033503023529023169812999040854518427316573312766087472511745078594697118939720977713302594750217872938788577622688281692810911636801747417784941249725383961109844305428477014392159551331431076168788988569290084440324079103589355431543999281199292075106877733449820167248665228704540250235452159420892950731047234328569696921783329007157636061574786939467398213664407458777725098055171191943136064714165161316072512894042066104560945492786017799288070461971906640229475346422951137664902689538880023720233208657917884402752519306741337770701896574672161185533453422328642339907867753444909885936388031154743698567644292878171602323173273194876934667058056987393758751001171478861250884636993226549158207023070147724477550431365239144561160487466568984511452077444385275342682659058686754277070638882719331385445448903571853607535211471856374412735709013764283377436284460290231937342006032339701827707922817442089847588744750494996349517641320120671806850677834301397403339936324196914179019238540804491813927635863888947846261154343056708076375323933598767814935726758167789515936496642310804474947475865687661340840217148070121244073595708069268852618981241845239625501954372889470019480473741407998604411900951037029193441263418405020994094303361480076149295100962624745446550467217847414473500041749715164653532302920687277804823616802221784964851015064347929101622179630648327637687380603612754752974970029149053744377497534328571746960809258496336943458129317117108749110943530231269560651773367664239430832362186295189004611440592803547913033137146900023343642270506956296218655251529600728827340284662917217550133975294701804836435603468062751800831292702336291596085862177615293016738724534504884272841122349359660602202190360922370551132725799910004522848934386417702739100885687810909977641047143363695788010064393522909865656672138344979003352840989665576735791189768139643655400593235417439345892545613635058062893557581403178518529678550854034011830876857075004332710375269005275398156726238886594609684164522894656666643117415552255406921470418708233253877054918082927050214470427530282060399553781104384375329931827341236247969602131021426032878342743245861195045306133939322074780233254643933422730663181976488755094378227681335718503138551807719931614750344541719384731755237076027863556146460738410843506758494102586700860138868618715321908492007126865589707875689858105219292094170543344099565493690834388075882098724877634249396705111127634773665575252350634275462563176731500256038365869233021602990256900032352927488655490124416903452271837447299576242220639010907061858064097277856086727174377391537703531304601984931766854839949112775796533738980020917645130808081778526229854568799545636474153830960355056110667221970651174118436424704955422926114611808924206118633986104009778463930878802091271348693806759042132848977432544907839407229894124083874975784340941411789865437199229987857679079972812278866111383228117434403231935742412951943355777337320738797039792870381403337389249836994358066884293071110536418096095489031736481868834142904129262251299674149240088681775282677536767206682131494660086697105301879195912692669752737013459414707875332326832316805520209926198362044238796117915453474668621065495507685425295760656476351263333253557053579391889347869918730826586903927618911562012746134707451077209085361192437234954620077993720817707292652708920276099798204463859903235184577063288658339775658030543696920328358660586443711471963490741241704808567130613058265648429056733041283618448067490882859963365870952030401758438815166830096400653200589361857914073145024511257892789282012220366162507932778645783796644097201418760841458244803535271505188446325364600228373038329001148344983727415780410763608177474534085659766722855438779553141472201463883660140533273604776967204250729068893701780448002308249402131898895961276065230462135625138814289282424482034365894100618732231319262029630825600077324878984657127034891232398030151880850241090275223242683618285738275138652335488836850092016887233957720005123868359875312327017035129899936666445612378536864845904651190457646440643419208135324042038936473647725455300569901618785250323245030220455885019543920298770089651967385349965131986410066329735724022730291043988913669457208725464761438891007894401376051232101305572947867492280324821625860898937283773095038586551924151489767910591860630091629894310383726671100588154173294223723532094395594361641772465744163614789556332071501898580910681585287558325199372423177803751934338469445772702432876660006353837836703326676911276499512012962582693758329854966142867564873486417870035100330795449024284598485149429540972856737011140039980827119239141453802229603530372324417112527376064694011108981738030056876113314966941924915704431558708610086023561762708054622649049338521931180300209671257547211129794234628485633664404045197995878735616750046586846414924027073838323950629857186400659775611342196592070598169552997720795851864641489120086666175562439645778515180160384529046359837419156435243229978218877327828099325455308008277836672418275750435346665325739671985506750834857577562045612641496395264482426347660689847274946791804353362366051874308617906390474552359039812115785633662445482431920223051425348154020780114779718873485466160750066983756633375027947280911825376031437610838390417455312417927418478813239767795436873710212137850412494991847465160047196051375938686881233218288388039855640742456557676359641088365920800229589580739998212276979988060059286433886029676374980065493978457898258899695626513870863967195189417628051186051143850527902484536697960050092080018734068164574345216950905142467408231172362206509108459790789900935688249765506819076585037292263329658400840334443703911651918318863206224084506177979352979979285550048957452854769917110802987647100565140080883702332581718307479417361622995966993017794884062651434505397196069395116054966387078372208286495937249742717634708016775907594277259435004301089035868485896786714358190271668478971333623690298798338050336370164705382206735887598487705212548608557462124012177788808319104211003460062057906595584891542518494477419946177808481450736030647936524026490478748604770354459201268694152330901493672916895616887540284078399037382994770715721275703971619812251168155469894038647837135488907360139008313193339134501666772312541329083212102053108202297680534247758836007215220486139071741091128638505452260822036101738481918768120578834529930885032843468332338214627474749848240644896029175385104045688659856645221426062024389308831897432888911414414944316010763331281262581235973890151347909426838718615554968270002332886411059869219763135610736692850809498283104418349888858763568626218359772693675365334335478813100341812132988089348275392076257605274171608160729989915222663996382159687340262377596184844167241877430499467266696525961873922792118255327000888738216608308731076862754700201872012123299536865580913664556003609198864693989255054400782510467971752863106194886628216151529602069027034319849447481284632401402237915640524566126561377818427940870089696647162768112040175042203777960661383494935285891145967925288239477168587336692115864894200011358348022914538241180031723440081229178541616281104862485893862931314781580929099849929790025723663385256738050541378141257540675818027576504555692856993175194886865046922723986839223166952291510690890165099157192201938772180073744361395520795773414273656501934718321083650656676350516063046085473676585281605009155309372032971540546011226179858420919660100034986158006779424245268971529623483525659750103449182862259059710785618881444488273733830185781054259823531070834521256848926296318580901514461365294130225580731088689780519225535627633596308381077143519930759854675257282942009805297410267669201305522661882855813495497652520497056053749341782487262654372295554021810241157615877726221411357389852569916914983039078011639115242061369651371401013692164044884974391754028877524959096257867901994221198623002816636508756310729679857551117387731256752689642880393660681171598157168842922124970023435776343451437495070027872413143136382052730545706647770154682968890759108065134153342367104434332811695524280188861318426064822703530749854578337218868094306156272452304474994533083367209766079100311153501642596737484121665343039295709715162425462481765140610641555838017962917754230969231794114357430700387322717740738700586105183786602763547733814371035174551077017360266838442258888747614643313397379662416429156052575407391376193894937027042516265648175002807819642603937857799995239621182362330573252823250875082493043588960464387981115975753794299806069252212548430384332671093753746804835254281830285779599456875555812405004701236669125054076108557987921717995111107562970578244152387726255085686848362480641995183322918564509299994938762357299373267298403967538867641015301737963037778935533677014535475081011324338102251375453801006253492365919689556561806644926238039334003165876996374577216681658198479696434174576239983489285798119562279428430558802982138691171545290362097942755344284308392470149696692385008832170298237602126371562027732535865155136205379622116039954181782634415852155025443272581908624586124718784401841161075490255822610513885381104394407242095324645046737970945278053048720938057263899032107869608840684733339344162087061315569141541690358031957803785560435492216633041206749563324626493755605530361499281079517131761927349415342519441964635054465887408014195734522524559152447637762736882907199165483902875080669207754106332336256502832340626975864600210262400101441051902364927900090207197793645715907214990645793468082625989637516323092550321713708619296231930612607825968554907168407524424310608239531294860686660184589407429093110615079805651419178750377809588496473618838710537934025083717492051238501689615871861837795819859955137418083137190691464237122867857076941113699916940827867146546635155598183891552561999272509207582038186215300842416270615518293669136213077130202556885240270140233207568925519285405771849714349471020896876819018560735591774498811447805373682376709486718830434425059480764671062008087684322053388648762910271810955868607713741226069257158205406990492338283398598719259050095358273501618694951416638366242854951116180369522536621635584125214368967250494375705502954384661673054380970138541985618333307703413139071875739741609451613880135268595475819406443893674820007777916208203877574152238813569011666641007250697809462612754152291481878329339085734557254848138124936556185175334404245302932807118460919917012991472799316658902876636875604608849255271382448180701117467463509579827179311312155647669973918331820253398718845511467390114875450661531306595628856340586820203397692389477774363747053287232618196637648971073255115453659333031131019093837523754490397623506257940717326344758993739373009238759217149207727342988082941988655737337424383671105894614626266075399694177676862204501649525445460526198676572751698707949663525811638304723613463002135975787275725219470228977700513200757408099214966882862640139754551084791362693587493746696253240644150216789661628399342329702628214903408580361406044014865241815646434858794634740793744505042692975348467389001436204130244618877930798247365606706702153056279968717165902109591520761795948311965675398848465582109509788726131456674473360619242298493294306142893529140284629321460464139719168132403285421872814168793663610126392388471464309607701426225262223971884231211723241178528251170093721871534270061933311595498730543615131823936392577568967539517223475649003844997070368418613474674308765914208900631304862392751757847981277864004326705435717501130544568703269262181355349929067903403360424878045142937824589905520457189140714116930371407937881364516096680848055029622052790141508054303412531022029881056493817180956519513504013831135447586861323098418168321323757426239151245839501767790833857439105288430536520736402976318014980944312078301338747341912237683935233667387056271874000661136024717667617300205568593418411197402206628045098944517305843697594277739425160369909705027815638484482958311632383602361876126761221791635737974614019349604656322329612011064354929806407903660084039298666417004372296693731604322471838653582941761393122932124245459427083911147218652760745724866541400780804430839314587578113265531861843024870552342479925640847791089732550690026132077594543080636376137051201361452908792574156595525593276359496205983398608460565235736958415647552120820624337542814051703358253495253346020518449244995570377607785573434495947148424224572744751333165970865223005975038198457701646057586609251267367198979242242018515250637248688088871295146174992472816153707592002816226506493229697005533132193458466936497983217095620954670749188705355212240606036419133669480054626067267215568269605394789349499180845560667795288877079118365476136004044472585959458435736732884420822122890055697499620834968636670013561346785109748994354356515605620136568323207434115673380351968083658867696759771496500802578150156205511916453484276295580223652617612841420795331185687514955890841972539396331337316916351046072476706623699657385491293952910671198152781372078025150413035333790575059925316323076926234904691078439693919503812227253037319722474445107099146554139139585293136217432533683023927670384608882517657875687679367688826802695940687804841146418106685395001137486599604050942632173426026287127546531963762849816204839507096419762831052044956594159855004016940136789708720248178961350768270834378321868474677540495878377199733504049533538772454398417964054190556459785157395626879579992047816425017023482764979268964008018829532737403651620554211646915489164186182798316074919088977587575253262157720481892314821402725214316039005468056289053399124229893419377122172234826209868816665230233616502919564441257594581002453851979454393138900571698717665775892740867944879706667133985387529742552504368290666490233018000734096980479808073945050477005629620854568828395501105762860460748314986895073828914679474789748527513182033344638134277887902612963472901444517018438143417821376462657187420280605697389887995845254366288678659909456591066483923766921200942698991230878027491810036505479997723983042656597143100832318711397560932673606500607519587893898968006511950931308681524097327560388960449834255195599188432513217605952122193310060569405443670914525358791994638454429432326366615887989248283154920673603470580706613831867548250046983629614530832844894203115195024594470646988053908339618926329288307421635764352491973317395839783857928097959775462224577413155778815280270140280183489248197763398347358664975682943231645235787590879860390876066246240379451402426464566223188847688056924183288654691332901016380627219840395868061686735569710546245018166634138876378118656412460912988305033297231269719605327649849145386179128799275341959272146560632299549028810907091312356730423946815705261442498829696311632781749438332180642260451002539535926743011856879965684711808678271008917936930854554716587677417568858142399652272251496972961508077595477789735977166069206523904688265871486630416729839097194434388762595270762952480989071480850435073905871744681266533585665209763017293860317850306798448933509154741534217851834293717229819114541440577969862986380475729358654211570390196288226634588777383624005694618664604870482825275085166715081846966912011861668904757769629316542538464272966966702546856591634179170709790375852721660931710156886246555638054452364617443736259004578487317781662207444596091645029647595952532876958226373385749776121833977179892556808444531368422986141522654432213299872447682929801506860334099132784318954437215905328766159443181948841547946909751109178351160298054745607824597883460815700319418238597794230052904049854114762246201612608843569776717411765428764240033085327597705212634848400300748421128101784787599628399531772422652689523483453978463030948044199270373213609678688893993034604283598130447131074079839261197575844478543836718669148410596408518698649459932637590029734297837119733638416379734691214400231064602461058933789261762335312910074998462409709331485382264652492013791865251784211461623485811942971957458982269248373677379612275941200724619920657380899508626812125097502369559452314833258864413444720065537952020975396495991850901486731351518109598195687443139747651552324013557805886418933529947085566865372077889287252337948184687538937257038729540045045833436319085659052025791360048431816233635756387365413718971976625464688697596872128350645949087909756974073666125132452461233459265630928358888029908714397813123863792474307470691350937641561754523107565386801177756340991837065258690416650489911759226201293310124738536232750688214749827030955510983784128325372475161469965488404257495219056316372602483751466340010554492025083921368942015863898425791246738845851872718854832637858632363569243155707638645306391476136889149752807275946394403861412170215765362418180470323040380570108221370431503601899546230178315197685525715751551466151447719649094281690954346804349549315803597832004615651346211887077409928332658606628047657899854892509258886520396187956748336897332390926965463883841175378026821488605835558124650258632093049329910306812195104846742621837268128757419047426852922265868309214297082105469372575975176929180118434696948478735635004350260201072124473173510817529991708783527540203507444126568487182014012707333059916456897528833512138866463890054511850816447254550449860466339675370632744853836099597683423899729790361675693473167044458084656898049689383627760480335392379511841670954300312096099484678253036901110456621552286014981635335946702031364827302207937992625799382112541273652331824416795506012521275422939402357983947734074160692210440586935413034290060455485616966151091517939235565251322529005706626616399840747556161292409265342001828229214224771889207206563499360255538814431913796473292313626240757295374922151541505481486161439447708184391503375595637129668920933750343455058857906266102795051632484347517785978295775323313411556403338574996054791232512815178829995016073083615911762912807140943265709421880676954040922156791249216105364614646174270237019981464259861076961147343871418287024208577454102744157251374605807559652989668103983522331773005856798736211784358073721485893715199859942143076831892246250938439460795076346481880361828367706783175298020954885880573255887648742217293879553030687797055720059330561244848166263936991471959611810810988600032990009574880224663426077308171049142086505869148868192698897864934503622373256781630869980093411805561454357990857799965478299502781275790717707902607222618674689348285072030524157074910082856597144675664428920309135370902987523038654736312562578641361947882296467413488060279839437488088867599828236051930534701304652672217445735590772535403370902678093448222682680053593274050927198651958864999928587927875397210715075391153809797413174486913411766000980892551332294603430136868166360279931872592391424354929275993507786607438760277234827033453019219188269528949249774088459798992834262074116509659699273948423691240298934697772845831203728284342734080440582279279449385500813880860469186297615049748852512933782219769723482671459702540254235044536179822421216874614525001775749713947605392725371515410220051017826506129249370210074713215702646718970176529713529170846693381051341914295151409449535274191100251786675606588089286740192896220173361061377707404659207467549180382211210880569761422139184898779660299310669338557566288780097323071845964934545679097449303139272190049957007922314583636747895359566529361116457007403202909831940409008408006455189265916040115644007700978224902795314347419690556022233793451243422812163267353732124081552859052790805333444858580117846540174528080705596298960709801527940509275683218397940646245808634695942020582766084267011458198139134217769109493631186188584034555691133503811542411654924031597346116788156563936844605336064630810599891078683964173599911243401859150132908382095509344410768769312197988782293593537198007096111765417917288730733276028826279830984888069336133917241494472894000984748321005289428136407417143383750862604881892027565094938513244107402464312659770144751611495298642336640575468116437589335038757968609333810029938311287642384822983177956957457919821467535466615144194479940271281199097752277123252119610598482866706058077704801683207381237291016268712673697468663510162172182951210923396488561245335863030883344219370043264835426428832682045085253755391670342298510101240791652815282178053877948977154259387833692525521791097260735254755618317567726589263934090236977898070488889533001768033080964352020515624465895005372854060191248104423340744299475277063476859885100620036971367756235206040881659896008808970295379153880140188652519053561359286184993498714652572977374716481459400154748588295102164232072066728177279872344476533302549821537503226858890572258422159433131778568064332111856079614287771157174759861565675947119039965526059445784239886587228092494363643338630209966115619657624250037371779165687655095648387588685585792363772629008898474154430690326056968717544653041367105232246651558722455468732326955756053401047309862796011602372894278565100868637091089758266599361238734206663049144555150539070595637588187554293181813486405153628836709662862512993035807782770529389089919949664542622271445208193476990560947875444134292560734053337063940557698527728823901527391674988890430190248277740962123437623771908281171405783186441817996291976810993186075556557998226961899670505172503176970478318494381174105275028007164338657876084119897513726133620867213265307058021024183986849152145662738263711400764695322920097385398830140165112304853506792641405855223258965232350377597738969524234776253945915473091909670635824951733894422842441690890589660074437808252302182164094347365335981091810165325498936236852670961537328994524144662622431693237259802425553316465647703219931940096947383304113797575355299426165435216249264901202435937549720565760272838440903152626779553219325273970382404419424587985859846781540788635587515948941100411778748944502650203511973915518963080129984974652062938675447263343703802103216183312660101358702610588424035217529640766864782156402917035720017055514736724330170550520652178702579779484955594393385996288966604084534992808757887299465721086827531800822034503669206341119390769408551044063234359031185562305536043937417842317487170226200062346072656604035728764188813684832337862573503838491030861586594880626236663590941386623327835927321717242261635468987759100931389908205337030770125738718912435770089268772646148830404363784732440617363888102030072243083955413007193831439679970456749005959094031979836487634126392952125001974832070209779717836871185108707618032380023315277752035894893300486819522695218370814949896932469516548422492744407152604262917839754341539982172145176473319158732484361020100096843159572114232745239469462523284332950336060642864278383011730314933243463477469646126012777763143946081809278161847363459726085802082993954311369716895213259145683275933972210865623028510820734195492283984272237171447600320627621860145163832082725642648053305440108558000290856661858612943374585011721473586332779871910908665438633411015793112979556722608816324261617218240188630575982778748753216923065833352233711992412960663285551058869264633439446795915954686294614812267851897476985265416264653881588951986235110499785126886178087546621762307192867904079329799033213058893242834314134564638404027209296264546084794193282406062348821824423155096768904504497061310235195168378920891210746365273129740636575425724775096719685973840576077625549226389290134994901861591563708501023107317433094683524423566926509537438379112112112658879915751136317409207119917901667329649860100149711346557414843299024723560695387656137649394843018433478356786091791751305745282035536083934703526256356798287317181098199795831694546370237474853953650490965856766206827600821037559521394063663183057061934454436641882284337706578013703943005306609352594266289781854950351898955694436213541830663431623291621695983012038496943108637122750855537092780036012131708176091919272216046545333582484727067579416840034091823452982412452608419924000653635798647992947937057854184661089608239599508185063613570334829533970740227350035397393155717000491010204512679354461400115671394772335434139709506541341677872172226232919488944890308313364141651038254765895622435753193383680251800772959113895329441321721859304347096223992276458699860095587401063244938903631524427854527566729843925507208921156170380241316676078047203333145097818042063695366164952250125868882199360300793348864318938743538350779520736015874513241645425213979256676823982493109630427250526950543131849623812953265194125672661660564722217583709880675198616844293991683931488262348199697465820163923974650871923890267949940031368580963834738838382045223106716399600585770193305784153142999204994212344264185603545510277282390117483700082920984635953011329815361699580130063349632704773033869225243280908569596520924798977694322277132318091865693169389910910818137796930753149498399877281880235453475339256418983891401212406155809988252657479354535872175784013808059440368582374626977844863590704640726364297744401319292782694774852043441693789987538844035071829495800277347848392945872711029439190143738835446051406882570211233732353055205031785601381001751490539891533463476060914684491865795302793124812634292938729258908548785949974381609026349427257680016784008319822904823431224402746515750618877298990789566549591167421981146525982486041286695660346918649040893890529952835320375384828169153724378204160041109679640628149360050340719362200395015558988046003444392907438562636648996672619995607099011884690679787327881837494215470994195935009191107945020127290308719121239731563844162352311262518412437733499009201665458264015815084041372907673911545500186625364412514055512709567948836632239882862499529369150873406945635957430892689287223897788917209404656390186123754643704792312526659721911710831620882926714044399797932937935874846204682834735444913029508832604600747171792330300686670068879045983191414914556440968290589354551936445290932282717284780345437528663826658911009721234328805723634742252808426175723315214034767241558579691071299808539939227912672632135448482769304015962884348742552654461754813556572068845625918388293019201590573776635466348340225490519233570427113140964091080026750991318428149521130592552801650429338683804247951667750614813969302526367422406457815563011843737461106370447413823835929427571149495806735636579636505246039196761251582998379113194960798374548881126167046083541577264690350164040695374390403760483232487426907969264701730604605917641115872186492751601401540768096893232247106816237370071431262516928009116525918031071732149607695717330287664400388449004944403498864333360834519927216481199359488483600349580811081108803258488028117205380233106944766633970369772033836667500635856303866070883281834303457907185374443436889871019188538271949884260374458219127304807439449908032641760467442676895825187712284759765538892708197843487425672698947785306797456136861074026466056025262726253521599259674374717153826626922252778432014097817849155420887280472049764295288679353452257281475683610989060632309587905680120375957627610190163630854609626389444794718618646337790455190841902049220437390756944540835564472841204458038075119485233019599800644385006444878260393031248453798817756948921281426853927876203467130843966604509890604936184239397768012564657747251009692110704436962950828733238200269704213001973708578284212609185512288364053406427420303718076236718966075921928082423103412412810073729438174264930535115279310370809436535349704372122092772808311205709694838483480566612422178866540874830727924909126015149114122361383532493824266615853045739591845281785115924981801565811135432910818553666710891431263810106402449405293846623437189678807007567580086177116082086508543729472080209244417461996105698618463632958636895512937468286886682404553092230351494222523983785368113123054100219201694508508160335783567635083767105664768942661296097468283896289743762752819459804356761526930363403745840765716926799790752853383204561001290717065254048726204539116643589665766760207503852419405772018558805297914315650481025104791231536384841908392109956913137298910477627531090150672724521128080344094934375618956437285199128164017185489864055505480273524163381538021863534274161007995170494627712376739573174171577949643459882973059466169081648635125606820015220192986268562363724238995378028616673102128718868859658319934729971451370770952241624919178579880792404688510246051074486244400907290665535504891210734791442862664527925011154938086489761748830213420041441410795441427287670967734944140175009830148176010626330199995334445025129924805020099189346881861627509479431811633412006466439570334316748863076684188151895455803823629487713358007691599760014770387051723147876917505701098914898156122133031445729257132348607973498863402998273351611396186096977683334633642642475919666944082526369731541662808000659382179410786966504805500337258129350693101053207255202279770041500327998007405564901936828562060547815868627270776451890278957005689876700179680660140928575716108494803686725737227355919718772745097589449324636885629611882714228876922922654727015549270728493342955748787958683652293011241684802436474270400250339991796631824618261137921681148269031570836386231758265876473874785409074213192879447679603339755275165096464233516262846292240987012113005142402910732427670326800972269997556931810321969623075167947349664420039190015168031606911955116810359733062178050525928264724932867089085518874155222323826592938411100883237239419184717929853250063224262081910303242946266965212686054995542914328193708056213167768755029525425228121730715134066039136166913974313475237170559641391942930559556154768506208515234225281915601010429907045194668938269933118586223266628686524560667715561982855423538455341489501453565071388554543413749648778431986954572055748058525780086179666897015651026699461670974852804355186180055286280122388273709964778105732046855525585709331418308186257861378324726572970321067236186259757164365173062037174367307490246762922896153572456886183623969935172618995367851903065774032456161997373528485650562680301728277393976085706730015645692751763089210426842212469752577387265542210891229336053451882108895436093074719896835353915251316716889023128918198142247183496249375669742767821529802640336650566896509306560107164502860459284808453346020497140593686897163253179398741826121969231913899808762316510754425254214527198383609803492073431918205384313892349547927187330484542497846422247526867514548760491877160241712023567624788494434928841060712611775246913294873725213093415321346717577035639780758614167683275903632702235317671179998350358779664152708154826805626435810369727777705898847828223156530818093922760967429057841723216560880367472838031056702612438620596147962493894376430630634116658168081135637041043896498551610069029594620049986471482218095442076018635583292167262827239525881900914642855602062909618153167647301300257865177260440887047235966117406219906959148898946796785265630682107773324332816340438606462744761386084650946327756033944718602019303703826129060200685372385470410133550988380528141702110978409620807711997699979439215477794486894243415014562775659596501840302648309615813601078200240905076464301671678264357564791487825545492125005154563158399916778472384307047774025570427119515500850043845083569416806784433720974794127733799440155379312546033451236785670015641768344045426759121074314580788072339328233175418935760151263459569043791957344628793101241465836126365790826768941084010864182013856048108214272807421492723962155717422052392349992253004762661603830133636670865974026200369994082612122983027641984627467154924303293174679552820647120298635038596422626633367131070921212257380172519157892095091006266106336238865213631462749009201939446412199279992873912379794575302535380996591374368875867370683269214009907039303435258154034127358427240703569235722463117102489618311505265338894364396016170821820757424555729645751950938013045267030484071132579919704000383695297637175849308803685050271199402133951319424587426894270817726814085078707537025481185285217124747104571388430808225434616852501972955318332785066003160125045393202099220242221786632325664086168705178937882742242277165746617028186480005318789740910675334686262814998827237874071631478811776664224908230911808824944065082991981015553822387296404044844386735156296816936867251534686678253214752937639262632738482524494801384379332337480470709169945386371509647614941509343253879599228405683359341651150369200331627869129155068673882533164331711203264432784443794776075453809372085505973211287995413910137967773765035075707572416004974965375019430059449672115197114300308341296634363994018174330297705356895856527977484502082739452667191333702984833554618443509315932958410103837594032571605948350008824847778370755659616793205222944442367310107768568426622743058753667993503486152316260847004083332330934165984957571364648033739868094656854766500386094226118684316127496335727719622159618075553247931102450101054149694376997536689230943684015239637005008436776961362604652305250764577945044856588556303130337937637584568226098090221625852840065007874359290321320280588570788290885914502093892780043884142856683543161582956314949949293426434596312557816405452813904309919340117762606091291396350276557361466960427486323083036243880609805853987508200972976388861815215602054945816834928203725847667673945028734389184344497300002237854372859747728736574566265858956786353570529323722805481645627762807379385975585544049928360987093531707819283823266536710961820867633924800590269133451145478524723280221339382378445922687713943891845750409806611868670907219748024381644678781086851605483002667174026633942147115787092007842782089215280932470301448694378940120771506628624553222556977274369136892021197129214123263594672095597217355486420574693213184565388870349400407812238002050221101397933292440154429190620445874493260329716007771129191303341536040030592428787830710953329225322053382433402794995593643743855620097211156641499198323985531338448063465927345270793522844317122045095552926565677044820428094261462968855508105089039793320121397450575464235778223558550701675483599212849144814888133652970620146615312291602056113346547334646776467996624798663764467372375580618750128640544861527721799710886350650036297025492806666030463115163910449108678407169818833956842794038931950535234731256377643639809891076870027413672509017278335449342724752031217068013036299854864486679298821254140700140508370654161486627989944339229164887984150478813186460524403077637832381364584373993133638828939106376978010829730086696447469524751600169514925248184909347552458371906402894112143342913042425119075991498804897744279855393295019487193322201900767227385856948221965134031470815752979578234072872870864061610195683636663998136823702282925492401514502031130436657684615954108211084629706091437805772721273839178639131717887443026589301934722580722282264602230721192844748786432122622694374886983998153642178727677253887329096529940391620545690681265076676045454676208253215929693285211021809327343955990867532051223585898112036475970871713426656434583507474132880978383694284993881783628246832043836734870487600118712075146229509088907333216562883425010474157959519802753737353207074615734359950917633034041867497697849394985536732586580997316744690441713867540958059446378852789930297620222604833786957027197184006698392559628539458758277975628750775171072662357262156099911422044199119776211668331641095917636420244676259499477748560348602202823573665983770426282922735568820780900244211134532936029986419370700261488011130066473681600843990864279445635536649030253558266681746134732163994916058042638442347875574571919294921314038478195707704847242887613666027599240203590166042241934340471174690849959178248913783842199708330094706059766141282204703771349261845465467303949686774733804213775764864721402325034567509568877330744461204344698138303194549623159225216894758100480008789347237834635276279450652193595454415121670770058993190908223195136491307771401008770891360107630083958316519855924342524280718239245765071497107790470268951510947850084898361951159837168287131598618856023948505123054067976955802164238423731900524591132981388533153613275526318590113074530233657968268278701964894939858312848555329420551346758763412603037648991945626571950767817366711356065267604903640125757089182806339341468885796378166403252061915963576346584214070960520321235843301919111542224330257078627857685831760336918405043623623218177322286607121028025353816376982875087437289188692242440448124529064238399893918617384521476474527290475856945769548940414733949928109239080949364363998094818608866216883201409871009567794548425101533234569090375516630089610312693060075013396845329775390573341511572845753442124574506855139857087672290632520712822836898675653699908618283594666925898009548939833508608607260599779909008815361203081003227157528415246740299200554995948799831259966967806525309956398417425352543861623538307011474134635803745731847267250875746770766982302626792659921211234941731833882053196324508227865888959093887982719859970809616249967455654558771431045850598961881187639794534438030685376039310828691341548451406951017195388733834499617507054365137344410662419697760348536748426469448604793483530932640750916469203634994632111695419146368359339833746929053805269210488100993581075171407008234382621736446155623650688385406664750263808383762293216297895345148809644306105202242490456731839143553416517872397784142627170207117616546800488510968748159534050146410010900225410460505272717611800300176174751886985947613572282512798560845822104300231710375396317277094328371470734178310033428183218610039541143092072548258959267043864464067019986182140080743256758222364998974188269708680978061703088007330850301817979954406980309944743153559891729237589541344018176990147496150015837818215855483607900022663732655686300110093239694453332639499744272024497667341832341518261996223270150217325539338388475444196708640955072180280866107249608125454281286619085805121430852989367325716034183142321846736567033177166764958622722078083381202042487964418622425320574164505509217667075489286611913040599708716195534534575866921679871342975350542397202975526974957753497844993170014618854346782804011500877397090911335389729777688425147425653707225659768549265335006445942228732041557055574363071671478315218985234976551488390132425423807503054634266265542137826213300655078857699962239752567691950051475299821394882915795308134086830649337794708684433794705369036429172880274031644626953416473124875929802116738429300846368258041108589443155064127547730578769498657997299214316929898935573100095777193327343666456136807739936208212526323179690927158138732929201188422171096903075703929226961371897912656149953213489477096201294742738385902136137967167055346799290500698397301715510874102818517964855215115172099528516768891486769291346230843087259403358807539071183504277202836323683179078265380290655140041083740719498772639494011706018523988193688596387804837137717786509367084073068391855320094340208363746054252695211873108044187555617609150757296353758504243240978194894253561488051648399185550325409817923941633018831897300169815827459443001516839520793289738300462307725198142286148951142478439440317937819911800743416221271375057013264558879247432237718340532156058990251445907985761617469374174049678441215679716738971752972094145855349507157006920996807623674653318376939138922242997007311089636286145640685321012699136080416760311519093495183273488320240136224855610240134003134626860317310814142381469445745744312988970092743783644851419704393831404193089809870336977181337096190347252542337246633577184269223080133659191757033533670445433368346875296299597712382816252387319226452809710623121348465020836521844818866184432708251643138892691346300397967516905108567723009576758783140251278160521197786504211118003803877658280629033901085979269565501357187891176745582524331542155000436234325332651773064604028627338774142790245242183923664463705762075155544467497176172763469820054986252146724511695147486423691645218403742894405229905590313564067061881281936147158516087644390217739145563590052556448005684212375509470449959832354588039994963950899048481525477275883542383419590884309029779786306296038796100137911094697557722558499278494833301800755207967534234274887248989499965603683949638931118762378569545423932834137939138021647616118285271041532031479967768967462808938358947703060275473914250749974237751018161294576026327190979017858527604259806672994861552349980466179473571652046506342195244663206688176556106240872502147025613296682721844457249268312486837310823230261360564387698331214742713878609427817727747014502988707165820279954505779956773797633115663620397397289508489929230073829872744566111631572338222471484278324491268058258977023497243998988844939067198209483010356271863466864726221166286092829190808860962867602907791265041424348316701049279913939388016706714493232090945822681407566101660625138000793051663759617024346749625055889316850459372609378181761805626424927044621708514952079284031715105093449061273621226386882727965380249642434080605888446776533493338058135061734807525410509222833360336289595102939226655200812022605140049324644218351814904241332076450281003498689306907751777566101994377544114969360082451954596671173255725992859952119981246044186943505451985484433714684204234607713930938280777325979074551646211563456576877418149487019493256147325630113073449915110046253186604961336164705987026471007687253247036526105011083795161210599213425560459092290947785338107951611009854710399684225861046708990969462210054298677268685138827493436368017381290491823802175884434858199763060018402455043639347525831184432193636078822342855272045714074737369255993115783930109736819090487924888661206532460152000335168141422972804477193676562839111651217927275006871239204489224560659499951882162445251561519251541248698539440557530254984069771032438283335078495458321119998635017531513927437392901084739392972242542692195276630589584769378343518462089531228431076626920567680291911716197358785828771504571705365988485439338455687452361582509297690532338080100239588158759601890869057946746760040728484613767290873389593701930186035809192800969562487800035954203504649282600218351160276500359007615300515757508898779709877246512623459434858447146969974708619341633908471726486305914339279858862338017846384694050699293616338270067608418255741154878091279432910863846947853495266842413245686736164003947230214150059728260677166998592152224446922722452662753747553137462434046326231320967634891045845244598715834085735563556630887023572750027903905856709684257476157704227887757124631483082575613673921608702672850353548863884440900066221903279112207312376948419523363518890952580963345764362987689019978287277952578086509868522185854654213618794096811802407819350928688707440238724062879588975043085326106396878515638060391081322698344181591025607591793497200486019243990420559792338398268709614517166098033509667819207870694670445052964510380048754656246144268720559930338804756155067939792354864468392917295248902411941414395004555151105274496092565798501994597445334832292324136115789201898749628600240683858562935279953952763525046396599512968205865885738109875833622381771863255911903200835095037665281452075692485455860174792407834667524564755230285139131803587488375127641654069323952591318391877310092234823466809945560512533544279271701158598689104477558802992722469475457343409971488630110503021626875573525751934778139174961643122972879514029762422373759765314287522934382892975362750581751132453671903657267884376036661342843964219541887566119884579693381298937901406563419516192474661306516511725267669323609419087733340690450558165213454487297074862553371635331581087738855095802330159523967268648400713750438601474834235330437085390227380449117576988953079133406811397562588492545284394178380123683157531767298914314054054266990963190681914906510208311130377896728687657942468534543011606591877413631321762198303416289445543557360297724554881458955418542210450999122832422240671256313535578227419398806196547685103176356379705213628453476087647191624882510939310918226676457010246503649076887174058871800489062109983884602249535444174934077227481562851572448302453765047321847532378940907877851143226417167207865271313548633238344810072504878677344464081608772771449481960020157980944682498260587592717763415996642278042914584234546121362414297976133124187195363825151679773423909103521409278990450682793503356406863155407032340671391506418478690860575345041992163225409754423164352434991500264140292956147699696135281539726892935453106876852742287916824480432608704463478624349069682252057662741054671106465204178936003473244014157701024500525111785668386033963806047470587868478677866005941018778147625395184562630317637358327298263546058429323574557986170934591291167804403130173996890297165284394825291332954976005579513856860519351140890707453397241952980145879886978105344437928598187338219021315887361960592742773315472002853239408397789239344686421601638980426095208234422381784439647101937884365289752765795163630751895935377213417194091471158931428412311647990508749331887496749119177625623516517274409813373547097884797343831223446489714488277146796704707528417151005177758584705360452208655868043224502154261560328310031904546602778549929217020935777114230574433742647869213136054226574013575310385064398286790589577389246677367491487536907339515858623562466719142440369524996637703770985252803613777816346232435468253332516733074960201249413720878443642861735790578481437239478915479884748129025766655262300741908124515803036992955037147164379926226167619218381593549727846720152665688420845010280046156910091842431075734179979783749230883487520580468055061820398994057860895824863813246156474145956952950257440684073664889904226040560602079193578678161126084813574082600007829756702414971176685873724094152073889241847585711465880388970146267953322313509070101452690127057210105779022277343195276782480856529188340361561348550929855796859839712262320837313667484421485838926042660191699304201533766491830909468499432157653212172381580140823486192736058717317466163847683264531184832681703369211623877310612543643962337345035839522545922383698407681015377194206583397155612108653083191645988670212720030129762880942895247190983775045851394570956574880254102538475085951906008554776417154677487089697871874700602935649391122591469261263511710087692787102960769193239654139233235563061366787913078401419567070881356320830880213526970725503189214741870398652371928414023072687812809490256436240867996383840921607586376700609603866327956945454200216914054497140193729992601076381319927344795034858657960779221356583223536408862834118876504409798505054654654340618816822304137332216455898377580961438429059850323819755090293443799336410337513679189169504960056663576720505647998532197059594358470817219206875917266453374606287085863099056469497814288864827362802618046077223206196839764684021703896226885242604920443377925672122905761457061866837202922236817090556108848373230317984179859950962146699137111763195890862038319018061032059854841643758537559118461458584528636882655994870662977243594811242593731963776359913818723798612690418725118495457562018917042825869646026822042170164938176626617811529465195189729743965577948535312848582920828318037995320941088406331146501838211945555989460999499266195976995452899102082423620367295339270261124959008335815158764211599728620891355269369880777066243495576565602414466461313951949093817390758101911627280585346834490256559339783660736784597741875456385440960717762071157152054663841375517012505847417609854817536768451158381471816080654008826680154523338651980071906453012628196539678057912794047592200584891296694888963217168962672527132555070744099176536736468323874720058609140609125633443807501075614691579295085050547070656868116338927157780046853815222838857263960105057058243307334956179789792708461912072633112251197557082335365279102007024268161463397894521512991183827518360244054304112902681963889699612182085241809012781165396831190827645273329640058674414682090257661164073139455063771453745016860874539922946234522818828837496340942470763000717491170722821267660042795470521180204638104755668948924724039745847695888633985075452182680439794593084627425060093791510138248701420978485908934470218315026316537964710422414848508953653174885833202738382864411676022315464960073515324718648310766369966940592029950073626018052003382192830878675968406343999421251846765507910757723562376860823556630936746998493392075127302143459749574953145597189522407961223123553409134909993234776071487196398726480243384457525538908352522657598897188751829310731782947814194860357498926797639375692780897942649640984709512814089650303781983675097553142351844585048052518999108785885084128715673248602784852202625103212672429865661527695246604319778947900124911930886867136656012397500815427149001629595311461521909491378190818735821252571605128316359578846573762774931071481719546509212499934584164870580273389017244188393954501649198066523773617773603148318070338133033338972591051988165809681695447229880713273435088736826826770722034381291341169095581164119393086610843233071610442261294455334123815147843960365561837877205018038913232670227465189079832876850186118464035832178304638050199921558206268148596626835738621220408323149112415323716735712682952546582245705117230412997688385500025680894367542856812391925356804836843226527830989696461401860946353979452432274274964920385141721059486526602561621700757001951723017250514112376787574823102663139662690924447844096274279748103136259643012732398383704025649960014459222375208937377135086960530601311256939481230368773686301164318462671604583327430309190082530180667483584749343753766607113653497482984301901089950970913459388149100613517153938432877737734771821280254447470438819087196192237223304078940382387097398511730500403660027910360212920875397242062759420082766066071073341577474795254519604098132952303380378722701930037663925484469314023785380625108348136087828800437117299693827825611561606438539305841566582411873588437947478804984065159864435345076088007997181939891110871504386314503554946209094365654392650941459734437752499801655609105275249481281179902173573014492328741267556064260298802557836413692016016617669748043542306072551697935735746825089695874826948731881544269818023315400606701953197215378857346583566060188867877883402696009264891214523761321850570390767193931751146569912952896078615794446670090410139420800171065178067033197994516163258550311481959276610659074044524985800229299228966543054067588746481449229311460408549457355981220577363061921476421011073334112714243475459628100874153150699878674569108206416345365903297922921012380381007569387269116011092957834426860655788441475726921085179645009860474953277920185440079838954484886707511916628030508605658217777697998220345113976466651924617025416334341044221145733295408504392807954396151307885264705378477983896727073836856837620235140207456693911087053479132411488788790158615971668352740445806936367038922357337268462210096916521348168176682743961853038638673061119918119187716359164169444571406379455424290874419543670817530677676541875022056511296774022477450002728679040664986471899711013362194181815184472591061447488424875027349454680510566851684048259975803596168445168373243003982331546478158041588277779460034850719864600409493977640398092361316514907508342421422902139051990165573319189692423186174767104600600148134265471179386165793927640354534589543137690424787165731974481919188300904505418400996882308154835099253666611841538312312998231819699109801429636853713921345260197299766841937950906406548032602340054884977654139891095815240233234467133442021495220744851782237688425688959031252711264762708767338357468592642121004081137201237521417098050822536684007206712882631152148490890523814401714196984944804679489675174776184049404631094279956737122753825775748085792754776105710867256129753274940581094794847870606374893196903901621417734653625666077403420493919792655024777067311768016577482896998471910716852097033010898010186445031926303162374116046753551168125391955617905343365937938089282722859914768508181201172867540470665654742948597222563280678451402182626324367627789943262937705557087265579856057809551086296577566990613910362180278129785662042808063521713920147250640452588776439271155252643537150490630447948841296952179190073624651786379689854808868529795126378890858504242865541942872273056884845871457476143153314718677063731935291546180195217512217731081929119956154340451468735032164383282109523299782542573539172290016513396984876017270183825894574556108791029901424155246809340828709852267349158535664375031049444588500491485483180968913365990395654771006567422899781917903880556974077808484614702490694200671838213724208851280759884631990288078363988372431080994688444143679764701359755518252438059867085825863935412502662727657199067541943193285433812175474512578521148274909532958863395251951656595291321511692041940837930800910247884453729889188341633145491480408091982281173152722432780262445509782321678235044878025855705718538907483505898554256099969620966130090965658274503055056304302205589701600825504127756601491826803917988196135982155843447379573702413895350487644347515252532802411844463140907913400762357692797913754689226884736149676856077439534956014628788995262183121832769384699326248204543358092547676462813616252866002903472891134064144250270608421664146813965398780967700813244277543465345874410359433720560138908410081960804386664051419536311000388461950017124667515147440366134559808879788950521931999172295176273037788753694443728709322519027105308073803344250662527867491541720713646960403245267328210151103865256574620291837156086589496185518608531139968035120710186676603591051690907519688103777386210264556171179825957862984636184672745364037121364433025001866944845893062929771460245708428537857217531391554082579635931071315989384210450732463188365244921677970430073450551852731279385366659239344190124417726744852219108768490083445392411318877611652510551507575859804011711680935050414745944483162589233546375855776767002031155304479918355861115050998041016086837193337357975553651024649345386759740045299465443507262891914362838579825472072300373383314140809137622653162428553463542462300076344744853432331717707644082936407500448460168077342282673654690211705120825871739934721949817495250924250726925642789857144682543911295027774569440308524614307137969039330836064040018859177956858262686679114699075516215713058458238926200549247748286076368766901533212848354177289041468683550109704090524777537298208489933703135462881564099431841848525123082824584262118062924394370484670057600731014483833794809349939449513215416659281982338744013219843698812101653169164961442714143245482547387629724500143589118257677641415351286224243126644694731445894464907012370826536309474640534463336976668148365069960714298144682556320014978368933051669087408158855984456703270505669128365644980537540195891176195932619380439852108327520574536278469874845019532470297825798400478093569804309947662567686031949573083415953921209066913357170933142936795525992559921024120101313417481679563312303503160869343508168983778370718810001468711081456752658660638884619648395491000804102621263814323434264516893555329375430827852957296723644138547682740396981624166189947325058111521969662924312118815724801397142272873868447289013964235982967010968586926180105408495917618647401412474267934889758834498858014189818668698566257552425115133889558784816299389496397417033311988726873131528027212434926334053497309720298910228004908373296479534316950778781520725900232954876062179302157414640607899306414205889014396961918180959152949138198462355194937194456512982188462378681558730644868873850415529812634340472775726538865787580204790312618484890551873888725947776814785942928251702376169625542673210477924328163129048539475711728834200324746845178811691006259463580546059295237249941449674655889780033821763324072532714591843213015032197235641764896047227129055747346130958417293148044805889632654064150538697516962493630444716415940433176064306038719972147798773892848955893028582296350937617680827682919135911466714042777926514452512292960800340786722340541320649179899342782139190630921424731548524409813721719049277450147536299714482855123942922188882872165823371928562075908049597357931836592697073626866846662967056473414696012289054649334216959657450094861720796723399048221426950965351576190183628497897472913885974861195482287233272330631073272906238657963912961558017968672419636993357507327926654753450832552123516981295456326013018790230598241273242036157017241368719980083222349838069075595238052192860532054572107246906693777913015221780039950986575108200809776528168571461898916911635158704269356305188550156111768320987228764381341870572861116475331926890642183771521971835146026562830353905646181730936806570256764236706591127446751335707108810195680022570551336875595585544273574341544072591447472845400028098970682853724683437493734410851193196097453241753890472845085958747424602856097878528545187775407997154621177303031339100172669288976201057951121885825950956918526102107090036450824200069159718001599236330078833562106398636742717199392085787672934536134885946613681541796565247637961760715070517432423497976271253568381906775894367733653120631963151801986593531388967149711435973775550871188943713859848091954630234668612328899619278198946718625627630057172226198717255668223923904890768146987080707751220177091609648770120434768279559338063610192024519833268119705454153308595651538813921780342498141963164905511260143454931265701556562158264090824648351579043435702893453635054819012476149728370681444278505199006903212896548769236882909068546671150995589760754891507625492685131792418299782542728547778448453461101792924207968158552174577602546294984095234678192840960476386210024350185606609410667690932843429705931268359659552164788030824711745176610929643714782697763464025941436376119883442043651405819785395750254618094489169401030013543819259121122854238722988776519602373221724050916405650079014770648187623734031750235491964410642041932852871687936595663020518293155034697291267571007407824355433018154958785858475434507850904892164905683726569122392614760515053956908698779269999187649883835020011034268265026969018909896424000140656288941654229991152436190033893023874485198177367035859326595056483973691102528528964240238162690169769797872053924417306882145869496570622068064152567048641672910089034466482148259576598883675676559305620962774588428084766784414116997805736320364832583212662721001886011390639353175491376666606897406774841966431435260003955902744717191497660803060479889578097868601071357264140408520715503208109783638446056461520984027952828516557607719738796731794525772221096980949945273561032910012006494033523485945355873048645021280439047580017537220142423121774893185173329466211269176408088586862489556539533649460684315877915679859150495016361992776208222457743409154600833608278358758581453060018874654806158469935209424129086588097007658952952942711111315126687583428566179129561920536410044079683799872613222554918639288601507650870472774003701806254718086876319171696486793614727732979757046379755146280328266354020758820986430077712971580486344586381703953969346321181169192104636494630154711153619666625612026906439506854218786812240993780516646058740408377608389717211889712944024277671668754396479044681943854146770948657994287785792979803623008497859770742430848349599307423855758769983547158184688235373094032850678988103388739359527893501071404914173640804862181613420873011412458842231120289553227515291208261892442680444656692441590713999797893022991343828360615540663044391445778085139945599094074239762612456772578548076328639557450793670916499825916076795474644981946658952214795605488453772955033488494865214498815920404443957690438775163101524744668822878389148182995253640866407630244850888822773889814481442580382544887918223306200047057093191744017116590681555324789182407775866665100435926469674592435181453789517497170913007733429647167891477189372321676652882834647772070310297542094397523932163345722780599675988114774549208494809224706159973495073321478676741593210626463245533420320135047805255300115734651077808653087217338440136071977085011680526600480673446362453506269853330351107802011024714941904163599640702033334178009708280027243676240239632839833190086800100058785505242035602151193311212381125806324264054598875454442839222700398014359114677186893678295446859099994129657734990682460457444371064184692311755752541422151199708105198384237430802858411911034947006709981625809080232934922144135663658449085571277501979917843893240809260006508919841301015540362593229032108072689825169873993483717822344427052288062898849905137744969579079629178617645467526962720055032628667023552336797726063643852366606175531613341317196197864392121268769055177347789594578286793751698667802479410433905992805940732000255661814631962700778143239536096104701729340494466620042894434699772502523362436113819044501776630394960920395546918993072887803159200038513497548607143872818383086380817680722559842374631006953530567999908324197175226060014824313203037348268169926095288097144322551789684890648663457922550958843785072651487101659277551662918941361681291844882428584914633290399404985318303936955530378939063462556418941415029264319234049598323408367493224900433835477731924409751183050397065819857193854143426088211957823771085106209820471610682278689620969757921676775517314616530623257688107672947682658597173652390580624930436511108825021373017722979145548745526360319873068471900353622658246145403431408136194441206504994577360905054778745696917584830341379595574153259059234508991895104113725321454131921375733178112506607565288638393093800774772362121100123864093486021508415014831723894064495994297265569568730807876269888569731031755846775128444574553397997813792654431921834421363070757915775647019542518885598183471508749639882165975381022375915486437492344074425523139962629180384112629956456129401567847766137658011123670830980985007918997025977030110831796067951569965572007575902702144061044911452833206811316731088885223390097768175624261207932093558751202518412009102502007023386813814634972054308310984171324107369665562496654937381813957760624019775704510736176400350162938954403024939727373854471651438233295189222680764895418150428010246315726137001519913632525676047478506575714031274113457537113188910649703107854178914089554130455302878654582163342569616634049525997099279447905529226719538257258587393274130154916630672048328356066972804687652587441088521105876230763044801393780365032533142790361470708396485178111545244300098858104533794718403395346580859879503012075351566479135465214976248731740221718399842254842989306171139607700220638169440749741888701799889068347341403175965274567786320642727227656038739437174585149316301185870988806202046350716742616122073255219743263265181032576138673817502982223737574646083182965575011782438275471222775799172556149461261270904660505267167223932500389201907340426107384301197825454396941178367831034191888309584133979272805382546626473199829417047335138373106220916975733273156589158399416510189572510284174693874373753133185652978668579739303451944894907199782629217544087253869509690256364913361662649103302968370399404779514747755870330411967687050772107617321483418530312001893714042946479603145311350066416700023524669310259433718669444400963997152321649187814086836681368125870117467589428150519860600640710086475174958709157959905729767405260915067140443398013208738176994367507976640722447299842158803184305897947861652814216645807199421852517436374675233515223073367877374551529844461509573192306345037036313453322168768871805379018319904446550904855025013177324986195190433459157524173696890570121205948432263283565890164054944492494351263003114712693604264490550542501889653141667181313000917724453608551190885106698104041467588804923153077182674791076853804068398921227580309702149594473809868273473312340587938036654043442190717164560665129378355602095649072482648351965488556846296156897637715040962462010579776075850857781777376501426558909658580563413806753500690392254667257452261154877591099601883907846796078591115005269420617357121701976371785105596442959618559023720438391967628002735526981355323275637931672939282477623932022778544033100210379546063147023481872886415248211452729969152894850131780271188121472084090813830635493161325791646756216819484619434213399002311094007368175499040105370285459703462333608878126345166364275991309512708416171091252888271665752450769886751300197665033144009722236940513663503005517281624212062955587593905225204836125872420287156842497966510035381857017390496082026717117234446921374861682933593570817241106919584808267765255054877674327988929228526399335672320294573301001520843029197879539804218174400897658113932684317529388849754954547596665544635912594206180442533467344212032289410055743489598571841851117728886296883795457231078767117936640524239691929950908446099602437176001623544091050434889834488714558740591334803757508108213516471546244015687292725425961643005362084352528358998024484653362422817109599601827699239352698885776941029330533541192182033534815267864184300550859195484210442525809817478579086995239359572577878359857446016518293777772864837474595440203648840299944295003769029699812826670409448793305461680584150168511183561532408798094923463652836206847759544700761192784929675948448992774264756317901512710819515240377741714381578912318556683115599448809641013883431262041387895097129237574051734778907972947159713776030845364618737701437543788226417693517009464573693269163629836955181552453496432755298484707463786288236903178335220459845956025360838502442970340189970392285865395671330968107511680246013657146012292592726485990026067413336342912103988713654170966139605163811546859346092725013904046570958813090147586439690356080526002237067236208245581181104709820327435557479421048052102582945221727461079444883918690338568109856888473513216220902224916728774326675355246632875935193968645350659198408253015704540743454421175757722114992310792258682019154490386219338234855437019047513801817401966723441526965608853765796515819930902713986177822928103138866085869256177002823453937381750059810088988044992163878606494194942003728500483586733358419306065079413977546321632519557047405447758733069812177634710857655153708861398629124189882384961710471521696214316529809386737702792483019120104057983961636647935371498532955879072997143024922657859098831534282291039354692521854358932834033079077749660374347639359192129174608455854501478303286948350836377823786093757486840385379733704303180151630575572859840539517606670680890940314761502410867637720572494875842467283500906724147538683524285131521824679772373745705655291821841553636624574535994728495285140266712799463114681763773933801244847002709448323561838029381738291966632458552074655518389534127169628384377734519284699241471083404269760700018182204794404287701819691216381554007876115119366692872982493573130991180381561849948696022256167794093781010683628532555609969925503390052027633657135364055586665400097666209196786378997827923885723733291301616727422693871941122400000852137552752735919034668718884001271277947100817035228006279688274415192053253373855168093694549786789710733924396709597311514345638326570413189498231548126537259395975675283269228288437973242922424415919423396209042686615963781323856273642608141820472118230036648391889539721693265027529331515394513993428691615334165115485101112923744798941721691321577793251660840054500252718711487093865529781654778907992517365552078125868472676816797487586252427646134096661776029377149391080559672415449995426515067850638413525415089100674005993952074787337038441672320733134525556389880446580080915750147942037139997249753619127876102451083024162313175339423890521136479018002018284869981683123004832474627600914139214330016395652367362789835704364262039618514932181766121720953319121045210670266874090641919066784531915512931161152675968995662200513952927276870774262354013616729425606192170846845084136763603683726050134796690309333172432767501077016178941879137036576410003615620374169634228827967205498547282836561829082987166479810334518370009378884652334426945447921995955901150236225598284371072480043530582240830473314363170265028896465972017758373959256362854059666662550126674583687965776797215056816760067845756991797032721491730412298066456848713671526919843460994186809763222427245889347264252765604238690439311764137594322453250858384001622021750225328190551116273623414797841749098958001', -); diff --git a/test/src/integer/arithmetic/ipown.js b/test/src/integer/arithmetic/ipown.js deleted file mode 100644 index 436746b..0000000 --- a/test/src/integer/arithmetic/ipown.js +++ /dev/null @@ -1,1304 +0,0 @@ -import test from 'ava'; -import {parse, stringify, ipown} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const c = ipown(a, B); - t.is(stringify(a), C); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `ipown(${fmt(A)},${B}) = ${fmt(C)}`; - -test(macro, '0', 0, '1'); -test(macro, '0', 1, '0'); -test(macro, '0', 3, '0'); -test(macro, '0', 7, '0'); -test(macro, '0', 9, '0'); -test(macro, '0', 11, '0'); -test(macro, '0', 17, '0'); -test(macro, '0', 22, '0'); -test(macro, '0', 24, '0'); -test(macro, '0', 27, '0'); -test(macro, '0', 29, '0'); -test(macro, '0', 1234, '0'); -test(macro, '0', 5678, '0'); -test(macro, '1', 0, '1'); -test(macro, '-1', 0, '1'); -test(macro, '1', 1, '1'); -test(macro, '-1', 1, '-1'); -test(macro, '1', 3, '1'); -test(macro, '-1', 3, '-1'); -test(macro, '1', 7, '1'); -test(macro, '-1', 7, '-1'); -test(macro, '1', 9, '1'); -test(macro, '-1', 9, '-1'); -test(macro, '1', 11, '1'); -test(macro, '-1', 11, '-1'); -test(macro, '1', 17, '1'); -test(macro, '-1', 17, '-1'); -test(macro, '1', 22, '1'); -test(macro, '-1', 22, '1'); -test(macro, '1', 24, '1'); -test(macro, '-1', 24, '1'); -test(macro, '1', 27, '1'); -test(macro, '-1', 27, '-1'); -test(macro, '1', 29, '1'); -test(macro, '-1', 29, '-1'); -test(macro, '1', 1234, '1'); -test(macro, '-1', 1234, '1'); -test(macro, '1', 5678, '1'); -test(macro, '-1', 5678, '1'); -test(macro, '3', 0, '1'); -test(macro, '-3', 0, '1'); -test(macro, '3', 1, '3'); -test(macro, '-3', 1, '-3'); -test(macro, '3', 3, '27'); -test(macro, '-3', 3, '-27'); -test(macro, '3', 7, '2187'); -test(macro, '-3', 7, '-2187'); -test(macro, '3', 9, '19683'); -test(macro, '-3', 9, '-19683'); -test(macro, '3', 11, '177147'); -test(macro, '-3', 11, '-177147'); -test(macro, '3', 17, '129140163'); -test(macro, '-3', 17, '-129140163'); -test(macro, '3', 22, '31381059609'); -test(macro, '-3', 22, '31381059609'); -test(macro, '3', 24, '282429536481'); -test(macro, '-3', 24, '282429536481'); -test(macro, '3', 27, '7625597484987'); -test(macro, '-3', 27, '-7625597484987'); -test(macro, '3', 29, '68630377364883'); -test(macro, '-3', 29, '-68630377364883'); -test( - macro, - '3', - 1234, - '5856367529932071269049608726415028439757143623443063785468784843536946634255003858796842453459905186846046851774292445753149532138648409140561593823222428559200283816367593571556942770711203894947318922509986128995034233177140247221695941679146171215675158154358685224309073135481486540427499644363484815218991488230440687359021965115067678545212365725678242878485920885436927030372580147256775788882374301866845441065076726499613479868210410548366056401445912760529623658838510267592199677099676046090140514526228797525926977514932394954796457727416398081482661262807288229389463819882569', -); -test( - macro, - '-3', - 1234, - '5856367529932071269049608726415028439757143623443063785468784843536946634255003858796842453459905186846046851774292445753149532138648409140561593823222428559200283816367593571556942770711203894947318922509986128995034233177140247221695941679146171215675158154358685224309073135481486540427499644363484815218991488230440687359021965115067678545212365725678242878485920885436927030372580147256775788882374301866845441065076726499613479868210410548366056401445912760529623658838510267592199677099676046090140514526228797525926977514932394954796457727416398081482661262807288229389463819882569', -); -test( - macro, - '3', - 5678, - '1243037693463227949112091519279672492044687354501434200945857669926116693806746194857301400780233995488733257302119315313384942062399372466241771979139200777946071311247293019863313186668415340857975663750784195666817545404528999322911175416479945350848509815821523649497472945192185204394061354208077647593251971659190791580018094752316074849512115300952408135740274415868364936851842971492114222395071837019898407594635391436897273675376020860228061632238135757402157534256820528991141884997213617990932313869139157767548368622729617821353870622703296087570908735603155999125081727743790083245652659362145288136145004020964445403739551815349944634978429930196370344630107979223204102936646371908266047485583735925127513544821868443751038578347212600335097321876283836508599321409432666223344497759612113922437886158316317309321756691709644342882638785970256967423622312748711462021869668719494868133737340936529693827973449768289569618616959110477938348069764446874172549277166445629673389323537570721499025892871401583780718566334141146891444372056720167238580106004294588023983408110949068925676634600934614407326236494754543604668091196426889487866586253683006497687344805244551116811415322677755309138100217606582159711957778349675405780924725098248165734440609725859923557227882624090733819954748607788759286778393117307486567713449414531253242799336048793898512587416922351072249862379979496346075333842525402457713987512962241151801408088747602541118319602580139543049458650772613553099704696427391659934847692973786316292223944739381848786388556341954241622083310642850447813219607073326408041563486733069853816257896789324045551319755037088618442131331146423713621289638493891684978150596496763780207895660476795481533699694118004797315688020850843758776485972938923432434495440069418445343215420341280042711847572084403785495272596239611718358057479206763407758265413312407824846381133395192898456506473229225136787314930144756882252451305634473881426309641144171713785689008872861781376574439959633987648643018576130215542337839481438388884082264677560703461771690165647753395118399310441168972645259556152700302308180192341217336414601260891209846568563921259501135353991491621201855991355185034869242032403371115547965465483990269048544429538087341589568713744694551680574689237237491011280632994211265728601046457084272149460827390761878382623695568170089082824214781471624419349859426165335950948736550329484315091462220430038109528301488465151597001587458695626672091775630841370920667673089484634221309873986915635179460410766176505308693753040761858823435567699379069230334377993680841390907035222598330539569286394567432603810064443684500211286790765380067016868875864059604528460045303289', -); -test( - macro, - '-3', - 5678, - '1243037693463227949112091519279672492044687354501434200945857669926116693806746194857301400780233995488733257302119315313384942062399372466241771979139200777946071311247293019863313186668415340857975663750784195666817545404528999322911175416479945350848509815821523649497472945192185204394061354208077647593251971659190791580018094752316074849512115300952408135740274415868364936851842971492114222395071837019898407594635391436897273675376020860228061632238135757402157534256820528991141884997213617990932313869139157767548368622729617821353870622703296087570908735603155999125081727743790083245652659362145288136145004020964445403739551815349944634978429930196370344630107979223204102936646371908266047485583735925127513544821868443751038578347212600335097321876283836508599321409432666223344497759612113922437886158316317309321756691709644342882638785970256967423622312748711462021869668719494868133737340936529693827973449768289569618616959110477938348069764446874172549277166445629673389323537570721499025892871401583780718566334141146891444372056720167238580106004294588023983408110949068925676634600934614407326236494754543604668091196426889487866586253683006497687344805244551116811415322677755309138100217606582159711957778349675405780924725098248165734440609725859923557227882624090733819954748607788759286778393117307486567713449414531253242799336048793898512587416922351072249862379979496346075333842525402457713987512962241151801408088747602541118319602580139543049458650772613553099704696427391659934847692973786316292223944739381848786388556341954241622083310642850447813219607073326408041563486733069853816257896789324045551319755037088618442131331146423713621289638493891684978150596496763780207895660476795481533699694118004797315688020850843758776485972938923432434495440069418445343215420341280042711847572084403785495272596239611718358057479206763407758265413312407824846381133395192898456506473229225136787314930144756882252451305634473881426309641144171713785689008872861781376574439959633987648643018576130215542337839481438388884082264677560703461771690165647753395118399310441168972645259556152700302308180192341217336414601260891209846568563921259501135353991491621201855991355185034869242032403371115547965465483990269048544429538087341589568713744694551680574689237237491011280632994211265728601046457084272149460827390761878382623695568170089082824214781471624419349859426165335950948736550329484315091462220430038109528301488465151597001587458695626672091775630841370920667673089484634221309873986915635179460410766176505308693753040761858823435567699379069230334377993680841390907035222598330539569286394567432603810064443684500211286790765380067016868875864059604528460045303289', -); -test(macro, '7', 0, '1'); -test(macro, '-7', 0, '1'); -test(macro, '7', 1, '7'); -test(macro, '-7', 1, '-7'); -test(macro, '7', 3, '343'); -test(macro, '-7', 3, '-343'); -test(macro, '7', 7, '823543'); -test(macro, '-7', 7, '-823543'); -test(macro, '7', 9, '40353607'); -test(macro, '-7', 9, '-40353607'); -test(macro, '7', 11, '1977326743'); -test(macro, '-7', 11, '-1977326743'); -test(macro, '7', 17, '232630513987207'); -test(macro, '-7', 17, '-232630513987207'); -test(macro, '7', 22, '3909821048582988049'); -test(macro, '-7', 22, '3909821048582988049'); -test(macro, '7', 24, '191581231380566414401'); -test(macro, '-7', 24, '191581231380566414401'); -test(macro, '7', 27, '65712362363534280139543'); -test(macro, '-7', 27, '-65712362363534280139543'); -test(macro, '7', 29, '3219905755813179726837607'); -test(macro, '-7', 29, '-3219905755813179726837607'); -test( - macro, - '7', - 1234, - '70954734215028011240104595141498929070420289200365254864883100224459061531095964535961424752183918983389834714345883085722594630104327570484382813454950959834721299254363358098967399048133489131401375954827777487240689332659684949614116231197346793510695402301156840458057925504143947679213040737846060014251249690928324441226158708348216074516368113070768675494487327714367821662938661080440834970823376650216081882744143161592962823478851621834726159007802788609981541818975600270503709811145869971874252832721423453899821462438727851069669041332053765106227148570291872998008674128627485981069824533343176007316751497280494057995201432198045575691194828311578763776024467116028227768366827683004790939265568398432923069244698164607404132404210543306184313774389935234011995625090611727226388755028092996618090667295922698497975515840710550500258575437750076719351206138149202280453034232757583405474400100672191700332560347912741669538744924043142095605796598736664375513698661239721232174697654768024941266796370339939780641017369634940849', -); -test( - macro, - '-7', - 1234, - '70954734215028011240104595141498929070420289200365254864883100224459061531095964535961424752183918983389834714345883085722594630104327570484382813454950959834721299254363358098967399048133489131401375954827777487240689332659684949614116231197346793510695402301156840458057925504143947679213040737846060014251249690928324441226158708348216074516368113070768675494487327714367821662938661080440834970823376650216081882744143161592962823478851621834726159007802788609981541818975600270503709811145869971874252832721423453899821462438727851069669041332053765106227148570291872998008674128627485981069824533343176007316751497280494057995201432198045575691194828311578763776024467116028227768366827683004790939265568398432923069244698164607404132404210543306184313774389935234011995625090611727226388755028092996618090667295922698497975515840710550500258575437750076719351206138149202280453034232757583405474400100672191700332560347912741669538744924043142095605796598736664375513698661239721232174697654768024941266796370339939780641017369634940849', -); -test( - macro, - '7', - 5678, - '29286751415147620247012304773980453114296677803073891717128731934016701215974044080405159393233326470923575961142799138193074871298378636445798628179207951349293982721295278501959247567396219037376513091082530976510046931578018252332911963395881855502229529277894696192062382498205446451330821264508660060350680978703632399146027439892583747910260252573283992801340972629278229559465911897286605725711901509827250224363194810593341410557007928980446292059141174553339348167116022054072976080669663383423876445574623259565705649860557328656767872910853528973163262527221058274477371143012479363191542123347184358086644971892976333589967255121778587469470892635729379036729236304281800433959466187506663459515828468608307875018665592185468341433713422202882333951754002984232398322608180776700835785085017756319924590206151470700716667835012667869936677506199082647415474168800484943151012348606524534006652121876222361977658821488777239683223567987622345303322949601239794141770292343853950382720459690070362230065991442547398307358472021289622300608069384246841369764420640724519271620643375180877746823736826186226120840335052438117942436533089511127752752776144826427488391781629757387931931866819313611113838895192595153612697562710052857839705947750975715806160854609794879295166494370393332625817992461823676698792102936528543520961016844260805703577116507427610889086939384974782917847235365828889115833315047177125587286162340061433341091371954086793250119039573579409345450985100916248737095737635113804291080478497302622719151600453447616115190282792195268648972132196212717229671264933006034401449925954728380766566809709129051085718977633841056681750845701567687767262960074466629251941876310059953363356531903058045532738271892988757147772703584798866501751770352083540196100803611978925296332203675077547295577020941062653460756395909170345723103094148861314777405742548532625701646810183666329500365537037837796381818770012342811563068087864026587087965941993420061262519506075499730518978585216724282264266842476339924360204070092387081062271166294076464986173214296883414741128262228746457873862297729461562411250198067094652357764260127419648002555197136786444971264851853928282497021712573900531648560775269275620991652740780298232021457075682576160866924920643357459760230060837118671529811745348483144053263057167731433439790093453587845785289839653966318286353544985756786138017559281729742760365436559566020930901853363600729656253961774820405787066019640729410826090870703799290454880306581230282510738087113753806619350425640320369895844610395585664858869947128190822130577054035661501630309320241329765059393323789228824376116472207943909200787598356625424332899455771232035169336714551998000090274179880982976417171021168670556482314198238096787861626550887693327061858177712413982165608873492233854569701565615054215981574912415571024874796636058468882371352130950473473787764998548443335260725529010774114177855533290850946155316766268951403608859645495518354455415922245608492259889927964017924837101397067268070099225030817739186510992894635323450695473383790259049745811723535604236057509473976199273919932581197631717736843031016857549306106108894545373734030577486454218738603892987604028992432585288674498003102110839666180973964000647771786878484450905268467447862314262776221757175689654294334472018305832948254130011534914626821150798633758257956359485409097758800820518855504265570934089990834849940809640817750881113810307074278330447454706136884709705076100153948256437849665146298178253907766151956875148887880704088418959235408519102084994845764532487122261171084690258639078929318849083005320788264786818741497152218531813309049735082217246480998356792356423468690812689741878405570775329789967268544118775265597533519971689880183688879583268069589841484628003686747384622711287138558207298669062173888449730536222746981830761436411638918704083993605529775430511215721624379386418171517300661716804853921368534386259059328549100166544678556092078039125431284837120330424638877929381377386822642410570351497645327464806551308709476717189758730145852636898776648068485630182784186320600350425256211486828867199336911598081431699804028420689319751310314229065511569912938919887605558610237415833117670117720398090281760742873925225005809250637733443636498423237903430070501472467711563994554631346830772764419040383097667651843091497767178561922112757100189347867151512651676504135813782377307832677229924200900337767048640550254889564573280195779350492199790482755320611128427773224927972518754103462948342397056029050310063164777386764680047944172099837029881521262503568821175159785856887995352684696513864645799309539055373624021324611634320733523909093966797454147058520418465164134584379979514639416027197229802081214558290831868642024962672375789914449', -); -test( - macro, - '-7', - 5678, - '29286751415147620247012304773980453114296677803073891717128731934016701215974044080405159393233326470923575961142799138193074871298378636445798628179207951349293982721295278501959247567396219037376513091082530976510046931578018252332911963395881855502229529277894696192062382498205446451330821264508660060350680978703632399146027439892583747910260252573283992801340972629278229559465911897286605725711901509827250224363194810593341410557007928980446292059141174553339348167116022054072976080669663383423876445574623259565705649860557328656767872910853528973163262527221058274477371143012479363191542123347184358086644971892976333589967255121778587469470892635729379036729236304281800433959466187506663459515828468608307875018665592185468341433713422202882333951754002984232398322608180776700835785085017756319924590206151470700716667835012667869936677506199082647415474168800484943151012348606524534006652121876222361977658821488777239683223567987622345303322949601239794141770292343853950382720459690070362230065991442547398307358472021289622300608069384246841369764420640724519271620643375180877746823736826186226120840335052438117942436533089511127752752776144826427488391781629757387931931866819313611113838895192595153612697562710052857839705947750975715806160854609794879295166494370393332625817992461823676698792102936528543520961016844260805703577116507427610889086939384974782917847235365828889115833315047177125587286162340061433341091371954086793250119039573579409345450985100916248737095737635113804291080478497302622719151600453447616115190282792195268648972132196212717229671264933006034401449925954728380766566809709129051085718977633841056681750845701567687767262960074466629251941876310059953363356531903058045532738271892988757147772703584798866501751770352083540196100803611978925296332203675077547295577020941062653460756395909170345723103094148861314777405742548532625701646810183666329500365537037837796381818770012342811563068087864026587087965941993420061262519506075499730518978585216724282264266842476339924360204070092387081062271166294076464986173214296883414741128262228746457873862297729461562411250198067094652357764260127419648002555197136786444971264851853928282497021712573900531648560775269275620991652740780298232021457075682576160866924920643357459760230060837118671529811745348483144053263057167731433439790093453587845785289839653966318286353544985756786138017559281729742760365436559566020930901853363600729656253961774820405787066019640729410826090870703799290454880306581230282510738087113753806619350425640320369895844610395585664858869947128190822130577054035661501630309320241329765059393323789228824376116472207943909200787598356625424332899455771232035169336714551998000090274179880982976417171021168670556482314198238096787861626550887693327061858177712413982165608873492233854569701565615054215981574912415571024874796636058468882371352130950473473787764998548443335260725529010774114177855533290850946155316766268951403608859645495518354455415922245608492259889927964017924837101397067268070099225030817739186510992894635323450695473383790259049745811723535604236057509473976199273919932581197631717736843031016857549306106108894545373734030577486454218738603892987604028992432585288674498003102110839666180973964000647771786878484450905268467447862314262776221757175689654294334472018305832948254130011534914626821150798633758257956359485409097758800820518855504265570934089990834849940809640817750881113810307074278330447454706136884709705076100153948256437849665146298178253907766151956875148887880704088418959235408519102084994845764532487122261171084690258639078929318849083005320788264786818741497152218531813309049735082217246480998356792356423468690812689741878405570775329789967268544118775265597533519971689880183688879583268069589841484628003686747384622711287138558207298669062173888449730536222746981830761436411638918704083993605529775430511215721624379386418171517300661716804853921368534386259059328549100166544678556092078039125431284837120330424638877929381377386822642410570351497645327464806551308709476717189758730145852636898776648068485630182784186320600350425256211486828867199336911598081431699804028420689319751310314229065511569912938919887605558610237415833117670117720398090281760742873925225005809250637733443636498423237903430070501472467711563994554631346830772764419040383097667651843091497767178561922112757100189347867151512651676504135813782377307832677229924200900337767048640550254889564573280195779350492199790482755320611128427773224927972518754103462948342397056029050310063164777386764680047944172099837029881521262503568821175159785856887995352684696513864645799309539055373624021324611634320733523909093966797454147058520418465164134584379979514639416027197229802081214558290831868642024962672375789914449', -); -test(macro, '9', 0, '1'); -test(macro, '-9', 0, '1'); -test(macro, '9', 1, '9'); -test(macro, '-9', 1, '-9'); -test(macro, '9', 3, '729'); -test(macro, '-9', 3, '-729'); -test(macro, '9', 7, '4782969'); -test(macro, '-9', 7, '-4782969'); -test(macro, '9', 9, '387420489'); -test(macro, '-9', 9, '-387420489'); -test(macro, '9', 11, '31381059609'); -test(macro, '-9', 11, '-31381059609'); -test(macro, '9', 17, '16677181699666569'); -test(macro, '-9', 17, '-16677181699666569'); -test(macro, '9', 22, '984770902183611232881'); -test(macro, '-9', 22, '984770902183611232881'); -test(macro, '9', 24, '79766443076872509863361'); -test(macro, '-9', 24, '79766443076872509863361'); -test(macro, '9', 27, '58149737003040059690390169'); -test(macro, '-9', 27, '-58149737003040059690390169'); -test(macro, '9', 29, '4710128697246244834921603689'); -test(macro, '-9', 29, '-4710128697246244834921603689'); -test( - macro, - '9', - 1234, - '34297040645642669671420659321651782362579256907010306825298584320017224909034295065159266732166824736588968016033381896847023243099736344433210097854593507161679850671932155017203599500044609298345843661231598352934672574000630755280719247078658076071069504371210453795997193380141459822909472292250049962822082559318856309665763195373936160408297178132724501864611562349337209033935902601202229170588203644970751513231529370646017342084334943445632338625406001819417100075123659123153934372275946883429572960429182400235833979860757127508599030945874737763438221696224240363286973695769026948553357192210469914347532288838793872337455361841599848707950096810738215169875752378946944496071085184269469689190048414428631904103213703000348839546159132360494448224371361413782868923322232033859714664315449006669237525993661192066307764695656412997620762143868465614936957887460078238297229855499508020184426374192732713213787351302551235717525464575349122336444905826195262672337776865803043472081042136085365758586709594709588874980188963624351301943558778230597943000313246648597648327615323559497393534626812152826795197456515853598831232826676446660986298958124148320950039761', -); -test( - macro, - '-9', - 1234, - '34297040645642669671420659321651782362579256907010306825298584320017224909034295065159266732166824736588968016033381896847023243099736344433210097854593507161679850671932155017203599500044609298345843661231598352934672574000630755280719247078658076071069504371210453795997193380141459822909472292250049962822082559318856309665763195373936160408297178132724501864611562349337209033935902601202229170588203644970751513231529370646017342084334943445632338625406001819417100075123659123153934372275946883429572960429182400235833979860757127508599030945874737763438221696224240363286973695769026948553357192210469914347532288838793872337455361841599848707950096810738215169875752378946944496071085184269469689190048414428631904103213703000348839546159132360494448224371361413782868923322232033859714664315449006669237525993661192066307764695656412997620762143868465614936957887460078238297229855499508020184426374192732713213787351302551235717525464575349122336444905826195262672337776865803043472081042136085365758586709594709588874980188963624351301943558778230597943000313246648597648327615323559497393534626812152826795197456515853598831232826676446660986298958124148320950039761', -); -test( - macro, - '9', - 5678, - '1545142707370381851609411413899132682778575844549055737803770782486638374123987237714505350031063863696419362246215324259025872807818706708567475641777221524486469451542665562456475991411669945011588061933033043990285593410736303684531491655090341501196320194664020232558795638543041629641355998266033548545684015858096482700688284981448066016292615109699224816361227721744941140103885809784889737995411688872156490144707451483247506723486569306623432455131502484848152542555905761267826576308873877093265177335466304892722841390706005314223149855304965697484723009003003632083696007411617084581327217056398066426605090819508953675656967992469076739615155228601392777535817633074609994606291164127882587611790074634314684395235695951310867816046457022429685001454352432479391043233372844749832834475133612310166159430096724033853202779978343792803241815105520473343882963270232006318108101172487652645037890933800756420196027281412374330156942298809917864681543862000700290148757672140417762608153842991450104537691398458724848347134986905461646720926318916004759872555232117444680320721345188614171935657721162922772487571124238457660530591028220098993082424798607063347980184136709298769413926930349712815088173558675750389256644773436235100564071786607781876607264630905026348034479999782657445944748011068965501487523392800451597712231719881642976802003901339999399734075058637765277161028644547435177576795907751332319356126994328383614000959809721439665568650348697207647555316250229874630972224221714533827025501634911141684146186203253767040684930463940464377863490189848093370410257333803061200409882588601608120045438839772858741664177165757415118862088960994925276210066381127080570557851385479331042246570187178836367072105659557298025995994432154607547760881911528513006072722679351100800384912243076415109378562053413427675008822161639569146618213571005063105134152183592318763191892403562862300332002443513358137733609305717552536116534529456800098568792487873742228833784937429502805597130286226862975217006199009586805130712898326268708779958470992748082915469591083119179614842245665430602770992134692732918676506143472628731074803946929989696665115780648730022856841984172068021565899431168771658079365019826787122767864320410003659006630243236082123473778365296923504448099879355899093296587407124679743539714668629739203451409169220276915270710072344374154805355451447610334870077107520916084363778625558453362830867729338005614696548674280966101030920025275289509398227466089735040095294432049245365579301293649947590752813026695775305108512549093425827168709309153164964518435002803203260297748051469146218834794141288192941465904821437732646224427502122761116109084100303184096830143400182874440330465783102621606891257024121143498202107903258018086176991251634730153737114344138284105389641830312676972930646347797776529968734739053219753095634106865389392731865073020060739843556848436924296264365174038915119777825322849472657573916448107560433792653801959610188502511534981700386973496144694841422884340132779103883906981191026922867395953990063126834152580234552204739961906926767894178052760711620116507790314554396528396871813365687210073019525832824479961834155693623848039441214108218991798316931852715586106991173419636671902754236049107585921303060877716511803128895869667091654139705002524900507762082934568975954418238682291841910718982426145152686903351718809457762642345982881924850372358154935832556134320066020200965922897806724341248914397224558268067799442480589425192305345138246146351317529543861709892659099510408182947241066305485992782013056611600088525469992301128153504386277775010761258678532453273506462144848662004743034850060677824385240850588592267171443255754150565279560373497193659947780285389694817090742653506541905415465147664245703555755319506569259093273234477472175250215865923275863458053491886242823523838048453699851299857579772170676938286642988817887754472081798505839390455625598352142445901032306662849749227441402540484189893049732970070242662289545041240186274540855527695224386798038802847716909643228838071712328328843306868604223267430082476250031289111386554075507235619140890749226586960627425891165027575773899527151843957100604729050655499468273965365676635425643512622568877104991613143416548361882289872531929492966266589241390435796283886856494108038015908593659759442649289267891231233370864787216502985947587427499976015148867290521443540972183144322560989287993403276257505450903566910878200950050498748138177006078421885399215834679055363231796024572637313051142809997975829383113593886842905030615548365187334414986576626572709945335218302316974585860218354236627526789998871983242318007851112973254711384763164130812368517530397568357211122447291577632411868201330873749770649724664584931910689209273266716237972155094521293509679679188639121028673703592870439365985904787534978888232064234185884332728603718178498587929582594411733908808682843871136010409164159211147954735782608477209486374278676903968217823052983733854225085207900133055681775964179915225898467500534275504778286018191192185134700062560159814398118843013372902422075816271217441168393867803438088703366735453642092957869537542911086888294098076857636181045592676382529427459580323398060295400592579156848598273806304984575515978899816201496154375306741429141182134037640643883635820658781752675039083634856662576936007793352035809688183925957066262267994217521', -); -test( - macro, - '-9', - 5678, - '1545142707370381851609411413899132682778575844549055737803770782486638374123987237714505350031063863696419362246215324259025872807818706708567475641777221524486469451542665562456475991411669945011588061933033043990285593410736303684531491655090341501196320194664020232558795638543041629641355998266033548545684015858096482700688284981448066016292615109699224816361227721744941140103885809784889737995411688872156490144707451483247506723486569306623432455131502484848152542555905761267826576308873877093265177335466304892722841390706005314223149855304965697484723009003003632083696007411617084581327217056398066426605090819508953675656967992469076739615155228601392777535817633074609994606291164127882587611790074634314684395235695951310867816046457022429685001454352432479391043233372844749832834475133612310166159430096724033853202779978343792803241815105520473343882963270232006318108101172487652645037890933800756420196027281412374330156942298809917864681543862000700290148757672140417762608153842991450104537691398458724848347134986905461646720926318916004759872555232117444680320721345188614171935657721162922772487571124238457660530591028220098993082424798607063347980184136709298769413926930349712815088173558675750389256644773436235100564071786607781876607264630905026348034479999782657445944748011068965501487523392800451597712231719881642976802003901339999399734075058637765277161028644547435177576795907751332319356126994328383614000959809721439665568650348697207647555316250229874630972224221714533827025501634911141684146186203253767040684930463940464377863490189848093370410257333803061200409882588601608120045438839772858741664177165757415118862088960994925276210066381127080570557851385479331042246570187178836367072105659557298025995994432154607547760881911528513006072722679351100800384912243076415109378562053413427675008822161639569146618213571005063105134152183592318763191892403562862300332002443513358137733609305717552536116534529456800098568792487873742228833784937429502805597130286226862975217006199009586805130712898326268708779958470992748082915469591083119179614842245665430602770992134692732918676506143472628731074803946929989696665115780648730022856841984172068021565899431168771658079365019826787122767864320410003659006630243236082123473778365296923504448099879355899093296587407124679743539714668629739203451409169220276915270710072344374154805355451447610334870077107520916084363778625558453362830867729338005614696548674280966101030920025275289509398227466089735040095294432049245365579301293649947590752813026695775305108512549093425827168709309153164964518435002803203260297748051469146218834794141288192941465904821437732646224427502122761116109084100303184096830143400182874440330465783102621606891257024121143498202107903258018086176991251634730153737114344138284105389641830312676972930646347797776529968734739053219753095634106865389392731865073020060739843556848436924296264365174038915119777825322849472657573916448107560433792653801959610188502511534981700386973496144694841422884340132779103883906981191026922867395953990063126834152580234552204739961906926767894178052760711620116507790314554396528396871813365687210073019525832824479961834155693623848039441214108218991798316931852715586106991173419636671902754236049107585921303060877716511803128895869667091654139705002524900507762082934568975954418238682291841910718982426145152686903351718809457762642345982881924850372358154935832556134320066020200965922897806724341248914397224558268067799442480589425192305345138246146351317529543861709892659099510408182947241066305485992782013056611600088525469992301128153504386277775010761258678532453273506462144848662004743034850060677824385240850588592267171443255754150565279560373497193659947780285389694817090742653506541905415465147664245703555755319506569259093273234477472175250215865923275863458053491886242823523838048453699851299857579772170676938286642988817887754472081798505839390455625598352142445901032306662849749227441402540484189893049732970070242662289545041240186274540855527695224386798038802847716909643228838071712328328843306868604223267430082476250031289111386554075507235619140890749226586960627425891165027575773899527151843957100604729050655499468273965365676635425643512622568877104991613143416548361882289872531929492966266589241390435796283886856494108038015908593659759442649289267891231233370864787216502985947587427499976015148867290521443540972183144322560989287993403276257505450903566910878200950050498748138177006078421885399215834679055363231796024572637313051142809997975829383113593886842905030615548365187334414986576626572709945335218302316974585860218354236627526789998871983242318007851112973254711384763164130812368517530397568357211122447291577632411868201330873749770649724664584931910689209273266716237972155094521293509679679188639121028673703592870439365985904787534978888232064234185884332728603718178498587929582594411733908808682843871136010409164159211147954735782608477209486374278676903968217823052983733854225085207900133055681775964179915225898467500534275504778286018191192185134700062560159814398118843013372902422075816271217441168393867803438088703366735453642092957869537542911086888294098076857636181045592676382529427459580323398060295400592579156848598273806304984575515978899816201496154375306741429141182134037640643883635820658781752675039083634856662576936007793352035809688183925957066262267994217521', -); -test(macro, '11', 0, '1'); -test(macro, '-11', 0, '1'); -test(macro, '11', 1, '11'); -test(macro, '-11', 1, '-11'); -test(macro, '11', 3, '1331'); -test(macro, '-11', 3, '-1331'); -test(macro, '11', 7, '19487171'); -test(macro, '-11', 7, '-19487171'); -test(macro, '11', 9, '2357947691'); -test(macro, '-11', 9, '-2357947691'); -test(macro, '11', 11, '285311670611'); -test(macro, '-11', 11, '-285311670611'); -test(macro, '11', 17, '505447028499293771'); -test(macro, '-11', 17, '-505447028499293771'); -test(macro, '11', 22, '81402749386839761113321'); -test(macro, '-11', 22, '81402749386839761113321'); -test(macro, '11', 24, '9849732675807611094711841'); -test(macro, '-11', 24, '9849732675807611094711841'); -test(macro, '11', 27, '13109994191499930367061460371'); -test(macro, '-11', 27, '-13109994191499930367061460371'); -test(macro, '11', 29, '1586309297171491574414436704891'); -test(macro, '-11', 29, '-1586309297171491574414436704891'); -test( - macro, - '11', - 1234, - '11983218693353866267692684359194000502433893845480769112172251205188147262289354049461429172488569661122876033605557421170789272790102054304092511689341645557874249802952871767405284987003806187594928847518777345850099915863264078051816617440620669835924344622459557434141694081118718006962588499405658476477809584051185924057025464163718833076869861008662963948775457304791091957146272768229564713967630639094659383688489828857998385412406001934065445969895732784144880158564496904866299896753946773061123748947095350178138399329492711931118102507186743010708942286629969813642204878306198565914755078983880064808436574100979762259478493960140042607880569732036310833444310215790281432505720437714904537904767412626253808859682743392379188494787465177304942343204339576610614978528053711125948630650946573610344095512008508992625585490923211491629695497720992580178320146672152256706875056491678710723022609578354722578101061602454247010516142562468962308895384683137775859149496917496435957009023897662611266558969297452444733968450168403551460556237438931715240285963118359275426150086656493777954817140258639584026557409436805416478575578840073580647683266895284248911727092735184253994397858925804638577468716770187699083797737507027525458211673613162334364880959262660197607632441', -); -test( - macro, - '-11', - 1234, - '11983218693353866267692684359194000502433893845480769112172251205188147262289354049461429172488569661122876033605557421170789272790102054304092511689341645557874249802952871767405284987003806187594928847518777345850099915863264078051816617440620669835924344622459557434141694081118718006962588499405658476477809584051185924057025464163718833076869861008662963948775457304791091957146272768229564713967630639094659383688489828857998385412406001934065445969895732784144880158564496904866299896753946773061123748947095350178138399329492711931118102507186743010708942286629969813642204878306198565914755078983880064808436574100979762259478493960140042607880569732036310833444310215790281432505720437714904537904767412626253808859682743392379188494787465177304942343204339576610614978528053711125948630650946573610344095512008508992625585490923211491629695497720992580178320146672152256706875056491678710723022609578354722578101061602454247010516142562468962308895384683137775859149496917496435957009023897662611266558969297452444733968450168403551460556237438931715240285963118359275426150086656493777954817140258639584026557409436805416478575578840073580647683266895284248911727092735184253994397858925804638577468716770187699083797737507027525458211673613162334364880959262660197607632441', -); -test( - macro, - '11', - 5678, - '1065776962422733390099998701350852375306774582971639100309613498738018463297402426284028524738823271322985272649725948115092991253107878527781609210894707854772049951003472314067831553881895690939206687522352568657440321602968389543267780665609966988582230996295164519798616549566676379590692798762716905683941763340478583251178705357020162093767335382720674351919299433767565974669460608726103203480874707475235760946929885758550631464242176556080700621170771150306343987986469041228052005627284421145796887853536588932524692770319694218582474445761213162153365490914843340179888987594736119906310580976352820314588543355972619484459495220871689392023112857825597955459918887431929154224173483293504587547665399509030344942605272570136172447400900121488107719512383240606334221292626608823849332333400482253520345477235442179195426136234693064612259799609047549032234897003107500108465053915738728979810144514094776056483728190563804640721019604885909118861940983487407937039944554294878572669564050159687664895605736084313761462824024676968707517184596167351978713169868322481182055851502456062238802586269146612231272427522079499528515959498333263466983785280259161881502475046417048213519584900610678927089224215919039112968768072827818708306560616332850558578446752780273726465248390043011232866170085126505517422418551900039852406583243467144607754086873525143407052846262179499389679942347532000823560325207132685549949066558071494494427946598444312782804755853495210071597142876358782604358201649556061239418307323404601244967442012437515731329817926308824617354000382199156471760900683632471277324956810127590967837960592617262960312465376355316455915879176664759553277776308042310559423721792898442749222107490339293940127243016498854242115145167447996864142048792438738560578225455082147842584858075118284318490977553362786437651112857419381043628238857484819676978075445230762210380626626912004719898874366572155465547173520667309054225283981508791442674778656040035468907369752869408514185313704067350389223145645763194281830994949130563721534905420232142720998287316636023688674050985251378185009914925807988317225071216640027871716722483316868791467166847104807602861728042597469553982173934183881854721408118637488166739219019898807239930452080477028419451221482169218590941548470167987081105665128401656215589475541679937253196949254758234290186798375277113144758530616146671086378878587968488456069580463733501978709324650086157580838543304059737187837840172970261310651170220832783959402177878176227431050767112633358910621278034506978615256025290080266327386921789544837403448128169941411317755734221724534993423771737584328270941785681037187637148965847831330028884230742250527433592894233763159902534751780862175154629552102145945586119235764832272990067006647822901592710351066659902000064017329218952050761426811476157880640667065247449451972208247978421550456277234547741925058712547416503369256196211239680164366047864051968708570583351534285698926517869625895514771976844313520579796558965092576627465235658048719487760146348808931495565346847366003973304701007063054233684522192162343464740701950442784465797167708293183479944132342976405589996322951258093432243177899159394041673341432298028719356007636825480992284923970510736838942942304796113387801478681602920972896373837595385277191717576279392952761700936522637224711546691229425008983033605153229822416869513005954335605693170930885249832778368398645533597288302148018420434619254347639616385151984552960650830068954346104302987832610586471252692718122275927836615526059882116390127451028052550923092000111263140958227160206219707410977980611517826815099866318452865266839478499873605810527128458400682829266213047212490751292505412839799091839878790386710181065160084894230231280531312918673011117069898789068313484780627491574837836376088397252997015833464534344451570629480561635620053916519436130021805563621848179479920844707168181116371097043308074403627884022121921874913710872985556815638427086651333779751907556934770310989869843884425304798400423634711778163856020448720206496290069493745603962153577775093497572698365374594076591461904206049396452233781439591258104765917225718355977433822381572720392535330998593120939566841352057738311318719931927026631838006769672045108443992445284929970269294270278680743013077174180453305089917742058685731225366141765610284466364224239657923316122018028323771071925305776184392902004619136458183176936490831946840938417871887775288789743276992617406109612755025092558440576560761222878309756084815155667190192960921003385227785262941734093931704345512521132798515611547442925571295279505831931283715748549845669395353133931794747206486070337327303879615849380818093267141506586465834431904895759614006956917248763890815129377994441625824333049728355566141085538225755137382489951163889065597959637090364281160499433447909053653936224421624718741987104354218067585258083011422152546594719663896981399037561028385236732212486414059132101618529606220469363058220156329055224342467340925139139929630506131648767286858276792072149267144670692471130323158321566298623976468399937857216321372392619400998408839149950057518963808345869653309993310768299116776379707325175676054902275922736269241390641779960744489235538753789112847068524247966967539956729499733460342777803955793449997285158138613067762195702203432660309455273766440576594246410536265644453872508630612565356986609709760894462294180493818840739169368085369286699229156832130169858213118001196840078980080715876252447472429116934369285480649794242527428955233670068043503668172668283633933776143476087412305215113096021310601587105393061779999730415570592566016145834001225399284902644145953391096153151308606014346031294960654945643001133160678398141361376867996289493175381235832216759220680742166229263430190948116635508223815277449847445410032258317401960451466607747028200896253295257428236276899079754883495683081', -); -test( - macro, - '-11', - 5678, - '1065776962422733390099998701350852375306774582971639100309613498738018463297402426284028524738823271322985272649725948115092991253107878527781609210894707854772049951003472314067831553881895690939206687522352568657440321602968389543267780665609966988582230996295164519798616549566676379590692798762716905683941763340478583251178705357020162093767335382720674351919299433767565974669460608726103203480874707475235760946929885758550631464242176556080700621170771150306343987986469041228052005627284421145796887853536588932524692770319694218582474445761213162153365490914843340179888987594736119906310580976352820314588543355972619484459495220871689392023112857825597955459918887431929154224173483293504587547665399509030344942605272570136172447400900121488107719512383240606334221292626608823849332333400482253520345477235442179195426136234693064612259799609047549032234897003107500108465053915738728979810144514094776056483728190563804640721019604885909118861940983487407937039944554294878572669564050159687664895605736084313761462824024676968707517184596167351978713169868322481182055851502456062238802586269146612231272427522079499528515959498333263466983785280259161881502475046417048213519584900610678927089224215919039112968768072827818708306560616332850558578446752780273726465248390043011232866170085126505517422418551900039852406583243467144607754086873525143407052846262179499389679942347532000823560325207132685549949066558071494494427946598444312782804755853495210071597142876358782604358201649556061239418307323404601244967442012437515731329817926308824617354000382199156471760900683632471277324956810127590967837960592617262960312465376355316455915879176664759553277776308042310559423721792898442749222107490339293940127243016498854242115145167447996864142048792438738560578225455082147842584858075118284318490977553362786437651112857419381043628238857484819676978075445230762210380626626912004719898874366572155465547173520667309054225283981508791442674778656040035468907369752869408514185313704067350389223145645763194281830994949130563721534905420232142720998287316636023688674050985251378185009914925807988317225071216640027871716722483316868791467166847104807602861728042597469553982173934183881854721408118637488166739219019898807239930452080477028419451221482169218590941548470167987081105665128401656215589475541679937253196949254758234290186798375277113144758530616146671086378878587968488456069580463733501978709324650086157580838543304059737187837840172970261310651170220832783959402177878176227431050767112633358910621278034506978615256025290080266327386921789544837403448128169941411317755734221724534993423771737584328270941785681037187637148965847831330028884230742250527433592894233763159902534751780862175154629552102145945586119235764832272990067006647822901592710351066659902000064017329218952050761426811476157880640667065247449451972208247978421550456277234547741925058712547416503369256196211239680164366047864051968708570583351534285698926517869625895514771976844313520579796558965092576627465235658048719487760146348808931495565346847366003973304701007063054233684522192162343464740701950442784465797167708293183479944132342976405589996322951258093432243177899159394041673341432298028719356007636825480992284923970510736838942942304796113387801478681602920972896373837595385277191717576279392952761700936522637224711546691229425008983033605153229822416869513005954335605693170930885249832778368398645533597288302148018420434619254347639616385151984552960650830068954346104302987832610586471252692718122275927836615526059882116390127451028052550923092000111263140958227160206219707410977980611517826815099866318452865266839478499873605810527128458400682829266213047212490751292505412839799091839878790386710181065160084894230231280531312918673011117069898789068313484780627491574837836376088397252997015833464534344451570629480561635620053916519436130021805563621848179479920844707168181116371097043308074403627884022121921874913710872985556815638427086651333779751907556934770310989869843884425304798400423634711778163856020448720206496290069493745603962153577775093497572698365374594076591461904206049396452233781439591258104765917225718355977433822381572720392535330998593120939566841352057738311318719931927026631838006769672045108443992445284929970269294270278680743013077174180453305089917742058685731225366141765610284466364224239657923316122018028323771071925305776184392902004619136458183176936490831946840938417871887775288789743276992617406109612755025092558440576560761222878309756084815155667190192960921003385227785262941734093931704345512521132798515611547442925571295279505831931283715748549845669395353133931794747206486070337327303879615849380818093267141506586465834431904895759614006956917248763890815129377994441625824333049728355566141085538225755137382489951163889065597959637090364281160499433447909053653936224421624718741987104354218067585258083011422152546594719663896981399037561028385236732212486414059132101618529606220469363058220156329055224342467340925139139929630506131648767286858276792072149267144670692471130323158321566298623976468399937857216321372392619400998408839149950057518963808345869653309993310768299116776379707325175676054902275922736269241390641779960744489235538753789112847068524247966967539956729499733460342777803955793449997285158138613067762195702203432660309455273766440576594246410536265644453872508630612565356986609709760894462294180493818840739169368085369286699229156832130169858213118001196840078980080715876252447472429116934369285480649794242527428955233670068043503668172668283633933776143476087412305215113096021310601587105393061779999730415570592566016145834001225399284902644145953391096153151308606014346031294960654945643001133160678398141361376867996289493175381235832216759220680742166229263430190948116635508223815277449847445410032258317401960451466607747028200896253295257428236276899079754883495683081', -); -test(macro, '17', 0, '1'); -test(macro, '-17', 0, '1'); -test(macro, '17', 1, '17'); -test(macro, '-17', 1, '-17'); -test(macro, '17', 3, '4913'); -test(macro, '-17', 3, '-4913'); -test(macro, '17', 7, '410338673'); -test(macro, '-17', 7, '-410338673'); -test(macro, '17', 9, '118587876497'); -test(macro, '-17', 9, '-118587876497'); -test(macro, '17', 11, '34271896307633'); -test(macro, '-17', 11, '-34271896307633'); -test(macro, '17', 17, '827240261886336764177'); -test(macro, '-17', 17, '-827240261886336764177'); -test(macro, '17', 22, '1174562876521148458974062689'); -test(macro, '-17', 22, '1174562876521148458974062689'); -test(macro, '17', 24, '339448671314611904643504117121'); -test(macro, '-17', 24, '339448671314611904643504117121'); -test(macro, '17', 27, '1667711322168688287513535727415473'); -test(macro, '-17', 27, '-1667711322168688287513535727415473'); -test(macro, '17', 29, '481968572106750915091411825223071697'); -test(macro, '-17', 29, '-481968572106750915091411825223071697'); -test( - macro, - '17', - 1234, - '2365750719195418700959936173439221488331849554433443272309037789270912117133978206777246165583614280813095899236078594286552848472860457643580615017539717857048793304325119681053421007826013802905479250885212839793760101742612296877478711932287387420109262614158330630362237192202151123468592153560375572873151822947436950242912080157786888545384847518810574795754691976973525697429044294851654461713242307440541746159573098284837473930094049306091573440131975480886198509578012017892791103610676499734889373927818577887242310104551008535893775377108954649457429588226369074071331951078940909959401201709240381177136083510255280740550175339832084572676328794889199725393235934601424964165016988318210336776289444267654575587266337284861333685818972410304844379843215873568783484299285855710739185984313729162892241201484427793478780366719828354369198742105822244711994746358620164097425507697349511284930229811697252220792819650825560346717292110648932265899796733644188721108873119505172872099646531092906043987147572277125354950545394615532850018465975565730363029206743959014462690377536775695776234592924640448812639061038539121473894456471681658974744379159553490945761899997224178778022075766625329855978704429033291722506766694214979844269409520158332260044608648267713490710210601126307243035021020433002092628988274703326841291915973218749244960354639698612598420531573152776417281665548298330678827921029701549454503621900176615327265802134551424622450618795022965384601079468969005231566796416059429914871329', -); -test( - macro, - '-17', - 1234, - '2365750719195418700959936173439221488331849554433443272309037789270912117133978206777246165583614280813095899236078594286552848472860457643580615017539717857048793304325119681053421007826013802905479250885212839793760101742612296877478711932287387420109262614158330630362237192202151123468592153560375572873151822947436950242912080157786888545384847518810574795754691976973525697429044294851654461713242307440541746159573098284837473930094049306091573440131975480886198509578012017892791103610676499734889373927818577887242310104551008535893775377108954649457429588226369074071331951078940909959401201709240381177136083510255280740550175339832084572676328794889199725393235934601424964165016988318210336776289444267654575587266337284861333685818972410304844379843215873568783484299285855710739185984313729162892241201484427793478780366719828354369198742105822244711994746358620164097425507697349511284930229811697252220792819650825560346717292110648932265899796733644188721108873119505172872099646531092906043987147572277125354950545394615532850018465975565730363029206743959014462690377536775695776234592924640448812639061038539121473894456471681658974744379159553490945761899997224178778022075766625329855978704429033291722506766694214979844269409520158332260044608648267713490710210601126307243035021020433002092628988274703326841291915973218749244960354639698612598420531573152776417281665548298330678827921029701549454503621900176615327265802134551424622450618795022965384601079468969005231566796416059429914871329', -); -test( - macro, - '17', - 5678, - '308301463160662792592974191225677550213805858865919919735981762675623786601714250489696698804852341045297420123063243922100400196696349793305072692507353336241216967013579955338321444377099377319922539877186220868052446496202732277247371505550502651392252286935974933884151213108283554369258213425365822337513947069960567344400310797289631047757394436944996398072856708476570135250826251807398908611346753721594187395239741456589520555880152964355709918481651414281037119345031864349473612190232783371634279010028835470052200853299387882937134502672486160490325572916770961984349270782004601755602396869480289583861432077292039522042728544628472407886559019506167070189042096361924625145764203394220016152058200833752782786135860272071163220664632628957715045743868317244354995167227549385742687044952230405548258021083955544683907569599512046698283062653360884689200605347962098694683370357258724260056117352725577527325470851942851786836586694378752609414985480451815306391204834718631347771140575410484669506656818267247739857567770208151137491950666879071411531164773778999066561543024242136809243170757624965045375519201614760897620552430403133361040466722500087079354845734867920025285926879314249326848120872229945829401869885167283900122714895079076317869209094125931991982545556531488000512974612556335371838867029549796298764189897495724664237888752067198837966134423345547661571313151671040573897238403514602328827651572079820723701139609625952452387726428497198778814867224019443231895553458612781145096614872436875589042063008282687051858429092860711826018500930659407306718573155390037651077626487553235826051751992178074784247327240446763311187915496267026614485771849109815253713934148711216787298996520671468152820643885099705983302989002284908552857617520501529946390075868206425878082496708806322673513995979106164216776193616172985959907688824822708649852983817019144075028883180470899174789547764945602382526461092533221644053611458447978077780558970501641646067073622734477217735505282263211128124481305514353186357540419010992434002107768783355740756446187324942325654652625852412169287153813508608016280113952446920176296614253376950196475669316351020403077722724490519629898377036323360129820529281045109963371249894530276099561144042482626338772593989844316087710972792550257456128886470019096822479564940726737877698151825386119418309553408271231027478809647742899313908009933334462963092648575508695193735333743379173370627653867407320126715177974457764503548774713620560056196952152990116210197349898408972339742529128594321078656213131646113348021113593500434299052367891502628806326549121118207042607447479186463436915417026432303558853528036464975473796918542444020373057871946369301364258538966068868254352995619682873466974346238932655967123889634837113714800967760011350882223310353543059601985301931618545990512349177473607469589077686942177079271505612848872737004531036693137411376221188948435205746764410417572244552151115770898205429797968294734548429417278840745724261982834336050319128899682414411262548690370173790043028979845800173387057519576117961404309649305131253106853311405290729585498843142932710693864698111280652528337779798996371020065243801932085317018569183094721517622383953097502437063509905231723076848695664475891217676900061772996514510444773379828633675940309305355017384694473467108649959260135277673044625735731445353762845612054986937722179046658335121624623887140876084354281345305162356789678255300384384362221940169560849412314449721012605468584753472048939293608001304951329291978795373421372496969569792459269771201979081563170756324976549131692045507222783153489641325969541556371425701402301211477683080268682892338248206661170350045844352061951383330942281351775350666794898243271686809285942972250079237128202766005910057022811233073148416980300503195301226425284939582119267754559346938405839108209948260224741026519729353522763156183432819133601211163851967797956224605731130210254259956239010777634280103656590161967025286273834863275135448484296586047436588377498080471091688749259494163596420313099632079876409348525630028055176035711873634035464870888160379725751723195018099253375258568577967864792488387641817874998840468383878650374885021482953160299619530112289571703664629650689171966549636405214013448300445958738210047255092576641861296921647468062688837053654674936187674808709795653883608126278103976777614235428024410406774617308906840440399533093675542694404899247309187944909110631946845342610548908241677763415814807299529431331306295147372426206682600091831666916348144604753853633093752578611067563482135824231785498536893195996043663278185036145372756479240008651658799543396796498313843752029567365904330978277771584083764680985424357979370673048412336161600105590795221468539510721486414696405244842077338791619491047555626214572469854774642809583879845753149299202220239018392390206481186381875779757172402492713818647299968359129028554409153515978523967576074137219417098042854838667104016609738651022464948341424258581649824364793277410362004657346730312486772187893045818208465017592301709242049247100206034557497898122997305711805266614983374701841598496819251246442389163596781052495386660654519709452526951157596940799622382556542978303127167636912967999455236012568054985444079556177250723837365747957344490952925271966201701550593265443332902956508294939313094240833285876555046619359268191001846635259161706865131541180784321186186894945212300349221818709758522540187015314739189058530961568234354902922125914842193133460218438518962244238370699624523924419568327136723141811138403931677301481592189660339567894761665454562699685520993156044186932965753836572801390460509640488798964928095419008854900677851241358987176646501215201974659363616049261017603457999596184581511549579905438019185941637728665384585389583535891202008231419334008863423647112514312757047826028932882729541950746057232359164344651932902110039997136484675561126583054833776169478582845219207488207389196029054365227406667723162110887854915641006891303598854753903506554856041472945272356941328283818164784067726584990924119024325130661086148657987548771738842769797564552756354942918282971676618299580653036928287938534922839104145089706750975511251679142746672018472326704754194244955633025397110493863802050335540295002732461604260398261242352490448735856721475625306260022338327634579483863218960189713021604374058340162879817478268896311320400935427024907872299937115878667674458494570901082210791903147151206004364128850910892512190179733983576746853124510692834110403304378183988508805646983947420299974549209519662950763156097018733065661357905142120460779273146947254095926981543175326111475835364495732470677817188832146552441552139930332238086701277874221108259025888256128861209127658043159023987114966310186989910006136268267279080051772647893114806659477299459033328734671642634822948069793513975896907315793907807201218951810262212834206364838330104666470691976814742557318317590520995786209', -); -test( - macro, - '-17', - 5678, - '308301463160662792592974191225677550213805858865919919735981762675623786601714250489696698804852341045297420123063243922100400196696349793305072692507353336241216967013579955338321444377099377319922539877186220868052446496202732277247371505550502651392252286935974933884151213108283554369258213425365822337513947069960567344400310797289631047757394436944996398072856708476570135250826251807398908611346753721594187395239741456589520555880152964355709918481651414281037119345031864349473612190232783371634279010028835470052200853299387882937134502672486160490325572916770961984349270782004601755602396869480289583861432077292039522042728544628472407886559019506167070189042096361924625145764203394220016152058200833752782786135860272071163220664632628957715045743868317244354995167227549385742687044952230405548258021083955544683907569599512046698283062653360884689200605347962098694683370357258724260056117352725577527325470851942851786836586694378752609414985480451815306391204834718631347771140575410484669506656818267247739857567770208151137491950666879071411531164773778999066561543024242136809243170757624965045375519201614760897620552430403133361040466722500087079354845734867920025285926879314249326848120872229945829401869885167283900122714895079076317869209094125931991982545556531488000512974612556335371838867029549796298764189897495724664237888752067198837966134423345547661571313151671040573897238403514602328827651572079820723701139609625952452387726428497198778814867224019443231895553458612781145096614872436875589042063008282687051858429092860711826018500930659407306718573155390037651077626487553235826051751992178074784247327240446763311187915496267026614485771849109815253713934148711216787298996520671468152820643885099705983302989002284908552857617520501529946390075868206425878082496708806322673513995979106164216776193616172985959907688824822708649852983817019144075028883180470899174789547764945602382526461092533221644053611458447978077780558970501641646067073622734477217735505282263211128124481305514353186357540419010992434002107768783355740756446187324942325654652625852412169287153813508608016280113952446920176296614253376950196475669316351020403077722724490519629898377036323360129820529281045109963371249894530276099561144042482626338772593989844316087710972792550257456128886470019096822479564940726737877698151825386119418309553408271231027478809647742899313908009933334462963092648575508695193735333743379173370627653867407320126715177974457764503548774713620560056196952152990116210197349898408972339742529128594321078656213131646113348021113593500434299052367891502628806326549121118207042607447479186463436915417026432303558853528036464975473796918542444020373057871946369301364258538966068868254352995619682873466974346238932655967123889634837113714800967760011350882223310353543059601985301931618545990512349177473607469589077686942177079271505612848872737004531036693137411376221188948435205746764410417572244552151115770898205429797968294734548429417278840745724261982834336050319128899682414411262548690370173790043028979845800173387057519576117961404309649305131253106853311405290729585498843142932710693864698111280652528337779798996371020065243801932085317018569183094721517622383953097502437063509905231723076848695664475891217676900061772996514510444773379828633675940309305355017384694473467108649959260135277673044625735731445353762845612054986937722179046658335121624623887140876084354281345305162356789678255300384384362221940169560849412314449721012605468584753472048939293608001304951329291978795373421372496969569792459269771201979081563170756324976549131692045507222783153489641325969541556371425701402301211477683080268682892338248206661170350045844352061951383330942281351775350666794898243271686809285942972250079237128202766005910057022811233073148416980300503195301226425284939582119267754559346938405839108209948260224741026519729353522763156183432819133601211163851967797956224605731130210254259956239010777634280103656590161967025286273834863275135448484296586047436588377498080471091688749259494163596420313099632079876409348525630028055176035711873634035464870888160379725751723195018099253375258568577967864792488387641817874998840468383878650374885021482953160299619530112289571703664629650689171966549636405214013448300445958738210047255092576641861296921647468062688837053654674936187674808709795653883608126278103976777614235428024410406774617308906840440399533093675542694404899247309187944909110631946845342610548908241677763415814807299529431331306295147372426206682600091831666916348144604753853633093752578611067563482135824231785498536893195996043663278185036145372756479240008651658799543396796498313843752029567365904330978277771584083764680985424357979370673048412336161600105590795221468539510721486414696405244842077338791619491047555626214572469854774642809583879845753149299202220239018392390206481186381875779757172402492713818647299968359129028554409153515978523967576074137219417098042854838667104016609738651022464948341424258581649824364793277410362004657346730312486772187893045818208465017592301709242049247100206034557497898122997305711805266614983374701841598496819251246442389163596781052495386660654519709452526951157596940799622382556542978303127167636912967999455236012568054985444079556177250723837365747957344490952925271966201701550593265443332902956508294939313094240833285876555046619359268191001846635259161706865131541180784321186186894945212300349221818709758522540187015314739189058530961568234354902922125914842193133460218438518962244238370699624523924419568327136723141811138403931677301481592189660339567894761665454562699685520993156044186932965753836572801390460509640488798964928095419008854900677851241358987176646501215201974659363616049261017603457999596184581511549579905438019185941637728665384585389583535891202008231419334008863423647112514312757047826028932882729541950746057232359164344651932902110039997136484675561126583054833776169478582845219207488207389196029054365227406667723162110887854915641006891303598854753903506554856041472945272356941328283818164784067726584990924119024325130661086148657987548771738842769797564552756354942918282971676618299580653036928287938534922839104145089706750975511251679142746672018472326704754194244955633025397110493863802050335540295002732461604260398261242352490448735856721475625306260022338327634579483863218960189713021604374058340162879817478268896311320400935427024907872299937115878667674458494570901082210791903147151206004364128850910892512190179733983576746853124510692834110403304378183988508805646983947420299974549209519662950763156097018733065661357905142120460779273146947254095926981543175326111475835364495732470677817188832146552441552139930332238086701277874221108259025888256128861209127658043159023987114966310186989910006136268267279080051772647893114806659477299459033328734671642634822948069793513975896907315793907807201218951810262212834206364838330104666470691976814742557318317590520995786209', -); -test(macro, '22', 0, '1'); -test(macro, '-22', 0, '1'); -test(macro, '22', 1, '22'); -test(macro, '-22', 1, '-22'); -test(macro, '22', 3, '10648'); -test(macro, '-22', 3, '-10648'); -test(macro, '22', 7, '2494357888'); -test(macro, '-22', 7, '-2494357888'); -test(macro, '22', 9, '1207269217792'); -test(macro, '-22', 9, '-1207269217792'); -test(macro, '22', 11, '584318301411328'); -test(macro, '-22', 11, '-584318301411328'); -test(macro, '22', 17, '66249952919459433152512'); -test(macro, '-22', 17, '-66249952919459433152512'); -test(macro, '22', 22, '341427877364219557396646723584'); -test(macro, '-22', 22, '341427877364219557396646723584'); -test(macro, '22', 24, '165251092644282265779977014214656'); -test(macro, '-22', 24, '165251092644282265779977014214656'); -test(macro, '22', 27, '1759593634476317566025195247357657088'); -test(macro, '-22', 27, '-1759593634476317566025195247357657088'); -test(macro, '22', 29, '851643319086537701956194499721106030592'); -test(macro, '-22', 29, '-851643319086537701956194499721106030592'); -test( - macro, - '22', - 1234, - '3544770596427666704933670825514058656840289167033434034813245091750883162270446675859397841986880345238161021960809170374322988214534191585053363506454126462213757244784862172250548800355120891239982462620296434675754206726427100313150523472266151826654642293138772262710079764335312817589977974888511704681598808553789636057965795110640986410281597921902662990963638641278281253781683699119666661945433104346601274970659774893661365968347766707077408549681767565454620843792569318870542401828729517938364411892509820193464655128629664809734022850771731500407885408815335930002147542787627415049845408189806745107445132307539157002401311183617949986742914159513317593667951549591942294545010053084686720365553135398975223690151357594502438362943103211174888290826883518964968656962099365383745446040058868947352605005471883468803102923319135160194367582819156826127917537651473185148386098880353425069599001396856273342875688276177114278359156141134393159654758637663041409089129911594364800818125391217718986756939362789014002086984204053324062930069928284955781180175025313587891151051182531528712430068603601480445127763661852050046817311966022046189931948955290807404661752447837636846919052423707195121151844536365697282035619507227238494415828142354268295050195101293247644044457267714935452707723243836958166570458923766194943739329318567831418083291367602614610628703776858094904109993034272453854415127335371407800891291417423473199819581953311554881626790599515656538382928587235599730899217327975918421664202906795230685640597210322674275525454392606193005351353121325240801341129111396762030413616120113277356128432334929643219670987389108486144', -); -test( - macro, - '-22', - 1234, - '3544770596427666704933670825514058656840289167033434034813245091750883162270446675859397841986880345238161021960809170374322988214534191585053363506454126462213757244784862172250548800355120891239982462620296434675754206726427100313150523472266151826654642293138772262710079764335312817589977974888511704681598808553789636057965795110640986410281597921902662990963638641278281253781683699119666661945433104346601274970659774893661365968347766707077408549681767565454620843792569318870542401828729517938364411892509820193464655128629664809734022850771731500407885408815335930002147542787627415049845408189806745107445132307539157002401311183617949986742914159513317593667951549591942294545010053084686720365553135398975223690151357594502438362943103211174888290826883518964968656962099365383745446040058868947352605005471883468803102923319135160194367582819156826127917537651473185148386098880353425069599001396856273342875688276177114278359156141134393159654758637663041409089129911594364800818125391217718986756939362789014002086984204053324062930069928284955781180175025313587891151051182531528712430068603601480445127763661852050046817311966022046189931948955290807404661752447837636846919052423707195121151844536365697282035619507227238494415828142354268295050195101293247644044457267714935452707723243836958166570458923766194943739329318567831418083291367602614610628703776858094904109993034272453854415127335371407800891291417423473199819581953311554881626790599515656538382928587235599730899217327975918421664202906795230685640597210322674275525454392606193005351353121325240801341129111396762030413616120113277356128432334929643219670987389108486144', -); -test( - macro, - '22', - 5678, - '188791183279459428032979917309231847200926168850386143505884770467168693375931895922274556902557057349070006829787284038833847205657221323086778299516173672693704766555252528139265360902778722183082662200078678453997329891537034422822575803367053904655840627755946766693757142547502052565953996363335560763158268551572751512866106778431138820615713754627823698314270698590631138259164788157389001919104523833942391091963057065922406993273787102400618472074518275818851551644852629873956788856970633475366447672782530547865741999862312938533203178291710002234858638631656516476317172691637416817888111298556457298999099751473928302529193993166300867967794207259256002142542750751106986007283388678487258401453058580610853029932752094378405105178931730860876546015936460719383487738652762837137015685750382657573311754947701500407222582281566094817174073472144811366744070419797423798544094403873094199877877853150049457040475968921734523430878675521293370360945777794830877356184006978877091885754906917991440962876015220987468233257346287046662479844768237469373754719329682306024899040352120465381043236796342435914139828201123414926711331244145922850129403791095391423842253313316894102060772814826064451102647169447140443080993464221839521726629053885287095964136013255179000177247350196068604054496565177879080513643431866167726634133898846619131635347475126027711691279901001090402999384232358268658557899584767972188754606811562218767608264930824961710835118809206445233999791639003838245009290187741328535591220360093897367352614744829186871911800346161094937089356183566076527889043149104246450652971623538711614388121183532572879725745001292012401206003161879654577991659939731216517542635503622655459132088797820236545384884194315725633695427351662866125654652037894893851700035152604437639749253793788001370984215018294940417131355604149159082298240255347039270323737033829938556652804213810754530366216244627359047801328010962028910363918606863009301850889578079483970837777414556113020756651244678945855588115566911935996323508669528384387516643242397299023508751043526450954773213552893031292302108980643471326696435902444257202942430483248169515243504400730148395387415129983474005341937524404093610934807837061631884341923871640332973833712473410511352497840950354717471207835203039728832245686598798557108303180717754281741624836460482499750093903647140024989550279346101803707104317524947924300904078402788855449767432346556247835035384556446005558861060448421141387365651441511783999354650683395274128594606161258833809729090469884846090442597192736831693121095035897380375918668414251031197753973301724588916035485541075323904538088914655589426133179024612467018336059489439900282543046314110365187230735791452277032816340183238147712040823773524149282426416491420492939282622735636049912086266615529452977045894296591781274478366606588824311816021589425349467712419121696503212958985567622927656183375686142819491308359745612172611203958699633657019779838962795602648062265858350278662630718999151751658417214897098590866440999092201908970405217151181916677531588126391148866486355596584519721899405760444541383544962722489875114029357216033135513811415437737779643777561247514270920525940156015070057021445589556923682615671082792479847690833002924073136137432397339370513067790302967340822556367795292986667622422991835236165285127792424630052345714281497090373958007873533009712803180058310323179851564088273446186130049950558067667847928286576209829335469946077179104819764051749338467796811081169318581581642850701153588880097116565036806635144191514941671379189491284471206062525996710209192630982325515553569877748865098007911563238370520552779962974699534249328592557597174798475291743896129283115647913205511724485683652165879255348366405023438903433484562441296977463064589755118577364288557833533525712147910220705629283320345221392498374920388002113076781370533887021362629864905597326338617774056928683324516257011958993549660242683378628080041274187041027497798834136787655367653313087762082861764871834770591798602251128431476037857054662472011944666943267798513485310853118021197803091306619087873370818101335777419097062662406323667850528298645645659705841302522876053300363978267616708413039423577121433189797240232888355212252359572984976125208566821140812480736284072108352440262297665734819819192122502735544582352754969285563661193235781572915221488949701772581090470157333949943304303258562699351706132291487263002827565568137178391760246763425471476903399001677140103838451942491852797942220150718465024075126021867404930949262237514847293928201986505952400034942909184404021589066392741316625432520165649180730478556845798056299390529868233644331355976433410122475395339372683857077054367193114853723272384165320308359895327456012695111158341679642973786987974118879672101864000622440671637727905844446346659140267379540618189466479973512691352669908635579670046572643071543414288852945575507001364000587388365403163906923211010169649609787771443144617832964226341728880822040252791050573628058886465561125429540997997868877363781470212869288169031000314873670199023295575975029256888216051199783236003631198408646449546200837126408047806205375568516286244938833513923703107122664057553162916061895211874413026882293647396162003729561243896593367071601927468297455059908329773843490942712555322638331213927467737996161390460580291397428087241641827588245090045532168071664305848368946557531242866689515860672755630196510501059011076815782465524313305009301928730197566296410986829702452451693715022525438145214864666547710131393893422930433170192612410872699695903278923467086552431305253131022041442224030817136355438528522927710943963127661600938420524965868054868420789110281366652020715320237791007498809737701793479928444775909635220385965554432486139403818709288893492972588178924163488669440430698055258217332383878998815578776861203408118636769740672061660441927713102293878635124860434685746066579552625545433283636852639248738646856738605099028379736959929344991408860138578579292810759278795009828170173218117855426563489356914140296451669797511966308454520777982547536269136517098058706965105246074767227371117788844144579058151777933868930309861162765115846938463381459853947747275772776398557035107245698846181277540908832896814422527395488764190929404319672627395382255601482932675915638164367605784383912597789157118099369129866134453961147524445310724935291432570358456707042196935301261866358927798468810349341142291611156159359534617856444941265047694063906146162911324572161847512820145217043951957402547150640394819164257476384755090115583219631277624937601796185647361374464816722286079605798681157282804842881477768712666527405194818777681881080754221642693036637898043597600173291293530540776397593912983219493509839629946441187964692468617078532810433116136093659551535138860229829786694832025732595062223913257013909834336129848617643821876714991430811032042401672948443617106295564657838664397093430728751201194167005351810695181731189639616620396686825283143974008053920667467718924710366948369410543884199762061772961627365614073985761451542908159022475474594645453428260577023270323956122594107262708230204278635766614607705687764981980866116553659699581936921712862570741253541801805383105858152652730146528763628550254584923431153812726414403489380619446609235095663174700659695093931838433555356529154564055522469749278362012539004460570850761165655051971287648503799979759701767311217436978364357210522552286818202064756315420591610749979193377628867887418264504475624922321666517244630230702755729863166168476152067458807632513614287747416064', -); -test( - macro, - '-22', - 5678, - '188791183279459428032979917309231847200926168850386143505884770467168693375931895922274556902557057349070006829787284038833847205657221323086778299516173672693704766555252528139265360902778722183082662200078678453997329891537034422822575803367053904655840627755946766693757142547502052565953996363335560763158268551572751512866106778431138820615713754627823698314270698590631138259164788157389001919104523833942391091963057065922406993273787102400618472074518275818851551644852629873956788856970633475366447672782530547865741999862312938533203178291710002234858638631656516476317172691637416817888111298556457298999099751473928302529193993166300867967794207259256002142542750751106986007283388678487258401453058580610853029932752094378405105178931730860876546015936460719383487738652762837137015685750382657573311754947701500407222582281566094817174073472144811366744070419797423798544094403873094199877877853150049457040475968921734523430878675521293370360945777794830877356184006978877091885754906917991440962876015220987468233257346287046662479844768237469373754719329682306024899040352120465381043236796342435914139828201123414926711331244145922850129403791095391423842253313316894102060772814826064451102647169447140443080993464221839521726629053885287095964136013255179000177247350196068604054496565177879080513643431866167726634133898846619131635347475126027711691279901001090402999384232358268658557899584767972188754606811562218767608264930824961710835118809206445233999791639003838245009290187741328535591220360093897367352614744829186871911800346161094937089356183566076527889043149104246450652971623538711614388121183532572879725745001292012401206003161879654577991659939731216517542635503622655459132088797820236545384884194315725633695427351662866125654652037894893851700035152604437639749253793788001370984215018294940417131355604149159082298240255347039270323737033829938556652804213810754530366216244627359047801328010962028910363918606863009301850889578079483970837777414556113020756651244678945855588115566911935996323508669528384387516643242397299023508751043526450954773213552893031292302108980643471326696435902444257202942430483248169515243504400730148395387415129983474005341937524404093610934807837061631884341923871640332973833712473410511352497840950354717471207835203039728832245686598798557108303180717754281741624836460482499750093903647140024989550279346101803707104317524947924300904078402788855449767432346556247835035384556446005558861060448421141387365651441511783999354650683395274128594606161258833809729090469884846090442597192736831693121095035897380375918668414251031197753973301724588916035485541075323904538088914655589426133179024612467018336059489439900282543046314110365187230735791452277032816340183238147712040823773524149282426416491420492939282622735636049912086266615529452977045894296591781274478366606588824311816021589425349467712419121696503212958985567622927656183375686142819491308359745612172611203958699633657019779838962795602648062265858350278662630718999151751658417214897098590866440999092201908970405217151181916677531588126391148866486355596584519721899405760444541383544962722489875114029357216033135513811415437737779643777561247514270920525940156015070057021445589556923682615671082792479847690833002924073136137432397339370513067790302967340822556367795292986667622422991835236165285127792424630052345714281497090373958007873533009712803180058310323179851564088273446186130049950558067667847928286576209829335469946077179104819764051749338467796811081169318581581642850701153588880097116565036806635144191514941671379189491284471206062525996710209192630982325515553569877748865098007911563238370520552779962974699534249328592557597174798475291743896129283115647913205511724485683652165879255348366405023438903433484562441296977463064589755118577364288557833533525712147910220705629283320345221392498374920388002113076781370533887021362629864905597326338617774056928683324516257011958993549660242683378628080041274187041027497798834136787655367653313087762082861764871834770591798602251128431476037857054662472011944666943267798513485310853118021197803091306619087873370818101335777419097062662406323667850528298645645659705841302522876053300363978267616708413039423577121433189797240232888355212252359572984976125208566821140812480736284072108352440262297665734819819192122502735544582352754969285563661193235781572915221488949701772581090470157333949943304303258562699351706132291487263002827565568137178391760246763425471476903399001677140103838451942491852797942220150718465024075126021867404930949262237514847293928201986505952400034942909184404021589066392741316625432520165649180730478556845798056299390529868233644331355976433410122475395339372683857077054367193114853723272384165320308359895327456012695111158341679642973786987974118879672101864000622440671637727905844446346659140267379540618189466479973512691352669908635579670046572643071543414288852945575507001364000587388365403163906923211010169649609787771443144617832964226341728880822040252791050573628058886465561125429540997997868877363781470212869288169031000314873670199023295575975029256888216051199783236003631198408646449546200837126408047806205375568516286244938833513923703107122664057553162916061895211874413026882293647396162003729561243896593367071601927468297455059908329773843490942712555322638331213927467737996161390460580291397428087241641827588245090045532168071664305848368946557531242866689515860672755630196510501059011076815782465524313305009301928730197566296410986829702452451693715022525438145214864666547710131393893422930433170192612410872699695903278923467086552431305253131022041442224030817136355438528522927710943963127661600938420524965868054868420789110281366652020715320237791007498809737701793479928444775909635220385965554432486139403818709288893492972588178924163488669440430698055258217332383878998815578776861203408118636769740672061660441927713102293878635124860434685746066579552625545433283636852639248738646856738605099028379736959929344991408860138578579292810759278795009828170173218117855426563489356914140296451669797511966308454520777982547536269136517098058706965105246074767227371117788844144579058151777933868930309861162765115846938463381459853947747275772776398557035107245698846181277540908832896814422527395488764190929404319672627395382255601482932675915638164367605784383912597789157118099369129866134453961147524445310724935291432570358456707042196935301261866358927798468810349341142291611156159359534617856444941265047694063906146162911324572161847512820145217043951957402547150640394819164257476384755090115583219631277624937601796185647361374464816722286079605798681157282804842881477768712666527405194818777681881080754221642693036637898043597600173291293530540776397593912983219493509839629946441187964692468617078532810433116136093659551535138860229829786694832025732595062223913257013909834336129848617643821876714991430811032042401672948443617106295564657838664397093430728751201194167005351810695181731189639616620396686825283143974008053920667467718924710366948369410543884199762061772961627365614073985761451542908159022475474594645453428260577023270323956122594107262708230204278635766614607705687764981980866116553659699581936921712862570741253541801805383105858152652730146528763628550254584923431153812726414403489380619446609235095663174700659695093931838433555356529154564055522469749278362012539004460570850761165655051971287648503799979759701767311217436978364357210522552286818202064756315420591610749979193377628867887418264504475624922321666517244630230702755729863166168476152067458807632513614287747416064', -); -test(macro, '24', 0, '1'); -test(macro, '-24', 0, '1'); -test(macro, '24', 1, '24'); -test(macro, '-24', 1, '-24'); -test(macro, '24', 3, '13824'); -test(macro, '-24', 3, '-13824'); -test(macro, '24', 7, '4586471424'); -test(macro, '-24', 7, '-4586471424'); -test(macro, '24', 9, '2641807540224'); -test(macro, '-24', 9, '-2641807540224'); -test(macro, '24', 11, '1521681143169024'); -test(macro, '-24', 11, '-1521681143169024'); -test(macro, '24', 17, '290797794982682557415424'); -test(macro, '-24', 17, '-290797794982682557415424'); -test(macro, '24', 22, '2315513501476187716057433112576'); -test(macro, '-24', 22, '2315513501476187716057433112576'); -test(macro, '24', 24, '1333735776850284124449081472843776'); -test(macro, '-24', 24, '1333735776850284124449081472843776'); -test(macro, '24', 27, '18437563379178327736384102280592359424'); -test(macro, '-24', 27, '-18437563379178327736384102280592359424'); -test(macro, '24', 29, '10620036506406716776157242913621199028224'); -test(macro, '-24', 29, '-10620036506406716776157242913621199028224'); -test( - macro, - '24', - 1234, - '151590600073425387047449072838201737923790545622778515405542489295365280374802003092345748753681766769342781749881287249346464958055559009581857595198530089819230481306713155507019243375785757736393010981297487306518434496622971579086045332205893329146303230768285811255525374621247345141815714309058936253285898983419720608226966436915189967268919455309262250618242751360361248909034678867178267283386443504378478143195886936482599662011569578168577981039494263767900563281750273077550310292671674973097829744745890473331477918697103083690536733167341918362953786259364594330084180149751256516756030378850936663791973239733978417672189517102102223884258181339830461602957890003315317105400603981501400219540598427784828262715802695138377182060865841593833485720205274139142676664443049548450410277812263367703519777502927932788452627831274636998616672291216489574557549335055172197580577132711118453026428882649878235139444805201982069512799047951007377619920034219848761549071361411729427628794049204602980944425540332659900016630759739316868023749785700349807321646264995322781924302276013058208345925931493883895500465669887594678839788578637461303074752727476500990640364376722701859400316730559885693050235239674548455869510362677791910042980988146640583541719495331021584874341075294784062883967560447377347188388603280434006674600263225696860648015867438392697049466565415507219522458255386701717251429282388492292922044650917640291089769306296653188826596134691225361787940784064160312363042310597352769798472903809450672123731170381463659456013676278088123310449702495131987916252551416683646406232220563855513976356100126013273624446723135664155744771247145879322648352616000381514511103819776', -); -test( - macro, - '-24', - 1234, - '151590600073425387047449072838201737923790545622778515405542489295365280374802003092345748753681766769342781749881287249346464958055559009581857595198530089819230481306713155507019243375785757736393010981297487306518434496622971579086045332205893329146303230768285811255525374621247345141815714309058936253285898983419720608226966436915189967268919455309262250618242751360361248909034678867178267283386443504378478143195886936482599662011569578168577981039494263767900563281750273077550310292671674973097829744745890473331477918697103083690536733167341918362953786259364594330084180149751256516756030378850936663791973239733978417672189517102102223884258181339830461602957890003315317105400603981501400219540598427784828262715802695138377182060865841593833485720205274139142676664443049548450410277812263367703519777502927932788452627831274636998616672291216489574557549335055172197580577132711118453026428882649878235139444805201982069512799047951007377619920034219848761549071361411729427628794049204602980944425540332659900016630759739316868023749785700349807321646264995322781924302276013058208345925931493883895500465669887594678839788578637461303074752727476500990640364376722701859400316730559885693050235239674548455869510362677791910042980988146640583541719495331021584874341075294784062883967560447377347188388603280434006674600263225696860648015867438392697049466565415507219522458255386701717251429282388492292922044650917640291089769306296653188826596134691225361787940784064160312363042310597352769798472903809450672123731170381463659456013676278088123310449702495131987916252551416683646406232220563855513976356100126013273624446723135664155744771247145879322648352616000381514511103819776', -); -test( - macro, - '24', - 5678, - '6909242543227743353809302095921095536524473561057165844581679410386766748488604299037026802190036290972523220194842752741485565945649373120593235468335848253481678944344897925015389714826413349410177631790045031943248773428879772739522827289604213275638780181896952443263073559712416131489957618900530740123400118237435413354649143060792875091318278585372437653470273949962335683216876622997736142741297958867176104235205056075719300228586105300420306369433989133325438387954921091906656969473369516356480833865066363304713540618192703365037455056012113960923122124179128736981338610956142771571808684231131105687569641388188446317730999584880794042484851478768133389844980164151720217542320262939508347691682342138522778060463084758675137561278861799859513960422378371775012031341809600887021827399844120518619103264164650677563352321974137647628478200600886109391143827381751378326104568910362334391415559848713463581352282420781294283758639369444314274599463207309901919833477647095250455332103956624216723089194770241296308302890710708138463591594108491375387092442160498438129101391736935004797211781736084624679135725046642935877005904500941008512545713383636775910913769118763901254831863898567559039792892496993193767213865404695189447620717191889574607271221253734214207606509303815710653198438402041521568515611813364721395336273048987799371934481049393697436377986134414568848925779333002134965587464106528152928197340289146528067712765151185247134251516207138782552793628345378997820905660194178001186994530020474952912269460972371580105721313532384574354540871635624041776046333388469745473028713013516683096356715177489532374407329471698695330614689214238225012907430432633909454857348989628051205236149551583947299465167194467668846336660944015180433931614586767779054115885111857540745528169992322163207044044488670657531868958992608214820354213074535958852759290564716927478198823333373374937720003672027398087124135343370691960382869258899427129220320143902491278793813238430465235860186960018237027526759813434944109474246741949527335246220480560254865111600632880608044682824898931874699864943855203431042365227377620680321459660987508307256592281727918306852635765535692503733218735444193207821083815581499399442219650000118107924012043499451238573570094079990109299190701814648807629227553766337073738504785496741973216586368345759189450452701067651649687981494044123926355817855226945627140031748054123594178696095671207794087457165269491338522780645313431934736643701650275328610821351006893740759674097541752357384338680350586790224882237683629538804015848469557782536191568984440803205429574817416905810035999083705208747035308838067377457376573948667705334690478735291850144203728342247634285563284902811919599506802960145211594874021503961512312094455587567697236904427829310783955019968993798633410220915273077833273759995480078554390567958801041571463441272562445362793890427049722892579012150812992897784399765836371711342270697399079409268621338465141537827604272596264561524757775919137279622148165105100726581985370376533708520083031902822380651049138314828258157760660361052917356148361076858029197983199714799549388753138873630163899577287697011072200217713083219980223308329072386564251855404194759034472140811253397135777998749327737590240550674739896553325406340850660822401505867952863442378032198550214676960873593184653003702714053785570797139346858405632080994993407154375607762459908870347788282713628065134448424324925307478350063149225594053973115267392759652869926859055261981795715793911665450618835722442776629043819843412433877325397811994145386781513794026045770684736082651288118224886713369764471121039811165405122248681255438916750835952141059316087666360985121458782402604238437689336401689176904961406119640521283036564242883812119616205627240236429984215840153559625562378652590836660740334768903772785794796630784565702603904128880950290899077458848713352239690752094902536139625944326846369933673626859584112711752192959568868026727635227118775593609034554724305741667971932241251649212234621343015740929858616626107670522527456130285503983446125409978068781856751731806377464920495450984236307279195922116693350211579310114468642544808587506381899146228392160338911761298983523394475914069925661336317688601614635176466936516650628457951262007237173667306984959634154161894116260039666735252234838350152349621573967073004378209996258899425957230823935962484203146411470794692397709720438221504023967184703626974385880417280024680786833273012433711625620042440253039851842539066103583671616276204858517722243909738410395578467951278134847051746601519549418794912211694740522839231762718034975617793333279450013015728897326891841305278169840750523025407888699660353086878542323408902020520745137853306948470924526832755671922980299901111454489829178447374350297734241924593197533476648287362705907326587903971144933195960309922016559115259145542602390960186986114826396112061139400167607740086448386211148049775587962761029591347975930271748327096753101637755673736334797475756177782477162997340502006754139409837932248709217588171272019845846608674183857309614487497423529281774820812855625200995143972487433890984243531847462852919240554641115522799596773636837906026144057598069511617898449948350572214384921080971973902502402211568802750379122998511274466017974941804703068336349215856446000530541951506765590932187755221324429657770293929726963214364914920312944839250592743611686981542097230343416941015181738191936768424805774791532673824342775520989922696032234542390090970378211787898110639660594600049631415764918868664882579924419113193629865077574463611875775532515680395533801486247525366388744886221612290889104531414904759924423276133269774474452875660758985017677276475305727162499245682784233172420800860481499133924145865006672545584647252606595826412236376706363585768675313853908404643815973889284292155410703372372413690775754902752855223760995153783326936793360537270982814844058735862825288469622833678311343943432205861271223777059946323093642457760026188705359296753808062709160061509562758124516997994361930873438768495782976556725650123698976773727667700766538233502587452020369593449922805037117490069737863202092655675092095120263618908362070898189610949764500023308769612177756951169777556263087771050269419640346318095925480284387495101736136602935813966818000418340535260863387002103707013222602870150906297763302008471389096475403406466296868498675202862934711769313692649420019010134057017438532712341527913711423268858441655875081926096567951606219719933592384316299968711193818524843736420584441099884547446077376494324792588069639621837526038238059880241227778527626618221494264760180657732801612348589103290695260992552373632950395780820971888676534078241816018476901814022905750537014600909836985401547164897051750176229167184596483534227572123935968337358752623038645346798033051576788492613747977196321371756084172394656509906994497839796532944821661702141307321688426555797056528768304358309636187850354312111960227634944375652263825013063956181739704664262214737743372154205999348652610776761883817832581027315985029870825344987010322787125818214235132013611644153949859858447569681743008753567948866312695912331296212062406828770679518938594754011864087516302762316464021883336600792442268009755925214689196103335236650748927588009005181069463851717820411294243164434618318426347580730703078170070907659408761721872488572982052027987813740488362497448333259178540819360984769894490609499528923446089556631606201168915777672445957547945071192408471582321347458393347744642123820014403943301956456199036248285841251751630923650699885800543144864303330551321206054023250603498937703173818262472928828604335469562756457727795232009580481882359659372911042201823035731975439128565006789723919934319797028003654293808085441085447766777266176', -); -test( - macro, - '-24', - 5678, - '6909242543227743353809302095921095536524473561057165844581679410386766748488604299037026802190036290972523220194842752741485565945649373120593235468335848253481678944344897925015389714826413349410177631790045031943248773428879772739522827289604213275638780181896952443263073559712416131489957618900530740123400118237435413354649143060792875091318278585372437653470273949962335683216876622997736142741297958867176104235205056075719300228586105300420306369433989133325438387954921091906656969473369516356480833865066363304713540618192703365037455056012113960923122124179128736981338610956142771571808684231131105687569641388188446317730999584880794042484851478768133389844980164151720217542320262939508347691682342138522778060463084758675137561278861799859513960422378371775012031341809600887021827399844120518619103264164650677563352321974137647628478200600886109391143827381751378326104568910362334391415559848713463581352282420781294283758639369444314274599463207309901919833477647095250455332103956624216723089194770241296308302890710708138463591594108491375387092442160498438129101391736935004797211781736084624679135725046642935877005904500941008512545713383636775910913769118763901254831863898567559039792892496993193767213865404695189447620717191889574607271221253734214207606509303815710653198438402041521568515611813364721395336273048987799371934481049393697436377986134414568848925779333002134965587464106528152928197340289146528067712765151185247134251516207138782552793628345378997820905660194178001186994530020474952912269460972371580105721313532384574354540871635624041776046333388469745473028713013516683096356715177489532374407329471698695330614689214238225012907430432633909454857348989628051205236149551583947299465167194467668846336660944015180433931614586767779054115885111857540745528169992322163207044044488670657531868958992608214820354213074535958852759290564716927478198823333373374937720003672027398087124135343370691960382869258899427129220320143902491278793813238430465235860186960018237027526759813434944109474246741949527335246220480560254865111600632880608044682824898931874699864943855203431042365227377620680321459660987508307256592281727918306852635765535692503733218735444193207821083815581499399442219650000118107924012043499451238573570094079990109299190701814648807629227553766337073738504785496741973216586368345759189450452701067651649687981494044123926355817855226945627140031748054123594178696095671207794087457165269491338522780645313431934736643701650275328610821351006893740759674097541752357384338680350586790224882237683629538804015848469557782536191568984440803205429574817416905810035999083705208747035308838067377457376573948667705334690478735291850144203728342247634285563284902811919599506802960145211594874021503961512312094455587567697236904427829310783955019968993798633410220915273077833273759995480078554390567958801041571463441272562445362793890427049722892579012150812992897784399765836371711342270697399079409268621338465141537827604272596264561524757775919137279622148165105100726581985370376533708520083031902822380651049138314828258157760660361052917356148361076858029197983199714799549388753138873630163899577287697011072200217713083219980223308329072386564251855404194759034472140811253397135777998749327737590240550674739896553325406340850660822401505867952863442378032198550214676960873593184653003702714053785570797139346858405632080994993407154375607762459908870347788282713628065134448424324925307478350063149225594053973115267392759652869926859055261981795715793911665450618835722442776629043819843412433877325397811994145386781513794026045770684736082651288118224886713369764471121039811165405122248681255438916750835952141059316087666360985121458782402604238437689336401689176904961406119640521283036564242883812119616205627240236429984215840153559625562378652590836660740334768903772785794796630784565702603904128880950290899077458848713352239690752094902536139625944326846369933673626859584112711752192959568868026727635227118775593609034554724305741667971932241251649212234621343015740929858616626107670522527456130285503983446125409978068781856751731806377464920495450984236307279195922116693350211579310114468642544808587506381899146228392160338911761298983523394475914069925661336317688601614635176466936516650628457951262007237173667306984959634154161894116260039666735252234838350152349621573967073004378209996258899425957230823935962484203146411470794692397709720438221504023967184703626974385880417280024680786833273012433711625620042440253039851842539066103583671616276204858517722243909738410395578467951278134847051746601519549418794912211694740522839231762718034975617793333279450013015728897326891841305278169840750523025407888699660353086878542323408902020520745137853306948470924526832755671922980299901111454489829178447374350297734241924593197533476648287362705907326587903971144933195960309922016559115259145542602390960186986114826396112061139400167607740086448386211148049775587962761029591347975930271748327096753101637755673736334797475756177782477162997340502006754139409837932248709217588171272019845846608674183857309614487497423529281774820812855625200995143972487433890984243531847462852919240554641115522799596773636837906026144057598069511617898449948350572214384921080971973902502402211568802750379122998511274466017974941804703068336349215856446000530541951506765590932187755221324429657770293929726963214364914920312944839250592743611686981542097230343416941015181738191936768424805774791532673824342775520989922696032234542390090970378211787898110639660594600049631415764918868664882579924419113193629865077574463611875775532515680395533801486247525366388744886221612290889104531414904759924423276133269774474452875660758985017677276475305727162499245682784233172420800860481499133924145865006672545584647252606595826412236376706363585768675313853908404643815973889284292155410703372372413690775754902752855223760995153783326936793360537270982814844058735862825288469622833678311343943432205861271223777059946323093642457760026188705359296753808062709160061509562758124516997994361930873438768495782976556725650123698976773727667700766538233502587452020369593449922805037117490069737863202092655675092095120263618908362070898189610949764500023308769612177756951169777556263087771050269419640346318095925480284387495101736136602935813966818000418340535260863387002103707013222602870150906297763302008471389096475403406466296868498675202862934711769313692649420019010134057017438532712341527913711423268858441655875081926096567951606219719933592384316299968711193818524843736420584441099884547446077376494324792588069639621837526038238059880241227778527626618221494264760180657732801612348589103290695260992552373632950395780820971888676534078241816018476901814022905750537014600909836985401547164897051750176229167184596483534227572123935968337358752623038645346798033051576788492613747977196321371756084172394656509906994497839796532944821661702141307321688426555797056528768304358309636187850354312111960227634944375652263825013063956181739704664262214737743372154205999348652610776761883817832581027315985029870825344987010322787125818214235132013611644153949859858447569681743008753567948866312695912331296212062406828770679518938594754011864087516302762316464021883336600792442268009755925214689196103335236650748927588009005181069463851717820411294243164434618318426347580730703078170070907659408761721872488572982052027987813740488362497448333259178540819360984769894490609499528923446089556631606201168915777672445957547945071192408471582321347458393347744642123820014403943301956456199036248285841251751630923650699885800543144864303330551321206054023250603498937703173818262472928828604335469562756457727795232009580481882359659372911042201823035731975439128565006789723919934319797028003654293808085441085447766777266176', -); -test(macro, '27', 0, '1'); -test(macro, '-27', 0, '1'); -test(macro, '27', 1, '27'); -test(macro, '-27', 1, '-27'); -test(macro, '27', 3, '19683'); -test(macro, '-27', 3, '-19683'); -test(macro, '27', 7, '10460353203'); -test(macro, '-27', 7, '-10460353203'); -test(macro, '27', 9, '7625597484987'); -test(macro, '-27', 9, '-7625597484987'); -test(macro, '27', 11, '5559060566555523'); -test(macro, '-27', 11, '-5559060566555523'); -test(macro, '27', 17, '2153693963075557766310747'); -test(macro, '-27', 17, '-2153693963075557766310747'); -test(macro, '27', 22, '30903154382632612361920641803529'); -test(macro, '-27', 22, '30903154382632612361920641803529'); -test(macro, '27', 24, '22528399544939174411840147874772641'); -test(macro, '-27', 24, '22528399544939174411840147874772641'); -test(macro, '27', 27, '443426488243037769948249630619149892803'); -test(macro, '-27', 27, '-443426488243037769948249630619149892803'); -test(macro, '27', 29, '323257909929174534292273980721360271853387'); -test(macro, '-27', 29, '-323257909929174534292273980721360271853387'); -test( - macro, - '27', - 1234, - '200856075209902212199811223498516329401019153294330654484899457135661710831649025094793443576863417869675999053574959337346792532217485737202817800641723197630343724422691567676966750017719674361721564299756255063995170624987815873886816573528036690980712399472082918987467608319915320632750007215671073941033733822406638067457070592416925055525002249965214978226439419675794443664397992725836030753072150525500182271105668883387299438014566998450801673929744863349108063057027323538841038850392906331064754828529624866950550712400849201192591205142296901842010465055290151680972126095024443830456846851602321575873316021498267598562024770678289890230706320997870461736064158216930272006483331205888383426585499224333788304253250735446206878459830691428518801804316734865056012563110060177249063533223360212951908142458456167777780005320459640618276526423350311574957115723697862633038912990076590485058168720523332363832907739630745212612829631298739740918292687323963984732777515115303964140679392026532299969353302111690876222512591852054954749110470134966527453125805201071472068728012702260328777663337721407575454838256471452852284288283640249611394712320213997254539391537655386427263371372214172403860536953046790124191276197581019979325589039334200287751090718265018203205058843589368322867283544158866611521312017186795565242663733214746314148048347376472660469372081324221562030477828367398702782252799482995882978202357840004609118497407774448098166472475681019210778338607385302368427582889110199771043940039384173696648402793417875142304690934448344767850874922126620454594771669567183452729544713864889437820573063999170931037181075406666631149358312284169719891882097692840499902508546688352472767932029187479332141883194288344509584921993462900826009', -); -test( - macro, - '-27', - 1234, - '200856075209902212199811223498516329401019153294330654484899457135661710831649025094793443576863417869675999053574959337346792532217485737202817800641723197630343724422691567676966750017719674361721564299756255063995170624987815873886816573528036690980712399472082918987467608319915320632750007215671073941033733822406638067457070592416925055525002249965214978226439419675794443664397992725836030753072150525500182271105668883387299438014566998450801673929744863349108063057027323538841038850392906331064754828529624866950550712400849201192591205142296901842010465055290151680972126095024443830456846851602321575873316021498267598562024770678289890230706320997870461736064158216930272006483331205888383426585499224333788304253250735446206878459830691428518801804316734865056012563110060177249063533223360212951908142458456167777780005320459640618276526423350311574957115723697862633038912990076590485058168720523332363832907739630745212612829631298739740918292687323963984732777515115303964140679392026532299969353302111690876222512591852054954749110470134966527453125805201071472068728012702260328777663337721407575454838256471452852284288283640249611394712320213997254539391537655386427263371372214172403860536953046790124191276197581019979325589039334200287751090718265018203205058843589368322867283544158866611521312017186795565242663733214746314148048347376472660469372081324221562030477828367398702782252799482995882978202357840004609118497407774448098166472475681019210778338607385302368427582889110199771043940039384173696648402793417875142304690934448344767850874922126620454594771669567183452729544713864889437820573063999170931037181075406666631149358312284169719891882097692840499902508546688352472767932029187479332141883194288344509584921993462900826009', -); -test( - macro, - '27', - 5678, - '1920670627041206840774317663061948531951548392586808036968655466513575530956212975774514238251197579090763349520005051835865042160772589169624476421706202590867860836690838786680450886141750404308408100197254742949071761592216668354595970793821666614574491628116021852490928266530039402274346603263915374906973045214520217579266276548940290197959870301983972948179342634336579386358378974195640173820826951706289068255636419593014486343794593987163856420064173623896766989137738772776377427442097331419584717293530596353658978697049818315083325917184148323246870360758039957677823155528069256344361615958925614299682556146381515609616001741477538909124857988462042152583475858959708352329078738601094623969648315977840331485254209899871646649972472372095452648168794559531587891304723383377106143342610066593596322450066346593064250164293612171399887948611723002687714633034005580022925175850122398245122163141238188056618415646875743299757508586238824342158406775418269157574948228511042170075383701360380600119963052883698603996010908136679734984191666988039630564578030822333416473331686176299575683617183902279297306358801915764702865246245093148511987518794036684029774730705063803579378907496553385221304907007953529232866068390828615106548652525036824065996249327562337880011776639185551336530505634619418517450596528181304358633713465477039574138461504506994233623242585354356605524242258852820324114074452649908604782399002596550916153410839185516390213358357834548623096143445732587215823810288043211299034382028751910218222923967466149776778576877664248973225249782758952557190800287368177398454902378376415868362035425615655624682981455869051819800859456132732320054055510566958251135161043336938045009646963245189593774509479550785046075894792169710218139317967718680527440283599846493280581066859320369808514616618064316610685296144379483228881158978531428541323976687007318478840124238398533801496097297015071332134452660846054421428149909225409769221839051449083375270329899898374485884886887125190469494156954015355114580948849208785046347459412975637271976882114713062112330537331127876640249342310281450813349286664902834009007280339950648850700440708748555487997305797417944284640312847154412547496220096692340189416832210466282566649332925837995666008798051378581959040498954085132477390853383093481176129650878445248789958824391345493197569531442806979176311248211412871040845844736158339923712459547591539550415996003282072387219018911765803789518884827791568134984700358743507239288171453633843763592103578573012447420761597931062446196749823913274155393819970124816742398443420049898048112792722620849282590853010364704986150303874501432870838621770926441069468404770404373890675534844221570867260548530639691411361203218650846445492626294997020128545271334888747901443583519313242322333157269016724544126555722125271718466441377338744197144665139930690040364724035268720548346016327799586536627059546835935892111936009551045577780871821958233775831514715738552477848906407293516034093463840649146923172863395128138438835433544718807766062278768770741451744867618368286602135404656520890155890101238524261112587615907631923684591193938770711298726617459834584716577454226046024456280984368570829122148771541978532132344153800979821391341346004725017526699171610089317393609489521109593485218609778690258066523564081395391334194325940849299429508434537825642151593153347775123712329348554222878530900249479115866329061956089475067568518232744646491234812061940598193564767933639294691752620290371604670392024822794195223184833997452082017311737450285129468363744078154728675038628714333873175144570204913129267965199303431706858336186755042226231183468843385119778696375795488511428939963856300359813082019502017643381504199506863718337397994274997752254757708272367666078675965040032039655925062247707075636789805274539053194840259610422752138553537725180597167371438930229420783619411928005931473865400477223675968308708249216344281666556496504984085949177728422334819418475038623078588714141499380129463420875932101260033375811625528931966565505132882422386608325523560248190689939207313386561886327643980713525129761663096753770390758712896499116510493355246860369384153391737470406874172921606838934727403098744014663071565032303777192174084122582946730008756106536993815320872157236729317634745631667114394136303705919618073684341874403244980777746281597675723918499517754138950341742429841628648421346110812738800865692526985004078449939939783096689246579006137481593969321838858087486685024934605209896758266277194033480123936439845801365328872002053460702803079717583034058121243760136910286949853216903677522250905510392566713879118017180689421758716319873286365642344743985956630970396015789433527653341599927766716994599791600982672311972370893852024580742922038592291822037985280439374076859860760447456227214570107076713441371110040481866528520446919136604157813535069283884957393825645814464806264277503491404782371252976040724254957145667674092298268073285259823296618873217871906591552510862582155404488921608024654326375619469231209031828858072396365212385640204416236746788303867620644842086149794597453008219491687259712252301584276458360737524420726294591150435186990238809185847919451252123489656372496043613842279955888472720044814213508941637152519990348407148927393875038476852404825802087693473325854313140587032371097348401164191468159425742186705236542204710037466387769479015379900734664129501511212299294684814946146327048005184836003000107105496191991647505947395678538952761563693653092396057893346156774141317075936232087744314496490509956837645841465967388142202300490064869619347902652823984909945873701021070634445104869604603785547980280081380393790903364474376364758613264472606771556227675845245248027497873498296375511004458930274898993867038605298383591809404357101355240283437176300862637920738599498741746521150167455353523330927129326274447459351643494051864005920884002398608267587991014622605843142855151877012756952553990368252360102557816678486685822969507404277254601956581010759230620724352157677998795938501832890979436797552440883742531302558570709076361709043133531426503972386170819272650464336778033158976021327334838579925495189278796979109139792191232782473002231837350047198764643616374041356297768694046950486001246185234359318391038800197857746441789669972513126194313149333382712207147511481557975622743732344202629767274244165956943548372982915991124491226134463115022810739060569665040240717572615620932472093174981002205974542066246133177952669421013895627060630464567760434256996281799968688229590092429649604880061340304296561685165836856606423053897026939262772456099432796351052849390003427289920795408775824445019032961645886626504591512212048335924123109654993739800469629501329929168753430905653421576424474668087832145303326186917347787604661201427588255288110103869986804399331506635536060487601890785562151210207595887133197464066346972583280471678345734031148539530692397993301487901118668413151152739493110857842168357407107810369630513619746957021035200287975064451571078331784369474527599711715767496931770063061477359695737750256984149156979906478297668490377273421425063634135938949613904319446351606432659158890010438536452763547944727936040394443661905803287318582738928999257571951746826811304523891797753282572538169266332939635099581060985026521423506192706942972853666059905273146115417304211233570424956603493273168920814813255134455438235602527751336570402852196721589759010458939788308886259589255589838453865926112669922271314441973202683425050250138493114016754036551602588968457859033236160720022442073508673912688509196121011581235868256299459315148083511624384602779057762575835218305144492664825432085770601166428566236259201040157805073745401588372353777316940550146420767400912250370939891562978931549393144124943754754417984294956325477143759436596679468856665971712954391480006376974981025962172422482296884009980457223252674173743660093454998272067099021050616490581360309414669608617227081755602192101247842052099617282451750980683945908343300229792225173818905754262604195304086203817551885146682726569', -); -test( - macro, - '-27', - 5678, - '1920670627041206840774317663061948531951548392586808036968655466513575530956212975774514238251197579090763349520005051835865042160772589169624476421706202590867860836690838786680450886141750404308408100197254742949071761592216668354595970793821666614574491628116021852490928266530039402274346603263915374906973045214520217579266276548940290197959870301983972948179342634336579386358378974195640173820826951706289068255636419593014486343794593987163856420064173623896766989137738772776377427442097331419584717293530596353658978697049818315083325917184148323246870360758039957677823155528069256344361615958925614299682556146381515609616001741477538909124857988462042152583475858959708352329078738601094623969648315977840331485254209899871646649972472372095452648168794559531587891304723383377106143342610066593596322450066346593064250164293612171399887948611723002687714633034005580022925175850122398245122163141238188056618415646875743299757508586238824342158406775418269157574948228511042170075383701360380600119963052883698603996010908136679734984191666988039630564578030822333416473331686176299575683617183902279297306358801915764702865246245093148511987518794036684029774730705063803579378907496553385221304907007953529232866068390828615106548652525036824065996249327562337880011776639185551336530505634619418517450596528181304358633713465477039574138461504506994233623242585354356605524242258852820324114074452649908604782399002596550916153410839185516390213358357834548623096143445732587215823810288043211299034382028751910218222923967466149776778576877664248973225249782758952557190800287368177398454902378376415868362035425615655624682981455869051819800859456132732320054055510566958251135161043336938045009646963245189593774509479550785046075894792169710218139317967718680527440283599846493280581066859320369808514616618064316610685296144379483228881158978531428541323976687007318478840124238398533801496097297015071332134452660846054421428149909225409769221839051449083375270329899898374485884886887125190469494156954015355114580948849208785046347459412975637271976882114713062112330537331127876640249342310281450813349286664902834009007280339950648850700440708748555487997305797417944284640312847154412547496220096692340189416832210466282566649332925837995666008798051378581959040498954085132477390853383093481176129650878445248789958824391345493197569531442806979176311248211412871040845844736158339923712459547591539550415996003282072387219018911765803789518884827791568134984700358743507239288171453633843763592103578573012447420761597931062446196749823913274155393819970124816742398443420049898048112792722620849282590853010364704986150303874501432870838621770926441069468404770404373890675534844221570867260548530639691411361203218650846445492626294997020128545271334888747901443583519313242322333157269016724544126555722125271718466441377338744197144665139930690040364724035268720548346016327799586536627059546835935892111936009551045577780871821958233775831514715738552477848906407293516034093463840649146923172863395128138438835433544718807766062278768770741451744867618368286602135404656520890155890101238524261112587615907631923684591193938770711298726617459834584716577454226046024456280984368570829122148771541978532132344153800979821391341346004725017526699171610089317393609489521109593485218609778690258066523564081395391334194325940849299429508434537825642151593153347775123712329348554222878530900249479115866329061956089475067568518232744646491234812061940598193564767933639294691752620290371604670392024822794195223184833997452082017311737450285129468363744078154728675038628714333873175144570204913129267965199303431706858336186755042226231183468843385119778696375795488511428939963856300359813082019502017643381504199506863718337397994274997752254757708272367666078675965040032039655925062247707075636789805274539053194840259610422752138553537725180597167371438930229420783619411928005931473865400477223675968308708249216344281666556496504984085949177728422334819418475038623078588714141499380129463420875932101260033375811625528931966565505132882422386608325523560248190689939207313386561886327643980713525129761663096753770390758712896499116510493355246860369384153391737470406874172921606838934727403098744014663071565032303777192174084122582946730008756106536993815320872157236729317634745631667114394136303705919618073684341874403244980777746281597675723918499517754138950341742429841628648421346110812738800865692526985004078449939939783096689246579006137481593969321838858087486685024934605209896758266277194033480123936439845801365328872002053460702803079717583034058121243760136910286949853216903677522250905510392566713879118017180689421758716319873286365642344743985956630970396015789433527653341599927766716994599791600982672311972370893852024580742922038592291822037985280439374076859860760447456227214570107076713441371110040481866528520446919136604157813535069283884957393825645814464806264277503491404782371252976040724254957145667674092298268073285259823296618873217871906591552510862582155404488921608024654326375619469231209031828858072396365212385640204416236746788303867620644842086149794597453008219491687259712252301584276458360737524420726294591150435186990238809185847919451252123489656372496043613842279955888472720044814213508941637152519990348407148927393875038476852404825802087693473325854313140587032371097348401164191468159425742186705236542204710037466387769479015379900734664129501511212299294684814946146327048005184836003000107105496191991647505947395678538952761563693653092396057893346156774141317075936232087744314496490509956837645841465967388142202300490064869619347902652823984909945873701021070634445104869604603785547980280081380393790903364474376364758613264472606771556227675845245248027497873498296375511004458930274898993867038605298383591809404357101355240283437176300862637920738599498741746521150167455353523330927129326274447459351643494051864005920884002398608267587991014622605843142855151877012756952553990368252360102557816678486685822969507404277254601956581010759230620724352157677998795938501832890979436797552440883742531302558570709076361709043133531426503972386170819272650464336778033158976021327334838579925495189278796979109139792191232782473002231837350047198764643616374041356297768694046950486001246185234359318391038800197857746441789669972513126194313149333382712207147511481557975622743732344202629767274244165956943548372982915991124491226134463115022810739060569665040240717572615620932472093174981002205974542066246133177952669421013895627060630464567760434256996281799968688229590092429649604880061340304296561685165836856606423053897026939262772456099432796351052849390003427289920795408775824445019032961645886626504591512212048335924123109654993739800469629501329929168753430905653421576424474668087832145303326186917347787604661201427588255288110103869986804399331506635536060487601890785562151210207595887133197464066346972583280471678345734031148539530692397993301487901118668413151152739493110857842168357407107810369630513619746957021035200287975064451571078331784369474527599711715767496931770063061477359695737750256984149156979906478297668490377273421425063634135938949613904319446351606432659158890010438536452763547944727936040394443661905803287318582738928999257571951746826811304523891797753282572538169266332939635099581060985026521423506192706942972853666059905273146115417304211233570424956603493273168920814813255134455438235602527751336570402852196721589759010458939788308886259589255589838453865926112669922271314441973202683425050250138493114016754036551602588968457859033236160720022442073508673912688509196121011581235868256299459315148083511624384602779057762575835218305144492664825432085770601166428566236259201040157805073745401588372353777316940550146420767400912250370939891562978931549393144124943754754417984294956325477143759436596679468856665971712954391480006376974981025962172422482296884009980457223252674173743660093454998272067099021050616490581360309414669608617227081755602192101247842052099617282451750980683945908343300229792225173818905754262604195304086203817551885146682726569', -); -test(macro, '29', 0, '1'); -test(macro, '-29', 0, '1'); -test(macro, '29', 1, '29'); -test(macro, '-29', 1, '-29'); -test(macro, '29', 3, '24389'); -test(macro, '-29', 3, '-24389'); -test(macro, '29', 7, '17249876309'); -test(macro, '-29', 7, '-17249876309'); -test(macro, '29', 9, '14507145975869'); -test(macro, '-29', 9, '-14507145975869'); -test(macro, '29', 11, '12200509765705829'); -test(macro, '-29', 11, '-12200509765705829'); -test(macro, '29', 17, '7257147736730073114838109'); -test(macro, '-29', 17, '-7257147736730073114838109'); -test(macro, '29', 22, '148852438543083302439338564577241'); -test(macro, '-29', 22, '148852438543083302439338564577241'); -test(macro, '29', 24, '125184900814733057351483732809459681'); -test(macro, '-29', 24, '125184900814733057351483732809459681'); -test(macro, '29', 27, '3053134545970524535745336759489912159909'); -test(macro, '-29', 27, '-3053134545970524535745336759489912159909'); -test(macro, '29', 29, '2567686153161211134561828214731016126483469'); -test(macro, '-29', 29, '-2567686153161211134561828214731016126483469'); -test( - macro, - '29', - 1234, - '39730991880495272432206471391877971807542673627957704904437675569298014672895070646102535214916047201597057604326381566232240717146352905189648219707403914660579022999012335291748319902460223265040313524900417222861808879210656981706108411235266301032093577572784389639719581120084786412413811442838338528471340965314240553665532845900842671741344271394471188943084404951380820901385463995110598814337441546368977234557474886215832235597884716646333931698424620615636355660537976497375196427830792301269566792792820200233670131878651690073642956396203530193828971438659013332283684624052196883142348635262157010483447752926525087705971032741588045925402251432696384942322183761498083408303101185212952621515583790502916056759732756688326445700770330618736098784570958650303610518453345373695638406312777059006873348441083653408306117070042611172352888144271588938812215283718988243964723451182501170569555882799635882695185231569905013697274942621016347442475467611094595589653640159813052986283489436916917813443702411392363491760078918071760360736064794346216924583036877713278321020682861527277057026346194702327617123158348328127954077761730411509703210527413729724018291740451232173623681566068132712321584183435235162559116277847790802991789615957113420980884848226115467550693444248836097094675037594634337127844160706154634179432597281415179294940602829040686835658254209377758530578171235783275715264069690583402743872874027236142735859680441203304209066670057316622505879861269271750030338720992453155828397426773289742123912597304182933866285890213055204261259697174309425441282464103760493735120470209861686631467978789655753554085703565573238818516254588594497513866508088253727621898347478665593386957598553232780662697618992458924510409036459946339696264729231292522628108751878543189439881', -); -test( - macro, - '-29', - 1234, - '39730991880495272432206471391877971807542673627957704904437675569298014672895070646102535214916047201597057604326381566232240717146352905189648219707403914660579022999012335291748319902460223265040313524900417222861808879210656981706108411235266301032093577572784389639719581120084786412413811442838338528471340965314240553665532845900842671741344271394471188943084404951380820901385463995110598814337441546368977234557474886215832235597884716646333931698424620615636355660537976497375196427830792301269566792792820200233670131878651690073642956396203530193828971438659013332283684624052196883142348635262157010483447752926525087705971032741588045925402251432696384942322183761498083408303101185212952621515583790502916056759732756688326445700770330618736098784570958650303610518453345373695638406312777059006873348441083653408306117070042611172352888144271588938812215283718988243964723451182501170569555882799635882695185231569905013697274942621016347442475467611094595589653640159813052986283489436916917813443702411392363491760078918071760360736064794346216924583036877713278321020682861527277057026346194702327617123158348328127954077761730411509703210527413729724018291740451232173623681566068132712321584183435235162559116277847790802991789615957113420980884848226115467550693444248836097094675037594634337127844160706154634179432597281415179294940602829040686835658254209377758530578171235783275715264069690583402743872874027236142735859680441203304209066670057316622505879861269271750030338720992453155828397426773289742123912597304182933866285890213055204261259697174309425441282464103760493735120470209861686631467978789655753554085703565573238818516254588594497513866508088253727621898347478665593386957598553232780662697618992458924510409036459946339696264729231292522628108751878543189439881', -); -test( - macro, - '29', - 5678, - '313207440313997908395360596779470167556524821354565066095934942813317027334851280816617044201242781788146681988256606728079031305742275517077538609509120818518756804198333905529512296693856744615547940344437655023604047387036912191665614525105764965628772142528903024079009603734878606031530632092694960209733041961976900299957401439942773853016980543659640387923110020096006907771085339532274479213069118590997912505738354256882132244489587891193436787796035297069548656015753468337910267383320384793478210922890393478684942943141047002641653826266029229940679855534185446029984642265309401937942618414456448051700283163409781590734858988186144878262850039132607214392219461954724509852981830436014103811121607636976310541241787952347172457061695467609228341593457389693092010216371829783365534416058276646629047941217000988603430079143125039335627916862701970337819367723342798417859182486827526226654222231668270437699336871914098038361896878124581202115603167581573365860844809754272768688324186177525910163640984471107241223997815556859746973062170016697071082852292553186973695195935555110865322841675967709255577273671862096739084719096018866542773915268182681924434693068974368743671856917344307823491424582073941774677763676838999012920849775131545807745557984609998089011839713971782596354276378462706118799367614933692723994860493006852617761691726490661973852484146025859542525994878650901900539984977032822503678380135265674374963780412402639819492697327642089488065515069103579821680270517245818991769253700477178501902173016760022083570625339617613196787508937132294439190707656675750593358777466252187024649444055524431976996354765962227578084126526998133034612602577472655126094054706811331042567986558208826619738372058912709936441330068785945557615305430573158660857083639685984708079449553432767371468432769763059815568294817006766150407711429524381443764353328649143392243030605175631903617241400590334520731552887905420357821333357323178558962729624695160152424150927961815517235178471668611411980527664098448189919626749630449729346413932330280051038124207698726994136053148704139757193993822565645450063014557144715444390692035805048906587820840149620974473539068602257213468282796698357998860905499646858875696140347697252404855916130979765736125939491404582947894766627011437008321826084551608917643552039692092641434023416721725802295946129541224330913037830711831897505727181643752070238124258716406913604326003886892777871785171083042338438822589466034333257513519074249290059508044387937515941195584536849935639306854418549865654614408061949225554166135582427881807182193783599601973694343161657685275975826632605401059697677450138694781053611138910985474876254987791226771601983926224950708128705207698446999762970868619741399138388955923671766834618892101519803294063152179901055619441840211468137457499243080615163211420407368571631248280853519881920654995329479197651873469046539891470723077610689204092925437192831324700740508382223044845331373899396944326854982107248264681927553073948403069191143379621931012158878080926767868489154472525785183112596722186693274842978659686633055410031307047971804940821454957589943688441766427442473419051396660930726551215776955035627059923619934434939234337389228818252138062651964023385907259716856875217332983206258542647956484144053376895677282058618726894075264893141459345095513971695129554583296521812210859456760034199169197708311366529261902786358093999101305450016786730606230292030206470077429240950433535818902863132927160089386510261064201968667301688946240130924904222733535811233377310709070575388538077218732749361385735781362671410241779765408330752886228016198747347816427191393767361118607002910804994498483946180719901059745498161376023303011413268091725633426377641439705607490836958493776666210760974330249691898146723384558621097993110200107834567985162015781903474771053336026970797082827405583984640152590311586996651130978390269635682523375227724690841049723350239062980077884498173472853922895986259449703557854615873912991492706834134188831223288072115285680543132659530562006474917573599463126164660175597089006340798638300090399758336562085930375566544725514749718150151542246563296277642802552407242105936832988106386539137183422418699327088241800890533010663176410353351158461215403413109833504713371583660146076296550323246201815389456172173706830863136468029781683216347313194402113678038893523681163091511426864300172115307127211628298548752944885599448207246119768819846726699639029352863512164216176446798914058117163239884649542915510529041947704391959354269079196393984501554075330930504966050842500838363928465487060306050596564952197235832052713931735782408102332284034120417772720870851192746545714460855294262457078632718061537234518630269810919269617488169257070620461029811140007937616623706165998602970962299178529667384281611711284607273114722670486790204254070817193833701660203086417276450859927068939525290399922358343072724298746965385101645299436440204421048958231664229609473978540663876261084401885358577081838088427532726342531219666349529588708676864620007863974417011281178486555297841836402783955736921273673850857042328354562375043956630762645678828277468596945482993393974109650561321318909283802349703359908590794955598686861188105172867117624073767884315818474218316939810928386473450140843666379789633933028157360991196643780492156331045116092963007359899178903786388658268081752185404862465975652717573346338903555552006181453313780938268351957198485656126588122587529425797721024874117272720122593011520181102165173778540109649069873683782560225421253727583520275185027823279197281638302017391265559931535066430315642407161670790778165873761260850453732642568406324331424811297605391958431678345086072195795316149924023369165664626175580036981425302726551623339910755431707540465223502996664989856176285277665969692278401436557276802735628722927403361765477884441622418274020615931280165006550295668823519197254154151454712027583777160043458631500373569552286186287576649460507457140013106316295491415062488184750166573300098842610352649548418028671322996383284580438817915912751328692636309346404265340559254967861755662343799686476963239624473583538068952690259757479187975773947646635862072773097932605011147309545946917745817618263320705384509256266597692822011258526575769901432671791899309866212784593294231039210384345017912165232281651766218511816118452245482765148462644057186723738724822065021604329606577441416459752329357653818884431934533205079171447937450753200091846699978761407348142216571160734786231176158036173395546313127825240933740557460405345687875822691395927735307954680584540631539852299093845143573101926536856436774094890716935644906531408882553968024236594348780230005657598271432594655727370741202306848716798905210887080943457274364437927441617729886063620378682180675795409711770720617214861995899802099720841503268275592791154447987570696376013830399865593021757490603503782606236297834983555381943082960053607082894098193433830439836836701596825459287327985068484765725312935435383570713001737353493414554745918732199428982288861916281925853870473235242613934578658466072097633829351396159739136586030233961937919001934510892835623188835150906662666684162280030518846926507260191259658152547057140996892575994838442450176092944932641609223450069710549113423096908693460705811017954646809219195537407087992070845823304506437379135120730335409827645953230507797899159560638526238733117928509820396840716609945419171886667127363308348835299399638934816341074966311440750045989538622932362121521488502205477949656543218950989955469235493902648629617578805931019123481068629850143880665080707955617337916811297483768702780290392503453278969467260654930304742159521939597380725090779572928293901161522955743015424778301780849024292067139437382979863134823284319627217588300337639449928419525514096794167112290463836322735157448121909387510372861759941692821797921023914852572773124758265866489263355698959718432102332876091323039261846105459189300877483349757964955202240267626882379975165911407692612296374563798585046788847367663183939085894084851302628081935576963248048370548543807192978291741302368501280165227638198366783808938518346282718195546770075506680849155238300453171855111852650642578666970792276185247457685538362574130361', -); -test( - macro, - '-29', - 5678, - '313207440313997908395360596779470167556524821354565066095934942813317027334851280816617044201242781788146681988256606728079031305742275517077538609509120818518756804198333905529512296693856744615547940344437655023604047387036912191665614525105764965628772142528903024079009603734878606031530632092694960209733041961976900299957401439942773853016980543659640387923110020096006907771085339532274479213069118590997912505738354256882132244489587891193436787796035297069548656015753468337910267383320384793478210922890393478684942943141047002641653826266029229940679855534185446029984642265309401937942618414456448051700283163409781590734858988186144878262850039132607214392219461954724509852981830436014103811121607636976310541241787952347172457061695467609228341593457389693092010216371829783365534416058276646629047941217000988603430079143125039335627916862701970337819367723342798417859182486827526226654222231668270437699336871914098038361896878124581202115603167581573365860844809754272768688324186177525910163640984471107241223997815556859746973062170016697071082852292553186973695195935555110865322841675967709255577273671862096739084719096018866542773915268182681924434693068974368743671856917344307823491424582073941774677763676838999012920849775131545807745557984609998089011839713971782596354276378462706118799367614933692723994860493006852617761691726490661973852484146025859542525994878650901900539984977032822503678380135265674374963780412402639819492697327642089488065515069103579821680270517245818991769253700477178501902173016760022083570625339617613196787508937132294439190707656675750593358777466252187024649444055524431976996354765962227578084126526998133034612602577472655126094054706811331042567986558208826619738372058912709936441330068785945557615305430573158660857083639685984708079449553432767371468432769763059815568294817006766150407711429524381443764353328649143392243030605175631903617241400590334520731552887905420357821333357323178558962729624695160152424150927961815517235178471668611411980527664098448189919626749630449729346413932330280051038124207698726994136053148704139757193993822565645450063014557144715444390692035805048906587820840149620974473539068602257213468282796698357998860905499646858875696140347697252404855916130979765736125939491404582947894766627011437008321826084551608917643552039692092641434023416721725802295946129541224330913037830711831897505727181643752070238124258716406913604326003886892777871785171083042338438822589466034333257513519074249290059508044387937515941195584536849935639306854418549865654614408061949225554166135582427881807182193783599601973694343161657685275975826632605401059697677450138694781053611138910985474876254987791226771601983926224950708128705207698446999762970868619741399138388955923671766834618892101519803294063152179901055619441840211468137457499243080615163211420407368571631248280853519881920654995329479197651873469046539891470723077610689204092925437192831324700740508382223044845331373899396944326854982107248264681927553073948403069191143379621931012158878080926767868489154472525785183112596722186693274842978659686633055410031307047971804940821454957589943688441766427442473419051396660930726551215776955035627059923619934434939234337389228818252138062651964023385907259716856875217332983206258542647956484144053376895677282058618726894075264893141459345095513971695129554583296521812210859456760034199169197708311366529261902786358093999101305450016786730606230292030206470077429240950433535818902863132927160089386510261064201968667301688946240130924904222733535811233377310709070575388538077218732749361385735781362671410241779765408330752886228016198747347816427191393767361118607002910804994498483946180719901059745498161376023303011413268091725633426377641439705607490836958493776666210760974330249691898146723384558621097993110200107834567985162015781903474771053336026970797082827405583984640152590311586996651130978390269635682523375227724690841049723350239062980077884498173472853922895986259449703557854615873912991492706834134188831223288072115285680543132659530562006474917573599463126164660175597089006340798638300090399758336562085930375566544725514749718150151542246563296277642802552407242105936832988106386539137183422418699327088241800890533010663176410353351158461215403413109833504713371583660146076296550323246201815389456172173706830863136468029781683216347313194402113678038893523681163091511426864300172115307127211628298548752944885599448207246119768819846726699639029352863512164216176446798914058117163239884649542915510529041947704391959354269079196393984501554075330930504966050842500838363928465487060306050596564952197235832052713931735782408102332284034120417772720870851192746545714460855294262457078632718061537234518630269810919269617488169257070620461029811140007937616623706165998602970962299178529667384281611711284607273114722670486790204254070817193833701660203086417276450859927068939525290399922358343072724298746965385101645299436440204421048958231664229609473978540663876261084401885358577081838088427532726342531219666349529588708676864620007863974417011281178486555297841836402783955736921273673850857042328354562375043956630762645678828277468596945482993393974109650561321318909283802349703359908590794955598686861188105172867117624073767884315818474218316939810928386473450140843666379789633933028157360991196643780492156331045116092963007359899178903786388658268081752185404862465975652717573346338903555552006181453313780938268351957198485656126588122587529425797721024874117272720122593011520181102165173778540109649069873683782560225421253727583520275185027823279197281638302017391265559931535066430315642407161670790778165873761260850453732642568406324331424811297605391958431678345086072195795316149924023369165664626175580036981425302726551623339910755431707540465223502996664989856176285277665969692278401436557276802735628722927403361765477884441622418274020615931280165006550295668823519197254154151454712027583777160043458631500373569552286186287576649460507457140013106316295491415062488184750166573300098842610352649548418028671322996383284580438817915912751328692636309346404265340559254967861755662343799686476963239624473583538068952690259757479187975773947646635862072773097932605011147309545946917745817618263320705384509256266597692822011258526575769901432671791899309866212784593294231039210384345017912165232281651766218511816118452245482765148462644057186723738724822065021604329606577441416459752329357653818884431934533205079171447937450753200091846699978761407348142216571160734786231176158036173395546313127825240933740557460405345687875822691395927735307954680584540631539852299093845143573101926536856436774094890716935644906531408882553968024236594348780230005657598271432594655727370741202306848716798905210887080943457274364437927441617729886063620378682180675795409711770720617214861995899802099720841503268275592791154447987570696376013830399865593021757490603503782606236297834983555381943082960053607082894098193433830439836836701596825459287327985068484765725312935435383570713001737353493414554745918732199428982288861916281925853870473235242613934578658466072097633829351396159739136586030233961937919001934510892835623188835150906662666684162280030518846926507260191259658152547057140996892575994838442450176092944932641609223450069710549113423096908693460705811017954646809219195537407087992070845823304506437379135120730335409827645953230507797899159560638526238733117928509820396840716609945419171886667127363308348835299399638934816341074966311440750045989538622932362121521488502205477949656543218950989955469235493902648629617578805931019123481068629850143880665080707955617337916811297483768702780290392503453278969467260654930304742159521939597380725090779572928293901161522955743015424778301780849024292067139437382979863134823284319627217588300337639449928419525514096794167112290463836322735157448121909387510372861759941692821797921023914852572773124758265866489263355698959718432102332876091323039261846105459189300877483349757964955202240267626882379975165911407692612296374563798585046788847367663183939085894084851302628081935576963248048370548543807192978291741302368501280165227638198366783808938518346282718195546770075506680849155238300453171855111852650642578666970792276185247457685538362574130361', -); -test(macro, '1234', 0, '1'); -test(macro, '-1234', 0, '1'); -test(macro, '1234', 1, '1234'); -test(macro, '-1234', 1, '-1234'); -test(macro, '1234', 3, '1879080904'); -test(macro, '-1234', 3, '-1879080904'); -test(macro, '1234', 7, '4357186184021382204544'); -test(macro, '-1234', 7, '-4357186184021382204544'); -test(macro, '1234', 9, '6634931404835663880262603264'); -test(macro, '-1234', 9, '-6634931404835663880262603264'); -test(macro, '1234', 11, '10103381606301936187653160695875584'); -test(macro, '-1234', 11, '-10103381606301936187653160695875584'); -test( - macro, - '1234', - 17, - '35674485208164146078917356926246803757746166219014144', -); -test( - macro, - '-1234', - 17, - '-35674485208164146078917356926246803757746166219014144', -); -test( - macro, - '1234', - 22, - '102078319882560292285132581626357595569664307813353093133708407341056', -); -test( - macro, - '-1234', - 22, - '102078319882560292285132581626357595569664307813353093133708407341056', -); -test( - macro, - '1234', - 24, - '155440374071087980438939349467025786799279742708630302687913279529037070336', -); -test( - macro, - '-1234', - 24, - '155440374071087980438939349467025786799279742708630302687913279529037070336', -); -test( - macro, - '1234', - 27, - '292085038627598162546736469597670733650101845477820437776597715171027672376482463744', -); -test( - macro, - '-1234', - 27, - '-292085038627598162546736469597670733650101845477820437776597715171027672376482463744', -); -test( - macro, - '1234', - 29, - '444774245080406867607018239498670695690094485812423938546940830362973414277322930560958464', -); -test( - macro, - '-1234', - 29, - '-444774245080406867607018239498670695690094485812423938546940830362973414277322930560958464', -); -test( - macro, - '1234', - 1234, - '48184467781382543701667186039468406661059770237590274727670474872867568934066212120125133953550629961484891523453397766904292741725027019645437267985042784717562212455213265145073576158446772320656790521515384533153285495122560467130551068937365382642309092956110550380937116582823950116105467284919886128590021120491211422848352480419801389040432671756358444906225483817656922238136306002774235317628882806945193646888148396110892049431698226720231373322565553173892155104287328274243305595665720786784052656812367125148945799485499060066329553808509237311004983159894774937428752149540862686417306258598574741354798734543908917749037010338607293558391168741173229347205324015819180886782731783732875096308025479318621477536729557178851277749719374746640105570680704597488214460168162719035143192317718562628271959732323123847141889566569180545843169342410738692059982444746465750802950208574020617939255322870389259522352007286309084437654560750826135123276437360339867137662914521505757477954199067061537563338324827971696801982963501680500285473348151566773437596060788388816834765832275133438433921225741018069257650081651893412763515411183995641907421720698187041665296617342826301233824768831086783439617690340317902242011073693697825044232174730876417203502412742085342749470261962000902738749779130464597185957223365845266728739264096596554562810900489160285087089151363421121896616575007056439552166409310603897415780357105218172824045265515881762471530724320743935876223471758489130857861949736325801719247163392163145092104862730777665632878101469684676983177748845758819134783307275384116307332565581471205450219638137864387568253396048525319846029722597087368081615296780675739066314774724547006391416740049175425483980982557830287877118477623151223431159832554386188341940675670910313367805899112248803570997473057794418174867654496284922646065073429519234590181376956226715629044946363751414558194273837719521633486883608951520130473135848525228767697904589545099613408858934772678955107374792767376297292404355699412788887158297703071562694349633862471115563026643188726923335031942038276485070702440112289573556176109970627523424440589934713944485023114357294128614721641112627517540349238220184422744440362721622786094864017694819354467741507712876404983391152695521440373975295468154208059821687654408426427370963930322531227395895396783921477437273314199002421808939747302217153865116186806351980760710239964563379901328372415061933640351961853616394184876278706277214297206989695471340253866298118966493903627998818702216683968716037963198654625001668768390791943686432733286824675468274040171973201059002888713965690564527215419345100503188258777506372065686193271207542007415422109631813074486204833751677472525228744950194297089998305021078379670692156515896561318156670094486647187285361909788624195866103332184213842805429511053631902833667630273693526699848894312061513323511126288640008264849029913769883352116160378319937025276742846457501369721989078408607355941517261584972558483819760496804231338012065441081939772196754109683768808242484290927174759258520839532703010720373548957783991479615682174614219692539567777715560109326389875468292301222743028820913581258063284673412787274389056140124677069653486630962880192937633527058165237839406307326482619493415666561288774929091975803346338652727476500670928651812154306332363280019281880148780695662032811060669099701522746512853264775139655489705043573689252437465482977809592752059272522878781208311791893662451561020284928906469358115442883064671084339186725298116883304622860824362268174217031187839248915211550033719913619980315078125050194505282396757349145204835262063407488072671571413182055277457862261818131387963934879102237121895980689553963436483304289698371277085427432858554859126640569432899045006806292448711540736', -); -test( - macro, - '-1234', - 1234, - '48184467781382543701667186039468406661059770237590274727670474872867568934066212120125133953550629961484891523453397766904292741725027019645437267985042784717562212455213265145073576158446772320656790521515384533153285495122560467130551068937365382642309092956110550380937116582823950116105467284919886128590021120491211422848352480419801389040432671756358444906225483817656922238136306002774235317628882806945193646888148396110892049431698226720231373322565553173892155104287328274243305595665720786784052656812367125148945799485499060066329553808509237311004983159894774937428752149540862686417306258598574741354798734543908917749037010338607293558391168741173229347205324015819180886782731783732875096308025479318621477536729557178851277749719374746640105570680704597488214460168162719035143192317718562628271959732323123847141889566569180545843169342410738692059982444746465750802950208574020617939255322870389259522352007286309084437654560750826135123276437360339867137662914521505757477954199067061537563338324827971696801982963501680500285473348151566773437596060788388816834765832275133438433921225741018069257650081651893412763515411183995641907421720698187041665296617342826301233824768831086783439617690340317902242011073693697825044232174730876417203502412742085342749470261962000902738749779130464597185957223365845266728739264096596554562810900489160285087089151363421121896616575007056439552166409310603897415780357105218172824045265515881762471530724320743935876223471758489130857861949736325801719247163392163145092104862730777665632878101469684676983177748845758819134783307275384116307332565581471205450219638137864387568253396048525319846029722597087368081615296780675739066314774724547006391416740049175425483980982557830287877118477623151223431159832554386188341940675670910313367805899112248803570997473057794418174867654496284922646065073429519234590181376956226715629044946363751414558194273837719521633486883608951520130473135848525228767697904589545099613408858934772678955107374792767376297292404355699412788887158297703071562694349633862471115563026643188726923335031942038276485070702440112289573556176109970627523424440589934713944485023114357294128614721641112627517540349238220184422744440362721622786094864017694819354467741507712876404983391152695521440373975295468154208059821687654408426427370963930322531227395895396783921477437273314199002421808939747302217153865116186806351980760710239964563379901328372415061933640351961853616394184876278706277214297206989695471340253866298118966493903627998818702216683968716037963198654625001668768390791943686432733286824675468274040171973201059002888713965690564527215419345100503188258777506372065686193271207542007415422109631813074486204833751677472525228744950194297089998305021078379670692156515896561318156670094486647187285361909788624195866103332184213842805429511053631902833667630273693526699848894312061513323511126288640008264849029913769883352116160378319937025276742846457501369721989078408607355941517261584972558483819760496804231338012065441081939772196754109683768808242484290927174759258520839532703010720373548957783991479615682174614219692539567777715560109326389875468292301222743028820913581258063284673412787274389056140124677069653486630962880192937633527058165237839406307326482619493415666561288774929091975803346338652727476500670928651812154306332363280019281880148780695662032811060669099701522746512853264775139655489705043573689252437465482977809592752059272522878781208311791893662451561020284928906469358115442883064671084339186725298116883304622860824362268174217031187839248915211550033719913619980315078125050194505282396757349145204835262063407488072671571413182055277457862261818131387963934879102237121895980689553963436483304289698371277085427432858554859126640569432899045006806292448711540736', -); -test( - macro, - '1234', - 5678, - '307239295662090741644584872593956173493568238595074141254349565406661439636598896798876823220904084953233015553994854875890890858118656468658643918169805277399402542281777901029346337707622181574346585989613344285010764501017625366742865066948856161360224801370482171458030533346309750557140549621313515752078638620714732831815297168231790779296290266207315344008883935010274044001522606235576584215999260117523114297033944018699691024106823438431754073086813382242140602291215149759520833200152654884259619588924545324597336231254738156229165754184379098279299262049527493981418773939710052567148397520139396664287825920245602806281465369440795094171273883323944551402505328195835875189714803373532518976612644335221127924375262338025026738810109229789066895210195233568313781368494583937688244974433119626632798061718807757570369881396496330922521092429743441101260124582034961693322001051820700723840579394700173377538808676217188816149219248363818340764914694139680749024310479827367842428590981843277277511673125624678580926604235648781819510534399854187957358228934011534030807453365221505448908659560252635131850623331246397555109848508339190181937347601723206430770586417066983949247170768203919583900239303725667699002878222006139705975234985123135091187455708833574958129058095463081654382235387683423032727818984044935970076132966529729332219803725615665380149260841248646307744074852263644971412954286319498473825976906290726980643387278999438899482000949753370477834589869715954340896670602062189642115067712194143619891104758054603148185422879681279323731504130318089025303464892133142814050831321280869931356176562021125636637696428931550149163626111706971094926279122079036473959349398647207563958880810847203107558693382581247719368450328373491128928043528764468838481015835481857925222963292893497064677790987715608519992573590320785069213807044062645935102241563318077900517348913659692426362075079090302084558791018063653522660752511850417737787810507118607660015778345736185544774065149632138946958208872078504737965494929224554757212817739013665074197553518364007019034099233743417376008297034225146702810718547331679637811882447383064783027200681712046322391430903630967737127735630322507937735245138690231556762427184206415939967664528096214944050443838234089893942372249310965891033124439206439457942974559079093400885882410032029710828368112382759140589323805553285532286914003552846853057576991775275570301997344165769850233881907361264015895890818849669805891907459800581990812691006812626374363578450984335517894357744829092787395926839000023962733949335231397395401479346911188305001193928601270290423808867456174087663596893004075220125591262058242530195664451642127872992040342213830892225801497136162152126452814636821372850336677985479349893600592592681158187543928904613001813023098258056853626951063105305617338502819189272263288481301255674961962172018025892490871747497521613169302263447945299308964856799345744118753448948756633623000928292271644274476514153318916142897646572809647150502567312733052336669846353667317222010832483097294019925495696183147173179102497732276927446687768280599040464245101520966166706822935112404086619669510798582900981432655281831317374774621351894425270900215984721126295035504324174185149268696653681359521661246230845622880397944668142537238039679575235700048519280449389874038813948425385923473788921228513953652472377934540266323863335829226613711924193402576311531059727276108808010971355782749309158823047978491790920875069292996040857512538729285177101496567684459641487139689410758137498167987281056377030844965856298252042132686609411400751350979919962404101477738095442835101123059316328509676953867455359567416099259739884548059992245862006247543500012335979063372087713854337763356772298485634443508377176714285187750207610971059830770832297524782702349430113067885720680406382750054789965311761788658021072821754255217642242163558086741759388374052688951876547395076883774495970922489499563244338874847247075560546870915783578293537186883556120656238250632036990110926238158152815482271306910080137344309034132272734875502201244632205163102423192286940171017158243227969637526316846974981084420356508830681480947885917792995548959521169789814827379240290484939291595796335808304369249825132694371154995629020348448070937697459457310658016390510669950232202117026949332446206032626619437018409520774627547364298492663317409090888105284856231403203264042680650088950260251993214047720274157347392106720550579972688296788335711267163348525040618144978956911125218083835003018934447595528171992681871934696456852699493142208475082155078613935820598046951404164272965056793854322831971808425855979818512937009767860333913142708117420468535706707338985116178601074119960157589096146389334345593090791448497569418129926045664495907334153337589635221974568810352681900639590387377238660034950767943219972827486077231842758760058663109292511409668322244689754266200746246009494113605844291527613997239500108446722588067983522129703414514679248433646988350542223586243640715804222865695841503336942447435284973707708738401917434544559678813875897734731101993564026733107673289113791026266802347607067756870070049091879278550780571887185814708537343643120109716176863158267452564359772918848474831928740035479988942851917286977981468213676371170376581599421687421157192621766056282635455502745345422134109463656273257647493243595299386340007285458064661281500227780615582329762847666128912270287127702011512298795737439109946753443411265222017119479062242748224835713889637406840422012428195129047091229247913611585459076419478870311555089949116202363154707599047680183367431508170042693609348631935300963606524001909354481256448016576044636672552024793800896987328626909995732430432770110962492541560005764748146851044781232535045697298013876874942199766539748522749578575930121320360075106502263951925603758744064725542088121966571973151956517962196033756616574064204240308736083289250933661070517861933607033805383794022932833914403046538303160864479381724650667684378003267241939785566603437594388219429227245319361052082720101153688737108636181648544729232365745223735571958927805431626874954284337872776726226192776223809114300468574608813958523118548177886092362889284408683605828714504550636413269626117352112283711190743705957538771405106257296054814739841947086172415476929232773599749549247112194345575894505210361533349007732728515354190634197202883617455807662715540116552260765510850657135720244190956869964668147050309837395659245843733132747750125006720855350386404222102322699685624358041394671351793225094747979930897598627334206296992066864002770865189677622663536544862088852637370423181596293505045491829198840304769603782293214203771365262426835626638710332592520084894203380483205318574229509791732093263658924554481129110023771559358840259857767832130838951986420641743231157549206628101961335770935217869188598407871879846953788231452559357515703225887372560571514246425295258565332871227501930345253728333861399415882260461345687393410071890081321210957633577414930430621476910640788200315263505324920812865141791848583320684391090487087855177019341942297833034669241769410159832097007619834572197457123843735128138967329683027440008185533782920736485842481620240819664388691386839924189266798055808795241509113657623950370311771062440917977857478832595327568508967705426889618627733979628180362261623944529557924325588829972626926001856116218149641848931627611856095681608502049604728694373866998800873793794833475389120231569350898916749652696861495083269053509194449587614725554391245026950041678221421784696915639893978008988115974628714547147103468130211269397474452407156217137857585748699660585669149692200183240671446131671973589521765207492540448301776208106269303417635729945209531363305026742848137813838295036147383212196832126162865335463466561361409672786144491545547877231568077479720810911371970039908454207555969974929024330604715947635120890002757270394372957682905595391676060862365861775640550248935336685083103867570594614396930935612590413493959149016850970545876096218158891338146114924706065887199224191578080834101491435941396082107871178120691839003211534425918642587315041952198269461336583739132022883309457097019209940833906282314924551936086693600235902374507567167637535381913303859494521404821158954494161315238799966252882039753927801125656757563231893176983091324850782220479663033201458404864019043728888446967709975804533406561597647307666736915858037493602438470123931843180216995263782074288168270696306819344125131703913727531436787169764181060443128826914028449143343870445556915243291006445590059689543641135357147336450120418996865830009910043524732386950657567959305789673308988840460874020981183065604588157684942510453265370111980067359260650568119370610380556946353747266717913608784026798916527135355036629347450939565819904625935450373503394875228925517167402287702922664490685223930566127022783241602405058913218083039094404066037147525985595082542486481669033554440669209239655726473710598417289863187780615394059781396829068192614265298593097207267823436957283409373106070373278544263878956713757687019674587981457190254278514279204605546359474410508605834050747211850883484821202442476380159869647953907610229592310303134114435748409130185991653212644798150231313091123308159964059871142740195724462392875247410611671330900705772528157325261686884901444831627452426862521432079108938454589234625663627219874064683315753735830472270203230291590088379095823378190821206228778033950009778463074754597422953197657206227154124599901813786834672435550297250999713209514657587197026419042487591887319632167337140620411177338653361805100343525050955261127436206126342162794160499514973561746207894282310244084464331015046184437092252547644317599059469495339372219011274409057478305874498858052105032898790647318808541273973307143643618340481044516933353419712178803129533334912992701719925571602601231239966045848260929819259463725272466267039934723526708966021692828547630900867908313425791675877136094296969834925611943928639082538263478045795468797884085508436740105548477287495851150076743539940855079782006029276242181215199960474633917064701868986279575047584875782888121629159833482729108471411086004777222004940690886933449751160053486753465048382468022710892618307193393528079008752243904763586506319110138528885232166270184875496667758544101338512476188537568996993043100897750547345490436292741108436750920835304292808262544944670065385074720714585256100047460364718010959212394917302809571145040577796350681992159274957618160496935869534857889595670144103693696724808909241541937251046834703005546264200526980116401703872577549517787709928581009929724799949713171016514146509097812026583336780509096196442473618165553854996468315728059606232406325692644298205678901764327286910778328167615148282802913180962943257625623528207208823616122188000672048377973388690302368144655729681461875178487994418224929756029694157916324380087380717263548515509059805890429224503660512145778492057781022321319300741401538410679063054050314878059794599008988939481984403757789776259194385861548907079786218989999985501502512699493693947825897304013412779728462320145418134117202642305220024682824144269946547059866645346290129336922393759141046965787439826153450256825134094790929592783588398691272222187792943672971006484184098016720992986997067386737093941669105468352548563143947335409769120498804286178739726148574102071841252232146176236358066633649877671588502174880747910470620226875718620591588580632465728693537756687445252996484012749560906868590019478473487675167061165693342982827540412207944219805698909631680447518841794973864110724383885552977456485490355687570208317569412914524579582528443585244963004875806464317485086354268522391292873764104739225726087924762553552795782491218068168781724170435932899368215004200480636159439699787658534222744609009579495632497983889807333784591846944280527939629108316893490033323187019394767254142325425613836459619989619263579911717847411193199852084628049271525546800786030737052994542939990268948285213669034871808549614119094067473581277599609496762960972260689628137112032360486445234598511199684675881816677322350072503071116878677854198807513803028345384041193976936949595607619772723094339732775857366188394242237888454133005692229522627059021766683056379166328758643074034651477088295526779481972642314260481913656849908998775026037593896126509468805024130879738114831726507455996318751711242257525370629800182960054820056459299031313033178639379789867248052191948564791284306277912200831531132727252848046975079274107604207422180790180674442083634545051718378749397382615541422595171094449620979551195843771863108274520677010097230731862345300468517668904946393480947243124651839763143567511692669685031233831621389557659840710993215211263285069063398339503947184997161094083083053877736678929654970511831662984737433141151838605212887047272029235859200632246127971440751906726106283042958810473062871828212882679956627599162978008334087215417428566328627933710537352061688382898427732919052252532626559528549194113550832651182056923950487564696393200874225189927497353864238597667828879046351719309006631247078157959316594673705629051666057170908233857157705536358758178001948093811831452532180297259924653826868431583529081443915403274901333012849380463102430959626058209184844395226752980898545128507931317338496625907256515055513251369817237050215214244175173206043376003288561848566594665578019149404316779573795236831759132895146984523319002050235985934121956160952246405830116891841948253796487984299917640127262665004204345083559607575220761423930983654019621896859885405207293374556775708780952649634706639743293665862226821403434927000882776959081749622346161275243116822118898574420383467793130210766019125911546825496631056718811589200078195809534266736568373586977485098744359972146470201537305238751109316700591533775648459300115999077864969027102697762222355198344795959353792485217583990345381206371761414421010734536687579132581669308016312802515063088351170568135725500656192906416429028050777241979163318996341855526467788527253070038318737475135130442244262535653432939984902783154351748576002192512489655923703793418069024108798838849972906445094342850419486037552044967029146488792384693648586002550767915684072869316718751724643267161008346373705744182753875744727023321494376965078987015632054807290667808424067931728833093486771961815346826309828195559704978447323474359127908437922549870919735027220283560010130504849534025889434952608766951053099462066403239613829870069506759073794934606255061208438993717700947178902855875926936475717036748410034341552469899952887639559618260694386489180172457011104588203088631135975270713663097698949066683649938633016773410320323447393245620649077170739933817132023640554516055821080347587299514517344103913434724274570905671411870152447633630020794116729196035297166502202283173704040564353623362060624602105914889095359863566586252963824184113069544184070392139803990488178637780619106269997462589919674956410553073119659130443817291726973054433812614236377566385896766193436531715868492078679787049921607831256548591420181144337005624829883308079609829281702933920044150724362349082932337529275183555550759563264061342114344076379295287668872881144842678541568323866396895644823948668725645603165802387345638352049954163004283115082448016533419466854214433863370929972934845362307106230764527411697357427260580526749886925414604386144800887890455404447490586471146843968438319402848710992027349479404509054156265030858599686233771999636756519543362055535931234102657321710620159992369968135582404861074012859908357457643934719496361092731946805880148347648955726838411743124285700361371263752582259872541407572187701536397820799177145606117943127447314468934127745737896295536031841708107999973631172074267987053572743091086520751474818610389107050882688611509676523391949612687262723024304567914249177164676175113427118894827540124754596538131148662139737659987591987808710366016209270335796976639603952589746825309966421820623559980254684651585816259754646896675329322398127468234562575355911037292681588630747026794408719412044361738934185088651798053979414290523336289393920442009235066258188884117507158747732520164728032543870564722222274127742468776838751533544621992260989073383290925600190934951597609650422144836431238624232246140925645252235224277512965625723103788058599484029459545200287204461143877805380501018130152779707416171004132419255619937668896930949220825217150414062456758348613847169640357557332484328139934101922784000250937441082915494248269026918650402924769009110291437748448952763518164181850168552758762497110615089698420229504724702503938309581244539522277495404978052342540570967136271030627694122107443462213646337183623126971012986781309482020707420593863632485843384964535477343527400908627484307719882317043393718378810857723613256421901261434759064975382278747543366226417959638731591323673527823550282181039009870490445320706815835382713226494596508647261636899500195110884870850525896617885714025707410504066312830152850302561635092619333567203579066303154655776839525470585505379545233565628470526466798193127760716376850644169280567548816813902508183547962830998308876094664913115567444899888066294586537615803720457816111393232094487429956726714915349898077589609929473981536895559767177568911357519231394434393732467776362068275102582907448002180170709026284212375295627830371543656788608582913633102101052379592812704964682084931076096', -); -test( - macro, - '-1234', - 5678, - '307239295662090741644584872593956173493568238595074141254349565406661439636598896798876823220904084953233015553994854875890890858118656468658643918169805277399402542281777901029346337707622181574346585989613344285010764501017625366742865066948856161360224801370482171458030533346309750557140549621313515752078638620714732831815297168231790779296290266207315344008883935010274044001522606235576584215999260117523114297033944018699691024106823438431754073086813382242140602291215149759520833200152654884259619588924545324597336231254738156229165754184379098279299262049527493981418773939710052567148397520139396664287825920245602806281465369440795094171273883323944551402505328195835875189714803373532518976612644335221127924375262338025026738810109229789066895210195233568313781368494583937688244974433119626632798061718807757570369881396496330922521092429743441101260124582034961693322001051820700723840579394700173377538808676217188816149219248363818340764914694139680749024310479827367842428590981843277277511673125624678580926604235648781819510534399854187957358228934011534030807453365221505448908659560252635131850623331246397555109848508339190181937347601723206430770586417066983949247170768203919583900239303725667699002878222006139705975234985123135091187455708833574958129058095463081654382235387683423032727818984044935970076132966529729332219803725615665380149260841248646307744074852263644971412954286319498473825976906290726980643387278999438899482000949753370477834589869715954340896670602062189642115067712194143619891104758054603148185422879681279323731504130318089025303464892133142814050831321280869931356176562021125636637696428931550149163626111706971094926279122079036473959349398647207563958880810847203107558693382581247719368450328373491128928043528764468838481015835481857925222963292893497064677790987715608519992573590320785069213807044062645935102241563318077900517348913659692426362075079090302084558791018063653522660752511850417737787810507118607660015778345736185544774065149632138946958208872078504737965494929224554757212817739013665074197553518364007019034099233743417376008297034225146702810718547331679637811882447383064783027200681712046322391430903630967737127735630322507937735245138690231556762427184206415939967664528096214944050443838234089893942372249310965891033124439206439457942974559079093400885882410032029710828368112382759140589323805553285532286914003552846853057576991775275570301997344165769850233881907361264015895890818849669805891907459800581990812691006812626374363578450984335517894357744829092787395926839000023962733949335231397395401479346911188305001193928601270290423808867456174087663596893004075220125591262058242530195664451642127872992040342213830892225801497136162152126452814636821372850336677985479349893600592592681158187543928904613001813023098258056853626951063105305617338502819189272263288481301255674961962172018025892490871747497521613169302263447945299308964856799345744118753448948756633623000928292271644274476514153318916142897646572809647150502567312733052336669846353667317222010832483097294019925495696183147173179102497732276927446687768280599040464245101520966166706822935112404086619669510798582900981432655281831317374774621351894425270900215984721126295035504324174185149268696653681359521661246230845622880397944668142537238039679575235700048519280449389874038813948425385923473788921228513953652472377934540266323863335829226613711924193402576311531059727276108808010971355782749309158823047978491790920875069292996040857512538729285177101496567684459641487139689410758137498167987281056377030844965856298252042132686609411400751350979919962404101477738095442835101123059316328509676953867455359567416099259739884548059992245862006247543500012335979063372087713854337763356772298485634443508377176714285187750207610971059830770832297524782702349430113067885720680406382750054789965311761788658021072821754255217642242163558086741759388374052688951876547395076883774495970922489499563244338874847247075560546870915783578293537186883556120656238250632036990110926238158152815482271306910080137344309034132272734875502201244632205163102423192286940171017158243227969637526316846974981084420356508830681480947885917792995548959521169789814827379240290484939291595796335808304369249825132694371154995629020348448070937697459457310658016390510669950232202117026949332446206032626619437018409520774627547364298492663317409090888105284856231403203264042680650088950260251993214047720274157347392106720550579972688296788335711267163348525040618144978956911125218083835003018934447595528171992681871934696456852699493142208475082155078613935820598046951404164272965056793854322831971808425855979818512937009767860333913142708117420468535706707338985116178601074119960157589096146389334345593090791448497569418129926045664495907334153337589635221974568810352681900639590387377238660034950767943219972827486077231842758760058663109292511409668322244689754266200746246009494113605844291527613997239500108446722588067983522129703414514679248433646988350542223586243640715804222865695841503336942447435284973707708738401917434544559678813875897734731101993564026733107673289113791026266802347607067756870070049091879278550780571887185814708537343643120109716176863158267452564359772918848474831928740035479988942851917286977981468213676371170376581599421687421157192621766056282635455502745345422134109463656273257647493243595299386340007285458064661281500227780615582329762847666128912270287127702011512298795737439109946753443411265222017119479062242748224835713889637406840422012428195129047091229247913611585459076419478870311555089949116202363154707599047680183367431508170042693609348631935300963606524001909354481256448016576044636672552024793800896987328626909995732430432770110962492541560005764748146851044781232535045697298013876874942199766539748522749578575930121320360075106502263951925603758744064725542088121966571973151956517962196033756616574064204240308736083289250933661070517861933607033805383794022932833914403046538303160864479381724650667684378003267241939785566603437594388219429227245319361052082720101153688737108636181648544729232365745223735571958927805431626874954284337872776726226192776223809114300468574608813958523118548177886092362889284408683605828714504550636413269626117352112283711190743705957538771405106257296054814739841947086172415476929232773599749549247112194345575894505210361533349007732728515354190634197202883617455807662715540116552260765510850657135720244190956869964668147050309837395659245843733132747750125006720855350386404222102322699685624358041394671351793225094747979930897598627334206296992066864002770865189677622663536544862088852637370423181596293505045491829198840304769603782293214203771365262426835626638710332592520084894203380483205318574229509791732093263658924554481129110023771559358840259857767832130838951986420641743231157549206628101961335770935217869188598407871879846953788231452559357515703225887372560571514246425295258565332871227501930345253728333861399415882260461345687393410071890081321210957633577414930430621476910640788200315263505324920812865141791848583320684391090487087855177019341942297833034669241769410159832097007619834572197457123843735128138967329683027440008185533782920736485842481620240819664388691386839924189266798055808795241509113657623950370311771062440917977857478832595327568508967705426889618627733979628180362261623944529557924325588829972626926001856116218149641848931627611856095681608502049604728694373866998800873793794833475389120231569350898916749652696861495083269053509194449587614725554391245026950041678221421784696915639893978008988115974628714547147103468130211269397474452407156217137857585748699660585669149692200183240671446131671973589521765207492540448301776208106269303417635729945209531363305026742848137813838295036147383212196832126162865335463466561361409672786144491545547877231568077479720810911371970039908454207555969974929024330604715947635120890002757270394372957682905595391676060862365861775640550248935336685083103867570594614396930935612590413493959149016850970545876096218158891338146114924706065887199224191578080834101491435941396082107871178120691839003211534425918642587315041952198269461336583739132022883309457097019209940833906282314924551936086693600235902374507567167637535381913303859494521404821158954494161315238799966252882039753927801125656757563231893176983091324850782220479663033201458404864019043728888446967709975804533406561597647307666736915858037493602438470123931843180216995263782074288168270696306819344125131703913727531436787169764181060443128826914028449143343870445556915243291006445590059689543641135357147336450120418996865830009910043524732386950657567959305789673308988840460874020981183065604588157684942510453265370111980067359260650568119370610380556946353747266717913608784026798916527135355036629347450939565819904625935450373503394875228925517167402287702922664490685223930566127022783241602405058913218083039094404066037147525985595082542486481669033554440669209239655726473710598417289863187780615394059781396829068192614265298593097207267823436957283409373106070373278544263878956713757687019674587981457190254278514279204605546359474410508605834050747211850883484821202442476380159869647953907610229592310303134114435748409130185991653212644798150231313091123308159964059871142740195724462392875247410611671330900705772528157325261686884901444831627452426862521432079108938454589234625663627219874064683315753735830472270203230291590088379095823378190821206228778033950009778463074754597422953197657206227154124599901813786834672435550297250999713209514657587197026419042487591887319632167337140620411177338653361805100343525050955261127436206126342162794160499514973561746207894282310244084464331015046184437092252547644317599059469495339372219011274409057478305874498858052105032898790647318808541273973307143643618340481044516933353419712178803129533334912992701719925571602601231239966045848260929819259463725272466267039934723526708966021692828547630900867908313425791675877136094296969834925611943928639082538263478045795468797884085508436740105548477287495851150076743539940855079782006029276242181215199960474633917064701868986279575047584875782888121629159833482729108471411086004777222004940690886933449751160053486753465048382468022710892618307193393528079008752243904763586506319110138528885232166270184875496667758544101338512476188537568996993043100897750547345490436292741108436750920835304292808262544944670065385074720714585256100047460364718010959212394917302809571145040577796350681992159274957618160496935869534857889595670144103693696724808909241541937251046834703005546264200526980116401703872577549517787709928581009929724799949713171016514146509097812026583336780509096196442473618165553854996468315728059606232406325692644298205678901764327286910778328167615148282802913180962943257625623528207208823616122188000672048377973388690302368144655729681461875178487994418224929756029694157916324380087380717263548515509059805890429224503660512145778492057781022321319300741401538410679063054050314878059794599008988939481984403757789776259194385861548907079786218989999985501502512699493693947825897304013412779728462320145418134117202642305220024682824144269946547059866645346290129336922393759141046965787439826153450256825134094790929592783588398691272222187792943672971006484184098016720992986997067386737093941669105468352548563143947335409769120498804286178739726148574102071841252232146176236358066633649877671588502174880747910470620226875718620591588580632465728693537756687445252996484012749560906868590019478473487675167061165693342982827540412207944219805698909631680447518841794973864110724383885552977456485490355687570208317569412914524579582528443585244963004875806464317485086354268522391292873764104739225726087924762553552795782491218068168781724170435932899368215004200480636159439699787658534222744609009579495632497983889807333784591846944280527939629108316893490033323187019394767254142325425613836459619989619263579911717847411193199852084628049271525546800786030737052994542939990268948285213669034871808549614119094067473581277599609496762960972260689628137112032360486445234598511199684675881816677322350072503071116878677854198807513803028345384041193976936949595607619772723094339732775857366188394242237888454133005692229522627059021766683056379166328758643074034651477088295526779481972642314260481913656849908998775026037593896126509468805024130879738114831726507455996318751711242257525370629800182960054820056459299031313033178639379789867248052191948564791284306277912200831531132727252848046975079274107604207422180790180674442083634545051718378749397382615541422595171094449620979551195843771863108274520677010097230731862345300468517668904946393480947243124651839763143567511692669685031233831621389557659840710993215211263285069063398339503947184997161094083083053877736678929654970511831662984737433141151838605212887047272029235859200632246127971440751906726106283042958810473062871828212882679956627599162978008334087215417428566328627933710537352061688382898427732919052252532626559528549194113550832651182056923950487564696393200874225189927497353864238597667828879046351719309006631247078157959316594673705629051666057170908233857157705536358758178001948093811831452532180297259924653826868431583529081443915403274901333012849380463102430959626058209184844395226752980898545128507931317338496625907256515055513251369817237050215214244175173206043376003288561848566594665578019149404316779573795236831759132895146984523319002050235985934121956160952246405830116891841948253796487984299917640127262665004204345083559607575220761423930983654019621896859885405207293374556775708780952649634706639743293665862226821403434927000882776959081749622346161275243116822118898574420383467793130210766019125911546825496631056718811589200078195809534266736568373586977485098744359972146470201537305238751109316700591533775648459300115999077864969027102697762222355198344795959353792485217583990345381206371761414421010734536687579132581669308016312802515063088351170568135725500656192906416429028050777241979163318996341855526467788527253070038318737475135130442244262535653432939984902783154351748576002192512489655923703793418069024108798838849972906445094342850419486037552044967029146488792384693648586002550767915684072869316718751724643267161008346373705744182753875744727023321494376965078987015632054807290667808424067931728833093486771961815346826309828195559704978447323474359127908437922549870919735027220283560010130504849534025889434952608766951053099462066403239613829870069506759073794934606255061208438993717700947178902855875926936475717036748410034341552469899952887639559618260694386489180172457011104588203088631135975270713663097698949066683649938633016773410320323447393245620649077170739933817132023640554516055821080347587299514517344103913434724274570905671411870152447633630020794116729196035297166502202283173704040564353623362060624602105914889095359863566586252963824184113069544184070392139803990488178637780619106269997462589919674956410553073119659130443817291726973054433812614236377566385896766193436531715868492078679787049921607831256548591420181144337005624829883308079609829281702933920044150724362349082932337529275183555550759563264061342114344076379295287668872881144842678541568323866396895644823948668725645603165802387345638352049954163004283115082448016533419466854214433863370929972934845362307106230764527411697357427260580526749886925414604386144800887890455404447490586471146843968438319402848710992027349479404509054156265030858599686233771999636756519543362055535931234102657321710620159992369968135582404861074012859908357457643934719496361092731946805880148347648955726838411743124285700361371263752582259872541407572187701536397820799177145606117943127447314468934127745737896295536031841708107999973631172074267987053572743091086520751474818610389107050882688611509676523391949612687262723024304567914249177164676175113427118894827540124754596538131148662139737659987591987808710366016209270335796976639603952589746825309966421820623559980254684651585816259754646896675329322398127468234562575355911037292681588630747026794408719412044361738934185088651798053979414290523336289393920442009235066258188884117507158747732520164728032543870564722222274127742468776838751533544621992260989073383290925600190934951597609650422144836431238624232246140925645252235224277512965625723103788058599484029459545200287204461143877805380501018130152779707416171004132419255619937668896930949220825217150414062456758348613847169640357557332484328139934101922784000250937441082915494248269026918650402924769009110291437748448952763518164181850168552758762497110615089698420229504724702503938309581244539522277495404978052342540570967136271030627694122107443462213646337183623126971012986781309482020707420593863632485843384964535477343527400908627484307719882317043393718378810857723613256421901261434759064975382278747543366226417959638731591323673527823550282181039009870490445320706815835382713226494596508647261636899500195110884870850525896617885714025707410504066312830152850302561635092619333567203579066303154655776839525470585505379545233565628470526466798193127760716376850644169280567548816813902508183547962830998308876094664913115567444899888066294586537615803720457816111393232094487429956726714915349898077589609929473981536895559767177568911357519231394434393732467776362068275102582907448002180170709026284212375295627830371543656788608582913633102101052379592812704964682084931076096', -); -test(macro, '5678', 0, '1'); -test(macro, '-5678', 0, '1'); -test(macro, '5678', 1, '5678'); -test(macro, '-5678', 1, '-5678'); -test(macro, '5678', 3, '183056925752'); -test(macro, '-5678', 3, '-183056925752'); -test(macro, '5678', 7, '190268860537460461066531712'); -test(macro, '-5678', 7, '-190268860537460461066531712'); -test(macro, '5678', 9, '6134207938767795427279285370859008'); -test(macro, '-5678', 9, '-6134207938767795427279285370859008'); -test(macro, '5678', 11, '197764925536165073952129140102317226473472'); -test(macro, '-5678', 11, '-197764925536165073952129140102317226473472'); -test( - macro, - '5678', - 17, - '6627070629806594831656022886215600897329358775394273623628709888', -); -test( - macro, - '-5678', - 17, - '-6627070629806594831656022886215600897329358775394273623628709888', -); -test( - macro, - '5678', - 22, - '39110965772324916562997532491390626962790594973791320596125071181383759481519734784', -); -test( - macro, - '-5678', - 22, - '39110965772324916562997532491390626962790594973791320596125071181383759481519734784', -); -test( - macro, - '5678', - 24, - '1260925177434571255317406540302166533842248540127020457961763919365319088416200089199968256', -); -test( - macro, - '-5678', - 24, - '1260925177434571255317406540302166533842248540127020457961763919365319088416200089199968256', -); -test( - macro, - '5678', - 27, - '230821086584467736122591924241292894830299686290762376622091655042209731331992663002654366119348928512', -); -test( - macro, - '-5678', - 27, - '-230821086584467736122591924241292894830299686290762376622091655042209731331992663002654366119348928512', -); -test( - macro, - '5678', - 29, - '7441598892019879120787748898491222680774095511313311141385222377597848399868342545524067924908115740965470208', -); -test( - macro, - '-5678', - 29, - '-7441598892019879120787748898491222680774095511313311141385222377597848399868342545524067924908115740965470208', -); -test( - macro, - '5678', - 1234, - '4754545701433992331733575256099410533228458670475892396381228147140277468895263961376711046431196278059194371543633511738104729515132046647921588948673317858795453334016910038267103044330714716949310557017200499682459199588937173529096934288020024176158267550101701080481254770583881162470132740630857097654899879616282728381172344973405997803534651364288959497452319805334849653833958710102843349430647090705281620494871877782238874887814289734228053896202806354761750369269951229593313010945689761891211258688068066696055485242378613245933537337160634515912577045202472450817451849184207035648874665441200090642213657945355196460821766460825032224534602658525599188179237649065062512691280473121441573617950552334838912754947407978233727886935344811884839323223019614920728343603125258018137019905454492748785128237691020015003872956540230098415206613398448533046207656300960598259213003433022409251838940742693047445967307981951797528065313733200257272599665561813580891071207079215211460876715623293069910550166302272098118272527916433819800298828239405657658438060618142659814207004518209034153803725735869682967280748736992669014651682583009724296577174387664968207473327117061022862388179179805519732871243762549484990925427400006876201981312808033770504367669331073626566876134508721159965417268468228608040850320762590581251984432320891961775899262667965048729940448530756142869126858563901357526390190162408750825956708618281237598759925725241049426257439561800035105159165326290183277107179838103459135561724394264803171431808241820795445711863608586766345039254614846933931024903619561176580056139441625967323631797367126958482941668050957659192162167276197457147030284596116968435975482030070191450200681573163807130339270972064786812978664842441338738386157257657806440916739246453417871760401803525801345778950479694386503103948471086023573572269171237514322085437996393254976781298685048789580780175371793986673922336623057771141110132765327451487041405878107213683772036140143582620048289665134817805568670112167960808287343393646995734701543886022122701209620784296421140764622633595229564449908877625079263109689514631383456799358203288875405982309838110130925886572530681702118654886611249141922200019882428708452245424153239056842500484262106739374720265689912446227419480220842375352629558959175152376134258348738676918576054510702773097564166661175972907344227049028399511499148144890097723715043579731339916022734957419253364608790001408119360562088903660541256901511777417919298919881207626846049705641631114520861910821360106286185700362951871430037373045323853881352479438655780016733428623128344067196426832063335414492412985195862227411532910672295727557475523062269393814283457830004423808768415796967148960731363753261748078031957490406872476713147808646830842062710450030612153443209478241811514340917541321810139916689385477670593954065087892241850261558516392240563145569557862995904133784803099322335109965684092492599160998743520079066871458347318820041040608736708265400811003296782209446700589963177364290058854636845629046307738816633516835431430230362482024920978970474394893679522412954011767859444487351352199067658529260874277691008237384360434306282016514094096768013798147480740509779810560544648455485790268334288880803641971210749525943040368705400269755514646235977621926612279423197054873015209023113609804623745158430744774035859946298137588499302254901538876084525827492824031763727264344218393017853529749735850655796213422695465000659399958563228524294668421953057407346976847682240743601105444694630169017375480155130799595124045461115669497563631224904361329523188370665305938674437690787549882389569867694166936751165216920602732743849889023149711513126398908342104741198863408830097845137505662663458382001009103659839197477448289276824608807661040318889081157573844237090631229284090854577084517143322570965548490565414070261786860900921959546383612702905328456128108405235351119788158687215861758441073018835708344133679077552976919500888460205455433542878586438605353256917018782886441646030034030257088489389720348078103255876838236261154196475758170227577027093408115125958792540599677335099871170489525421378579051844293126380522395565389230525206095904182031294100225265853213565367785174160416143450757600749410617414444540260518189203196008117912073471241250825794798475803391996546423777135418649913067759391180278825562475480988246874450672101428462254341590331425352560400400946802179861512954182324631693500044001899557332925974569520166679673993884049720918350709799494693984974735913494505510527664100089926593875304828031765284659403018738108240944539887468544', -); -test( - macro, - '-5678', - 1234, - '4754545701433992331733575256099410533228458670475892396381228147140277468895263961376711046431196278059194371543633511738104729515132046647921588948673317858795453334016910038267103044330714716949310557017200499682459199588937173529096934288020024176158267550101701080481254770583881162470132740630857097654899879616282728381172344973405997803534651364288959497452319805334849653833958710102843349430647090705281620494871877782238874887814289734228053896202806354761750369269951229593313010945689761891211258688068066696055485242378613245933537337160634515912577045202472450817451849184207035648874665441200090642213657945355196460821766460825032224534602658525599188179237649065062512691280473121441573617950552334838912754947407978233727886935344811884839323223019614920728343603125258018137019905454492748785128237691020015003872956540230098415206613398448533046207656300960598259213003433022409251838940742693047445967307981951797528065313733200257272599665561813580891071207079215211460876715623293069910550166302272098118272527916433819800298828239405657658438060618142659814207004518209034153803725735869682967280748736992669014651682583009724296577174387664968207473327117061022862388179179805519732871243762549484990925427400006876201981312808033770504367669331073626566876134508721159965417268468228608040850320762590581251984432320891961775899262667965048729940448530756142869126858563901357526390190162408750825956708618281237598759925725241049426257439561800035105159165326290183277107179838103459135561724394264803171431808241820795445711863608586766345039254614846933931024903619561176580056139441625967323631797367126958482941668050957659192162167276197457147030284596116968435975482030070191450200681573163807130339270972064786812978664842441338738386157257657806440916739246453417871760401803525801345778950479694386503103948471086023573572269171237514322085437996393254976781298685048789580780175371793986673922336623057771141110132765327451487041405878107213683772036140143582620048289665134817805568670112167960808287343393646995734701543886022122701209620784296421140764622633595229564449908877625079263109689514631383456799358203288875405982309838110130925886572530681702118654886611249141922200019882428708452245424153239056842500484262106739374720265689912446227419480220842375352629558959175152376134258348738676918576054510702773097564166661175972907344227049028399511499148144890097723715043579731339916022734957419253364608790001408119360562088903660541256901511777417919298919881207626846049705641631114520861910821360106286185700362951871430037373045323853881352479438655780016733428623128344067196426832063335414492412985195862227411532910672295727557475523062269393814283457830004423808768415796967148960731363753261748078031957490406872476713147808646830842062710450030612153443209478241811514340917541321810139916689385477670593954065087892241850261558516392240563145569557862995904133784803099322335109965684092492599160998743520079066871458347318820041040608736708265400811003296782209446700589963177364290058854636845629046307738816633516835431430230362482024920978970474394893679522412954011767859444487351352199067658529260874277691008237384360434306282016514094096768013798147480740509779810560544648455485790268334288880803641971210749525943040368705400269755514646235977621926612279423197054873015209023113609804623745158430744774035859946298137588499302254901538876084525827492824031763727264344218393017853529749735850655796213422695465000659399958563228524294668421953057407346976847682240743601105444694630169017375480155130799595124045461115669497563631224904361329523188370665305938674437690787549882389569867694166936751165216920602732743849889023149711513126398908342104741198863408830097845137505662663458382001009103659839197477448289276824608807661040318889081157573844237090631229284090854577084517143322570965548490565414070261786860900921959546383612702905328456128108405235351119788158687215861758441073018835708344133679077552976919500888460205455433542878586438605353256917018782886441646030034030257088489389720348078103255876838236261154196475758170227577027093408115125958792540599677335099871170489525421378579051844293126380522395565389230525206095904182031294100225265853213565367785174160416143450757600749410617414444540260518189203196008117912073471241250825794798475803391996546423777135418649913067759391180278825562475480988246874450672101428462254341590331425352560400400946802179861512954182324631693500044001899557332925974569520166679673993884049720918350709799494693984974735913494505510527664100089926593875304828031765284659403018738108240944539887468544', -); -test( - macro, - '5678', - 5678, - '20961103475860397096620198785828544812451875765346411250885842038327056305534831427524235929264523155549200123342202792959619294498356925569029791517054522023286004576806428127901116917137966737875680160041853755979622047280407769716320420049316833329762005532988708704331049532598407081927588476358096106830430346678025737622384646014143458292081444951646455890942404183781454801771092170042167548767143528488456067477683808637020193350086262620837499156780659643514425992677777549276236748838733016855656036767803970531404652487170875923200639888516998895605428441017745101547422412068987348460209115448467644054468275648419404395337331198996639591442581724727811657252555545825531082415497100293537939448249078775822683882777300250359161247892959517197286724099314650422427240434528774639093971213821558552657313136317745703702089009078172440361842759228550114479452733116278009555122957802967528098994386176881771431841384903021658686272530901973786608204786721041117420281569693260260781545794591991815167424486772633334335112935740169814675786293770425639825077094249010948409458543312552634155954058706239948602914517292759521672875666304364312018937594156108424003164485077624655063004963280160357043967713172961937421714852351728786997474570833727073802073151242655465897621077578606223043356016087694305078059542256401820222791125648819317007287481280897846845478489548491210810983350692374049786882713293346324409753707754423018924164908641564327101470836717142930169947476809752607171960867023783880340917424768781396844547673066773609064248651574496288539173939354153931404464270119589133463933821401953922574158938448014272201881447815841632885101526774501650212127008845801189603638355135409486428091715296322188863520347687656551080147975509615440823847444672761184968625278441257265131960174485819064367376310553604561354630629371249798285268189004212654426527594297664248117535729307223651413582559430948950731935053761900974795521089002020414940829028280569419489831414227882285622096763688719827413987472799210647005984076492462922894315598285699105391088926945250813040451821143186871090522965245589172188408143948195834368520199216096394211579483487673484669778106884250996681597133290790739693751847242221100768244023759346750635341703420379801838942511917350863694564847029339158694426890381897099989180224343864523754112539067694526528401217644323654424427231493800150103842858508404600706382916219260256068179635822489248860978198535137682711137174374077990340914136980156334917668955828893820631948604959981643749170072224740493035859834098207411894779743137041606544382898751128407139489082003820804677974180712232039944683681108546158160055498114804222931787517216194961705600600921002101530486944828893320089698663702374771897219653436814633911298888459476136973550537723000547178216062641659170242351858997391600121959716952009812638059726218252540709679474668997724436632309816876295236407595457518507126861860680695750920654652963320254726353162418187659321568071114917619368662094712938035019186605722392484634089048490456834552767036555584677757558574446800534129195021872811546196149505124075849131199605515302266412472075986121981758995616205249141869256646920464095875775897714478203686225976431026856924883709687572948846561956353515691616376669694467094214890998233570175924571354681813611569544223781951920459777052032721788869612973356209611272860999692421601135843006769446060803502108056936952707032803521745669953368947886400455020197982813897023648803789317080479601810246362997281767966345793599493006980728517888764254888947867564213736366873403675906000079828022438134598229588800533119240383617199914137931213183505864880894139667746523030715098472929472302939576875444596462566452370793967057305702473460610483922270628542439793100970761937675746264116065218777391795769254579066163889330331112744733423405142790082465878728322397848857528516220224146420991983558383260828431109792636682987735128999042469763301989217214843757185512109526419275078060717097555288972272391704978646752898865425525925148946610574643747876579415727008374889238583995957880506518609256410087352303549297375442558667992920688803103146202722246249407948046901012612240584683255617396467408314435847004205877168068226283077754365919306242384808777157837278694966451380135919664731764683570386835799307599048703936473275613236972515229396396260958643009818292356066675853792547520081901067916982728871525491998521513382058653551548991210196432125407005261758774055758476265898632777046159129580237974401964271710584580359869876137967244126611356619072305094409440480536976363305436314025755667452127894209347682659916071643846222364653470873175722549995662291210659162334560246843460484181862192208393363077518809836625686572884061772196633797888749892277506502441191600357977013385504776300311259998291033716404492720409291745672289169990906465740353542556271192233542966467378955571662470116771561584749525830836527785451464178352895390807054081934597059639771119622039654129377672203491023057905439106311615960089279769697340091409307248615189012263871246113888420237101222530953693460050751365447872194314346321021252618391674612597521999861167606501984138883750088324174460600828958999555754255610905124642928577815381854757230470329901276588212295301182538623633435542874680576666352264509760450468573897306825844154780925961121512391772395963933139713039190021107996813065298155982705497740394116136786877280826320702315582767519525968812480806822623479009377991272623849572823287103715254262434467196819571876352232869161557710895323643426054024697392936513538931702107731492975713311800736817229334271317993829146513166265221678058872670454757573140530510521990000183590216202544311048834058740149712755109451126122309764879750972847619124852572353750625754484613228115522998750920829289098099554644037180554427993408365441797464370149734104965776213777083810307981642619540386518150159046829445424829754275452381328601724043449450956030748949308969828402680425162361229035418400544619561607296204881691791480090999541515616010212649557063997168853645599579523842619790074716906017775453082500897068436460404332503814365128244826029711441494116174974844655172720999917810103350411225796563189051529716191842251620861664071037527702847381765521782774102962458150055205741141136106439247547142624381556529650433877764934281678531465410529585976763361537124975372339008916161274767618913876519271418713246480667376525939051541144349620741087940031759796162844867538970077387831434344681530487207516991510520912619511583884571364622210013697048350627846600223329500321002977613397306970367590540778783822774812030074816751772184402370029104045385214602610907543748021786280923450646029057709024071335807175590663303554223846464611978030180007569607921318215938216147386594093783432526613610728757005691521557409476530287282519784554821625290605602981175951476074638525315922123873770224286936370399872701299567171494946919326740256775127284475987028437513344512643223731472467390195611228556080275245145240204853439354039812301589775361549206311675316060841046896944990780074886738787814930150748548502907587826876353074588954972282061956250092436604733846523028612361583744352854099913930684272445300389550635728506447056670977566263911578264334619665006859685788546051311606465170520850052292627918870022043421681580681687815285018239742758216968701779554391176904096742556900135151126780776552006315456063734183800063507587324457500426893135954572619126593168091720910428883991975359480482573972151692294245346527271827960866757765591817415445212833405373149434835366091481859076709340699689283099227679095904342934396597071849631503357041827588692207811689619541022987674906772902279361365116008403959183232244277968153717371380870224724601675215395853317076044589055344155303188951949633122037313447319757599917592415992347777664120565677256132176162285933749924410020763498845915345437059932175518550870149266678352583554753248105512643561027254478108520853968547412343074452732048940948337258955528107066091208271688418567950938759541825412737643300318455888061336920776577194225851506408333260918392790229453752287062094219357308185064469699183516806540942085490353756937701017866352051531856798410752966442088040473501761715035453238890231970013529945683188860755904234083724684800512845736719451852683069210468801867201477539348052542015577484072403704037776579238040836520289410747338939580941699344511302194270338381742596661809385741277476102729401334821325398466231955303171814534873887668780922143864823502410049426239526505466585893420380824352949092066404315279591440868891045752500463965898054919547044239119894054717314737895191652981340489644261093020311422889692148710370782648783605622470403387492804891787456729566334392617608021680405626520291926600181533814037514425472456947855714901443112699002508628600214500147437397501520737486276785876992172931265188844659595175189051513909865093560705009962172767282431656449941715794260678036177108296646748595792902478003711079538568560569329362052983611711508572531810948840324314191268617953219086794280506078381146419144518511359337076537668884246531754894520493160189833787323225134536395026232747632921100895318203838170957249192688530720205345436462911312863754388655934052209987748976917630044613649507982963832646361600102327899814182961925247597766558883415426602825642679231108408717356160761811443138678307765670120961632324431937203518098606674451620777129193461079930070445790621797443406995457673007773949240694361732293871256269440702045044042508400041950088476821880075340029625967767429598359971876420730553017036711928950784849486622452639853318381569541989587912394634477936955057149926195818822162073890615735490958836145860064089782477806643629376414359166374954027243086599306339146161006095540567436463505814151437072367936996320385241887273358613933332829151995652505803301556826697804912428850607413334679395180944373755345498960648748382482129209871428353424166735231886964387990779276298346036013789942626283820173524619459795908090658203843828759290932760054102527111538316976316107885329942413386870965936382594101982473536441345366235792871866647413979193839717006298786289046184792740497837459531945129292724622806109963537972595469737226837786127695843373683711177980931771124939231813651067119584047671610562615594610013918906014074965915938697967519291496645151577431294255803269930598594469775759332172418552542909930827665688050144404349648565099431522182800149383324488601033329987788729015603953218570332519940819306386650225037968580102257373618430731324266588124210598703511685751977221929792590346525097022616738437403242628009366426304027403800405332758340415937758762022018256029841471401813518917716264970909993826679020791028595741882041564058061727313588364708255873250181519665032113898406604900457648507873836669075356646954261077641216790353285042630288932760415550082594708503004210469047805667031578982859227123863848155443706073467171101932882914667034131195237741270122375436214181192852781446477601012439563301881420830604554167146333080753008048466060868180919956181803167095012443813370384688061266418807988055127749853292289167056432298804062936653555435002773574758792724801465815463068776612178263548503872068353366422210523694946841803129147625915455142179893256525229164984372164655503046171715680679418354756933948568190062498291382727237063733314557270124601968330877375375302905000458666065115393775985001980241299574368885547201655980200135959471425563854499243977941637298696317480645641835649611961706086308603047338759013980114790118006676458648654934040344142400548899195911697413888327578658688851175449259234204015146825772165610587763768386460010876806660067899144780128980585458498486050060134774086471042255869079733943552895314018768767346670068755253063974621759845733812981050837508917001404433039971743800738940429888879719722032789032572353352744414958968603767414609445925606874565266830823048810770676933082518916615247308650769963520499383636076074952007889469520893094651525307614701445078300776534195271458658643120654661933319467024570788906633360571649837492003799512889247911398553146591016455594218010075513724555874545150086787082537930052790651798957811066300144858455106371826307947479024319648174975420433374959084000626716279569226568594439081586004086396789477140805229043751501120056323542312951737926321877235735914913996771106885471756468685655223612768963960722422730242543178403592512730653108901995129957541586204986193328435470246585569185661237173969190411536963744455489053317973231535816102151692209387506678463166253256748427255152612939374373490497892336019501080931787139480532743574835338284878792836456350443071849124517079708282814044437298390350851907341664119465791873084560904592692890839175621671856709653467138377030657216088346458495003129554331909651018828349471677645970827844610092659017435212835903616196746033025057028617583036181754607527505265145156915470410506790682071708352303854971538714988518380835322105678173900156055910356897513042381483508937842961980161225304561882550956202034776079550133622209227253722849998842871720910727926556496708078296526342129984119761109693088229168055370682490197459698160878225168359328983640522770803808232985893757138451252793719878554146381587949241129832715284164638628327205083947429369577324247974259656591200285342816299760599997325343453887746113000804971059841058142634932629767863224029057643740199869860852268177578424390685549803794805777768828321816077711698044150850387564161363159273195211266593336485672068912471611545555503828635002039882216193749699794930785426172968668007437496372781477721590621442715765093180923013806625623519237937374711524887079886806048451452685056714484012446162628312599653092101079835587808229519810848029768298450707529049027855868594581351120373694968471491325622921276839709147987501499009362126994924173034840891447854850534760007717018397409635389989721942703280358887059064381016959134652333830901444808032621722673636621106845864481104295244621928353536906854484306037465883277840775957049146224492353399079659842861817526312402994884769704689603020779604603739636166608166158691216721969031390843150488617586505783575176219285589177884503871139501493503315056927532546400718168079346521373642983412554286854653491668302783219026411150683690404676506814296062048782453375783985993074773600530807406821508678796048884535057070454725641832804881628290472319378708107612672514958728208415814832848366830770879939252404453831503925587010649860843157237264031863553723731115423243833225146791947855702939079762335792076456959779445036020009496001781800831364672755699695312438929954900086480320360978014700132221039920117199716948333953655007203510534208947542173707336851190033391697173213334983116967278338578042740237971848876445165127559667023731212410332059567408688316981002760859447186074029885560854879276393896939409839546337254074481153175622933159009005807484599017919954851974584592781083821785005276107736054438857737927856937120884899984310863662967573212483017728483751788255634467095976284660372895727900973207840312300428355116015427435590176977077187205781812230534547145024610923191323048599366029697646809970005492711875817316442030817504177259518549452303716064462428946033555861760032856644595430216590534551860765065591027032595210910008411076368147326583568499051675140899438258973699944961369654185169046437778566505363261882513483043961521822263294058027245777275740012119198813520182688767132883689210273201334533673118014437798534485316245391538318773583087415840444449319110606856512447512427810349060960965229304174718418904023965554517483150090227734193870384044342790786375008719255816638434921858068442041606691749879152418145598438590758009228404117127766264078915319545878728346609769951809923039955260523001211528419908084892249955619893908746226668926291220179829726182253315628363003141666323849121632438113963636026816170489507556799521505584106702009070060137446668676003914632974027568315166623356117669864718049566304056730319591969263694104593459765322344772255382701180475436641886868678783624543227744434298993623572900060680979017067990077221899049059361499776668856843365761870317864819462428428848922374612219495703536826811251521962115417657764716996599920443771355936808856994611476907846769440705945577948412408098308194247790251551814007405488547607931512528458295294431561075440913232712872386575874523702338843048545387696311167012267393016243499862701702704559182961184393139009670554985993265598484792846589075913709674891472962734815769679185507332710024988728112966765370082378434820660544834153633496561669001904597457934287983634833285858233443830907814288637924228602612202936103591956657280461805355377341594603036055318976423539874466968971622720400344448054825863644910603570330666373214016807494452805187564132062676258921397872976935534785650666466979058203596663964008877239131749538077378553261427912422051571242411749896064698020652408788498399054601940514530604898867419049351496438038779395408661009142554015099651484475265311251583264780006555449353786535571876736192626391724175173600804803164802821449711193065509497976905374647202115518871632987870116904885869297723779451615583994721144940453975894523447005168454654094792512955530467522876206229286935224412977161135850490857061187099569220880490969801731923939968371712015789551373893696433571630232434930844238107438295257090395694148469435787522959391460491063999682320399157149585155220573365774129776211169850925291001405823548706054737610679934077813002757289010852930710833890387897603293202189092351455389213224220200812392861786079572198529046984045111530589932771644921408568949351465102893613740863050867997516831526923647362713692102368506180725202921498997373446137055388695228199734210698224497873308768594575297220521759107033810828350095765628228120152284513992260771237651139305247739659270616280339908733497338427091680415735990262483699211387602084318185900414399619311359472134983218719924998666805502050740906549426901732133211600369364728749393417316913960651023842430959511253264652006272039019440372374464314002683726896273148383941896402669657964060226983277289594026510720250861506182574611925245076873860196820954418487005698506965073242275841765055662272895065533031044216483018490359334981010684150119460032570579963029007065375193852242835591620381410417921655911808679699101792574638397223906183709585980959164320240595763914940916578772074981529105442754965693025026444579715860229807439358682267593669921082325720330651796439555898405980876598479829844298465640244001232596306871221389146172690875418892645048162202327778078851278433613157686380772481696539616794031556767885577380027308862476883800947813971379945924507762564255570966442195922640677432268158193234943248422208020363463924017498973834663895093591825522157827688503799798956822355457941723297439393436585811615367822230560739947438397685416715810717599247434830137898600384248415491280349563802303189361073536367401385203523086130688457063955625439511748867286125836478963188607731003192120083349188717903595076579429799767124404502580731912584575058518902202558354659537257581450704768143656086238404537693737301270764545835428493176034206742679964923389637539562396171219624285232430392133671282455067288971838373684172500972824178311994559519745977773185377274315387612668976397441534881939098559968323401638901357042031758745222318685425870175763581210340825614377239399102156681676756886304126199512477132209661598167513065258796567396244516766667044117769296076233945430288434551388983145956356854054551349043233270185252479304817744547523647489442750388225710640552607871951523222181135987822647479160843575474425232786723635746624017962010441801682460460846911429363958171491000643253046537377592219146819005387665341190415552719452163396674187225971483647197960216167631640203688782849503605151138399519953056223592845930065765020589667028047478555235402729913149859498685868729063983583291781384695081470874399025098701926833100271744846242068023582524050060108933501814997686980612309900254566123795338465882337102638236069457270509138946913421811976791562523400704102948549106032451197653504432853349017333134595228420504674415338093336394471848456363569811978503849071206389386547743012787895694085415358532891712913369286066906727002487638172447907565640414172498327074182250501908413014543889563559417363729989034832947592196482825280790955025439550978361293168022571329210314775804687773638280215386019801405994354558803657261076788491071425202082643783638575084090901655705454664097045389489400799009505346024924745729201182421567301004430571916568576607949169061394726630519011162277327697372959941859397384603824648805733579846217737162375462758461188848821424664212093326156665691469019112829336542913113790202783071641612742430534416926924889644751793603534790540558697161796514596582648358122270207620367742404487043868514971674400430158941877734533743310880649285086576473788391037431011688694806036177790841311961196527311456581911009317143690944647271732040654178076547839684445285591602529693579659384882891493197912230169540994733315399796960250749876936655523749674175502708680570084371697083686982023025890173668649889446225658735966722221404808349220864', -); -test( - macro, - '-5678', - 5678, - '20961103475860397096620198785828544812451875765346411250885842038327056305534831427524235929264523155549200123342202792959619294498356925569029791517054522023286004576806428127901116917137966737875680160041853755979622047280407769716320420049316833329762005532988708704331049532598407081927588476358096106830430346678025737622384646014143458292081444951646455890942404183781454801771092170042167548767143528488456067477683808637020193350086262620837499156780659643514425992677777549276236748838733016855656036767803970531404652487170875923200639888516998895605428441017745101547422412068987348460209115448467644054468275648419404395337331198996639591442581724727811657252555545825531082415497100293537939448249078775822683882777300250359161247892959517197286724099314650422427240434528774639093971213821558552657313136317745703702089009078172440361842759228550114479452733116278009555122957802967528098994386176881771431841384903021658686272530901973786608204786721041117420281569693260260781545794591991815167424486772633334335112935740169814675786293770425639825077094249010948409458543312552634155954058706239948602914517292759521672875666304364312018937594156108424003164485077624655063004963280160357043967713172961937421714852351728786997474570833727073802073151242655465897621077578606223043356016087694305078059542256401820222791125648819317007287481280897846845478489548491210810983350692374049786882713293346324409753707754423018924164908641564327101470836717142930169947476809752607171960867023783880340917424768781396844547673066773609064248651574496288539173939354153931404464270119589133463933821401953922574158938448014272201881447815841632885101526774501650212127008845801189603638355135409486428091715296322188863520347687656551080147975509615440823847444672761184968625278441257265131960174485819064367376310553604561354630629371249798285268189004212654426527594297664248117535729307223651413582559430948950731935053761900974795521089002020414940829028280569419489831414227882285622096763688719827413987472799210647005984076492462922894315598285699105391088926945250813040451821143186871090522965245589172188408143948195834368520199216096394211579483487673484669778106884250996681597133290790739693751847242221100768244023759346750635341703420379801838942511917350863694564847029339158694426890381897099989180224343864523754112539067694526528401217644323654424427231493800150103842858508404600706382916219260256068179635822489248860978198535137682711137174374077990340914136980156334917668955828893820631948604959981643749170072224740493035859834098207411894779743137041606544382898751128407139489082003820804677974180712232039944683681108546158160055498114804222931787517216194961705600600921002101530486944828893320089698663702374771897219653436814633911298888459476136973550537723000547178216062641659170242351858997391600121959716952009812638059726218252540709679474668997724436632309816876295236407595457518507126861860680695750920654652963320254726353162418187659321568071114917619368662094712938035019186605722392484634089048490456834552767036555584677757558574446800534129195021872811546196149505124075849131199605515302266412472075986121981758995616205249141869256646920464095875775897714478203686225976431026856924883709687572948846561956353515691616376669694467094214890998233570175924571354681813611569544223781951920459777052032721788869612973356209611272860999692421601135843006769446060803502108056936952707032803521745669953368947886400455020197982813897023648803789317080479601810246362997281767966345793599493006980728517888764254888947867564213736366873403675906000079828022438134598229588800533119240383617199914137931213183505864880894139667746523030715098472929472302939576875444596462566452370793967057305702473460610483922270628542439793100970761937675746264116065218777391795769254579066163889330331112744733423405142790082465878728322397848857528516220224146420991983558383260828431109792636682987735128999042469763301989217214843757185512109526419275078060717097555288972272391704978646752898865425525925148946610574643747876579415727008374889238583995957880506518609256410087352303549297375442558667992920688803103146202722246249407948046901012612240584683255617396467408314435847004205877168068226283077754365919306242384808777157837278694966451380135919664731764683570386835799307599048703936473275613236972515229396396260958643009818292356066675853792547520081901067916982728871525491998521513382058653551548991210196432125407005261758774055758476265898632777046159129580237974401964271710584580359869876137967244126611356619072305094409440480536976363305436314025755667452127894209347682659916071643846222364653470873175722549995662291210659162334560246843460484181862192208393363077518809836625686572884061772196633797888749892277506502441191600357977013385504776300311259998291033716404492720409291745672289169990906465740353542556271192233542966467378955571662470116771561584749525830836527785451464178352895390807054081934597059639771119622039654129377672203491023057905439106311615960089279769697340091409307248615189012263871246113888420237101222530953693460050751365447872194314346321021252618391674612597521999861167606501984138883750088324174460600828958999555754255610905124642928577815381854757230470329901276588212295301182538623633435542874680576666352264509760450468573897306825844154780925961121512391772395963933139713039190021107996813065298155982705497740394116136786877280826320702315582767519525968812480806822623479009377991272623849572823287103715254262434467196819571876352232869161557710895323643426054024697392936513538931702107731492975713311800736817229334271317993829146513166265221678058872670454757573140530510521990000183590216202544311048834058740149712755109451126122309764879750972847619124852572353750625754484613228115522998750920829289098099554644037180554427993408365441797464370149734104965776213777083810307981642619540386518150159046829445424829754275452381328601724043449450956030748949308969828402680425162361229035418400544619561607296204881691791480090999541515616010212649557063997168853645599579523842619790074716906017775453082500897068436460404332503814365128244826029711441494116174974844655172720999917810103350411225796563189051529716191842251620861664071037527702847381765521782774102962458150055205741141136106439247547142624381556529650433877764934281678531465410529585976763361537124975372339008916161274767618913876519271418713246480667376525939051541144349620741087940031759796162844867538970077387831434344681530487207516991510520912619511583884571364622210013697048350627846600223329500321002977613397306970367590540778783822774812030074816751772184402370029104045385214602610907543748021786280923450646029057709024071335807175590663303554223846464611978030180007569607921318215938216147386594093783432526613610728757005691521557409476530287282519784554821625290605602981175951476074638525315922123873770224286936370399872701299567171494946919326740256775127284475987028437513344512643223731472467390195611228556080275245145240204853439354039812301589775361549206311675316060841046896944990780074886738787814930150748548502907587826876353074588954972282061956250092436604733846523028612361583744352854099913930684272445300389550635728506447056670977566263911578264334619665006859685788546051311606465170520850052292627918870022043421681580681687815285018239742758216968701779554391176904096742556900135151126780776552006315456063734183800063507587324457500426893135954572619126593168091720910428883991975359480482573972151692294245346527271827960866757765591817415445212833405373149434835366091481859076709340699689283099227679095904342934396597071849631503357041827588692207811689619541022987674906772902279361365116008403959183232244277968153717371380870224724601675215395853317076044589055344155303188951949633122037313447319757599917592415992347777664120565677256132176162285933749924410020763498845915345437059932175518550870149266678352583554753248105512643561027254478108520853968547412343074452732048940948337258955528107066091208271688418567950938759541825412737643300318455888061336920776577194225851506408333260918392790229453752287062094219357308185064469699183516806540942085490353756937701017866352051531856798410752966442088040473501761715035453238890231970013529945683188860755904234083724684800512845736719451852683069210468801867201477539348052542015577484072403704037776579238040836520289410747338939580941699344511302194270338381742596661809385741277476102729401334821325398466231955303171814534873887668780922143864823502410049426239526505466585893420380824352949092066404315279591440868891045752500463965898054919547044239119894054717314737895191652981340489644261093020311422889692148710370782648783605622470403387492804891787456729566334392617608021680405626520291926600181533814037514425472456947855714901443112699002508628600214500147437397501520737486276785876992172931265188844659595175189051513909865093560705009962172767282431656449941715794260678036177108296646748595792902478003711079538568560569329362052983611711508572531810948840324314191268617953219086794280506078381146419144518511359337076537668884246531754894520493160189833787323225134536395026232747632921100895318203838170957249192688530720205345436462911312863754388655934052209987748976917630044613649507982963832646361600102327899814182961925247597766558883415426602825642679231108408717356160761811443138678307765670120961632324431937203518098606674451620777129193461079930070445790621797443406995457673007773949240694361732293871256269440702045044042508400041950088476821880075340029625967767429598359971876420730553017036711928950784849486622452639853318381569541989587912394634477936955057149926195818822162073890615735490958836145860064089782477806643629376414359166374954027243086599306339146161006095540567436463505814151437072367936996320385241887273358613933332829151995652505803301556826697804912428850607413334679395180944373755345498960648748382482129209871428353424166735231886964387990779276298346036013789942626283820173524619459795908090658203843828759290932760054102527111538316976316107885329942413386870965936382594101982473536441345366235792871866647413979193839717006298786289046184792740497837459531945129292724622806109963537972595469737226837786127695843373683711177980931771124939231813651067119584047671610562615594610013918906014074965915938697967519291496645151577431294255803269930598594469775759332172418552542909930827665688050144404349648565099431522182800149383324488601033329987788729015603953218570332519940819306386650225037968580102257373618430731324266588124210598703511685751977221929792590346525097022616738437403242628009366426304027403800405332758340415937758762022018256029841471401813518917716264970909993826679020791028595741882041564058061727313588364708255873250181519665032113898406604900457648507873836669075356646954261077641216790353285042630288932760415550082594708503004210469047805667031578982859227123863848155443706073467171101932882914667034131195237741270122375436214181192852781446477601012439563301881420830604554167146333080753008048466060868180919956181803167095012443813370384688061266418807988055127749853292289167056432298804062936653555435002773574758792724801465815463068776612178263548503872068353366422210523694946841803129147625915455142179893256525229164984372164655503046171715680679418354756933948568190062498291382727237063733314557270124601968330877375375302905000458666065115393775985001980241299574368885547201655980200135959471425563854499243977941637298696317480645641835649611961706086308603047338759013980114790118006676458648654934040344142400548899195911697413888327578658688851175449259234204015146825772165610587763768386460010876806660067899144780128980585458498486050060134774086471042255869079733943552895314018768767346670068755253063974621759845733812981050837508917001404433039971743800738940429888879719722032789032572353352744414958968603767414609445925606874565266830823048810770676933082518916615247308650769963520499383636076074952007889469520893094651525307614701445078300776534195271458658643120654661933319467024570788906633360571649837492003799512889247911398553146591016455594218010075513724555874545150086787082537930052790651798957811066300144858455106371826307947479024319648174975420433374959084000626716279569226568594439081586004086396789477140805229043751501120056323542312951737926321877235735914913996771106885471756468685655223612768963960722422730242543178403592512730653108901995129957541586204986193328435470246585569185661237173969190411536963744455489053317973231535816102151692209387506678463166253256748427255152612939374373490497892336019501080931787139480532743574835338284878792836456350443071849124517079708282814044437298390350851907341664119465791873084560904592692890839175621671856709653467138377030657216088346458495003129554331909651018828349471677645970827844610092659017435212835903616196746033025057028617583036181754607527505265145156915470410506790682071708352303854971538714988518380835322105678173900156055910356897513042381483508937842961980161225304561882550956202034776079550133622209227253722849998842871720910727926556496708078296526342129984119761109693088229168055370682490197459698160878225168359328983640522770803808232985893757138451252793719878554146381587949241129832715284164638628327205083947429369577324247974259656591200285342816299760599997325343453887746113000804971059841058142634932629767863224029057643740199869860852268177578424390685549803794805777768828321816077711698044150850387564161363159273195211266593336485672068912471611545555503828635002039882216193749699794930785426172968668007437496372781477721590621442715765093180923013806625623519237937374711524887079886806048451452685056714484012446162628312599653092101079835587808229519810848029768298450707529049027855868594581351120373694968471491325622921276839709147987501499009362126994924173034840891447854850534760007717018397409635389989721942703280358887059064381016959134652333830901444808032621722673636621106845864481104295244621928353536906854484306037465883277840775957049146224492353399079659842861817526312402994884769704689603020779604603739636166608166158691216721969031390843150488617586505783575176219285589177884503871139501493503315056927532546400718168079346521373642983412554286854653491668302783219026411150683690404676506814296062048782453375783985993074773600530807406821508678796048884535057070454725641832804881628290472319378708107612672514958728208415814832848366830770879939252404453831503925587010649860843157237264031863553723731115423243833225146791947855702939079762335792076456959779445036020009496001781800831364672755699695312438929954900086480320360978014700132221039920117199716948333953655007203510534208947542173707336851190033391697173213334983116967278338578042740237971848876445165127559667023731212410332059567408688316981002760859447186074029885560854879276393896939409839546337254074481153175622933159009005807484599017919954851974584592781083821785005276107736054438857737927856937120884899984310863662967573212483017728483751788255634467095976284660372895727900973207840312300428355116015427435590176977077187205781812230534547145024610923191323048599366029697646809970005492711875817316442030817504177259518549452303716064462428946033555861760032856644595430216590534551860765065591027032595210910008411076368147326583568499051675140899438258973699944961369654185169046437778566505363261882513483043961521822263294058027245777275740012119198813520182688767132883689210273201334533673118014437798534485316245391538318773583087415840444449319110606856512447512427810349060960965229304174718418904023965554517483150090227734193870384044342790786375008719255816638434921858068442041606691749879152418145598438590758009228404117127766264078915319545878728346609769951809923039955260523001211528419908084892249955619893908746226668926291220179829726182253315628363003141666323849121632438113963636026816170489507556799521505584106702009070060137446668676003914632974027568315166623356117669864718049566304056730319591969263694104593459765322344772255382701180475436641886868678783624543227744434298993623572900060680979017067990077221899049059361499776668856843365761870317864819462428428848922374612219495703536826811251521962115417657764716996599920443771355936808856994611476907846769440705945577948412408098308194247790251551814007405488547607931512528458295294431561075440913232712872386575874523702338843048545387696311167012267393016243499862701702704559182961184393139009670554985993265598484792846589075913709674891472962734815769679185507332710024988728112966765370082378434820660544834153633496561669001904597457934287983634833285858233443830907814288637924228602612202936103591956657280461805355377341594603036055318976423539874466968971622720400344448054825863644910603570330666373214016807494452805187564132062676258921397872976935534785650666466979058203596663964008877239131749538077378553261427912422051571242411749896064698020652408788498399054601940514530604898867419049351496438038779395408661009142554015099651484475265311251583264780006555449353786535571876736192626391724175173600804803164802821449711193065509497976905374647202115518871632987870116904885869297723779451615583994721144940453975894523447005168454654094792512955530467522876206229286935224412977161135850490857061187099569220880490969801731923939968371712015789551373893696433571630232434930844238107438295257090395694148469435787522959391460491063999682320399157149585155220573365774129776211169850925291001405823548706054737610679934077813002757289010852930710833890387897603293202189092351455389213224220200812392861786079572198529046984045111530589932771644921408568949351465102893613740863050867997516831526923647362713692102368506180725202921498997373446137055388695228199734210698224497873308768594575297220521759107033810828350095765628228120152284513992260771237651139305247739659270616280339908733497338427091680415735990262483699211387602084318185900414399619311359472134983218719924998666805502050740906549426901732133211600369364728749393417316913960651023842430959511253264652006272039019440372374464314002683726896273148383941896402669657964060226983277289594026510720250861506182574611925245076873860196820954418487005698506965073242275841765055662272895065533031044216483018490359334981010684150119460032570579963029007065375193852242835591620381410417921655911808679699101792574638397223906183709585980959164320240595763914940916578772074981529105442754965693025026444579715860229807439358682267593669921082325720330651796439555898405980876598479829844298465640244001232596306871221389146172690875418892645048162202327778078851278433613157686380772481696539616794031556767885577380027308862476883800947813971379945924507762564255570966442195922640677432268158193234943248422208020363463924017498973834663895093591825522157827688503799798956822355457941723297439393436585811615367822230560739947438397685416715810717599247434830137898600384248415491280349563802303189361073536367401385203523086130688457063955625439511748867286125836478963188607731003192120083349188717903595076579429799767124404502580731912584575058518902202558354659537257581450704768143656086238404537693737301270764545835428493176034206742679964923389637539562396171219624285232430392133671282455067288971838373684172500972824178311994559519745977773185377274315387612668976397441534881939098559968323401638901357042031758745222318685425870175763581210340825614377239399102156681676756886304126199512477132209661598167513065258796567396244516766667044117769296076233945430288434551388983145956356854054551349043233270185252479304817744547523647489442750388225710640552607871951523222181135987822647479160843575474425232786723635746624017962010441801682460460846911429363958171491000643253046537377592219146819005387665341190415552719452163396674187225971483647197960216167631640203688782849503605151138399519953056223592845930065765020589667028047478555235402729913149859498685868729063983583291781384695081470874399025098701926833100271744846242068023582524050060108933501814997686980612309900254566123795338465882337102638236069457270509138946913421811976791562523400704102948549106032451197653504432853349017333134595228420504674415338093336394471848456363569811978503849071206389386547743012787895694085415358532891712913369286066906727002487638172447907565640414172498327074182250501908413014543889563559417363729989034832947592196482825280790955025439550978361293168022571329210314775804687773638280215386019801405994354558803657261076788491071425202082643783638575084090901655705454664097045389489400799009505346024924745729201182421567301004430571916568576607949169061394726630519011162277327697372959941859397384603824648805733579846217737162375462758461188848821424664212093326156665691469019112829336542913113790202783071641612742430534416926924889644751793603534790540558697161796514596582648358122270207620367742404487043868514971674400430158941877734533743310880649285086576473788391037431011688694806036177790841311961196527311456581911009317143690944647271732040654178076547839684445285591602529693579659384882891493197912230169540994733315399796960250749876936655523749674175502708680570084371697083686982023025890173668649889446225658735966722221404808349220864', -); -test(macro, '94906265', 0, '1'); -test(macro, '-94906265', 0, '1'); -test(macro, '94906265', 1, '94906265'); -test(macro, '-94906265', 1, '-94906265'); -test(macro, '94906265', 3, '854839628132734960159625'); -test(macro, '-94906265', 3, '-854839628132734960159625'); -test( - macro, - '94906265', - 7, - '69352828108196345571302714548224840368303639678393515625', -); -test( - macro, - '-94906265', - 7, - '-69352828108196345571302714548224840368303639678393515625', -); -test( - macro, - '94906265', - 9, - '624674733432656449761568667443804634246952025778040170044028517447265625', -); -test( - macro, - '-94906265', - 9, - '-624674733432656449761568667443804634246952025778040170044028517447265625', -); -test( - macro, - '94906265', - 11, - '5626569719411962723650415167546096949953068311825856718044176845859638898840742041015625', -); -test( - macro, - '-94906265', - 11, - '-5626569719411962723650415167546096949953068311825856718044176845859638898840742041015625', -); -test( - macro, - '94906265', - 17, - '4111620266471980471028580099675545097434173613002314680540141671482471036233068045322249236629608058990135835756014486176615142822265625', -); -test( - macro, - '-94906265', - 17, - '-4111620266471980471028580099675545097434173613002314680540141671482471036233068045322249236629608058990135835756014486176615142822265625', -); -test( - macro, - '94906265', - 22, - '31658286807403612933666095532663829606917007814138968876951811776281483501242674522295256018683450991389450689602591230724763634593416216499485344394982531093618869781494140625', -); -test( - macro, - '-94906265', - 22, - '31658286807403612933666095532663829606917007814138968876951811776281483501242674522295256018683450991389450689602591230724763634593416216499485344394982531093618869781494140625', -); -test( - macro, - '94906265', - 24, - '285152493586807715635778250040629704568534899170608577332704172832192470586911307092645490980725710064416470215223489215551076054022142237008690911252732817102771522852071313917636871337890625', -); -test( - macro, - '-94906265', - 24, - '285152493586807715635778250040629704568534899170608577332704172832192470586911307092645490980725710064416470215223489215551076054022142237008690911252732817102771522852071313917636871337890625', -); -test( - macro, - '94906265', - 27, - '243759651578868798217281108206623463735490359085472358472465213305940907210363261308064405033766654095672155830024986524275053959211648897667524575409210697695532573441399310923762601838833141075350344181060791015625', -); -test( - macro, - '-94906265', - 27, - '-243759651578868798217281108206623463735490359085472358472465213305940907210363261308064405033766654095672155830024986524275053959211648897667524575409210697695532573441399310923762601838833141075350344181060791015625', -); -test( - macro, - '94906265', - 29, - '2195591723153842833976375183141740537336638451104209452487233269978099251091719201006853085913307473345723364352547986672429911300801268569150014616303465779606927933392093058172884011727748376587183753730532924272119998931884765625', -); -test( - macro, - '-94906265', - 29, - '-2195591723153842833976375183141740537336638451104209452487233269978099251091719201006853085913307473345723364352547986672429911300801268569150014616303465779606927933392093058172884011727748376587183753730532924272119998931884765625', -); -test( - macro, - '94906265', - 1234, - '9591459179410241572856537719704118795351000902900562305249195472196195265555833412754864166507031793587379195925582803572210371959180740848015702606653712794907807842820287303844298057315437721729780551771436713566743567210455419724786856660298500086372804403816338340320302120440930931829619194880300084268951845577897562834735753784665609019198203233048867661024100257335806608791247129540791927592412584156372409767363191327851323280497596039938628887351085641878361348960836551885434816719856675096140100735098153982014533453294086408481103402371073765234498437942986299185804946033932203517281211025355740639164406513819178508651837986562373156333090579411143890235647767492144926855911961561170349672014614629827840596629153866370535524382716502377298033129875940828099612289849768956366119182226196623644421289199029543705885301848203842046242909504136594099983847607871992398930583777526005880060061677287301121641838813359760623338793918913138129119762743481238358717117820874141719166872107856435512751028932079558518104984922747527693664219154086216948208341876460165162264778277923815846538502672245752434229656583577521062954818225701253649577703058999328419908839977797748333637247291496547242568819156256380939652968563081087936133413669763802314091980457139588435626848957026334101428382680905361934063504702859864753961075493938097121116859339830550708349481985667854659071598612299339127950437953067708898374986402646559951120320721708316727933224792697639478435468027888366917714894730680032991635257046230944591272236530617356025218569172482915774764506872033088367335012521246964352262715392596661114331434581419942425209861303052103159737141838118887593079659533118979010073029109419153504531772178157803880524448253232397504700393645418278010150165092760716226444484244727105637368962191673677518823763517102430372508776552119355215943188635023271972752127662635880598372673204814450697064559754199549908021939030958872733672399702043041508144639801430320943357267841707000400404222832758589098605032942287405982133506381460750004675066342262085479385836480909763864598878090750329455982787911478900279885781537417672577623574196534254896533751763619748632866305445903742663767222380368598056346743790273546285474116657619344057407744566063285106302957424998222958334563469530826042006900334894940507739429822757677948670771646446401475234418995859933358243130008180759536136782698587200342015804405083654362794667043715432498830242795494530307701824122299526072682392416883591382466507093702351999216857924284228844163937090047387165802061654658731296376218866164135568360515357769852411309461140876077518669664598359667926801346716090206666283623307095613238020208838579994957805916629319170228853022067994759954669755848747912031498150020489023940497893018969218903299457329957933615236619153547835202992956280530580346188048475327939781542919126773872016959398231243998998083738131590171425213432398708470769525054179511894591276471224027298513771970571872065972609539084087063890507232242147976054307202299424358550001984668194552970122408292816135793651096260341402739670890290539634652749733051936121647220510837557946150318744548419221954103573224004509428899118772854490532692636349984796523606799588426404592878065079890048662999499258496147403823670334749053718615662500854192465254630734735470592657444348319716921656900540143255754066981370219643196580126846207577613002079274870394367728741824995134268682147619610980271981665849912854000586266885293690909808590352073959622797877167704956570701109840686451917212334062294475098780452199147749227206592489248155417621634742859122288908494376684326737988496746942171234696512068034353612026733019551888985186714851252843134718646972681183302261929938130968961934184204726044095752598480264969769942628031493505879722845317398404404766136527772383991566308125162547193990579656303403990650778044081542434937085597660623254423002156634083383451136994840415138061841621305110130354721521708626026722411562666098237182221903896143296122843453808861853136066713710878415727201422848026825971083548440323207872629926360833682353471434194454802487028406023157541739114399209811757523364508775327465775193793901522174053677751397308082689295814009742424096663245256371127275554813138918104588578788434671001200499772731239526998926007344889536787546023840884563161206866436260069860416345332711835403868298476116559997395850081711369707151087016769352210205207119306587204232943367376612943973885522556573557976798795448483847878609300730594170921845018856616294672752170650749875613401771999207041914676357273072487369912122604321957851850328366064475250473555501861497817846228892630981428024352453509525341771499168825703052936994035249193004718133969293658358477955548441418729299358481051187146133695328375103255617003032549133648324739613350912817202951672035960629467437857895034783268578652695648468049772851048371268571371710174944747089771007951326599571977185536818992501092538130016192595691688560212821744518752775149044137729808714578718821728891394252836114476272385593027217713947689935751224213096850232388887355044336182239209673510124360918794427492709842501901193642964413018899346419597569212619882459708253025895167986898921776318809624757908047351541616537635979411987192357052180741057545474523286703219489442558181392097429272725321723344296968214353129336168551540947872360172324488054726452312277329954745258701008482980205872562874886601633986054729698061958995727041136491083854134975456698587824863774357915870320563386104439619169757774004947293513137570115484537992524054976775958147916672384240363706932507971190885901149565024226836664882553925400415432577255921802822503960734813348624446723667186940497582623354541377084135798028997689173921671637556307023496802420683015459505952557023291016881953450025241190194039097347605093809834451182579729476067653116147891893076896501563815659745545701931892765370873530751133774088803218658236918753605920897832799802629346000755537711655733935247075071309299891485974004737759699085619503402054651496887954393777157718744353085477058515846914858988677376890749563402243352948882704897037289535812374920703566055234002365908807572825594074935358170453507404950430786601077339828001741772715701388696819944246064281597875135795560927360428844682508435674499423211270261087659836015113712490214244874535278179921239117786846524745214093518055485811573243729006472733809020482957747407185981860374708684286717665404920163892211997886941891508113407401561122378383848947830545283520019375170240362580261476918548352375204827546060332812320537368384369528982640547689242779683051606032122941971305898624339279930653319150270488626943146630086882906036938913305489203172190549402764186077691788746463406547058650845093618234570304408010293714213219535645841856212002220491279122623456707919822267373205778074418458267976061672627895374645491069976169809979589349440103658324875263502040561446885715685084316663246874940845565163621245764201813071916375863674116631380809138742411055687043053580097915072331808364438230302858541704366985190788328281686095477247372106110289131615169926634773044198632401845844609052201843461377057755829111540009963815904567488874475681740338761441160651590356825801263089126426348110434911655130477948801617551850940401735494663309897855071592787594192797472071274201046444611408640440198255469724942753747645197415207441629405487586039283351014842032997658344919969847875361248802719615209204137908572720005625473028253292534507900617109339302886404737678812367649587493463409620386788766525441243443799986362150864341695101086395523314350910622578929210926494667836577247786854052224561095458041243543570729768588208531982249642560145100850197699673538324491374450242541091046027877347664044916635890341954130056571906109165828535910311660771647040322593424704180434383930722874810909784652987805377576186746140110566133453382033674431223623092747739626762801126711107898439074620801128156500389898936996902615531151609058915444466355837620116136849729671236565382836790985391828355289305589043017696181139493265426855262772003107393380496127707409944678929356424852897833059161296871451390447310222755068231356889186366469835372570926617460311594138251684705497261398939078673207680734548345027894574941971300910638001809666450203958374908000409224916792685389473093574017125721717855356592625547252288452987636361999067948204782699004847095167966877114318996122727724865218771091724949902821421297230591814912641664070615519836632113388811666884300494853790570587470323050363662041264565613231275086236122271260746561199518073931788593225451290704917920481617412178007269106795348325460845539920221204370405830516943074642362921654055465455434800928688359132339475448945798039732615360945805966700833166246956944923319302325595161448667877444353826406797662051236873687719391027503115161380602709771074129428752412878936468150571495391787113477904397126993393779245665340705023574594518096866873547398021846631398029079316126818030712951745225590953502758227266035049083842517044023925565469150691931514472336278473983933149135274596021969827799475964078993259558154187436736832028197629659375815060480641327952346293832946391116546119290464690718192565154980905423079687235355361273794723342189390564486895833368653165830116560978445940636491307093493704382996066787778813694371282496364727933852217652979786611217060627813202623645589310972893162822106395194215667804608020963575035872246400412133950584855358933001394534546590988260881555615516326633872233229193801821674081770373019020873454877625370262143702522777839078500945310035409751056192714470577586167708182037483154162989501269631312341365910403419220972928202706029721636727127333412883747829822332644925037811467375511290618736599996846385043905631496985453310344382771290838718414306640625', -); -test( - macro, - '-94906265', - 1234, - '9591459179410241572856537719704118795351000902900562305249195472196195265555833412754864166507031793587379195925582803572210371959180740848015702606653712794907807842820287303844298057315437721729780551771436713566743567210455419724786856660298500086372804403816338340320302120440930931829619194880300084268951845577897562834735753784665609019198203233048867661024100257335806608791247129540791927592412584156372409767363191327851323280497596039938628887351085641878361348960836551885434816719856675096140100735098153982014533453294086408481103402371073765234498437942986299185804946033932203517281211025355740639164406513819178508651837986562373156333090579411143890235647767492144926855911961561170349672014614629827840596629153866370535524382716502377298033129875940828099612289849768956366119182226196623644421289199029543705885301848203842046242909504136594099983847607871992398930583777526005880060061677287301121641838813359760623338793918913138129119762743481238358717117820874141719166872107856435512751028932079558518104984922747527693664219154086216948208341876460165162264778277923815846538502672245752434229656583577521062954818225701253649577703058999328419908839977797748333637247291496547242568819156256380939652968563081087936133413669763802314091980457139588435626848957026334101428382680905361934063504702859864753961075493938097121116859339830550708349481985667854659071598612299339127950437953067708898374986402646559951120320721708316727933224792697639478435468027888366917714894730680032991635257046230944591272236530617356025218569172482915774764506872033088367335012521246964352262715392596661114331434581419942425209861303052103159737141838118887593079659533118979010073029109419153504531772178157803880524448253232397504700393645418278010150165092760716226444484244727105637368962191673677518823763517102430372508776552119355215943188635023271972752127662635880598372673204814450697064559754199549908021939030958872733672399702043041508144639801430320943357267841707000400404222832758589098605032942287405982133506381460750004675066342262085479385836480909763864598878090750329455982787911478900279885781537417672577623574196534254896533751763619748632866305445903742663767222380368598056346743790273546285474116657619344057407744566063285106302957424998222958334563469530826042006900334894940507739429822757677948670771646446401475234418995859933358243130008180759536136782698587200342015804405083654362794667043715432498830242795494530307701824122299526072682392416883591382466507093702351999216857924284228844163937090047387165802061654658731296376218866164135568360515357769852411309461140876077518669664598359667926801346716090206666283623307095613238020208838579994957805916629319170228853022067994759954669755848747912031498150020489023940497893018969218903299457329957933615236619153547835202992956280530580346188048475327939781542919126773872016959398231243998998083738131590171425213432398708470769525054179511894591276471224027298513771970571872065972609539084087063890507232242147976054307202299424358550001984668194552970122408292816135793651096260341402739670890290539634652749733051936121647220510837557946150318744548419221954103573224004509428899118772854490532692636349984796523606799588426404592878065079890048662999499258496147403823670334749053718615662500854192465254630734735470592657444348319716921656900540143255754066981370219643196580126846207577613002079274870394367728741824995134268682147619610980271981665849912854000586266885293690909808590352073959622797877167704956570701109840686451917212334062294475098780452199147749227206592489248155417621634742859122288908494376684326737988496746942171234696512068034353612026733019551888985186714851252843134718646972681183302261929938130968961934184204726044095752598480264969769942628031493505879722845317398404404766136527772383991566308125162547193990579656303403990650778044081542434937085597660623254423002156634083383451136994840415138061841621305110130354721521708626026722411562666098237182221903896143296122843453808861853136066713710878415727201422848026825971083548440323207872629926360833682353471434194454802487028406023157541739114399209811757523364508775327465775193793901522174053677751397308082689295814009742424096663245256371127275554813138918104588578788434671001200499772731239526998926007344889536787546023840884563161206866436260069860416345332711835403868298476116559997395850081711369707151087016769352210205207119306587204232943367376612943973885522556573557976798795448483847878609300730594170921845018856616294672752170650749875613401771999207041914676357273072487369912122604321957851850328366064475250473555501861497817846228892630981428024352453509525341771499168825703052936994035249193004718133969293658358477955548441418729299358481051187146133695328375103255617003032549133648324739613350912817202951672035960629467437857895034783268578652695648468049772851048371268571371710174944747089771007951326599571977185536818992501092538130016192595691688560212821744518752775149044137729808714578718821728891394252836114476272385593027217713947689935751224213096850232388887355044336182239209673510124360918794427492709842501901193642964413018899346419597569212619882459708253025895167986898921776318809624757908047351541616537635979411987192357052180741057545474523286703219489442558181392097429272725321723344296968214353129336168551540947872360172324488054726452312277329954745258701008482980205872562874886601633986054729698061958995727041136491083854134975456698587824863774357915870320563386104439619169757774004947293513137570115484537992524054976775958147916672384240363706932507971190885901149565024226836664882553925400415432577255921802822503960734813348624446723667186940497582623354541377084135798028997689173921671637556307023496802420683015459505952557023291016881953450025241190194039097347605093809834451182579729476067653116147891893076896501563815659745545701931892765370873530751133774088803218658236918753605920897832799802629346000755537711655733935247075071309299891485974004737759699085619503402054651496887954393777157718744353085477058515846914858988677376890749563402243352948882704897037289535812374920703566055234002365908807572825594074935358170453507404950430786601077339828001741772715701388696819944246064281597875135795560927360428844682508435674499423211270261087659836015113712490214244874535278179921239117786846524745214093518055485811573243729006472733809020482957747407185981860374708684286717665404920163892211997886941891508113407401561122378383848947830545283520019375170240362580261476918548352375204827546060332812320537368384369528982640547689242779683051606032122941971305898624339279930653319150270488626943146630086882906036938913305489203172190549402764186077691788746463406547058650845093618234570304408010293714213219535645841856212002220491279122623456707919822267373205778074418458267976061672627895374645491069976169809979589349440103658324875263502040561446885715685084316663246874940845565163621245764201813071916375863674116631380809138742411055687043053580097915072331808364438230302858541704366985190788328281686095477247372106110289131615169926634773044198632401845844609052201843461377057755829111540009963815904567488874475681740338761441160651590356825801263089126426348110434911655130477948801617551850940401735494663309897855071592787594192797472071274201046444611408640440198255469724942753747645197415207441629405487586039283351014842032997658344919969847875361248802719615209204137908572720005625473028253292534507900617109339302886404737678812367649587493463409620386788766525441243443799986362150864341695101086395523314350910622578929210926494667836577247786854052224561095458041243543570729768588208531982249642560145100850197699673538324491374450242541091046027877347664044916635890341954130056571906109165828535910311660771647040322593424704180434383930722874810909784652987805377576186746140110566133453382033674431223623092747739626762801126711107898439074620801128156500389898936996902615531151609058915444466355837620116136849729671236565382836790985391828355289305589043017696181139493265426855262772003107393380496127707409944678929356424852897833059161296871451390447310222755068231356889186366469835372570926617460311594138251684705497261398939078673207680734548345027894574941971300910638001809666450203958374908000409224916792685389473093574017125721717855356592625547252288452987636361999067948204782699004847095167966877114318996122727724865218771091724949902821421297230591814912641664070615519836632113388811666884300494853790570587470323050363662041264565613231275086236122271260746561199518073931788593225451290704917920481617412178007269106795348325460845539920221204370405830516943074642362921654055465455434800928688359132339475448945798039732615360945805966700833166246956944923319302325595161448667877444353826406797662051236873687719391027503115161380602709771074129428752412878936468150571495391787113477904397126993393779245665340705023574594518096866873547398021846631398029079316126818030712951745225590953502758227266035049083842517044023925565469150691931514472336278473983933149135274596021969827799475964078993259558154187436736832028197629659375815060480641327952346293832946391116546119290464690718192565154980905423079687235355361273794723342189390564486895833368653165830116560978445940636491307093493704382996066787778813694371282496364727933852217652979786611217060627813202623645589310972893162822106395194215667804608020963575035872246400412133950584855358933001394534546590988260881555615516326633872233229193801821674081770373019020873454877625370262143702522777839078500945310035409751056192714470577586167708182037483154162989501269631312341365910403419220972928202706029721636727127333412883747829822332644925037811467375511290618736599996846385043905631496985453310344382771290838718414306640625', -); -test( - macro, - '94906265', - 5678, - '12032097777224921443610910803648284170512319198440026582654592944907996997711020183354851559738136209876116410482775406152550319519617501575389742141362538671375575270130368782344375460094542930957208982333657039900983512378934606414708547255120509688221248878365002162079958544994081468523927315675060726868126226367119441190130650764598697841259026377226201673036205220245238076301842775410518683141308488299366012792925609747073886802877596666532246689317196865573110094049146280756613633385237048709371024252858686340623252312452593430321228085552943679754605680459379364986804128577790131289118408139954294866373981926459619424848669839958145224015329056251464187884540803724925854941893314508739139448540059027532063346594260009340289063635135268446417517177773306225826478834782126901952841733199463653563757819068049198556549112038207670677005457584687670138285992773936407404706326519609992105860062869525897101616064153489988499260854115519937665672793315389915719723184695407552227493961904033933034506875702096849362495327673029771455889030501830242732676146364350412302869011748293967864940422889128153590781271839942018607109535085227963257602139998078826097049418704998656236212402366601095688523413673512998518901468183798514551196413118699461621524416262734189234150826938615238369409717915433788697444341087319545108423271713647606132458422133503476646278312763913773672381574955638642484777319177742615693192492030931928334799325795983171516582124249978689831869160939605527534908432774284025724078112334305143452973560047389979442428241832752514170684582991619064835042076127845136974614077376818874608487426791468373615242293672741372298898215088365221162041567250511944704729950839359617629579145185451647138688599424451528822613292149181525578785717464355469269950910358964367355548167095991226459148148416836033320461350750016925333661337306860380813570244138594176200254338594713997700943753269483275676699592254818599648860765855658967021173586910470760937291362350281087625944947663940083612371308499706464739236243824369828191050651890831355140821021009799707142643546563126154302728058269983835130462112445179485724829519948644797857100978445782729948146775639685486727347085571030457542493031359599157910012477405633462126888771916787753215333242607039830155744016882502462503818969602202111471162936075917294595421685134910453228619713406894527040532782467138493248067630974131210865224589283318665338359787682806475430520542164582197378961886474218909120025123091615456874986351962126541772414045818060094363742441442667036502961807091952360039303360580900852680604055434020409419268918051690557813552959236488040160958755768871367230392867382735702108578451240872919059355437258914588914059658578625910689412928981898994374868014765744048731178533977420205065542882559318334473630109661521143300821787590642741661630560532599207482636782848372575108230527673435955097474563225203600719908173095140979638933646119901238452049016502626977563080111918315881318986264803301054759949431314581482431408037019249299434256675011740150791380650719740873599060034519923061234283942527829654746500679243122868491752528092330799766780299772695603288900967560796775174207884494845966890228277702276659444815563795433225980503597587408498869891219703208161074827864088098815419234882655313426926283791847398673264577617151571464296912550417563804886979853576821080050211194779490844153380677685847777313137638651644748358202947322079765399238487437874318841114773978903668929164955398911903679705111008999142589544437065672589266355348348971511169575378316208327903577552525930641088538955350354489078111990562226354820551745938135022897672457837517586016736813649699772486263689086502957138019177196070312090344215367177632397930739405411088757771866673597796220471619637645139435250941374184393351858539017096692099099345257001920271362387534252371917508119267325168864330673891152067448719178429752412191066355929358566249659077077560550302293786857736765866388524626228805050725063109877803065961191644600499168820792325163292525536974162404755526606943846795314338495539699560103980570000575730832399241743616051296198894674663823826249501962992317559847798100096759179383956869860153118427566631515292600888345422893802197242997389457528273662177569851158066854725418877583679801690209473560655905719642363040982739123254770408905429249758124187443434793269173022194566001870880813212255626734666407333284872705324976206677741658696075649608364892807470963909485110281558432545948579534204538696827102504407100425376019173981304010256984425288381928914573699655169020850451341503052441205769215186509836760430481696523650279090720163816251521349287308560407457609483984181328774565719714613388489095110023571061353122279353104129328013968956403235071785261847838169630745374996406189906650415573552174116649660276541371408913476854939747876731425608814138059458169543823165972801614100937621904382981944188903180205906327482865751979701901540575440519486923023420935041930682172192953852334672415568738221940582193314983240970450000477463045431237229063460109818726294597730994303217381825651493935869034862652936559019431947352777726119926158367810617503147922958376143964979603245915631333786351234314954623412494887023938633377421208202061177648550247361016141144451615061150414512561947705053352442969412639758719469809823355676287459924284669684459858991524522914802929760964195910108664304507593383032621305399692953057899447189106733091012594841503936991785388985322660311685783354745007380474195833316048135155967714601451196311606046191001166178941116722830537202351353675803239601270737264305300314769429948779160815303098446558150519469320909471850141905795161388126098051093418801571231958217059570635407936987518675272606139316846781769414872368547904423404977322742616034539497477291204678516696339549373290014129953927115273383862176648175885100832898131993707682449845814289537783195056908822732162500604957529260337740262458814285530991622691309191620743536827546586516016261289544348330822509040619411107336690611176859744962777081961711988981244490119102057017123472693131597991997040909096393811129374410032160780720267920557429521283544362429347063129854641992658572996108093014481102752542992814642875292835964120599399273647779564854999067324549593959628020136971251523507807754590744694873740047390084491259174712701241947149566007259569113369875274948363558659130833317516389511341744440804095510223434955552652210614743910169826529392899468656662706962138458679700014949089569408033941330187462290588839847072683578505493439388126630655399425769894783841874574481277512426591408213810373551314332889400820073202400253692361444659207630759168415095760789533492551330583140574981012731074049549919118053417150217808638350432013305694321389747006470410615077305764765120127628910927114025496289209479659319746699938956841225054827585736797719039052465086433182830701745898467197621237268086386733129150280583409523728139312677689819712362202660229834226632997964115903142152545104059172086002463963414350578947905947216633376664142189791562053019113774134585010114509991806040543148515641482014416718677876276580431730562587541020555292496453826361453188845475398099905277525052773545411713921648813979140016300112385588170999474985918656553076765214200080620922916851475745553785133089372514034029601819219527045772849932738904614873836099307092123571006738447715320002736785859704861742282537734067792187177608073549859135742645615364728840961736910729008697313304738536298720611573424123582407824500642154138363464791319257510414579292323013964798548950290960997144513319241370751263381191179501838180558724038708020579905145157293231789686223459443044018289699299028761818401590134930047434655260646434988879638156693278024323812521554624956388982330136290167049424094118582772096018451809597401164846924711716262902829627380939680535156293471439360777268668365604921618839689307971611636791474486517596411076810461187507596434260046979222951771970881882637300844957670414379573068900594030059669462435172746064402491699639256585470646371028345111692685583568972301562562922256758180181085480072911408202795425250027969499463641174613001079713276428421215191667447359883645715478755796737199406110184987838747951054762875131236948669154666701738693610353768722184367702584486223362096024384484603104446694719810676365358898796150078397378880308527506601302713337537470154717940902510142689198467640659012705019749229659196945434251394512811731664749976526521575163913656404283679160697284832403491752877439284481271499113105959231314317691378767826586965558827309006336474296703042302766970494721137069514776117071812137188441976088074396467632977148030639633204112209971813503021630520258087179296520213138286076436343573116739144719310772751735156402034501606390456169140121695688607125183103173251813914671347610021351582630598950972263101156473693547645926791369585126525848123770842541512577658666859445930626122772214914414428878443618845511938720224570647898061530301191130932770667765716795587750061205748309356694807519519675049350933068580375053894078242210199468520630330003161545121375796842051755736417199147757963284334866394276249640731433231049313954526161951624809572619652276996303120934045809848958441871638077879356764855185283339151315501229746330405881302263457753882789573262935098772141915955008754732738429440981828735729272802882701434622480077709131642461504208927055033641377102447767720176633847373823944955329314383832782143590012811927685177026789234911929577093962457115800486427160323294733691288587100842884523422947373759687195747031917611825381748929965338560830322621555697476051991779833983757024224308964473525520615691348057039080995096707558993173247103410555911126189269896588730810492029064501420933855518163570985872578414596537490581577386809453787410688705142748561393081836124251051324584698861388478139283569598076892767321443716553246412277259380509438802329441648705346383613734547877712888220362688053129344779935227318331396329401655637306388721745349393876059195313192731747216875912473534083064724394534423226971274516443125664390773514132844684527673669092932331255685956744208760893026251638308006285281531125557486527757107669977234989257848144696133615593927212707645061711788280447683309281341206400131653863420785992756287508115967050826182726890127091142835164557166691300678394990747493429085386293564966123136506231068567056989317384966475475729360339009395818317246772969137113875763412531168727939516546447462848160915288609593976373135718583011204195966912413852164206268427095555948610761307815791560355585910426147327321102341134387395444132445427019438961472388259276810758042673037214059651545259592406090068506838010231567454628094637254355973489738412673187077409391969169545123360596500128359039361514821593508030148522205228449973734972174002553108195263247639174438853119252163722614381071194775578403064409455019374052283926424489955638366392986417357495741112108742236903909428659619606212619900649574073585165166583918297998340673134762427650800452972036533098907970092878703482852833490281729498858731156264911226877099786698157523214591321994816532369903053664184550576973511700913443461257437675437472098084407017674888009625137498476466436818879720524380130001916537522732804698998210196055682123318139008022653778279715652658727340997456249218032227963658719808122825441145385176983894549215846317551213773007016356738334267963377888011544300061222386574258747191915588698617637837212717814756142051324008302080298650994166585880612515919258375738246207644772437177730335392539644865639849308897774064728887770437363216880581815066468852825832858170229658070845319130874032026316629150366399827042959910139581792401984719737440786491444999030986092724355755641888514009652129027999591099530921894279904701093752999885648973445224343373762636465568559928662660225367743242647517117639887521310379396989258168883666755250191993348321142152864927369234668649063028652063843003316973499048911633219208658516326528768740257621395512872408369502229664467552427061041482906643131699241509502631730714053932028098939427452444970068248194791910834306048571684029297039763506306003677920029786132935369270257069918171451215129218456327859444234926254208150987962386182798994154872735035689186439260489113584084457851762452138367055101379588122088844841306204874692945577566193189114109700874804492781437652540985226374341144719703543609354328682925954034266359991157018716516446223344660092640717378693207071014181491854379467954573981289282127187230877577110472130570576015105977305257910229508244095738723967730842098391729083715169089672956523592451123266861612656114937473953741130882127624277059388150081629717639957137442000516378123556553332349275408205751508548209994904127879234614825403357223962515911129518982040378620086754855361296612014949915205044289352069213501405997863521354165348782511867122622716426639791821261702368775506733831743186020155130943146663966007407244597917005719991265853620211871215693990090865326620251912533146988791177682866417571901522812420520954626741756852429297080414669100168753560040054760117697607946028484195290870973497362267381612404260749108299672450420697873731172732775674054385367218094949835013674973757423265370251319346466334678075474375906897432558238767579231146265140826352088422254545690686302743333477665277149035167938674924154842983621768748297426546172809743534122395481353193555875026625899972752500022321576082052828487883396792123138094495203111492864041134795761256726095663499686254762052539889279642048007404275482585612511343844033096850528226343612783861307535354140366802884442274775822100977205037665851810599890007341178775130240696632601594694061697231625625860004620538862779963203630814410243245714819549757828073441407122131050844039240224163642095196215306864657309686247074858678000635402415836405930550459058799511632845758556493533762990549187485016639012256731683580040073341731704082434264243561194791703596206015014846543656970640029940075455836423615054869940691591288967540111562931377745992026685841553681405592390900507543705586848434089001303884903488059141717942395691356277350339460187131843419289217935265295704356916529054605633813938893737767409366779159372882254232836716324580262988115146013874569597106960026911351914668502679283163961953086528727793944040518851106607715147835491925402383222147418855338357535739845538867786357060338435261036202368258020761466669889670691822601560184917436779215254347489960930087319530836518444337988344598187203191595434829132950413104197804486083026745302512606864460474736420264409880729091060010368627194325379608471121667642965001108323387523924855835054547593985702842329940726838791815501738849577938132081507924442944174718597397264098866829822238109143654804816673202408821440775080110551433710513005759571403757096182158076893681914376156120366821040079723970732533775297717113208811739667056486197044324270922989003211680035846379754027311741122863788335461268176688251174205660568758427931660106752538935307255339039355388757057375250425837093302168454705863145996845095042151313295262463259661279787231685169235050323016586688299833499115629856113737828434665438782484735547300584910063985708776012855041724554864958256185127598519785482694466456563490174364083687348114832431925384869094951858531131186801480404938023454443571034693096579794784282688250620550447004592047288521549204059159028509660096017875307950532319742036173203952041761503785819360687983493313089577551873561446412395575710594370027055187478904534143877344909963663735297933632031693194441131986356078620539658905801102236737444661108267332204176723242428802368200731035237320543765666828751910067807455585241166705139054718355894926417783921107593070742530185305927934025258466866218767376534792597033669822057078961298957496217109258353525748391156704355202862658731864850654926248935721796777991022299873209352867958121188810265931762818554937603100731645526362256769968645627563740131303913187747664074382451124596816950157537126085105444310397381169417181279755364952019062060800318321532221104576465370046063753472086774044100444414676557036622159972786835290325849755928597463426695781953163866965969052547199558811862459755929880206105062693162596966564969090523328485578382332426358809045831759393541573654498007053609291367872036111445231279494806931031841205524707641695256162632063010224942774570614275679640385413454072868377460757627086865145342680411059337436108163325287906190993195903620201661214403352143421814822960031390185721117950110818389291340253326486009897862116192130278391424657241044004963932456332370837203044676250871218583290978562214724386902489542748628396358186325956900204476723680860137151218998668021260767109942583224787827906233417831491624545860788315526165511635197037561922517899904690761031753872124042336536173826882605457634858121101471892751287742889625763093890478605491801544520792057578574375773201143929421480324074646141024278246772158921139478563054405229834847395540267665801516476465649906633858677249697918200443907759577085140538201853478765762117960994914145101764724959407470640463811314680073362866017160216055901670762363844476940433763519832222385027792750981080965530232813715566803117769888159323419674153708883977329384943689553768541789213946129813719122880362388613061590039120847635432704222352763497996891937276538781966653887199495265671013361386797466770701748928272976698049303363099194915667274909798041151694131302731875286034428026186929184304362229619692102502128326871687296959400302085212456821262169947535776150082836000223031048009020371350036539197512764290221947644788009144903781547616778821484803103102745494206849074992779830389209747508799417151536020207175883478394172905960788120783232579015657004053498129914455441618389610549539868266323811924818208880604509127630703993255747870363319837810567597787888248562918900718803552796004261069194657586185596777323973185892714770276436504734272537002948160990428552665125608477771575963058090305035115286941440877623389294911460277602637191173693793231079024899815378902648788493885795214168271309254640593363869703425269994239287771226535309826739493886296423210090644214129966601915093662511467744154185692679773644695709701672608468044373005103438648018171096398607426443413194281519283533259981445906676653664312034448007510997631193422830884833006737772887744686368777653538919592111949951373489944710830951650076413715452663964540719349734000663229824949598114271366375624217568372270930581796391817021771734034804435202600593398262992169912934443430494160632096045871344133239156139910775140126053555363620216919941247411877562901224722321989970134286623258958498605964077449818088184783496838986907729353462388738014823594316384752835667377359432034427008829688816033072344951707746090028382556104976370057205866084666487901937011251702362871920843956238611037186048336332441746362113871081603050950760137657339038936536596933851722041992305843336304901453452571715630307405640050171237176240125222557358332930710738041186084749584740450846611590610786726669986270473854160586469256252168384869883596851589288004569216909578136486049118663430702671507574735910444281915534186018197115110593685299825714958042538520471370923783862810373944427764167480823665142849781516572576659578160735209456505359366276175015044857079506949581097412535399513752605101582122333384186945231604776461746644687207899376798357792653596666581824693709787573041587757626825069517113369429081460885782112243077774167939979145984687560083045973141222583991194116736510260934423567193666909628226271067954142670416399861275578343838128155755377702692215310376282921807545085658277051619371602033888713006177339575658405744622442355225853961935039933219714558173292667708157166916833886949301548495619142336871670282820976529735014754467417983365683174117809170080328865238203402509223643245295215135732316886815093541440338066497831425192534469707791058531207292816542931530093442001376701232809955022738734490848042941077563991314157582176472360317911138496886256725677367798535879492979280051355429572780533908274951671490815885229571886451377910940010012673321183872398403321907312091527491690998932778856646700965310668633894463320063118790564548548680468929222591042338228420943806756554406415931090291538143528789629740994863591079711320495984207677768776056308656173482219428268311986921414524482951641166995052008686213317172019535225407298322183791610925122947801778616107589077345869377990653281139028741071735597803862826823503904687705298499157856081719712796392689492483355489380957823523151647371561894369978535447318492691386953116508279327857453984504066238005909847859372464174431153967057270158951933229971026010966691002647873844722520078261307977064543610448466409873414879293871473093770897730342188974916791516079659719631290440856802730239894028254762897599982086201797037774350455318445666421091272654386376102853322186923651805632319156209526417184248540024807358600433160247811092932618503532768368430167126161193398063991915395134237015963224689432846551459273641605647876407353197376326052974132020864262566344092487103313843164740701039613572905063871725731123431656363638983017301386812075627738970033704925617216698715754404765227506689591570815979652750336513064156973513088297698696477005797931273090405805324066030602361512119840369813400472419573729403873434074573160162870936318068249575178675647763166913751293933551646401329625534493843177325624465230372869642679078724392280172358972274796335813356986697385312329187363931167837979111403879151351225430729247112426650129104919284568825235232455725351552224363906641354967564821570365975247995194169878249598512813403591842113734352236034910030599591245451967209058347539059536190947433656585914973072966125316763518711707788780035041883398613275851057398845335005672095171230325334135754312046899114278318582949758025840627034073495122556098906615537245941205241050630832317495323472933706045476448135324622130249061967088040634256046633681463998139104615271598326353633335243659421316638748257095222430616324419633409773550120132726761874278343852462953247386966597193056825342009690607297567265709899931944826256174731047305094081727770841080440016328196894856028563604702780682709363667848710891858610272205043503944199299286748350079640312927864906304355154798671043210363438224540663084637003896566824195029371811104076856777325671062014465716574261539700730333018675634121018453203461781631294981764229198232448947654253783388204297001920517253136683270888989223979423417588630101697507592396076446071605672776440131159545850932553540460963555258875042206253533925856199633623872569538946264824099914287390183680108014685374620969458668067114850551017647802720372476318759518097294889667098388787511578895623400536394696909686982089754739465395458755824025627145860540874654096413723593095786861445483207390022439985873830588574664429664328016256793764664176593210650680088966473569586028063185778696846067901539484777171526008932126642124726149000234264622535507932061596730778639639322994194566230181315095849815600439054976860942354245780811250583700351160679186551987899007553450837968473873566770319473147476749953987063615776202643846558316122703715582310812032981020745887175302830579849877162396208954934582206235358053066687144876586531305671914153856979556448429896161954702428046020131267519937687942784998876608574424998618033186526320893410380410615897192637383212667814571224040666584728535219469735065470507466917541842491727590582415179332124764074275007615003561577219703985592626963898540408123901920954693863945334300894449076898006775718907497203849104045111950488579240549422430862215686448461635287540273933678378844195074450255145986318612166430395304017670650737974685138684856887920372725287537626880802277074988514877737086561392592097851272353742818024979368746610359299993821608029744496422263548547379227059308330732006560207940874965636535953389748254985558222428424330864460444917636632197361629108476540664208138353154832367022269303011778867713003519669926347227092605460218997631456886988546452742315709205780440409392361149984816382171251958377059474144369328217951856030362908523108523320063836177218545129144151675726728971709295080995491115727738994384523099426017049570788092605348295244510790430809310252002021162900702972004743370313805442485273713185126694838015211112954180162169003605131100343992572258878781008043930175009769360708537294998309182845117912092938413455780854377238800073118887421690605050678371370274063825715320860910620948562818451293617405229491236178678754278932510338478945063584831864172120232848867941761893175916936978589066485863729545344061035238414543782144041420795359232419130120814019590644487393845413057769719569362935783498618412118335138847775489214231071866809710199171908881608454495198717226829803613782208248938966092151102736556383497239013516522084118430594971074187519260946766667423607181318562263393260060663288717977893874080349690289502370587468658530985736835159292642558195601284611160860487456916132188445668274130918453531643472494048279511660213922482152284451162576937159479526872950903047337162660821805029600708501290793495192214286757581386114297917781127145691164585515718567911708522043336429297534300930577150477197470794166974719236537212770910044441149771285775283181049923538686195299106209763353070616873255072368061193988813137514561690385137083968163734396360347928328336563595006220960934830733065521338335841965986235454589498682179372157178621143188814181528148836823240009313917239615618819685916460559824760451892578522401207920356914008125649666362232615846019270768411703026907820785686893329687936007326486259085396965025670221843906365927274024874373060432645146595290306316201392153119798490572148328091329727540219633346941261473165756079426541378711351627269272757052944951094355168530350261245111562524094741072397641389854917843735109228705666266863564318304340300463039112532153772402056001825404569674075795960482695655750098767071905821033260887679978762025881061325337213163524622779581816972175555663637210876981896507755878807206231301747997616278339215979267473884231317543544712452852114555647618822488813490625396727766305946129050714786088423305048954173700588940427019522843104010086905515156909811517470970474323555351456229248573825599238197370105299573364893745750391351067788061060527046812509973058875643642096985994846004078611902478115985749938866763374390207356150215198771166488048581440471218124332859752158358015616660187047654002371295814353685889164385419937001586245963586686123227189249339843703303467679680488282425879611225214199203660669304537817806007418484543257294498646404096533225791315505537497715207372656046521498454410484618808462877318221533855177115026118801994635309492636704866960405453702180044263190730170186585393782170839546858732775601817761449580514710578003629573446698223526303276734226490467503004836350690787693180419256606367206975754427565647193757103622172723445912571921412299915576801160624014585320520435926902108223783097157413714400856842549485204781754909051139596113033072378955171738006815746107126582544226522618574999884662865437801703547910979352686377121384449362061338382596983291230994834971550479538621580428614474707245992895951108596353356806792208588625391355419712148342585326639448556448414437163323753111363340625419447936908942309059384977968558654468049438582343818038934475031358918368904553362235318960285027300982643072000467590624020979094167872273398935195854660177797067882015023199367866518380157778613872943331744050423399154264127572590316747837829937185838805929919930426357165171535205844319577554107598132285773629025750828527147869294916738495703358765482635112741426231530287972819515170191843245039795145568805407271280931405842189126545621691903281208244330021380936941534090926737001841378878232358824105952882091391122376983197385863111377095821200758977598655636124137542127167825095347247242493240787156813316762909697688864136617808861689815132468231141188094757116163402600963896457848764885057333264284354504937279338775019887183472529765242120841857211466394385600886129299536196104160966949461244421470876475635289658360673044133988472412908346503168644044604661248748712465204802503052422913247662994388842262879693084905772957000634196203224713014001316324485989167462563998596759472917793384738934828062167583801086989253946454905163667273365009826486005589759567623881215672865627059042146648672881327891063995694457750315379828488812880269962995872715826927673202525599988948924553574496455072613992039779209442466653855719582532255207207153068979266405561447716075597208003386115629512060258961979286373743813337931101772517953360698302031325001844985453129783938956301615754527286888929780663765211591009120443813269934515079913668898214910192754399304618341831453870034267125170721505066917586198732535221716916597559836503614379370118425547846931569036557590812044714028782560536961879256523449737057538949699208081652250218260123107062251099566298529927581162698576168546631586946049600127140987141317674460410902993224596022062324828491276267223741714140055313279819368014780323282408383224067009467800172584303162404423355760504326823431706740776861818994506012773534445613456631600402675225760377368762722021968052635826828120651984513278838416227839164392949867613026178865022522692004106553797610247860158988661216559547229327484286711157186964559739720520556436315158359781162799170405180320792416230576841207330921642427914971360147358390054635718803605053812837473635557695381145693736966197784412835427730682455377495472116907945998421668486206685639652442308850167256008495070585127947385980542764963491704371533238862062927529061728993687103715584617381449133650067934551429741997596233806357685350458313224546984096007149813473419575258362349731564468684291660239721484472043256211659727453894937763642732739820546069887466309796309447539968295322423746786761899588378272444571292371367413474447197434276820309108466176334054973272331173340111659361442337130792855312977415847609894557657244236135360575415882254468739766648258409923847596862145560111671406474246039147740994441351609557249626167418534932138685355488646277447161488690787234126802880936621565723899904615884548341472638437772090419017559362342062609301959534466652230774497315103874040974426330140216732414915907495369817982025864413682320190304402284550455106186758899229547597245258424329265319033989076324859178607488037746916527718266949417024120162124868059437809624404252426704159384001199136240834740094617360560669898139739645400311944527017550131601104533280441817207649685008412565052535179862086175827433761623348775986952355976268937519226183084278136545349291670649785347842730455081487877293986813649230888836033911523597766312541091611558308804656825040751880201229000742627616764846092999606733478252567564690692669504889322114105282631889525319858323705525911497612288157996632667685670674150846432327565528609123127086077539690737908771138085892200113245294049889922704737554162844306763132343665963132039823822365456559043777707552305193196770793605848172893387453594424454474013959098664586068848120392276052089591591308873830873345317112789906683626082510250289631190568481346881428473945619394593511266715086704096809000035241384030443602237087033327542922826698398494829325813183260408718893212433059617843940587229933901382943262992336198408409788514398330434599960440396485182583066248982823883042200111255085981898391448344844015751684471609252769042652840411485899734910885714254073490007645062005967803838338350515620582705664016191350475064132715818275524670604480386741711701135361668073237815153729800159901327889495086187129604447582390156419305608703427826439346018905984357281977986898496611416847526529975227719636005017771483921982957544197799709954130121091633016282666472057665994141283170246327843904936295814914169455433298130711317392343344536477614717883848576748172715876667106217813834587606343570080150703180822107697621328830605698506305609033356175547929890746964404950767451267747106159270327510593755358827880906472517244109777980040119286343261893970180775124057054774158177970221802579963540456256569061867723885060688202164035260408533918104432069412762092767961756595762676589021880178838196631141734156532209197898820016385683655803586282227835323540770476387548613240989563105953577728703740467085125879358539676422989918253524305042736487362952197862376130430552678640237349729018968430033265542780883750558736743752261945449029876696946612108224851115124942879425375009248761228804637428658896795153370852897642290653016040206069997053451309942591115365763315347798585143808043185383293137605133990375187081546565293976821820681678976667143825155588879797300722377840466564345393925544396615896674799718417150813477090500003898193451616746130407776930778672242012416461426697352259907686766455115834355953750908750468801886412209297018951915865714966322975970231743912119114106738120788423635459798468818392838721078133776550259766032933645790131678864392198922153478445210797007411829472852520896641724546528677899228076406095090087054355112053831012039363483887827931984497205305580640089884147850679614566821898948479674022244113913369887487652583123461801329225543373875617324208320681859309093341218594477765154347005165214923914454731564386152568222327274320958552990828960284112884233856381741112323189817039205176818285148223632011326114683897977754234839539859773555387479931478369465852786548627650813853724070487089026934104735632316188699054916850121902617757361251685208213541489423125264663780298582285404482769756412105522055863664088568917771323306300523891885066913901475208601262155693104850152972747067125562727745608865730314711297367302397805250438620696620826528991710532990343302838492054402628712678922427512444061374297112648006020563822297430010181285771385041656979587178970340526369080649857004814587864116807509544571472638333034374444934753562266027341209926917981677891921750897515727238195821470408569780330165534206129720507627843830335242167825939925171230104851587860224644439220292020253252521515829520218725721656441148152957244204914499245531265109309283531415930597420172103218491273772895034798650668137487351895169131869380823743909292549280691725771478618398588851733810124489829934377473370053370068252656647212635214606968547927504809038433155753162266329616429449015410862283066225309223030055256064379392216273751092054318524673355685810347451754467300668773538268859656515445954574923648729683873935557286856820970937068655945793715092808131171747403868732588043215625794798713241960194139927877235454587568468762746272019100094498768878435303678674043109734750924359994293734355746752800574597686230559451123952878914382180299790800323290843096781932073569058248305026863533285657386011004060766594502913168774569065159241049643726694858160418911013311490706738036543681700409684130695301318926665944626256463817919659855204483526903636334206401621354856147973558569067520506511253677092000344997303422716188357301982404683865947269583956684546963367459758762687671678204149310431797725100520798570137927948407559741374061481883367972415208467850517662863773339874292705113236025748070303373436449698506471836270575534367072477137900735911028494106738086952233620846769094804738713039865343227698048631407498839757989365214479653306186066720098433994778082034252601056288009952122283076954922176813820889628483465616421754123937579558193754200095019239139515555511223697405926455097278440331386885178334434554052038015454864241788988257555470096002158416471742411410132996885100140752406174456919083750028326577637466209951318990330737079201943113542966688636484421817970036239203330453206764934536684736355707322326827785876446310370573555594566522654459815454790470955048621062330510444683333038786245129101219361371510125280334401845995354716355081414363331143924307309675133524204853828824109943599655989890178320729881597902725812942771540675060969003063075143063594335159290803487756279512698080233303983448523903763359578020680403822826869215712204567152735947916516836123801571638451477512947633273928861312235512576987086278058220742708761872709578297417052880180662367826500231390634119435668470543727684869857682890608140863953707420877680764412659167163724061796739633033065005264111522515204885857558654834258914573545195512032180353594911695051378068719810556006895666360047309899697571949998411847437091347874733077520204574436565617262186793285390157914385444947163193179238783098002974102908514885479387830864484899289781518304707739376905740671105223300022583960963928395194012317124630264096534995267171526593770055565730102494501137676561913334587750246583294305250495353130891578871532092316372373133107902309220102841925745042896381868642367418745319420730865142002648204585089869986704818966935411839771621427485830775501646076259582071540977268704166605867826554568530493151242347823449624187048865683437944276656029782106486814685177512298790716326796679143241180948696299889708040355541198052387600659238816546438629657921933326303838039366429868607257229153586409564863587715116286506248407497620036497639682708720641591753907274496783732165772299744820271810956549362372807148941506408038206953482379076431012118157117732910126914164048218394564547100247423760878689918169039921521753045153136140852307023421248049548015885572583792382485175500534204824970481492908940320310430809050323007986533558215703588782544545718278427626486375885747827314014521764649075125614840753558736191501676141412501389041086207604364613946110943290698832808350946105405659106878177534966935163165977743784854970520032448041881269436554799191892238890741452952579974686319705933896006655839221952956620159751151666300129475309250350785976428156893784305478622359782685533113861735520731866174351824115841845075091997649633694047866430158123243404433057388021248152371142388316099631832447205081549938790835458611253943435564824171299287489119366707640567857774181325253233507979780771975461697394241257405396956542526065849971304547348847901021479486605612704247767646084737041513530671846138948561060030258907065141688239455904675293200356117950112887673328192319125625450112001441334554826262046043961154178777018566846299911001936816697919963389400196333444219082726126561961439286151423991499109774369393437975616583894807974648514443152564762608988320176773626728380768044611965217042661464062080139705149376171806476488738827250154569276638342192678366431133871111025133072862691969096467500425521305379670524615424717077214067299329167718710591789934002289122069747920433953864968281665817890773234078288875249889546074590578021210045020175846649075388442769801561868206680361142266963414252212701874669272948450859264833052568909056061160609027359184255550131690394077096720368166451553160609833896170781715866268750533758548369182807948608780968625107433984390434235219689740367237885674707704507030700597244015754049856015155058928190915694812731538478889554953381956036083413176999479211030070256296238738351346477023693051810382793957412886791553484931648794808844286324406999962815018551120571300130535112365975815392599766465092145349546061127412046819415225926986188716476056849908748119793304841105307635909081982031362197358414422316767268043098239315181137479061734502360873745508395271506258881998152137286301123636845012754834291165393438286951173209240049799587871290266306404165115829161019204881466233120224197635902895287152465704419993236013589982120474846271345840260611228369146254161192044127219280174741005492699430065610779347520954299270720650387651378861176589218001361087617775409717699262796015976536682841105021059664122075404910323076215802321801490368864524554178452977152697573396110449811096336643650973261681886798344414251669250224998533937199407689970648423521941761037033886551068960149333137371722361296472034150664556620292222683537040127141078291436736093570890846188142373958232245787503986561211010450137490946828402032613144801907279288018920751978234534610262408946310152037618441950323372778709960576820747366052518528388812006417666180087401861373515895458278191176440767682077611697073274163810947190349871592916000621071323440142391532644306688082924938683364588261228996162358510568247905595841766424855277606907075534470052532713604689867684196360667936729004058748210752703690582852587524292351670119901397237694282959815729865739583855822949365306356393915948828577313698981442774794707665584106781286664956274007171084307394120846271084144220384654297665542790977252203936545409559594221915876466565983276517927312109637452041938454476903708734290815286507123649654266467749616718795331528641404301235882753816634993816753568289004479992478192683752604759132474627756612961000581745982917363087175573302426078515416609069164426643196313914584560126544290921166479054390986891864459370224685320335100411031886752698293827320896578394742343752392404174187327761664303245103880308371741165000643275630023932633142124856864613839455387524460883835247056445230671943050578332861499695214574918673021229404253734683027773313743176432192583951191913236970762565695716840327124880325930914779807518816007401993774234221794461913879164577142778140583620285187482254501254780617476909707221619667136778860802714594724530597985286751745300483760149830490374318122069442090705009423973432872916069092401278307983254836657225071642951238528724138838574504391218505180992122754344306417613772561319645961095192874830637228486233492444491904268558980004614112652158744705099772253265288419466337449702012118823493884966713120693120582224051534971354793790579910847464242156789336422637453846505595136532644728156836277997378127893681071581923934505832928373516022575817127739736575756865378797460471263725175192803271851926819917519383686188517784400435220379006466153404705216541111363986878921739723739896607992639335605097808466640645060973299641467192720137922397898565627219164711374815726090587366358047829903172491757500331384309027495081387152401636448384580814486186637697087649689231216276249532384975371921757162088038760829349873080877249706384919119527981958190516873110807572517264983816623232205603988358157912992461349984204628724405823867426023186896007333398519510459422904668181847357590156918607616331138009353807527538592211061653529680787460840337585919547522274221559932006125164812648451392909851693330515235916955355721591013597659403166816081731576169618811781971177795842089107519036325768932298882133054753656397633873210525368153651341260914098941072219830872711334487119709246568789747359480982755252152430402157014447380207090760786408265205545137559732000800203136750199256298419497315924197202893994081817702434459238430923245234575791683932861682945847124118958937423672717813748011917449413425060927640713687024598045661303952113384013415037432914883493033636158000130588759332472546201048166403710080511673970680927719260588960348045228317232803681187031272506450618629138861001275954148566415095600081015308217088430975829661490651423859763132193660525117633388134158638217519049714767119063945723171578151019595179218912729338551682001453030819043454878245408263437500120254435442376334044602833812761305154890870916870343146715245652773283431041407392860250480796803485192806596809855333297772986668103799435700742354867077311314589712272131788641879710793233868427693207194387420730083062528118643285570520825547326752348837863723225294085957046976403282869202911899456522208121620826458236485403829445741128331629382084816009173825727982745362705478457038425615653445181021898078023754297882055318390558568805474809499629743584484479518248026939110990875290364212204536332706626128176468053408407649243109388979549094928082647431373786179467142988191638288941225785348943868854632528599402913545489154484053068978162863823000366160237819716753451310493666848144862930450839567184713588568720601921059768004898348890777169855867038685678689630104228620027696190848737373593115559489316471614742241241080915717759369507297908390256697208628722732076075083433157804018595982216321305273881207658074452046050754827966442452381402017094824435270368061319011125926752655181876954087858148018718169579570729272694811666295639408633390466351259744410532863779156045567748268573798664900319980347698852661715714418485150351971611338457054814071731561010311297700803013892035659824806376504489316277200564467982215399291293815609566984236664361860965342421210479582059584960463891055303905596666930735260688627851937917438369125360883055927544388560027145080571797004532153325269863702949511264830010485917986200317248423836494080716911582330878681178100817517430784215819553290074107638543118831542337780918612111718398640817469867853658537784796684100354795672647383581298428564496194855634992668338556800017467144246309114053233502145105635100954667476387259109043659409570451628107003693334435646437801867855817503020706261095751735198245598952555068326031742238547524726553387803327296382780133921837788043654626876383362945442953469045674139219118842149941525260493144551517231835450076117034756695289843264617957174777984619140625', -); -test( - macro, - '-94906265', - 5678, - '12032097777224921443610910803648284170512319198440026582654592944907996997711020183354851559738136209876116410482775406152550319519617501575389742141362538671375575270130368782344375460094542930957208982333657039900983512378934606414708547255120509688221248878365002162079958544994081468523927315675060726868126226367119441190130650764598697841259026377226201673036205220245238076301842775410518683141308488299366012792925609747073886802877596666532246689317196865573110094049146280756613633385237048709371024252858686340623252312452593430321228085552943679754605680459379364986804128577790131289118408139954294866373981926459619424848669839958145224015329056251464187884540803724925854941893314508739139448540059027532063346594260009340289063635135268446417517177773306225826478834782126901952841733199463653563757819068049198556549112038207670677005457584687670138285992773936407404706326519609992105860062869525897101616064153489988499260854115519937665672793315389915719723184695407552227493961904033933034506875702096849362495327673029771455889030501830242732676146364350412302869011748293967864940422889128153590781271839942018607109535085227963257602139998078826097049418704998656236212402366601095688523413673512998518901468183798514551196413118699461621524416262734189234150826938615238369409717915433788697444341087319545108423271713647606132458422133503476646278312763913773672381574955638642484777319177742615693192492030931928334799325795983171516582124249978689831869160939605527534908432774284025724078112334305143452973560047389979442428241832752514170684582991619064835042076127845136974614077376818874608487426791468373615242293672741372298898215088365221162041567250511944704729950839359617629579145185451647138688599424451528822613292149181525578785717464355469269950910358964367355548167095991226459148148416836033320461350750016925333661337306860380813570244138594176200254338594713997700943753269483275676699592254818599648860765855658967021173586910470760937291362350281087625944947663940083612371308499706464739236243824369828191050651890831355140821021009799707142643546563126154302728058269983835130462112445179485724829519948644797857100978445782729948146775639685486727347085571030457542493031359599157910012477405633462126888771916787753215333242607039830155744016882502462503818969602202111471162936075917294595421685134910453228619713406894527040532782467138493248067630974131210865224589283318665338359787682806475430520542164582197378961886474218909120025123091615456874986351962126541772414045818060094363742441442667036502961807091952360039303360580900852680604055434020409419268918051690557813552959236488040160958755768871367230392867382735702108578451240872919059355437258914588914059658578625910689412928981898994374868014765744048731178533977420205065542882559318334473630109661521143300821787590642741661630560532599207482636782848372575108230527673435955097474563225203600719908173095140979638933646119901238452049016502626977563080111918315881318986264803301054759949431314581482431408037019249299434256675011740150791380650719740873599060034519923061234283942527829654746500679243122868491752528092330799766780299772695603288900967560796775174207884494845966890228277702276659444815563795433225980503597587408498869891219703208161074827864088098815419234882655313426926283791847398673264577617151571464296912550417563804886979853576821080050211194779490844153380677685847777313137638651644748358202947322079765399238487437874318841114773978903668929164955398911903679705111008999142589544437065672589266355348348971511169575378316208327903577552525930641088538955350354489078111990562226354820551745938135022897672457837517586016736813649699772486263689086502957138019177196070312090344215367177632397930739405411088757771866673597796220471619637645139435250941374184393351858539017096692099099345257001920271362387534252371917508119267325168864330673891152067448719178429752412191066355929358566249659077077560550302293786857736765866388524626228805050725063109877803065961191644600499168820792325163292525536974162404755526606943846795314338495539699560103980570000575730832399241743616051296198894674663823826249501962992317559847798100096759179383956869860153118427566631515292600888345422893802197242997389457528273662177569851158066854725418877583679801690209473560655905719642363040982739123254770408905429249758124187443434793269173022194566001870880813212255626734666407333284872705324976206677741658696075649608364892807470963909485110281558432545948579534204538696827102504407100425376019173981304010256984425288381928914573699655169020850451341503052441205769215186509836760430481696523650279090720163816251521349287308560407457609483984181328774565719714613388489095110023571061353122279353104129328013968956403235071785261847838169630745374996406189906650415573552174116649660276541371408913476854939747876731425608814138059458169543823165972801614100937621904382981944188903180205906327482865751979701901540575440519486923023420935041930682172192953852334672415568738221940582193314983240970450000477463045431237229063460109818726294597730994303217381825651493935869034862652936559019431947352777726119926158367810617503147922958376143964979603245915631333786351234314954623412494887023938633377421208202061177648550247361016141144451615061150414512561947705053352442969412639758719469809823355676287459924284669684459858991524522914802929760964195910108664304507593383032621305399692953057899447189106733091012594841503936991785388985322660311685783354745007380474195833316048135155967714601451196311606046191001166178941116722830537202351353675803239601270737264305300314769429948779160815303098446558150519469320909471850141905795161388126098051093418801571231958217059570635407936987518675272606139316846781769414872368547904423404977322742616034539497477291204678516696339549373290014129953927115273383862176648175885100832898131993707682449845814289537783195056908822732162500604957529260337740262458814285530991622691309191620743536827546586516016261289544348330822509040619411107336690611176859744962777081961711988981244490119102057017123472693131597991997040909096393811129374410032160780720267920557429521283544362429347063129854641992658572996108093014481102752542992814642875292835964120599399273647779564854999067324549593959628020136971251523507807754590744694873740047390084491259174712701241947149566007259569113369875274948363558659130833317516389511341744440804095510223434955552652210614743910169826529392899468656662706962138458679700014949089569408033941330187462290588839847072683578505493439388126630655399425769894783841874574481277512426591408213810373551314332889400820073202400253692361444659207630759168415095760789533492551330583140574981012731074049549919118053417150217808638350432013305694321389747006470410615077305764765120127628910927114025496289209479659319746699938956841225054827585736797719039052465086433182830701745898467197621237268086386733129150280583409523728139312677689819712362202660229834226632997964115903142152545104059172086002463963414350578947905947216633376664142189791562053019113774134585010114509991806040543148515641482014416718677876276580431730562587541020555292496453826361453188845475398099905277525052773545411713921648813979140016300112385588170999474985918656553076765214200080620922916851475745553785133089372514034029601819219527045772849932738904614873836099307092123571006738447715320002736785859704861742282537734067792187177608073549859135742645615364728840961736910729008697313304738536298720611573424123582407824500642154138363464791319257510414579292323013964798548950290960997144513319241370751263381191179501838180558724038708020579905145157293231789686223459443044018289699299028761818401590134930047434655260646434988879638156693278024323812521554624956388982330136290167049424094118582772096018451809597401164846924711716262902829627380939680535156293471439360777268668365604921618839689307971611636791474486517596411076810461187507596434260046979222951771970881882637300844957670414379573068900594030059669462435172746064402491699639256585470646371028345111692685583568972301562562922256758180181085480072911408202795425250027969499463641174613001079713276428421215191667447359883645715478755796737199406110184987838747951054762875131236948669154666701738693610353768722184367702584486223362096024384484603104446694719810676365358898796150078397378880308527506601302713337537470154717940902510142689198467640659012705019749229659196945434251394512811731664749976526521575163913656404283679160697284832403491752877439284481271499113105959231314317691378767826586965558827309006336474296703042302766970494721137069514776117071812137188441976088074396467632977148030639633204112209971813503021630520258087179296520213138286076436343573116739144719310772751735156402034501606390456169140121695688607125183103173251813914671347610021351582630598950972263101156473693547645926791369585126525848123770842541512577658666859445930626122772214914414428878443618845511938720224570647898061530301191130932770667765716795587750061205748309356694807519519675049350933068580375053894078242210199468520630330003161545121375796842051755736417199147757963284334866394276249640731433231049313954526161951624809572619652276996303120934045809848958441871638077879356764855185283339151315501229746330405881302263457753882789573262935098772141915955008754732738429440981828735729272802882701434622480077709131642461504208927055033641377102447767720176633847373823944955329314383832782143590012811927685177026789234911929577093962457115800486427160323294733691288587100842884523422947373759687195747031917611825381748929965338560830322621555697476051991779833983757024224308964473525520615691348057039080995096707558993173247103410555911126189269896588730810492029064501420933855518163570985872578414596537490581577386809453787410688705142748561393081836124251051324584698861388478139283569598076892767321443716553246412277259380509438802329441648705346383613734547877712888220362688053129344779935227318331396329401655637306388721745349393876059195313192731747216875912473534083064724394534423226971274516443125664390773514132844684527673669092932331255685956744208760893026251638308006285281531125557486527757107669977234989257848144696133615593927212707645061711788280447683309281341206400131653863420785992756287508115967050826182726890127091142835164557166691300678394990747493429085386293564966123136506231068567056989317384966475475729360339009395818317246772969137113875763412531168727939516546447462848160915288609593976373135718583011204195966912413852164206268427095555948610761307815791560355585910426147327321102341134387395444132445427019438961472388259276810758042673037214059651545259592406090068506838010231567454628094637254355973489738412673187077409391969169545123360596500128359039361514821593508030148522205228449973734972174002553108195263247639174438853119252163722614381071194775578403064409455019374052283926424489955638366392986417357495741112108742236903909428659619606212619900649574073585165166583918297998340673134762427650800452972036533098907970092878703482852833490281729498858731156264911226877099786698157523214591321994816532369903053664184550576973511700913443461257437675437472098084407017674888009625137498476466436818879720524380130001916537522732804698998210196055682123318139008022653778279715652658727340997456249218032227963658719808122825441145385176983894549215846317551213773007016356738334267963377888011544300061222386574258747191915588698617637837212717814756142051324008302080298650994166585880612515919258375738246207644772437177730335392539644865639849308897774064728887770437363216880581815066468852825832858170229658070845319130874032026316629150366399827042959910139581792401984719737440786491444999030986092724355755641888514009652129027999591099530921894279904701093752999885648973445224343373762636465568559928662660225367743242647517117639887521310379396989258168883666755250191993348321142152864927369234668649063028652063843003316973499048911633219208658516326528768740257621395512872408369502229664467552427061041482906643131699241509502631730714053932028098939427452444970068248194791910834306048571684029297039763506306003677920029786132935369270257069918171451215129218456327859444234926254208150987962386182798994154872735035689186439260489113584084457851762452138367055101379588122088844841306204874692945577566193189114109700874804492781437652540985226374341144719703543609354328682925954034266359991157018716516446223344660092640717378693207071014181491854379467954573981289282127187230877577110472130570576015105977305257910229508244095738723967730842098391729083715169089672956523592451123266861612656114937473953741130882127624277059388150081629717639957137442000516378123556553332349275408205751508548209994904127879234614825403357223962515911129518982040378620086754855361296612014949915205044289352069213501405997863521354165348782511867122622716426639791821261702368775506733831743186020155130943146663966007407244597917005719991265853620211871215693990090865326620251912533146988791177682866417571901522812420520954626741756852429297080414669100168753560040054760117697607946028484195290870973497362267381612404260749108299672450420697873731172732775674054385367218094949835013674973757423265370251319346466334678075474375906897432558238767579231146265140826352088422254545690686302743333477665277149035167938674924154842983621768748297426546172809743534122395481353193555875026625899972752500022321576082052828487883396792123138094495203111492864041134795761256726095663499686254762052539889279642048007404275482585612511343844033096850528226343612783861307535354140366802884442274775822100977205037665851810599890007341178775130240696632601594694061697231625625860004620538862779963203630814410243245714819549757828073441407122131050844039240224163642095196215306864657309686247074858678000635402415836405930550459058799511632845758556493533762990549187485016639012256731683580040073341731704082434264243561194791703596206015014846543656970640029940075455836423615054869940691591288967540111562931377745992026685841553681405592390900507543705586848434089001303884903488059141717942395691356277350339460187131843419289217935265295704356916529054605633813938893737767409366779159372882254232836716324580262988115146013874569597106960026911351914668502679283163961953086528727793944040518851106607715147835491925402383222147418855338357535739845538867786357060338435261036202368258020761466669889670691822601560184917436779215254347489960930087319530836518444337988344598187203191595434829132950413104197804486083026745302512606864460474736420264409880729091060010368627194325379608471121667642965001108323387523924855835054547593985702842329940726838791815501738849577938132081507924442944174718597397264098866829822238109143654804816673202408821440775080110551433710513005759571403757096182158076893681914376156120366821040079723970732533775297717113208811739667056486197044324270922989003211680035846379754027311741122863788335461268176688251174205660568758427931660106752538935307255339039355388757057375250425837093302168454705863145996845095042151313295262463259661279787231685169235050323016586688299833499115629856113737828434665438782484735547300584910063985708776012855041724554864958256185127598519785482694466456563490174364083687348114832431925384869094951858531131186801480404938023454443571034693096579794784282688250620550447004592047288521549204059159028509660096017875307950532319742036173203952041761503785819360687983493313089577551873561446412395575710594370027055187478904534143877344909963663735297933632031693194441131986356078620539658905801102236737444661108267332204176723242428802368200731035237320543765666828751910067807455585241166705139054718355894926417783921107593070742530185305927934025258466866218767376534792597033669822057078961298957496217109258353525748391156704355202862658731864850654926248935721796777991022299873209352867958121188810265931762818554937603100731645526362256769968645627563740131303913187747664074382451124596816950157537126085105444310397381169417181279755364952019062060800318321532221104576465370046063753472086774044100444414676557036622159972786835290325849755928597463426695781953163866965969052547199558811862459755929880206105062693162596966564969090523328485578382332426358809045831759393541573654498007053609291367872036111445231279494806931031841205524707641695256162632063010224942774570614275679640385413454072868377460757627086865145342680411059337436108163325287906190993195903620201661214403352143421814822960031390185721117950110818389291340253326486009897862116192130278391424657241044004963932456332370837203044676250871218583290978562214724386902489542748628396358186325956900204476723680860137151218998668021260767109942583224787827906233417831491624545860788315526165511635197037561922517899904690761031753872124042336536173826882605457634858121101471892751287742889625763093890478605491801544520792057578574375773201143929421480324074646141024278246772158921139478563054405229834847395540267665801516476465649906633858677249697918200443907759577085140538201853478765762117960994914145101764724959407470640463811314680073362866017160216055901670762363844476940433763519832222385027792750981080965530232813715566803117769888159323419674153708883977329384943689553768541789213946129813719122880362388613061590039120847635432704222352763497996891937276538781966653887199495265671013361386797466770701748928272976698049303363099194915667274909798041151694131302731875286034428026186929184304362229619692102502128326871687296959400302085212456821262169947535776150082836000223031048009020371350036539197512764290221947644788009144903781547616778821484803103102745494206849074992779830389209747508799417151536020207175883478394172905960788120783232579015657004053498129914455441618389610549539868266323811924818208880604509127630703993255747870363319837810567597787888248562918900718803552796004261069194657586185596777323973185892714770276436504734272537002948160990428552665125608477771575963058090305035115286941440877623389294911460277602637191173693793231079024899815378902648788493885795214168271309254640593363869703425269994239287771226535309826739493886296423210090644214129966601915093662511467744154185692679773644695709701672608468044373005103438648018171096398607426443413194281519283533259981445906676653664312034448007510997631193422830884833006737772887744686368777653538919592111949951373489944710830951650076413715452663964540719349734000663229824949598114271366375624217568372270930581796391817021771734034804435202600593398262992169912934443430494160632096045871344133239156139910775140126053555363620216919941247411877562901224722321989970134286623258958498605964077449818088184783496838986907729353462388738014823594316384752835667377359432034427008829688816033072344951707746090028382556104976370057205866084666487901937011251702362871920843956238611037186048336332441746362113871081603050950760137657339038936536596933851722041992305843336304901453452571715630307405640050171237176240125222557358332930710738041186084749584740450846611590610786726669986270473854160586469256252168384869883596851589288004569216909578136486049118663430702671507574735910444281915534186018197115110593685299825714958042538520471370923783862810373944427764167480823665142849781516572576659578160735209456505359366276175015044857079506949581097412535399513752605101582122333384186945231604776461746644687207899376798357792653596666581824693709787573041587757626825069517113369429081460885782112243077774167939979145984687560083045973141222583991194116736510260934423567193666909628226271067954142670416399861275578343838128155755377702692215310376282921807545085658277051619371602033888713006177339575658405744622442355225853961935039933219714558173292667708157166916833886949301548495619142336871670282820976529735014754467417983365683174117809170080328865238203402509223643245295215135732316886815093541440338066497831425192534469707791058531207292816542931530093442001376701232809955022738734490848042941077563991314157582176472360317911138496886256725677367798535879492979280051355429572780533908274951671490815885229571886451377910940010012673321183872398403321907312091527491690998932778856646700965310668633894463320063118790564548548680468929222591042338228420943806756554406415931090291538143528789629740994863591079711320495984207677768776056308656173482219428268311986921414524482951641166995052008686213317172019535225407298322183791610925122947801778616107589077345869377990653281139028741071735597803862826823503904687705298499157856081719712796392689492483355489380957823523151647371561894369978535447318492691386953116508279327857453984504066238005909847859372464174431153967057270158951933229971026010966691002647873844722520078261307977064543610448466409873414879293871473093770897730342188974916791516079659719631290440856802730239894028254762897599982086201797037774350455318445666421091272654386376102853322186923651805632319156209526417184248540024807358600433160247811092932618503532768368430167126161193398063991915395134237015963224689432846551459273641605647876407353197376326052974132020864262566344092487103313843164740701039613572905063871725731123431656363638983017301386812075627738970033704925617216698715754404765227506689591570815979652750336513064156973513088297698696477005797931273090405805324066030602361512119840369813400472419573729403873434074573160162870936318068249575178675647763166913751293933551646401329625534493843177325624465230372869642679078724392280172358972274796335813356986697385312329187363931167837979111403879151351225430729247112426650129104919284568825235232455725351552224363906641354967564821570365975247995194169878249598512813403591842113734352236034910030599591245451967209058347539059536190947433656585914973072966125316763518711707788780035041883398613275851057398845335005672095171230325334135754312046899114278318582949758025840627034073495122556098906615537245941205241050630832317495323472933706045476448135324622130249061967088040634256046633681463998139104615271598326353633335243659421316638748257095222430616324419633409773550120132726761874278343852462953247386966597193056825342009690607297567265709899931944826256174731047305094081727770841080440016328196894856028563604702780682709363667848710891858610272205043503944199299286748350079640312927864906304355154798671043210363438224540663084637003896566824195029371811104076856777325671062014465716574261539700730333018675634121018453203461781631294981764229198232448947654253783388204297001920517253136683270888989223979423417588630101697507592396076446071605672776440131159545850932553540460963555258875042206253533925856199633623872569538946264824099914287390183680108014685374620969458668067114850551017647802720372476318759518097294889667098388787511578895623400536394696909686982089754739465395458755824025627145860540874654096413723593095786861445483207390022439985873830588574664429664328016256793764664176593210650680088966473569586028063185778696846067901539484777171526008932126642124726149000234264622535507932061596730778639639322994194566230181315095849815600439054976860942354245780811250583700351160679186551987899007553450837968473873566770319473147476749953987063615776202643846558316122703715582310812032981020745887175302830579849877162396208954934582206235358053066687144876586531305671914153856979556448429896161954702428046020131267519937687942784998876608574424998618033186526320893410380410615897192637383212667814571224040666584728535219469735065470507466917541842491727590582415179332124764074275007615003561577219703985592626963898540408123901920954693863945334300894449076898006775718907497203849104045111950488579240549422430862215686448461635287540273933678378844195074450255145986318612166430395304017670650737974685138684856887920372725287537626880802277074988514877737086561392592097851272353742818024979368746610359299993821608029744496422263548547379227059308330732006560207940874965636535953389748254985558222428424330864460444917636632197361629108476540664208138353154832367022269303011778867713003519669926347227092605460218997631456886988546452742315709205780440409392361149984816382171251958377059474144369328217951856030362908523108523320063836177218545129144151675726728971709295080995491115727738994384523099426017049570788092605348295244510790430809310252002021162900702972004743370313805442485273713185126694838015211112954180162169003605131100343992572258878781008043930175009769360708537294998309182845117912092938413455780854377238800073118887421690605050678371370274063825715320860910620948562818451293617405229491236178678754278932510338478945063584831864172120232848867941761893175916936978589066485863729545344061035238414543782144041420795359232419130120814019590644487393845413057769719569362935783498618412118335138847775489214231071866809710199171908881608454495198717226829803613782208248938966092151102736556383497239013516522084118430594971074187519260946766667423607181318562263393260060663288717977893874080349690289502370587468658530985736835159292642558195601284611160860487456916132188445668274130918453531643472494048279511660213922482152284451162576937159479526872950903047337162660821805029600708501290793495192214286757581386114297917781127145691164585515718567911708522043336429297534300930577150477197470794166974719236537212770910044441149771285775283181049923538686195299106209763353070616873255072368061193988813137514561690385137083968163734396360347928328336563595006220960934830733065521338335841965986235454589498682179372157178621143188814181528148836823240009313917239615618819685916460559824760451892578522401207920356914008125649666362232615846019270768411703026907820785686893329687936007326486259085396965025670221843906365927274024874373060432645146595290306316201392153119798490572148328091329727540219633346941261473165756079426541378711351627269272757052944951094355168530350261245111562524094741072397641389854917843735109228705666266863564318304340300463039112532153772402056001825404569674075795960482695655750098767071905821033260887679978762025881061325337213163524622779581816972175555663637210876981896507755878807206231301747997616278339215979267473884231317543544712452852114555647618822488813490625396727766305946129050714786088423305048954173700588940427019522843104010086905515156909811517470970474323555351456229248573825599238197370105299573364893745750391351067788061060527046812509973058875643642096985994846004078611902478115985749938866763374390207356150215198771166488048581440471218124332859752158358015616660187047654002371295814353685889164385419937001586245963586686123227189249339843703303467679680488282425879611225214199203660669304537817806007418484543257294498646404096533225791315505537497715207372656046521498454410484618808462877318221533855177115026118801994635309492636704866960405453702180044263190730170186585393782170839546858732775601817761449580514710578003629573446698223526303276734226490467503004836350690787693180419256606367206975754427565647193757103622172723445912571921412299915576801160624014585320520435926902108223783097157413714400856842549485204781754909051139596113033072378955171738006815746107126582544226522618574999884662865437801703547910979352686377121384449362061338382596983291230994834971550479538621580428614474707245992895951108596353356806792208588625391355419712148342585326639448556448414437163323753111363340625419447936908942309059384977968558654468049438582343818038934475031358918368904553362235318960285027300982643072000467590624020979094167872273398935195854660177797067882015023199367866518380157778613872943331744050423399154264127572590316747837829937185838805929919930426357165171535205844319577554107598132285773629025750828527147869294916738495703358765482635112741426231530287972819515170191843245039795145568805407271280931405842189126545621691903281208244330021380936941534090926737001841378878232358824105952882091391122376983197385863111377095821200758977598655636124137542127167825095347247242493240787156813316762909697688864136617808861689815132468231141188094757116163402600963896457848764885057333264284354504937279338775019887183472529765242120841857211466394385600886129299536196104160966949461244421470876475635289658360673044133988472412908346503168644044604661248748712465204802503052422913247662994388842262879693084905772957000634196203224713014001316324485989167462563998596759472917793384738934828062167583801086989253946454905163667273365009826486005589759567623881215672865627059042146648672881327891063995694457750315379828488812880269962995872715826927673202525599988948924553574496455072613992039779209442466653855719582532255207207153068979266405561447716075597208003386115629512060258961979286373743813337931101772517953360698302031325001844985453129783938956301615754527286888929780663765211591009120443813269934515079913668898214910192754399304618341831453870034267125170721505066917586198732535221716916597559836503614379370118425547846931569036557590812044714028782560536961879256523449737057538949699208081652250218260123107062251099566298529927581162698576168546631586946049600127140987141317674460410902993224596022062324828491276267223741714140055313279819368014780323282408383224067009467800172584303162404423355760504326823431706740776861818994506012773534445613456631600402675225760377368762722021968052635826828120651984513278838416227839164392949867613026178865022522692004106553797610247860158988661216559547229327484286711157186964559739720520556436315158359781162799170405180320792416230576841207330921642427914971360147358390054635718803605053812837473635557695381145693736966197784412835427730682455377495472116907945998421668486206685639652442308850167256008495070585127947385980542764963491704371533238862062927529061728993687103715584617381449133650067934551429741997596233806357685350458313224546984096007149813473419575258362349731564468684291660239721484472043256211659727453894937763642732739820546069887466309796309447539968295322423746786761899588378272444571292371367413474447197434276820309108466176334054973272331173340111659361442337130792855312977415847609894557657244236135360575415882254468739766648258409923847596862145560111671406474246039147740994441351609557249626167418534932138685355488646277447161488690787234126802880936621565723899904615884548341472638437772090419017559362342062609301959534466652230774497315103874040974426330140216732414915907495369817982025864413682320190304402284550455106186758899229547597245258424329265319033989076324859178607488037746916527718266949417024120162124868059437809624404252426704159384001199136240834740094617360560669898139739645400311944527017550131601104533280441817207649685008412565052535179862086175827433761623348775986952355976268937519226183084278136545349291670649785347842730455081487877293986813649230888836033911523597766312541091611558308804656825040751880201229000742627616764846092999606733478252567564690692669504889322114105282631889525319858323705525911497612288157996632667685670674150846432327565528609123127086077539690737908771138085892200113245294049889922704737554162844306763132343665963132039823822365456559043777707552305193196770793605848172893387453594424454474013959098664586068848120392276052089591591308873830873345317112789906683626082510250289631190568481346881428473945619394593511266715086704096809000035241384030443602237087033327542922826698398494829325813183260408718893212433059617843940587229933901382943262992336198408409788514398330434599960440396485182583066248982823883042200111255085981898391448344844015751684471609252769042652840411485899734910885714254073490007645062005967803838338350515620582705664016191350475064132715818275524670604480386741711701135361668073237815153729800159901327889495086187129604447582390156419305608703427826439346018905984357281977986898496611416847526529975227719636005017771483921982957544197799709954130121091633016282666472057665994141283170246327843904936295814914169455433298130711317392343344536477614717883848576748172715876667106217813834587606343570080150703180822107697621328830605698506305609033356175547929890746964404950767451267747106159270327510593755358827880906472517244109777980040119286343261893970180775124057054774158177970221802579963540456256569061867723885060688202164035260408533918104432069412762092767961756595762676589021880178838196631141734156532209197898820016385683655803586282227835323540770476387548613240989563105953577728703740467085125879358539676422989918253524305042736487362952197862376130430552678640237349729018968430033265542780883750558736743752261945449029876696946612108224851115124942879425375009248761228804637428658896795153370852897642290653016040206069997053451309942591115365763315347798585143808043185383293137605133990375187081546565293976821820681678976667143825155588879797300722377840466564345393925544396615896674799718417150813477090500003898193451616746130407776930778672242012416461426697352259907686766455115834355953750908750468801886412209297018951915865714966322975970231743912119114106738120788423635459798468818392838721078133776550259766032933645790131678864392198922153478445210797007411829472852520896641724546528677899228076406095090087054355112053831012039363483887827931984497205305580640089884147850679614566821898948479674022244113913369887487652583123461801329225543373875617324208320681859309093341218594477765154347005165214923914454731564386152568222327274320958552990828960284112884233856381741112323189817039205176818285148223632011326114683897977754234839539859773555387479931478369465852786548627650813853724070487089026934104735632316188699054916850121902617757361251685208213541489423125264663780298582285404482769756412105522055863664088568917771323306300523891885066913901475208601262155693104850152972747067125562727745608865730314711297367302397805250438620696620826528991710532990343302838492054402628712678922427512444061374297112648006020563822297430010181285771385041656979587178970340526369080649857004814587864116807509544571472638333034374444934753562266027341209926917981677891921750897515727238195821470408569780330165534206129720507627843830335242167825939925171230104851587860224644439220292020253252521515829520218725721656441148152957244204914499245531265109309283531415930597420172103218491273772895034798650668137487351895169131869380823743909292549280691725771478618398588851733810124489829934377473370053370068252656647212635214606968547927504809038433155753162266329616429449015410862283066225309223030055256064379392216273751092054318524673355685810347451754467300668773538268859656515445954574923648729683873935557286856820970937068655945793715092808131171747403868732588043215625794798713241960194139927877235454587568468762746272019100094498768878435303678674043109734750924359994293734355746752800574597686230559451123952878914382180299790800323290843096781932073569058248305026863533285657386011004060766594502913168774569065159241049643726694858160418911013311490706738036543681700409684130695301318926665944626256463817919659855204483526903636334206401621354856147973558569067520506511253677092000344997303422716188357301982404683865947269583956684546963367459758762687671678204149310431797725100520798570137927948407559741374061481883367972415208467850517662863773339874292705113236025748070303373436449698506471836270575534367072477137900735911028494106738086952233620846769094804738713039865343227698048631407498839757989365214479653306186066720098433994778082034252601056288009952122283076954922176813820889628483465616421754123937579558193754200095019239139515555511223697405926455097278440331386885178334434554052038015454864241788988257555470096002158416471742411410132996885100140752406174456919083750028326577637466209951318990330737079201943113542966688636484421817970036239203330453206764934536684736355707322326827785876446310370573555594566522654459815454790470955048621062330510444683333038786245129101219361371510125280334401845995354716355081414363331143924307309675133524204853828824109943599655989890178320729881597902725812942771540675060969003063075143063594335159290803487756279512698080233303983448523903763359578020680403822826869215712204567152735947916516836123801571638451477512947633273928861312235512576987086278058220742708761872709578297417052880180662367826500231390634119435668470543727684869857682890608140863953707420877680764412659167163724061796739633033065005264111522515204885857558654834258914573545195512032180353594911695051378068719810556006895666360047309899697571949998411847437091347874733077520204574436565617262186793285390157914385444947163193179238783098002974102908514885479387830864484899289781518304707739376905740671105223300022583960963928395194012317124630264096534995267171526593770055565730102494501137676561913334587750246583294305250495353130891578871532092316372373133107902309220102841925745042896381868642367418745319420730865142002648204585089869986704818966935411839771621427485830775501646076259582071540977268704166605867826554568530493151242347823449624187048865683437944276656029782106486814685177512298790716326796679143241180948696299889708040355541198052387600659238816546438629657921933326303838039366429868607257229153586409564863587715116286506248407497620036497639682708720641591753907274496783732165772299744820271810956549362372807148941506408038206953482379076431012118157117732910126914164048218394564547100247423760878689918169039921521753045153136140852307023421248049548015885572583792382485175500534204824970481492908940320310430809050323007986533558215703588782544545718278427626486375885747827314014521764649075125614840753558736191501676141412501389041086207604364613946110943290698832808350946105405659106878177534966935163165977743784854970520032448041881269436554799191892238890741452952579974686319705933896006655839221952956620159751151666300129475309250350785976428156893784305478622359782685533113861735520731866174351824115841845075091997649633694047866430158123243404433057388021248152371142388316099631832447205081549938790835458611253943435564824171299287489119366707640567857774181325253233507979780771975461697394241257405396956542526065849971304547348847901021479486605612704247767646084737041513530671846138948561060030258907065141688239455904675293200356117950112887673328192319125625450112001441334554826262046043961154178777018566846299911001936816697919963389400196333444219082726126561961439286151423991499109774369393437975616583894807974648514443152564762608988320176773626728380768044611965217042661464062080139705149376171806476488738827250154569276638342192678366431133871111025133072862691969096467500425521305379670524615424717077214067299329167718710591789934002289122069747920433953864968281665817890773234078288875249889546074590578021210045020175846649075388442769801561868206680361142266963414252212701874669272948450859264833052568909056061160609027359184255550131690394077096720368166451553160609833896170781715866268750533758548369182807948608780968625107433984390434235219689740367237885674707704507030700597244015754049856015155058928190915694812731538478889554953381956036083413176999479211030070256296238738351346477023693051810382793957412886791553484931648794808844286324406999962815018551120571300130535112365975815392599766465092145349546061127412046819415225926986188716476056849908748119793304841105307635909081982031362197358414422316767268043098239315181137479061734502360873745508395271506258881998152137286301123636845012754834291165393438286951173209240049799587871290266306404165115829161019204881466233120224197635902895287152465704419993236013589982120474846271345840260611228369146254161192044127219280174741005492699430065610779347520954299270720650387651378861176589218001361087617775409717699262796015976536682841105021059664122075404910323076215802321801490368864524554178452977152697573396110449811096336643650973261681886798344414251669250224998533937199407689970648423521941761037033886551068960149333137371722361296472034150664556620292222683537040127141078291436736093570890846188142373958232245787503986561211010450137490946828402032613144801907279288018920751978234534610262408946310152037618441950323372778709960576820747366052518528388812006417666180087401861373515895458278191176440767682077611697073274163810947190349871592916000621071323440142391532644306688082924938683364588261228996162358510568247905595841766424855277606907075534470052532713604689867684196360667936729004058748210752703690582852587524292351670119901397237694282959815729865739583855822949365306356393915948828577313698981442774794707665584106781286664956274007171084307394120846271084144220384654297665542790977252203936545409559594221915876466565983276517927312109637452041938454476903708734290815286507123649654266467749616718795331528641404301235882753816634993816753568289004479992478192683752604759132474627756612961000581745982917363087175573302426078515416609069164426643196313914584560126544290921166479054390986891864459370224685320335100411031886752698293827320896578394742343752392404174187327761664303245103880308371741165000643275630023932633142124856864613839455387524460883835247056445230671943050578332861499695214574918673021229404253734683027773313743176432192583951191913236970762565695716840327124880325930914779807518816007401993774234221794461913879164577142778140583620285187482254501254780617476909707221619667136778860802714594724530597985286751745300483760149830490374318122069442090705009423973432872916069092401278307983254836657225071642951238528724138838574504391218505180992122754344306417613772561319645961095192874830637228486233492444491904268558980004614112652158744705099772253265288419466337449702012118823493884966713120693120582224051534971354793790579910847464242156789336422637453846505595136532644728156836277997378127893681071581923934505832928373516022575817127739736575756865378797460471263725175192803271851926819917519383686188517784400435220379006466153404705216541111363986878921739723739896607992639335605097808466640645060973299641467192720137922397898565627219164711374815726090587366358047829903172491757500331384309027495081387152401636448384580814486186637697087649689231216276249532384975371921757162088038760829349873080877249706384919119527981958190516873110807572517264983816623232205603988358157912992461349984204628724405823867426023186896007333398519510459422904668181847357590156918607616331138009353807527538592211061653529680787460840337585919547522274221559932006125164812648451392909851693330515235916955355721591013597659403166816081731576169618811781971177795842089107519036325768932298882133054753656397633873210525368153651341260914098941072219830872711334487119709246568789747359480982755252152430402157014447380207090760786408265205545137559732000800203136750199256298419497315924197202893994081817702434459238430923245234575791683932861682945847124118958937423672717813748011917449413425060927640713687024598045661303952113384013415037432914883493033636158000130588759332472546201048166403710080511673970680927719260588960348045228317232803681187031272506450618629138861001275954148566415095600081015308217088430975829661490651423859763132193660525117633388134158638217519049714767119063945723171578151019595179218912729338551682001453030819043454878245408263437500120254435442376334044602833812761305154890870916870343146715245652773283431041407392860250480796803485192806596809855333297772986668103799435700742354867077311314589712272131788641879710793233868427693207194387420730083062528118643285570520825547326752348837863723225294085957046976403282869202911899456522208121620826458236485403829445741128331629382084816009173825727982745362705478457038425615653445181021898078023754297882055318390558568805474809499629743584484479518248026939110990875290364212204536332706626128176468053408407649243109388979549094928082647431373786179467142988191638288941225785348943868854632528599402913545489154484053068978162863823000366160237819716753451310493666848144862930450839567184713588568720601921059768004898348890777169855867038685678689630104228620027696190848737373593115559489316471614742241241080915717759369507297908390256697208628722732076075083433157804018595982216321305273881207658074452046050754827966442452381402017094824435270368061319011125926752655181876954087858148018718169579570729272694811666295639408633390466351259744410532863779156045567748268573798664900319980347698852661715714418485150351971611338457054814071731561010311297700803013892035659824806376504489316277200564467982215399291293815609566984236664361860965342421210479582059584960463891055303905596666930735260688627851937917438369125360883055927544388560027145080571797004532153325269863702949511264830010485917986200317248423836494080716911582330878681178100817517430784215819553290074107638543118831542337780918612111718398640817469867853658537784796684100354795672647383581298428564496194855634992668338556800017467144246309114053233502145105635100954667476387259109043659409570451628107003693334435646437801867855817503020706261095751735198245598952555068326031742238547524726553387803327296382780133921837788043654626876383362945442953469045674139219118842149941525260493144551517231835450076117034756695289843264617957174777984619140625', -); -test(macro, '94906266', 0, '1'); -test(macro, '-94906266', 0, '1'); -test(macro, '94906266', 1, '94906266'); -test(macro, '-94906266', 1, '-94906266'); -test(macro, '94906266', 3, '854839655154332653629096'); -test(macro, '-94906266', 3, '-854839655154332653629096'); -test( - macro, - '94906266', - 7, - '69352833223452036048019660867447049048422594495110435456', -); -test( - macro, - '-94906266', - 7, - '-69352833223452036048019660867447049048422594495110435456', -); -test( - macro, - '94906266', - 9, - '624674792670819892886821348974247157367038441509612832874984853143476736', -); -test( - macro, - '-94906266', - 9, - '-624674792670819892886821348974247157367038441509612832874984853143476736', -); -test( - macro, - '94906266', - 11, - '5626570371553000770366419421961255147770032439589200995227891474434035187239751962044416', -); -test( - macro, - '-94906266', - 11, - '-5626570371553000770366419421961255147770032439589200995227891474434035187239751962044416', -); -test( - macro, - '94906266', - 17, - '4111621002962352544426035475002050767022502971311441626541763763792261198666994629509192961845858718231919984114833985236172441304825856', -); -test( - macro, - '-94906266', - 17, - '-4111621002962352544426035475002050767022502971311441626541763763792261198666994629509192961845858718231919984114833985236172441304825856', -); -test( - macro, - '94906266', - 22, - '31658294146038073140673550517958143193937503699159895257943887308245045293131342388364082990134400198608168678756490519887562990165044958599474575834979005035731090290356781056', -); -test( - macro, - '-94906266', - 22, - '31658294146038073140673550517958143193937503699159895257943887308245045293131342388364082990134400198608168678756490519887562990165044958599474575834979005035731090290356781056', -); -test( - macro, - '94906266', - 24, - '285152565696490625870442272729395647608950351839474257315727256295452252799048325652363949074270810510446637480253626162460689279863201482867682864836827407863087624820569082929394398407950336', -); -test( - macro, - '-94906266', - 24, - '285152565696490625870442272729395647608950351839474257315727256295452252799048325652363949074270810510446637480253626162460689279863201482867682864836827407863087624820569082929394398407950336', -); -test( - macro, - '94906266', - 27, - '243759720926361233482907476667027740766805627065699088178027236643247725320494107064742082561094618490109236612895062687353584665860859991879415575955849317191261917932396860642093944856375991467562330107969332576256', -); -test( - macro, - '-94906266', - 27, - '-243759720926361233482907476667027740766805627065699088178027236643247725320494107064742082561094618490109236612895062687353584665860859991879415575955849317191261917932396860642093944856375991467562330107969332576256', -); -test( - macro, - '94906266', - 29, - '2195592394049166382906227581924066334663790360178733838688076505880403691220571309390729652591082755619543107564008226799137799080033434887927401578673812379447379840039807149661750004725486244752615902332029221197778610238611521536', -); -test( - macro, - '-94906266', - 29, - '-2195592394049166382906227581924066334663790360178733838688076505880403691220571309390729652591082755619543107564008226799137799080033434887927401578673812379447379840039807149661750004725486244752615902332029221197778610238611521536', -); -test( - macro, - '94906266', - 1234, - '9591583891277388505525115654797253189447136886605641096683226693736396854292872290512151998759360923701943145747583511134137237540129219701865806527338039412393513087835762990942813556773080107716234535870561191650361302039829302403412946075446106825412751297892836531217239269776359674130746921131965972537264150037423340241624478540689955102073116137675285513450572840589026258095131250791322081023453951176768841489407000043160535726118339631576838850502482585592200779524367753458287644483993004333076374919449019351020134267799153173432760508245927226301565370359856673809842061641312175092790578128981482583891661097755340718832041897219562172618233303238094263205645877970358113993768074445674320377240792952208045529432335140630061808861188401135379799521387052163956136888910117971768073860253216476475927368994288414942490447092525755875965929318466574353873454174423568978107060092961912237658617656324665296966703692085594297491801246417796157302870670019421897078307859164701722985884435622838840530890375919184262292483249645237441871417071068806838100941596745962353204182500699553236401634245625283851805217533262792073996012743903038338818229229536055186386872511025680807437338096861815569495459484486460365583028341745944192156249359977394771788868182593957987578355313292235026581979280145300928658410955632509870162005244044559296175541745959995285799355003323443377883778100846086239675150873016131996875930350018015992219350113946152537456877585388442767668614805636644492157477034654015002200777424371801710940679802301822648705115099704427481311918749176783544920736529548586139472683949148040458809863320043994900963476851393707718685357960075583333452093866553065546077049928960672319740544152092427005399888194730320253239832076741315219908647683627978170933321554476794379260071113837209591838667536304118212015385101618506499462338145076365933116172453086230618448544984434420121504363011969733490863691026519845481227162596252154043336808666820679272401041855392723131101974634161808347994859566559136073803551874710780721574809835031749728330936601228289711332942475487049804198344632033302735878413333870324928721703861529246383352099214222474224938703923296131257451581782344657338446171822905587284519270798848617615383853637901599987735072168595913644523892204610491256735570544171294439722701186324784813173174483048007173966323269225972341862131385921920832169574095034230665694523080098106542220271445953212355824376796872664899930405078699681023392941095533624834406183151593571978375085934954718772261954055173766598828049519860162686382244143267595319712518638744666104806572606245449198069667116209595882863289884166226287944224244325912368780394022898051057039098547506174697498113971272667929236765997561816214125329832660683430329906332085061140646573555743366393621599195976267935743727788827183517095321230820637742126067889019665213164390290062070086490541490087922889187502866643165223474222152292371630635439138794711457873999619661458114893978180017319683380126983120641424939879059628457874620836535554946801030253436946381021247115406263632484804383695320385114124544559909521290483278475119817164333705567704791958463532021771160857295222557768598737275557446539702002377398605084666447155176033668026697232370808420470009321148824428418389705572556366704189822047227135423662015737971723144128915366318163252037686350939438961105050312976676967329177197952756021289597791397338470443572707715044081895964751092291481135333163500784426335086969222350790452151470682249035744789451673722795644580346446427237748663833724773055738574222477446871501122860335729438705137534047869725490906711494592485106885753816974753130866230360407926506022819960149735054814022037339465954340178612152040319878077106430592659196961703359784146025873205470608826469128543078279531426173587139642452817225181534576963768759115834369507960533557518872119645633087366816494975254571143679899649491717075104399517306160274939826782873377728147095270888144396760865832963585642969396605820937742695276189538284034362525529116594250112268646631014509298531366336740362116463524994112518288361022718725186733909161021464483147766958810416653193317981915259425065001767448497554577639274204071071705244125471084327932064913256116544625655097111357879218899746235180031762344942760169055331365226140925327502639728177654134067427560672144839015071652189807317452445009056094721496371835728117777604974208279421394708930008595905196768223073852631733496851110527349046730941946132098007584486429686144893021869768040494264750853862282987486806138208661684993068425524750265051353734028906190482450851078570663574840036302550770980899456380758967689998731148592509807498959236086788270504035504990430792437032016856376680319178405811261802074955061597795727228291245608975661248511105127641151300865259290562972594488780807006164810445138616615841618866683247778933343790417183231981709585853401070402352247880227834733605154654208405827367703397973124817867577312294892836600548995170550964519017755920491134728378033326750515727791786492541954821643732033152252733475994603308334780140629373474610355068194857748405815128125330220343480629589196619680550886899725922137105216388200442015479933602992398666447348073001184279416147051990832666558273496164807310852154387305610527877711252422415258565032409894506552122659357455434448999509546516876567873333914554650709822738555250110914569231361810681278643896615945548615899639843813666952141996624167611621492507842243902766221696245619381375774605289899874210671753440701163534059875806083218591213612602297792283259653398593217024941897584586879309412954558704641934429167525386399311944692329646781017786882955521326213679515731031183203986702444464679264883058444930210295590055606165224085189224526495039065334701181368385574370869084681514830806912736541133960881470315237742308529215400374398116689039427221492261470641437661432564644402005790004197437786314907560361356740707196128715870019180872806279505931484886218059480821987893092959069213150697966414731390314378598567994448063764696914845544937095976949556292692796483284851190274166372600687071534820393215816026820899675947738834985468497728922675033232726987359807157258554534363387708729838351923974285515021519390503787211158967755318117395341875443593494088249677470509256804069203968911906532856935833859629624953249282547694462129874921376210457781519780672138068580237523242109758156352510154248725657237885230051785607446612712455877439910598727422322236228918026459822218149591970911650199903977933286839068419271139224493809573534424910810569507347636018232048772842840705740610444557659804248321191219347571463409422539969701913590898411004567236097895765842127957787359469025195874392074029652861324112210670977858242810226625126442091294631154867160280576157087207127738748079837969738346736272907326954078228907240806250022030103243471070942620769424250383227664179624295113595650922927103176569104163069362275506704125229083883227741648535784720713916998425594827704884440884048570231868405014498867352517286315804797924811180126154783110497902148043082659366781977209563715381227919869341778767396699280870862522931948944127530770998030252387371682413803951145767257140559728875692368709218878174221849437349204586631919443118989273373652595227172082496817103834248085354242741398581443429002334727240172368808661300231451115291328199507370065934925021969833175256299351306328641830228271353568846058387616229810955704081192557684947405779884509699286099118817298430699433547211009079482595408740285359093432367204533672009970779486719368138866188648840163573708869681067182080546042978337057745453023016747935779322389017812077413454635572131138070447390064042098690495563990815384766717508180920795876792077075958862404761890064984999921424416035664890724207484476976948663181789371914701106962448405463092701988465606503300165084244328789019795067098840871060483436479149382772059422903723115301669510704882112896208019251794996975248024340609600192493149267102552688418448337310468569703642800278151785183841360284358832347643596421881526596665057964053827050804071884062288727904628572069704994983452228398970557246268968220658737939309295962851885135390864007109076454907858176227575944339250250806424963701992166486681083315296440885760692193722152386434371762373410590481977858473872297435270131851901627945492845960665561756900237380050320337739114937222692715636345829089022971742750975497841816680681521790589482652539674743477542852811800520246939928822189145763731846324657221289024648931687399148099267044885671733352094184536756797510551247165871717923549062099764463998166198147288178913216151413981763321707683229249020148234875195737760846468403561985525050842464738232714775172951842741929209903518935372911660933298610653450385567441423081564273457132625038138122267839275539394488317379385537074050425412207154034127084217300615381424425706034294800775550428346687417563346954606915929811701307971860847947436154534973614176016275979962289620596506204146325423963174288918311054000291798070696992896378237251211848896156990492511653866861708727175129743629232669035317239800711664336916352757273273019680964663040723297535426909582937904934585625428123881208162294614263698939436684681006337738069910841585236458607359914206604759267241756962489475530594581950179263984531751086934103867126900494224276800810684669857022045988157595957258035294079410835500711458127756501041160821464860452114868285466846677033681168740753966890869829905162812697068968738906495545558280538657098494992456740410755232449109163731371774089491724693292280219243313432709883187604627083249554581032445654578001281629105731324709943235755260023344512209169158809774752301507192585314852433760106795543790072985084166023044553539415733291732895468679601579454025049341590670709620736', -); -test( - macro, - '-94906266', - 1234, - '9591583891277388505525115654797253189447136886605641096683226693736396854292872290512151998759360923701943145747583511134137237540129219701865806527338039412393513087835762990942813556773080107716234535870561191650361302039829302403412946075446106825412751297892836531217239269776359674130746921131965972537264150037423340241624478540689955102073116137675285513450572840589026258095131250791322081023453951176768841489407000043160535726118339631576838850502482585592200779524367753458287644483993004333076374919449019351020134267799153173432760508245927226301565370359856673809842061641312175092790578128981482583891661097755340718832041897219562172618233303238094263205645877970358113993768074445674320377240792952208045529432335140630061808861188401135379799521387052163956136888910117971768073860253216476475927368994288414942490447092525755875965929318466574353873454174423568978107060092961912237658617656324665296966703692085594297491801246417796157302870670019421897078307859164701722985884435622838840530890375919184262292483249645237441871417071068806838100941596745962353204182500699553236401634245625283851805217533262792073996012743903038338818229229536055186386872511025680807437338096861815569495459484486460365583028341745944192156249359977394771788868182593957987578355313292235026581979280145300928658410955632509870162005244044559296175541745959995285799355003323443377883778100846086239675150873016131996875930350018015992219350113946152537456877585388442767668614805636644492157477034654015002200777424371801710940679802301822648705115099704427481311918749176783544920736529548586139472683949148040458809863320043994900963476851393707718685357960075583333452093866553065546077049928960672319740544152092427005399888194730320253239832076741315219908647683627978170933321554476794379260071113837209591838667536304118212015385101618506499462338145076365933116172453086230618448544984434420121504363011969733490863691026519845481227162596252154043336808666820679272401041855392723131101974634161808347994859566559136073803551874710780721574809835031749728330936601228289711332942475487049804198344632033302735878413333870324928721703861529246383352099214222474224938703923296131257451581782344657338446171822905587284519270798848617615383853637901599987735072168595913644523892204610491256735570544171294439722701186324784813173174483048007173966323269225972341862131385921920832169574095034230665694523080098106542220271445953212355824376796872664899930405078699681023392941095533624834406183151593571978375085934954718772261954055173766598828049519860162686382244143267595319712518638744666104806572606245449198069667116209595882863289884166226287944224244325912368780394022898051057039098547506174697498113971272667929236765997561816214125329832660683430329906332085061140646573555743366393621599195976267935743727788827183517095321230820637742126067889019665213164390290062070086490541490087922889187502866643165223474222152292371630635439138794711457873999619661458114893978180017319683380126983120641424939879059628457874620836535554946801030253436946381021247115406263632484804383695320385114124544559909521290483278475119817164333705567704791958463532021771160857295222557768598737275557446539702002377398605084666447155176033668026697232370808420470009321148824428418389705572556366704189822047227135423662015737971723144128915366318163252037686350939438961105050312976676967329177197952756021289597791397338470443572707715044081895964751092291481135333163500784426335086969222350790452151470682249035744789451673722795644580346446427237748663833724773055738574222477446871501122860335729438705137534047869725490906711494592485106885753816974753130866230360407926506022819960149735054814022037339465954340178612152040319878077106430592659196961703359784146025873205470608826469128543078279531426173587139642452817225181534576963768759115834369507960533557518872119645633087366816494975254571143679899649491717075104399517306160274939826782873377728147095270888144396760865832963585642969396605820937742695276189538284034362525529116594250112268646631014509298531366336740362116463524994112518288361022718725186733909161021464483147766958810416653193317981915259425065001767448497554577639274204071071705244125471084327932064913256116544625655097111357879218899746235180031762344942760169055331365226140925327502639728177654134067427560672144839015071652189807317452445009056094721496371835728117777604974208279421394708930008595905196768223073852631733496851110527349046730941946132098007584486429686144893021869768040494264750853862282987486806138208661684993068425524750265051353734028906190482450851078570663574840036302550770980899456380758967689998731148592509807498959236086788270504035504990430792437032016856376680319178405811261802074955061597795727228291245608975661248511105127641151300865259290562972594488780807006164810445138616615841618866683247778933343790417183231981709585853401070402352247880227834733605154654208405827367703397973124817867577312294892836600548995170550964519017755920491134728378033326750515727791786492541954821643732033152252733475994603308334780140629373474610355068194857748405815128125330220343480629589196619680550886899725922137105216388200442015479933602992398666447348073001184279416147051990832666558273496164807310852154387305610527877711252422415258565032409894506552122659357455434448999509546516876567873333914554650709822738555250110914569231361810681278643896615945548615899639843813666952141996624167611621492507842243902766221696245619381375774605289899874210671753440701163534059875806083218591213612602297792283259653398593217024941897584586879309412954558704641934429167525386399311944692329646781017786882955521326213679515731031183203986702444464679264883058444930210295590055606165224085189224526495039065334701181368385574370869084681514830806912736541133960881470315237742308529215400374398116689039427221492261470641437661432564644402005790004197437786314907560361356740707196128715870019180872806279505931484886218059480821987893092959069213150697966414731390314378598567994448063764696914845544937095976949556292692796483284851190274166372600687071534820393215816026820899675947738834985468497728922675033232726987359807157258554534363387708729838351923974285515021519390503787211158967755318117395341875443593494088249677470509256804069203968911906532856935833859629624953249282547694462129874921376210457781519780672138068580237523242109758156352510154248725657237885230051785607446612712455877439910598727422322236228918026459822218149591970911650199903977933286839068419271139224493809573534424910810569507347636018232048772842840705740610444557659804248321191219347571463409422539969701913590898411004567236097895765842127957787359469025195874392074029652861324112210670977858242810226625126442091294631154867160280576157087207127738748079837969738346736272907326954078228907240806250022030103243471070942620769424250383227664179624295113595650922927103176569104163069362275506704125229083883227741648535784720713916998425594827704884440884048570231868405014498867352517286315804797924811180126154783110497902148043082659366781977209563715381227919869341778767396699280870862522931948944127530770998030252387371682413803951145767257140559728875692368709218878174221849437349204586631919443118989273373652595227172082496817103834248085354242741398581443429002334727240172368808661300231451115291328199507370065934925021969833175256299351306328641830228271353568846058387616229810955704081192557684947405779884509699286099118817298430699433547211009079482595408740285359093432367204533672009970779486719368138866188648840163573708869681067182080546042978337057745453023016747935779322389017812077413454635572131138070447390064042098690495563990815384766717508180920795876792077075958862404761890064984999921424416035664890724207484476976948663181789371914701106962448405463092701988465606503300165084244328789019795067098840871060483436479149382772059422903723115301669510704882112896208019251794996975248024340609600192493149267102552688418448337310468569703642800278151785183841360284358832347643596421881526596665057964053827050804071884062288727904628572069704994983452228398970557246268968220658737939309295962851885135390864007109076454907858176227575944339250250806424963701992166486681083315296440885760692193722152386434371762373410590481977858473872297435270131851901627945492845960665561756900237380050320337739114937222692715636345829089022971742750975497841816680681521790589482652539674743477542852811800520246939928822189145763731846324657221289024648931687399148099267044885671733352094184536756797510551247165871717923549062099764463998166198147288178913216151413981763321707683229249020148234875195737760846468403561985525050842464738232714775172951842741929209903518935372911660933298610653450385567441423081564273457132625038138122267839275539394488317379385537074050425412207154034127084217300615381424425706034294800775550428346687417563346954606915929811701307971860847947436154534973614176016275979962289620596506204146325423963174288918311054000291798070696992896378237251211848896156990492511653866861708727175129743629232669035317239800711664336916352757273273019680964663040723297535426909582937904934585625428123881208162294614263698939436684681006337738069910841585236458607359914206604759267241756962489475530594581950179263984531751086934103867126900494224276800810684669857022045988157595957258035294079410835500711458127756501041160821464860452114868285466846677033681168740753966890869829905162812697068968738906495545558280538657098494992456740410755232449109163731371774089491724693292280219243313432709883187604627083249554581032445654578001281629105731324709943235755260023344512209169158809774752301507192585314852433760106795543790072985084166023044553539415733291732895468679601579454025049341590670709620736', -); -test( - macro, - '94906266', - 5678, - '12032817648505424732206470115984402822087851800458754279636201919240648069545320866560153680915753098175361305527571944284392752569770663535206811189003646879509578656245380134150984700793677615365069140988087774074093292666569225253766058544069550347050527174441848464033769865947958339935711577356378541412264423970226396093645375936214905159261610350242858917417274825574404844112579056015150088968297195170716956710849024033030314901530321313136125969347224049980779583582657176881341711446052030096202772974538698445525008118596374161589518848084436336526803665941965555491104046737440894040963947109593967956480178145670129677453883803551841426177253469183865084475725595826142523985262137749463269279257798034486481726137836527313367452357290671314328438612857618515953366030368261430360540763695870271485039165724885752553866509861096959097856524796407276935782076995718449804132659747765788304047343356811406221119007276554404855974610764195529043031625022180466201811329438874115924370207854394962989072466937684755950839558855381231468598531110161791599549283779948049180898253978038930131391965203934491358832834904237088198978460478436435260346993291323788040533668759476466237387161215852475434944660862309069972151382884427559495414208822804115701913705271785723745174681820409251541457004542480297333724163305849231905385022165131472866706690289906743159860846280981424473469229829927326830076613963484251270728729574503814307791762786013555601416538606549575141032711025523511415888723638864251522238403514209615257991112949184147400897053839753457149809381976922528684839893079020417567683858076689900826568207181631852815210327645775199600779525983840187855012090137702437886138818889991865427565806357553975294746020041388619646758784835829444515981357443648673117967946792507459637166782407266051469231502300232276219189698940875042523547644156383005262958119279161427467899540186226164668917413440447866544343462167108862890696625841719457545138663417647004060269444482339780740345497612893664834632640370620127200676855405941531569747479245411572674091251818894475403815473239183886002466157193530057684670655605573446847521994094849382549641374712884009164471656571372198449910168561787316766669347248358805643837182081303781837240736436136105361562692457596834668246060064085754181237451898863990804515605190388337710712867999191679779786712129894970664010407413944105206949638872966539657011251994137558113271215952893544638320085154429394938826746648785358611940674926917169614084840845838330085461611673093497785528104711054917591387941532664903919365872012413967652428893771254783514729383993987904033719641464047625904368835612214247748109590039950324488045520862407963337473558506985216736383673379753911040520601562793518299011996503309262568208883619152964120357680502143243237914460301562979082299253093538389428819917042632652200784610277098397358002737455993489830854317722387980601693621640290144850488960430945867613445370736462277356198969776749170074469142959139228103077704779948067569593268552335250360809034517777505978089487420438155196173015195413707500749188879413696451279508390758428449841376760780035529721795084992757493136169128293321086137318909063123039058397266188325938039949845723539644433753473294540228295834513955127390193735537175144046212555694020714759166871608060391688382739009845903946202459806666413942788393631458788321174919289511304789355666166018710631603596670860213317167734166889129692249373293565808930204157031991011885528221419033566927244666672894213270515941662085431325595906230594776340409294990273749504264542573465334640502232608314606771517369952134843645398223542989247175132652279714716937433111501880963356885109815217790196450752957228567594353774344623557404477791808889243706743536894781675724627289947304719225770725660654839527433954061516841146022327990899330817724998757824990111295998009049097615922407581255190739491092231346117657541300062685972295196237757295575969914209258890395384934110805224837375196790993957760232726873726409663790983348867817606845992238136671232375378383442128153562558993510087405303974930371982970935436148399729480315961683220510601978266384119209049691241779665749455934311999233053059017638411476295376290561801091208176239186699145687486729178616233651626665713543619439901912710580944645778155158797462852234495229231406539206472287577297378192253982740258520802032184319738335496087808027150192808403729360390814153726899607792522414861087778808864723924610633595805110618744865362177310122714818412795648247881041310195803062313215902474261741174952685814591966714305480767184438698736320248721848847642234552533028696642298731293921638337742568224929679203340715151738759154672955264904729487192815222409704216298143439170015879950939045057249309073969228984931579994969781518397426907617306970452320824844550818387028299796381307177696815835155244322539561008715495766453539759717077193466845576102664991398263517768253493037683951482880594999592487164043876965317780003505760527667863680438637377024026769527929551980088550989890140816338761108689882533404008958689956441208348099517790655163832888672441196339023333523558262873440940381150551323449813051211874782355328615332116487157592812281631495362815861059878771091573384226171301604486063550985885547526084873950124641753676687247950243102682512625690242813329639053488889144642576604385864315139668920318181435129690631047099936094981891064896430786909547908075022480142180945007023530760518540471631799916726591085967028615767603414815858484391191419226449103172750734862583321173181611826808717155895467441107144481818474820145538915123191086233889850661674240080442220814781759930155904531817862470486365345886110364369758405347228549431644962312521692584793216958186300617894642831369657323204177058526995631057099851113254417633669886363824556236862260831309128178167803213227296932516696703169947834651505156750711821678584827987720266958112228898408860533624224495113943886752312598411859670081240718595741432294942764857421091909115884148224555916194806655809926642996956901825501253612530105826618755517164012710830281242388235631527379824843157390117320858596018324726028114634513731910537333745080425512204214923714850269287802358237211241477533384595700504349352943037853153152826576013563379638817785556868194091209215931133480115980056464675106593427706835334947158188177836411830984886508981465689899139213351717298512840062197481925426346012965958263308687858310254839246643736356288094423514700890181531946170936255870492888090106543963957053638462537602324269379083493214926494662001476819723144975153483394390016211234911521305578087159665053195506910683427552629512701423004114557334590767201287380253575889880716924180835742565545587297372230588277744954790269429956487792324583964844408254629753937326834163368789921452639360922619001644423905992054827955523551707437217080870067136099865977482032198335037959434533270675522876697240093272437334734369226923188059535469846991641709332683658104575190444624146274210567461025953960170291512193215781838523322046313242892959796365884825784776849648185822682474064256026698235271594627736075157465861135739641700807125348820678293047370189781363932882694927128285410177891393529704049003357809736578523395638279194743744900566551317265479571829718951144370147604490513174682721505873577926782362538993812368812010097486662549501136198241341798084746545706437440426878375892211248824662555732459007737499801554781654267879320262704068105933519284285796739713621966126525083860893611057628869197088116263187425689411609090653720984344418988835030010895382016374020344833711823116640310985731777663607552620413465337138339866989132413420055538428253299998808303388845963185188581487436300195905101117842154869015140378602684126069213877902049366627282585389279538334206573795995374258165195704570108297045710018639586996443344402990380550529595121860257242747783754028054652596757584727739810928998066179549536463070344995795834380103032675101592624345721957432323326573571256893898028138781425679040966486628547984753574864434930008117523845237304478890899718331660641419486842158394473459007167484277217322766481893195761391938895623708651566392702159311537448090535583956495076752757058074862172390454533499093851240951296540985779357629233421157703016528130291156343737642593244088633852787614747817627060006991669568592280723672383298225466281340956636710431940328427911743530915134552931031391690006021236672575108176444082447291342833803642309708607039528118937917030486917866538554824932145847913873347906410715580065154707297637925304057208331186121542705437629918199561558440077780020149125928636524680160377906904253706618745984744483286494859496634897033537125257750234158366566522768726012073504864415325607039305152748943100533772051166644314150037384337861942612593701611683871218292642963890517076695142661403572711320388033047007398654918216722136161411678662937623850123091604556006551841441589614125921909593939770390437476075298171895573919863135651088828848336011726492799841320111649935389358931258373693459145057553136475922751342605359538155293383583876955561910069358749936951011082089615693841896629336961254394974036986721026940350856347077152772939451280308399363104652576626172429793776211333913295809413213919318285255196490381055544205313396583888277769550637211217647203529389040683316967313521879297011278503165986866646581137787534538214235999303080897442666172258679022325039014548620740672684311806497429047056530576223713193356973396804439208879107248745042555605441287111013049709202762299259851107012441701468738419926890133556245430056477998293002461917643271629591853938120614647619772495115562085600504853146424640985096824494050598829781714618733157799877227971474455616632639023850925729720213591779252776369176312110497936405970870772189359848240927140061006848080799072830556306659756678997694657936924990345096410314626570672149731543628000558026533834459167842889970614149005288838811229513837405392153251553605330473659867312295620005340633564023904208178972115034037935254190823029327420408002622341072381223538257497215682930180996569122652703053739471871654162569414951520531206458862671624276235522538318964461432849995356820683233465138675410827490596964352422796420736525862662409202276892082905745273014755041772993819374747043291676296825571338645605019288235828607460219104472171905393978286058711994994075946946904501719626129891297785262794903831823520324741271326470009925340248044413698893160087471101115598827156017322849926448246890250940872800969912833939106037661646340854638183562189382226457787900923987531877913431946108694947652717492923066187775746930063437977519195800521298729848366280723108648799156318978065768015360592367479405252285966318000015191998608772683676758058031311468294723167697582272502760859874036909801930740974001192058591430098287098021570441654592505727247768282011756726844525801256651444301950079120380718219338329468008534442846077685713544194007524327955071955226200530986913459845314710510719058167265959825133876149104200332459364223361260375456263610906578083438476313348490161343553564484692187424842603773823747426008609267536178919597384345623591288999415207111940819590820240164261067200326676758012794725260339664703418163303398007586421287243859016657962176274532712513078145376826038329107151236318002243613099209970831731135481008172826345298961517973963163916705165676097591487481466079223465813873607872273761995059993093591322303896613664321628779241192911035846341115545622374501606127977756985292882117778296500478276339993749813331078686903702537331445966445686036256887898585809843950252338373839157713280364698259134024338989451358780140559424371687870519586950515334379886144076554360694721608275939343734737390935610438901882220547279311828445041103639111103188607674601360722196695674871077543938123944828376247570522481733445127428507577252676752726828669296273888040688955392452214259080886549295627930544496374040482414174429554699068859457610531632589984450033487991393950194379605142460240622750964605904319347162317103632880464489765441781176775360255307983114046972917021261575999747919513175356289269738252254493902081778863456041493700800804759871388208118144666431845192191907729537903174959385672176640184810677326710369561461912187493932368918706337698762794615949381684820435117964874003383886204354335841513328726838198927086809536254198720567097588143419818644573075112705490751622292191492544793418111741658483532767411666600528233897824313428372479855025933866719301492980684042893544902172403475761202059963960896638007212043160771550410552889811065116740233744236032304871579001993160935959555347073311004243774883544443676731406104831265297661674183379974269379741288515676564618943733469021389351199332674318818115012130962124777380484159115171369334822744164229342075923978372260068788894241149239047819830879098322853736363606047921128478685310683095184709943048770806054769494926160412480736093641419077309213991679052703634396648375610853612922041643781461899880570131047760466065993555093987696077930050904841973329976985820417577209060155514571722895551726144444596204596782453047002156424345570004197583274416101355362390738881463523630967387072211376360805282936674787380880650737793203297867993622101141663905879536696169691639238866186158654641243673999077254707876292273024963076334728546666159776798341058364962760500123648903436613222992540337677988477671022338118694216304682423334130149852860681684099263517683335157344038308938179479603858917811593200169277994326389000742115999246806304045702432487140508819529399245059884575934708946209516322574789907597746226957553035886293114377154459544505608389208459380956440963140789343305699658278203986551812398932069405456026560759534279324948812804513062587167345623977971097453549344764469259507711376402428457076157055436430677764738886674081844106383742912023140510418552281742188746389236111863491148474361612517064934024896521322519834851151242772104556306598929440002152036519490819251376805450957184749544824693635603569605225972053841581004501584100912328333976003102107491085953159226069012834587327259971112025925123819947881840747175767809667062611411996051112013271091350150777864798314871955256044949338844757948457477116889094191094382540558054779516264683712607043026838398910328428087833751980730006443119069122334166099941402646601365567136347123203738359088947443981087204456279328714404539183793412240994826870342095392017313400572110318532747843060607288706258394994682842520556381575601014199010490404397191138445152855809707016425452959778664359588040560748735412597512323836013768239677434435239189168997928071347187463000837985697466045497488955639372562589230908251673255473804486520327695043897071532175037437036938183448706068445520270184271860267785443607757449987645862550853844492488331774133732177529596230056374085739368318799336491781716721031643253122590074871792724944404133795117394685504903169776472613579323786988436816555044871147023821295375315968422237070919604915553260798754019817204005435917338028778866898767783201988249690480208167510788846166868446591501548151404396048081597044050075742974387127512894683131544017091983972922897201447567071326201918658162425054687848305577141613831948331736546313547366384763806330342036329442085133559102820443474867650075586800703988545083847887658720938137520387462853564941611748541059186958982227681935894334481608643024722381659381938989731023292291485815605912701175709672139292877678190348729760666157907954715630362098750256936461038759071141133514628511273752727853532279858408268908582987443368819679334383388270166337798654040644855690261540077459818835228437887729301076041005381936867843411337332815350029407543350462675437781165812720616995958519407473614668214152449569347793047763581660230557418465248972034336442550080954052153006780131714480535397523095413274750723701383225842109411649460720870423187520888470553057940395347526767669497718524603967849112705432812547718499111843247323011841160686418751692868907882025078560674843768816179401584803887200747810776387544791913903025938435744852431951915576190055048231754367790804864233775987695188801541755557892125771674773775596365864929152862381755401283073853655055425091448611697016439954534260814030388938640509188143381711317813476900790628429257746511202468312957230036100116864480097621669013542313504580498125607583068356957065062879843861421422680449125994612477774818757161945326684776971564527300842862017927612360118968033138171953084120164381524148059624459163118084096733232992442581634862069037490046169948238393108530288105627559374357574375901411757444196980563141505220137571144388964279304678461638650126063683382309278978344376529180243251205221507357892280444330744741037298325319700933898637890602101615296398869580920345296280236271953557041411865760773333961802153204654733800918538855539998075391359632003872695291240543210415227135533202642183404859216781849310678370931836038236340074191979283348256435037626347573331738056630737544630627819667754832890022502410501605907042038148659166291897056811128443400490554763520515617080334010077029504407741614050704547796928760915765587321003086708428633478958994497231881728742148146582878333513294577932133195398397292515911616512890368305984393578729868207205694140862127741104528308067361504231110165275192585475375358000676577709244330704876174208560189889742189118009170492691256513264181013828227165086680711420434651576133518693155463307951273683890278139573807332751907304778544307753690835516724244324828301915566152584064392368154012296367388561296655115159377964858217285140994654349136595083503371058992673764518566714682145847493882822893394347204092233214651141128348419317600574953305420152824611858556704207679618775670228729011916634895546083736101005758230326310636673429185051800939052184453293132762586281584909086427718838454160054742974280328396661361347295963302563629881389597757395692922460506227719569272480843843963982294218088153904303273847479651330200041676283719440322315419856051041525940239722748989045813626337663435654703148317669134876847555469792411025033420364193061667681444556983341506990373187827551963387220108573965968914968862001608003924039023517819236072227063268657970009813282109838740945014605897718935027854417422516891716032864362714644753952562246051636958846719430334197522545309124095753712501839140881772202359462149006967535743381987382494199903798783450128864108137711379338678990406261945617986484478017729513417966059143295468448727905734551655932034516014732958476725736677666360745474765405553207731525120976743153206626090160055202221435671053558239271799027644260676893678561236876461169942483963790905593236778663204622182700607533615177816293194243328323059827764195754067310463910960166786833097658112569805863287752396504825639025116157475645847961748673868648985763576921316360028625597643145982378614155913337308072899028630354506317000731973048320498440559655009741229059616821075679153626408071146949434874870710442443607598092254881233946034011674932649197951588391079113646195367873645750872572676353074784800670128148448926212428049339412055475920927927064266795956572600200498190491828386978461485683642086665791764122916337004769909968407222832293743026188332895081447303907350456907104380292438133354568556580913923940135089837451503139566900151184776483065461722434703576835856162451903500950263460660059609102492532142956330352718793762144273337958725209863219465403332730360337994136681320539676141959170028609571573318264331511603324410628374361114137620410932826988141316635961417071437490827691742173260234374302730791524687955576187003866752766949337018264318503626167264228405496153334243531140332510516296899883807675047755079172377866058979779109219361302539854229267521185113459426964212674944243036359083834041693510700598946606285775592307909800370642066904336886030146957671455743670251078744477019985475848795376334708946576839355982663342271782974876971670099428998708971102417217050194310201496909274080129838572650933663158961486164318754012103629249337765151672364719569977796470263610483643241743081238512099346318125509126340730907301902331865609410500322101548902016145028474991172896518663299753954359738145858524256241079822888388025974877315851174825234099588922307983039849059328140405070220292462966857742931975247086268060742036088901447914159791901545682768198127862624633726084182944519076169341611788879344467332624457235181005489161468437468286277927595231710889035229963620976542808014437720825245958218422545401854965717001947936025069441351490369482405131546123008735270958799806732505582384557603513044063735545265173441077422655347016647100822557881227410017918031724818941284851218632476074548990913121757687254853114905647152161232816453294063938585231011698346476850219902049515565302989770984364797494877746871059691242951446947928616748412677311316689309276924328166978373287156127637754250091827262880001580912029087294416597708081303921574616792751138598416609282955474549781919323050366795607116559122995449444513824012921931191554790229338378408917767888764757481247942357523387981462036482918774775255481502617812032424350337757705134963581392988233010269239543026399000590407670292541798141931143957825519431024943808265104606375893000801021372156629170649936482063505577146268662962099488092098200661611049654157290575516049458547343584333829118330105341165469101287828518455011376471874002702126745604311883893741228949110274354393717306210252780458508823091743222111041747254441747473986354767554852139796930960587571954051842952106734815850369832317500044882713313649500485928442503705962330735475241650188479077738536979346401179945139932535355966728284296269303465382689387382904506131090629101374506641285879526447951961592499074899803465202603048622508966269246410248303951769201230670090880245754249900954768059240928580835677018471478117764727507460788000454066509256352049419001433619066501137325877958902450951248012775946853069206507022910965027828695344876662390444745223071764327986092164128821369419529923449745342622529520337107152499452702345241141322434371161845076945400253720116974932841155231559246404477495415318558856170762805541331599037682445748096007207307457259420504514213233031560297159337458934773052943897370160719593071005636639052337398910516328917458761997763791052147675868492052732846056244343846856562859110918170514850638431897116103962577287557650861624128410941073015672545799355272188821573142146157647220592136501403389440498405045979220449287529240951068425759059315541517416653195735778257997109940532355650068087437125593263015404801959966170854247359416368888999714143993665160871834991848566207054598521044690133585142761653289736942697455812090483602711809497731994035628689666322904923368824343322943897077533662696509093532125560433883239720615037830617553062569400982442551469212711958432874003095252511501251544368163946986793533762477996739664587856894977815882349958159300266076187992625866248371863178211081986479246265805496439281433789465210502472287353963749371542009248496304898171325225431490404443696275192260731587223678231773234700501786989060062073372663103468326762818735022839079304658268264383403675611385203208802610883443153396372155598085767531581987651375303196560138048749012301078065330371665264754684135929975327450958445710569685713002470385735812499009271125281912305498904570924803427650562790575789311044993863517834700777416970146268592915939173835339588498234255520467622101245918125290891960721252962341466913538814589814214723753781664749478425706364352461070224233708179564135246880492730639677674623872309076224196922090720446752424962016499908060928640446088590198190025780328393379622363600793252241003767266825105789787022775751765687273282872681784817235974474959304500106923652827770175776376057866784637584218919587715646859185759124581929407837290204615476399831255232642772149604749965883742550558896424909600890318701200878005426405783690223803023797534308676408970377177829432708888482899871770661919987560426133634342816194791652942901002649991930864509397547495136799464971411961885951448364705084776854218557154068032421447791593957493800552595011736497560627402048363722641737191562791467192752850831819871126942696603819688457632571061264341307436496659871052442884327358088521230434779757325515620881755317489614893979565115465466459134952019342787508889329177160466567164607203135727175727007576133217386625201585733132524102256267135974095667268967387808616588507490403645684015340306735062054190431238197422650374750608082120129477961774411707229963815811485877200700501734026677170462507781454324736384494629139100648590234634063450890873793218123159652262636940460561659812567660405111805037271771919133677053378340571763804818663579984080144826950600742568620996921074204543790255158895558727569627833033922369940173618424508834111810651656048535574444567986963711635689671493979686086392051590735412326987468072321026945906095052728783747681972245983868013037928884763904299129826301670561248217272709934758302637217436483609049259979017913572017677999917451517664593806401100830094206113930664869181230286977905241453163705128560161844356057897016629444587321825339889932073812247330853655199279654850681643123911145550445824784071197446536929226480929787125781620877835455757799725872429412183788180777229189273296533362017032457858813870135280647619436731981832381160911893129851064121020987511004669726225726728447523886592540185823062928562680797115677436491664945960425463840352618701257065715147975721913145513121975941816861627415802916250662475683313221460810083733560259082176304656979800876036280685013224264755601477814078188584904150365677219720532288211268983178369847544314641858955739505549156547927819249161988086454580912459896288180831839198694747159727783540431533139780840118503526092188395999937083438859471424422484895173339353662013418404633914278270531257635152842306416202901968927515006838776193126399890861893238570955140721902636602451481280533397113331997181668368168114113211417441091536660280740752073688197951869383500740801485250371189839664555255637862300294894725338807388545090253060968823072953675487974449697590292547112002691372243223615249165249747041660867764509155511159477802075808850762651193636610867311554992969899613510446151689019965900866044828778159525923906714414752885574464308524982926278589922516043567064422228451889411464404645562403027336145425521604775172340420217961207569279554941274837915390099345785110541869546066004279176509714969623554456015482986407451412652305793262123648552417609567710229212341687156454311883528279150390985919008321641915631234630542109381453293097771127251164835846456017032621220535159510911806712579812990017904201396748639648986580416830392353504059649048195263808560060144490097812861709892171321718078141652344634889987253449435365479232110959791057112787715767591956424199236727218939549730947807636035618617124214592974632640888278642920646150269913678711900700105591753932021927544248495416598915245127805617973028286807341594473386206410511414428389049099794186454102765796914905933255458663787331998410234134210186357410895835541247415216366309533445597853759036910747535179357644751896549954802762133472758890605527381638477541022802894735646799360073180253868675653146890507692412609328780793399715860489456638327779713788516054313521050756108383748787190630773384260645245277015038626404267544599526329137987727604904731562738505220497843816310101861170621100872755427778464809073169584368881349788891479628643600529445515580370114613383736664314978973619136220173478287784163951945648158666739841536848953175419910538486514713806203315648665785618237610350582300314779025897090284284080969250933457877228872443367222249154142248644276474288044127432827952859178595732895202190015471726020796066245204963376906354394976290239211712022794927835141158864526574570946923047666699485949903120984263356978168759479817623935013795014196775910220111958690782426346191285770042525098984695899814199136259926824361465285823048578317155487790775485313929046655222874042698387928987865423117119839944817973165334672655644240394784576751152259628370824434663024024418575011518490382064521827913667162089667112747753535124207783675418967511974700275667309012046788487060329223754816307592779170924531501164340119876000139327544408024106973184674625473383812276564724893335841539005571654820183265759775079589751747626589104877587523415006319142401438844584683685256184472651725051979384269512266601971450685653366718533020065953355981712508860345534161752796241189385496331101145400268056092980486470369444513019881534614061799341395392897417347975110433595794498856720510672308772750213294104276272132667497463492787282710357371813082428478468377819129538727211815622333666816660354583565438907819881292081303387043386670876926764469958036489231885191131050114302131977936474847279924851923137714263077854243985023606988127523596289821331500111059950584764623037107983656960989438380956968393260575271072778863957365450795572899629582643385628639710611546711708409238271955614736601631291370395060012833231421354443797341554577170376506036564132217557077652411894117329603768900109332749511859736210742285027560130448468034446432758727729638990040491574996250063104797738677059556962784396811723371443252662772605997510646452758982125426031044458649357552995121303204693338942472794723310009789920455359278131277695870668310315876389946031424494549763773146136063430889417701887448847015328003015451499112860909942403248329916941358489871131665319203260702546158995642204910162911659670018116940727018797217171686323023556118323193198342370803796953278053782977187454671829418430921721985095232819212480102940486000736338657164939674716847410850866338919788038362565117722358348690989096737227059283378387520150072310475969531030512284930329368248541131113766926569221020923296593566377299675247629189109056398144800021591742635347744703956072123890797151089046108298526010507197557242777201909634714422471270603537857950184437259093361956113283048564569574122170292703201825073022983566835511332308338851334507372273081202885655714787807833951944184851958437229989794757451452736941245634812065844048175235449024407397606058411010621436622691612507865446029785762584964939590202876090478392978007566584355372687291804000734909051848660440791202433127588453190203200783903284912792280548420676834695155901857566765932088926634171356382407121102180333281700812579308596278561884268236429082157465746397088329202574170766452511505505609003041124950089258440827042552762430618486885201276510552341532342351164734524285396714462005001978788690975960312082731929333386050252112006807345880064713266643891024391700346350471880262858040712474770262634884317585612572195523131314179386278947285577465324615711086122333531902738278585784646020600313701514942125391959071309667102965885213697839889156290939743771636780743647494786980566347580750783699119643179162204062000548787439490012304199473697303589997900840621652874808426421326071990248127528436949608115779005494179734937511431781806145857785045035166485825750634750296960306410410179563289780730826789234509202931820390586826950654104129396809093876099264731036820798174964438055115624044199738101662825807851197445426685021856220844261848759266200674656511060029362486031624820819678918152181355926111923461166345822665086176145950743789341584980812952752231860843257985965288802261190266665922655937859396637134691957840093532444525473306658768602008060074798781369928554199058085681741549030727173827517234927484381244144270371887360574934364399214113609316363985218988683805111173090608023338304021000410004993333783004263450282560060958459050745590194592895933947062092079507573081523402757767724788144449830636192589330164576778830549052766661774876685632674136307814153444590770266999239828355457576813955421195065159397418434372715876860476997930972151568408519046320497117726447903332629934498123201460718775034315147902361476205883702162559670339483592737874161365824447049081019047867077729938161516575462820068029800463721563526770860295002450363435919771658499908957051051713169210155056685711478948292601652283703664279729412723327993385676972068945177529247890734902739568992396004082005895239640239584914895675194441732990455908284962508388272481664809644013695108530643590237328537639688567194704667459259852194847009346130261141412179411299994375826249494565666674099752312940749960678432841327379608811354294970105991967067932527833097758928415762643944723789054971807292766811411062804902336531718448905647640615296706335520835436041593386648611858094071235308269292644418143791110200993361422914793119640919331990182443330345380585754214640238824260774995215366915341497235208474057031765422776345411042327893101949992571577825558691897895422945443680380208657578495349595586606235401227143323363094432958840171215550050203924175856785197077586124718868813101246599573589030798669834807255201536300814627715056943239448585159116823195136012406495891984611338805585159868346247052637564031114665756371321951326231045738075829116360629934323624216434728253094934162532761445177538547165024471725562255682921126585840210275028026032072889156454737530566706272562834758199753126146886585122828302440171763025247744940890748240827209734322451822354861070551316853275578081420600654807730862579379336164296300651251035620903073641444759072951433003329108395228654468968443998724991943750648399825412774577834064138787246298154005871653201690041161564805619094094950177728315165333892502449398614595846310753261175601850635807705775203998921942871973931019055845469784764447913903988508253744480825540367906677867871057567478493188656741810436755808948879038430592843598118575241573451984420451874438273802788249941071249303464372879792957737080283657705694830680260355087766018017548240826889393233567613079361639516134438559058561470248595710630583243521624876087878849326799727058325744525127686358697175227126042729704763198212221500110961927927031953451726345983879650304506115735253749823992717894744913635383053788207368902228723257035589214660773099731574328578894614609958412257841707173544840654053687963529161718339377820673974804275660397594495763320761934541624154607081082091431381630887662852444276208094195753892541482888964133078632756060019952316521890141964819830541862502886279942861929515434864567266354539499955976735355894393495991004445955069390234829281284926336527704287398385545271066278910515123558177655155124804872688188708038652699563430158718539676417362165324740950301161676147226987091336686975730078772316774484804082212792921345388911884307584665906933970070288913666161767306556816492529686126542330576930427952309859851945687695616787391724886208606078219586577521157997471925755521830252778574776276558662045076936010197431001405073169538271205697390441457933908374685337544753066892359751986805458682161120599250577029450471790531116688637592044725816809350715401468061886209608998308808761053155925047485763330982810135796784437153235684378855933935608225979566539014908874229318867856908106633416008188397781368955225608754496472366002973989622781331076327936906421333836156329940767987829949219414282739937552368742050095369670510834581278968845142676270307586970560344050293627832921967047772968940770231187440894414891611957992234348384361908134992564366682665696510978419367665490400052255968546785818638881481409824051219338973454619317589006191281840488521392932267525779747925510077945960279398495734167739330399574628957203655424637187995438121309889157318399563297897718347938915006476879059728332276590034174776666804805807585137415933903539371546508657211772037063013142093943376911484717585548985036753668986990778732349370860695937442389869679255309585195314500199898018163496806602205369815418049524140539038443752983715573321216713716303309876573223472073494658660387196143966238355254434272031875166654429112534708035265585042313178039140504966786200157779032253018379775395031624177802409362800776274088937204606438009792960229334141357316853027529326270934813060617513040349194939506111829667596679721724554842338458197057324866302813949134291966549465895240393949176765935059682165276533388253260395177273452448414734481084363051946017495590145528378728694589718770632641502417259843086559611204202453814610339462803726715365311373975645333786896813006476033470456391277472796397664318741782445580539265623629643719879907041630801149589490342214249683643075413638713825740975202255710524519005628410890292248754754939152754157107953000785347651731062707781298031248059008088083511571893341447743035315052308357772390705357815401965655229378522974863831081531326498095411458206016343526704502197334552693425313951442693600699979416793419044571047950054591933973470783926474430571876070606494546076496652235432486913277445868254001418092467524424087719936981330245844189018050669626927477561635971967675947936667840573264315222817706208841363096504161459299455789615473844664822043191643886065072888244114235145369904453860898233956764637008735231406874585372559803108174040402975992668970470323458706663340829004120177247777909390407650943557103557176164798280730176947885600023350422406684015217003439639897364954618944020288720946937413542886098604075227026482788702174057857719036625711012261058982176805769679934893705049041439972935657555686872759565537429136163222780629831139827737682328273538007173604361766686339194080863757502388242360541635097206494291599132259373964992477759699130503679859467387685858969458881363954404384016848950761974795313353392698993567078740170008504367063192312102584020548165945222524105239691877251826775214235888083623030633684703867930130650125295968428623742677462191715457239299389032287069336032372302828098382506936703358757555827103340491155787211743066715263418577384309801993728612813203556766993754656540038816495840381520797028440484282254884632112821925210033546824602794396854826423202843726689970480869195071650949154727258460224485143154709172855637969394753939537534842454461823870448127360033316087549390339491932603424096663377705656553981384251344651715053403923964417851970419752086799349480032265992581424000705801737101791445964258963875786190924396690033057790178748531407381054411659092462411237526877645210411022521678216396060020924621034172725054413396654304600511543838181495559908429007654906632941883397253075597857634654462449755501594356663254192887988476758127961551318345779438588059118960711018114915926214069348039421926460721297822408069255012690250178221901583499188663372994201653644081755046119923887957198992066054340294114974546071159657605660183300202102344309467802093991861862965216891368515339833603657760186751215707978850910662690444513903724718434232835066662847876807387275374320546636913075891542321272611108399646743762333862252602882930547232324311990485665318593042026396489306780598510984447945017700408320977028919172057048382181924135570226760960898139417290817645998917756855185172967724992933123052909118247462398492666928951967247431522756106437050491531797002473836449419068540277472068963138393177448233961148030322348372301545504016732072510497336139578845609651207819365400056853303027235062359420018098760449076899084941741369357339039371012080828320780934162749276755522409809098153174862234168142466848375913203535996417859932173938627851656219636450621416451865792169471928789091851626456347026830292184338577370915000158169528450080894744186642838772985819834529563611933373632440708524703027899883434677586606441445529530405836184308602571764765354456106254643446906140012957381572512463660138820345199166078432074790037248546139205726353557158090656959024185745345956546890947422882539337183883406929169297400044137877815260349485959875657881972792337911693367611917919131915027920557706737769810315715359926487713855353321793871564010753738106086321230546595044476485010200470235649943642098272637082343166210803794993910337605136239806876905139720151979070575500255076889855737572108112919425325518445248006933632368025157148533351689787936121880720836116653840743617415571493745387797691042574418704937861768435997110148267844022966899508273305125680545431462825242960113760480968529000760808009707472576440561766071700939806743526995640583592236944120793230124851216017592161718568695361629331621064836815339177400421921220156618102527651553489597482005681543009594232948075392858721451225712296026349598054076571694498983982619415761813379326410749885515537518666751789095081260226732887008501369033072022423311241991556050372244766164397155244356247926874588767338935163683327933554702277547935287703755133035368418595728953591127644725043878325718984441974471692217612825126396314128770579712175562666092567978624210753782825275802681456221191328149519567354816438303073809218496633499815268520022429717046018825658842467015385712669468265707555696525948903227914864246346468870618605734062682911322413808861525616756567945364657325139882917475692209277183304968538734947428728388582797185751925085125363729075173796643775804671009928949220293268670456975658752584332903400349503949011586021175082326448210272758388252815782194585442203117090992668634959462750022443452546012055002758055127454792702255890205631701275211122693794920290417833369691631162589900706279105985583858392017695508708913053733434385675958920310284847781339811291863191093386084475914087239356382800972352347223372355619360570354411451544244307940032823148529609638296958288902010391872278763245256372127500248817419151015466871343223054572424151488837160849087690844793830186151432135847711240614541446439183938044066695316622116741046472939622004638961665608819717101930135624767270181741989733125492003140924411241153224900070754907516184957543551611208022204023968376636880451822691297708293688894074998217185540931850449663735709971989960908519813174658217406440733137654410084264390199313344416298280201059159586221741529060546858446825609039282323617534880583845852642034407748295813317970457691956263225675641685811512670217066518907796204233575773817564814095574905621916350619556603859001230105241016047652273704404479564336649968708539745125105915160022240368627482259079202336430778070946622175011973214230565495684814465576107906033710595350568611341645767396110859401880245617579689883266256409894693280104365291970684730005887925438391662019569596571533373614115187189312356643389006800187024689032302797342271128282171799878713212117329036060371547786892810406560993783700207922558468011335587906261901093629494719347614610784908347727972664981060886160896302867201510015108566161825129634975425024272081557002265941815391290337945136518047397974376034831138219062938133831604578871761305972624279786410979461568839594456833208172319195856872204542603316087926558321489377543723491132201816700479397540948217989075370768230671731249702531673564543406062253586483721876364885815656468440728188332621030006260484399864535626813077449518708844252479808421884652431126530875716970356579193081754594545979226680522690302736699184607929615623142663354132052863597405323796639870431453066308061197943832308479553993128427148101202879692518240366933913835269757022542403389041102563931777385856395150760422381552306943437155154770876052232484595793376372779715779096638669304485249549423986081793893310670696881891161170144901546778001550049111602186286345163199534989815372560517348564641269606632792272652115204168983118001639477232503487517975266466538605885310375386323449185231709798124778365598533541593980958124433491037239259424061787818955206789639301137224039378855362946151869759563140264720906997750013611877360612394880182302599632772460731913224265247765843851870907483675299829361720529022209380906861000458689821676603902075564791012594713699959332168445898305343858211764958004751287406251595999467293204674470870715167851421656776355939143657993736347249925156645471605043233097281630642396809038021750687833536173404097614118680059037340312341605883455235067338752800787033133391707487966849528493075647320868840934380554883195960251773502083727624240339456212211925683490737454112277877641954542607470029658579411795883383494012636284071606370192505278671353911009904407560251382987723241502706898676119014622076654875776162540892477299357715761700750960446391506332058899436675190871956939800022687432780180818392178709073123353331373011315965680280896735755650091675680722007667153708728485188186965653450591919415129897772500704531083484204256009802043625565542287774299566636078316295125113411325583706020566573294986977164698547137703200443022008505653377365378947288543862725055911788727943036314460020086504429170778872386381956215475209306444914466262735267509651875004139279370893320240127688827675054296294093093354920744403327434214120799757340314496705538078219995180518082515428583740839433883842984823268317117814453641785347046845620463915826027190815790559731433923858312882529042132987246860789417898096245935117545754705002593969747758470845487352156660639391962457416095124403612942059946284579486042861317902103275464677157584106545775551518446983441064825708631574744541847215534147110002165755331087323942894411304556036096', -); -test( - macro, - '-94906266', - 5678, - '12032817648505424732206470115984402822087851800458754279636201919240648069545320866560153680915753098175361305527571944284392752569770663535206811189003646879509578656245380134150984700793677615365069140988087774074093292666569225253766058544069550347050527174441848464033769865947958339935711577356378541412264423970226396093645375936214905159261610350242858917417274825574404844112579056015150088968297195170716956710849024033030314901530321313136125969347224049980779583582657176881341711446052030096202772974538698445525008118596374161589518848084436336526803665941965555491104046737440894040963947109593967956480178145670129677453883803551841426177253469183865084475725595826142523985262137749463269279257798034486481726137836527313367452357290671314328438612857618515953366030368261430360540763695870271485039165724885752553866509861096959097856524796407276935782076995718449804132659747765788304047343356811406221119007276554404855974610764195529043031625022180466201811329438874115924370207854394962989072466937684755950839558855381231468598531110161791599549283779948049180898253978038930131391965203934491358832834904237088198978460478436435260346993291323788040533668759476466237387161215852475434944660862309069972151382884427559495414208822804115701913705271785723745174681820409251541457004542480297333724163305849231905385022165131472866706690289906743159860846280981424473469229829927326830076613963484251270728729574503814307791762786013555601416538606549575141032711025523511415888723638864251522238403514209615257991112949184147400897053839753457149809381976922528684839893079020417567683858076689900826568207181631852815210327645775199600779525983840187855012090137702437886138818889991865427565806357553975294746020041388619646758784835829444515981357443648673117967946792507459637166782407266051469231502300232276219189698940875042523547644156383005262958119279161427467899540186226164668917413440447866544343462167108862890696625841719457545138663417647004060269444482339780740345497612893664834632640370620127200676855405941531569747479245411572674091251818894475403815473239183886002466157193530057684670655605573446847521994094849382549641374712884009164471656571372198449910168561787316766669347248358805643837182081303781837240736436136105361562692457596834668246060064085754181237451898863990804515605190388337710712867999191679779786712129894970664010407413944105206949638872966539657011251994137558113271215952893544638320085154429394938826746648785358611940674926917169614084840845838330085461611673093497785528104711054917591387941532664903919365872012413967652428893771254783514729383993987904033719641464047625904368835612214247748109590039950324488045520862407963337473558506985216736383673379753911040520601562793518299011996503309262568208883619152964120357680502143243237914460301562979082299253093538389428819917042632652200784610277098397358002737455993489830854317722387980601693621640290144850488960430945867613445370736462277356198969776749170074469142959139228103077704779948067569593268552335250360809034517777505978089487420438155196173015195413707500749188879413696451279508390758428449841376760780035529721795084992757493136169128293321086137318909063123039058397266188325938039949845723539644433753473294540228295834513955127390193735537175144046212555694020714759166871608060391688382739009845903946202459806666413942788393631458788321174919289511304789355666166018710631603596670860213317167734166889129692249373293565808930204157031991011885528221419033566927244666672894213270515941662085431325595906230594776340409294990273749504264542573465334640502232608314606771517369952134843645398223542989247175132652279714716937433111501880963356885109815217790196450752957228567594353774344623557404477791808889243706743536894781675724627289947304719225770725660654839527433954061516841146022327990899330817724998757824990111295998009049097615922407581255190739491092231346117657541300062685972295196237757295575969914209258890395384934110805224837375196790993957760232726873726409663790983348867817606845992238136671232375378383442128153562558993510087405303974930371982970935436148399729480315961683220510601978266384119209049691241779665749455934311999233053059017638411476295376290561801091208176239186699145687486729178616233651626665713543619439901912710580944645778155158797462852234495229231406539206472287577297378192253982740258520802032184319738335496087808027150192808403729360390814153726899607792522414861087778808864723924610633595805110618744865362177310122714818412795648247881041310195803062313215902474261741174952685814591966714305480767184438698736320248721848847642234552533028696642298731293921638337742568224929679203340715151738759154672955264904729487192815222409704216298143439170015879950939045057249309073969228984931579994969781518397426907617306970452320824844550818387028299796381307177696815835155244322539561008715495766453539759717077193466845576102664991398263517768253493037683951482880594999592487164043876965317780003505760527667863680438637377024026769527929551980088550989890140816338761108689882533404008958689956441208348099517790655163832888672441196339023333523558262873440940381150551323449813051211874782355328615332116487157592812281631495362815861059878771091573384226171301604486063550985885547526084873950124641753676687247950243102682512625690242813329639053488889144642576604385864315139668920318181435129690631047099936094981891064896430786909547908075022480142180945007023530760518540471631799916726591085967028615767603414815858484391191419226449103172750734862583321173181611826808717155895467441107144481818474820145538915123191086233889850661674240080442220814781759930155904531817862470486365345886110364369758405347228549431644962312521692584793216958186300617894642831369657323204177058526995631057099851113254417633669886363824556236862260831309128178167803213227296932516696703169947834651505156750711821678584827987720266958112228898408860533624224495113943886752312598411859670081240718595741432294942764857421091909115884148224555916194806655809926642996956901825501253612530105826618755517164012710830281242388235631527379824843157390117320858596018324726028114634513731910537333745080425512204214923714850269287802358237211241477533384595700504349352943037853153152826576013563379638817785556868194091209215931133480115980056464675106593427706835334947158188177836411830984886508981465689899139213351717298512840062197481925426346012965958263308687858310254839246643736356288094423514700890181531946170936255870492888090106543963957053638462537602324269379083493214926494662001476819723144975153483394390016211234911521305578087159665053195506910683427552629512701423004114557334590767201287380253575889880716924180835742565545587297372230588277744954790269429956487792324583964844408254629753937326834163368789921452639360922619001644423905992054827955523551707437217080870067136099865977482032198335037959434533270675522876697240093272437334734369226923188059535469846991641709332683658104575190444624146274210567461025953960170291512193215781838523322046313242892959796365884825784776849648185822682474064256026698235271594627736075157465861135739641700807125348820678293047370189781363932882694927128285410177891393529704049003357809736578523395638279194743744900566551317265479571829718951144370147604490513174682721505873577926782362538993812368812010097486662549501136198241341798084746545706437440426878375892211248824662555732459007737499801554781654267879320262704068105933519284285796739713621966126525083860893611057628869197088116263187425689411609090653720984344418988835030010895382016374020344833711823116640310985731777663607552620413465337138339866989132413420055538428253299998808303388845963185188581487436300195905101117842154869015140378602684126069213877902049366627282585389279538334206573795995374258165195704570108297045710018639586996443344402990380550529595121860257242747783754028054652596757584727739810928998066179549536463070344995795834380103032675101592624345721957432323326573571256893898028138781425679040966486628547984753574864434930008117523845237304478890899718331660641419486842158394473459007167484277217322766481893195761391938895623708651566392702159311537448090535583956495076752757058074862172390454533499093851240951296540985779357629233421157703016528130291156343737642593244088633852787614747817627060006991669568592280723672383298225466281340956636710431940328427911743530915134552931031391690006021236672575108176444082447291342833803642309708607039528118937917030486917866538554824932145847913873347906410715580065154707297637925304057208331186121542705437629918199561558440077780020149125928636524680160377906904253706618745984744483286494859496634897033537125257750234158366566522768726012073504864415325607039305152748943100533772051166644314150037384337861942612593701611683871218292642963890517076695142661403572711320388033047007398654918216722136161411678662937623850123091604556006551841441589614125921909593939770390437476075298171895573919863135651088828848336011726492799841320111649935389358931258373693459145057553136475922751342605359538155293383583876955561910069358749936951011082089615693841896629336961254394974036986721026940350856347077152772939451280308399363104652576626172429793776211333913295809413213919318285255196490381055544205313396583888277769550637211217647203529389040683316967313521879297011278503165986866646581137787534538214235999303080897442666172258679022325039014548620740672684311806497429047056530576223713193356973396804439208879107248745042555605441287111013049709202762299259851107012441701468738419926890133556245430056477998293002461917643271629591853938120614647619772495115562085600504853146424640985096824494050598829781714618733157799877227971474455616632639023850925729720213591779252776369176312110497936405970870772189359848240927140061006848080799072830556306659756678997694657936924990345096410314626570672149731543628000558026533834459167842889970614149005288838811229513837405392153251553605330473659867312295620005340633564023904208178972115034037935254190823029327420408002622341072381223538257497215682930180996569122652703053739471871654162569414951520531206458862671624276235522538318964461432849995356820683233465138675410827490596964352422796420736525862662409202276892082905745273014755041772993819374747043291676296825571338645605019288235828607460219104472171905393978286058711994994075946946904501719626129891297785262794903831823520324741271326470009925340248044413698893160087471101115598827156017322849926448246890250940872800969912833939106037661646340854638183562189382226457787900923987531877913431946108694947652717492923066187775746930063437977519195800521298729848366280723108648799156318978065768015360592367479405252285966318000015191998608772683676758058031311468294723167697582272502760859874036909801930740974001192058591430098287098021570441654592505727247768282011756726844525801256651444301950079120380718219338329468008534442846077685713544194007524327955071955226200530986913459845314710510719058167265959825133876149104200332459364223361260375456263610906578083438476313348490161343553564484692187424842603773823747426008609267536178919597384345623591288999415207111940819590820240164261067200326676758012794725260339664703418163303398007586421287243859016657962176274532712513078145376826038329107151236318002243613099209970831731135481008172826345298961517973963163916705165676097591487481466079223465813873607872273761995059993093591322303896613664321628779241192911035846341115545622374501606127977756985292882117778296500478276339993749813331078686903702537331445966445686036256887898585809843950252338373839157713280364698259134024338989451358780140559424371687870519586950515334379886144076554360694721608275939343734737390935610438901882220547279311828445041103639111103188607674601360722196695674871077543938123944828376247570522481733445127428507577252676752726828669296273888040688955392452214259080886549295627930544496374040482414174429554699068859457610531632589984450033487991393950194379605142460240622750964605904319347162317103632880464489765441781176775360255307983114046972917021261575999747919513175356289269738252254493902081778863456041493700800804759871388208118144666431845192191907729537903174959385672176640184810677326710369561461912187493932368918706337698762794615949381684820435117964874003383886204354335841513328726838198927086809536254198720567097588143419818644573075112705490751622292191492544793418111741658483532767411666600528233897824313428372479855025933866719301492980684042893544902172403475761202059963960896638007212043160771550410552889811065116740233744236032304871579001993160935959555347073311004243774883544443676731406104831265297661674183379974269379741288515676564618943733469021389351199332674318818115012130962124777380484159115171369334822744164229342075923978372260068788894241149239047819830879098322853736363606047921128478685310683095184709943048770806054769494926160412480736093641419077309213991679052703634396648375610853612922041643781461899880570131047760466065993555093987696077930050904841973329976985820417577209060155514571722895551726144444596204596782453047002156424345570004197583274416101355362390738881463523630967387072211376360805282936674787380880650737793203297867993622101141663905879536696169691639238866186158654641243673999077254707876292273024963076334728546666159776798341058364962760500123648903436613222992540337677988477671022338118694216304682423334130149852860681684099263517683335157344038308938179479603858917811593200169277994326389000742115999246806304045702432487140508819529399245059884575934708946209516322574789907597746226957553035886293114377154459544505608389208459380956440963140789343305699658278203986551812398932069405456026560759534279324948812804513062587167345623977971097453549344764469259507711376402428457076157055436430677764738886674081844106383742912023140510418552281742188746389236111863491148474361612517064934024896521322519834851151242772104556306598929440002152036519490819251376805450957184749544824693635603569605225972053841581004501584100912328333976003102107491085953159226069012834587327259971112025925123819947881840747175767809667062611411996051112013271091350150777864798314871955256044949338844757948457477116889094191094382540558054779516264683712607043026838398910328428087833751980730006443119069122334166099941402646601365567136347123203738359088947443981087204456279328714404539183793412240994826870342095392017313400572110318532747843060607288706258394994682842520556381575601014199010490404397191138445152855809707016425452959778664359588040560748735412597512323836013768239677434435239189168997928071347187463000837985697466045497488955639372562589230908251673255473804486520327695043897071532175037437036938183448706068445520270184271860267785443607757449987645862550853844492488331774133732177529596230056374085739368318799336491781716721031643253122590074871792724944404133795117394685504903169776472613579323786988436816555044871147023821295375315968422237070919604915553260798754019817204005435917338028778866898767783201988249690480208167510788846166868446591501548151404396048081597044050075742974387127512894683131544017091983972922897201447567071326201918658162425054687848305577141613831948331736546313547366384763806330342036329442085133559102820443474867650075586800703988545083847887658720938137520387462853564941611748541059186958982227681935894334481608643024722381659381938989731023292291485815605912701175709672139292877678190348729760666157907954715630362098750256936461038759071141133514628511273752727853532279858408268908582987443368819679334383388270166337798654040644855690261540077459818835228437887729301076041005381936867843411337332815350029407543350462675437781165812720616995958519407473614668214152449569347793047763581660230557418465248972034336442550080954052153006780131714480535397523095413274750723701383225842109411649460720870423187520888470553057940395347526767669497718524603967849112705432812547718499111843247323011841160686418751692868907882025078560674843768816179401584803887200747810776387544791913903025938435744852431951915576190055048231754367790804864233775987695188801541755557892125771674773775596365864929152862381755401283073853655055425091448611697016439954534260814030388938640509188143381711317813476900790628429257746511202468312957230036100116864480097621669013542313504580498125607583068356957065062879843861421422680449125994612477774818757161945326684776971564527300842862017927612360118968033138171953084120164381524148059624459163118084096733232992442581634862069037490046169948238393108530288105627559374357574375901411757444196980563141505220137571144388964279304678461638650126063683382309278978344376529180243251205221507357892280444330744741037298325319700933898637890602101615296398869580920345296280236271953557041411865760773333961802153204654733800918538855539998075391359632003872695291240543210415227135533202642183404859216781849310678370931836038236340074191979283348256435037626347573331738056630737544630627819667754832890022502410501605907042038148659166291897056811128443400490554763520515617080334010077029504407741614050704547796928760915765587321003086708428633478958994497231881728742148146582878333513294577932133195398397292515911616512890368305984393578729868207205694140862127741104528308067361504231110165275192585475375358000676577709244330704876174208560189889742189118009170492691256513264181013828227165086680711420434651576133518693155463307951273683890278139573807332751907304778544307753690835516724244324828301915566152584064392368154012296367388561296655115159377964858217285140994654349136595083503371058992673764518566714682145847493882822893394347204092233214651141128348419317600574953305420152824611858556704207679618775670228729011916634895546083736101005758230326310636673429185051800939052184453293132762586281584909086427718838454160054742974280328396661361347295963302563629881389597757395692922460506227719569272480843843963982294218088153904303273847479651330200041676283719440322315419856051041525940239722748989045813626337663435654703148317669134876847555469792411025033420364193061667681444556983341506990373187827551963387220108573965968914968862001608003924039023517819236072227063268657970009813282109838740945014605897718935027854417422516891716032864362714644753952562246051636958846719430334197522545309124095753712501839140881772202359462149006967535743381987382494199903798783450128864108137711379338678990406261945617986484478017729513417966059143295468448727905734551655932034516014732958476725736677666360745474765405553207731525120976743153206626090160055202221435671053558239271799027644260676893678561236876461169942483963790905593236778663204622182700607533615177816293194243328323059827764195754067310463910960166786833097658112569805863287752396504825639025116157475645847961748673868648985763576921316360028625597643145982378614155913337308072899028630354506317000731973048320498440559655009741229059616821075679153626408071146949434874870710442443607598092254881233946034011674932649197951588391079113646195367873645750872572676353074784800670128148448926212428049339412055475920927927064266795956572600200498190491828386978461485683642086665791764122916337004769909968407222832293743026188332895081447303907350456907104380292438133354568556580913923940135089837451503139566900151184776483065461722434703576835856162451903500950263460660059609102492532142956330352718793762144273337958725209863219465403332730360337994136681320539676141959170028609571573318264331511603324410628374361114137620410932826988141316635961417071437490827691742173260234374302730791524687955576187003866752766949337018264318503626167264228405496153334243531140332510516296899883807675047755079172377866058979779109219361302539854229267521185113459426964212674944243036359083834041693510700598946606285775592307909800370642066904336886030146957671455743670251078744477019985475848795376334708946576839355982663342271782974876971670099428998708971102417217050194310201496909274080129838572650933663158961486164318754012103629249337765151672364719569977796470263610483643241743081238512099346318125509126340730907301902331865609410500322101548902016145028474991172896518663299753954359738145858524256241079822888388025974877315851174825234099588922307983039849059328140405070220292462966857742931975247086268060742036088901447914159791901545682768198127862624633726084182944519076169341611788879344467332624457235181005489161468437468286277927595231710889035229963620976542808014437720825245958218422545401854965717001947936025069441351490369482405131546123008735270958799806732505582384557603513044063735545265173441077422655347016647100822557881227410017918031724818941284851218632476074548990913121757687254853114905647152161232816453294063938585231011698346476850219902049515565302989770984364797494877746871059691242951446947928616748412677311316689309276924328166978373287156127637754250091827262880001580912029087294416597708081303921574616792751138598416609282955474549781919323050366795607116559122995449444513824012921931191554790229338378408917767888764757481247942357523387981462036482918774775255481502617812032424350337757705134963581392988233010269239543026399000590407670292541798141931143957825519431024943808265104606375893000801021372156629170649936482063505577146268662962099488092098200661611049654157290575516049458547343584333829118330105341165469101287828518455011376471874002702126745604311883893741228949110274354393717306210252780458508823091743222111041747254441747473986354767554852139796930960587571954051842952106734815850369832317500044882713313649500485928442503705962330735475241650188479077738536979346401179945139932535355966728284296269303465382689387382904506131090629101374506641285879526447951961592499074899803465202603048622508966269246410248303951769201230670090880245754249900954768059240928580835677018471478117764727507460788000454066509256352049419001433619066501137325877958902450951248012775946853069206507022910965027828695344876662390444745223071764327986092164128821369419529923449745342622529520337107152499452702345241141322434371161845076945400253720116974932841155231559246404477495415318558856170762805541331599037682445748096007207307457259420504514213233031560297159337458934773052943897370160719593071005636639052337398910516328917458761997763791052147675868492052732846056244343846856562859110918170514850638431897116103962577287557650861624128410941073015672545799355272188821573142146157647220592136501403389440498405045979220449287529240951068425759059315541517416653195735778257997109940532355650068087437125593263015404801959966170854247359416368888999714143993665160871834991848566207054598521044690133585142761653289736942697455812090483602711809497731994035628689666322904923368824343322943897077533662696509093532125560433883239720615037830617553062569400982442551469212711958432874003095252511501251544368163946986793533762477996739664587856894977815882349958159300266076187992625866248371863178211081986479246265805496439281433789465210502472287353963749371542009248496304898171325225431490404443696275192260731587223678231773234700501786989060062073372663103468326762818735022839079304658268264383403675611385203208802610883443153396372155598085767531581987651375303196560138048749012301078065330371665264754684135929975327450958445710569685713002470385735812499009271125281912305498904570924803427650562790575789311044993863517834700777416970146268592915939173835339588498234255520467622101245918125290891960721252962341466913538814589814214723753781664749478425706364352461070224233708179564135246880492730639677674623872309076224196922090720446752424962016499908060928640446088590198190025780328393379622363600793252241003767266825105789787022775751765687273282872681784817235974474959304500106923652827770175776376057866784637584218919587715646859185759124581929407837290204615476399831255232642772149604749965883742550558896424909600890318701200878005426405783690223803023797534308676408970377177829432708888482899871770661919987560426133634342816194791652942901002649991930864509397547495136799464971411961885951448364705084776854218557154068032421447791593957493800552595011736497560627402048363722641737191562791467192752850831819871126942696603819688457632571061264341307436496659871052442884327358088521230434779757325515620881755317489614893979565115465466459134952019342787508889329177160466567164607203135727175727007576133217386625201585733132524102256267135974095667268967387808616588507490403645684015340306735062054190431238197422650374750608082120129477961774411707229963815811485877200700501734026677170462507781454324736384494629139100648590234634063450890873793218123159652262636940460561659812567660405111805037271771919133677053378340571763804818663579984080144826950600742568620996921074204543790255158895558727569627833033922369940173618424508834111810651656048535574444567986963711635689671493979686086392051590735412326987468072321026945906095052728783747681972245983868013037928884763904299129826301670561248217272709934758302637217436483609049259979017913572017677999917451517664593806401100830094206113930664869181230286977905241453163705128560161844356057897016629444587321825339889932073812247330853655199279654850681643123911145550445824784071197446536929226480929787125781620877835455757799725872429412183788180777229189273296533362017032457858813870135280647619436731981832381160911893129851064121020987511004669726225726728447523886592540185823062928562680797115677436491664945960425463840352618701257065715147975721913145513121975941816861627415802916250662475683313221460810083733560259082176304656979800876036280685013224264755601477814078188584904150365677219720532288211268983178369847544314641858955739505549156547927819249161988086454580912459896288180831839198694747159727783540431533139780840118503526092188395999937083438859471424422484895173339353662013418404633914278270531257635152842306416202901968927515006838776193126399890861893238570955140721902636602451481280533397113331997181668368168114113211417441091536660280740752073688197951869383500740801485250371189839664555255637862300294894725338807388545090253060968823072953675487974449697590292547112002691372243223615249165249747041660867764509155511159477802075808850762651193636610867311554992969899613510446151689019965900866044828778159525923906714414752885574464308524982926278589922516043567064422228451889411464404645562403027336145425521604775172340420217961207569279554941274837915390099345785110541869546066004279176509714969623554456015482986407451412652305793262123648552417609567710229212341687156454311883528279150390985919008321641915631234630542109381453293097771127251164835846456017032621220535159510911806712579812990017904201396748639648986580416830392353504059649048195263808560060144490097812861709892171321718078141652344634889987253449435365479232110959791057112787715767591956424199236727218939549730947807636035618617124214592974632640888278642920646150269913678711900700105591753932021927544248495416598915245127805617973028286807341594473386206410511414428389049099794186454102765796914905933255458663787331998410234134210186357410895835541247415216366309533445597853759036910747535179357644751896549954802762133472758890605527381638477541022802894735646799360073180253868675653146890507692412609328780793399715860489456638327779713788516054313521050756108383748787190630773384260645245277015038626404267544599526329137987727604904731562738505220497843816310101861170621100872755427778464809073169584368881349788891479628643600529445515580370114613383736664314978973619136220173478287784163951945648158666739841536848953175419910538486514713806203315648665785618237610350582300314779025897090284284080969250933457877228872443367222249154142248644276474288044127432827952859178595732895202190015471726020796066245204963376906354394976290239211712022794927835141158864526574570946923047666699485949903120984263356978168759479817623935013795014196775910220111958690782426346191285770042525098984695899814199136259926824361465285823048578317155487790775485313929046655222874042698387928987865423117119839944817973165334672655644240394784576751152259628370824434663024024418575011518490382064521827913667162089667112747753535124207783675418967511974700275667309012046788487060329223754816307592779170924531501164340119876000139327544408024106973184674625473383812276564724893335841539005571654820183265759775079589751747626589104877587523415006319142401438844584683685256184472651725051979384269512266601971450685653366718533020065953355981712508860345534161752796241189385496331101145400268056092980486470369444513019881534614061799341395392897417347975110433595794498856720510672308772750213294104276272132667497463492787282710357371813082428478468377819129538727211815622333666816660354583565438907819881292081303387043386670876926764469958036489231885191131050114302131977936474847279924851923137714263077854243985023606988127523596289821331500111059950584764623037107983656960989438380956968393260575271072778863957365450795572899629582643385628639710611546711708409238271955614736601631291370395060012833231421354443797341554577170376506036564132217557077652411894117329603768900109332749511859736210742285027560130448468034446432758727729638990040491574996250063104797738677059556962784396811723371443252662772605997510646452758982125426031044458649357552995121303204693338942472794723310009789920455359278131277695870668310315876389946031424494549763773146136063430889417701887448847015328003015451499112860909942403248329916941358489871131665319203260702546158995642204910162911659670018116940727018797217171686323023556118323193198342370803796953278053782977187454671829418430921721985095232819212480102940486000736338657164939674716847410850866338919788038362565117722358348690989096737227059283378387520150072310475969531030512284930329368248541131113766926569221020923296593566377299675247629189109056398144800021591742635347744703956072123890797151089046108298526010507197557242777201909634714422471270603537857950184437259093361956113283048564569574122170292703201825073022983566835511332308338851334507372273081202885655714787807833951944184851958437229989794757451452736941245634812065844048175235449024407397606058411010621436622691612507865446029785762584964939590202876090478392978007566584355372687291804000734909051848660440791202433127588453190203200783903284912792280548420676834695155901857566765932088926634171356382407121102180333281700812579308596278561884268236429082157465746397088329202574170766452511505505609003041124950089258440827042552762430618486885201276510552341532342351164734524285396714462005001978788690975960312082731929333386050252112006807345880064713266643891024391700346350471880262858040712474770262634884317585612572195523131314179386278947285577465324615711086122333531902738278585784646020600313701514942125391959071309667102965885213697839889156290939743771636780743647494786980566347580750783699119643179162204062000548787439490012304199473697303589997900840621652874808426421326071990248127528436949608115779005494179734937511431781806145857785045035166485825750634750296960306410410179563289780730826789234509202931820390586826950654104129396809093876099264731036820798174964438055115624044199738101662825807851197445426685021856220844261848759266200674656511060029362486031624820819678918152181355926111923461166345822665086176145950743789341584980812952752231860843257985965288802261190266665922655937859396637134691957840093532444525473306658768602008060074798781369928554199058085681741549030727173827517234927484381244144270371887360574934364399214113609316363985218988683805111173090608023338304021000410004993333783004263450282560060958459050745590194592895933947062092079507573081523402757767724788144449830636192589330164576778830549052766661774876685632674136307814153444590770266999239828355457576813955421195065159397418434372715876860476997930972151568408519046320497117726447903332629934498123201460718775034315147902361476205883702162559670339483592737874161365824447049081019047867077729938161516575462820068029800463721563526770860295002450363435919771658499908957051051713169210155056685711478948292601652283703664279729412723327993385676972068945177529247890734902739568992396004082005895239640239584914895675194441732990455908284962508388272481664809644013695108530643590237328537639688567194704667459259852194847009346130261141412179411299994375826249494565666674099752312940749960678432841327379608811354294970105991967067932527833097758928415762643944723789054971807292766811411062804902336531718448905647640615296706335520835436041593386648611858094071235308269292644418143791110200993361422914793119640919331990182443330345380585754214640238824260774995215366915341497235208474057031765422776345411042327893101949992571577825558691897895422945443680380208657578495349595586606235401227143323363094432958840171215550050203924175856785197077586124718868813101246599573589030798669834807255201536300814627715056943239448585159116823195136012406495891984611338805585159868346247052637564031114665756371321951326231045738075829116360629934323624216434728253094934162532761445177538547165024471725562255682921126585840210275028026032072889156454737530566706272562834758199753126146886585122828302440171763025247744940890748240827209734322451822354861070551316853275578081420600654807730862579379336164296300651251035620903073641444759072951433003329108395228654468968443998724991943750648399825412774577834064138787246298154005871653201690041161564805619094094950177728315165333892502449398614595846310753261175601850635807705775203998921942871973931019055845469784764447913903988508253744480825540367906677867871057567478493188656741810436755808948879038430592843598118575241573451984420451874438273802788249941071249303464372879792957737080283657705694830680260355087766018017548240826889393233567613079361639516134438559058561470248595710630583243521624876087878849326799727058325744525127686358697175227126042729704763198212221500110961927927031953451726345983879650304506115735253749823992717894744913635383053788207368902228723257035589214660773099731574328578894614609958412257841707173544840654053687963529161718339377820673974804275660397594495763320761934541624154607081082091431381630887662852444276208094195753892541482888964133078632756060019952316521890141964819830541862502886279942861929515434864567266354539499955976735355894393495991004445955069390234829281284926336527704287398385545271066278910515123558177655155124804872688188708038652699563430158718539676417362165324740950301161676147226987091336686975730078772316774484804082212792921345388911884307584665906933970070288913666161767306556816492529686126542330576930427952309859851945687695616787391724886208606078219586577521157997471925755521830252778574776276558662045076936010197431001405073169538271205697390441457933908374685337544753066892359751986805458682161120599250577029450471790531116688637592044725816809350715401468061886209608998308808761053155925047485763330982810135796784437153235684378855933935608225979566539014908874229318867856908106633416008188397781368955225608754496472366002973989622781331076327936906421333836156329940767987829949219414282739937552368742050095369670510834581278968845142676270307586970560344050293627832921967047772968940770231187440894414891611957992234348384361908134992564366682665696510978419367665490400052255968546785818638881481409824051219338973454619317589006191281840488521392932267525779747925510077945960279398495734167739330399574628957203655424637187995438121309889157318399563297897718347938915006476879059728332276590034174776666804805807585137415933903539371546508657211772037063013142093943376911484717585548985036753668986990778732349370860695937442389869679255309585195314500199898018163496806602205369815418049524140539038443752983715573321216713716303309876573223472073494658660387196143966238355254434272031875166654429112534708035265585042313178039140504966786200157779032253018379775395031624177802409362800776274088937204606438009792960229334141357316853027529326270934813060617513040349194939506111829667596679721724554842338458197057324866302813949134291966549465895240393949176765935059682165276533388253260395177273452448414734481084363051946017495590145528378728694589718770632641502417259843086559611204202453814610339462803726715365311373975645333786896813006476033470456391277472796397664318741782445580539265623629643719879907041630801149589490342214249683643075413638713825740975202255710524519005628410890292248754754939152754157107953000785347651731062707781298031248059008088083511571893341447743035315052308357772390705357815401965655229378522974863831081531326498095411458206016343526704502197334552693425313951442693600699979416793419044571047950054591933973470783926474430571876070606494546076496652235432486913277445868254001418092467524424087719936981330245844189018050669626927477561635971967675947936667840573264315222817706208841363096504161459299455789615473844664822043191643886065072888244114235145369904453860898233956764637008735231406874585372559803108174040402975992668970470323458706663340829004120177247777909390407650943557103557176164798280730176947885600023350422406684015217003439639897364954618944020288720946937413542886098604075227026482788702174057857719036625711012261058982176805769679934893705049041439972935657555686872759565537429136163222780629831139827737682328273538007173604361766686339194080863757502388242360541635097206494291599132259373964992477759699130503679859467387685858969458881363954404384016848950761974795313353392698993567078740170008504367063192312102584020548165945222524105239691877251826775214235888083623030633684703867930130650125295968428623742677462191715457239299389032287069336032372302828098382506936703358757555827103340491155787211743066715263418577384309801993728612813203556766993754656540038816495840381520797028440484282254884632112821925210033546824602794396854826423202843726689970480869195071650949154727258460224485143154709172855637969394753939537534842454461823870448127360033316087549390339491932603424096663377705656553981384251344651715053403923964417851970419752086799349480032265992581424000705801737101791445964258963875786190924396690033057790178748531407381054411659092462411237526877645210411022521678216396060020924621034172725054413396654304600511543838181495559908429007654906632941883397253075597857634654462449755501594356663254192887988476758127961551318345779438588059118960711018114915926214069348039421926460721297822408069255012690250178221901583499188663372994201653644081755046119923887957198992066054340294114974546071159657605660183300202102344309467802093991861862965216891368515339833603657760186751215707978850910662690444513903724718434232835066662847876807387275374320546636913075891542321272611108399646743762333862252602882930547232324311990485665318593042026396489306780598510984447945017700408320977028919172057048382181924135570226760960898139417290817645998917756855185172967724992933123052909118247462398492666928951967247431522756106437050491531797002473836449419068540277472068963138393177448233961148030322348372301545504016732072510497336139578845609651207819365400056853303027235062359420018098760449076899084941741369357339039371012080828320780934162749276755522409809098153174862234168142466848375913203535996417859932173938627851656219636450621416451865792169471928789091851626456347026830292184338577370915000158169528450080894744186642838772985819834529563611933373632440708524703027899883434677586606441445529530405836184308602571764765354456106254643446906140012957381572512463660138820345199166078432074790037248546139205726353557158090656959024185745345956546890947422882539337183883406929169297400044137877815260349485959875657881972792337911693367611917919131915027920557706737769810315715359926487713855353321793871564010753738106086321230546595044476485010200470235649943642098272637082343166210803794993910337605136239806876905139720151979070575500255076889855737572108112919425325518445248006933632368025157148533351689787936121880720836116653840743617415571493745387797691042574418704937861768435997110148267844022966899508273305125680545431462825242960113760480968529000760808009707472576440561766071700939806743526995640583592236944120793230124851216017592161718568695361629331621064836815339177400421921220156618102527651553489597482005681543009594232948075392858721451225712296026349598054076571694498983982619415761813379326410749885515537518666751789095081260226732887008501369033072022423311241991556050372244766164397155244356247926874588767338935163683327933554702277547935287703755133035368418595728953591127644725043878325718984441974471692217612825126396314128770579712175562666092567978624210753782825275802681456221191328149519567354816438303073809218496633499815268520022429717046018825658842467015385712669468265707555696525948903227914864246346468870618605734062682911322413808861525616756567945364657325139882917475692209277183304968538734947428728388582797185751925085125363729075173796643775804671009928949220293268670456975658752584332903400349503949011586021175082326448210272758388252815782194585442203117090992668634959462750022443452546012055002758055127454792702255890205631701275211122693794920290417833369691631162589900706279105985583858392017695508708913053733434385675958920310284847781339811291863191093386084475914087239356382800972352347223372355619360570354411451544244307940032823148529609638296958288902010391872278763245256372127500248817419151015466871343223054572424151488837160849087690844793830186151432135847711240614541446439183938044066695316622116741046472939622004638961665608819717101930135624767270181741989733125492003140924411241153224900070754907516184957543551611208022204023968376636880451822691297708293688894074998217185540931850449663735709971989960908519813174658217406440733137654410084264390199313344416298280201059159586221741529060546858446825609039282323617534880583845852642034407748295813317970457691956263225675641685811512670217066518907796204233575773817564814095574905621916350619556603859001230105241016047652273704404479564336649968708539745125105915160022240368627482259079202336430778070946622175011973214230565495684814465576107906033710595350568611341645767396110859401880245617579689883266256409894693280104365291970684730005887925438391662019569596571533373614115187189312356643389006800187024689032302797342271128282171799878713212117329036060371547786892810406560993783700207922558468011335587906261901093629494719347614610784908347727972664981060886160896302867201510015108566161825129634975425024272081557002265941815391290337945136518047397974376034831138219062938133831604578871761305972624279786410979461568839594456833208172319195856872204542603316087926558321489377543723491132201816700479397540948217989075370768230671731249702531673564543406062253586483721876364885815656468440728188332621030006260484399864535626813077449518708844252479808421884652431126530875716970356579193081754594545979226680522690302736699184607929615623142663354132052863597405323796639870431453066308061197943832308479553993128427148101202879692518240366933913835269757022542403389041102563931777385856395150760422381552306943437155154770876052232484595793376372779715779096638669304485249549423986081793893310670696881891161170144901546778001550049111602186286345163199534989815372560517348564641269606632792272652115204168983118001639477232503487517975266466538605885310375386323449185231709798124778365598533541593980958124433491037239259424061787818955206789639301137224039378855362946151869759563140264720906997750013611877360612394880182302599632772460731913224265247765843851870907483675299829361720529022209380906861000458689821676603902075564791012594713699959332168445898305343858211764958004751287406251595999467293204674470870715167851421656776355939143657993736347249925156645471605043233097281630642396809038021750687833536173404097614118680059037340312341605883455235067338752800787033133391707487966849528493075647320868840934380554883195960251773502083727624240339456212211925683490737454112277877641954542607470029658579411795883383494012636284071606370192505278671353911009904407560251382987723241502706898676119014622076654875776162540892477299357715761700750960446391506332058899436675190871956939800022687432780180818392178709073123353331373011315965680280896735755650091675680722007667153708728485188186965653450591919415129897772500704531083484204256009802043625565542287774299566636078316295125113411325583706020566573294986977164698547137703200443022008505653377365378947288543862725055911788727943036314460020086504429170778872386381956215475209306444914466262735267509651875004139279370893320240127688827675054296294093093354920744403327434214120799757340314496705538078219995180518082515428583740839433883842984823268317117814453641785347046845620463915826027190815790559731433923858312882529042132987246860789417898096245935117545754705002593969747758470845487352156660639391962457416095124403612942059946284579486042861317902103275464677157584106545775551518446983441064825708631574744541847215534147110002165755331087323942894411304556036096', -); -test(macro, '1073741824', 0, '1'); -test(macro, '-1073741824', 0, '1'); -test(macro, '1073741824', 1, '1073741824'); -test(macro, '-1073741824', 1, '-1073741824'); -test(macro, '1073741824', 3, '1237940039285380274899124224'); -test(macro, '-1073741824', 3, '-1237940039285380274899124224'); -test( - macro, - '1073741824', - 7, - '1645504557321206042154969182557350504982735865633579863348609024', -); -test( - macro, - '-1073741824', - 7, - '-1645504557321206042154969182557350504982735865633579863348609024', -); -test( - macro, - '1073741824', - 9, - '1897137590064188545819787018382342682267975428761855001222473056385648716020711424', -); -test( - macro, - '-1073741824', - 9, - '-1897137590064188545819787018382342682267975428761855001222473056385648716020711424', -); -test( - macro, - '1073741824', - 11, - '2187250724783011924372502227117621365353169430893212436425770606409952999199375923223513177023053824', -); -test( - macro, - '-1073741824', - 11, - '-2187250724783011924372502227117621365353169430893212436425770606409952999199375923223513177023053824', -); -test( - macro, - '1073741824', - 17, - '3351951982485649274893506249551461531869841455148098344430890360930441007518386744200468574541725856922507964546621512713438470702986642486608412251521024', -); -test( - macro, - '-1073741824', - 17, - '-3351951982485649274893506249551461531869841455148098344430890360930441007518386744200468574541725856922507964546621512713438470702986642486608412251521024', -); -test( - macro, - '1073741824', - 22, - '4784065733063810973581885157618788676291241975216665977767007373648750357731006099232824032039924032894289638403441329240212719241920971274455782595989040464660523567661989180298099889009174801022976', -); -test( - macro, - '-1073741824', - 22, - '4784065733063810973581885157618788676291241975216665977767007373648750357731006099232824032039924032894289638403441329240212719241920971274455782595989040464660523567661989180298099889009174801022976', -); -test( - macro, - '1073741824', - 24, - '5515652263101987298728728207430913795608113109085112352897269396216198887424215820128660001943808587833784893551335930816647064191168732319583111500951066614122648616177179922993422016587311577585463592732098692120576', -); -test( - macro, - '-1073741824', - 24, - '5515652263101987298728728207430913795608113109085112352897269396216198887424215820128660001943808587833784893551335930816647064191168732319583111500951066614122648616177179922993422016587311577585463592732098692120576', -); -test( - macro, - '1073741824', - 27, - '6828046779268970776657768233698567984276232522051489956245767999246374131525255241237946573692471593720760228447675638216590132893818229842292076597586769967201441361422350907866192164773697561322460176523147880429251325990375896362151810433024', -); -test( - macro, - '-1073741824', - 27, - '-6828046779268970776657768233698567984276232522051489956245767999246374131525255241237946573692471593720760228447675638216590132893818229842292076597586769967201441361422350907866192164773697561322460176523147880429251325990375896362151810433024', -); -test( - macro, - '1073741824', - 29, - '7872201966280717348342236651726314522606839627565764220475565031568317153405023507392663596386569558004653379220621715171372109048108541030444785631640845193093816697582678260933332408613360539868835105124282664122403089594119217080450011771426148362301864935424', -); -test( - macro, - '-1073741824', - 29, - '-7872201966280717348342236651726314522606839627565764220475565031568317153405023507392663596386569558004653379220621715171372109048108541030444785631640845193093816697582678260933332408613360539868835105124282664122403089594119217080450011771426148362301864935424', -); -test( - macro, - '1073741824', - 1234, - '135032864495417264161796347776955705785892222817973553418838034178314956028897546684160639856425763595503385824329054755201421463563212980917112733900937587464576847323832924136423515380546856668025289567166571296527646275461473028717333267141003518332467805495676717695347879685792063703697070949206732122179518994434776335316458684468092377731792188239016034485284630253586964894185124335453057822293914949906863158326432012623661553678396250401107915138994915256878813546994860886329001648396962604356523710403969300362981938297962596264354907403355610003410746213618666434661128903020244869263896170471066369182082892608827489848219714660341764073206537992528782425500311374732638679622889592596379830695201794132135693911769551065799954240113610377067376683502257705550961373070910821982440913313765403579054599921224319207778610832609088192808064360990585104697667138615140446175879997439210654552913976627035980457885269693547247688226220637387637045378917414583352542513965899437900025330512737621517111697083031434057763772292768696151657707923184295380055081923115043272032888153271224470285860092716037417011085867348183777640814999517894828296507433835585929567261420420462344313146389909474179332054613893650718599796623059768279453815288538594004374465681087299360879696203325418022962651748866461417173042714747088991460375318785407702300361444578324217092319160985594722221278104937860539603355035209045656876866415381803837578632001346316535288568593998708433385135715755188408423372052774222216062791048328356892426522413633286855317150328892404110603628893696215163566867442031835287126762113760377467604420360968473120576018581379277564986140009067855235173575587538977545428601733720192069320627430054733306784720670681238722112369930138992200505842377717496879786984447202871740228658026814953856942888153479080568126661272713405724755303867126253550104922434031984783644501692789857112933381811554363124855689663968314433936452490388268436076601610796805828686914442925663191706651004835742754007540713785525346442305287873815143574033326807511787052642265739017004565917956613363367471933672846629587711796258007368503719485449080451730511414011638477972141851445718086957116808591931107452359052957804865633522313939899601083954314084664652521357737845635635594429769313821802217558277658299721865464301558666750790259183567098179113274454668640485452931068066002908997277843409635151859336573513012860151545891329235097673549964928547801966932932777277610659955980339629366284864226600662175274920200231799911374929694310790998989788523133581837411706270099109279459393672455713820011546843294753524645198035778900516714217425354013155387659200293566814809279617708397538819427548364362324788662653106656895970337977138117687158105548389244431881662586459290188692191645535827574319724588383784870507646115475296972326304672165083538472785124541284886058416994446142617361494723365850552096782926362377318561314608226102827450344958934465468245954006024257745239912802322669809977564421376969565655823452390561157232875258411436971600411470668202989843565841480016584687122684712266492502542278163229587079707811073162054156571019054961062952927977983554302015866971342580754327070415115073966145426561158662194502911612889959593112256884020821481134001501231980935188947653774740923939867063867862219999510114357601167654576478400771215648552504675553652631911512293697639701046365273307557081624386985153768458592210790101466864820465666077389235557282441554467556137942439039191407590628851042708228500292413849444833651262460968069570764996387290215723393788781245642804553333508408301261343724697551028018989537881749905976076338448452394908535816426586597030779896515482117647557447860634450527101713121746502484479941152499856376739864275419495610691316310634478200363068897623674033337430538837932663020502333882835672567028049270502480555370060999493787391837671108324652717939749490597481250676971715293682844252870745501145551758940066811058992261248151841276017611811411887274572413802287051107702233361626519940861991365151787177732149135343171325963570255705926609298821759763745740605618507883067662117450926227987106288796642374051280660094717537306446983341125766514345467801301022109170850857456333788167674306579695352752143676166869626035002861003680151141687395013408918901196436576953798322233993027260775444170722889022629783177992510442629535947158550432935980049655104057058621049474066059547684213926506563385023004213643849612559790681501591969143956634858312507054320677326538188275884275107886773666192492559052155330294262524555672315514034789884026392912345926416901360808651772382910047100655600280544831642567723450232097407181605364971159781140990727057283670253338705128542777670983899963185946930240111611346828021014300849527667380963493241772072243503208897153563615767202700820461479775801950340023203862180599061144940297631835377016813742279451921894644661911014611402981461194280564179453079023523411900246837570509101994534431957542873784483700881074971158165429546479001645257417913405525852266215205603087742174929432327288507482831107662551472614657976383161884377268463657025482687656063877010334242025290874089994813121457120585350369438678750482445541628164325776911259393529988611879496239373025342855694600744246027039218591404431155722013586923335365589621061845464264820717668612915592171183491557882072775450347227785803371128754402118852662696497779734299037300726805751376345509065452470499771152338656741540759667286001807828234665941391188447950478415299791715469552242795959977483249749098144154729856726398843394843136479906418546581912783694281934186249899746840563706877029836122779488478015849960103559937024687849690515515689170897889503967015459345616938867807167382350934016893152627043030526997853293078436718226621464395154690848550466482856381991831742986166751803513242752173233490694252183014711530077920709629933842242926656727149369031087137074130182692159013533974804462296354847649804625060701458152488648760236684887914355314516265818917796761265782595118181981681044254889996850913972129942574101636910767699459646998565563334934817729091557460304359721174908710624610165520926996466684432035990548126234720976930050635146064837916857286368443462256725410214925359769688795382559406991790923193015325212536964901024443651640395352239064142041323998597222052931115684682639641634800512022146941484482355702865668732720081140181922030567504656879986036737923027379371333794512102069490267986276796423969331880136840719651462034396200061876091366707548763496112346222123232248230388694153688276766328691064711815330435460610088491421888195612048740193844188314932702563544622667512558911661710630118364274196170285674349766269310062034958003334299954120247304438475039760866057864514345508533138628508770723222951065702526427845206142448239674333189634298931074576766130399670656349372266937207854772004314241332793691477905804194502714575051020048862726839370657406000869875185698670555381280201599182665294886015354833856011808620179345081837914124086071187518476483594847918835733763073473814523558994575501588763392130790088638634309767210564561156248614464688514525041131096155150204607020153647966454650761265273455261627425314514074528596787641024836845254467857223858579509706178001258970617383401025827829579991212553362569959842654814709014550315424922111780290827915930414726165818710997646590887384752885393971444427639715814163996840822838498023284380865733129768795804080108863886307701355417615576573589725489445560015923098909783946350493434691086273697821816061793195812770178371503741153108240688178150147461201688003004263999364357199123049902951417798592453452403101562071608640099027564271983356263970688542541011654918968049984647651232137086895404259830149749220416879709959182020123061308112888239461649235275893165452695700741882252283027093045450482557353241644181353530529653471719973518815321814018114021209910092621976503477515448618895747516994954217971534012469546841874151849040054346531026855470552536470226180210581952214311535603720572039239234584559973566186577426541184455268877699457062169502204867831831763139996332553492281719620044008348442819347402916347449063826287493279275546962303367251145148862797186077453729802990592616042296098334476139933758210139481670253798728685880004650690300243587853634793764661363939548941992865429829630011064793643332258817519440699413641147721299779933762272040597516388553460177074372616592967741331217479003988681016928742585365278732728251483499212078891220690889658188156539798384331139356971957782445900967760132357158387747329622665956719786329684268357644498465257273930645057475745581973619803774790375513161774140411043479424601685237941073465868677839867198646929631273490654610573573656534496084196010506741518390113797703827155068331674200699131411229929426209680688487714374805974168983332553493786309966923567293209378744360953393793837125430206186894839350307705730235833717173154106746899348996486996231198585887923276258550483914940308115576604381833814866652308982829995287823135115578881841683647985874625837749874589942687788384192613487693851248999443749739642785826605231657455343877879315308426560948548969337045420424230665445855165336217895834289470720467926611740468031169083110333367765062731740323306977689561405194787701475443626301894061597784690178137908223901264029854714026072728307465863936978689722771921158057199058515421972406268544249165602289029057506413446029967238761073334521038239699127377613786798068608688136455403186419278380623768639967693818903002914091657689851030323485482272515883706497395534650119809423124565836391369793842875038747816600835980202179604622141185688760485442517152962269215524720968096159687665960838433942792005418796157545207812339197623327607879244889471757058218065058047984089888544282248414904169827449234143857530585526799957307705003072573479826497347064437602871900701432264712373284911700095912533127999896443887782038410277845379907218733591984612184226296351103012869133391467968434446494841517603701783596211408280361807750260109809286092555909870372810146591135183334539196312751504033478470726845817388732348939299912436932024285485403024073626586251026026899899295415467127267737038677726809661009108302376683834416191919481724680647658317867588060396025374752516402209355880386153514329598353790340684707527726798504415578402359843949160793333347705630484913082537803617023770261845303091364666015596737350934362512646919111958540171867785831140669826682679983246022184079073759821259756221015486738276522189431610413723028908457172736855850746058294313588226728849768689794812414866669348870741591827776664772445325863669071829320107144423553422120538225532216445443836199238118227392732940295380857114186288402531225261406147809210925336362075376428503158948931501742771923187008514442594711388876951547491075456021295349274877008031010408946253351724911972191625857419453217284075817281481549626955942730030530589242183647212102223686706445886268268877799837073315208919568520733667353137904980761596821645748802852145377472403345961092081642831719685504154626740435161580568576', -); -test( - macro, - '-1073741824', - 1234, - '135032864495417264161796347776955705785892222817973553418838034178314956028897546684160639856425763595503385824329054755201421463563212980917112733900937587464576847323832924136423515380546856668025289567166571296527646275461473028717333267141003518332467805495676717695347879685792063703697070949206732122179518994434776335316458684468092377731792188239016034485284630253586964894185124335453057822293914949906863158326432012623661553678396250401107915138994915256878813546994860886329001648396962604356523710403969300362981938297962596264354907403355610003410746213618666434661128903020244869263896170471066369182082892608827489848219714660341764073206537992528782425500311374732638679622889592596379830695201794132135693911769551065799954240113610377067376683502257705550961373070910821982440913313765403579054599921224319207778610832609088192808064360990585104697667138615140446175879997439210654552913976627035980457885269693547247688226220637387637045378917414583352542513965899437900025330512737621517111697083031434057763772292768696151657707923184295380055081923115043272032888153271224470285860092716037417011085867348183777640814999517894828296507433835585929567261420420462344313146389909474179332054613893650718599796623059768279453815288538594004374465681087299360879696203325418022962651748866461417173042714747088991460375318785407702300361444578324217092319160985594722221278104937860539603355035209045656876866415381803837578632001346316535288568593998708433385135715755188408423372052774222216062791048328356892426522413633286855317150328892404110603628893696215163566867442031835287126762113760377467604420360968473120576018581379277564986140009067855235173575587538977545428601733720192069320627430054733306784720670681238722112369930138992200505842377717496879786984447202871740228658026814953856942888153479080568126661272713405724755303867126253550104922434031984783644501692789857112933381811554363124855689663968314433936452490388268436076601610796805828686914442925663191706651004835742754007540713785525346442305287873815143574033326807511787052642265739017004565917956613363367471933672846629587711796258007368503719485449080451730511414011638477972141851445718086957116808591931107452359052957804865633522313939899601083954314084664652521357737845635635594429769313821802217558277658299721865464301558666750790259183567098179113274454668640485452931068066002908997277843409635151859336573513012860151545891329235097673549964928547801966932932777277610659955980339629366284864226600662175274920200231799911374929694310790998989788523133581837411706270099109279459393672455713820011546843294753524645198035778900516714217425354013155387659200293566814809279617708397538819427548364362324788662653106656895970337977138117687158105548389244431881662586459290188692191645535827574319724588383784870507646115475296972326304672165083538472785124541284886058416994446142617361494723365850552096782926362377318561314608226102827450344958934465468245954006024257745239912802322669809977564421376969565655823452390561157232875258411436971600411470668202989843565841480016584687122684712266492502542278163229587079707811073162054156571019054961062952927977983554302015866971342580754327070415115073966145426561158662194502911612889959593112256884020821481134001501231980935188947653774740923939867063867862219999510114357601167654576478400771215648552504675553652631911512293697639701046365273307557081624386985153768458592210790101466864820465666077389235557282441554467556137942439039191407590628851042708228500292413849444833651262460968069570764996387290215723393788781245642804553333508408301261343724697551028018989537881749905976076338448452394908535816426586597030779896515482117647557447860634450527101713121746502484479941152499856376739864275419495610691316310634478200363068897623674033337430538837932663020502333882835672567028049270502480555370060999493787391837671108324652717939749490597481250676971715293682844252870745501145551758940066811058992261248151841276017611811411887274572413802287051107702233361626519940861991365151787177732149135343171325963570255705926609298821759763745740605618507883067662117450926227987106288796642374051280660094717537306446983341125766514345467801301022109170850857456333788167674306579695352752143676166869626035002861003680151141687395013408918901196436576953798322233993027260775444170722889022629783177992510442629535947158550432935980049655104057058621049474066059547684213926506563385023004213643849612559790681501591969143956634858312507054320677326538188275884275107886773666192492559052155330294262524555672315514034789884026392912345926416901360808651772382910047100655600280544831642567723450232097407181605364971159781140990727057283670253338705128542777670983899963185946930240111611346828021014300849527667380963493241772072243503208897153563615767202700820461479775801950340023203862180599061144940297631835377016813742279451921894644661911014611402981461194280564179453079023523411900246837570509101994534431957542873784483700881074971158165429546479001645257417913405525852266215205603087742174929432327288507482831107662551472614657976383161884377268463657025482687656063877010334242025290874089994813121457120585350369438678750482445541628164325776911259393529988611879496239373025342855694600744246027039218591404431155722013586923335365589621061845464264820717668612915592171183491557882072775450347227785803371128754402118852662696497779734299037300726805751376345509065452470499771152338656741540759667286001807828234665941391188447950478415299791715469552242795959977483249749098144154729856726398843394843136479906418546581912783694281934186249899746840563706877029836122779488478015849960103559937024687849690515515689170897889503967015459345616938867807167382350934016893152627043030526997853293078436718226621464395154690848550466482856381991831742986166751803513242752173233490694252183014711530077920709629933842242926656727149369031087137074130182692159013533974804462296354847649804625060701458152488648760236684887914355314516265818917796761265782595118181981681044254889996850913972129942574101636910767699459646998565563334934817729091557460304359721174908710624610165520926996466684432035990548126234720976930050635146064837916857286368443462256725410214925359769688795382559406991790923193015325212536964901024443651640395352239064142041323998597222052931115684682639641634800512022146941484482355702865668732720081140181922030567504656879986036737923027379371333794512102069490267986276796423969331880136840719651462034396200061876091366707548763496112346222123232248230388694153688276766328691064711815330435460610088491421888195612048740193844188314932702563544622667512558911661710630118364274196170285674349766269310062034958003334299954120247304438475039760866057864514345508533138628508770723222951065702526427845206142448239674333189634298931074576766130399670656349372266937207854772004314241332793691477905804194502714575051020048862726839370657406000869875185698670555381280201599182665294886015354833856011808620179345081837914124086071187518476483594847918835733763073473814523558994575501588763392130790088638634309767210564561156248614464688514525041131096155150204607020153647966454650761265273455261627425314514074528596787641024836845254467857223858579509706178001258970617383401025827829579991212553362569959842654814709014550315424922111780290827915930414726165818710997646590887384752885393971444427639715814163996840822838498023284380865733129768795804080108863886307701355417615576573589725489445560015923098909783946350493434691086273697821816061793195812770178371503741153108240688178150147461201688003004263999364357199123049902951417798592453452403101562071608640099027564271983356263970688542541011654918968049984647651232137086895404259830149749220416879709959182020123061308112888239461649235275893165452695700741882252283027093045450482557353241644181353530529653471719973518815321814018114021209910092621976503477515448618895747516994954217971534012469546841874151849040054346531026855470552536470226180210581952214311535603720572039239234584559973566186577426541184455268877699457062169502204867831831763139996332553492281719620044008348442819347402916347449063826287493279275546962303367251145148862797186077453729802990592616042296098334476139933758210139481670253798728685880004650690300243587853634793764661363939548941992865429829630011064793643332258817519440699413641147721299779933762272040597516388553460177074372616592967741331217479003988681016928742585365278732728251483499212078891220690889658188156539798384331139356971957782445900967760132357158387747329622665956719786329684268357644498465257273930645057475745581973619803774790375513161774140411043479424601685237941073465868677839867198646929631273490654610573573656534496084196010506741518390113797703827155068331674200699131411229929426209680688487714374805974168983332553493786309966923567293209378744360953393793837125430206186894839350307705730235833717173154106746899348996486996231198585887923276258550483914940308115576604381833814866652308982829995287823135115578881841683647985874625837749874589942687788384192613487693851248999443749739642785826605231657455343877879315308426560948548969337045420424230665445855165336217895834289470720467926611740468031169083110333367765062731740323306977689561405194787701475443626301894061597784690178137908223901264029854714026072728307465863936978689722771921158057199058515421972406268544249165602289029057506413446029967238761073334521038239699127377613786798068608688136455403186419278380623768639967693818903002914091657689851030323485482272515883706497395534650119809423124565836391369793842875038747816600835980202179604622141185688760485442517152962269215524720968096159687665960838433942792005418796157545207812339197623327607879244889471757058218065058047984089888544282248414904169827449234143857530585526799957307705003072573479826497347064437602871900701432264712373284911700095912533127999896443887782038410277845379907218733591984612184226296351103012869133391467968434446494841517603701783596211408280361807750260109809286092555909870372810146591135183334539196312751504033478470726845817388732348939299912436932024285485403024073626586251026026899899295415467127267737038677726809661009108302376683834416191919481724680647658317867588060396025374752516402209355880386153514329598353790340684707527726798504415578402359843949160793333347705630484913082537803617023770261845303091364666015596737350934362512646919111958540171867785831140669826682679983246022184079073759821259756221015486738276522189431610413723028908457172736855850746058294313588226728849768689794812414866669348870741591827776664772445325863669071829320107144423553422120538225532216445443836199238118227392732940295380857114186288402531225261406147809210925336362075376428503158948931501742771923187008514442594711388876951547491075456021295349274877008031010408946253351724911972191625857419453217284075817281481549626955942730030530589242183647212102223686706445886268268877799837073315208919568520733667353137904980761596821645748802852145377472403345961092081642831719685504154626740435161580568576', -); -test( - macro, - '1073741824', - 5678, - '28148898337860105994977487045818154315885187098857720123923019503536550068661096672354637598480165134022041984837084308868395452311053157640615896546050985553558586892645700423928507935726495168161698045415140497515602386527627319206488017355554288186119966734541348472345944365178980166309150611812365395806608007167010671798672218072170128957907439061754394300128594626814429645477396628406899347464530711061456854894379095840425674956808441653400041181506139011927908393244086335493121681302022622095101860620829845276309901056671871394201026397395171820873860291913878080280170380979892472296164150372296767377145551512657194585337453691634475382711660977481092241928982823053143625635560423178221937797712042117395219329456302241242041523769729459117196674726421874136677546084294826873902192894352596290458993633922997209073832114653500019746006542685067098597091796593235383026677957632827401939309333387666537839316094357314127534920705674404309028805143966637229018794907522055172849778130036761405770603918926933967928498088220730576083729725145992964744748428164200419463740275487586933626822729962824800560240761474558428430552602958126365583033236298214451648931511755996108094562356049299254807663118738845759260918867850503834415322452603653397365429159370357398957195114808416983753993622244836716555146831907033098694343145327951581021334647653286088313114479559741196437718942355964184601385362964266877652784804939052253222575619622416395426846679242522689602653790030499520892085577500725499201404182852867226125589028845844427853042309885329741850855526415975172436890910632693916719523636332471118794070682433535223602563287248795595868253883675189904726519119448801915261351526420699337492762857231988691678382926943587916545335155283702413750409505677924941689908432596377494319662783929468093868450608410231488451353317560659020100954006099204197631204922322164052615891958008133081819761014762487524836715828049458561031763108536694043217084348793653430411896364791299284106421121855831489687835195476115378899943269695006351002750960984964426672142770799033138424141023720291141340435508636127792984379054343612312021179919125313130082850457997100339188672577640528770106417201838870495993792046104170422555977835287298352499757882230600591394487250631375216854641145304444397854662472195749485109206617330733383898435103350307488437904097790795468490159665178407362104384319804361651012650220132889393331591715558188458831449467209968941910069520056730023723713589013657691484906132221013788386184219197754113246865122654385680123164873741763553852763331300981166654373006819001402186381647154946999554421873268375821628561307292124869782352332192908982894920263895011772173577732089662917292761688897717750366293629569204248484060863934466108937195948443800932184673102763342937824460121045896218443122360882698024688871403860910852370898051562718960418260546695613954738347691519692022893663002976632717861663007580356823097781646192222209252702435357691413104372734064147456843965665955652873096110765830684236182089087886565807972209217987226299585696168982138854941280194328335120626512261001331081248654357371396176501075032152655115462224365334172115688122152776903406306442312011439667376618560819888585728027310382981804901247107028140882078332241335878660689097272500434681089309886067525115434143986130726703706878433743992681042628744048964001570508077876948518135387246241479296880092162188798942915085422997374189631465329853471853984489176174861323479075234363120290867769013702739919612009426292832097099802965008680479851809369240814572285623180146280697670984531193650342503967101652478766807739947358226388629806728654389375296457819784548065774571293116718672409678564611844170365489608651048260596575158516893594390739121659741649999445353536303503061294401994598214548838049962733817701620624687363493549713852174836185700963467241090073849191740103227875513619343224494993071747822732607018496581774525356633102020037794640774098109121417106381829411247224212510736696706825452538654935037259956407630578146638429226378102600142256743099393349884190724617199388463752205790794440451940454605274720879574121263752007572801341506805655067825631941739793740936589208965150634092530408044204662895618653609322262359163887982449970383124228287512441583793977627962068395199273400344976325835945060297779883770211181669216457812349694314847337342309957623761533535923980598873005880875269599846465045392510668257169787436828598047252165951647190114307062027405441868359474835271630041202717715681530050858890904183091778324015733255757236109101580482580441967985828890176389397718041212941356619163330226370976268329734773630524413753494529257754781863229577908457569032718062086750844184472834347570239536056326155201810881038696860481717433476664625621082241586991225812173672952437197866259897373157784743844679729067516736518800101031672599250959815137720332161848205045025007611471141186707050967888154770682560924038751737207811193901992570725369435103201791686524505756647772640472180936813395743439078761800234463478180846516292693783004681080895964724137021083746991000603574423399483472642365997697739565793596648669477318614358267250383134596038860702874813526614432265002227880708968988988737493080405962374293053076826540765411717793130826541346297462776836630777435661531826481318792145062405811198530844655829858226912380798813160973881440163721569917634885574462693105998116146807054360746972666730885604323790569427284253076223964273715359978030815340692680006321945430455280199860142711370872816427712142263431097232719784998704069638989755157328661993441529401194894894909869599801115592481835323158814300011842131902588936147873994871847028405399169811064272549350520174591847212829792438106825404534383049157807382417071716548998177187833979248225968420666706416390190707768457675226123463626193995384720198209759936791376844052254490031460575054413862573529726918023653700705063568941702083630891996044965826722959248558923416329510449787545274111154340053470755669172749024818935495960038271562190088388398068258567446215438429638813416144469861387009096942616760208032476355018814040329680679835588802653484030011247737226987035720770688024054612187818344447061414642220551886870397419965104800759185726414865048332705445586347178339611571166805268460025130817411913319730985020314703929369141828244979458118746350794440972469365515773623521735815053404694400936400473790547133327308952286757212455297814986317480141532831981218157144776502263149001123086063793023408647358626440541879077132102385221082903921513070649860566861228278306927456359858970160082545255406851398044427390606896847739909856033659996912142151062203182419823681576029939545766232546225798544936003488100493795546219182495490312417078545669619133839724414087313221443223560772275469655787068013125130766170757522755288995196083208632760367504798374588838275982584188716625435557712975930208506356967363937122210773117642423759034688847074262569157860691733884420095472655868693804788798853460305074114676050174059869840188238249706756922707852403016294480987516418402809622158722332117912191322396344308046005168529470763240755288495911503467885568547110796443005962189288373077954193026536584426645858119360236884973893893358131236585957253729142968547596265350388138211504681166184873067638534159817198960647922530056737171392998222652344768890440903942958874497053450492657340534404950722261826476694600389620993991121412934627781512375531587430119694418600921042491946241808425609218148001707575278154030998716384895216667657329409014393641864525969281112155349965482510043869560234065512374117610382279304357796353832138535779361023572767566136655174688134341190085638519772716269105777397667544752112308407281551063186641110391181368268011784028035535033180997148034817583725977310854347328290703963033914233260949053078632664379976313477320469323833039980151301644772548530801510197665795747529811668583071320734297978242386191013538568847456151931045213697759408021294424885981327060102359352968094713641880316402184069434459849295665713894902493734764537578851014033582135990357328370745283459359873866508862907217949984436520976291123753201389817868962086019717213048013769401358081253749874316414733761110700403879731481327366128134414614015062028812312964841192776605772461602572237848579751596062846119891809475923058727329328606164325877380198476851130919034536367632484283364665496341548696606675798822283175208724674569561785917038686953070189275754779088627350245328334100342506484849574784279451309720531675563912478225243235012917746633631513142936777117922425886154614922105224375020527023628916774071542994620484847765716560515554737127344964768600124294594714592715001471003807303089010784319406981481509952504990850744144964515173603048334536187116309970688343136766612177268007668348523128350364138371524518071578343144952047467567938905941913593215582743180827679406961185115865886327377643057697587542832729089317101509237763970252435463768975389494971467359397430380888536860037432765702651569010253133830734119885207436369488914639018501744924571605683611573454465059643881519676195549227750953450440893566116496066519058403193663154983497437154203819963260242165229405208778700716060684766534758748916704009916082633385168020080405048885760694176577865460810820723540078488639369178154320241426505293354277745875660846622369288568123133292561261235256785531922213375332813363516492867281651918872071496312751377718845934838314667391677793894714490889453532680855202389134062406106528371557396680459568935062620695390268278489516786937751530412550577162465259150382716339278325770531171352930227692196632869620798522311181142960193953850924687498620070544338109430949277948159507329879155210160241450119748611369522285092212852813824570293032227779647026176189223572123084451190061745506256343264326562147424832561761153522386762221700802908370661822157393320044695725445229989991188431755677388407747966911115439215417944956153478651673184696643896949254524276369957021748106422271849652943735723075220056207411130072896924286451944171527022637264455020523596282445070630771934761579048221305568215457139994617211411085307850660300120371189812200827308583395539820589069061017861328862614076955537014856977190049697039330309651801348304720476087039640721882498623638587478814436784569169724978777030982272340221145046578552827191352546947143035275990939793413754422719012024556590240543018750125119716435776594606691472552962887122631806058400823255622524530384727573782908089505801222820975600456796411789607997183949633694399179379455469571927557602044778175978015388866388477893024649939309704230972907459714140113585529896807765412294459996359442449522528811461650087362667428633366378783346662514627715854569781388778149878012550900142410424032639113511075518363232906427235201384917342979688961765962102151375425532423292393037112830729746922825304316043663626837496782405688495899065655537216405612388901278198928051245924054604064320232470222166534446528962122067805923069489828996675843271638295113384222501506572543452808653339012061245181593399976731212745904191650313808438588548016446126120674226308029977326300360093713369252084641668517986682964017531891894972707847947894703397603382187246975964105692629345413266060528347071427038400660608705761598293765664181968080597125867912583308892435338706392483149232139991310577488003922853083026387762353546878968616781786702320683290245408076838623224983658193002922968799601420269991247101304606880493000638853120262969345837845575632652594203162116188047397369127024269086257206506049305152721408369249824397488170653226655559449775665832715337829296847540526548358288035657313921214610780153539347835226207976076946168876430114358524272233723646988855002094455275840302962666856844081766293291452137772048110790637266536704660807449519739327018721619044684676011960134044956848557708417750475836513642574721735576244762978717150713261667412716273664438107629604313094428969497371965141673202051915817445633979326940820989733688568069901109275117585286470786533583664247227757623461868123616550942380510328263064047797942151063136084100508835563648567547381317493212871351484118995384664462190866589013506449874230637279552571417457669151996916924270409859368135881488538365606716772030232698811184558469064636039865808366906057231656211951193116937650377253371722258540457313473237383533121791937083143459043495393649754643213866611930380243460376842178995100338772584518299046902703748625190488159098692582062884386819474282872980115522829156617371896871414855580179892864231619779226423289057203279126691229766046555328864768267364321578175263384079348441103395394618249025089795196954124821643685972538912223482310109199583464708899243992298931497078502095787511123559987214651034665741434614829428967428333802394306584477458469633359430987362811953453518400356509454058669839297226788372776367280158730642818372182875605917838630804855852420246178189659203437587382007313143987554772337361728272583250185719831437811387405182412368783988197961286391351624156213505940541094805465500164206288920572949611162162113050402038557325431333024558950631067367936611318153854810023507303764110973942973756954917700791836575148652033411756519651474800034591874142970228482783950150557217039469375536911748110596177461367744944289602462137274637274069720165611598466507748445243616769937369465337749866771841938628315536271843426900115553507410869477054081430287053781532316668174001761433261847823250273169400494042990324465308492795796008958697421991828212877366624163731089097149011406345956531300275914140023841183483485265586993192321555157485947797690816166469044557255832260658892615942710042684013595996265472441252752479660126933682227709014013002675508541470117652788250994783969626624171862885916722522793464173019418067898505345599496735174015977358875619968199716219533552738926637031051890494978338580207273924479022246491648620522810980430864243281885381172828258575698372088024439462447934958632586064921165575955786537269481483937723577490467737221720409666604585388204859474442997324805317238786488235195413838346371458154199153397286434670625395599277956221756084293733060481746683886469999967199808248860997598988465769993529406058206112180431991132713457015628241212019583216636957380809911503435447564199491276079636441647078944643232895303344668713941249744967791690209229128883799300994462500424955736495750871431874087322800538276593777301272661937240773237633293854544754939117218573431236413676044727898884777030673570034488739595200946297274238360844588881821427893674692289872719794617552712949171013259904704167278643987743105273334320443413659380726864695786527091362412670288650332875617283949480199386204263527209082186767929892326304543956845184355613429740397723016551419039154318260427281778819523773313505580722929854977110755322952416544942744038661223221183759746326498482668536001557277096914159111874312153517083375211013183593250726321533259140501285618966863802490518474254707070066879721010077181030496698210597599398932161175581512349806140123118157674998684530687977209656109669570842567739926631008487026917889091286956137809901880327742971892768270601951934752109320934869765144253043800750296293513146606452851069332013443570630554704382747449487485536496427956274784905893103873987768740604182379428000525642086938721704335210558279257980735181414966979314982367116027137599914079057701202907012346767620471172401133094852140947507709878927974690819147519376781258916641942410215263854181358354623399721795114283058445754664116386572155146227613060724837022655475289960130851827789796741182786701725436689175126115738951255328459283705735673792038332771275966384139356869886544157959423900159524818315186940605161679257955706740318466678645508179828694369147823415549800070451991820864586919375260489703149506500802123898113416334762997208596193606353010669216102269842389887094552624430998968131186451615404193377168588441373578538825728592377440448612020203066191898235515693843215931480135839738134274029581253133656093204899636776425859689995495873537309952309610072133005212939182414561325696226801098867717882906061991955075678342181331882095542089225604653021264291770836186590776579787363667069660002867694074402468427249988282181175359142889347493588450134025762040336381857980331092417620342654222801867511538594654519800002440876114049836951162662750192372554175899061991906290784393548297931360854697304660217388326454025385317464060515392460270735562634219706400179619734817004536958508273604064174329604012897892903752485301302318494759650641425275359084845658186671712160266483012379281979192335879671133821261746570768835599550683335228772226084199813244119457702012788644482031756025391901885339469726868198018085491130601667643050694626140156924968196367534431524629400571184798126488006430721476852350356305114701192180938078185596501406019121622406459154304979668159832955371593225491929291926247593357479974910111035479049436421729173094079651242582981533593842859642090017067207572422151856331378087765898272716477356116505494492527760323026755374093035374204268993047047278479131391553691647838872720204941034872333171803661000114147594995620657679606204475115479977905970944031101379807757313636918891924602682562733654982817525199083912568378542859662922923704736713241305728532013661459371953714893728644715593769353695924513479019412720277833400288463057686946226328790417273092172568136932546842785412317831005776620608067442091003848742510088030854918907472765326404312356309549410618389906172934527763348333129738356175599668898544090809612543931015042371463710234727490208128449271087498194070337397932790231655494664919249685556900070331820527927700923879904712981785622980056040860293852786608014416839444705794599237330395343625677231165730337929171123427679896358733212313404887778628928451238376200468283542093779290360409735166492249355597416078350393046779330842606201068250136256437582935384024422088122049514231186924987486386922255709770571686751402668463117086056087909722759647760111192263760999074221853531262551997916860630419344885774566813330605196726150306444911793623636315706197278750196545874376400639813558827027494733550174136896390860197943805543393966475454387001187325653165083037204644787454406449433808128377060422465144611339962742733002574791924410578469257487544550966959852204997217505241888127436816371252790120771208092431156862674023113879531236174297777218690854959431629046382150819392457019720688697146956554700635427875989653883984765265971447058319231040626981527727045895977255770905523050300664800936806107450054604610397698279501524594807393099512501267065236510023558743136424070008416804213522349576537960765214664370640100210453084611914479027691656864136391290070746628452999965623824867446732398214983818615825977108668636422441563513003831975312156804175525835009983723583171193533501782236576964961510324559549005090600262768394195823389119794969001830645368080861318691095973101919011548228483763812949239379397626324227241369442235711216350246757630159193695160367142155317905915084581982797609343509326821521911481105188403479863217823202421104691839244143919644602509537137465590142091458129871968626743829025365323860594221268369465152742323854658707635430807412874755583770885944383748932124569993895933658098650493753903580677968213439946116629845206367354440478040241152208147047847884378168346630550895572113154003279420848335567732550380587563785065372446579951171277007080376181880859588508139391302063701382117980942753440726346766393542850829543275168072355642671555135145516266084215524110054708924580833152698259832144444062702113296080126316162775848061402470651419774813974402257085656428945474157242235893836799387584558606751664927393493334857578593093025923033903249925802452928325559868490477635990253074330537697360009102142806389826773193350715830565814882983312166010168578638318113581909715614425901966904069916789058597977766919792967752743913284801516270290058840699327499070875081504588210302710253892626213023043634438957621385860258666727257127841683811540495720040171541891264342129606769050464645389966030356482089900989596777679522985065453229500095190697538100163379643439267150956032532346334280315920319424327896526362404605954432140230470878470882264003739306894517976684362812045551613042852192669772965726304705516783708137205632647644097851889002247751584331244400558203132964873335621281299717509879304619288476150109332057109283431502529001299150493028581031388664548216000769077942923394288901958119435090722574806233751271973249874552746532634460237024563407790213999716314923882457446186579151315812380783168745156472877906107226071419443707680584882191451197597628219448713650209673215406805360654332701478226078972457384732586255866424341772998013397576055716829423544245310237330356105227120287256517184974300181658805985949145921001482457911564043446049296375077517623765343452571128748736683475042340324486422980741771950961157672017460212375000343093255257855859277198951018128053837238080978550325407234199361789853768134577442527702115229975219525718789959045191073349653955820878281896398142889923003479767972076383190379298185808476922809215238314249626074164796021558425557210308754766801631838440222800550783465777015428522380797710835404996664778131573332303144318415473153348891859475225796874442481044462069842108821743637445608331048146899622744287339341798591369054634267513173964115613718772637770100806267461469864702974890809600842718955909073251470396524319777099477171768967587473664352749169748604394124828227185348843004451978265273237048553782545156365567001316028448768834710532422641102380518061679205162015773801588206664244457180510418277261829269152549407626154892937631258492719033672820382433466745502235228363223303303588498621164057491411472890847331713440771748363429011212793517034275378352451698293411530204186563333810558260562682373432930496010859284665817691922432863011084933699996961786462463745048747116470391194990030628015332701370191200450760857094229809065249035739502022559141983819390742711457191605178020143282612262800696462461845326859864102767722533666771388582815245205576926226742350534264234612616163494445478555919018674566723039443492562381116590300549213807725226129072939143803666847794403804034573197127632276495815673691688391776493042924568568460383396331869780349811708739849417094527914268223170364569506352973511214621114908992490959875119891914002201928543340360020016065452018805546551793704705117911784155214540116673803430547871133266630619513912440304683435504710983133680288052313077803153090031854465575440001750060605408581808515948034989770356122583873261823440265390089426304521951729320287328409207700383100123151876966524323583031388935239745236968350327632037316230013986711095983640286158845854503322070918325810361899675959053468566534714906108407864581052288055415062268431577178677164927351157974624449718170551912415953093539272615139170040559982269069144788537260760097258745113985468798064087385257717936930463104173511481167429308423462459460962543960069832104794421579983837186447051182599950438328122680458288337425520120137574451732030637289392014736022854027545044245408438033635786397265945453723332808703182454632061130743471916259007228432728541803309270197500946096444605584853072197436724505877621601824420511356681513957999452264448682983769699343994225768926072658063255358146106163505098999696551897853532925142643283744909834395865851620590128292004057571404777642678387685668703868806130918608461650915274491926100585166495256709407294941727457418325940432516141904359150294292748288413140787948986359366462074746713836604803390213998570822968145438813731705421355204337496672010739199285545674998128780178114493708777570231591229449657604145369857370727860129063567167048674305858866375066717347101711427057387739505853397158515841254093617246606188397586238440372102294736076889840979753873898793143249127390280808824855731104585046537769857330026521552755052259518063241611856641516275156726512986189523254888151278812592686063111446785816181415218227445732930445311585144011106096911480434585749527586559521968949018049836045512020729497009550286634399863511982953971128118927749655951377838933784252855345681378774160557470438174481259093651353914975509617330930104363369097847558011805545516823230152705422673827213285554606402424177535395875396349439257879147269990316570555566363631107873583908853302109598741956597344312363552802425107351220022316890426842094449146094093908848454232919398697089400054268720672186047939476318363153358024503206934420826394819801998769864748411198961176921530138349929123130568849437161791761185855627806231398428339981489989031517554700169925879901481360164293541370512956624760397990743413674286804847840458699624232365464488482648339370331099527120400687180993305421299234942550487704295774851922811662380580543940934664708380776764694636606791934436854233668907969931816983166891497973095943662588130142677860603610047337982454343702508574417771555874499100448295382819121831778816886809637030681464951442852987045658744822323017354193015398929135356947939839140306698866302482879187121853214437761579840307617080110522099185105281184531897202070221182174780155244891343031372681720259990267379551766505422208965641261232230697112205687652134593678103177579970271087834049239379072209949397401559634057001243257514833108769363888955683621052565237599125728261239118022575912894175987408009344745117251993238187747886278888586407900202408943623153890915214818002421838815923966958787049692850878031566893781773464813916368968542781397442084762131956466252849726966494397504673443856343004132647844309750841983656463183520640918053128194362601997214048354393807871873141019891406717655832279814142519576502831792032213339668060138693124678086147323694655541522077131244528253802212257686660195802890422055107005242552590674759212912277749904354621960351337529800061117715230093493340418671330565674438486174036271062712551650355860019081761842688678384695345181209344993751433013590249265630411818871254942665247341590902374863056013659912681932484952788985051121820811227358115551518694832616404366490062429428314767614403471928494311323127965060377740115015320155059011183773686991112928134219938238861942579094187368578097611857130108971701774055507254283957072531780780052063471633303056993180268811324636908498651379339810544455043184362168932560296467858789354987134340096423851366091213584971916411716002520202011394261611806506910717102336647860845390923567597373075328613344631519251210849547351316195902683921154170420914315410594227945953667999824864089646190094752335728668593487864038958074636801121239687073243551314746481125760217832551027923488199932464686665557283280854081782932546169494512387423905425853523327120893410410728807263709579745414874034347298836164872219912390950976376370657059966587673786130299383959548096535839326684422935261597602533478601891806412747416883653296136723782138835982528170764256084886875777597602961751140496094774423625070287438285325047835576946313794396636877736116310029692958421411875762799468941694906926445604500237069120930529645136448763546020507845697850054138785172342116922512128840514349291988431425294645753905990244686733733410385281678970312606729383537299554607797672907990394591796359202264492486835738568186180945133516707434961240365199176036679479430505970223502962244183781380913196804818441600413779120622805317818799661043554644440443705675483765184690435438142246744131509594661229983124492357221608279423279364533295157372659250705441584344308292111187384818184306257974181607894350319552740374868519341191483135283763350477192196383786427703966689423831363409240725954775713154895328593988160732590160054997239929414823714727974826024035217860503862168944433455274636864484104518503915125790030638481521747050177942348449246957290358941785218596751364264136325302012127514536979011995360578526074657060450670609980645092613668861127834866905147761396712739540375500705135160407800946104520181528985815263489926159911880084213321212768952431725838938601672188812651102720142982130177098645113732975494219793752073889227065759762609687893651335914924691660042543013159140121403093465609000857166311112970382917214818048185101582696684107408042143042945014390810480019118356949537099663818754715059209366691270390106111853299655506660134809491448878987832685380104145003045774887739416422218687559783784403589016023706079260754932303246949584114360114089506475306440896925694575031099223891967798964042809303692120072723649900326855730217433709980256225249076797838874125035531112686624813374295588750086023037138555024936706002261539102751472102701168353855022613318138841001365460254229596701129402640443828649877042750795516229713646589327314125732074265431844531268182493212072736085146019842646560868628969743149933436726067266230293919685332063288083684098369674426608064526187772953954892826318674314993417979569039823495888917128289051117477198054203719038275454185022748040457767103249901035731885373830510569953185345260681492090178619428435327767997448105824239005042284690390909455119903699725245439425773459997919739647511506450037183108134359259135471444850889646470849065205304395614092274471027676451130301998192579884981980383331004755985458519740718112147812962705310617555010259274607985705228893551463836617686124231748426817936045494654384933976330192421266623131254582148198369659191509650211552964003305770959771233149223935846202962723117218456932567654472669816733803847092639735772223976250554596127643265710435182191800068647592743527104298607516812775387380003886771219532565745981432787326595836968342349008462815121251789385562875463614831060974949395788692980727720786032761748572416672895325498419331366014371448904732847968285929375551256672205371236319010761607531035489389025830582442491033340311783200278400330573275229324139285691959682207033048166845240280073722049031522270750064451502205702838802314453492907125113196867357626343878692666709910893945062710386453480965984908868928331852364750709250772228522623061255781933618377709440518884675617168771208213362028807000568991336640250325843144807507365386167323430530383757386514877678566741578803351624259009223626044690394968507237740190193077024096179943106691946391713265839010095279092109535492123342892233114535396448888859072578357724845567858023341418639436957064116245382812764104096389861125288235620089839796959708844667271837724791853923155783350300837209697417124820469598763421016230556944144273578255047209140685603269167269642662464781417402044138800193094975708451596078152422131206951630446037496865433989208174418961047669463435692646401380865304211042807149992732461476622644253291650530746199877456840901162470871578154957110644808251440332624321213214254142116691052442993385768448482702905034603814208635913143936488381755746324155738630413306167461255699186732545319102104515653378661263778599973833109965924889965578020478609385756785428483645146480030473312941683848824619427905074772081786032588682913441577171034065769355232243310095044798628461790230246155642424833564029628986053338033122509288271156493098356126356548508541821956447282864237858810739664866039796867178105481303341995681155609103956708352541385258044674233021538488882256047867864755689487264233200251948632434367557411696985908027963208271722356561030717196004391383906360151985343954617673570213543813895091001157665808641175774156333012362213294444222039514585400935738306777816189406291014204426171617177142780096988819473458459887462124401026378144063946634234937478266777216707400466276855252285387625315985860983345555708831049494034215551909856922269254608364369447708759473754568912693844211940774320914411502602340550200223765229096489309938496752456919270003385668591424974211318904032650304107631242385298382914407054967999534142551977432253069569518207821850880260921220586532594795739409805616209429954329604196061909860469006839106493724703640208556506345365382655886368345271812409551029573250054776291206004935504682461872164043783174653715005083196118181680022375451553428281102240058446959296955227821993514685348539842528436786789259135360096841258032925547689013177486729459318947085055431774319351281557368747716393992737693541108230965435660525692480717964031924241664724388845193264670242141356326509471299306016413454162671571381531753658371397956451669887495352630248631157664761965740380082152914081452732415621628375282370868233950168887184531780269004718739099708910660900090201255053397723188285495192828542314394947620483330304687649237120551521237832434525777447953092911201834715259217245519280176880179885337857732604864405057483694102485505256429471768330406332418310295400408419432432940963470934061812695129941627390018523946146290853393677169776503143927133001591974399819542958121940959619409121036386106497029519948200613092346225268222984335952952211870862507812271819553684431413604081858429624556100379315289298469968791166103454024434690367788140204407001004669551371707738311759495150757612726027877731029702306303481073738582347882595922394576946021621186829772467105355572710477124514971906584017529758090618910480942805666401277004037346463984772905375809948144463853491825056157101189240572959686371293182284160480818545596306440473897493917768183499944319205900645179847295735484551449225229261645269968906429508149998138016622129015857135775809846587750617782253958791389940037001143544832241065010658361305409557331037342515976928994199426578267553413249193592307251067458813978078291350669052525953950112448480003624625092254818432528874435095079342421604083110240934432048412320452642368267544141594660095901465974593532827701312505826582575011497446990637441740616567155660949020249228616684830320354314707270016757257201734175571113012610174151094479944413698938350396910278103547991209738636261259356477694949886515282971734718664058449032335352583037449070952755124611382023143401658303667877578519296296527334023449638130475844470991345333618511394777165597830452951636561490737471919475646861928324359374967832521186421053437409487480470461954966554705773855950738645971740817037823241512416093275245345820788368984925734262305322634441156380026457447197182213483013402950350246138649304465256498219312777160525099167726998120704957725403800575045490582281116114994378718817183032439438208226746360325766986720916774835054649560456316259175632867603045141112409889552612372622765216331693789078480741915298207295555848306263838407170482811223590205255671667422964415870641962144241361255726603720198161298973619057586912427934170325155184902616599199143436064767051953442782556327831427853713857411098088989225849680427893366785692117780023838758363675203567047751767933295657237755027185531691483903456972232893961200648229859233228579781125136864313569508852945160079164443773633476981446295403950535828103167719751726784350601629663178850550389728335502140195564260831725188380387307159781158911038797569919167004945795140577149749170901864075423619030300911182620763077511907189012876305215130787412613925421216160360751332520310931569700798283937005333531483817004253266974122408656002783119309246945216360789948717449837131577677922669864583629782440739388630470181967026233829667565773873102079102987908580164142215769036178315875089633501680791005716918960107298151922455023391131279507844863316483788898011992028922935242614044660187284736254085622682834529882590617733762378374747202648059522912576707100472276664571181081828497963723051983320823361890551873317486588183597041968899647405888812769324885665206175649824784331136051942330320955997813290150374169555690598341682414758358005345032263076159951017735855589303019820663937187166738223420643133072273883753060709742405287892650826450075887658352906610591407918098029363694819236430463321771822021175150958737396912367945520530338753965695796553479705539515710152369148055346684802318377472296952509107769076222779644096906583067893946837767792663232669048207226484434581284994990609048194589647870843829686890438595763980976771026423557663089024892131001305788227380520948975891163833166047675665100986690807244435880890604269549826217825523138658314976275936944089547382635813595490748259777205666498345149897846304836074875260873003896477439834091090867636750095043118229481634887286877880618142748512183455056884216089061037969239651354971148328982756655369145281624013806819439797157064508394810115585016956024709722310092594188732446592100117958881002635994259708482658147888287467568985217077229723202214489094759132716574769640290873606782618033552995230016319587100167955339887968922205047010011389063615635451818872082020951265796370440182994059107927214391413065859873935945939866806647249901995379512541102421318646178957796346016199498645184725987268058320037711898529749988840623868356343243014613790813886854385271790938818469590098025543064598325239352259049625770848587072012496241155997192163530260660709931448706553743372471711358996628745306173083673087048269342745699715075360398067471245252833958545215646060059000665959497705967713122400751567337815731755845116818658270900111989799269094832164568929732353735566608022923214255026340432900765571233256796055879631067021720614281128969644791733928937006346217595371531877564139995663256573848449072798997910083484619753891994751816910829518221088342707669386410746832407567737548811686421700767615090296347645343686568901979295358016279996388099431659129877979491614467543895195928365541638941655634949364961607403740873577172023120167622227906175594503905136634860440145452083845427286042679614121738077233331267751337860968115995259442772881335900849426085481298429404772477164459261951878223611738672150293049444078426200516395163393367687521048654041265810615151381063263935652729823202648067856665037222449646098366399836365825764298326138044202049679510635928460540367467980830027780617634593554463824431146300071372144602579306617234168891833603527083083269873328058909495444334975114655549063249720495617631057572031874245243997961001300513101362881251642646541467566216418471740031857891367923431107308911790203560135760701742446161244397707823612390132206932904487297474667708365158321867415005381327784224688971310518664331206516637603593863201168061905577055537633677360364992716387876270201457406093693672211367026066251359512820184684258506560590497065152819145724007871945726278627820342047898093019876389613692251293554098133528921703415241378403497988370527212999054917321986991814063285400208883044316721908821428731628645291282887066115443721552877170570604616124348447368192516248043205025944481980530204535986716383404018559523989983031812399260867758441326518650885918827088514421998934133330104671880369209347348081232645725979472839249731922910513395615257747541668539314925713185740795246049806364284790354471628315103815173988609118640232034770300847089190756094694855291947481048264317280061195943077860015918935087735267314720428607580533653591482200744245764521762708826753820707439580086465928632736043303848285308853903855332348614871305843065583952661440745127334275983316524983354636338311850616828793114631386447872731549903896191810618225811994194258543856474840852403622495390802298101905113183569217747553051194324637039769564669265685730461935387485745474548531803797420197881185660590162228866272412460152679622021094012535010728078962481494326411253419325936549782831143489394327333139421162015929032280145593875719333520986496480401015368469256210183619123828239613847237761325489122341426463456792867754427053754130540233036035263170583560480037008121865434631069654336463838256630571872029280200897225456315873962517477987515356054666388335880482803738335843281234886361107822104373467807207148152456587769815724600397786335996139383096925464081053403190812702627052226018164361018089519728465893624253132229741126080320799891756070655845964271557907548948044677077363863257868119670264756034808085525933006104325450582318119445844371631130489034386859999641254958672328012330708972446485735538272452812683116142324976642281414157806727682979925482140939388726958044973071808687704736117992808583199418428491405610310555841404113412524512607651482794741704104508555513921174117909699949944138077122359611486542282513706246826158111267704327564719834230477914342600808913796656021750262931585150361150826736050413848790484905133275593843111446885863249713473516993295032625202150709018861820843089366420307862925612315011763286059087359702646725316162907318251933248352262736009240653208822499846306085714364841289204210934994061604517285057191437038278296329720531577065146776291030097029355798319414150197610941914453739920532379971545817364964168876652813969275610223555143453902384109425782195979757650614340946753732503697778300949396933922189195629933830643427842357993425928608221704765171398421314049866443720720332523788140277791693319134495238776754114249069486675919919115524635059068477480012114318640538800382974854180294512160755863961496844546963247293230634774004814278524154396815808981949969899661609677131701008847067152145047651867360230416267953917241882452727879680761316075541059208603633056503562463652855050253493849478608019628492062758037223414401417765687997128882287982851856003322488026022040865006856147528873435385875797540153930164571391471671391160042539309854941702496529294867154798015788742502152230116550540162661693692539273155844284794665714954330600878709559778016078241522501246825227935293632552928387677803748341379225975660508623451899520006550271647002585568931118574545455659515660038345490294841747607977013620826761777237291808944805985937922773779602164771924014259621421398152048641717356805328377078270519526709847397617420484043908676504757819931941243041177123618041199834460478895183606359631910158614297021460961506443641195117499315571630596201425150181128388605065882437056059202356631642243208507714451165052845415067097808080851672441966218691001993587878740388639996683623023734138001598565353767664950990981120035086276433367022305016868201908444769762114808566372599134247909095865960176282379704629611831845169982707258625668463208361346123275876520219495822276097730472791775307022937656401471570150603123068394019432703602830427629891416112019683710380141408360658819167165008669555364748658228361388799129393430801106411036742406503306803992584318621042791299946447585114169600357210438157957095528391813802687194266709630039430263970789169155406821880784658555589183142366431661016710970043339646209991971708490052667399949393124645885563312313000565256168576816471242098741078655616401684618105443606700332167319459199324804559567998844314002622600802628881188006088161891775688908776969324799915484922813295198723011775033753773984506158063112672102525281790176367584254556349673906995336472433972094889433283905354468728810249741810297092250546619901076403998845317693420655635133057775389193863669306991834605425655868705164472180005264501435736678480521635938716050416503207778590785511538467619550627020032108893492813556129597923638223179897023498575923081788821088015804957415400699801583142361538757925647242388065271363797533919781055008828224632453178217449526824788604797672702208962436493342699356518705273202494331071951221069318730689993098592688654567904468057095325225333473423398110323034834929517178574105226269026108740903170496491984283872607251986315802385098293436390674754854459924659801591397981418582800158623004657928930499141495824770952134245875818682387530291630027075762725947865821227819368622145724985158466580099763293854618850180801176478217411245219876559766971294143696106113612302343864027910528445943043133916663267112690598511400033628218370711265166997699353177108131047643498369142260604016608498278071054060236977815657846742243817272015351033515462368642825223680361745623868563711420294182888855363490410712215539677378212792938504001171148596659381275262256682730800334574549206704438125823923904766613486206013683813771293988827994751308475891995988301215387152574419412381447476226068834648858706639617162206593451235290457471618073014725679837379893842150101611995440452298353244439201356304245337965099464541409401494998025031536565597836490234188808696463603490112721627711519596821915331825959575551885212518211442269003344859271286227913506007307492776291453029668960179359667440503179328412171436131912330530510150770695249381710538279056954140700591999368475200255875436698833909225866367218550888340455501359261125896501916510656688648535225387182212843221884399211433135403492193025160357801967177079276486051857093141011025001336496825522387474808295736361392021889554180981081598463622614232871932724282534643030508717884192962595416173373901132147755094503249975052901677902751297694205366921037547465221635547109834317374178362148899395469037802172487094585186770930012509897916799608892358494351340358146933481155823397177111871069488870844726702308338279055819352376060712105984288779181524985526892916898169771532756305479326497428699889380770355624262738057395122369955283094631409213654957473184032227153342629154545066740409513258489251745894951453040542909925854317157799562581760030422099105501627694451657079935138142010860784796990853862871522191280775790778371590639687771159316980947819357536812939905863927717243432556756272342151545076411956132389217805472604221690864013707763682018315188952607119946758811062148170296556777942812437533627450340974634326975205472489671702387269156909914717782582977963643216463960975465090627229265120385884158666145053132529879199674915773930220784503882143864875273224940706693965405173279072485994435371203100135615211846813669839874064050008341057733642309562593482175302832142539877643154259022027570686612027858107329925902923992533804455918636701337810809181701161499325971154106538957803193456380395910615088491686184579554366213353862404529468229005466380181873403409584627731219911460708898848941094056348224778795961427666141965047354825879067952211675767220530116000295439261008669342189007742280071068070049356315167614419942532751651005774976056088498859079183494367859475921643977167294332870981630985883183324300422297953590981162371465213620389531664792862643382599634861925000395120572493802624931228823781014097594009428931662915167760327883521129852617756650413448593360913038295175844623203494974914165179908375706734492901224902529747574979742050002106663406003731866003308390615816816885072065325693182794964309658585406733281728826923008660251012331523873157425596492124889226549015883614419445399308078104363183239762732476535449006179002325229065282571464204281914919738887388806093573140020542097502020482802396957530453128838606753183180413618231714722120716858511620673458780848212762689022503174722516119261588243338767449952444434492732505531744736476097910021749893176437861458807350602081308059329158498808470348829171596127767256507414629365764148529834296644442209403194238593555813227361493776673378092377609835480829848834776365785714688656577506221151558342984932908100108088372100268085844151793490975148337058265267421349296237603497728123188032647729521086794670644515840940201571775430350624975038471658580078746878268495164463287848960878856056346450934896163169743105045165581323819513175905223706128682491544237639104590089628822641723836875903418320273003356617592635747925184879866743725876316742503710595986069001288762512476804118154783404812514751164897754250989522763124616991870608224785876468099785756699995690777785521839922485175041682536651172403481264582149129122640889832309992014062260099244291268883993005187894563801642518228414478270295351387046868187081518459838095851978514656128229212018856271178656781951865372510349741871729755268077300762982107262353653936518893638816222941960957234072662945228277096588212009569956941412021462076133412738736146790862165840981502021144402381041280424251250883937325527577117337986616772117322486188058793070661939091520797904347760947648229902630915645259852652351426082406577287674223134756799727233169989521419114425894731716176653550245770496344605597265572794815166192064124403378151092763885978383102009455257854519465550301246995381640601210343662742827682420934279626373395652395999817378249059327854481350431454370932564627625133649242512820576486994269314077980997512181283650077115840159571482838806660739273917501233904422474377532434136501025892293378909898783835997744621072578866963094511489842039592491140393655505817457506101458107717258837998857511634160292786691167461904365591738425550323512909380910134644272821236782228219560211903524789255642834093938631309207016144273343561768392015946096695071260787134006919955539723059270708621799610107543927526866927300423827447908075410338089761911335554236211607220959786761543017923621639938468989547957660767931657662555862328888341958281025006331151526846302872456080086024493507245030108230400783031595576151219819834046954989509826434061777922015202698717273136926158519899556374615974574751476743761878619405436331799448199218707421684180814768572994000075233007328760708771469685534860487027489184792709249535333983754626094433733032515199669313204947984860617843400446621737370155244778071837898583388336317051871475231701394053764483680409312689893186371509520310162182341717820195936661217314875571498709625015897265778525908426192975934981499327876012898297481801302513955401656740742216850342293182123512761948372907243591709809867936260493428885126511278718652820255574252494032278725612072481843951172165236478241369093618112853011844718845683244161791308969305441124717285732154355994917446499020686931075617421667334186609165302628815065613660124919531779983740755489097111398429642375934585615080318880945851714180064949364535973649030877678201116971542188813985546353470746080703026718628888167099094905487828127808372458317234986212227785960019744988804796058282310039384459545585269109729037178184648276479018986182113845519243079489398133256876630653378351331911274848188248662596501979226917582116118414287306394568957790733295371259982778148292520276396147454871187308323855969429534148144661681789463134733719964597750987783364244289405724721486331025051689631320360354172622130078192112932513759893682282761898438094232952668404869672405207574076058791075187428450213304735992945688679113077409644110920248046893065024931964522048240938556520005706710005859495886813562695510970268577213963715728820134124358408738944689728844164577395064088737288423942837489012346099566084287150267414187495425649479841848385871962820959477885446374521648256438103084109135495704911087255494677079761801565634611237266318594849791726944047395235607649191909852897356458928629738104459452802907338153775097668122498603398192996423582181648082577188518353374547684930803109595187299401366263822653454162234774772311308453961738397188217257178280423339056239809467587898119899705455896748544161972100059530059884503731622192443130376572006764511595596363774526764097092375628909773455008189308634710975487576532392383165983021315524343179231843380356936802680309074711077530643449857659333638389866129257243516335469244971824181245127687203135672398351564301811199850315776', -); -test( - macro, - '-1073741824', - 5678, - '28148898337860105994977487045818154315885187098857720123923019503536550068661096672354637598480165134022041984837084308868395452311053157640615896546050985553558586892645700423928507935726495168161698045415140497515602386527627319206488017355554288186119966734541348472345944365178980166309150611812365395806608007167010671798672218072170128957907439061754394300128594626814429645477396628406899347464530711061456854894379095840425674956808441653400041181506139011927908393244086335493121681302022622095101860620829845276309901056671871394201026397395171820873860291913878080280170380979892472296164150372296767377145551512657194585337453691634475382711660977481092241928982823053143625635560423178221937797712042117395219329456302241242041523769729459117196674726421874136677546084294826873902192894352596290458993633922997209073832114653500019746006542685067098597091796593235383026677957632827401939309333387666537839316094357314127534920705674404309028805143966637229018794907522055172849778130036761405770603918926933967928498088220730576083729725145992964744748428164200419463740275487586933626822729962824800560240761474558428430552602958126365583033236298214451648931511755996108094562356049299254807663118738845759260918867850503834415322452603653397365429159370357398957195114808416983753993622244836716555146831907033098694343145327951581021334647653286088313114479559741196437718942355964184601385362964266877652784804939052253222575619622416395426846679242522689602653790030499520892085577500725499201404182852867226125589028845844427853042309885329741850855526415975172436890910632693916719523636332471118794070682433535223602563287248795595868253883675189904726519119448801915261351526420699337492762857231988691678382926943587916545335155283702413750409505677924941689908432596377494319662783929468093868450608410231488451353317560659020100954006099204197631204922322164052615891958008133081819761014762487524836715828049458561031763108536694043217084348793653430411896364791299284106421121855831489687835195476115378899943269695006351002750960984964426672142770799033138424141023720291141340435508636127792984379054343612312021179919125313130082850457997100339188672577640528770106417201838870495993792046104170422555977835287298352499757882230600591394487250631375216854641145304444397854662472195749485109206617330733383898435103350307488437904097790795468490159665178407362104384319804361651012650220132889393331591715558188458831449467209968941910069520056730023723713589013657691484906132221013788386184219197754113246865122654385680123164873741763553852763331300981166654373006819001402186381647154946999554421873268375821628561307292124869782352332192908982894920263895011772173577732089662917292761688897717750366293629569204248484060863934466108937195948443800932184673102763342937824460121045896218443122360882698024688871403860910852370898051562718960418260546695613954738347691519692022893663002976632717861663007580356823097781646192222209252702435357691413104372734064147456843965665955652873096110765830684236182089087886565807972209217987226299585696168982138854941280194328335120626512261001331081248654357371396176501075032152655115462224365334172115688122152776903406306442312011439667376618560819888585728027310382981804901247107028140882078332241335878660689097272500434681089309886067525115434143986130726703706878433743992681042628744048964001570508077876948518135387246241479296880092162188798942915085422997374189631465329853471853984489176174861323479075234363120290867769013702739919612009426292832097099802965008680479851809369240814572285623180146280697670984531193650342503967101652478766807739947358226388629806728654389375296457819784548065774571293116718672409678564611844170365489608651048260596575158516893594390739121659741649999445353536303503061294401994598214548838049962733817701620624687363493549713852174836185700963467241090073849191740103227875513619343224494993071747822732607018496581774525356633102020037794640774098109121417106381829411247224212510736696706825452538654935037259956407630578146638429226378102600142256743099393349884190724617199388463752205790794440451940454605274720879574121263752007572801341506805655067825631941739793740936589208965150634092530408044204662895618653609322262359163887982449970383124228287512441583793977627962068395199273400344976325835945060297779883770211181669216457812349694314847337342309957623761533535923980598873005880875269599846465045392510668257169787436828598047252165951647190114307062027405441868359474835271630041202717715681530050858890904183091778324015733255757236109101580482580441967985828890176389397718041212941356619163330226370976268329734773630524413753494529257754781863229577908457569032718062086750844184472834347570239536056326155201810881038696860481717433476664625621082241586991225812173672952437197866259897373157784743844679729067516736518800101031672599250959815137720332161848205045025007611471141186707050967888154770682560924038751737207811193901992570725369435103201791686524505756647772640472180936813395743439078761800234463478180846516292693783004681080895964724137021083746991000603574423399483472642365997697739565793596648669477318614358267250383134596038860702874813526614432265002227880708968988988737493080405962374293053076826540765411717793130826541346297462776836630777435661531826481318792145062405811198530844655829858226912380798813160973881440163721569917634885574462693105998116146807054360746972666730885604323790569427284253076223964273715359978030815340692680006321945430455280199860142711370872816427712142263431097232719784998704069638989755157328661993441529401194894894909869599801115592481835323158814300011842131902588936147873994871847028405399169811064272549350520174591847212829792438106825404534383049157807382417071716548998177187833979248225968420666706416390190707768457675226123463626193995384720198209759936791376844052254490031460575054413862573529726918023653700705063568941702083630891996044965826722959248558923416329510449787545274111154340053470755669172749024818935495960038271562190088388398068258567446215438429638813416144469861387009096942616760208032476355018814040329680679835588802653484030011247737226987035720770688024054612187818344447061414642220551886870397419965104800759185726414865048332705445586347178339611571166805268460025130817411913319730985020314703929369141828244979458118746350794440972469365515773623521735815053404694400936400473790547133327308952286757212455297814986317480141532831981218157144776502263149001123086063793023408647358626440541879077132102385221082903921513070649860566861228278306927456359858970160082545255406851398044427390606896847739909856033659996912142151062203182419823681576029939545766232546225798544936003488100493795546219182495490312417078545669619133839724414087313221443223560772275469655787068013125130766170757522755288995196083208632760367504798374588838275982584188716625435557712975930208506356967363937122210773117642423759034688847074262569157860691733884420095472655868693804788798853460305074114676050174059869840188238249706756922707852403016294480987516418402809622158722332117912191322396344308046005168529470763240755288495911503467885568547110796443005962189288373077954193026536584426645858119360236884973893893358131236585957253729142968547596265350388138211504681166184873067638534159817198960647922530056737171392998222652344768890440903942958874497053450492657340534404950722261826476694600389620993991121412934627781512375531587430119694418600921042491946241808425609218148001707575278154030998716384895216667657329409014393641864525969281112155349965482510043869560234065512374117610382279304357796353832138535779361023572767566136655174688134341190085638519772716269105777397667544752112308407281551063186641110391181368268011784028035535033180997148034817583725977310854347328290703963033914233260949053078632664379976313477320469323833039980151301644772548530801510197665795747529811668583071320734297978242386191013538568847456151931045213697759408021294424885981327060102359352968094713641880316402184069434459849295665713894902493734764537578851014033582135990357328370745283459359873866508862907217949984436520976291123753201389817868962086019717213048013769401358081253749874316414733761110700403879731481327366128134414614015062028812312964841192776605772461602572237848579751596062846119891809475923058727329328606164325877380198476851130919034536367632484283364665496341548696606675798822283175208724674569561785917038686953070189275754779088627350245328334100342506484849574784279451309720531675563912478225243235012917746633631513142936777117922425886154614922105224375020527023628916774071542994620484847765716560515554737127344964768600124294594714592715001471003807303089010784319406981481509952504990850744144964515173603048334536187116309970688343136766612177268007668348523128350364138371524518071578343144952047467567938905941913593215582743180827679406961185115865886327377643057697587542832729089317101509237763970252435463768975389494971467359397430380888536860037432765702651569010253133830734119885207436369488914639018501744924571605683611573454465059643881519676195549227750953450440893566116496066519058403193663154983497437154203819963260242165229405208778700716060684766534758748916704009916082633385168020080405048885760694176577865460810820723540078488639369178154320241426505293354277745875660846622369288568123133292561261235256785531922213375332813363516492867281651918872071496312751377718845934838314667391677793894714490889453532680855202389134062406106528371557396680459568935062620695390268278489516786937751530412550577162465259150382716339278325770531171352930227692196632869620798522311181142960193953850924687498620070544338109430949277948159507329879155210160241450119748611369522285092212852813824570293032227779647026176189223572123084451190061745506256343264326562147424832561761153522386762221700802908370661822157393320044695725445229989991188431755677388407747966911115439215417944956153478651673184696643896949254524276369957021748106422271849652943735723075220056207411130072896924286451944171527022637264455020523596282445070630771934761579048221305568215457139994617211411085307850660300120371189812200827308583395539820589069061017861328862614076955537014856977190049697039330309651801348304720476087039640721882498623638587478814436784569169724978777030982272340221145046578552827191352546947143035275990939793413754422719012024556590240543018750125119716435776594606691472552962887122631806058400823255622524530384727573782908089505801222820975600456796411789607997183949633694399179379455469571927557602044778175978015388866388477893024649939309704230972907459714140113585529896807765412294459996359442449522528811461650087362667428633366378783346662514627715854569781388778149878012550900142410424032639113511075518363232906427235201384917342979688961765962102151375425532423292393037112830729746922825304316043663626837496782405688495899065655537216405612388901278198928051245924054604064320232470222166534446528962122067805923069489828996675843271638295113384222501506572543452808653339012061245181593399976731212745904191650313808438588548016446126120674226308029977326300360093713369252084641668517986682964017531891894972707847947894703397603382187246975964105692629345413266060528347071427038400660608705761598293765664181968080597125867912583308892435338706392483149232139991310577488003922853083026387762353546878968616781786702320683290245408076838623224983658193002922968799601420269991247101304606880493000638853120262969345837845575632652594203162116188047397369127024269086257206506049305152721408369249824397488170653226655559449775665832715337829296847540526548358288035657313921214610780153539347835226207976076946168876430114358524272233723646988855002094455275840302962666856844081766293291452137772048110790637266536704660807449519739327018721619044684676011960134044956848557708417750475836513642574721735576244762978717150713261667412716273664438107629604313094428969497371965141673202051915817445633979326940820989733688568069901109275117585286470786533583664247227757623461868123616550942380510328263064047797942151063136084100508835563648567547381317493212871351484118995384664462190866589013506449874230637279552571417457669151996916924270409859368135881488538365606716772030232698811184558469064636039865808366906057231656211951193116937650377253371722258540457313473237383533121791937083143459043495393649754643213866611930380243460376842178995100338772584518299046902703748625190488159098692582062884386819474282872980115522829156617371896871414855580179892864231619779226423289057203279126691229766046555328864768267364321578175263384079348441103395394618249025089795196954124821643685972538912223482310109199583464708899243992298931497078502095787511123559987214651034665741434614829428967428333802394306584477458469633359430987362811953453518400356509454058669839297226788372776367280158730642818372182875605917838630804855852420246178189659203437587382007313143987554772337361728272583250185719831437811387405182412368783988197961286391351624156213505940541094805465500164206288920572949611162162113050402038557325431333024558950631067367936611318153854810023507303764110973942973756954917700791836575148652033411756519651474800034591874142970228482783950150557217039469375536911748110596177461367744944289602462137274637274069720165611598466507748445243616769937369465337749866771841938628315536271843426900115553507410869477054081430287053781532316668174001761433261847823250273169400494042990324465308492795796008958697421991828212877366624163731089097149011406345956531300275914140023841183483485265586993192321555157485947797690816166469044557255832260658892615942710042684013595996265472441252752479660126933682227709014013002675508541470117652788250994783969626624171862885916722522793464173019418067898505345599496735174015977358875619968199716219533552738926637031051890494978338580207273924479022246491648620522810980430864243281885381172828258575698372088024439462447934958632586064921165575955786537269481483937723577490467737221720409666604585388204859474442997324805317238786488235195413838346371458154199153397286434670625395599277956221756084293733060481746683886469999967199808248860997598988465769993529406058206112180431991132713457015628241212019583216636957380809911503435447564199491276079636441647078944643232895303344668713941249744967791690209229128883799300994462500424955736495750871431874087322800538276593777301272661937240773237633293854544754939117218573431236413676044727898884777030673570034488739595200946297274238360844588881821427893674692289872719794617552712949171013259904704167278643987743105273334320443413659380726864695786527091362412670288650332875617283949480199386204263527209082186767929892326304543956845184355613429740397723016551419039154318260427281778819523773313505580722929854977110755322952416544942744038661223221183759746326498482668536001557277096914159111874312153517083375211013183593250726321533259140501285618966863802490518474254707070066879721010077181030496698210597599398932161175581512349806140123118157674998684530687977209656109669570842567739926631008487026917889091286956137809901880327742971892768270601951934752109320934869765144253043800750296293513146606452851069332013443570630554704382747449487485536496427956274784905893103873987768740604182379428000525642086938721704335210558279257980735181414966979314982367116027137599914079057701202907012346767620471172401133094852140947507709878927974690819147519376781258916641942410215263854181358354623399721795114283058445754664116386572155146227613060724837022655475289960130851827789796741182786701725436689175126115738951255328459283705735673792038332771275966384139356869886544157959423900159524818315186940605161679257955706740318466678645508179828694369147823415549800070451991820864586919375260489703149506500802123898113416334762997208596193606353010669216102269842389887094552624430998968131186451615404193377168588441373578538825728592377440448612020203066191898235515693843215931480135839738134274029581253133656093204899636776425859689995495873537309952309610072133005212939182414561325696226801098867717882906061991955075678342181331882095542089225604653021264291770836186590776579787363667069660002867694074402468427249988282181175359142889347493588450134025762040336381857980331092417620342654222801867511538594654519800002440876114049836951162662750192372554175899061991906290784393548297931360854697304660217388326454025385317464060515392460270735562634219706400179619734817004536958508273604064174329604012897892903752485301302318494759650641425275359084845658186671712160266483012379281979192335879671133821261746570768835599550683335228772226084199813244119457702012788644482031756025391901885339469726868198018085491130601667643050694626140156924968196367534431524629400571184798126488006430721476852350356305114701192180938078185596501406019121622406459154304979668159832955371593225491929291926247593357479974910111035479049436421729173094079651242582981533593842859642090017067207572422151856331378087765898272716477356116505494492527760323026755374093035374204268993047047278479131391553691647838872720204941034872333171803661000114147594995620657679606204475115479977905970944031101379807757313636918891924602682562733654982817525199083912568378542859662922923704736713241305728532013661459371953714893728644715593769353695924513479019412720277833400288463057686946226328790417273092172568136932546842785412317831005776620608067442091003848742510088030854918907472765326404312356309549410618389906172934527763348333129738356175599668898544090809612543931015042371463710234727490208128449271087498194070337397932790231655494664919249685556900070331820527927700923879904712981785622980056040860293852786608014416839444705794599237330395343625677231165730337929171123427679896358733212313404887778628928451238376200468283542093779290360409735166492249355597416078350393046779330842606201068250136256437582935384024422088122049514231186924987486386922255709770571686751402668463117086056087909722759647760111192263760999074221853531262551997916860630419344885774566813330605196726150306444911793623636315706197278750196545874376400639813558827027494733550174136896390860197943805543393966475454387001187325653165083037204644787454406449433808128377060422465144611339962742733002574791924410578469257487544550966959852204997217505241888127436816371252790120771208092431156862674023113879531236174297777218690854959431629046382150819392457019720688697146956554700635427875989653883984765265971447058319231040626981527727045895977255770905523050300664800936806107450054604610397698279501524594807393099512501267065236510023558743136424070008416804213522349576537960765214664370640100210453084611914479027691656864136391290070746628452999965623824867446732398214983818615825977108668636422441563513003831975312156804175525835009983723583171193533501782236576964961510324559549005090600262768394195823389119794969001830645368080861318691095973101919011548228483763812949239379397626324227241369442235711216350246757630159193695160367142155317905915084581982797609343509326821521911481105188403479863217823202421104691839244143919644602509537137465590142091458129871968626743829025365323860594221268369465152742323854658707635430807412874755583770885944383748932124569993895933658098650493753903580677968213439946116629845206367354440478040241152208147047847884378168346630550895572113154003279420848335567732550380587563785065372446579951171277007080376181880859588508139391302063701382117980942753440726346766393542850829543275168072355642671555135145516266084215524110054708924580833152698259832144444062702113296080126316162775848061402470651419774813974402257085656428945474157242235893836799387584558606751664927393493334857578593093025923033903249925802452928325559868490477635990253074330537697360009102142806389826773193350715830565814882983312166010168578638318113581909715614425901966904069916789058597977766919792967752743913284801516270290058840699327499070875081504588210302710253892626213023043634438957621385860258666727257127841683811540495720040171541891264342129606769050464645389966030356482089900989596777679522985065453229500095190697538100163379643439267150956032532346334280315920319424327896526362404605954432140230470878470882264003739306894517976684362812045551613042852192669772965726304705516783708137205632647644097851889002247751584331244400558203132964873335621281299717509879304619288476150109332057109283431502529001299150493028581031388664548216000769077942923394288901958119435090722574806233751271973249874552746532634460237024563407790213999716314923882457446186579151315812380783168745156472877906107226071419443707680584882191451197597628219448713650209673215406805360654332701478226078972457384732586255866424341772998013397576055716829423544245310237330356105227120287256517184974300181658805985949145921001482457911564043446049296375077517623765343452571128748736683475042340324486422980741771950961157672017460212375000343093255257855859277198951018128053837238080978550325407234199361789853768134577442527702115229975219525718789959045191073349653955820878281896398142889923003479767972076383190379298185808476922809215238314249626074164796021558425557210308754766801631838440222800550783465777015428522380797710835404996664778131573332303144318415473153348891859475225796874442481044462069842108821743637445608331048146899622744287339341798591369054634267513173964115613718772637770100806267461469864702974890809600842718955909073251470396524319777099477171768967587473664352749169748604394124828227185348843004451978265273237048553782545156365567001316028448768834710532422641102380518061679205162015773801588206664244457180510418277261829269152549407626154892937631258492719033672820382433466745502235228363223303303588498621164057491411472890847331713440771748363429011212793517034275378352451698293411530204186563333810558260562682373432930496010859284665817691922432863011084933699996961786462463745048747116470391194990030628015332701370191200450760857094229809065249035739502022559141983819390742711457191605178020143282612262800696462461845326859864102767722533666771388582815245205576926226742350534264234612616163494445478555919018674566723039443492562381116590300549213807725226129072939143803666847794403804034573197127632276495815673691688391776493042924568568460383396331869780349811708739849417094527914268223170364569506352973511214621114908992490959875119891914002201928543340360020016065452018805546551793704705117911784155214540116673803430547871133266630619513912440304683435504710983133680288052313077803153090031854465575440001750060605408581808515948034989770356122583873261823440265390089426304521951729320287328409207700383100123151876966524323583031388935239745236968350327632037316230013986711095983640286158845854503322070918325810361899675959053468566534714906108407864581052288055415062268431577178677164927351157974624449718170551912415953093539272615139170040559982269069144788537260760097258745113985468798064087385257717936930463104173511481167429308423462459460962543960069832104794421579983837186447051182599950438328122680458288337425520120137574451732030637289392014736022854027545044245408438033635786397265945453723332808703182454632061130743471916259007228432728541803309270197500946096444605584853072197436724505877621601824420511356681513957999452264448682983769699343994225768926072658063255358146106163505098999696551897853532925142643283744909834395865851620590128292004057571404777642678387685668703868806130918608461650915274491926100585166495256709407294941727457418325940432516141904359150294292748288413140787948986359366462074746713836604803390213998570822968145438813731705421355204337496672010739199285545674998128780178114493708777570231591229449657604145369857370727860129063567167048674305858866375066717347101711427057387739505853397158515841254093617246606188397586238440372102294736076889840979753873898793143249127390280808824855731104585046537769857330026521552755052259518063241611856641516275156726512986189523254888151278812592686063111446785816181415218227445732930445311585144011106096911480434585749527586559521968949018049836045512020729497009550286634399863511982953971128118927749655951377838933784252855345681378774160557470438174481259093651353914975509617330930104363369097847558011805545516823230152705422673827213285554606402424177535395875396349439257879147269990316570555566363631107873583908853302109598741956597344312363552802425107351220022316890426842094449146094093908848454232919398697089400054268720672186047939476318363153358024503206934420826394819801998769864748411198961176921530138349929123130568849437161791761185855627806231398428339981489989031517554700169925879901481360164293541370512956624760397990743413674286804847840458699624232365464488482648339370331099527120400687180993305421299234942550487704295774851922811662380580543940934664708380776764694636606791934436854233668907969931816983166891497973095943662588130142677860603610047337982454343702508574417771555874499100448295382819121831778816886809637030681464951442852987045658744822323017354193015398929135356947939839140306698866302482879187121853214437761579840307617080110522099185105281184531897202070221182174780155244891343031372681720259990267379551766505422208965641261232230697112205687652134593678103177579970271087834049239379072209949397401559634057001243257514833108769363888955683621052565237599125728261239118022575912894175987408009344745117251993238187747886278888586407900202408943623153890915214818002421838815923966958787049692850878031566893781773464813916368968542781397442084762131956466252849726966494397504673443856343004132647844309750841983656463183520640918053128194362601997214048354393807871873141019891406717655832279814142519576502831792032213339668060138693124678086147323694655541522077131244528253802212257686660195802890422055107005242552590674759212912277749904354621960351337529800061117715230093493340418671330565674438486174036271062712551650355860019081761842688678384695345181209344993751433013590249265630411818871254942665247341590902374863056013659912681932484952788985051121820811227358115551518694832616404366490062429428314767614403471928494311323127965060377740115015320155059011183773686991112928134219938238861942579094187368578097611857130108971701774055507254283957072531780780052063471633303056993180268811324636908498651379339810544455043184362168932560296467858789354987134340096423851366091213584971916411716002520202011394261611806506910717102336647860845390923567597373075328613344631519251210849547351316195902683921154170420914315410594227945953667999824864089646190094752335728668593487864038958074636801121239687073243551314746481125760217832551027923488199932464686665557283280854081782932546169494512387423905425853523327120893410410728807263709579745414874034347298836164872219912390950976376370657059966587673786130299383959548096535839326684422935261597602533478601891806412747416883653296136723782138835982528170764256084886875777597602961751140496094774423625070287438285325047835576946313794396636877736116310029692958421411875762799468941694906926445604500237069120930529645136448763546020507845697850054138785172342116922512128840514349291988431425294645753905990244686733733410385281678970312606729383537299554607797672907990394591796359202264492486835738568186180945133516707434961240365199176036679479430505970223502962244183781380913196804818441600413779120622805317818799661043554644440443705675483765184690435438142246744131509594661229983124492357221608279423279364533295157372659250705441584344308292111187384818184306257974181607894350319552740374868519341191483135283763350477192196383786427703966689423831363409240725954775713154895328593988160732590160054997239929414823714727974826024035217860503862168944433455274636864484104518503915125790030638481521747050177942348449246957290358941785218596751364264136325302012127514536979011995360578526074657060450670609980645092613668861127834866905147761396712739540375500705135160407800946104520181528985815263489926159911880084213321212768952431725838938601672188812651102720142982130177098645113732975494219793752073889227065759762609687893651335914924691660042543013159140121403093465609000857166311112970382917214818048185101582696684107408042143042945014390810480019118356949537099663818754715059209366691270390106111853299655506660134809491448878987832685380104145003045774887739416422218687559783784403589016023706079260754932303246949584114360114089506475306440896925694575031099223891967798964042809303692120072723649900326855730217433709980256225249076797838874125035531112686624813374295588750086023037138555024936706002261539102751472102701168353855022613318138841001365460254229596701129402640443828649877042750795516229713646589327314125732074265431844531268182493212072736085146019842646560868628969743149933436726067266230293919685332063288083684098369674426608064526187772953954892826318674314993417979569039823495888917128289051117477198054203719038275454185022748040457767103249901035731885373830510569953185345260681492090178619428435327767997448105824239005042284690390909455119903699725245439425773459997919739647511506450037183108134359259135471444850889646470849065205304395614092274471027676451130301998192579884981980383331004755985458519740718112147812962705310617555010259274607985705228893551463836617686124231748426817936045494654384933976330192421266623131254582148198369659191509650211552964003305770959771233149223935846202962723117218456932567654472669816733803847092639735772223976250554596127643265710435182191800068647592743527104298607516812775387380003886771219532565745981432787326595836968342349008462815121251789385562875463614831060974949395788692980727720786032761748572416672895325498419331366014371448904732847968285929375551256672205371236319010761607531035489389025830582442491033340311783200278400330573275229324139285691959682207033048166845240280073722049031522270750064451502205702838802314453492907125113196867357626343878692666709910893945062710386453480965984908868928331852364750709250772228522623061255781933618377709440518884675617168771208213362028807000568991336640250325843144807507365386167323430530383757386514877678566741578803351624259009223626044690394968507237740190193077024096179943106691946391713265839010095279092109535492123342892233114535396448888859072578357724845567858023341418639436957064116245382812764104096389861125288235620089839796959708844667271837724791853923155783350300837209697417124820469598763421016230556944144273578255047209140685603269167269642662464781417402044138800193094975708451596078152422131206951630446037496865433989208174418961047669463435692646401380865304211042807149992732461476622644253291650530746199877456840901162470871578154957110644808251440332624321213214254142116691052442993385768448482702905034603814208635913143936488381755746324155738630413306167461255699186732545319102104515653378661263778599973833109965924889965578020478609385756785428483645146480030473312941683848824619427905074772081786032588682913441577171034065769355232243310095044798628461790230246155642424833564029628986053338033122509288271156493098356126356548508541821956447282864237858810739664866039796867178105481303341995681155609103956708352541385258044674233021538488882256047867864755689487264233200251948632434367557411696985908027963208271722356561030717196004391383906360151985343954617673570213543813895091001157665808641175774156333012362213294444222039514585400935738306777816189406291014204426171617177142780096988819473458459887462124401026378144063946634234937478266777216707400466276855252285387625315985860983345555708831049494034215551909856922269254608364369447708759473754568912693844211940774320914411502602340550200223765229096489309938496752456919270003385668591424974211318904032650304107631242385298382914407054967999534142551977432253069569518207821850880260921220586532594795739409805616209429954329604196061909860469006839106493724703640208556506345365382655886368345271812409551029573250054776291206004935504682461872164043783174653715005083196118181680022375451553428281102240058446959296955227821993514685348539842528436786789259135360096841258032925547689013177486729459318947085055431774319351281557368747716393992737693541108230965435660525692480717964031924241664724388845193264670242141356326509471299306016413454162671571381531753658371397956451669887495352630248631157664761965740380082152914081452732415621628375282370868233950168887184531780269004718739099708910660900090201255053397723188285495192828542314394947620483330304687649237120551521237832434525777447953092911201834715259217245519280176880179885337857732604864405057483694102485505256429471768330406332418310295400408419432432940963470934061812695129941627390018523946146290853393677169776503143927133001591974399819542958121940959619409121036386106497029519948200613092346225268222984335952952211870862507812271819553684431413604081858429624556100379315289298469968791166103454024434690367788140204407001004669551371707738311759495150757612726027877731029702306303481073738582347882595922394576946021621186829772467105355572710477124514971906584017529758090618910480942805666401277004037346463984772905375809948144463853491825056157101189240572959686371293182284160480818545596306440473897493917768183499944319205900645179847295735484551449225229261645269968906429508149998138016622129015857135775809846587750617782253958791389940037001143544832241065010658361305409557331037342515976928994199426578267553413249193592307251067458813978078291350669052525953950112448480003624625092254818432528874435095079342421604083110240934432048412320452642368267544141594660095901465974593532827701312505826582575011497446990637441740616567155660949020249228616684830320354314707270016757257201734175571113012610174151094479944413698938350396910278103547991209738636261259356477694949886515282971734718664058449032335352583037449070952755124611382023143401658303667877578519296296527334023449638130475844470991345333618511394777165597830452951636561490737471919475646861928324359374967832521186421053437409487480470461954966554705773855950738645971740817037823241512416093275245345820788368984925734262305322634441156380026457447197182213483013402950350246138649304465256498219312777160525099167726998120704957725403800575045490582281116114994378718817183032439438208226746360325766986720916774835054649560456316259175632867603045141112409889552612372622765216331693789078480741915298207295555848306263838407170482811223590205255671667422964415870641962144241361255726603720198161298973619057586912427934170325155184902616599199143436064767051953442782556327831427853713857411098088989225849680427893366785692117780023838758363675203567047751767933295657237755027185531691483903456972232893961200648229859233228579781125136864313569508852945160079164443773633476981446295403950535828103167719751726784350601629663178850550389728335502140195564260831725188380387307159781158911038797569919167004945795140577149749170901864075423619030300911182620763077511907189012876305215130787412613925421216160360751332520310931569700798283937005333531483817004253266974122408656002783119309246945216360789948717449837131577677922669864583629782440739388630470181967026233829667565773873102079102987908580164142215769036178315875089633501680791005716918960107298151922455023391131279507844863316483788898011992028922935242614044660187284736254085622682834529882590617733762378374747202648059522912576707100472276664571181081828497963723051983320823361890551873317486588183597041968899647405888812769324885665206175649824784331136051942330320955997813290150374169555690598341682414758358005345032263076159951017735855589303019820663937187166738223420643133072273883753060709742405287892650826450075887658352906610591407918098029363694819236430463321771822021175150958737396912367945520530338753965695796553479705539515710152369148055346684802318377472296952509107769076222779644096906583067893946837767792663232669048207226484434581284994990609048194589647870843829686890438595763980976771026423557663089024892131001305788227380520948975891163833166047675665100986690807244435880890604269549826217825523138658314976275936944089547382635813595490748259777205666498345149897846304836074875260873003896477439834091090867636750095043118229481634887286877880618142748512183455056884216089061037969239651354971148328982756655369145281624013806819439797157064508394810115585016956024709722310092594188732446592100117958881002635994259708482658147888287467568985217077229723202214489094759132716574769640290873606782618033552995230016319587100167955339887968922205047010011389063615635451818872082020951265796370440182994059107927214391413065859873935945939866806647249901995379512541102421318646178957796346016199498645184725987268058320037711898529749988840623868356343243014613790813886854385271790938818469590098025543064598325239352259049625770848587072012496241155997192163530260660709931448706553743372471711358996628745306173083673087048269342745699715075360398067471245252833958545215646060059000665959497705967713122400751567337815731755845116818658270900111989799269094832164568929732353735566608022923214255026340432900765571233256796055879631067021720614281128969644791733928937006346217595371531877564139995663256573848449072798997910083484619753891994751816910829518221088342707669386410746832407567737548811686421700767615090296347645343686568901979295358016279996388099431659129877979491614467543895195928365541638941655634949364961607403740873577172023120167622227906175594503905136634860440145452083845427286042679614121738077233331267751337860968115995259442772881335900849426085481298429404772477164459261951878223611738672150293049444078426200516395163393367687521048654041265810615151381063263935652729823202648067856665037222449646098366399836365825764298326138044202049679510635928460540367467980830027780617634593554463824431146300071372144602579306617234168891833603527083083269873328058909495444334975114655549063249720495617631057572031874245243997961001300513101362881251642646541467566216418471740031857891367923431107308911790203560135760701742446161244397707823612390132206932904487297474667708365158321867415005381327784224688971310518664331206516637603593863201168061905577055537633677360364992716387876270201457406093693672211367026066251359512820184684258506560590497065152819145724007871945726278627820342047898093019876389613692251293554098133528921703415241378403497988370527212999054917321986991814063285400208883044316721908821428731628645291282887066115443721552877170570604616124348447368192516248043205025944481980530204535986716383404018559523989983031812399260867758441326518650885918827088514421998934133330104671880369209347348081232645725979472839249731922910513395615257747541668539314925713185740795246049806364284790354471628315103815173988609118640232034770300847089190756094694855291947481048264317280061195943077860015918935087735267314720428607580533653591482200744245764521762708826753820707439580086465928632736043303848285308853903855332348614871305843065583952661440745127334275983316524983354636338311850616828793114631386447872731549903896191810618225811994194258543856474840852403622495390802298101905113183569217747553051194324637039769564669265685730461935387485745474548531803797420197881185660590162228866272412460152679622021094012535010728078962481494326411253419325936549782831143489394327333139421162015929032280145593875719333520986496480401015368469256210183619123828239613847237761325489122341426463456792867754427053754130540233036035263170583560480037008121865434631069654336463838256630571872029280200897225456315873962517477987515356054666388335880482803738335843281234886361107822104373467807207148152456587769815724600397786335996139383096925464081053403190812702627052226018164361018089519728465893624253132229741126080320799891756070655845964271557907548948044677077363863257868119670264756034808085525933006104325450582318119445844371631130489034386859999641254958672328012330708972446485735538272452812683116142324976642281414157806727682979925482140939388726958044973071808687704736117992808583199418428491405610310555841404113412524512607651482794741704104508555513921174117909699949944138077122359611486542282513706246826158111267704327564719834230477914342600808913796656021750262931585150361150826736050413848790484905133275593843111446885863249713473516993295032625202150709018861820843089366420307862925612315011763286059087359702646725316162907318251933248352262736009240653208822499846306085714364841289204210934994061604517285057191437038278296329720531577065146776291030097029355798319414150197610941914453739920532379971545817364964168876652813969275610223555143453902384109425782195979757650614340946753732503697778300949396933922189195629933830643427842357993425928608221704765171398421314049866443720720332523788140277791693319134495238776754114249069486675919919115524635059068477480012114318640538800382974854180294512160755863961496844546963247293230634774004814278524154396815808981949969899661609677131701008847067152145047651867360230416267953917241882452727879680761316075541059208603633056503562463652855050253493849478608019628492062758037223414401417765687997128882287982851856003322488026022040865006856147528873435385875797540153930164571391471671391160042539309854941702496529294867154798015788742502152230116550540162661693692539273155844284794665714954330600878709559778016078241522501246825227935293632552928387677803748341379225975660508623451899520006550271647002585568931118574545455659515660038345490294841747607977013620826761777237291808944805985937922773779602164771924014259621421398152048641717356805328377078270519526709847397617420484043908676504757819931941243041177123618041199834460478895183606359631910158614297021460961506443641195117499315571630596201425150181128388605065882437056059202356631642243208507714451165052845415067097808080851672441966218691001993587878740388639996683623023734138001598565353767664950990981120035086276433367022305016868201908444769762114808566372599134247909095865960176282379704629611831845169982707258625668463208361346123275876520219495822276097730472791775307022937656401471570150603123068394019432703602830427629891416112019683710380141408360658819167165008669555364748658228361388799129393430801106411036742406503306803992584318621042791299946447585114169600357210438157957095528391813802687194266709630039430263970789169155406821880784658555589183142366431661016710970043339646209991971708490052667399949393124645885563312313000565256168576816471242098741078655616401684618105443606700332167319459199324804559567998844314002622600802628881188006088161891775688908776969324799915484922813295198723011775033753773984506158063112672102525281790176367584254556349673906995336472433972094889433283905354468728810249741810297092250546619901076403998845317693420655635133057775389193863669306991834605425655868705164472180005264501435736678480521635938716050416503207778590785511538467619550627020032108893492813556129597923638223179897023498575923081788821088015804957415400699801583142361538757925647242388065271363797533919781055008828224632453178217449526824788604797672702208962436493342699356518705273202494331071951221069318730689993098592688654567904468057095325225333473423398110323034834929517178574105226269026108740903170496491984283872607251986315802385098293436390674754854459924659801591397981418582800158623004657928930499141495824770952134245875818682387530291630027075762725947865821227819368622145724985158466580099763293854618850180801176478217411245219876559766971294143696106113612302343864027910528445943043133916663267112690598511400033628218370711265166997699353177108131047643498369142260604016608498278071054060236977815657846742243817272015351033515462368642825223680361745623868563711420294182888855363490410712215539677378212792938504001171148596659381275262256682730800334574549206704438125823923904766613486206013683813771293988827994751308475891995988301215387152574419412381447476226068834648858706639617162206593451235290457471618073014725679837379893842150101611995440452298353244439201356304245337965099464541409401494998025031536565597836490234188808696463603490112721627711519596821915331825959575551885212518211442269003344859271286227913506007307492776291453029668960179359667440503179328412171436131912330530510150770695249381710538279056954140700591999368475200255875436698833909225866367218550888340455501359261125896501916510656688648535225387182212843221884399211433135403492193025160357801967177079276486051857093141011025001336496825522387474808295736361392021889554180981081598463622614232871932724282534643030508717884192962595416173373901132147755094503249975052901677902751297694205366921037547465221635547109834317374178362148899395469037802172487094585186770930012509897916799608892358494351340358146933481155823397177111871069488870844726702308338279055819352376060712105984288779181524985526892916898169771532756305479326497428699889380770355624262738057395122369955283094631409213654957473184032227153342629154545066740409513258489251745894951453040542909925854317157799562581760030422099105501627694451657079935138142010860784796990853862871522191280775790778371590639687771159316980947819357536812939905863927717243432556756272342151545076411956132389217805472604221690864013707763682018315188952607119946758811062148170296556777942812437533627450340974634326975205472489671702387269156909914717782582977963643216463960975465090627229265120385884158666145053132529879199674915773930220784503882143864875273224940706693965405173279072485994435371203100135615211846813669839874064050008341057733642309562593482175302832142539877643154259022027570686612027858107329925902923992533804455918636701337810809181701161499325971154106538957803193456380395910615088491686184579554366213353862404529468229005466380181873403409584627731219911460708898848941094056348224778795961427666141965047354825879067952211675767220530116000295439261008669342189007742280071068070049356315167614419942532751651005774976056088498859079183494367859475921643977167294332870981630985883183324300422297953590981162371465213620389531664792862643382599634861925000395120572493802624931228823781014097594009428931662915167760327883521129852617756650413448593360913038295175844623203494974914165179908375706734492901224902529747574979742050002106663406003731866003308390615816816885072065325693182794964309658585406733281728826923008660251012331523873157425596492124889226549015883614419445399308078104363183239762732476535449006179002325229065282571464204281914919738887388806093573140020542097502020482802396957530453128838606753183180413618231714722120716858511620673458780848212762689022503174722516119261588243338767449952444434492732505531744736476097910021749893176437861458807350602081308059329158498808470348829171596127767256507414629365764148529834296644442209403194238593555813227361493776673378092377609835480829848834776365785714688656577506221151558342984932908100108088372100268085844151793490975148337058265267421349296237603497728123188032647729521086794670644515840940201571775430350624975038471658580078746878268495164463287848960878856056346450934896163169743105045165581323819513175905223706128682491544237639104590089628822641723836875903418320273003356617592635747925184879866743725876316742503710595986069001288762512476804118154783404812514751164897754250989522763124616991870608224785876468099785756699995690777785521839922485175041682536651172403481264582149129122640889832309992014062260099244291268883993005187894563801642518228414478270295351387046868187081518459838095851978514656128229212018856271178656781951865372510349741871729755268077300762982107262353653936518893638816222941960957234072662945228277096588212009569956941412021462076133412738736146790862165840981502021144402381041280424251250883937325527577117337986616772117322486188058793070661939091520797904347760947648229902630915645259852652351426082406577287674223134756799727233169989521419114425894731716176653550245770496344605597265572794815166192064124403378151092763885978383102009455257854519465550301246995381640601210343662742827682420934279626373395652395999817378249059327854481350431454370932564627625133649242512820576486994269314077980997512181283650077115840159571482838806660739273917501233904422474377532434136501025892293378909898783835997744621072578866963094511489842039592491140393655505817457506101458107717258837998857511634160292786691167461904365591738425550323512909380910134644272821236782228219560211903524789255642834093938631309207016144273343561768392015946096695071260787134006919955539723059270708621799610107543927526866927300423827447908075410338089761911335554236211607220959786761543017923621639938468989547957660767931657662555862328888341958281025006331151526846302872456080086024493507245030108230400783031595576151219819834046954989509826434061777922015202698717273136926158519899556374615974574751476743761878619405436331799448199218707421684180814768572994000075233007328760708771469685534860487027489184792709249535333983754626094433733032515199669313204947984860617843400446621737370155244778071837898583388336317051871475231701394053764483680409312689893186371509520310162182341717820195936661217314875571498709625015897265778525908426192975934981499327876012898297481801302513955401656740742216850342293182123512761948372907243591709809867936260493428885126511278718652820255574252494032278725612072481843951172165236478241369093618112853011844718845683244161791308969305441124717285732154355994917446499020686931075617421667334186609165302628815065613660124919531779983740755489097111398429642375934585615080318880945851714180064949364535973649030877678201116971542188813985546353470746080703026718628888167099094905487828127808372458317234986212227785960019744988804796058282310039384459545585269109729037178184648276479018986182113845519243079489398133256876630653378351331911274848188248662596501979226917582116118414287306394568957790733295371259982778148292520276396147454871187308323855969429534148144661681789463134733719964597750987783364244289405724721486331025051689631320360354172622130078192112932513759893682282761898438094232952668404869672405207574076058791075187428450213304735992945688679113077409644110920248046893065024931964522048240938556520005706710005859495886813562695510970268577213963715728820134124358408738944689728844164577395064088737288423942837489012346099566084287150267414187495425649479841848385871962820959477885446374521648256438103084109135495704911087255494677079761801565634611237266318594849791726944047395235607649191909852897356458928629738104459452802907338153775097668122498603398192996423582181648082577188518353374547684930803109595187299401366263822653454162234774772311308453961738397188217257178280423339056239809467587898119899705455896748544161972100059530059884503731622192443130376572006764511595596363774526764097092375628909773455008189308634710975487576532392383165983021315524343179231843380356936802680309074711077530643449857659333638389866129257243516335469244971824181245127687203135672398351564301811199850315776', -); -test(macro, '51676101935731', 0, '1'); -test(macro, '-51676101935731', 0, '1'); -test(macro, '51676101935731', 1, '51676101935731'); -test(macro, '-51676101935731', 1, '-51676101935731'); -test(macro, '51676101935731', 3, '137996870875659993023030601717979081222891'); -test( - macro, - '-51676101935731', - 3, - '-137996870875659993023030601717979081222891', -); -test( - macro, - '51676101935731', - 7, - '984075056308295134728924301613024127189711420386591471717924665943308236455086452620716372586011', -); -test( - macro, - '-51676101935731', - 7, - '-984075056308295134728924301613024127189711420386591471717924665943308236455086452620716372586011', -); -test( - macro, - '51676101935731', - 9, - '2627893230921823604806622170301238567075367550796577156262388588821361374710043228118573957775035487173592314570495647093971', -); -test( - macro, - '-51676101935731', - 9, - '-2627893230921823604806622170301238567075367550796577156262388588821361374710043228118573957775035487173592314570495647093971', -); -test( - macro, - '51676101935731', - 11, - '7017577357393414069660702103810709794111639796715410950809665871416156554402226865497006924403635139554341331701687118636537520158096482611987596307531', -); -test( - macro, - '-51676101935731', - 11, - '-7017577357393414069660702103810709794111639796715410950809665871416156554402226865497006924403635139554341331701687118636537520158096482611987596307531', -); -test( - macro, - '51676101935731', - 17, - '133636682614207953928748833850325980733386921434321011865528143804403832298431098135380464855882180500142250108938933037601304663280771463018430933459134652554649625077355814284452093494072216581175752265212265439075492239388118741811', -); -test( - macro, - '-51676101935731', - 17, - '-133636682614207953928748833850325980733386921434321011865528143804403832298431098135380464855882180500142250108938933037601304663280771463018430933459134652554649625077355814284452093494072216581175752265212265439075492239388118741811', -); -test( - macro, - '51676101935731', - 22, - '49246391967000732783507102143055596698062541496879424569521554617507032914914454137461679988278650797334594157775094696043090861230475376194375316521688783968615512922433798610465048085885649879473134467691860598529596944970613815754223330498710317737303087189649634312376508482500446153530865527315961', -); -test( - macro, - '-51676101935731', - 22, - '49246391967000732783507102143055596698062541496879424569521554617507032914914454137461679988278650797334594157775094696043090861230475376194375316521688783968615512922433798610465048085885649879473134467691860598529596944970613815754223330498710317737303087189649634312376508482500446153530865527315961', -); -test( - macro, - '51676101935731', - 24, - '131508525968430457729352665685966579498949401101062972415020772435432844742532822029053861945108891212811973673289631212054118103889130601356311755368990255559386038292351210647400499145803946225847945057201109848257891860310495954779113656786197608913596258321184172812660728137089758780590575321178923726688892590199481699405921', -); -test( - macro, - '-51676101935731', - 24, - '131508525968430457729352665685966579498949401101062972415020772435432844742532822029053861945108891212811973673289631212054118103889130601356311755368990255559386038292351210647400499145803946225847945057201109848257891860310495954779113656786197608913596258321184172812660728137089758780590575321178923726688892590199481699405921', -); -test( - macro, - '51676101935731', - 27, - '18147765077113876911302828311188973140568509988864514321318950227295742688037464926647103633287511191936183601316483196589434477469945433422640225075158236638385320220491900270340310290917462596573996639230442725247179360636496672307042746911978502976958429476017502296658675079086344867081673179346751656568649207060344721536870325119505423628920139126455081000886137611', -); -test( - macro, - '-51676101935731', - 27, - '-18147765077113876911302828311188973140568509988864514321318950227295742688037464926647103633287511191936183601316483196589434477469945433422640225075158236638385320220491900270340310290917462596573996639230442725247179360636496672307042746911978502976958429476017502296658675079086344867081673179346751656568649207060344721536870325119505423628920139126455081000886137611', -); -test( - macro, - '51676101935731', - 29, - '48462145947906619312350693780921922040423061718629753751200616100444307162466564390962728897898203939025561944853542772935543250149935950441420073115202129685015069493947975962419875285445358970303515733347425597885530386757928989657327135942306712537754584065199854414524879131878269249276451508346267360984001689290919795053747833808800804304207297975041606946075388009728565472578248141445621571', -); -test( - macro, - '-51676101935731', - 29, - '-48462145947906619312350693780921922040423061718629753751200616100444307162466564390962728897898203939025561944853542772935543250149935950441420073115202129685015069493947975962419875285445358970303515733347425597885530386757928989657327135942306712537754584065199854414524879131878269249276451508346267360984001689290919795053747833808800804304207297975041606946075388009728565472578248141445621571', -); -test( - macro, - '51676101935731', - 1234, - '158324042278377313925303658781524871614898748673989982468397056801513262659968003390685627949704258611320160536626820028889962136800384219988465148278031573450509106387239568116863743081510112367947744316933204800345240432247765898932280221777380025886378197115150023156888075592661959629600638394821303250632425654059380834813385429980578207356778680885151122557244823021413539337390766886386023683774012622502869673441546686299110751211243381992933447873142802156806866162053801684285033755846634081232710212999710106103508622919082329128210235683603138941762803368001142605648619008990425285579947768914521571612053244135664040468206471912029995462838737725025722037780961352097655556940963081046269689524507058695919021145649857025466601631832206335908714770892218847010797983061128886699295778458908026100799624592058868604507879625795059341788256071347226801293035257896677449812101619168410274645467937698072600485973695316558617078697826464067560685120905997944243512191651052772680067894809080799438615784588878741144055738313954890688400429893361117159935248693696396627137695916187850803885204391372040167551605832355933919492494203181745050697494649819656173693467296980021705890813609884785517604611253528819574733690077002295678785343609499106604869068180574890180024198538158171783307883610859971770618231149618665209136576442748277494550519027415619444394250603341387572991349015145136953473904476495181684188774626834750617818472938996987683214283309439924103189995535468277303822947364785117218431807701765196665481474819809014739483414625184823572545931155707708389629548395519118401609231979035135464875664607469901894710597734005254396315648601392217921679551086702353136339520705796471641431879666411557946264230276753464580691493861591875142232836387168105624036383384304939623273671227663421382364346405035511757097384178188343056871496957008430970719845337135563975023000121180003910787544177586770185372939136428614465285828597849364223527930973569574297409565906234014152140399051264908028037854285065695691516894764306741200445258651130079726633055035454707400264143396200125546607001935250751700196849819373198663005937089255142210331719097533030824267705354302579492394252054624819810635910772930818973501002381509037985751201262426338686073137167777790210884526513502529974672754561818929196841359487503116806374857279102032619499735463547437917873852231188627313193995709278200744560332235099781528906681845236757294232939540840501710793402651215365559223726732901232304332589555728463490815104762256836437378942770237781171541242665277050803400441103245698206078424116844542305855433985742997194723110120559706402361837255518215431654983113821256777518566578007246638117303300813282471059695780960937192471342720483093022397272639388862609111334563922759362521380716417092672083635856258692643635802385292897608203124530755925272475970099885482900647144339393451148660375139200420049453396533433237007433364495099843124339385777936467767832834097532992680258633382504023134945528051080162773976630522027388364871860673885601145463850278499705365785873574057496070902362590690329163430582931012722823339673749687448879341947128478168108948119496075857326371621272158040967590212259705607234109590371908430237962275467620195565091210074536958791316104893306127805978301999920209853998214358942944312450676988966603743669909381196873223441882204064076740792698565324619823892332131678341250397203399047128712276865053621353068705821363484016988865027435388961661676827059827201761588689945100159628259798636637114887843908407692866645165407556635346270470882762478678318748969509612841224405192451391751679491699159481451781132856593225478798461105500650078302736522399508859604061090018430782371103406780095793970327199466172644652070455424994736654900037878682536762730674188797509195743679412902718668219372565376042254451189328399930173247680691539750124735316777490200616789118915166628770213641217493993403209087930983866118739242363270739641673142095457606027878252411764298206871520866755170134693811548956683565065642028688637479006103660374113920609307215137832756503673451270374534771904030303590041498702749217222999004759003357602091152034722604948534571885348781516114248627593361371966083846505528180094830427733303359954633778102329930129088225944419675472344592340947633203426100068451070062748913329381430835928677944810202891752490896892126540425812163639252121628049481160408647454747378481685454865724857469700081698360897592285719829250458270700796398492146131941376976151305748227248367443062739785389412243719697174747793918305844429511703312893537458763839752259611393771379620065253777610623533134188428935625387641575540926717563311541862831476044794518109895950317069739650023453809779525953218406298837457049987396316333779299477763690386671808883206738746473461031527288187096362547392481733828192703691811275652684091878491782335647464304090599317117223713118270154362644379673966875526023251794033742058280817715606901272370694953811351940143399555738367916981834656631234106492867315013462578161451861851222727927484978513364472656866134489436147990440601567348247368143427992571647342689311925448855042244915814046156681924587686088299035248256687768173138305271776131448783660494290452155267493170780209088260573726810563594020164626876894543544776117725891695956937655222596747253562951739070430520784626532005865397891770599810947915766027843984225809506465099491726669647675836542704925940472862292458103317707001664851510631632483368333519166567495603149523436655902927352564469259379326902513957700266530203095978420437621994997883942015182535685373952581674954526368979534376580657019506688748132488994259649481602782027268796321496293234619922858621277867678825491370164615078298949196552511455124851536133799925473329405250474593913924912551804901403390831450711740501508314471344016110507593788337973582789067759260879539344607152262224215382333489330153894940009834586533901180095846730855291500939551837669345284373711184756405666180209071363312585030301685774779292178313316406602373255646327348281134955048336338727490454877812787617492427362023670761057324483134159661968729511955276617697409266496712072219753283729016198339234913450671856683431220026361896256233229763483100008432120294903953687352831503401656888244700073250811277269623445793796563405171676855616924791868998241051758600745245397052440394156686933344580101379617401437696817984459028218921041977399588148719347919096302390719921087960315851964586936208155974897770793714626502400010799023394074901830556484876564044019461148646704484745692998552151910298131789877533559303845220138187074792203552289300587811989652204054350569388609355366352079539773210398305281469358542324938107197041217218595947653381833043778081164511742732935680326233241131641428417476654793443376871059887960714321380031930204997295874730540407682218645410154547363569726463842192519870398072169036254497989626119475346195254734474880846366685010394270094459050207503355330015842707449098167167948112211428609169028462215066248890291708247636295839908593225052889285032180148515349175791108452276764174092593481970638911935180284154383805459092545680971655577656000718287895404174650864444487637275330486618588627887913198091137313600079403324248364944559239416972594744134017813214704259974060248545972845617599594908395004708799034010940349453335426733467851508855124434739037794790113915284799938282633515926124039300489403274166512016144314450767050504019696951073496152282334971591755531534918527658116356766005810018865387036502835277104484897521399845192578397217389066546258015343671781439530194484186424336132467982739290593716534087153430243415506786743021432802857971661907233602499902567387941782564166386342672410874812089691799529503443000488843767817702945159240603649832489196454539442081235188719658702765814391130506231315568011273524165094617918503831867012569022324402969461007866076655261544955353941677901200948344001405059672259174534803855786509381749106901797774448058734457124149367609992922544375497404889378084258630248150919968340293441413856717836345219286003180349374207341129088557493435423239964391016550727225456481162350628594289395184071310300179756589174536625319150383798785373066376691658528761564820534618453895379491843182268871603588369275077855410841475816916672608469381494765293579645251398504292250764825206147001031380918536905798997324364665442675157885496504116737588881183129820652811664336805124175412738167561167253417906013601281586840716605226757932860034772050966241473341886952885772364434302876604236880399216981777408544673261443252042495657687251968928902101306694702738065723310727043271924859335698667952366365883749591917139742105118753077931026478251365210693917236917159155967697763044367201149926693443948539699579913602708706722711432838021246855315885038460450756859122906583939756348652891700451630407133090901515174232078445554725093208016341426376158610309666955884603433032223065165852248565738599860177261970078536206931153975848971431287001632805433404957578207772941765098112799264026267445074698665059729145576674938934608054531809788773719961126616990316210326818453980080321988760982334379271531791369297582640574651520702873403331880456606970974892343433336446248718921846000086640006680764293893307983492389270379130633842798650803348158429980408513212973097444321318667389109611955924135884714672638284288772566998005211664934734547822982660638379730254204195834897865492728459422863551908452096176425627547324850175172784662840168613264736639310780854731722004175205456083684478275667370139311794044918888433282117891203786131932421524201946630405904103705604352951344094166243627023050380063835187325378976884921927883069821201742308833558695341662261151498959733037164633952848288492505505197499859566019268823236129754425893906449877905855504081397182635782376853937776733107007960687910397361651834577002303143087866448497366428780519572180278375369679225575668491891544012967905489645541044473614128660244742603437904495496004459121145000204660640788761369040236852666481807337266045681038338455762663801212249239773760849573135339910245942472057741897143798714888511942994856977741299663716890747044572844810556164536063761986767836402140711391146026318746472684683736517628592458110701485687350372867786408697530159165580262455780381579264667555447984957739182385760977780225061084004806106049112388374908757400568145385583888461889658540915335972493538978104321154519123769320702224831927212063777898343511469299130626487155185875277476235831577797403193411734525969805530291201270196761046479780099300862785898294670735985568048204412072182439508001601125949813004653714414454010147969834379658692070731355494945150892188648577526049837658909733330381505835664398796899002686901365148731947521928717964471059772305071463737374874406416651278356408918633301449776192835629215568915731374744480004571009884843731735476903477562446584279323243628329043070154171111030416954029897290949469967976161666719811003325138761099757410714225754805089491754951146648993331480859725730046281101542321018226211161218032808157377990274486574775247295293446271999216933362071677144037958846938035870357017121382946099997460180182187217217820316108638070949402341509021488404838623964004697749860791584971181351855741948571771355034517420282039098468418778809673122690363103723019689210278682644736222976118509622284207375261241784528558945409584782281603428222482076644739841708067658443152632760947992710970595496336571116020117920899681972595692145247586867390993275854296221489381933037318139292360281964291441764499495760508673368168379423816602792242572983422830229937308653522404847350290384106194221461480553536360110558204157177392001034747822538121785134044265222471502565785788526018168367500851854368644667069187608053339694123467967831636497181955436837184144618605482450617195904135269079047201637007435156663520051298601126128369945944529481020638321516198582623214543218826748293953436296165935049635820455993901167665818294125029492356440701038244166842363513621908344320848585686797979439878826598478637355993217261347336958935084397089381198078856022083300330117262456180993049915148012467532881768933263035840131555093550707791000541507741393303110968532024193273602133335942404611643551498070626757534418055263575760282736414364452938769778575091320674432871296496661879381856396240520797406048137637370857663757380205251562705321737487489618016878804542225487729084746708529820375811443132907266237938994474813800033631766739207459417966080119828341415764580961209459326665346025307463631064586254511715110933308682061703769489020980806855962724479591125787395163620658259594004092166562170516032834000268855499213998125944650816177533565867482786957117566835113604843003762380044014420897831990140335889989942967539299895614370850827546132043892135670514224732115622279448086834055661975850510059575409653558505225706327368788238605905950679120827356203968736553949603508567674941011900196065319763868748440255691811431275690300510418853466423120699880274299502906401428179717337224051460708185153900592946400931539055519213456766111907891650507124264750664276520240241037246834114060324514820797852416016033426385928748625138008254308550145235061493199996695892684482660951996875137704256478179472342925959911345035957714418554051230886742531878578912441446768201652221881141572325507385719459138517136751018669079028246205826509211255942319179978511691727159374093169411671988666216994674771387581235589884768273625075469787220620863887485675316340301843253576693265829584060863611223658502419013220705349254141879296678287934598990177839246206875955136263946160336147575157943154184876112942552766291737477532772806816444968335075758603052677831616530597162083339994792052192524435339516491271771018617304228747316364353881326364901896898510732593688984287402238373219422623300832304655724736690619601526746558520579969086684975110249886471858004298619330841151157594042888413560753001085286164089989253446994193592178607918900886160044643360093127301377281151260181516816234448235332218822653468714779419621593045561237278383012807110518306356320302829822203975624356719898344296257410860244073851008991224738267988788643891504893485173066765606602131746590564072891775528764778009114601909601715732204601099651995466171422428561778738906387340637322539207184732852648369340774890627245756174444189797920171705224195397835012801944668568199244460984454556749562726348626755008071045094089456543538334719344496279903285819785473638260950225191989064998217546604935254843644830354787903047294704085156710060314626981157703292007319217920772059875929487108231502602963313451208908800123467770051210962134514589094511232458059331648208202240238411255010578542406383889733905056465012899219382378659412932505825923945018151275013771662079650082951456689539196985442677624790938978370091323150932644989813926815926713764846502628535537778970161281065391987916405930855478432409513765364564416242604015243337740020591190036055281150381447998127901685806875751795496258487587782150231045731795366439544769654743511101346187573916565954617871601220556806571910322664035856441943067590583463139288226902843506064510903232434224397360091696338842373040990564260619541435411792673618388777689980307230201828335309818088702867877855077758454325070909742544384843822430367944236208743002020404743158305208417720634625853803097299728910140526037383656368066889205000542592984418496643069772107977370892309483087973050493056264411495806490399183836440009935339770300091372817892264236279135289290245333645902675314110412649989844978340728685671821112290828829269519229582863992855788155443525507663925117628911796188678980556041341513060132014775432709153262923597668710862496337413472675889360137051840453387185317746367448685333562536587961087795964381494602518709912953530990322369678697647756220485903298571233830750815526500393713347618692958695894950510589138728887035609091986740671003066902402415899517198377159897977346749717804687344625438051024990052589164200510168556411467500390153089322228903919050120669166638660142562191207450620162728156493213454482792702092126905050509757880809402415274410795695253751046401154902184294192597738198949251837113299325218278871891594334354748578529416161681277186999781125923908898170603590196546728188587904407695359656110397019078754943031963775608531765690045741190503521917787960634065347919180851301558862438424029407982357071724159087489759092692094168623631500220272025560981867388778272041688773757867813778995307938836220728347748425397447066334129722102586996109604827849770056592342207245854658461155777410922160788502132706011423014788196149318932156333527262500699228183533489815176386063167069054855402190127471059557044073327189922247461125984452832296717571418178543557996289436839762935964681924754366975350149396326998775147547939177889984004415721', -); -test( - macro, - '-51676101935731', - 1234, - '158324042278377313925303658781524871614898748673989982468397056801513262659968003390685627949704258611320160536626820028889962136800384219988465148278031573450509106387239568116863743081510112367947744316933204800345240432247765898932280221777380025886378197115150023156888075592661959629600638394821303250632425654059380834813385429980578207356778680885151122557244823021413539337390766886386023683774012622502869673441546686299110751211243381992933447873142802156806866162053801684285033755846634081232710212999710106103508622919082329128210235683603138941762803368001142605648619008990425285579947768914521571612053244135664040468206471912029995462838737725025722037780961352097655556940963081046269689524507058695919021145649857025466601631832206335908714770892218847010797983061128886699295778458908026100799624592058868604507879625795059341788256071347226801293035257896677449812101619168410274645467937698072600485973695316558617078697826464067560685120905997944243512191651052772680067894809080799438615784588878741144055738313954890688400429893361117159935248693696396627137695916187850803885204391372040167551605832355933919492494203181745050697494649819656173693467296980021705890813609884785517604611253528819574733690077002295678785343609499106604869068180574890180024198538158171783307883610859971770618231149618665209136576442748277494550519027415619444394250603341387572991349015145136953473904476495181684188774626834750617818472938996987683214283309439924103189995535468277303822947364785117218431807701765196665481474819809014739483414625184823572545931155707708389629548395519118401609231979035135464875664607469901894710597734005254396315648601392217921679551086702353136339520705796471641431879666411557946264230276753464580691493861591875142232836387168105624036383384304939623273671227663421382364346405035511757097384178188343056871496957008430970719845337135563975023000121180003910787544177586770185372939136428614465285828597849364223527930973569574297409565906234014152140399051264908028037854285065695691516894764306741200445258651130079726633055035454707400264143396200125546607001935250751700196849819373198663005937089255142210331719097533030824267705354302579492394252054624819810635910772930818973501002381509037985751201262426338686073137167777790210884526513502529974672754561818929196841359487503116806374857279102032619499735463547437917873852231188627313193995709278200744560332235099781528906681845236757294232939540840501710793402651215365559223726732901232304332589555728463490815104762256836437378942770237781171541242665277050803400441103245698206078424116844542305855433985742997194723110120559706402361837255518215431654983113821256777518566578007246638117303300813282471059695780960937192471342720483093022397272639388862609111334563922759362521380716417092672083635856258692643635802385292897608203124530755925272475970099885482900647144339393451148660375139200420049453396533433237007433364495099843124339385777936467767832834097532992680258633382504023134945528051080162773976630522027388364871860673885601145463850278499705365785873574057496070902362590690329163430582931012722823339673749687448879341947128478168108948119496075857326371621272158040967590212259705607234109590371908430237962275467620195565091210074536958791316104893306127805978301999920209853998214358942944312450676988966603743669909381196873223441882204064076740792698565324619823892332131678341250397203399047128712276865053621353068705821363484016988865027435388961661676827059827201761588689945100159628259798636637114887843908407692866645165407556635346270470882762478678318748969509612841224405192451391751679491699159481451781132856593225478798461105500650078302736522399508859604061090018430782371103406780095793970327199466172644652070455424994736654900037878682536762730674188797509195743679412902718668219372565376042254451189328399930173247680691539750124735316777490200616789118915166628770213641217493993403209087930983866118739242363270739641673142095457606027878252411764298206871520866755170134693811548956683565065642028688637479006103660374113920609307215137832756503673451270374534771904030303590041498702749217222999004759003357602091152034722604948534571885348781516114248627593361371966083846505528180094830427733303359954633778102329930129088225944419675472344592340947633203426100068451070062748913329381430835928677944810202891752490896892126540425812163639252121628049481160408647454747378481685454865724857469700081698360897592285719829250458270700796398492146131941376976151305748227248367443062739785389412243719697174747793918305844429511703312893537458763839752259611393771379620065253777610623533134188428935625387641575540926717563311541862831476044794518109895950317069739650023453809779525953218406298837457049987396316333779299477763690386671808883206738746473461031527288187096362547392481733828192703691811275652684091878491782335647464304090599317117223713118270154362644379673966875526023251794033742058280817715606901272370694953811351940143399555738367916981834656631234106492867315013462578161451861851222727927484978513364472656866134489436147990440601567348247368143427992571647342689311925448855042244915814046156681924587686088299035248256687768173138305271776131448783660494290452155267493170780209088260573726810563594020164626876894543544776117725891695956937655222596747253562951739070430520784626532005865397891770599810947915766027843984225809506465099491726669647675836542704925940472862292458103317707001664851510631632483368333519166567495603149523436655902927352564469259379326902513957700266530203095978420437621994997883942015182535685373952581674954526368979534376580657019506688748132488994259649481602782027268796321496293234619922858621277867678825491370164615078298949196552511455124851536133799925473329405250474593913924912551804901403390831450711740501508314471344016110507593788337973582789067759260879539344607152262224215382333489330153894940009834586533901180095846730855291500939551837669345284373711184756405666180209071363312585030301685774779292178313316406602373255646327348281134955048336338727490454877812787617492427362023670761057324483134159661968729511955276617697409266496712072219753283729016198339234913450671856683431220026361896256233229763483100008432120294903953687352831503401656888244700073250811277269623445793796563405171676855616924791868998241051758600745245397052440394156686933344580101379617401437696817984459028218921041977399588148719347919096302390719921087960315851964586936208155974897770793714626502400010799023394074901830556484876564044019461148646704484745692998552151910298131789877533559303845220138187074792203552289300587811989652204054350569388609355366352079539773210398305281469358542324938107197041217218595947653381833043778081164511742732935680326233241131641428417476654793443376871059887960714321380031930204997295874730540407682218645410154547363569726463842192519870398072169036254497989626119475346195254734474880846366685010394270094459050207503355330015842707449098167167948112211428609169028462215066248890291708247636295839908593225052889285032180148515349175791108452276764174092593481970638911935180284154383805459092545680971655577656000718287895404174650864444487637275330486618588627887913198091137313600079403324248364944559239416972594744134017813214704259974060248545972845617599594908395004708799034010940349453335426733467851508855124434739037794790113915284799938282633515926124039300489403274166512016144314450767050504019696951073496152282334971591755531534918527658116356766005810018865387036502835277104484897521399845192578397217389066546258015343671781439530194484186424336132467982739290593716534087153430243415506786743021432802857971661907233602499902567387941782564166386342672410874812089691799529503443000488843767817702945159240603649832489196454539442081235188719658702765814391130506231315568011273524165094617918503831867012569022324402969461007866076655261544955353941677901200948344001405059672259174534803855786509381749106901797774448058734457124149367609992922544375497404889378084258630248150919968340293441413856717836345219286003180349374207341129088557493435423239964391016550727225456481162350628594289395184071310300179756589174536625319150383798785373066376691658528761564820534618453895379491843182268871603588369275077855410841475816916672608469381494765293579645251398504292250764825206147001031380918536905798997324364665442675157885496504116737588881183129820652811664336805124175412738167561167253417906013601281586840716605226757932860034772050966241473341886952885772364434302876604236880399216981777408544673261443252042495657687251968928902101306694702738065723310727043271924859335698667952366365883749591917139742105118753077931026478251365210693917236917159155967697763044367201149926693443948539699579913602708706722711432838021246855315885038460450756859122906583939756348652891700451630407133090901515174232078445554725093208016341426376158610309666955884603433032223065165852248565738599860177261970078536206931153975848971431287001632805433404957578207772941765098112799264026267445074698665059729145576674938934608054531809788773719961126616990316210326818453980080321988760982334379271531791369297582640574651520702873403331880456606970974892343433336446248718921846000086640006680764293893307983492389270379130633842798650803348158429980408513212973097444321318667389109611955924135884714672638284288772566998005211664934734547822982660638379730254204195834897865492728459422863551908452096176425627547324850175172784662840168613264736639310780854731722004175205456083684478275667370139311794044918888433282117891203786131932421524201946630405904103705604352951344094166243627023050380063835187325378976884921927883069821201742308833558695341662261151498959733037164633952848288492505505197499859566019268823236129754425893906449877905855504081397182635782376853937776733107007960687910397361651834577002303143087866448497366428780519572180278375369679225575668491891544012967905489645541044473614128660244742603437904495496004459121145000204660640788761369040236852666481807337266045681038338455762663801212249239773760849573135339910245942472057741897143798714888511942994856977741299663716890747044572844810556164536063761986767836402140711391146026318746472684683736517628592458110701485687350372867786408697530159165580262455780381579264667555447984957739182385760977780225061084004806106049112388374908757400568145385583888461889658540915335972493538978104321154519123769320702224831927212063777898343511469299130626487155185875277476235831577797403193411734525969805530291201270196761046479780099300862785898294670735985568048204412072182439508001601125949813004653714414454010147969834379658692070731355494945150892188648577526049837658909733330381505835664398796899002686901365148731947521928717964471059772305071463737374874406416651278356408918633301449776192835629215568915731374744480004571009884843731735476903477562446584279323243628329043070154171111030416954029897290949469967976161666719811003325138761099757410714225754805089491754951146648993331480859725730046281101542321018226211161218032808157377990274486574775247295293446271999216933362071677144037958846938035870357017121382946099997460180182187217217820316108638070949402341509021488404838623964004697749860791584971181351855741948571771355034517420282039098468418778809673122690363103723019689210278682644736222976118509622284207375261241784528558945409584782281603428222482076644739841708067658443152632760947992710970595496336571116020117920899681972595692145247586867390993275854296221489381933037318139292360281964291441764499495760508673368168379423816602792242572983422830229937308653522404847350290384106194221461480553536360110558204157177392001034747822538121785134044265222471502565785788526018168367500851854368644667069187608053339694123467967831636497181955436837184144618605482450617195904135269079047201637007435156663520051298601126128369945944529481020638321516198582623214543218826748293953436296165935049635820455993901167665818294125029492356440701038244166842363513621908344320848585686797979439878826598478637355993217261347336958935084397089381198078856022083300330117262456180993049915148012467532881768933263035840131555093550707791000541507741393303110968532024193273602133335942404611643551498070626757534418055263575760282736414364452938769778575091320674432871296496661879381856396240520797406048137637370857663757380205251562705321737487489618016878804542225487729084746708529820375811443132907266237938994474813800033631766739207459417966080119828341415764580961209459326665346025307463631064586254511715110933308682061703769489020980806855962724479591125787395163620658259594004092166562170516032834000268855499213998125944650816177533565867482786957117566835113604843003762380044014420897831990140335889989942967539299895614370850827546132043892135670514224732115622279448086834055661975850510059575409653558505225706327368788238605905950679120827356203968736553949603508567674941011900196065319763868748440255691811431275690300510418853466423120699880274299502906401428179717337224051460708185153900592946400931539055519213456766111907891650507124264750664276520240241037246834114060324514820797852416016033426385928748625138008254308550145235061493199996695892684482660951996875137704256478179472342925959911345035957714418554051230886742531878578912441446768201652221881141572325507385719459138517136751018669079028246205826509211255942319179978511691727159374093169411671988666216994674771387581235589884768273625075469787220620863887485675316340301843253576693265829584060863611223658502419013220705349254141879296678287934598990177839246206875955136263946160336147575157943154184876112942552766291737477532772806816444968335075758603052677831616530597162083339994792052192524435339516491271771018617304228747316364353881326364901896898510732593688984287402238373219422623300832304655724736690619601526746558520579969086684975110249886471858004298619330841151157594042888413560753001085286164089989253446994193592178607918900886160044643360093127301377281151260181516816234448235332218822653468714779419621593045561237278383012807110518306356320302829822203975624356719898344296257410860244073851008991224738267988788643891504893485173066765606602131746590564072891775528764778009114601909601715732204601099651995466171422428561778738906387340637322539207184732852648369340774890627245756174444189797920171705224195397835012801944668568199244460984454556749562726348626755008071045094089456543538334719344496279903285819785473638260950225191989064998217546604935254843644830354787903047294704085156710060314626981157703292007319217920772059875929487108231502602963313451208908800123467770051210962134514589094511232458059331648208202240238411255010578542406383889733905056465012899219382378659412932505825923945018151275013771662079650082951456689539196985442677624790938978370091323150932644989813926815926713764846502628535537778970161281065391987916405930855478432409513765364564416242604015243337740020591190036055281150381447998127901685806875751795496258487587782150231045731795366439544769654743511101346187573916565954617871601220556806571910322664035856441943067590583463139288226902843506064510903232434224397360091696338842373040990564260619541435411792673618388777689980307230201828335309818088702867877855077758454325070909742544384843822430367944236208743002020404743158305208417720634625853803097299728910140526037383656368066889205000542592984418496643069772107977370892309483087973050493056264411495806490399183836440009935339770300091372817892264236279135289290245333645902675314110412649989844978340728685671821112290828829269519229582863992855788155443525507663925117628911796188678980556041341513060132014775432709153262923597668710862496337413472675889360137051840453387185317746367448685333562536587961087795964381494602518709912953530990322369678697647756220485903298571233830750815526500393713347618692958695894950510589138728887035609091986740671003066902402415899517198377159897977346749717804687344625438051024990052589164200510168556411467500390153089322228903919050120669166638660142562191207450620162728156493213454482792702092126905050509757880809402415274410795695253751046401154902184294192597738198949251837113299325218278871891594334354748578529416161681277186999781125923908898170603590196546728188587904407695359656110397019078754943031963775608531765690045741190503521917787960634065347919180851301558862438424029407982357071724159087489759092692094168623631500220272025560981867388778272041688773757867813778995307938836220728347748425397447066334129722102586996109604827849770056592342207245854658461155777410922160788502132706011423014788196149318932156333527262500699228183533489815176386063167069054855402190127471059557044073327189922247461125984452832296717571418178543557996289436839762935964681924754366975350149396326998775147547939177889984004415721', -); -test( - macro, - '51676101935731', - 5678, - '114598568890558892351277519655251349170512457301108169122918046980237508383487307624081510756564677550336178477302154205298849988621620086922824241203952845169587118918761676702275886803533985126048599159621880798222780212304246817740927997329598603522333259993676023070883723250177300932925278631685866750044996349161018487418710787156824698743699059007370890842841419231416436426583294134280327799008795618556337681789763639042135318458712688112601941846586049438371804926113126508996078777819094310659599757182791807946793330068376689258887811689995072195331087218152210579989587318167100041773383622122477291943850218476496927044272842237554951357422835645664516760841149829622887677523325405719345978782256416220091760753375551941881093250856520343277787117543740369641738849743550250267305042707228709682744788048246753481687183391246480490101912653586013524077299683599506874945043746289984496657526568247754108757916023746860823651106704947454023630829841108532968959604789557821034558282678387782274892400435740522133769190575725840235412871894976415960900858952703549298673487135436478720837173606603965003749202465844411925396601850697464037386444381718980799446621464654550821206321596000370929647608427450678602369409467488634567676260749990886237210425012278562172533337907188794399372225626872733254924000975445679212294865582779159284739536067574648674948637306603357526281158214867606477582551408107503527328338793768794019922917887582376894908153461450324195019808790951956266885107461973925559489970262966079308484289377245650607102408136209843678657317031621605407118233165024507780188477008776626376774732469991901945525053633560386998290497433245057356518070213620275700745654781100039839338506451450577013486892471483552928409289830016271158248107951963293890564868178813169793288638609421552999187733984144553406615257602536512368045676140620190929856992488533649322354718067519310329366233012095782513367770623099210385145306068882019668219811962909945944938303357412007436455159207921731034641005985972731076872404481351411053559046816512985501762256787820371273853296301441525251524961854980951466415757745095790408750111233498938399843328976884101167576106332111369898329073992906185716431137905217592404057225277504661400556077285374257237710751164948498254228336520906926692000699164318088485138209956632046211769172737818805518350576876409911238994857621609965737246540747228915599832803850235006646505920161663461782710578007459880127628658300436718162035702759857413264686037450843066618529962777161180564480610570194083990996868348589497339967832525631952114004244381394862686005465286457021469621822619867151692227701982207711240403754089139160258204655040380941387512320543125847873280531581254727837191059980870831091122923417959861596435814654220789276907248261882603123131749272763005899889970210586720440187361168097472073369327028087807891921073775186041480435653913681928394558065224090076679384591070891307475995293653429635959202548503686994214508788450093243004124213718944072946348546273490462900925735733454594192759136002496877104912413694566063277128709834235803795521599955020375102449787917179385948650401410782450535088196592336719230363010532216782360997264383385827672744353408971592600267691136637128647179666091641390767353626655629610767925329336924814212570169908132079298822259312790776336192539171954812142459076936946385158760440753962659197081868092892356974717649297318187816581273710002222637822422625907248946609177471022616696078166962638903351786881559353388016022793559059422611570772104441502159519678683680896440534678482697361220573057326321241467487140124612227021769519132788278891261578500937493023431494800715316974572061757711388338850673314696559686053949631600706217179936149359062760652855148968218517603478406764660079773518392515740066557654365463358812116383920109518376511927056859803872276659655935142427958378419267026204993883734671725916631060714088945987606306190400841739343960163767980632636951807150346899488246361701225858275512527213850024197265932454942520600005445974264278700061722886358112352180245501375011619481895903494024525948428278732709789878138429844599672738323876521649110855277792436882821166942741738868002576408435397753753580116182952236210916267829966145925028378437875898705477022525397608430772386789943421906088726337517286361167325374608638664447743003669920203279685500192102212678244500280945163720924806258942015670529098264965727843346426114488713290334508104318728502382771728945872501553223396187212916235118458655838036585541800475260873636577479118287025217430116350907433315459696137904514955307303089701947453368286386613774098275500676250943657017383834720061347722825211956235385743059349300184053076658159489552304525616565099968774334572359425467321345729237028949216589829910496148348266399952259506966453084807497614865786568010359718381755280552030450357482091573325492727231276923993244258612115652943501643076670607096916922788985244717748167425031600866371091539018747314619844176434458885344303041217826099156483212620631712885522804065144269853819342281878739269471469710167419263261298426536005724710899328976253518828717132656525336398408521558604682092666618949049723934689800847063844761671282296978918952554214898709123610631472079549040944065036271515445762211638184670207178784047672153843595557392899022269520772862968918684932700339559357972321385437515253951979000296108897236060608128673387896445773358382692008138068938089087965375939805087660261553154170365883140110004255362850999174312472258828659845801114248663995523535651080385407122403810220614699534394862199070170516370529573724426277383249873364882798357333666601674798052228774948816335992020369901620508453181317972153011582161807177844672456985443467954652113777013601630746866436183732233279064589871750135148960495813527709288884229866780850817394534670003825516127760071436525331020214654659944097612888206044199184355427079633744822550780458499778237357353947422296038656940932241020563615278249555508480330508674120678052089502789507188213274173100770916834969313508824784364056056402134407244119638598785990062688861144654163575302227468770905464187883181134822725915136640612107272892247282302709032318098895359710245013039285473099721463792717954735326941637258027020359449474131956608190956922971406645107469617185652049606430376373658432400056414731724407005001708692411063413271177513212657905468790370163043951258130982778875673922295809518571866979572550249035569072335930443175450876647946083312614092963535991789686984682545283358632371449413497269427928750522476008103850277182197862744717478903974777451339726925492684847344667201465331748104805481572363883196797787778153950751138898727728375184289353676704124928349416752637531102490310279351764714073405197836749014690395282266606472002997382187295402889448513435174099451342568509159453242120888320839737697049616714431772174331671258229322246266889685257316038839337528724509464509575560371587287218382144584572419703181295877602278221106570930586664027065311454892200273818659381311150404756262029418161040565111664447264252108585981706307591881047374954123445586938599411011096620619274323216164888259706949545584064116931697419880810232135950719390350713062967911958144149654637677624682217905237402682589189689936992002791828405957862158911334297099480655817390013698092780805866900709190383307511190456176470564094830491741371514412781382471608566016857542175626271815830825751173841300134557318244910059728166314923856198690466209098544666893459074761870150034083238014245526074209050076925214228138545561830243367680472907455390358950492305796631316420731434125187536810546887612854361525903826549660077385607201642040850831267699276814362171286190066768458981549632902853741404667094999899553250446338548089645534133891269993883172431804704263925215719942166060373843805638153594804487097561950457231382850176704556278355177741960834256932103041468108431421024565688930277277827204256767781041934083737995080790793709338041932760953129953324240749245316117068345243350389721646548464456799564122538803508302280206449283869830911336778221946967418555187670963441198271217790496259964780654563445592505556519078267175564184094236772289072470230033320640614537275025449633888698376301092731992965463666856043698716302806693885087426713749261988769556429463390046244837567904659070225420983410009710978888428520162826187731324371494738964988237894717677430862117281326863913479208553025891950712021033737482821762882285969238709814995624715621242460823465809517565513365312665098952226387532971101201851401611211767107556328808562154195909528062579532668678860849786353548436978596941540803973584469644923040177756384343881496136104278613378924581962143710807219315022833887527431763513942927784402594506818541221504288809623165972198540933669494785758163834650407164355749575134198337788610507044159766150241794499149571096051559220223878817602912552525929282957515181558545301005606558272154807998739024160863626434649314036466134847629318039975100093407373104577388406981878656175843258194717523909092875616040477453623785051493436611595002796440848161148666254022016142475461311658387441335732482745839024940608008050016971556249565896984096952364713943123112125591933258703693851493005494192677788993225349131525711396145903045479052901233399936977821783416065979989065328839546014013831203847910851373499087681269273873808794681827032455802487324933071462267161585550348497079770547563318071210788547323150873537668915925365865275006606032948938992420253484030285899801624037645490546643734003092212092762896778094831579400704783040331797648705647138803684988666221643282949518185294231209149700862655885675685742587977247470742881671606128975518282142621174602709267031158360580359120233235473997243785917055987801766020914435512416873713285800875063783960692674329948345063193713090346106430960233900220471049512359484540660252000207287048940904649627356855235310748631701290142334022573624657571685050543054539462593343925120666965564304346218619573761401243630815566172421336337019044921825132743027076074431860266381081919439461501518228192067428154599552061956522454587058878725629423271121973055948964177586675025613775553459402756099732937841164187693906160490012428728615553281749083877569856034002578003805619108603440019554292851568931421048023066958052204343883372931130679073105823557408875100214126784759475874110505599354169570696609784560599958215019928598013718187402289676120592754363058386217976480889644579627120147953445090187876503616327911008391800184735093377883625195033462470489375923507822652512086242908850264792687042789386655227831819214938281104644932640292609019834942621395608142214243559409841197661527772521605594271433534022197568992584336382425215293816118135415822763659169694051345319875623274091939751368133997813845916207449451701850545644437368283792955041875417825002650183812267921554071554148141810545261132326348765749042696757503149872630966032411848943742788719959766685423336348908720532382273782455044811025224688005258724128117375301877446615463103917254847301569577217661986908844517236064250159012321706048888909681124601158873187553237768719599661206118675972473809098983711387501122615038573963236084013215429847727184258992906237874964751406104681742937670985077393504140518585378445945934961441800684055554038233956351167210957484786967705794592308352175762541752214854817124986107384580167149061884866946918670005168162259392927744148326558953622056499756057865517495516987090419182627739373939985152189775038553115538646471075934221909696916621433427020321907211290750366847722032569885358324304825748519823761695735069483610277833391784268305687555417321060681254063601376044472764727209479821068239831947119222642427588604524821548797463869612449236554848366936415329635310834448639523331032214535561193061625240491292472959421415693842751590387163835477828542899873873355067539845115993799752754206275423338217062076744831694087595991582736550683224860678822779524670167708708091493709146151122212285091313848566637581973054913102622054948327816252692080182215324465447499805634653027067312991605368041127365270645100770232874469104024167016075695806268258050422993127312933128697504418653934394765893583568834878949604860449521880438659616802122657499696711371950669696088698654540203231615696906652300496120780993861295366389568887602126999373711575248980111463126737434199999923186123228140458802135764964497499211839068795147064258579583962890520656631190772155927073711649314137404718303647113380977808317817846980386481066453326264620161085488324738434460460038866634635020866393862469381723564361661779993116516911788408702482058657042742027085322886734485737469665890653383965527251028179320635401480247183169549776451102905415564180956069929150480364980253864993561144620337603341026450280648329108363155941423746477676441226330763778143302558927254074511454873470596647216773968167693426794670205504808306963783432036244979681725783341795616208450760202661124160076951242290485270351100016293179519729579532961953093883990623843703845911016699084294413469034800124849706899721051849479889146370628964206263232509984714695180238067877770898591308982070720120248367443358203058594410980465031081259361282748294276045466637842578800793537425693971319078319720309483472991281827652766395632559627448449322724455935973458554816112349560437316476772468508305512367513982203113683319867051472957794682903830326933115041030819168485955295547194534592544854770444190167625774242882339856600323988117721872329621119307065210242378471925603855682602511342933926964022027574473668074767250277614350240898114804833628233917590283331643902799593247663848733995782588708639967040765878261594144333897235212151312166170400673009191876880782817897642797305674083214304116001846541558880139343876729547122660589815784784823845573389037426438950965231475933765920983976255357185318394294462939870923725191627253724661104724674152692069584822984507668895796308777450228162744501914688617738288423774855905509153854844523303840957562160021954437904572106375782764718235463296636952021626993854683250625366396838736958893686683145675963239492023700157535671554883718959215653559018684790556050406047348053882167970909777535677010769091602244371438842557331819164644414366880048931933080199464775719509620992644091954275270680288884109813652088838217429569522796724565190899510248605280475710488565214118916127660760240741412774854958523464875335791354333554221114105991785983393823020076734058183927249261932463022507518378417531613595367008713063568456526553921055526758039628801741635831559596552015920057728581873824235567176123583511244661921620535917294970250780006254560913313662765305807933366774232072453360650960008438817118037078045098657774617616105096015011390156583453754385678396291801322575711617682706241038506687001234836301806498523163010650449912433471614658213754184557683081702691883198005157762869533426985772871548066409461102566074482585186196172527568428897050456306066648582770036459460511184764057517774896339386592062506459252579461592560474665528416239792702809524368229823156443879848127098290936890568640344899841675398255520835326531345996368545121081712559676548972073976307843066272299578779899750067849171423314509815187548244077378329796193933542997364333804995452518983295374300579841041477430234285996531274115737469223410436044734098218596575261885585549688086844423068789246324166549747789727265524050455962780001580710226770900533745079189013929659478693513587745539578848213377469358275467176678200951122297705749503306698574297410712427125825591862363276134686251235055301972061105661224639007183964902695034424436437936253659197166818614429825626676264111882581783852335169138950280191270126993381055654149481441296522956835357856587690439122868336488948939918429473181311497573245935858058048846043815567877289011167331444931953925754671240134069623866836792786186011879777990158691547401988209088233436138946304596662211246080716963940999419458347032733075551690030530582476791228961785738428344668271954394260631144673445131619681560910288236163257493867850591921101601774216283724826035337528992934585854238509545972201306935022486046021526186153884783616668536070352766884410433501411997774544944294529752318683967218547747054919125920723787453768874396140732374376069661038491913390225584336932342777315761255948878551294079902768864779706744004767497971699010857817837320331732586562556917485670513125539936647354410777628785488698349835379591475098154799827267570479952391820096174179651670850574284042676840011853046780858800494312309921469703542619592726263073590976462669364922795234207666005686292826903212848877481605826947453296687451059719061958356539720636942722901955175023641714596609837815361932183405821894237560762724700527878714340752426908901818205438166928697623647899633610409766731686872645318577714032460894835086863906305213902132263709453953046543560314104677422693777305934218298526734878837051106284119542143667788585456657142746665427084921846682769309335227479860142774263718482271045462438363768361342074577613689416306245388036366588228918750297891553343601271116018104061166106299788463499404576467234680999408128685491495431444663757432415240164158488210900819745907723117930120695685024585064625587827493034169505631321361629073305032453650015121172416455507667013522455054423012824659556913170191784272134013229862167933357870440372597009868509136667331096909772244774497523425649971713882182557907497459362685468864499900443106554956344003403877683026526745408126870149084364211072799881433860076306106247851979718211066568293397639539451283955573658564108776175764110532523449193170074167594375276229899521780717952518583208904105756371686598266057406647087463129407379439591678526118563375375353708424759178126712588851088358543556455828259242229752207982655534691287505400579846562914613465114055818872346386918363454946173595045963724905520868541270473697264250446046089642748190999453356935960747546554692305385529475044104740895111094053981210797991140570926872891670773814468169522981197767273686316613791050298552624472953601064874491619431515581298483094974434200152544999972253615705670333910064258013397051190672327809649449512231521002044431168670777665701194943318920142732683570462533039523306263620225871545457775764770604929953997570625951936899909518438534435970611071611463871839879758260799824991623563429811928499039440771973070864273967278618870976632376075488071575461144561219935848976261991995743418626824010282377472581361028454622921441883252823380473535980635040675347266665813701114359254871281962513087998501938848746260785427396775049514168562612073137570353309933421182587431285208099490235882059772793358564991437202016800963518589761455026124188003465061263343783842908952238749299315855490241309786950824004062760976904187502795945035840704763791629996479207882802190639214588281672075545825412562820832491492193486742631064101780835395570244051743402738881730159768458032350492340983945389655058528481715594070179000970782625156057915320413986266019990172337946416918557063800133747641604183437713060443142402624891881249459030992935793527950409840201343706778667031036382270368309922120727685173156943536928765918297523291556499898745165164935596868942828843358938043957961029987646769997740718353298902113509786945580718208991358463177836638025806577481206139581029605232343390118748079783839195843230044920030000293609262840245610181309358224141510030238251805707053062432073731984040628183721390347726139606685474826304883630174052769377584217789247910727483325946473633314792666461326212634921565119552168762472730204002086252124424937891781185484626212876955436221477165360031020231430386214870054108295007899715254119071513260472470230202533983791307938408960011206611455326096801350655243853398472597807466586200601253211741913149771316966742972424796953362829778527691461619646698652901365907319538496395153314189223850326377266970571724729299225616643375250610943592593231827466075999846471798767809815413033084807935411432143738782707086800700249890892016781300755462774204025643372850935993536835930431474211275360661334909180169369108705004893833932685971810039967903674985151600881858004723253102936206563045825118090129751111068119272073957023228117535946104197559484455044224813743551400684035958704844910240433782794543523046179137502988175588334343929604010655262873143788409800103840149709367769678272389350632655653061526909944375166865821226676124073718040169866120459345622225584107723626981527594409083885799002170436455111357966813110193233521883524236223930189338177788877617266977925443568413998134839137304794431773484057275907471161083605792371548269896511232018878269590877998951467990708359705970388117405757636229559483770009754679879169950634139569036627493168743252032958240435946744381139249473095508589299567208080597578309780705860706366590038525752672682617991285144702659613402563158938705017883355247903759797019472262560188954212310667319942679244018502332473572330860141285275142567616352011441717389434820775671752035498192835097210704346762871785843394366619830754655068315068021943501597109761283722605580646118265029950836645428880355482809418017207519930746525482467660956501946286248673803148678778320154527985484392151772657071003568822396992334569447439518931797472794360893625913323930637936123592307936959744134660419379541520223856359015281561124867120268443532762202836358157067397969523277941814805842994278790015196862449348685333746940835406048087120468705315737810814851006986239662973395622981892417635797361552255577200093154926399160041205233526050099942113585424767102462092543693848903032320176365611859456909911464662553394222492702361972492589328743134628042819438985147526265136537852840491772207661691558509954371067469519662258250666590165226871146827599529979187274127942586949484821499948977145043677342942737229631023377843981185400933835831423767351371476191843662990866109519730716132126804072070640870780628344547744782396291260010070383315973397408134147633405837121702299828479485082965001168058308660534087429710071643832112134185681191355797031035640660674171124608581811772720944526748929882880981531600483484334329258782080131950152990379792064594496526209604646130807483497903997981366660814109367081501493013317987778423970445235345262451162417303194219408843842138074967028470582769901836866713822445861935378961772248421345450181825317803057793865331808243999032870740776976064805740571853847337064834310551096634478336669042763136704807586517365797136211624710257953267355206084531695186978286706442628626395149607414222118992574163280333685823680906473269108560879550907146951083501973652650163620691173614434376022074343663278172616794365354028350879611668170977299413329242853102242731460245981931645393086566419168095714547735636341109457537424127013466092829987029469225005609148935719219627886553517060926819156103842061184103249786722102357857380363966877195050686029417164805540813780785634440605334896258106006438094052913691329158675367290141201254618676773332219794175088755775479718673883939486154200593603203954816323103020616423867397093710839615897871898114553682658447075458783118190023366087506978374367440207438924966819405213686487476793825253259734471325657957108673156552118127808366008364042860528540535034950176612182005881123405988511608306144849231503055132715499943836726775291396811671741107037864808220275570128503090451498085660993674239141408137294509508916040084880385126052374726220832131130118877249390053885190862016620304127338330822376885177520007162660545308168910551027048206864259306643403258146047122775364888620470370521404458837255123240697440311548296630455328683555320575028845668660604051631191978861891344050450146706574218145025744150912515431643639763471496084616921691588906643318094161772942444267813744245201380387655455570994259537781139991672727963630401572633729986361556875282295744688790419550042115325815066901167830915280249317272239032336428833326465165088029450553351265755331884109528200193953474902952152924946185562536338925534826199411100653632718279533909714213316643228976513653756607679272611930525331509533360676882289504637968260788530354999017751472236832783844855905587554729452514767314824700008649155270346776891167316609312798908304391728180382885705826358462049930067611387677311125159653938052767644809094689360554558540305110248935812740648171186350593122648008331898865084081910232912772214306873277181550887217911939282490833562582253824958566304651212513938680716752798136384903060676496603824306844521424474974798402169651179277198301900928835877874551786318031213157816266052352420958386807745919890178528945692073978829824318254828803767836945769264370965570278955420236563465318633087533589358061430931666035989509802975402163642667940061694906307745403336415888401856273908779094219374541395289779919505811512398727811277052044628889676576204347887155453152137381991361998780634451422237710883316724087265275331735893833197129258839234716392342611646952816033259950054307629463527993424446629554718055401467323011537168845330459671616005062986429892433717372769708986976311304603813694466876866558852113339228482279288771725065980107614730689732508546319518769065056680957782914367866215918590112732510471009325001837807792226514983632349787121937850873634795369167442047937893608233634609666703704587131733723929085811244615783860405178507877859666805690049528538712275243036223309707838878743093968440740186365488240924198311296922550429467362803938321202544305084030232602891812533837834720169281029831388109862088373636124595410033526477352125408960443495710872004466944740504181430539375974997235191384764262912442475167562557149784655839519095519656973612676149775555468394211684073546313305136429488931374979941004482067517955299494545191338214275004688648850080625425657255697031851628472826812878438128524708409359692881087063253264481220907184058301090967458080899506347453532002995200234316121374098161410900539135981863658581370995732911051446451138998982787447971905437800015184192194998890428219996377737564767442914336298428740825412724669981656100409516386221832151219625497417581073077338087294189592180026420910118672014596652061567734369839911877944565035730463100962767041999720431147498003871428186236484743508773318443952371300988256662194348824041466733754460943324754187692906063468991068425866078952725816706806990970194721942596702352590797837064926809786719427373172154689565613653917663261933894602724198203854026358029130198575484449317765398657516813791597967078843130547339469073783524497382496877243498441684162650928487855937959542776542381517702580219111410239373945791463335216468817891797159897821504141336134011961229585863213744116868341898479921270173994357042490280766042368231306294592305816034402114190442648210070915119128632526643207927399206403270502196136290923785508894091611892797999732479898770027343898906937912932694388260729491337611804903421576030209232881941209677305990236485778758568570909511203847749727139447140750017842138051158739164470079822994287470311711455580863809119499634431231542924995363573544534166199416944524373140000391672173343392584556167540657516390123765234814227550308964579212558077778186821292704585207362004093356520798803551721188807088087772466898440741018646115406804612936758076828507023774182209672664449988128724902414993501219401001765370672317191401925997949428670713449531376719892790107292559315329271665439517184073930078672355080717529913180235718999452728793715874798090520042529997304171394608223665519403070588265928559013346665409955899514815287087015895503845612331949334663867288844709249699760870154746576067740617109411671360905733205915721144812868914282146396418963599623786016511558301453135637971753217719122740923575115844689612181585533098056418282958853896584799967463642188879073429673984966106974767322904274930921304431241275791867912140260586098638979591977302253507591795249943499668854219091401728091291240324419097106670936334674554710470587846998580373319693822832186125663563662227300196033318571309952940878063796339388257833300085483835132481959803926226375922877243938995147684343099551037900344498227926589430544888103232468580078181742899166208452521226468017225770159292796370494628221608659705311860880457610945893698767024912686130786102451619763311388742213622180967440266735615377707064630432362851346787104938266503146626301826386009911001332410273267944348625003805191824863507525729321246269404084347151934903222130472688695181142909993054528914728385212132736819895913661164653395636100392775995046821116359166052147490259673545652512579506858292074086966566678148092233349090670531856554153436180220853767903100802098585062424675371471614926784976597351943926464759004842764683915776120276735116378854746819555607095002547606392301607456201613727812460712017149291083250455836242558225613747332670029560146313664626625184108408526435551075760616558918639998468694149252839714828173433759651731790585540238768981676874286013596872690278563046650509425213768568600827027602310874261454666959825912534982207381304504165906647669730083754622626706293980961379228599568320787109947615111949624856762702790577996604294851650710262744819536909560241872405354015195815901368973088718316821955357398270458847336192054118678494760800661846422575105028339264471032443221584848296622560987616922442031578568960816859233700095456702725652471996634621805360039904773049493081061117890447026080993179208164914084001561137279717964474457910822698800571370948730739574958519456023949553713352403879552609629342711187222946890885571493932420920963889812746152759211771233710658321471894667865836881256359416902697886305637566565270511589302949804123378578009588741245234061360202559864224187793107140310370774238991415782896268860247160087221743398632360201329490179060521461387097002495616922113269135683217341549840373435949057182322394943783472872058473593126858273723016989321497958715693848778260916053432892608850153974019086350180056263354802687994169752296797729166187979142462997664638545934162928193655800594073599868087694021711982073641040542199591089911339670166122773835431930957664741772458832249655277342309784943306925485650386363310465509184262852528967556488981679969063781668502292160178629319257109918089175245793016717386236635810518592787953993726687773744355504320944066168920405278890106620954397703842075409790585293639502140471672275176364054469159930595251498121123000632836929940035415174800963695560911591519351305097536056757497122738733247223334299439795964416272756974788281452938919543919179780495830578105176873022791010237618749182041436120814538747344362413981166492880532981408473122438956024899704764414827372680888359069383203084252482710559799658759140471216458496005546408675587772142479513233766094809931909320095433919996718551768358151589619518928107632509757299346855803242881198506144473507763036827161335579895814696687756797267492473907511129330448610059311031697081944370716803795577518487360501045579868709621241757229741722143091970632237708849516805918096189012758100919518522581134272755075309636666228932838080599671285408828093511202116961319849653073610668505654418211025373854469615185587420505700575888261495326807192713148159720874106763838858514416282535260626452514445199386144279460790374332488395321942092245696971633409779711403667148196791467370350138794216664252879537117245964416540374786812119366723571213640039312537831206990870490421854920889257491088284125753811729442672269609411252776690642554159109624124410614773690847589962809481591267437473683970316925645103066449528952833136986667526561057302938060806717705640347372758940854559438090824022934117904362128241289781935585414469223058188520370422811243860774239667131292667503614480954661643166021094263565562954650536478763836171348484291106790718789951482491353812912872996022446709005369204478525205413817559888660494002070759867343020833304262695786258762182090471108517478008062047916158342858928375981008630590361530730991533337103005007767024431048399846363323604547570763844498393678827412313502948266613097046593733067129592808782764829082779540513431895899823748129703286439371900576065601753249715130145551395611158446136282331860450878473803949375391163105048460542796053348711044126190850489694720890621885113977651566300965967733708467656571181095189043634361442938460620424892828907311518705548399259321673290854432989232402033427695505537391672297800738391325014683049620765825976502001490715724896015980764535931939727448433948695121642423627605318724132757699110767075442641487063525797598420578507881625322631258275225375353312907827229233991901973469958877318300954825891826980150082560409853023435179352929576326184297304876469260675852353214336752697472278921785590185472893192209568387192363535612736411827177789230687431274148917049359515220791900149954463891144855694570764248287491511795465355571647974077067810042898359708679406723077456168802915159985106685165278844446272185418039624433414989676529360733224196806303027701699401813246007448367635711560091194638564196215462750260469722895057683130186655197563435087042456745552261726792507936708788382778795714813046436130676422706429620437824366040216140317789120666296561961817276627472468337572371444709160465057566385526105800512406353089397311243525990809771719833722278531018522388436675146455281597431804631523542433155277652876622739675563673188640006742892639445098465242739506308240042149149884627632749060858136523029010127328467486160496136970964099609404485275485587599287991078550382891153951255006778605902787210807236763823509705570383045418472207043091603551691808413012509993628114628175790641442073599128028234496708954756607086944124895421408720862402696781696349037884497396953950073338348468396830752927901597524196430868111165262332019170855492271790130827789573109557139053285109689778332545958693287355659898640515042491550628028917049986801903913280115785942913725572192146862247809512151632511954616445305241282672393782775249991259990268401573895663033422145829424653742257468572830795144571447217172170344390171558138444299290663385049414552445567639181283014510290419785983701505834195674761038613042562189128641343318579288380854262613061171426518448419053079528551126733990801837900708461500681574188884795165426161291709564074295450881956626201918302402436945381093124745577171671312225963759197527876184346331791160454187021677119481282452140937671112699410475067112269611894574476316058950214818972540215691086743676782333339834793090049695579827352673705992602098532938745690406929370454895121406852644336817988310511018606485003687435377377880357687101549923752753870842331086890020957072110482921078203892582825430743853678938678845171550824421056075012746445684719777935620199933697201020688921671515732288023709159460020579281422206200660770662136186411119039464511246972567849083853953974560152919983727889703872145059312940206651954534823197197456037124574320069154489362428152384518561176908584188017896443196497458965211081852296712793505164224540578823521427317961999439433840947679261853070347008183355600509419881301091737467053884095017880299752423221585377626802533750299111687354685486159204618103044084872599593910681436894070175869895284548114007698177881132942381244912110629421844127353550884486951712261822154242410334674508400867284003116207597789041715421899510712174705598161680472160639854366218120520371025267080822589762082721234822899143897023722519527191182967187424707516302075467248142839624551051489916072253973677889265488627584976956960720624875569085896430625668405496389507310955276293395519901278703982054295957616190481642061914557057918641411590376116837069898283627310675729905679075315341752230316326873798944842338809064711121830318844994995728478247554519759647479833188840882272330805936564717875937759645466235877959356774680757359186747964855850779950002190153225827761646716858046423788030255771497227479049063699882556523239832981578690856832572914858098641904135700095112492548076201483334658215008902573568715728628589777880228112444674918240096125221488915805020859677852091654966635145651388632847300280396301961059638194991615057652714347324569091348372183877979671140165075401908204991585820352573960135268809787675490861799359172749390316567281411205233112473050152264568898538213889610052662413601412411722965122929820314537969307515359259003169193350947717065852529386538881686267170773291846400688708486999155003104663586382344290816318064759978010654953537866623711446364570626969502173544423423074929404208942616624720195343641583097741467031833905383231234374060924479894152342878888888587110637396276339544946001358888192005723471164751936785560384570786894012343324076324959874814196843505410918926079285183879707107430170210495856306080442455608822862122117572876456630741312672784076158322593594055019414285422443235678980565689755317999308802910505961137210498567710018536735289083212063487672806707334546206404814261141369706196328862821461886994687577175390043169221020130498162026839862458973943014519368318441838195560100295968496734198518495996314945289548715598718870583552621401683863581183106851205684154635910380524563847117217821212106128722162524253763046827147151974918777923681784807700970624766909477312166760595507462337125669968044357089923070482883709634106122062070766308810712735710624862438926613157497959226806833188459480017662980172063360634178971275611314406393895211433271861436947760659023345158492960047345295499295662853340265551685535599800744092303711269544719828803680436916119091632263364533324661266862974434455516831152632639373435575795104537875888710518410020589958339879959822445451353658029443025792509752253551525308255741984775779270729019138683637750829888081844708006890211552146344622614088468708319389319850769307851285942767252474785352358559267431807815209013706262561029595478897605034763527896789052350336340918526657057958081872287341591904736173950725836194473696707391163580393299902911848791441413850082003693596935427471422729646162077763129389201152696915172964938281148555040979580355711393742641390964747263809506784813646753925737960500015999521599040534422500550634111212967036120707920863177566166569229503234057262633077041307108981897403699595707664375223053442154801646621952674073998016018204114207792322619912823001873411899291943544289433976296710950251614937569204757779765928995747738757818760854802038762304982286305288261345463881107741394409631520373874750233139799838650413255743318875470620818472533845161123753583328874495241216906348859022307736592331867789432771689184631548324581181882547915784645287665908939251778029107639157159289196176127518723121751560070469290085609343869257334092947393223315517614003002467048702184847384690761234900833286623358455281883757151812237381345516686955628191314036123519539678665398336254286303408505084714763392222044018726750547293413234050365413766358316654410953551281819431995257295975108311779909520303889212337450841246936324792672921730951765343962514538205080555856311467242150053436496567701001851431642012883560394627048117888153808553859689392563362831101945847612823435569999360628749362849396263121141428978393706694610773760753498445233988754224335605409426064724465150571453306140168263830877100622522054887364455754048830624591098148199844437954318671983054725473714673721746781284214097106750134651020281137856143339404661336097397401255849460415338500002693898912492847012546892053061780546003055285372933509996259190318553322495887219489025100141803027682285498654701158621266627181173588718688738389808332699617026792423659913858117693296106288197971001919395880629554677187346338125838160292486198360147729979871273120571322032028504575690735750011778046083231651989085708906682400875964848727543577767320694907469192930438894927009743546491436041357955549348300042338360759281377236265892227047663620196806664771980284507347099402902967733697999621184233818138249990684015970535495278317959125975524991795957531505015611136002871680310533093786875108515066706678620823077849432976257275439747172137699295045174649617946011443989552460583705965135899024689374640564101925298778186797415025378969912635036062934209463477387146111182074864014263939109691429255035354418183096283089143643718609144817465350868728368487526110304341902202363658329806583404243426301929038999413811963719928900533075863880385638026377355762024440421846082611952343954020299294254318741900205024128317877368328956627168050002516703106370642969704283772358296461093955291187494644342390316988195849776128675653911509104542124861217280772932996221537953310962029452657975182251689107870392012504852892547316032463597681300089847160255250462914104176616050444245028613939373851574524967337186933259018554428928015559462061881262235852459856089108099770130466183985887436588873773243601088860550229426153384432008657567689985229925644560273502542282381742604579927654137058837459574794972575192961456785170540640531904771432931209781137337286211239818317844041106915878514399961654100374566986719879295231727712111771772229486027185802483882395198074790128622402561348121667919956756920273231028898988580958707002246439749981244065925735360676364733954118132106641155299199544857249592009103053430934913609249297653361487158248749289098935130229734152531034647060511392685477854761239602786254479061019382441139667288410559126176759142054940087896465268370081054931187899275164499441058030518288371926823323313797222058155222896466033422597096415435116962085378815549492184638325958401951721290473197241670371516491881467203347875585007359331254528344449459950467758875267278189820752127439854852566552803870490438503143232653957782922118685816688148722781734903296936610500471173522177161064283024894888579788472305995091180282414062431445897622125893030305492825543169066044111330888912781754024348338736557326750833574402747013630048297404805583748083230530028596408741040030162350741781079342392865246051725408625341045214944667618371021284914091497257188761924767939637028534628334759882175770670772289957481292738316309937728650022513231422234754422579929841855985946451468684350390314845273621075639131390824319325380971724618039332427557919436402942528867210146505840229198062530002639445641553444719681044247172959043190866680070064196331063863914130249071095131248563606711066426848149947420902504927075034868938069205285471610210028557331474791661084008529287736898562988280474609439222101768158060840395982029394044056801641541171538945243610104322534200730204315260865284828953604535787727385628812968114791370986014951254706844185451923929072881468774586758820306110885474794911532141074138864914763733541384283976740191875378571118515523438069807588777000827782446489266182050245346558837361947434377809680600377844482788019840369988901856492040146378437457195604765771763497148753529247674438388594397093126205511452264943420149474713408497012302647389453439359384872233770236640360026013633256865164883566645637992031106481526435623633931034222232355213509370961371765010288817762179693552242379775216656260241135497573014130795564397554787053584387187656853711857623431937857471939579985035081848718829777316272176681052612968630380592713032967004361608181691291430592912818088530249261471767125961629681696763811424116391066373303384993152768280740948118781184558104319987675542498579919858166065158389793255707776743744116436672753184816598112104831674522931550279998771106215597545399479437343520773636597563675211447481439779932609623982600338971268883683768790803057118303171340769493891379059633504014432705976380151918797310743478564409243233539718255459610193420711760557630156927018163410042030919328901263062660290810416055096762283837210531454115711704392214764971534200239720890924410613605239216073127851967270391325506751978212863009614699353698989489629129966825662563519386134716961129383146386288035146250197315211925553022512173302931962094722039477374774504846268505683930350343868458784422880640500784492844169201589431927903016379662303396527872095562568156390966362645360971925681857871968341995483947410283964766743270092620340260322997257237091573993613689320984290367200247030533720027280038417097783212839273035096338938542591727622575162362022599685496500554429222347884038006453190248400027743775341348801335215989938742326080054254247170602001952079080816650302245176710604093355842163642360723052540350943441654273802237051128416322439426475234583967057527446258480482041840231234842602058417412378587528062618463131988655226053150118765238820025342051914431270624521243139110536045516721557341224477691444072542250943379523540914610979701581620559268793412031737790984636977046879757487332724442490312397606565039366925463662967999702808542773925468580692839991293056392310917374429934951347005612307226284322964209030221618750098429366099194983439477136694496857689442264881224914039910670322116288372730289047738573108522450033816672394101565965048622910696973855813020101016596778492150524524163597858951412311844796147364899117621449468760602813472330721658608635506930727103404682194935368589333167590774588214751222713377251630553526943871411102693132298087279434996411605103626921829523837922181308665640485185328298412378683376130991261907022373866335460773339455678784703129263634716537532090282547777127534019418852120934212233684269568396133976431366342292873151938449479967788561358899533463702974267094796359284987637751201598974404152475871775040728557820818028482149140963098586410453529806961657287735738138755712151598174425380024951275335199558910669206209576113284903353418478945780694878129790034895748753362050781539824584920892084749347087235642519520452342493927793799776786136198617469969693126983224168201909587877154725998407004749212713544394340278146389166186340477628969995703328593195001704673717058025352438357468612946242018587325606773986648467186870072551528951891526255461310771157406650956757785133396326012890387635813591423184033135516070805571730845080137132045429491261012978403015641430817512666681469843066257060720964098086648402611312090715751833710679060879766494555066896257649913350023260836668751637428823100349524601403601892419159189925922959275820633937990644299249271169988339019515965180613573895432999894831577608592304848155696364198541694025900829134781366210991417472495148139315405572913400497872095116583163635740301688579861226084476006780263453790933289131487409161550962668826089637489553038837859879843790532691421980575061315224117692153481092599586056471601215629186621130434664996556516932298784329307022398027011414332176083277481254566740985113591763468957331875643736921355329794098131053487627474682120881562550550881428255655602726301461818701211939805917586146895437388795911816068375606614039394049767168461259001949273538210144048916666534903327280258028482616623798309398413700586176634115625829647911232227507375334923375588614078459209835676422299267049663923396700676273951091983057302624288416865668362779855525365118686744053391254580621393591196711448438077488551738236403307762952589858684493455657463478117126363062783121291423235729455410918637867035685633113782220139687642412165249598360509878714727491849673012334378180463831584187354582895646400179807708658382550667724914138565820039682009987745157792741850123714960764039841065734298623591290702110380779922504349890524389320347890308828719589040376100679017864219311467557598930026491189345663675214233027772264878374490381972865809240289051249348258334250741010764402699448241367513588990261100526633287903176928198197677117933055092254550168988385755711184604062724032969041641602920344983239296376314963817502741923901882100981471281443446703980599875657083621988880973620719138197772524100421922113549246894114245414372112090493791692600291606869049421927806267868540149608572744342888343192125058473363971742076638014712200975997813876869820888826654477230072783335769094726343439363924451093740799160365246814221521418251509165560016088242931176476666040166149409617751387959304000667838298475779617451435521971107542909535756971647840211114967059219572740619358273317825413217697042690085081762346191097822496311788562562031626726216116215298679994354658456828777010935958029126216060917819707341303406969946319555176649237050902062556966761241375058739571292436871898013175671381669805507508696910381959470264039318613075638568464398580077833659887720496385166104378193365458881086843156468468523490854549529450710965680147266392003581831969193933659362316072852675420800357125522249098898054570353965505168107882852864529840652677935931955087124815626428567901773577880059003707684993021595642820310207853594456286754132723969857923337469252202259735727997751116848764487235601899102596111514927141978064206334037406646670461524244267294399389563489619484717324536636445719285643430736881017478756148754273773852289888136125549801175894395271495950395640707601607104562785797592351715554623869028246265577155348990843423689483732331337719099850118433499218006218421240299027208453829439559447186342420117431465432792072288988488740343057267417723708067738577852233243672319230819937439683915440649582059516544561598623280971773789120893086121672269536624083598033868209624720281605641588278852741452020860395156344376951038233934553306218241725396467724828107444994633708693546367123495314361476105770109803860472148239644683473596101653816933207579295804239795231250209707489881769264862491580478053842336543358337010193843107143139943833585292436929169794827683225645488250493758065708204332690153429283252246824483410972045997105029219491200004356064388873493046364077650981091839516620395962650712687713049420813661020164790060026130112716818875580888149422706314230708204130100772098049184062203228041362580051800921206280742731510572822623376036459787961780882292249221002031736456366826421727834687640584814053632480791830200948413810861443283626261692032040972578925220311877455650049930685081104107394628130349553352694618261578823385706710078304466022726537115509158412710129375703385879757237284539292895988728180490390220496139617988669206437315385861127520716472864870732451423836516235084903022716386874198709556735053670824221685660220728278626961642949943462735737024852061880916852346905339456156753923289238892045090888056432159120268216479709411830925161705073727852182241843774144994444796800812422381396128011433956107925125566938292728894518495205656479288798467478295768971565046605743380817683675039276816505508751212423949926029841364819217401250701049413854705548216151519699389827283019852789171293382302732747354572335967904262121679778835809536307205684993347760735860485162352359870983946965085935681532501893160966722375508805057199214927917795853333092263437505359039352967087492413012955087698529172665198805420638824693085516459299213503601188841365820793247308338096862952405825957815923600207308796364681882565126559078649360912095932577475791841991368526488425858095470521872452183848155746479635949126054100759873565047420408657908196467861088860745823440200596937137469726554619440021533471197651802029945746028546114454400341137146234850866902640999835474619226352406181906965593958219260459751945218547186010136586725824330239183847055787095688060314095111184685688138832308190665361771520893357047382326528633906357935617076387165550366027262811769099959556389802647692621844549401990735569529998624105286253926755935055719547875890932694340554447107616689228089562066086569944905859544518038840788528630069102190204691632172591973746465885214629803758001818354722671577554377946458675180639189931170900056297193465314174724380797003889515935304761631926385152267377564862725712122407042606969044731545405432011544768262989326191733481446407893297863327714256422001628622845256022926722039032858852550966980793417370766719350671793803838423609435455646884754065033709502751899071375163169890856762230034353248802768786910964565926739703092124666704198303948460691736963253713870119591703313690617965257847769243951364137415307103859326650169756472734611428216414046385745227023184773573317555077165126936736741629792481292498743205155835997683268172359371347012456091212295887484642867877578646795751622965835785463864395557880638259410281317519825410588466995700288346083450655637106260214808311406178732561340081016232526189760751886271379564740782676263559705973541667456189291443581212424404676011914816089260905831619643542553993402039798670408163878137967461241701829503692199517679672763486035252098113450580438489510602779967538406778194913724886699243032503589895316658938365078639346817966446042366971598315102456226149656515684119923736039138700680083951001771224019777161575827820297993227494571953532246936982900599366416589787251517727463895146269431106027269854190552230633092628014821482309609635823553388474087969696520047538050162437487064672959995402543841470139970706134643073875937981889199695346910796106300932889981171735045657785459463379515938396509980647441968924682241853711106019941292568600206670508573236766497716210397782410983939914467015508129203700417353471801331728912556922317624644415889241609181001149181985321743941473620491460989210711065194784149182976559106558188134333708873913801535240126355571162155611895528080568951526554987444334536731499537753528195430833779794624656681766785270140096283044140898051247012255419499146558168259139756529674323772834587323355629868317816780292113528663119722680719024978280040818470547128362669379424806012577422038887191868631883448040020015452134369307399895551088373207616043579965759272959559449403269879855598910900010706024392636484042799046911831117069348975342142583017574911456602802451624070688915906429274072763654290623835166951367071267497654861627881666298541483065726588427718084629534053816735134742365841971731795029103239286268275708328610899135163422402889934113026131852180686527150505983759002779807773566223011788941689719454712179344607326254690287120395766024482256671418388078554228023784784496201187429256077058990150435615351155216101657438309215090638315321592936537200580321910657657215666815341247654573083731344740394722638474346512544521661792980002338816800181577838361703000507770721899400195844878004251805255464724701063911083619487594713834381627924257067711581105282570735802353540652641183829634997288735297250112282208477996416073074851093528870765045321232820222921439911099170191434612580973635919820391541809473112124075733876951153040686421981760730940392248786343513079856829965044538757787037942418740284997136502228750221662928279924265870962201635314064803827203966095428887928130337192039410759247169242739168498523247197273121591784250520458251462557288339313896397732661534729027052493515404201580059981956608905079272892706164790429218771081619749768508639849339364643058661360212160610191272076371006352322980097730083536900596908930188252920677441148336565335213544052062940677350237569694340838070570449158815512736492862139779132213211843388066176862669989419112198876291824452684702959605871999341982491423024679580081630979799600019718579349756991631102855467872079017699044841433689138792070082691245858860091100747333527615921285623074522312582760989162946865573374037829302178739225575289042659045727978291390647109321424303936944279972788242891964130377157310772605953533486292992603361085012572105175885943335595705321341456889458117518989992036681091968371021602143621382567898278967201088486661538826229576844449884230327889089656416829054301277201456616051237734474662164978054102538036494621644430726212087953103526033051131027386921359383088225533719150606934884972757665515341103897402690521343519506346008077717938429482549626794547576980199283223676534407717065157853712801659521185640516453515871565192484321804442962765733972699330046829989406888341627015358639514826801677079021155478293962619923778866000228101968771938334162366469804573202014667190358534377215482330962923275262634963671825984637003914633619143396330500521755888969843386922843589872134400996113166528653861650963770197465796117647298541079103250256973646631652580593033941058305941438443670583302078961092385000096028004387250797639227058729182855207638716095753795885220489180587608501087576665670950961102068748473102397688480068745397125317899151900803171836227422289946173194639475472087332607221032204172993718739866807063991965434685529724874290316386815414750536825089647609755324478912829208542640630837182428790314967707466436030120046677693513719304754091874591925748831794738661935209325972784637836372417065832634101495661541702552237720067651495419730409007777535110394473910436455762333458257497687020560780560125766474028996604483310845299656108458520836187635944075062965164082259016665860024741824447869072154938884824126520956717610359345956570059031363334002503160837760160190522749970822199550294007333039256459130986258366814988498652039570467430857270936255566922917138875176546035640770701881537448577626102002317298447304080275355918518719943682484835725447927289531637629163866387981244986227932821777092957191598008618007108755043196577493390795743913791435300045489842318803840629056604453508622889454329052961581308249435966212373719648882667006349214657094779879673766929203239990406226893937690672818422017388165317029813987140416820890222156353954178254095413385973580442456560445558499420284582912636669611387427404451225546415356155838383066957787260635657953616728518750757252485659572480629089199805995107320554322842323926689320663451184520268687258689886344606068388694479162354509096941490038433598847203104301976611951445601852362544266638679678290075412941302729162013553313728522646010957992606699109069616544863135068561276755095781547242671190932783722064505309964908887877840158912914910105346231151775487613772792899879678519963830591786250997836698271218528501056595898076691114631296567610559849673121473718916782416581126344147631655121086933981180869415987776601838722614534041581254100451763340221780549086746753938766610289735053241990894606197687789239665605165716452187952517064149162738755920000811374455502914943892262459729586085538415828908694331245193074260696566568387741004970586046250406779678496790295648201386486985620162529677519187045200318621917855086482423481330608007219543743506802384438536607353392218691697424857241893460152387618386782325153321432760552484142145781862136735387766492081605376589501268788700420050453317070218115339201229440765302660291694287227700950440380765107112761096963572158992801291875003909086676778623232366690994533299491222168137364267573039455654289904047646814229327801683590630142563153751747079457858925522910205111288353935603204598220411265610249301465496049605100661153637159888807908902323782288115917266030548928229073591717694655741521631460966838791102199409138425309485441867582737071365301751525547942825571779776968661573074132570848279551828767121886018701878619280272422103259889312657193875315049837541388659071098765055026282156387486107899591956053135772784100496825157507016394803644582281562465844931202245768097460360009083034532364442320183540873202417639221501463884395812838717474792815470457888288508076821945174144028105860328866061726727674515030087857289847427613927570162848467465868388369591904690837471560863827694337872032073339132310877824074716599328692954368440290176778939622098606562704309952427724800739407743083724696349092602202149637692306858199125713600548864386864010917928499351492615039593355117890366131905372145092198636688161883816483303851872238717415106454350355132051773548989777552757443255371566372474534435441848412809716879074979241665690375961387244267989469704939164542096816857631992943353367922943450974577981735513285980794037989658748077626750133198955052583318759656463244526191339847597578899938757558196148864075073244250467261088756301070340776077937405119970413498591233848696140017565253179511771575795275131945857256304538740165986955527162558693404651982237870681250364694679537863190584566503257017428760056979496904352580609209111103053294614675377385059624280899965796306324467850909780831489026318753391745970785291441580820547774726329434556660527022852038096530229629083381153469692319673185432212788337117250065774907249107252485740348419082835779774814914168825271376969001094340761377648487418731698243293622743693716904170881810872101742928109037100000977309557903344136643273367808231025012640831073700517532261466072965558652756539975841935786806116867047742157426598876286995997384905698693761028030005126905217313490141907445119240485586174004947125072513293761190201760157186724092851713785477603552145995848354307689575140731563893520272232436224697297570996577403366115446408204985059861276880231146593632332116664047060124406837360322379955207563026996917043872020612169132773506149751543096030902910862068818208029741138639192386867608762741997860087946363183791825619263211533747157596191757134157369834295405013020010499759058170439698811648143980733751968237686573164454534211394206136959587926718539689642312494935570859665860568612537475919659068040072420100618936747953737753705749383127291409003383837688855841053309435892404414955527379658360309647135313289366129538476897703162917189354281206164435348255552192776966124707287270272355902245433955885751207009741227994192134495378305063561634794407295832195458144059625112222238732508215922805408792621363851812950739715101715283572373388069309775291979566994423956314498349376967149231461962778062765502443563061034611737001968423504862603967799669087117588804859019639157112753414649335925988454052986607957770870482923146856099244325494894435569370404603972409346620158075409396512099348903782562196646067345376443663877635728814318418090231549113721533373625163581574526840997161673119389664334579356556456354401159515864788956168788481450985197215201467974181561001940631241149619657961920795580250374263473722428593232378725810430245637202518132904531251551627240821059617789024316527079137041828262423203999027718050493278416463558083739015666535614730630528564883352138943172947828201962484672894006650945217851258824311228840838756059704734974004156889921429014908926432337401389537678225680966329782263719847506238362967059541391051250329777158461686302483375117714795942380458251770588312881492313634727768589869682161697321291504228940601873619348996292388777724630285389255078462577634963779959329989151426153404562174906613363783607243267517210079578320766293154362152207280832251485579899573303194771526628078798007578233062417352061348072159821545393566054519332770028296707118564344742106657936278687268732675617734737178056510690046607762220209746122648008510436643666435541902320142352415694782992027493364828745928747851672282706320889132159909846882540327746849007379809382050344297894224907120550708900023237802233950487712523780018161507312354618054223609497536035163494093928091032767640336242711088275287685948003533785270118743240118979225026796544540327468208658559416238357927216565224536669218251472645443651889081645564816245005362169954201386198950135410692688457725430323102706392241999820836165265276591679465060858160505568568712438796347024605304900308450966553605733042168429732916370172195896437974642297090857585959129744911909686268599809774528624601994610190665878857027337811884181381233078873788158373359983366672234669655911799888726805731249876450737363254821569278028649052801255401131062341913855820271583117070719273865683054999663069013111249121297160457447041240423061246140642426490959698720730873511722072350750404737742430572024048268685119133667530568425561907620950064557291163632179554525056907363270277399640559645834440273363853661188000047234146519397763559239145260412600704968936012028106894549688440479900267973574869188916898200795990111065008878815333729179214937996646495852784883698591027255166736443038004395574418572899294370967551529143179055369802934328561669594406191593608936964899070486635648836640763029576597160034720166645043990534279613912479497024231544925793613084992394121484803964852738532840786244112636713504212176390740168740010064318423771759800182571206639184134636335947786714976994584189825206727396176883875524645479643946415113644023798932248203117158653341801005086972304051184189910711151723320637594773150678911124405222765005192822545537671036184314807662167004590802562833162356684840697492521011525880952899271472039977820122616771265024357322419282091459744940443106332422973501916691938329374288973886386034592918524051364182398592764975688780001997803671401869838010577270717330444418407603271989346719916686888680593245148354943447462721033986270080485900155124951082963992792987842114837857821508811758170325737210523836242819698681325151023148163454095321894993683800138795128096101389801313982043237028325779746911915430218574372464407978667515942327600656822134915485630059582718562671520698991302473350312566427091102259532338314893989689756822401425548363478786325343080669902177859287335109626530228527804055908960006937280662896796945405843803882948848124047942281965182397536936457929889578255794210593948378679524919234465908033421164868438416051929819069131125432441300566879775210550054157419483806784214653243093753518480506741715472803332755990227351462034161722520909347730060870649660727422118067613395865270827693082504392270738618254811116949038529595723094576904555387646766194045214126185045174967881222625225420294995105078164391170749628652025184869718810057932904459780474128600044356721564987537843310493494303165385746459512014483412377153293124606805820556680644340261399666836315845102022850213187298338640077707077917127911385849411484173150612304233608674207467083445888214784873006838124326048603420520398039994672066938235732542051375164474479235433550682373983123832947238416282024613236150041949833072908669815550674617589673248615861702017780769184080195436695753443836861503161723295315725658560497271219460777837509040504799004521018029935893811387189517865310399566336628995254428616900954602946642481835104052723177763215261081807631624720322398654828944688261281379543513838399159096503176110145561673340859375841223007298962049354231684731456119013370627451653372101952784150843366485718683154707759266001380413461198030059470241851889381598790912932175523398760753164627792920260871619044331651516812323419790246774100510382849642369445921137356415332559100571402192386504324237600586223716858020906861290616574468722975254000616033200134525382789948233703766721713913420053378522189534440356774167756989838340371683053339160303712468122195094451323769643603060107933336317574884600660754013122975875644836292687447653875456366671633406699749727233770775602930171119873713327502029649301339157436902586985805804661850651842865010512710599579744907900725568864758808468315496153957143231085273655909832339900927873362328571917762632399121621719422136842073993822309314300099352877919729663183063706089857543103711226019781257589533875565388292807852373328379571498654743595708116126805997489585227762613411374287400898540454081729983600454020975504859445623078574230082737441934713309411334435977095406278491948107490251001075326160260816166141665828764940536675366409103075438140950942363295087616474038594568300076749067398262609892149434246290522082284867369996747369036618212558758764999033240531377456820933035653514739288807506785309262157018155354164246038618753605910751171596544451629138375154996561231768056352944122861796274432731602355764359001440423701221314110232709724507824830537580539309136187075390125804621374052404104186962215577145031687226391307500214048177954438873320863455884008371509806523844996560156955171721235083443685969318160004631899389556155154887502954567874337030723431693153231859698126685897895105095148228879264170688790144046095670747756454596689425959992788755978477536636909986217025002679023725302120269168121827137745844016745136986531559713305374725826662884442853078675832269357444922580319812405402267749674742781956841448786497782251691834976002692470785895021703704858388868515265760165621177267080605919982230358195653707487049616510340265334858744325169430110779016508192911580225932171227930158137898121057272065802163804143176177861748042060613560746270301387882517734888125466322091023046199189071897531864764481596203251883661383342557380251629906535720631765398761130171689454545284542849138949012752571883712193005628020569517371873637657312815325305329151583778151502917902733190305271744684958622121010306471264222608732792916887491000707158866999254047913786054611810141366817747429490945735777114365311619138196776056638249387208249599690279274158972264263533482913699417066232424301052566108557105882321860415953995261011470246610385777123349945013365720795738329033328267790338461440694253915947579607200765511873466671258279119860920470033646635678259287228565899281046026195224102321794080074560857019502214981683804045378001236533286039783959384004974440166902266486137702679291194779601542349226685477920055280270194687371379891364308309741325341794454848006333434887621180433722346253849620431677039433650809755697980501277777113845268685091187424823340812151151597036955214920274705302810590187488774145471376334439641472564400585203279952036644952915857362994275837591364735007137899752917263254850243740999519067606448557348572716000678300808919766778877206053237007230414810898261174192999230284869838903138569158526989803738366062311867394482801934669491046627645436363276196627877141926295125717141746847349260139498229621952941926164899210479487462540920845674239802557539445478424605466878288948565437238163965174286067026364536764787585857086934460845630429301475483163588819083876568053843919529815202317165149427461863268394120150501380274794164226549074722497966714770269857429653319371853947557581888330894630187929986442821810999712432279880515190220225825103925627914262396261528127570244033580516736900703944157759769468332776781478170997801067263584947564578699956407063202560483281763769954234650000264770866320237533750709170825618178829121555348484981912976077434644897683103996518259302203185739168355670343119920701453229307854524542846194775780342354148147108371829689841186079764946697999961540609342917861302618236089580266302442813911419612144783451058076754515595931540231562270809029227064151150119300956423560999465999653837045524948746983692965835699733590149297182040483811117450935081926236794221159650071490425720958495747811724299488339537170111127932294679341722267132041146536871343639598304001759956917134651127380387343487435851780856522271135939193895628494326974660699269244961652914573600667083355775273620390457210060853612580746188269631693582473145445281407145308991224674238036221680829298174220621860798197137043727200723464659535963188623974496505669454742056367794214902540739842325758539378897401139581409478646694538433617227363033864822552034428500528123827744206093078356383899501146590774355751444444996321829960061275708179358728977432374068967803416414619266061210292307970707626315000351235693107429383685067164757433404492504794750614444438344268104672144761836840853236978233062403887482344558895359341454623603202631096561293380806547311399902028110050717415339231618537126224678146138703245509801626065686426890214790932004293128602116907695945906954418031458955572518471438409956497985277462584714340876550751083482988783963757153324906662143577507370210340928704211200056560771784033654183722097707039082998185723278388513255915407843806226096942825934133693270436473297298053131414410673096167498440524501223865224580163159731941779290670475905774711449587324396052040903560867749633607269786383362511207050385233066787151038662750888189396417820848864094163550696516989046092304161178546471108800040333177562861096097669402728598019472317127433242097596374209926949769666919449022650020469268773013778291584111777734801678122336199306707466885245484440238800072649836711310342917062136424156843313918053232383983078468123706545170731937525394324743353102231318881796761219340335058271096924509959581007125101692341639032718526132731465816895432810824251550267187134476525004805214087356728063163982776436973281937480367061490759085981747339946738833819701910602521740453589700326016152713271589647731441404281010739627169860256321696918143984628976348066263640404724742103943068890300262217919407490294185056643193778672788621514872444857040570417491743083668801820211916799180279149123365031855739327527333088498161734020418254440569737292101091210357772958736197407944977294083500388828156900799618885648926774368028577963627085062949536784319273455247935719907179765485929514896555210085742609479677331538755145823312735881427161972974752998566400151194369472948682330746237551435896015230533986496331433897402923227963168267620139539062424101002664413774030587496049713880031234957424411170400692461605233008783471512801605298659812776385852174133626209981186918938358345653057146829280758503052663152684412143145572569203330345681676854169401128235623310323455220016266200412727026684927816836926266791942439320137398200185642991418955464718939675339859727226028984577768619596135554459532721055935991298244358265061294663738057242475692460861527669477565237601695691691877575077509877316632375206719112645395824232996123929118615660776830180353162751919847202804452994454045882395557025233387374545070083797953533868365884599308144877121224106120864464121937933917213846371733319958318928844743660588628753216510072394367819660276153579065026923320200465135622260332133326790916912968206896304595976989601528304064458567050884821874068569327242388967568172502936668476374070466511317019575209348088040354641188892289787348206240433877593443377351012788990782745082720418094253843066182615519009334935552955266684858475485494938494967552976557793389120050509603720244080853334662123762719793723288604484467147679471941170534997419483368784944658587229478672681938138968282221403428105437551913127361355898698289624008368882129842599996702944503383544658955991070462640172667935141602759653551368815776369942044583995137647829628663131001221231534965839399461463026651772976511526811468953158755101980388687271069507127424565908828648868313976235679953426838583195080029733092861157150407331246858177025938607115915623640069410010572713698395553642613995001507855911638582456822041072917198751686674415946936002316231579585375014210379780938502025242931562025826376153063786386677390155167472847163910141829719442198145128316851168493735526463730798576431768575701484236408740789352058681668788075735862455978596131420928977008662021317085139495607926794154839643638696960646064044825882368579418247614851405354060662705787252435746949859486068833695557311397454945200620586897382572493191047700347322661176946901552848619336843851237375520485128070259328150932433696874607136164590619330725124114051944408510453107152694912451523749776692224397142477111739160271001055661493257893822390736623648614862400268263497424561751004005831896928283068703198441436303294281620983292409389164251515600756093175861284494043497224235994824226709698917461917863787094372023594255212399834252267422936777442893986231106470680422080051493723415218391429320112757538538152722308570014027075530844822501991820874404857371262082276060042328948543302599518455335980198371870313013246335949291371848114991467063678242040592349751000085649630969728832751513083136617133164475700823575348532001183443076306074233894249336445788755808856138636225218959783400429992989436381421511961005832721133631275549113641226868484408007284898058005197058362236770869886182300061523332360237274414046733500673667538411330822614792668451105454556192218178234854687567453892043600237068992115945877699734273688549462432595826857808760858752097166448743979126536642225144766853882164897991219139703135886522295432375281686953025665774373025556138491930286406006798907600465458206946206559399603295541764326024991786904949110480071204024813493511561562807263177679249625023722645669629485182963500555510003335448887796367378236138310691157566684115092107052582867873880273394459968866636536467871590867185180009580075210563577153824342282110770314631151974145511413151112232582017775144045997964536000603811954043472225003066247455557263394762082853850116658090037261991247692211882538771190182621125886615683314903791497925118251236601408921425321372440272474308166026376566103285492314773620130839791355348313991833920577761293186161487443714546368334266843700926550269914013363603933096481736261401808646916666943053625645047277738712426916089523675260346358278950869126866196618323149946519669426092399385520071822088538968327620951347854373933736478358464833341988758379440954439546160099695643379929492941368487698245794174994884303415895408845403336262531882986477376183597159377008643623592744228955744851179963996057437998203792488734880620325546390780235577360282627691738879284350348303931706658969021190228577090613214548879403331887319146436620250981113501638403068994314100847127956423998146619152481508119331358228736762915421760355153676599027887866998088313007968660592865811707769576845589411213031205772873869932186264820028102066026067911651743403664004162278364920630216801991357759335718017897355535376875992900410463543711577972110530813339952464979263630750562505388948802268679332820101592290211794529137334659869207531837711768969445037532706728557894994806768360107989358484976663557718022193801196136210942917405780671537338138341560189293146145018854550800490363261289124650531215691866178661123946688832836387910091158318626391704067701909442417173700506691173895530421379380710863913241518828902128499464067152291584149084550831801244343608041746464087808753602870085445324097573012361069010422206760722613567966626449015641', -); -test( - macro, - '-51676101935731', - 5678, - '114598568890558892351277519655251349170512457301108169122918046980237508383487307624081510756564677550336178477302154205298849988621620086922824241203952845169587118918761676702275886803533985126048599159621880798222780212304246817740927997329598603522333259993676023070883723250177300932925278631685866750044996349161018487418710787156824698743699059007370890842841419231416436426583294134280327799008795618556337681789763639042135318458712688112601941846586049438371804926113126508996078777819094310659599757182791807946793330068376689258887811689995072195331087218152210579989587318167100041773383622122477291943850218476496927044272842237554951357422835645664516760841149829622887677523325405719345978782256416220091760753375551941881093250856520343277787117543740369641738849743550250267305042707228709682744788048246753481687183391246480490101912653586013524077299683599506874945043746289984496657526568247754108757916023746860823651106704947454023630829841108532968959604789557821034558282678387782274892400435740522133769190575725840235412871894976415960900858952703549298673487135436478720837173606603965003749202465844411925396601850697464037386444381718980799446621464654550821206321596000370929647608427450678602369409467488634567676260749990886237210425012278562172533337907188794399372225626872733254924000975445679212294865582779159284739536067574648674948637306603357526281158214867606477582551408107503527328338793768794019922917887582376894908153461450324195019808790951956266885107461973925559489970262966079308484289377245650607102408136209843678657317031621605407118233165024507780188477008776626376774732469991901945525053633560386998290497433245057356518070213620275700745654781100039839338506451450577013486892471483552928409289830016271158248107951963293890564868178813169793288638609421552999187733984144553406615257602536512368045676140620190929856992488533649322354718067519310329366233012095782513367770623099210385145306068882019668219811962909945944938303357412007436455159207921731034641005985972731076872404481351411053559046816512985501762256787820371273853296301441525251524961854980951466415757745095790408750111233498938399843328976884101167576106332111369898329073992906185716431137905217592404057225277504661400556077285374257237710751164948498254228336520906926692000699164318088485138209956632046211769172737818805518350576876409911238994857621609965737246540747228915599832803850235006646505920161663461782710578007459880127628658300436718162035702759857413264686037450843066618529962777161180564480610570194083990996868348589497339967832525631952114004244381394862686005465286457021469621822619867151692227701982207711240403754089139160258204655040380941387512320543125847873280531581254727837191059980870831091122923417959861596435814654220789276907248261882603123131749272763005899889970210586720440187361168097472073369327028087807891921073775186041480435653913681928394558065224090076679384591070891307475995293653429635959202548503686994214508788450093243004124213718944072946348546273490462900925735733454594192759136002496877104912413694566063277128709834235803795521599955020375102449787917179385948650401410782450535088196592336719230363010532216782360997264383385827672744353408971592600267691136637128647179666091641390767353626655629610767925329336924814212570169908132079298822259312790776336192539171954812142459076936946385158760440753962659197081868092892356974717649297318187816581273710002222637822422625907248946609177471022616696078166962638903351786881559353388016022793559059422611570772104441502159519678683680896440534678482697361220573057326321241467487140124612227021769519132788278891261578500937493023431494800715316974572061757711388338850673314696559686053949631600706217179936149359062760652855148968218517603478406764660079773518392515740066557654365463358812116383920109518376511927056859803872276659655935142427958378419267026204993883734671725916631060714088945987606306190400841739343960163767980632636951807150346899488246361701225858275512527213850024197265932454942520600005445974264278700061722886358112352180245501375011619481895903494024525948428278732709789878138429844599672738323876521649110855277792436882821166942741738868002576408435397753753580116182952236210916267829966145925028378437875898705477022525397608430772386789943421906088726337517286361167325374608638664447743003669920203279685500192102212678244500280945163720924806258942015670529098264965727843346426114488713290334508104318728502382771728945872501553223396187212916235118458655838036585541800475260873636577479118287025217430116350907433315459696137904514955307303089701947453368286386613774098275500676250943657017383834720061347722825211956235385743059349300184053076658159489552304525616565099968774334572359425467321345729237028949216589829910496148348266399952259506966453084807497614865786568010359718381755280552030450357482091573325492727231276923993244258612115652943501643076670607096916922788985244717748167425031600866371091539018747314619844176434458885344303041217826099156483212620631712885522804065144269853819342281878739269471469710167419263261298426536005724710899328976253518828717132656525336398408521558604682092666618949049723934689800847063844761671282296978918952554214898709123610631472079549040944065036271515445762211638184670207178784047672153843595557392899022269520772862968918684932700339559357972321385437515253951979000296108897236060608128673387896445773358382692008138068938089087965375939805087660261553154170365883140110004255362850999174312472258828659845801114248663995523535651080385407122403810220614699534394862199070170516370529573724426277383249873364882798357333666601674798052228774948816335992020369901620508453181317972153011582161807177844672456985443467954652113777013601630746866436183732233279064589871750135148960495813527709288884229866780850817394534670003825516127760071436525331020214654659944097612888206044199184355427079633744822550780458499778237357353947422296038656940932241020563615278249555508480330508674120678052089502789507188213274173100770916834969313508824784364056056402134407244119638598785990062688861144654163575302227468770905464187883181134822725915136640612107272892247282302709032318098895359710245013039285473099721463792717954735326941637258027020359449474131956608190956922971406645107469617185652049606430376373658432400056414731724407005001708692411063413271177513212657905468790370163043951258130982778875673922295809518571866979572550249035569072335930443175450876647946083312614092963535991789686984682545283358632371449413497269427928750522476008103850277182197862744717478903974777451339726925492684847344667201465331748104805481572363883196797787778153950751138898727728375184289353676704124928349416752637531102490310279351764714073405197836749014690395282266606472002997382187295402889448513435174099451342568509159453242120888320839737697049616714431772174331671258229322246266889685257316038839337528724509464509575560371587287218382144584572419703181295877602278221106570930586664027065311454892200273818659381311150404756262029418161040565111664447264252108585981706307591881047374954123445586938599411011096620619274323216164888259706949545584064116931697419880810232135950719390350713062967911958144149654637677624682217905237402682589189689936992002791828405957862158911334297099480655817390013698092780805866900709190383307511190456176470564094830491741371514412781382471608566016857542175626271815830825751173841300134557318244910059728166314923856198690466209098544666893459074761870150034083238014245526074209050076925214228138545561830243367680472907455390358950492305796631316420731434125187536810546887612854361525903826549660077385607201642040850831267699276814362171286190066768458981549632902853741404667094999899553250446338548089645534133891269993883172431804704263925215719942166060373843805638153594804487097561950457231382850176704556278355177741960834256932103041468108431421024565688930277277827204256767781041934083737995080790793709338041932760953129953324240749245316117068345243350389721646548464456799564122538803508302280206449283869830911336778221946967418555187670963441198271217790496259964780654563445592505556519078267175564184094236772289072470230033320640614537275025449633888698376301092731992965463666856043698716302806693885087426713749261988769556429463390046244837567904659070225420983410009710978888428520162826187731324371494738964988237894717677430862117281326863913479208553025891950712021033737482821762882285969238709814995624715621242460823465809517565513365312665098952226387532971101201851401611211767107556328808562154195909528062579532668678860849786353548436978596941540803973584469644923040177756384343881496136104278613378924581962143710807219315022833887527431763513942927784402594506818541221504288809623165972198540933669494785758163834650407164355749575134198337788610507044159766150241794499149571096051559220223878817602912552525929282957515181558545301005606558272154807998739024160863626434649314036466134847629318039975100093407373104577388406981878656175843258194717523909092875616040477453623785051493436611595002796440848161148666254022016142475461311658387441335732482745839024940608008050016971556249565896984096952364713943123112125591933258703693851493005494192677788993225349131525711396145903045479052901233399936977821783416065979989065328839546014013831203847910851373499087681269273873808794681827032455802487324933071462267161585550348497079770547563318071210788547323150873537668915925365865275006606032948938992420253484030285899801624037645490546643734003092212092762896778094831579400704783040331797648705647138803684988666221643282949518185294231209149700862655885675685742587977247470742881671606128975518282142621174602709267031158360580359120233235473997243785917055987801766020914435512416873713285800875063783960692674329948345063193713090346106430960233900220471049512359484540660252000207287048940904649627356855235310748631701290142334022573624657571685050543054539462593343925120666965564304346218619573761401243630815566172421336337019044921825132743027076074431860266381081919439461501518228192067428154599552061956522454587058878725629423271121973055948964177586675025613775553459402756099732937841164187693906160490012428728615553281749083877569856034002578003805619108603440019554292851568931421048023066958052204343883372931130679073105823557408875100214126784759475874110505599354169570696609784560599958215019928598013718187402289676120592754363058386217976480889644579627120147953445090187876503616327911008391800184735093377883625195033462470489375923507822652512086242908850264792687042789386655227831819214938281104644932640292609019834942621395608142214243559409841197661527772521605594271433534022197568992584336382425215293816118135415822763659169694051345319875623274091939751368133997813845916207449451701850545644437368283792955041875417825002650183812267921554071554148141810545261132326348765749042696757503149872630966032411848943742788719959766685423336348908720532382273782455044811025224688005258724128117375301877446615463103917254847301569577217661986908844517236064250159012321706048888909681124601158873187553237768719599661206118675972473809098983711387501122615038573963236084013215429847727184258992906237874964751406104681742937670985077393504140518585378445945934961441800684055554038233956351167210957484786967705794592308352175762541752214854817124986107384580167149061884866946918670005168162259392927744148326558953622056499756057865517495516987090419182627739373939985152189775038553115538646471075934221909696916621433427020321907211290750366847722032569885358324304825748519823761695735069483610277833391784268305687555417321060681254063601376044472764727209479821068239831947119222642427588604524821548797463869612449236554848366936415329635310834448639523331032214535561193061625240491292472959421415693842751590387163835477828542899873873355067539845115993799752754206275423338217062076744831694087595991582736550683224860678822779524670167708708091493709146151122212285091313848566637581973054913102622054948327816252692080182215324465447499805634653027067312991605368041127365270645100770232874469104024167016075695806268258050422993127312933128697504418653934394765893583568834878949604860449521880438659616802122657499696711371950669696088698654540203231615696906652300496120780993861295366389568887602126999373711575248980111463126737434199999923186123228140458802135764964497499211839068795147064258579583962890520656631190772155927073711649314137404718303647113380977808317817846980386481066453326264620161085488324738434460460038866634635020866393862469381723564361661779993116516911788408702482058657042742027085322886734485737469665890653383965527251028179320635401480247183169549776451102905415564180956069929150480364980253864993561144620337603341026450280648329108363155941423746477676441226330763778143302558927254074511454873470596647216773968167693426794670205504808306963783432036244979681725783341795616208450760202661124160076951242290485270351100016293179519729579532961953093883990623843703845911016699084294413469034800124849706899721051849479889146370628964206263232509984714695180238067877770898591308982070720120248367443358203058594410980465031081259361282748294276045466637842578800793537425693971319078319720309483472991281827652766395632559627448449322724455935973458554816112349560437316476772468508305512367513982203113683319867051472957794682903830326933115041030819168485955295547194534592544854770444190167625774242882339856600323988117721872329621119307065210242378471925603855682602511342933926964022027574473668074767250277614350240898114804833628233917590283331643902799593247663848733995782588708639967040765878261594144333897235212151312166170400673009191876880782817897642797305674083214304116001846541558880139343876729547122660589815784784823845573389037426438950965231475933765920983976255357185318394294462939870923725191627253724661104724674152692069584822984507668895796308777450228162744501914688617738288423774855905509153854844523303840957562160021954437904572106375782764718235463296636952021626993854683250625366396838736958893686683145675963239492023700157535671554883718959215653559018684790556050406047348053882167970909777535677010769091602244371438842557331819164644414366880048931933080199464775719509620992644091954275270680288884109813652088838217429569522796724565190899510248605280475710488565214118916127660760240741412774854958523464875335791354333554221114105991785983393823020076734058183927249261932463022507518378417531613595367008713063568456526553921055526758039628801741635831559596552015920057728581873824235567176123583511244661921620535917294970250780006254560913313662765305807933366774232072453360650960008438817118037078045098657774617616105096015011390156583453754385678396291801322575711617682706241038506687001234836301806498523163010650449912433471614658213754184557683081702691883198005157762869533426985772871548066409461102566074482585186196172527568428897050456306066648582770036459460511184764057517774896339386592062506459252579461592560474665528416239792702809524368229823156443879848127098290936890568640344899841675398255520835326531345996368545121081712559676548972073976307843066272299578779899750067849171423314509815187548244077378329796193933542997364333804995452518983295374300579841041477430234285996531274115737469223410436044734098218596575261885585549688086844423068789246324166549747789727265524050455962780001580710226770900533745079189013929659478693513587745539578848213377469358275467176678200951122297705749503306698574297410712427125825591862363276134686251235055301972061105661224639007183964902695034424436437936253659197166818614429825626676264111882581783852335169138950280191270126993381055654149481441296522956835357856587690439122868336488948939918429473181311497573245935858058048846043815567877289011167331444931953925754671240134069623866836792786186011879777990158691547401988209088233436138946304596662211246080716963940999419458347032733075551690030530582476791228961785738428344668271954394260631144673445131619681560910288236163257493867850591921101601774216283724826035337528992934585854238509545972201306935022486046021526186153884783616668536070352766884410433501411997774544944294529752318683967218547747054919125920723787453768874396140732374376069661038491913390225584336932342777315761255948878551294079902768864779706744004767497971699010857817837320331732586562556917485670513125539936647354410777628785488698349835379591475098154799827267570479952391820096174179651670850574284042676840011853046780858800494312309921469703542619592726263073590976462669364922795234207666005686292826903212848877481605826947453296687451059719061958356539720636942722901955175023641714596609837815361932183405821894237560762724700527878714340752426908901818205438166928697623647899633610409766731686872645318577714032460894835086863906305213902132263709453953046543560314104677422693777305934218298526734878837051106284119542143667788585456657142746665427084921846682769309335227479860142774263718482271045462438363768361342074577613689416306245388036366588228918750297891553343601271116018104061166106299788463499404576467234680999408128685491495431444663757432415240164158488210900819745907723117930120695685024585064625587827493034169505631321361629073305032453650015121172416455507667013522455054423012824659556913170191784272134013229862167933357870440372597009868509136667331096909772244774497523425649971713882182557907497459362685468864499900443106554956344003403877683026526745408126870149084364211072799881433860076306106247851979718211066568293397639539451283955573658564108776175764110532523449193170074167594375276229899521780717952518583208904105756371686598266057406647087463129407379439591678526118563375375353708424759178126712588851088358543556455828259242229752207982655534691287505400579846562914613465114055818872346386918363454946173595045963724905520868541270473697264250446046089642748190999453356935960747546554692305385529475044104740895111094053981210797991140570926872891670773814468169522981197767273686316613791050298552624472953601064874491619431515581298483094974434200152544999972253615705670333910064258013397051190672327809649449512231521002044431168670777665701194943318920142732683570462533039523306263620225871545457775764770604929953997570625951936899909518438534435970611071611463871839879758260799824991623563429811928499039440771973070864273967278618870976632376075488071575461144561219935848976261991995743418626824010282377472581361028454622921441883252823380473535980635040675347266665813701114359254871281962513087998501938848746260785427396775049514168562612073137570353309933421182587431285208099490235882059772793358564991437202016800963518589761455026124188003465061263343783842908952238749299315855490241309786950824004062760976904187502795945035840704763791629996479207882802190639214588281672075545825412562820832491492193486742631064101780835395570244051743402738881730159768458032350492340983945389655058528481715594070179000970782625156057915320413986266019990172337946416918557063800133747641604183437713060443142402624891881249459030992935793527950409840201343706778667031036382270368309922120727685173156943536928765918297523291556499898745165164935596868942828843358938043957961029987646769997740718353298902113509786945580718208991358463177836638025806577481206139581029605232343390118748079783839195843230044920030000293609262840245610181309358224141510030238251805707053062432073731984040628183721390347726139606685474826304883630174052769377584217789247910727483325946473633314792666461326212634921565119552168762472730204002086252124424937891781185484626212876955436221477165360031020231430386214870054108295007899715254119071513260472470230202533983791307938408960011206611455326096801350655243853398472597807466586200601253211741913149771316966742972424796953362829778527691461619646698652901365907319538496395153314189223850326377266970571724729299225616643375250610943592593231827466075999846471798767809815413033084807935411432143738782707086800700249890892016781300755462774204025643372850935993536835930431474211275360661334909180169369108705004893833932685971810039967903674985151600881858004723253102936206563045825118090129751111068119272073957023228117535946104197559484455044224813743551400684035958704844910240433782794543523046179137502988175588334343929604010655262873143788409800103840149709367769678272389350632655653061526909944375166865821226676124073718040169866120459345622225584107723626981527594409083885799002170436455111357966813110193233521883524236223930189338177788877617266977925443568413998134839137304794431773484057275907471161083605792371548269896511232018878269590877998951467990708359705970388117405757636229559483770009754679879169950634139569036627493168743252032958240435946744381139249473095508589299567208080597578309780705860706366590038525752672682617991285144702659613402563158938705017883355247903759797019472262560188954212310667319942679244018502332473572330860141285275142567616352011441717389434820775671752035498192835097210704346762871785843394366619830754655068315068021943501597109761283722605580646118265029950836645428880355482809418017207519930746525482467660956501946286248673803148678778320154527985484392151772657071003568822396992334569447439518931797472794360893625913323930637936123592307936959744134660419379541520223856359015281561124867120268443532762202836358157067397969523277941814805842994278790015196862449348685333746940835406048087120468705315737810814851006986239662973395622981892417635797361552255577200093154926399160041205233526050099942113585424767102462092543693848903032320176365611859456909911464662553394222492702361972492589328743134628042819438985147526265136537852840491772207661691558509954371067469519662258250666590165226871146827599529979187274127942586949484821499948977145043677342942737229631023377843981185400933835831423767351371476191843662990866109519730716132126804072070640870780628344547744782396291260010070383315973397408134147633405837121702299828479485082965001168058308660534087429710071643832112134185681191355797031035640660674171124608581811772720944526748929882880981531600483484334329258782080131950152990379792064594496526209604646130807483497903997981366660814109367081501493013317987778423970445235345262451162417303194219408843842138074967028470582769901836866713822445861935378961772248421345450181825317803057793865331808243999032870740776976064805740571853847337064834310551096634478336669042763136704807586517365797136211624710257953267355206084531695186978286706442628626395149607414222118992574163280333685823680906473269108560879550907146951083501973652650163620691173614434376022074343663278172616794365354028350879611668170977299413329242853102242731460245981931645393086566419168095714547735636341109457537424127013466092829987029469225005609148935719219627886553517060926819156103842061184103249786722102357857380363966877195050686029417164805540813780785634440605334896258106006438094052913691329158675367290141201254618676773332219794175088755775479718673883939486154200593603203954816323103020616423867397093710839615897871898114553682658447075458783118190023366087506978374367440207438924966819405213686487476793825253259734471325657957108673156552118127808366008364042860528540535034950176612182005881123405988511608306144849231503055132715499943836726775291396811671741107037864808220275570128503090451498085660993674239141408137294509508916040084880385126052374726220832131130118877249390053885190862016620304127338330822376885177520007162660545308168910551027048206864259306643403258146047122775364888620470370521404458837255123240697440311548296630455328683555320575028845668660604051631191978861891344050450146706574218145025744150912515431643639763471496084616921691588906643318094161772942444267813744245201380387655455570994259537781139991672727963630401572633729986361556875282295744688790419550042115325815066901167830915280249317272239032336428833326465165088029450553351265755331884109528200193953474902952152924946185562536338925534826199411100653632718279533909714213316643228976513653756607679272611930525331509533360676882289504637968260788530354999017751472236832783844855905587554729452514767314824700008649155270346776891167316609312798908304391728180382885705826358462049930067611387677311125159653938052767644809094689360554558540305110248935812740648171186350593122648008331898865084081910232912772214306873277181550887217911939282490833562582253824958566304651212513938680716752798136384903060676496603824306844521424474974798402169651179277198301900928835877874551786318031213157816266052352420958386807745919890178528945692073978829824318254828803767836945769264370965570278955420236563465318633087533589358061430931666035989509802975402163642667940061694906307745403336415888401856273908779094219374541395289779919505811512398727811277052044628889676576204347887155453152137381991361998780634451422237710883316724087265275331735893833197129258839234716392342611646952816033259950054307629463527993424446629554718055401467323011537168845330459671616005062986429892433717372769708986976311304603813694466876866558852113339228482279288771725065980107614730689732508546319518769065056680957782914367866215918590112732510471009325001837807792226514983632349787121937850873634795369167442047937893608233634609666703704587131733723929085811244615783860405178507877859666805690049528538712275243036223309707838878743093968440740186365488240924198311296922550429467362803938321202544305084030232602891812533837834720169281029831388109862088373636124595410033526477352125408960443495710872004466944740504181430539375974997235191384764262912442475167562557149784655839519095519656973612676149775555468394211684073546313305136429488931374979941004482067517955299494545191338214275004688648850080625425657255697031851628472826812878438128524708409359692881087063253264481220907184058301090967458080899506347453532002995200234316121374098161410900539135981863658581370995732911051446451138998982787447971905437800015184192194998890428219996377737564767442914336298428740825412724669981656100409516386221832151219625497417581073077338087294189592180026420910118672014596652061567734369839911877944565035730463100962767041999720431147498003871428186236484743508773318443952371300988256662194348824041466733754460943324754187692906063468991068425866078952725816706806990970194721942596702352590797837064926809786719427373172154689565613653917663261933894602724198203854026358029130198575484449317765398657516813791597967078843130547339469073783524497382496877243498441684162650928487855937959542776542381517702580219111410239373945791463335216468817891797159897821504141336134011961229585863213744116868341898479921270173994357042490280766042368231306294592305816034402114190442648210070915119128632526643207927399206403270502196136290923785508894091611892797999732479898770027343898906937912932694388260729491337611804903421576030209232881941209677305990236485778758568570909511203847749727139447140750017842138051158739164470079822994287470311711455580863809119499634431231542924995363573544534166199416944524373140000391672173343392584556167540657516390123765234814227550308964579212558077778186821292704585207362004093356520798803551721188807088087772466898440741018646115406804612936758076828507023774182209672664449988128724902414993501219401001765370672317191401925997949428670713449531376719892790107292559315329271665439517184073930078672355080717529913180235718999452728793715874798090520042529997304171394608223665519403070588265928559013346665409955899514815287087015895503845612331949334663867288844709249699760870154746576067740617109411671360905733205915721144812868914282146396418963599623786016511558301453135637971753217719122740923575115844689612181585533098056418282958853896584799967463642188879073429673984966106974767322904274930921304431241275791867912140260586098638979591977302253507591795249943499668854219091401728091291240324419097106670936334674554710470587846998580373319693822832186125663563662227300196033318571309952940878063796339388257833300085483835132481959803926226375922877243938995147684343099551037900344498227926589430544888103232468580078181742899166208452521226468017225770159292796370494628221608659705311860880457610945893698767024912686130786102451619763311388742213622180967440266735615377707064630432362851346787104938266503146626301826386009911001332410273267944348625003805191824863507525729321246269404084347151934903222130472688695181142909993054528914728385212132736819895913661164653395636100392775995046821116359166052147490259673545652512579506858292074086966566678148092233349090670531856554153436180220853767903100802098585062424675371471614926784976597351943926464759004842764683915776120276735116378854746819555607095002547606392301607456201613727812460712017149291083250455836242558225613747332670029560146313664626625184108408526435551075760616558918639998468694149252839714828173433759651731790585540238768981676874286013596872690278563046650509425213768568600827027602310874261454666959825912534982207381304504165906647669730083754622626706293980961379228599568320787109947615111949624856762702790577996604294851650710262744819536909560241872405354015195815901368973088718316821955357398270458847336192054118678494760800661846422575105028339264471032443221584848296622560987616922442031578568960816859233700095456702725652471996634621805360039904773049493081061117890447026080993179208164914084001561137279717964474457910822698800571370948730739574958519456023949553713352403879552609629342711187222946890885571493932420920963889812746152759211771233710658321471894667865836881256359416902697886305637566565270511589302949804123378578009588741245234061360202559864224187793107140310370774238991415782896268860247160087221743398632360201329490179060521461387097002495616922113269135683217341549840373435949057182322394943783472872058473593126858273723016989321497958715693848778260916053432892608850153974019086350180056263354802687994169752296797729166187979142462997664638545934162928193655800594073599868087694021711982073641040542199591089911339670166122773835431930957664741772458832249655277342309784943306925485650386363310465509184262852528967556488981679969063781668502292160178629319257109918089175245793016717386236635810518592787953993726687773744355504320944066168920405278890106620954397703842075409790585293639502140471672275176364054469159930595251498121123000632836929940035415174800963695560911591519351305097536056757497122738733247223334299439795964416272756974788281452938919543919179780495830578105176873022791010237618749182041436120814538747344362413981166492880532981408473122438956024899704764414827372680888359069383203084252482710559799658759140471216458496005546408675587772142479513233766094809931909320095433919996718551768358151589619518928107632509757299346855803242881198506144473507763036827161335579895814696687756797267492473907511129330448610059311031697081944370716803795577518487360501045579868709621241757229741722143091970632237708849516805918096189012758100919518522581134272755075309636666228932838080599671285408828093511202116961319849653073610668505654418211025373854469615185587420505700575888261495326807192713148159720874106763838858514416282535260626452514445199386144279460790374332488395321942092245696971633409779711403667148196791467370350138794216664252879537117245964416540374786812119366723571213640039312537831206990870490421854920889257491088284125753811729442672269609411252776690642554159109624124410614773690847589962809481591267437473683970316925645103066449528952833136986667526561057302938060806717705640347372758940854559438090824022934117904362128241289781935585414469223058188520370422811243860774239667131292667503614480954661643166021094263565562954650536478763836171348484291106790718789951482491353812912872996022446709005369204478525205413817559888660494002070759867343020833304262695786258762182090471108517478008062047916158342858928375981008630590361530730991533337103005007767024431048399846363323604547570763844498393678827412313502948266613097046593733067129592808782764829082779540513431895899823748129703286439371900576065601753249715130145551395611158446136282331860450878473803949375391163105048460542796053348711044126190850489694720890621885113977651566300965967733708467656571181095189043634361442938460620424892828907311518705548399259321673290854432989232402033427695505537391672297800738391325014683049620765825976502001490715724896015980764535931939727448433948695121642423627605318724132757699110767075442641487063525797598420578507881625322631258275225375353312907827229233991901973469958877318300954825891826980150082560409853023435179352929576326184297304876469260675852353214336752697472278921785590185472893192209568387192363535612736411827177789230687431274148917049359515220791900149954463891144855694570764248287491511795465355571647974077067810042898359708679406723077456168802915159985106685165278844446272185418039624433414989676529360733224196806303027701699401813246007448367635711560091194638564196215462750260469722895057683130186655197563435087042456745552261726792507936708788382778795714813046436130676422706429620437824366040216140317789120666296561961817276627472468337572371444709160465057566385526105800512406353089397311243525990809771719833722278531018522388436675146455281597431804631523542433155277652876622739675563673188640006742892639445098465242739506308240042149149884627632749060858136523029010127328467486160496136970964099609404485275485587599287991078550382891153951255006778605902787210807236763823509705570383045418472207043091603551691808413012509993628114628175790641442073599128028234496708954756607086944124895421408720862402696781696349037884497396953950073338348468396830752927901597524196430868111165262332019170855492271790130827789573109557139053285109689778332545958693287355659898640515042491550628028917049986801903913280115785942913725572192146862247809512151632511954616445305241282672393782775249991259990268401573895663033422145829424653742257468572830795144571447217172170344390171558138444299290663385049414552445567639181283014510290419785983701505834195674761038613042562189128641343318579288380854262613061171426518448419053079528551126733990801837900708461500681574188884795165426161291709564074295450881956626201918302402436945381093124745577171671312225963759197527876184346331791160454187021677119481282452140937671112699410475067112269611894574476316058950214818972540215691086743676782333339834793090049695579827352673705992602098532938745690406929370454895121406852644336817988310511018606485003687435377377880357687101549923752753870842331086890020957072110482921078203892582825430743853678938678845171550824421056075012746445684719777935620199933697201020688921671515732288023709159460020579281422206200660770662136186411119039464511246972567849083853953974560152919983727889703872145059312940206651954534823197197456037124574320069154489362428152384518561176908584188017896443196497458965211081852296712793505164224540578823521427317961999439433840947679261853070347008183355600509419881301091737467053884095017880299752423221585377626802533750299111687354685486159204618103044084872599593910681436894070175869895284548114007698177881132942381244912110629421844127353550884486951712261822154242410334674508400867284003116207597789041715421899510712174705598161680472160639854366218120520371025267080822589762082721234822899143897023722519527191182967187424707516302075467248142839624551051489916072253973677889265488627584976956960720624875569085896430625668405496389507310955276293395519901278703982054295957616190481642061914557057918641411590376116837069898283627310675729905679075315341752230316326873798944842338809064711121830318844994995728478247554519759647479833188840882272330805936564717875937759645466235877959356774680757359186747964855850779950002190153225827761646716858046423788030255771497227479049063699882556523239832981578690856832572914858098641904135700095112492548076201483334658215008902573568715728628589777880228112444674918240096125221488915805020859677852091654966635145651388632847300280396301961059638194991615057652714347324569091348372183877979671140165075401908204991585820352573960135268809787675490861799359172749390316567281411205233112473050152264568898538213889610052662413601412411722965122929820314537969307515359259003169193350947717065852529386538881686267170773291846400688708486999155003104663586382344290816318064759978010654953537866623711446364570626969502173544423423074929404208942616624720195343641583097741467031833905383231234374060924479894152342878888888587110637396276339544946001358888192005723471164751936785560384570786894012343324076324959874814196843505410918926079285183879707107430170210495856306080442455608822862122117572876456630741312672784076158322593594055019414285422443235678980565689755317999308802910505961137210498567710018536735289083212063487672806707334546206404814261141369706196328862821461886994687577175390043169221020130498162026839862458973943014519368318441838195560100295968496734198518495996314945289548715598718870583552621401683863581183106851205684154635910380524563847117217821212106128722162524253763046827147151974918777923681784807700970624766909477312166760595507462337125669968044357089923070482883709634106122062070766308810712735710624862438926613157497959226806833188459480017662980172063360634178971275611314406393895211433271861436947760659023345158492960047345295499295662853340265551685535599800744092303711269544719828803680436916119091632263364533324661266862974434455516831152632639373435575795104537875888710518410020589958339879959822445451353658029443025792509752253551525308255741984775779270729019138683637750829888081844708006890211552146344622614088468708319389319850769307851285942767252474785352358559267431807815209013706262561029595478897605034763527896789052350336340918526657057958081872287341591904736173950725836194473696707391163580393299902911848791441413850082003693596935427471422729646162077763129389201152696915172964938281148555040979580355711393742641390964747263809506784813646753925737960500015999521599040534422500550634111212967036120707920863177566166569229503234057262633077041307108981897403699595707664375223053442154801646621952674073998016018204114207792322619912823001873411899291943544289433976296710950251614937569204757779765928995747738757818760854802038762304982286305288261345463881107741394409631520373874750233139799838650413255743318875470620818472533845161123753583328874495241216906348859022307736592331867789432771689184631548324581181882547915784645287665908939251778029107639157159289196176127518723121751560070469290085609343869257334092947393223315517614003002467048702184847384690761234900833286623358455281883757151812237381345516686955628191314036123519539678665398336254286303408505084714763392222044018726750547293413234050365413766358316654410953551281819431995257295975108311779909520303889212337450841246936324792672921730951765343962514538205080555856311467242150053436496567701001851431642012883560394627048117888153808553859689392563362831101945847612823435569999360628749362849396263121141428978393706694610773760753498445233988754224335605409426064724465150571453306140168263830877100622522054887364455754048830624591098148199844437954318671983054725473714673721746781284214097106750134651020281137856143339404661336097397401255849460415338500002693898912492847012546892053061780546003055285372933509996259190318553322495887219489025100141803027682285498654701158621266627181173588718688738389808332699617026792423659913858117693296106288197971001919395880629554677187346338125838160292486198360147729979871273120571322032028504575690735750011778046083231651989085708906682400875964848727543577767320694907469192930438894927009743546491436041357955549348300042338360759281377236265892227047663620196806664771980284507347099402902967733697999621184233818138249990684015970535495278317959125975524991795957531505015611136002871680310533093786875108515066706678620823077849432976257275439747172137699295045174649617946011443989552460583705965135899024689374640564101925298778186797415025378969912635036062934209463477387146111182074864014263939109691429255035354418183096283089143643718609144817465350868728368487526110304341902202363658329806583404243426301929038999413811963719928900533075863880385638026377355762024440421846082611952343954020299294254318741900205024128317877368328956627168050002516703106370642969704283772358296461093955291187494644342390316988195849776128675653911509104542124861217280772932996221537953310962029452657975182251689107870392012504852892547316032463597681300089847160255250462914104176616050444245028613939373851574524967337186933259018554428928015559462061881262235852459856089108099770130466183985887436588873773243601088860550229426153384432008657567689985229925644560273502542282381742604579927654137058837459574794972575192961456785170540640531904771432931209781137337286211239818317844041106915878514399961654100374566986719879295231727712111771772229486027185802483882395198074790128622402561348121667919956756920273231028898988580958707002246439749981244065925735360676364733954118132106641155299199544857249592009103053430934913609249297653361487158248749289098935130229734152531034647060511392685477854761239602786254479061019382441139667288410559126176759142054940087896465268370081054931187899275164499441058030518288371926823323313797222058155222896466033422597096415435116962085378815549492184638325958401951721290473197241670371516491881467203347875585007359331254528344449459950467758875267278189820752127439854852566552803870490438503143232653957782922118685816688148722781734903296936610500471173522177161064283024894888579788472305995091180282414062431445897622125893030305492825543169066044111330888912781754024348338736557326750833574402747013630048297404805583748083230530028596408741040030162350741781079342392865246051725408625341045214944667618371021284914091497257188761924767939637028534628334759882175770670772289957481292738316309937728650022513231422234754422579929841855985946451468684350390314845273621075639131390824319325380971724618039332427557919436402942528867210146505840229198062530002639445641553444719681044247172959043190866680070064196331063863914130249071095131248563606711066426848149947420902504927075034868938069205285471610210028557331474791661084008529287736898562988280474609439222101768158060840395982029394044056801641541171538945243610104322534200730204315260865284828953604535787727385628812968114791370986014951254706844185451923929072881468774586758820306110885474794911532141074138864914763733541384283976740191875378571118515523438069807588777000827782446489266182050245346558837361947434377809680600377844482788019840369988901856492040146378437457195604765771763497148753529247674438388594397093126205511452264943420149474713408497012302647389453439359384872233770236640360026013633256865164883566645637992031106481526435623633931034222232355213509370961371765010288817762179693552242379775216656260241135497573014130795564397554787053584387187656853711857623431937857471939579985035081848718829777316272176681052612968630380592713032967004361608181691291430592912818088530249261471767125961629681696763811424116391066373303384993152768280740948118781184558104319987675542498579919858166065158389793255707776743744116436672753184816598112104831674522931550279998771106215597545399479437343520773636597563675211447481439779932609623982600338971268883683768790803057118303171340769493891379059633504014432705976380151918797310743478564409243233539718255459610193420711760557630156927018163410042030919328901263062660290810416055096762283837210531454115711704392214764971534200239720890924410613605239216073127851967270391325506751978212863009614699353698989489629129966825662563519386134716961129383146386288035146250197315211925553022512173302931962094722039477374774504846268505683930350343868458784422880640500784492844169201589431927903016379662303396527872095562568156390966362645360971925681857871968341995483947410283964766743270092620340260322997257237091573993613689320984290367200247030533720027280038417097783212839273035096338938542591727622575162362022599685496500554429222347884038006453190248400027743775341348801335215989938742326080054254247170602001952079080816650302245176710604093355842163642360723052540350943441654273802237051128416322439426475234583967057527446258480482041840231234842602058417412378587528062618463131988655226053150118765238820025342051914431270624521243139110536045516721557341224477691444072542250943379523540914610979701581620559268793412031737790984636977046879757487332724442490312397606565039366925463662967999702808542773925468580692839991293056392310917374429934951347005612307226284322964209030221618750098429366099194983439477136694496857689442264881224914039910670322116288372730289047738573108522450033816672394101565965048622910696973855813020101016596778492150524524163597858951412311844796147364899117621449468760602813472330721658608635506930727103404682194935368589333167590774588214751222713377251630553526943871411102693132298087279434996411605103626921829523837922181308665640485185328298412378683376130991261907022373866335460773339455678784703129263634716537532090282547777127534019418852120934212233684269568396133976431366342292873151938449479967788561358899533463702974267094796359284987637751201598974404152475871775040728557820818028482149140963098586410453529806961657287735738138755712151598174425380024951275335199558910669206209576113284903353418478945780694878129790034895748753362050781539824584920892084749347087235642519520452342493927793799776786136198617469969693126983224168201909587877154725998407004749212713544394340278146389166186340477628969995703328593195001704673717058025352438357468612946242018587325606773986648467186870072551528951891526255461310771157406650956757785133396326012890387635813591423184033135516070805571730845080137132045429491261012978403015641430817512666681469843066257060720964098086648402611312090715751833710679060879766494555066896257649913350023260836668751637428823100349524601403601892419159189925922959275820633937990644299249271169988339019515965180613573895432999894831577608592304848155696364198541694025900829134781366210991417472495148139315405572913400497872095116583163635740301688579861226084476006780263453790933289131487409161550962668826089637489553038837859879843790532691421980575061315224117692153481092599586056471601215629186621130434664996556516932298784329307022398027011414332176083277481254566740985113591763468957331875643736921355329794098131053487627474682120881562550550881428255655602726301461818701211939805917586146895437388795911816068375606614039394049767168461259001949273538210144048916666534903327280258028482616623798309398413700586176634115625829647911232227507375334923375588614078459209835676422299267049663923396700676273951091983057302624288416865668362779855525365118686744053391254580621393591196711448438077488551738236403307762952589858684493455657463478117126363062783121291423235729455410918637867035685633113782220139687642412165249598360509878714727491849673012334378180463831584187354582895646400179807708658382550667724914138565820039682009987745157792741850123714960764039841065734298623591290702110380779922504349890524389320347890308828719589040376100679017864219311467557598930026491189345663675214233027772264878374490381972865809240289051249348258334250741010764402699448241367513588990261100526633287903176928198197677117933055092254550168988385755711184604062724032969041641602920344983239296376314963817502741923901882100981471281443446703980599875657083621988880973620719138197772524100421922113549246894114245414372112090493791692600291606869049421927806267868540149608572744342888343192125058473363971742076638014712200975997813876869820888826654477230072783335769094726343439363924451093740799160365246814221521418251509165560016088242931176476666040166149409617751387959304000667838298475779617451435521971107542909535756971647840211114967059219572740619358273317825413217697042690085081762346191097822496311788562562031626726216116215298679994354658456828777010935958029126216060917819707341303406969946319555176649237050902062556966761241375058739571292436871898013175671381669805507508696910381959470264039318613075638568464398580077833659887720496385166104378193365458881086843156468468523490854549529450710965680147266392003581831969193933659362316072852675420800357125522249098898054570353965505168107882852864529840652677935931955087124815626428567901773577880059003707684993021595642820310207853594456286754132723969857923337469252202259735727997751116848764487235601899102596111514927141978064206334037406646670461524244267294399389563489619484717324536636445719285643430736881017478756148754273773852289888136125549801175894395271495950395640707601607104562785797592351715554623869028246265577155348990843423689483732331337719099850118433499218006218421240299027208453829439559447186342420117431465432792072288988488740343057267417723708067738577852233243672319230819937439683915440649582059516544561598623280971773789120893086121672269536624083598033868209624720281605641588278852741452020860395156344376951038233934553306218241725396467724828107444994633708693546367123495314361476105770109803860472148239644683473596101653816933207579295804239795231250209707489881769264862491580478053842336543358337010193843107143139943833585292436929169794827683225645488250493758065708204332690153429283252246824483410972045997105029219491200004356064388873493046364077650981091839516620395962650712687713049420813661020164790060026130112716818875580888149422706314230708204130100772098049184062203228041362580051800921206280742731510572822623376036459787961780882292249221002031736456366826421727834687640584814053632480791830200948413810861443283626261692032040972578925220311877455650049930685081104107394628130349553352694618261578823385706710078304466022726537115509158412710129375703385879757237284539292895988728180490390220496139617988669206437315385861127520716472864870732451423836516235084903022716386874198709556735053670824221685660220728278626961642949943462735737024852061880916852346905339456156753923289238892045090888056432159120268216479709411830925161705073727852182241843774144994444796800812422381396128011433956107925125566938292728894518495205656479288798467478295768971565046605743380817683675039276816505508751212423949926029841364819217401250701049413854705548216151519699389827283019852789171293382302732747354572335967904262121679778835809536307205684993347760735860485162352359870983946965085935681532501893160966722375508805057199214927917795853333092263437505359039352967087492413012955087698529172665198805420638824693085516459299213503601188841365820793247308338096862952405825957815923600207308796364681882565126559078649360912095932577475791841991368526488425858095470521872452183848155746479635949126054100759873565047420408657908196467861088860745823440200596937137469726554619440021533471197651802029945746028546114454400341137146234850866902640999835474619226352406181906965593958219260459751945218547186010136586725824330239183847055787095688060314095111184685688138832308190665361771520893357047382326528633906357935617076387165550366027262811769099959556389802647692621844549401990735569529998624105286253926755935055719547875890932694340554447107616689228089562066086569944905859544518038840788528630069102190204691632172591973746465885214629803758001818354722671577554377946458675180639189931170900056297193465314174724380797003889515935304761631926385152267377564862725712122407042606969044731545405432011544768262989326191733481446407893297863327714256422001628622845256022926722039032858852550966980793417370766719350671793803838423609435455646884754065033709502751899071375163169890856762230034353248802768786910964565926739703092124666704198303948460691736963253713870119591703313690617965257847769243951364137415307103859326650169756472734611428216414046385745227023184773573317555077165126936736741629792481292498743205155835997683268172359371347012456091212295887484642867877578646795751622965835785463864395557880638259410281317519825410588466995700288346083450655637106260214808311406178732561340081016232526189760751886271379564740782676263559705973541667456189291443581212424404676011914816089260905831619643542553993402039798670408163878137967461241701829503692199517679672763486035252098113450580438489510602779967538406778194913724886699243032503589895316658938365078639346817966446042366971598315102456226149656515684119923736039138700680083951001771224019777161575827820297993227494571953532246936982900599366416589787251517727463895146269431106027269854190552230633092628014821482309609635823553388474087969696520047538050162437487064672959995402543841470139970706134643073875937981889199695346910796106300932889981171735045657785459463379515938396509980647441968924682241853711106019941292568600206670508573236766497716210397782410983939914467015508129203700417353471801331728912556922317624644415889241609181001149181985321743941473620491460989210711065194784149182976559106558188134333708873913801535240126355571162155611895528080568951526554987444334536731499537753528195430833779794624656681766785270140096283044140898051247012255419499146558168259139756529674323772834587323355629868317816780292113528663119722680719024978280040818470547128362669379424806012577422038887191868631883448040020015452134369307399895551088373207616043579965759272959559449403269879855598910900010706024392636484042799046911831117069348975342142583017574911456602802451624070688915906429274072763654290623835166951367071267497654861627881666298541483065726588427718084629534053816735134742365841971731795029103239286268275708328610899135163422402889934113026131852180686527150505983759002779807773566223011788941689719454712179344607326254690287120395766024482256671418388078554228023784784496201187429256077058990150435615351155216101657438309215090638315321592936537200580321910657657215666815341247654573083731344740394722638474346512544521661792980002338816800181577838361703000507770721899400195844878004251805255464724701063911083619487594713834381627924257067711581105282570735802353540652641183829634997288735297250112282208477996416073074851093528870765045321232820222921439911099170191434612580973635919820391541809473112124075733876951153040686421981760730940392248786343513079856829965044538757787037942418740284997136502228750221662928279924265870962201635314064803827203966095428887928130337192039410759247169242739168498523247197273121591784250520458251462557288339313896397732661534729027052493515404201580059981956608905079272892706164790429218771081619749768508639849339364643058661360212160610191272076371006352322980097730083536900596908930188252920677441148336565335213544052062940677350237569694340838070570449158815512736492862139779132213211843388066176862669989419112198876291824452684702959605871999341982491423024679580081630979799600019718579349756991631102855467872079017699044841433689138792070082691245858860091100747333527615921285623074522312582760989162946865573374037829302178739225575289042659045727978291390647109321424303936944279972788242891964130377157310772605953533486292992603361085012572105175885943335595705321341456889458117518989992036681091968371021602143621382567898278967201088486661538826229576844449884230327889089656416829054301277201456616051237734474662164978054102538036494621644430726212087953103526033051131027386921359383088225533719150606934884972757665515341103897402690521343519506346008077717938429482549626794547576980199283223676534407717065157853712801659521185640516453515871565192484321804442962765733972699330046829989406888341627015358639514826801677079021155478293962619923778866000228101968771938334162366469804573202014667190358534377215482330962923275262634963671825984637003914633619143396330500521755888969843386922843589872134400996113166528653861650963770197465796117647298541079103250256973646631652580593033941058305941438443670583302078961092385000096028004387250797639227058729182855207638716095753795885220489180587608501087576665670950961102068748473102397688480068745397125317899151900803171836227422289946173194639475472087332607221032204172993718739866807063991965434685529724874290316386815414750536825089647609755324478912829208542640630837182428790314967707466436030120046677693513719304754091874591925748831794738661935209325972784637836372417065832634101495661541702552237720067651495419730409007777535110394473910436455762333458257497687020560780560125766474028996604483310845299656108458520836187635944075062965164082259016665860024741824447869072154938884824126520956717610359345956570059031363334002503160837760160190522749970822199550294007333039256459130986258366814988498652039570467430857270936255566922917138875176546035640770701881537448577626102002317298447304080275355918518719943682484835725447927289531637629163866387981244986227932821777092957191598008618007108755043196577493390795743913791435300045489842318803840629056604453508622889454329052961581308249435966212373719648882667006349214657094779879673766929203239990406226893937690672818422017388165317029813987140416820890222156353954178254095413385973580442456560445558499420284582912636669611387427404451225546415356155838383066957787260635657953616728518750757252485659572480629089199805995107320554322842323926689320663451184520268687258689886344606068388694479162354509096941490038433598847203104301976611951445601852362544266638679678290075412941302729162013553313728522646010957992606699109069616544863135068561276755095781547242671190932783722064505309964908887877840158912914910105346231151775487613772792899879678519963830591786250997836698271218528501056595898076691114631296567610559849673121473718916782416581126344147631655121086933981180869415987776601838722614534041581254100451763340221780549086746753938766610289735053241990894606197687789239665605165716452187952517064149162738755920000811374455502914943892262459729586085538415828908694331245193074260696566568387741004970586046250406779678496790295648201386486985620162529677519187045200318621917855086482423481330608007219543743506802384438536607353392218691697424857241893460152387618386782325153321432760552484142145781862136735387766492081605376589501268788700420050453317070218115339201229440765302660291694287227700950440380765107112761096963572158992801291875003909086676778623232366690994533299491222168137364267573039455654289904047646814229327801683590630142563153751747079457858925522910205111288353935603204598220411265610249301465496049605100661153637159888807908902323782288115917266030548928229073591717694655741521631460966838791102199409138425309485441867582737071365301751525547942825571779776968661573074132570848279551828767121886018701878619280272422103259889312657193875315049837541388659071098765055026282156387486107899591956053135772784100496825157507016394803644582281562465844931202245768097460360009083034532364442320183540873202417639221501463884395812838717474792815470457888288508076821945174144028105860328866061726727674515030087857289847427613927570162848467465868388369591904690837471560863827694337872032073339132310877824074716599328692954368440290176778939622098606562704309952427724800739407743083724696349092602202149637692306858199125713600548864386864010917928499351492615039593355117890366131905372145092198636688161883816483303851872238717415106454350355132051773548989777552757443255371566372474534435441848412809716879074979241665690375961387244267989469704939164542096816857631992943353367922943450974577981735513285980794037989658748077626750133198955052583318759656463244526191339847597578899938757558196148864075073244250467261088756301070340776077937405119970413498591233848696140017565253179511771575795275131945857256304538740165986955527162558693404651982237870681250364694679537863190584566503257017428760056979496904352580609209111103053294614675377385059624280899965796306324467850909780831489026318753391745970785291441580820547774726329434556660527022852038096530229629083381153469692319673185432212788337117250065774907249107252485740348419082835779774814914168825271376969001094340761377648487418731698243293622743693716904170881810872101742928109037100000977309557903344136643273367808231025012640831073700517532261466072965558652756539975841935786806116867047742157426598876286995997384905698693761028030005126905217313490141907445119240485586174004947125072513293761190201760157186724092851713785477603552145995848354307689575140731563893520272232436224697297570996577403366115446408204985059861276880231146593632332116664047060124406837360322379955207563026996917043872020612169132773506149751543096030902910862068818208029741138639192386867608762741997860087946363183791825619263211533747157596191757134157369834295405013020010499759058170439698811648143980733751968237686573164454534211394206136959587926718539689642312494935570859665860568612537475919659068040072420100618936747953737753705749383127291409003383837688855841053309435892404414955527379658360309647135313289366129538476897703162917189354281206164435348255552192776966124707287270272355902245433955885751207009741227994192134495378305063561634794407295832195458144059625112222238732508215922805408792621363851812950739715101715283572373388069309775291979566994423956314498349376967149231461962778062765502443563061034611737001968423504862603967799669087117588804859019639157112753414649335925988454052986607957770870482923146856099244325494894435569370404603972409346620158075409396512099348903782562196646067345376443663877635728814318418090231549113721533373625163581574526840997161673119389664334579356556456354401159515864788956168788481450985197215201467974181561001940631241149619657961920795580250374263473722428593232378725810430245637202518132904531251551627240821059617789024316527079137041828262423203999027718050493278416463558083739015666535614730630528564883352138943172947828201962484672894006650945217851258824311228840838756059704734974004156889921429014908926432337401389537678225680966329782263719847506238362967059541391051250329777158461686302483375117714795942380458251770588312881492313634727768589869682161697321291504228940601873619348996292388777724630285389255078462577634963779959329989151426153404562174906613363783607243267517210079578320766293154362152207280832251485579899573303194771526628078798007578233062417352061348072159821545393566054519332770028296707118564344742106657936278687268732675617734737178056510690046607762220209746122648008510436643666435541902320142352415694782992027493364828745928747851672282706320889132159909846882540327746849007379809382050344297894224907120550708900023237802233950487712523780018161507312354618054223609497536035163494093928091032767640336242711088275287685948003533785270118743240118979225026796544540327468208658559416238357927216565224536669218251472645443651889081645564816245005362169954201386198950135410692688457725430323102706392241999820836165265276591679465060858160505568568712438796347024605304900308450966553605733042168429732916370172195896437974642297090857585959129744911909686268599809774528624601994610190665878857027337811884181381233078873788158373359983366672234669655911799888726805731249876450737363254821569278028649052801255401131062341913855820271583117070719273865683054999663069013111249121297160457447041240423061246140642426490959698720730873511722072350750404737742430572024048268685119133667530568425561907620950064557291163632179554525056907363270277399640559645834440273363853661188000047234146519397763559239145260412600704968936012028106894549688440479900267973574869188916898200795990111065008878815333729179214937996646495852784883698591027255166736443038004395574418572899294370967551529143179055369802934328561669594406191593608936964899070486635648836640763029576597160034720166645043990534279613912479497024231544925793613084992394121484803964852738532840786244112636713504212176390740168740010064318423771759800182571206639184134636335947786714976994584189825206727396176883875524645479643946415113644023798932248203117158653341801005086972304051184189910711151723320637594773150678911124405222765005192822545537671036184314807662167004590802562833162356684840697492521011525880952899271472039977820122616771265024357322419282091459744940443106332422973501916691938329374288973886386034592918524051364182398592764975688780001997803671401869838010577270717330444418407603271989346719916686888680593245148354943447462721033986270080485900155124951082963992792987842114837857821508811758170325737210523836242819698681325151023148163454095321894993683800138795128096101389801313982043237028325779746911915430218574372464407978667515942327600656822134915485630059582718562671520698991302473350312566427091102259532338314893989689756822401425548363478786325343080669902177859287335109626530228527804055908960006937280662896796945405843803882948848124047942281965182397536936457929889578255794210593948378679524919234465908033421164868438416051929819069131125432441300566879775210550054157419483806784214653243093753518480506741715472803332755990227351462034161722520909347730060870649660727422118067613395865270827693082504392270738618254811116949038529595723094576904555387646766194045214126185045174967881222625225420294995105078164391170749628652025184869718810057932904459780474128600044356721564987537843310493494303165385746459512014483412377153293124606805820556680644340261399666836315845102022850213187298338640077707077917127911385849411484173150612304233608674207467083445888214784873006838124326048603420520398039994672066938235732542051375164474479235433550682373983123832947238416282024613236150041949833072908669815550674617589673248615861702017780769184080195436695753443836861503161723295315725658560497271219460777837509040504799004521018029935893811387189517865310399566336628995254428616900954602946642481835104052723177763215261081807631624720322398654828944688261281379543513838399159096503176110145561673340859375841223007298962049354231684731456119013370627451653372101952784150843366485718683154707759266001380413461198030059470241851889381598790912932175523398760753164627792920260871619044331651516812323419790246774100510382849642369445921137356415332559100571402192386504324237600586223716858020906861290616574468722975254000616033200134525382789948233703766721713913420053378522189534440356774167756989838340371683053339160303712468122195094451323769643603060107933336317574884600660754013122975875644836292687447653875456366671633406699749727233770775602930171119873713327502029649301339157436902586985805804661850651842865010512710599579744907900725568864758808468315496153957143231085273655909832339900927873362328571917762632399121621719422136842073993822309314300099352877919729663183063706089857543103711226019781257589533875565388292807852373328379571498654743595708116126805997489585227762613411374287400898540454081729983600454020975504859445623078574230082737441934713309411334435977095406278491948107490251001075326160260816166141665828764940536675366409103075438140950942363295087616474038594568300076749067398262609892149434246290522082284867369996747369036618212558758764999033240531377456820933035653514739288807506785309262157018155354164246038618753605910751171596544451629138375154996561231768056352944122861796274432731602355764359001440423701221314110232709724507824830537580539309136187075390125804621374052404104186962215577145031687226391307500214048177954438873320863455884008371509806523844996560156955171721235083443685969318160004631899389556155154887502954567874337030723431693153231859698126685897895105095148228879264170688790144046095670747756454596689425959992788755978477536636909986217025002679023725302120269168121827137745844016745136986531559713305374725826662884442853078675832269357444922580319812405402267749674742781956841448786497782251691834976002692470785895021703704858388868515265760165621177267080605919982230358195653707487049616510340265334858744325169430110779016508192911580225932171227930158137898121057272065802163804143176177861748042060613560746270301387882517734888125466322091023046199189071897531864764481596203251883661383342557380251629906535720631765398761130171689454545284542849138949012752571883712193005628020569517371873637657312815325305329151583778151502917902733190305271744684958622121010306471264222608732792916887491000707158866999254047913786054611810141366817747429490945735777114365311619138196776056638249387208249599690279274158972264263533482913699417066232424301052566108557105882321860415953995261011470246610385777123349945013365720795738329033328267790338461440694253915947579607200765511873466671258279119860920470033646635678259287228565899281046026195224102321794080074560857019502214981683804045378001236533286039783959384004974440166902266486137702679291194779601542349226685477920055280270194687371379891364308309741325341794454848006333434887621180433722346253849620431677039433650809755697980501277777113845268685091187424823340812151151597036955214920274705302810590187488774145471376334439641472564400585203279952036644952915857362994275837591364735007137899752917263254850243740999519067606448557348572716000678300808919766778877206053237007230414810898261174192999230284869838903138569158526989803738366062311867394482801934669491046627645436363276196627877141926295125717141746847349260139498229621952941926164899210479487462540920845674239802557539445478424605466878288948565437238163965174286067026364536764787585857086934460845630429301475483163588819083876568053843919529815202317165149427461863268394120150501380274794164226549074722497966714770269857429653319371853947557581888330894630187929986442821810999712432279880515190220225825103925627914262396261528127570244033580516736900703944157759769468332776781478170997801067263584947564578699956407063202560483281763769954234650000264770866320237533750709170825618178829121555348484981912976077434644897683103996518259302203185739168355670343119920701453229307854524542846194775780342354148147108371829689841186079764946697999961540609342917861302618236089580266302442813911419612144783451058076754515595931540231562270809029227064151150119300956423560999465999653837045524948746983692965835699733590149297182040483811117450935081926236794221159650071490425720958495747811724299488339537170111127932294679341722267132041146536871343639598304001759956917134651127380387343487435851780856522271135939193895628494326974660699269244961652914573600667083355775273620390457210060853612580746188269631693582473145445281407145308991224674238036221680829298174220621860798197137043727200723464659535963188623974496505669454742056367794214902540739842325758539378897401139581409478646694538433617227363033864822552034428500528123827744206093078356383899501146590774355751444444996321829960061275708179358728977432374068967803416414619266061210292307970707626315000351235693107429383685067164757433404492504794750614444438344268104672144761836840853236978233062403887482344558895359341454623603202631096561293380806547311399902028110050717415339231618537126224678146138703245509801626065686426890214790932004293128602116907695945906954418031458955572518471438409956497985277462584714340876550751083482988783963757153324906662143577507370210340928704211200056560771784033654183722097707039082998185723278388513255915407843806226096942825934133693270436473297298053131414410673096167498440524501223865224580163159731941779290670475905774711449587324396052040903560867749633607269786383362511207050385233066787151038662750888189396417820848864094163550696516989046092304161178546471108800040333177562861096097669402728598019472317127433242097596374209926949769666919449022650020469268773013778291584111777734801678122336199306707466885245484440238800072649836711310342917062136424156843313918053232383983078468123706545170731937525394324743353102231318881796761219340335058271096924509959581007125101692341639032718526132731465816895432810824251550267187134476525004805214087356728063163982776436973281937480367061490759085981747339946738833819701910602521740453589700326016152713271589647731441404281010739627169860256321696918143984628976348066263640404724742103943068890300262217919407490294185056643193778672788621514872444857040570417491743083668801820211916799180279149123365031855739327527333088498161734020418254440569737292101091210357772958736197407944977294083500388828156900799618885648926774368028577963627085062949536784319273455247935719907179765485929514896555210085742609479677331538755145823312735881427161972974752998566400151194369472948682330746237551435896015230533986496331433897402923227963168267620139539062424101002664413774030587496049713880031234957424411170400692461605233008783471512801605298659812776385852174133626209981186918938358345653057146829280758503052663152684412143145572569203330345681676854169401128235623310323455220016266200412727026684927816836926266791942439320137398200185642991418955464718939675339859727226028984577768619596135554459532721055935991298244358265061294663738057242475692460861527669477565237601695691691877575077509877316632375206719112645395824232996123929118615660776830180353162751919847202804452994454045882395557025233387374545070083797953533868365884599308144877121224106120864464121937933917213846371733319958318928844743660588628753216510072394367819660276153579065026923320200465135622260332133326790916912968206896304595976989601528304064458567050884821874068569327242388967568172502936668476374070466511317019575209348088040354641188892289787348206240433877593443377351012788990782745082720418094253843066182615519009334935552955266684858475485494938494967552976557793389120050509603720244080853334662123762719793723288604484467147679471941170534997419483368784944658587229478672681938138968282221403428105437551913127361355898698289624008368882129842599996702944503383544658955991070462640172667935141602759653551368815776369942044583995137647829628663131001221231534965839399461463026651772976511526811468953158755101980388687271069507127424565908828648868313976235679953426838583195080029733092861157150407331246858177025938607115915623640069410010572713698395553642613995001507855911638582456822041072917198751686674415946936002316231579585375014210379780938502025242931562025826376153063786386677390155167472847163910141829719442198145128316851168493735526463730798576431768575701484236408740789352058681668788075735862455978596131420928977008662021317085139495607926794154839643638696960646064044825882368579418247614851405354060662705787252435746949859486068833695557311397454945200620586897382572493191047700347322661176946901552848619336843851237375520485128070259328150932433696874607136164590619330725124114051944408510453107152694912451523749776692224397142477111739160271001055661493257893822390736623648614862400268263497424561751004005831896928283068703198441436303294281620983292409389164251515600756093175861284494043497224235994824226709698917461917863787094372023594255212399834252267422936777442893986231106470680422080051493723415218391429320112757538538152722308570014027075530844822501991820874404857371262082276060042328948543302599518455335980198371870313013246335949291371848114991467063678242040592349751000085649630969728832751513083136617133164475700823575348532001183443076306074233894249336445788755808856138636225218959783400429992989436381421511961005832721133631275549113641226868484408007284898058005197058362236770869886182300061523332360237274414046733500673667538411330822614792668451105454556192218178234854687567453892043600237068992115945877699734273688549462432595826857808760858752097166448743979126536642225144766853882164897991219139703135886522295432375281686953025665774373025556138491930286406006798907600465458206946206559399603295541764326024991786904949110480071204024813493511561562807263177679249625023722645669629485182963500555510003335448887796367378236138310691157566684115092107052582867873880273394459968866636536467871590867185180009580075210563577153824342282110770314631151974145511413151112232582017775144045997964536000603811954043472225003066247455557263394762082853850116658090037261991247692211882538771190182621125886615683314903791497925118251236601408921425321372440272474308166026376566103285492314773620130839791355348313991833920577761293186161487443714546368334266843700926550269914013363603933096481736261401808646916666943053625645047277738712426916089523675260346358278950869126866196618323149946519669426092399385520071822088538968327620951347854373933736478358464833341988758379440954439546160099695643379929492941368487698245794174994884303415895408845403336262531882986477376183597159377008643623592744228955744851179963996057437998203792488734880620325546390780235577360282627691738879284350348303931706658969021190228577090613214548879403331887319146436620250981113501638403068994314100847127956423998146619152481508119331358228736762915421760355153676599027887866998088313007968660592865811707769576845589411213031205772873869932186264820028102066026067911651743403664004162278364920630216801991357759335718017897355535376875992900410463543711577972110530813339952464979263630750562505388948802268679332820101592290211794529137334659869207531837711768969445037532706728557894994806768360107989358484976663557718022193801196136210942917405780671537338138341560189293146145018854550800490363261289124650531215691866178661123946688832836387910091158318626391704067701909442417173700506691173895530421379380710863913241518828902128499464067152291584149084550831801244343608041746464087808753602870085445324097573012361069010422206760722613567966626449015641', -); -test(macro, '717897987691852588770249', 0, '1'); -test(macro, '-717897987691852588770249', 0, '1'); -test(macro, '717897987691852588770249', 1, '717897987691852588770249'); -test(macro, '-717897987691852588770249', 1, '-717897987691852588770249'); -test( - macro, - '717897987691852588770249', - 3, - '369988485035126972924700782451696644186473100389722973815184405301748249', -); -test( - macro, - '-717897987691852588770249', - 3, - '-369988485035126972924700782451696644186473100389722973815184405301748249', -); -test( - macro, - '717897987691852588770249', - 7, - '98274117348321974353044780928022697503543794108996224149902690255438168118107927224939057895356483251830948245334782867413814443266637838233302304694183773324275704249', -); -test( - macro, - '-717897987691852588770249', - 7, - '-98274117348321974353044780928022697503543794108996224149902690255438168118107927224939057895356483251830948245334782867413814443266637838233302304694183773324275704249', -); -test( - macro, - '717897987691852588770249', - 9, - '50648270951104922750154368051586870571131493195253277558448154467572398239992609359412793847046346201052022004762903721738077206909720257557511103348958535839847634617934011064335949101435909492826285656394536682249', -); -test( - macro, - '-717897987691852588770249', - 9, - '-50648270951104922750154368051586870571131493195253277558448154467572398239992609359412793847046346201052022004762903721738077206909720257557511103348958535839847634617934011064335949101435909492826285656394536682249', -); -test( - macro, - '717897987691852588770249', - 11, - '26102980312143604580379781426139335779091260301758026221495303393196039344305009624874488017227324790317412920525253886011853217074287636537729904547128731845728160914486066244742089352609334182138245049106257642108402738856230144495829015803277090696341313660249', -); -test( - macro, - '-717897987691852588770249', - 11, - '-26102980312143604580379781426139335779091260301758026221495303393196039344305009624874488017227324790317412920525253886011853217074287636537729904547128731845728160914486066244742089352609334182138245049106257642108402738856230144495829015803277090696341313660249', -); -test( - macro, - '717897987691852588770249', - 17, - '3573275582766550916421412995798134382789703709314385104884818112662852238582986404829924618616654726489613490560634610856652852433199412781955936605818387336430363300497297843489165805533270350826963139013723342117143973258213022730407788251463239302985363622895194233407234360656339752537037204386160966863282760795179386609783329264325715584866656109211813856395434440166721187549981532749010960740594249', -); -test( - macro, - '-717897987691852588770249', - 17, - '-3573275582766550916421412995798134382789703709314385104884818112662852238582986404829924618616654726489613490560634610856652852433199412781955936605818387336430363300497297843489165805533270350826963139013723342117143973258213022730407788251463239302985363622895194233407234360656339752537037204386160966863282760795179386609783329264325715584866656109211813856395434440166721187549981532749010960740594249', -); -test( - macro, - '717897987691852588770249', - 22, - '681365581176156632412753534374262781125282012419825049087724194682872335055219639396310501297264530289064963157507569861612948673702326507540305843556830845144470742979453946547899015520738361534628988759199748641145113940154534539818775453262688963129311220968303038658465790258784846759677427047794151246302947777449489906933250186470399660798890218035218608642881019130459098257182422713814006185934129977355115289444874704561056766143547053999767907222964203241196702396756209771576441224761301925355900901280569802742001', -); -test( - macro, - '-717897987691852588770249', - 22, - '681365581176156632412753534374262781125282012419825049087724194682872335055219639396310501297264530289064963157507569861612948673702326507540305843556830845144470742979453946547899015520738361534628988759199748641145113940154534539818775453262688963129311220968303038658465790258784846759677427047794151246302947777449489906933250186470399660798890218035218608642881019130459098257182422713814006185934129977355115289444874704561056766143547053999767907222964203241196702396756209771576441224761301925355900901280569802742001', -); -test( - macro, - '717897987691852588770249', - 24, - '351160503938693614343626853747071562171016188034295260095490111881784318374960146045355120758560422119505624375491533176393589903573845466689382216842197981277867514717013259791763929689440964343969395781792087124646063583944648684169111729145300510135702655848244592583122673432949987979858826614906829469635537237525614665196540272658828569629679791428934101079072719564710584542576589075082850692588439679596816834818341802539921621995225917260921044846812391894365530686773081140839348912145464664288336497209664739248364322768319800659209785240272285297767697234264001', -); -test( - macro, - '-717897987691852588770249', - 24, - '351160503938693614343626853747071562171016188034295260095490111881784318374960146045355120758560422119505624375491533176393589903573845466689382216842197981277867514717013259791763929689440964343969395781792087124646063583944648684169111729145300510135702655848244592583122673432949987979858826614906829469635537237525614665196540272658828569629679791428934101079072719564710584542576589075082850692588439679596816834818341802539921621995225917260921044846812391894365530686773081140839348912145464664288336497209664739248364322768319800659209785240272285297767697234264001', -); -test( - macro, - '717897987691852588770249', - 27, - '129925342856448988764251542089065045786155911790890516647657119087489042404899060228369392822075223183739765014052360206502536732276242266222695367972367328452765284427361172142362321443004910207800039177476242301577150613859831776093328430566500496443594413224371824361420410550048411417760224137393585174427565041635390932623375118187728586008978789234310569306311929614122033949249592316841971560046372431039697669234018577505272948749285774218193495971402810317470288145379703055809020802321420732619980008200661347545521210303094880943536506460031092224160192777095197322219385161928995729071382072812239062743558406558464517305710105484249', -); -test( - macro, - '-717897987691852588770249', - 27, - '-129925342856448988764251542089065045786155911790890516647657119087489042404899060228369392822075223183739765014052360206502536732276242266222695367972367328452765284427361172142362321443004910207800039177476242301577150613859831776093328430566500496443594413224371824361420410550048411417760224137393585174427565041635390932623375118187728586008978789234310569306311929614122033949249592316841971560046372431039697669234018577505272948749285774218193495971402810317470288145379703055809020802321420732619980008200661347545521210303094880943536506460031092224160192777095197322219385161928995729071382072812239062743558406558464517305710105484249', -); -test( - macro, - '717897987691852588770249', - 29, - '66960601081613218995545615402693600374639583627057873894478996761235534940521876203825851640372285281121028022306706156922783036648760227593129124026972625933013798555768937762460772142044797003957960219229519539565564116948220691395428662251667454449762970671596782912888080349684772071024984546225188460055852555657228531306371662448557023517396895942248714935653633379580289509781187157995620922388883890668691615375469973820302219060616733583757178470584754927697520205194864258128911605585342110346435691476086856952623133602717988980966508297658793357400697431392332924229866368079543112854041068400435054566433206423406557876970185985505776428441038078323222858222598473938385526462249', -); -test( - macro, - '-717897987691852588770249', - 29, - '-66960601081613218995545615402693600374639583627057873894478996761235534940521876203825851640372285281121028022306706156922783036648760227593129124026972625933013798555768937762460772142044797003957960219229519539565564116948220691395428662251667454449762970671596782912888080349684772071024984546225188460055852555657228531306371662448557023517396895942248714935653633379580289509781187157995620922388883890668691615375469973820302219060616733583757178470584754927697520205194864258128911605585342110346435691476086856952623133602717988980966508297658793357400697431392332924229866368079543112854041068400435054566433206423406557876970185985505776428441038078323222858222598473938385526462249', -); -test( - macro, - '717897987691852588770249', - 1234, - '240666810925796631497300464125793793876153875629096662520743987128655138300518806793333863505002370424150325835897522997035758513508393749421313311380386678245885529902936330574270897824424068780701595312024191583797781168159472099893770860328570371993646844140203799118143686616439077080118602046330501107174223757814456182746333086177504034894868587120939461313455507702811247120286468199645215838215144781536578745753923838005482894245501661797497042343390617151204343021554518498735362447358070369090432988690834865403291509113944458407089222159417866640525805032080821319406442026747974929325112928921447323232212274973452975883062343094212146738595192633791120734889354763869347495932575155161944862722200405955280366430399276362677049013925041871227530264219143440107033389736110114624783260190579707152045014476353193813168715289380838132597179842738854542064339183902073367485289715584943627672587668112192162491400086760878390153498140343600949752356890781346460139220027272654766196351251998753435700609187724419282733374517073505387635776141937057086008339977487598351396266355557385114078610220987097361567756363195532914764004598634407992908600646589647778700597919884751054929681098369460031512377150901578312180257824087931889292083387179002094560172630492173743471238348161722683402811331621904068461649853237649098667186022410987655766907338482317060412259815938817187300402820360378490149991171370482329371650505043884192332467954232225473438096361196485730615702706338896803459544893784510590248023379843299267561024474106199710926586300140256218142748793677805122624858592543944305974549597571554026676016225109087448889480206990407910658105566060532854331549685512672824252906121631110818833232354043403137418311925998804066986754875440423240222092764003746250623404175411263344414954113517360947070716557546634100780648355973690014553189027477234402720353402501541699079073208241754265407813302554719501911786154879576504690648777330790234360752380718909924776795870591070461878764685781345393089291677007084060723076292423331888969906994889802559722805557544432185305096822014262735051471669354024897723343139333199330147964590265703488059466191857192410897868609291384108526636429139154008874646743040881795937998168293882623621583556584500036772108578773075747899050834512563302362032542587715210166387236382275419681547020073143476402676839032589356933008399060939093631291937107000000043323532799137849647405096232083364392703455257640562906669605316805575467472071569944146598547468221559924113348400144610716847685364347467929073894879899123491301645104075537984420168183636199226629624957989433534137128744185230344994592856898029628268331117744171243766865397230810342464227680605486409079213386036803957679866952104779315664126405241076356017313310476722815126991777729855840510871727519397893209033487330193378894526790670497601404262388611693537246084432220039998668497909914891728825779959838738394310285580938434539221810042937887451215631212371491462951157863268559393019049906492412696634901678674798328369463166268199126370427527431576741235550771195727247585539256417952853329478914515539806021976444112084626581019338193239617668568672517993467174255845823702683834750228698628538106052353376750716489661771727612994518487692989696065706319916267876683157185246663635313221904866416368381426519462074273529104434353847460205734702566140847713395645548499357551950806690743433954202058581687009317012817649884159064284249335591683480037524895848927954651846952405664224327697084573143825212146169786019851375852570935645324673501437526819689862546523710166522763874255457046134768878318504847569562740775920029079242062671507739909787305724552670012633097279820790400444955953186180036141498111027556284782611831968632960254971585279229009517389124640521071182508552930150093115185298823230740659868195268121798981841121508518238922062146832778512233130516701388382270437021078314304384358232872632935033731255504313450018207186652992855974803423357233611324893304082721355054709451741004386686923054310723261481499154665026674935888222845457736324171023246366147102994195305848085588996476494973007973902151008585594112156233214360569556745482837925015827621067498561246812344514749188513286706401554080345967322077722072126008109427433431070325726521163012868148649582784383995723396360310319509595957738338411942892357400728388524308685812413893999404967999249813865349937751377717926369301101787921984260122186159989136656801540380770978320766045936205592959488163833618604355519117056970124007977963289037930079739906574432060855963578944486246793175242282673514112660912407087562188397053739993885193130818225601480302627529684348527769410385079008546741019828845532655444621234451156249631617457720152180989156738006670404506338571918208165921758803413253593685587469101580701192606017766650438994704981870117413061535622136601016979952697317238276873256779729419028069631432675219491767318800339045855442030264560075159056776340091166641523596359578961807101748144945138318607039052076486075699577782685718970588115246184745849474239861848227033647872319200256588719967644217877454602724612457063846122996574940120482768446762101146242787977449369937867250832112867230692912468970042855717280755106531667961937332446742078258774278002352847604203619178315262206430766732415004556722421674647346648829974839968356832918027747760706008251337997576672550889603071310089578634747901944072670071985016123486885045817879153495396347705516599056944513760289619758242073133217108261158438678792867348399912643882264938522086425924074531699941057823129668543509614970599670225949760759593973290456515031451150061095408009491932533974765354150005121720734711745252878859000575558573436139695813170049848899622852245653141171375285116196880631468001421360473881187149476805269342296424485310215470494796178401944348619754324798206578015187379609260920882768561974442771209643829629212007051116346637625763873106848673476948458383017883010996340518563860345530523780019175023658557801658436627673907676975971882109751635784820139654624656191522441490775749907596367211611579452627181067685977845460985237049896675479606151704752856005151770161591738112961723993454693092539303522485285732895462643804740701516376964927670122135657823916458074535855817547513841507607015010962514867231406668733574660708546812140757605323461188423370665178218323843285796646737709047020502755313516962625148241570458025214707284812497971943815765595261077725596928727447148413360293693704268976245064190940961850889245136042407154085469838297857292187347035492359540055492227822512458140269037567546119976309595685267059328503097802601274596051953728897555043442182432638912118214086596792857025735173692744450906559633901069848611000152694981799908562674080212673483483714535683816021391478836663467848746594481778215255545090822995407416235269774848665232107297962031453869358953402040347982467139283098108055610285820589613275368865515242210501491361858362122708451547647239066214844062386833772040444917284525202881555120247439897055373293814403955325754500816079489668326796664509455821614956472480002144936394671934338050270783459361214210050599756870439116283220868124998006625761895550396584389321270476762755086709308051601531689562716830791751872883137993455070471233464948461931211369790177531373113631239997994291418256714478265196669753238257830553539691807842745455955136875773828554605336260805640377757640862870194935776092004134130289520896834858656317913097532957724133151945092000859020920237096913664009534675855229755344172129957141641791984538395100720317980525185769142781585509930975604069100811643163009360481907738801078884830886276286316858755498443168347068032348883021378746194698784811802339515331441830238719175466597762050420975691354490653471436861965025398816127746666639354864324232964949049300538005293308845940271700888627199662903120034287206034687813252949705816491402178398645719387809539644872118409461401883654312922279080211009210189799876128819902719937084606802972639337531957278291820852311932551591955350790335928152884811433450537315845604917323956883583239480347219971438941586085711934485815121967398164101784083619826265891401802416571741345090544188799381856839432343498457496360597455526238460117589115787753968612657150077978004530794321967803330389249425352563744925321708518378671586645666604614530902858059020840074105043307623670946950043194604176031013849727052783428735689851667778432798381033674827978887751236650974118849759189503239625343304532523005839417475498961072873029640889256489519703706344292253527801297251124450502273288023521577486079679697498402526688946738210589004011833446500132651961861200853340654900269802660034733678942996167533210265105504648979731317667399933165040919109758988751189548962159739945527299915654716346246041095050960741515495587998776985363865506374140224005340645853795347072152325663672271845064723399857372941894460100333264447275387920605177410030429482678126703784114018103844023345892034742213333395468046660012665242882251447818527188389084106839211601891516465629590896364692175169015105701572123182161899801710734441225139364024469426754491100056297212476895075865513734972712990677136692220035091504362225897411284355159962673082264518469172649285965322881981348609178818294743174542244219819932183490365756919330710479957613508601495497295676950329757448944977362883166111823279769434700959568955927643656859063742327008267599164937006804048910677286568538933031439840564237461535941197796390759052457284051017778672694027120426633268111056448896881308374127555545225553090822535510692077989067554686838662757792829768851773704480230259292642841141429771977100764471997993102274545765814837384547498350869645999651843659166200886176115555346289903469340446739207010577645167542297460407137062960215028382415884570633157792532691792641314278905490923087079766067798937780659109451731519734592939579025164926515523248807352103381305168229367358321432773551392789398713507962778942820119469523225162863178680183911570348027961700553229115316563272964376101119188825605514991804081027954389921141273219285131032169547368944389824308436381941175515798111830481000043636844809228835704445068305252750582078049987152297826581119584963878880864201441342341314647264252390676175707582693479476352854352886370525502607349886832362596404647139600857534060227964743860211405500060294329186630176879724051222152101141867575359408008501674175606199047463432213378831599134528934108281929480497040842200684432006775368915613194065693056672838195707429303679749464784054705434213357415294902116744802057352193718342238545126703326661042546563491168121691269341550977021406438785288342043569889077634089317033122541296230748114388665029044499469546397108299753200706114193470635536895967048169021873576306364846257373205822028138269759764442484817509279075026743603019509097159849066563284407999202539936119877761212471543147933987133791650432393675308321559611393751092509456575599446737432047081189236910050329727334141146991725988700140584975269036834508080148636316737184199462112708124889925362377529178344014590919552819769657577672702978011641143673156015114065926314546589192090878523676668017033871729579063980669673546335286849239147941679867288782496042348838505520661208416542384402601836938516863582808398758530009389050063886699985783925267497452701039388970042411071173551559121683897134217799905956381777617760035612136975496448360169358472611166991247066660361258257792717955895802886807621142240955311727190733860080248699104145339409596193747533219052958194006816842395395133815227958447183027408201887154248055155515252489593725880002915429087346780489686173993006485543412786317161927405570384085201230519902078033355645726810161924247926196020315576428292022629241922920330634879366713250236205513546588717366123436426532878032863695637071735051269224304497931038322951508526569846253683590423751042200651378810558188601895181845187598166177418938407685219535673829472096697071612870362277436920342738049215807079089141509386167010651751786772439419974350420945450780317330425760939076658378846814831229353170269675745570687143370733413098798744099031911520221044007327256897909622230050896081391104380973572938318409605238511264413423963577109959485446578175113776603615777667633293449071495602382745493460804765597670064823587149295646560929042625803334777303751883329502685780494009410515987822344496036156411290474009548223625232450188758230491801781290987433426377664288677071271225318178134265723090953908487368210301890173799337794414289839164334384499838476694064042562380923392170814007209797114936223969923288492450317383650369779029731134714434936391643766311336738629884184770965675076449262359336759950385687723231779915621937147640435620959355327348891883061403815008875737737458441613654230046515389312374996035407943181440498220354304355266414125515658969508581407533490313522890987856883087879602650008064327529989955508937331955239874722401238624800305487314538069958888480061378318398494570408743929545890698144755401436645575305635886766888309290821752239252465276109182753977002117165726763101082508643896734872331680782581238479701159334042497390606376542941582331808271248759018721187949059390620081627947668715490802983617888543466920624132979650708704245244736734577571335364024219584348266021595514151130896017976378599765662306270194051912298827281348333359149495872248207397081180112660679500488646194492335713944553578485524340274065812575443967506816413669283541021458439360404721464264498869630723885583385346819805722244341238149657763492548458459521747402931332148061021522859079768700468052335856043104242388423745990751764752080395046941015982884875151539581000878641435603583824562615084914225729901628394177372130985466208762313918008648944381048427957163858317218102829834343833633544901126931143569398807905684970202348964194612275298885061923925145525774876352222523781858372282001957198274173098329010279847291113009852613678253123199322917136025127117154756978089704874006129913373888341731677935563427208491533468982839070555222905600716758864558055015455443368534003989339266991496574749087456141207063618250411241902141164015442390891110956633395370303166431966298954503533779086717784121585666343471909838926386599682823714314774096149220614537617503626682222182615668880281733598355987215201453863347388340090921698878129884976286937514133684565405410347549261471700192037533086493793953508999824708254409983739425082813111045769624535087578645427477116700686622592971553298713236705554924227547844058030634294043977065066654988266829751374105278390824121371044031181008428048205223923243651098135005092948487395324912456217052331950187603567228183420265978222659169332375919592362911152011838702189535847577763714114425190514299564739774757564037598485982927812147173140747827430978393017504243724684098500167685714749941846120533181791178220367836024729909146669128836477415610531307171288054524223649506374655503312084693854015857030163886937766181098823169023181572231477404931598733389102380674704591127778547890467262756173574558080654790642471369332640892203135294330237246272074631760017202872694312963325722611729402358297429077465902624984852437593479190867737167006749083009854670384065327519801302083242691293439616132893416660268947919201637739258769771607084518793369204312869826490193716352930819450570212844033786667236068075375941453964216107149779664323628747272497685794971849040594638565097670630010455310220514277785818284186463200618441748478788591987616681646033755321959251953987293706031605827100615706433378711983560088154239750803537349035070283423517350889381534886372817293834165533055835445256823942303051891255521175486827650886133221071633589921707722114526609240665260264492305806982431844042679579783582551609283040246523428581845720374540737897789979786180180579009825935175015723992444590406056732840128165816199908483281974729283159640149821021618151095300252407271226953926728439712096665201813821962143089789720545389677608391629805852569311950851389264151131224953921752017840922075938093985062781184787646406285721393870539756657767030925030053022461302204093227393963491255643017235236360807076699601286868224950349231983608760919780584266842953210668067889511328397050532424837545546721403509681669483144282692231815703147470176852156718005759125673967988457229048839619145997585270368102435074595029990094324102493737818970275642575407600875588537013441673454455861497898836728065291478392070865090189959309947742444986923526745948057899128034232868017159368271694223700039666236730894705407231009389857561190687139334624948051152611495443371208819706799382667564652218904459544669746954713753183826624347921466724650586905939136598547335012617702607014113794591546834254696563524548343500981096958481191991323022742758572702244370470464413665803392605126994943740602380225661619992335366449312159389272554547255369597536289533017879667844179574297853538262473990737634615419535991688218597561417950967595509116168022993443293531295365421530990278428579503023488689022645550899786226625323338180515144059213727584521215321722089993299184212218054163465777614637889378688685803879328452385390951350548924489120271418100487678768868428228212387228503799518279495595264908243662176970443975028752029355061454695157141184819938299926947437018478957044395662391617808375468649007600370172940115843761412592237460566795143736348519450988859101853660296226210668299394693230720927858276964586740548558363904065214488088226818002415057852903743836014126022876012254536312345404960062753442098036019060443237049994545797682297235099797863438436593216207403158412477892107575374686442179451430350704320791891708254315536860892520182634206456725864813704568320562591782038671811141093425946482688159934297090882997856490197026962532578625837338928755211465291529523683918247460452910194710972484675179153177104097104259910518268539520304289744878391349554947980543388976876106090112798575825073980240911865137171222653996955929253877954855333315507869969643594964229605539468134884245036416894025484737992830203554155653978459691014928198149428959910752989307071317377965664300905553289327994588549850950284644007080706241112418494862133916539297959029131158062514264923394985650739154621700845808120916284537924609624030443114218948985698358239949762635499673659005627824880546112922811671183977198549908295009183673236341667156736650377361061056737332063403410177715559814144656394550604447538215779823278536104712565326761405690441339115296210030702222989203489845948281369398678770779363415632864910236794328437692624022552548328392842615492736782204301768665965365930746241254165608754964908497067499545759985298460945344650446835792542841082131510112938961881927693248231120221756864036707731726487325938077272576650743798183544800139162905157445216386915371613768879264078891644381253089581539609558090983181521395649500355526541811118635730569046931361684921810261207373485062516626873625896376115969793729107031511621422445382850451172374270682693053568648031104008891817274572963359437128249991844891468313131004074851541435190896882353764875480896554449408432067645595533709041759932190996007431454089967656531249566609171679862639011907239936167049017771581006836981063193553563613522749187290893357797646951653930745484252566662895227296365515537656517639786730623586151975310765480540289532531601949395336304927562830700960037825411985561643821347883034995939999815320371904489018486314948455952559263146409710068471713259502647267478001977847611896061825935753950424233795977832748562746151379388667659849662204204370582406208836832264614999774576849343391530101628342373099807709619251009982948420174200692400576186926512032915961194241973580587141742017725523177905799155980685544702998175691236820149021743148908860959473955326805004843786317283255788228027783973963775307044681831745418957729607897287660450576165731690039127804414511168095180765758455897687743007250305015608713824106966239837615772559788333446260389735144551194566097856159222619045281993121036130544888850748533209105902290817972040683491743672438537427407555076754103740470470519996488106893988963679893402926779777315510136748292964498716616387480928391333727613516511458687653975670170800714203116160576633121381876444223289818335512535646590900478008372238152919598466400554972447258395277820369798167170321756327919408066285581702239995204777287480387161536727459448442509762680258106041535327214632697312513497219121039425133532472242095253942361432227842877340347922588175651734262339738440446492272637919578131157514237627203984698773116783796765212222546280365874311759355831644675241116934493294688108999510961605213084570721687715849450396639049106141887860856148954550750471455629931627105000620532269066137825781316017603220973433261333991034567108467510498624962642488699169465874363399488868154638948242465984577292633553735556852420099382096738662832127104872725881996505036610995572650123609241043781086883738614012464955179446535377004978611118562176293167638027449612637695085975726247778121052711332364566219200112876185845464416120363602708440087210524126961712756204182189211477418943839212507448032291316566737926226650207942465800405168687099249273393069060646360798873617365864441322829730079901581793477840461467290903920089953743513557150545457465001493281676469801544541444627173505187869563691796834575745981341826378231855942604285683577230974772727095310465725871392788376171498988325165587658459242478209763818343931715246275249033847544355256625769712507232847344158590312425822454135201105768865080501413412277647350979797597165322409320114702032426981288520271353130012171484594553991124856728942246176555811779216453894275972582641573921036716718553318429096852951098778309232081644343337035691135410384601765183315931601762146264393426528312050751636769212945201832547953844492774251628393141343106226795356284876139469403273284444586014152400694986734961594079272858809061960949904448174959103909564433761703907276125412354892775335876415272646526126192989549857858930065881045254576136386486138517438556555308338685607210816131204906145887848650892144421256413442786428159719389978047391109134257790046140655520758094636923303925473166438103154754510983147606737926330885845999568999353851276202586739695128035976057952375907156376600975164048300965313860942704588148212587962879654957903805340177854247259711308541551603503567837780970461451995771047865665783511661730311276567901518165972850520986636796137347177492175264790310493561351654339295597668712467832251955744640272444007155359474048804304065788982945928352532307632627576930665303670890426050955025688528627309916477125616012512925234970728304675990574496468777227069085170298364495254489068034897491392933909636369331527636742699013284766902371352506091776350995292002731244023865757006858780469293597018620342571723772179977093125789699475496105523743724832176529540068144093345882387953940656084217900519955099464578748726508611651485516665622261135808230656113185935758123090731435124996047414425279597354359574378856570913306377601759010157157490619551740940998388274502844305091669547119876233489292751989516078837544062423667004292912251992330172087279616497346882233046859736081564275972335625958254887035338484716664189318473872485695845339136606272315059741608927734938768821670382249825317380542046557829438761966527834167384855716224439462405323266438326536377961771823507569459750423103138290848070089339750740358977330113970497456562209782789816756431729085281442325129945131381329920983439892601873489278892739994343671536564003094063601168102358102060511646184488836555280866265439572865577916493719868641514516664261116535122724396782278955528978764063014169535540654859120299172230842177436210545014476071475600058330214022044195137271228882609806962913480150447375885450575324750279251402851061941914287093134507336790423199888450218824466412490267199774666086468918833734387337497335144015840693004008549890781493464193192460097751739334161380017888359443004786038046374825235310856409598367802175188078401652900630883502414596986630872311085261238505708931003788068325087199867279768495262956883650359670743609352716895125122349956601558456299500231541599105539315180746997839621279353395686142155700423447977269222089468138684489318419154262504409821198761325705465328527695537157420782082354078175035903462010430134986159387812646272750962009925857083492829567970790332465325289206689049063764087436241829439763284627544144883357167770069639466367471860398862788075053410539365200406384307372970511564096399841314435051459484946899992507044444836354985269418541366246616097379154763081470481918007310765539689731840724466167823996718641044946480569623102013135147003272739284086213587006083417239308558779132947952435879189833909533561483821067431049890268359556509392353401539333788301678145208658937272723188794578112686709909491108016192828130703303524780820687044001344046854958188080136806595303293237463476504011920463204562731540166037081435695648333493988584792808470211132901764592133330530980096778425332932212735837577215893864016217901368345444882023496497506785629435246203379531538457462340173890359032774939687844147198184957025212849427638320378720167398909916718917724985900920192030214246493573397230398365110417352778733527631095124650992710118667623539554692566783429394136221716928121159143717386855853984409631021985053790618629812165917024946228153251349408767853192940114553370189242241369551007994010028856078603666746043453656590118761983375709654169884658816846754918144899815282484040063735003947309015844941305847294632029009712335365639096408778574091927109550299652681981479767150215206743081866358869114610816772333138477417708074433283279303532825808874057642839515755856791048739006988848065926839028819778433988669939558066650036824490486884666934262276513630175045822348774690095228540301868104997197326328212569850060274724529767914857676420841256961349265084840795236300841400994212367633572991161913691050780025455347823394988202788101768864502813390202856859126972599856839543990159365234030538827346354126800097285185924007284964690706128142631879645458992663766048427439769100788649351932617465546902567125707865370814068813860587244367746419075848390538678832569432671471062986454254204755506074801888029161552920066319891531957945773273477214975812022453730709392776469844678661783580960787047698418293376308118134867752848112612486402593064704496634807094220104296663754040709636340404817455410880891536467187831977983640996849951650389805873899168181319390054320789631028913388232046260307268390249991322854583613804193446810865918674501358892715568404694072865540886401726893184784714501860380117604550931574048136798023258513596201002070068810852653249151000051456727886861808962487581377647552163976398924881561622659417081146106665646072744668498044426052522804636851043773834785399184804744620318835737108437901882030516095623037578335280017150548691261342926746197516595593226496924022045173580598481046504353473187019615999528239277638114058438415735028254220037867803763085393466530484468108461280119649653140359265924176687880191882252356096667279055875924399802049955390469540917907333623282921659561338713671919571784854447264751582461161121608220632552535539574811239491907977080055351867435082725503419467499187011802283659752233542349669207811280081047966667824818523441274660618920625130919101015888482026053951969439894711895548441586107366790258898741612638693297959237922447608589158095992135723952461923994687823650465896764883667052137155194576002906847524103760645387180490146865124538922972372819826875923731390254431637342915817358546048808767134126047097505431381328118991195760134187889545091844395783645096128280496313025953970498006602276712809536127205652543720418045709969402565206329936420465311999349099261495766939883753463147455929093001269063984253071712863023553747896664603639453734132845027589712104259060427174009223665700657893713650553018587778453891754253151543028835750947685193000377825566600933648482508779760768199662372049766387638985631992100720003474151721375703211133912952407983355924232680111677587187241552829353741946423917448296404338549819202048685814597880693735805572741960307139515943152276365487150482922514045581253293812970267225644349179074560531877646062461313500613224648092931335926366379056886844623491593907009953911828052093623916145953431995773150699039217050325951921320241782503621522257361377451082489605564890402097866814491505081488150019983296575499211151451554027366425864934924114301930078755148355932268605394003602081353485970925801149654213968714040128138987924299507789192344817388231539104117379617054404077042219865132840948934920651343894411168095993753287475595036673571212995962900134686846347787877484062299240326083529798662229832353356661104190733708040289237334415143318464007457016765783370725688178760684007631997290723697308539152704845065598303686071945621892934023531809446634995403272958391058435649685487542623361855343322082521933633876027950702259029069185899906864695622617535870612593631958372152800863964775616329570345552185613467025464216600056930056849030169878244758163240995914072907600096163507820815348734058513665059114508068178367617804243332753749239571295040855080590873111579164335770288383740923440579367884707497712423043388562508100574697765074001', -); -test( - macro, - '-717897987691852588770249', - 1234, - '240666810925796631497300464125793793876153875629096662520743987128655138300518806793333863505002370424150325835897522997035758513508393749421313311380386678245885529902936330574270897824424068780701595312024191583797781168159472099893770860328570371993646844140203799118143686616439077080118602046330501107174223757814456182746333086177504034894868587120939461313455507702811247120286468199645215838215144781536578745753923838005482894245501661797497042343390617151204343021554518498735362447358070369090432988690834865403291509113944458407089222159417866640525805032080821319406442026747974929325112928921447323232212274973452975883062343094212146738595192633791120734889354763869347495932575155161944862722200405955280366430399276362677049013925041871227530264219143440107033389736110114624783260190579707152045014476353193813168715289380838132597179842738854542064339183902073367485289715584943627672587668112192162491400086760878390153498140343600949752356890781346460139220027272654766196351251998753435700609187724419282733374517073505387635776141937057086008339977487598351396266355557385114078610220987097361567756363195532914764004598634407992908600646589647778700597919884751054929681098369460031512377150901578312180257824087931889292083387179002094560172630492173743471238348161722683402811331621904068461649853237649098667186022410987655766907338482317060412259815938817187300402820360378490149991171370482329371650505043884192332467954232225473438096361196485730615702706338896803459544893784510590248023379843299267561024474106199710926586300140256218142748793677805122624858592543944305974549597571554026676016225109087448889480206990407910658105566060532854331549685512672824252906121631110818833232354043403137418311925998804066986754875440423240222092764003746250623404175411263344414954113517360947070716557546634100780648355973690014553189027477234402720353402501541699079073208241754265407813302554719501911786154879576504690648777330790234360752380718909924776795870591070461878764685781345393089291677007084060723076292423331888969906994889802559722805557544432185305096822014262735051471669354024897723343139333199330147964590265703488059466191857192410897868609291384108526636429139154008874646743040881795937998168293882623621583556584500036772108578773075747899050834512563302362032542587715210166387236382275419681547020073143476402676839032589356933008399060939093631291937107000000043323532799137849647405096232083364392703455257640562906669605316805575467472071569944146598547468221559924113348400144610716847685364347467929073894879899123491301645104075537984420168183636199226629624957989433534137128744185230344994592856898029628268331117744171243766865397230810342464227680605486409079213386036803957679866952104779315664126405241076356017313310476722815126991777729855840510871727519397893209033487330193378894526790670497601404262388611693537246084432220039998668497909914891728825779959838738394310285580938434539221810042937887451215631212371491462951157863268559393019049906492412696634901678674798328369463166268199126370427527431576741235550771195727247585539256417952853329478914515539806021976444112084626581019338193239617668568672517993467174255845823702683834750228698628538106052353376750716489661771727612994518487692989696065706319916267876683157185246663635313221904866416368381426519462074273529104434353847460205734702566140847713395645548499357551950806690743433954202058581687009317012817649884159064284249335591683480037524895848927954651846952405664224327697084573143825212146169786019851375852570935645324673501437526819689862546523710166522763874255457046134768878318504847569562740775920029079242062671507739909787305724552670012633097279820790400444955953186180036141498111027556284782611831968632960254971585279229009517389124640521071182508552930150093115185298823230740659868195268121798981841121508518238922062146832778512233130516701388382270437021078314304384358232872632935033731255504313450018207186652992855974803423357233611324893304082721355054709451741004386686923054310723261481499154665026674935888222845457736324171023246366147102994195305848085588996476494973007973902151008585594112156233214360569556745482837925015827621067498561246812344514749188513286706401554080345967322077722072126008109427433431070325726521163012868148649582784383995723396360310319509595957738338411942892357400728388524308685812413893999404967999249813865349937751377717926369301101787921984260122186159989136656801540380770978320766045936205592959488163833618604355519117056970124007977963289037930079739906574432060855963578944486246793175242282673514112660912407087562188397053739993885193130818225601480302627529684348527769410385079008546741019828845532655444621234451156249631617457720152180989156738006670404506338571918208165921758803413253593685587469101580701192606017766650438994704981870117413061535622136601016979952697317238276873256779729419028069631432675219491767318800339045855442030264560075159056776340091166641523596359578961807101748144945138318607039052076486075699577782685718970588115246184745849474239861848227033647872319200256588719967644217877454602724612457063846122996574940120482768446762101146242787977449369937867250832112867230692912468970042855717280755106531667961937332446742078258774278002352847604203619178315262206430766732415004556722421674647346648829974839968356832918027747760706008251337997576672550889603071310089578634747901944072670071985016123486885045817879153495396347705516599056944513760289619758242073133217108261158438678792867348399912643882264938522086425924074531699941057823129668543509614970599670225949760759593973290456515031451150061095408009491932533974765354150005121720734711745252878859000575558573436139695813170049848899622852245653141171375285116196880631468001421360473881187149476805269342296424485310215470494796178401944348619754324798206578015187379609260920882768561974442771209643829629212007051116346637625763873106848673476948458383017883010996340518563860345530523780019175023658557801658436627673907676975971882109751635784820139654624656191522441490775749907596367211611579452627181067685977845460985237049896675479606151704752856005151770161591738112961723993454693092539303522485285732895462643804740701516376964927670122135657823916458074535855817547513841507607015010962514867231406668733574660708546812140757605323461188423370665178218323843285796646737709047020502755313516962625148241570458025214707284812497971943815765595261077725596928727447148413360293693704268976245064190940961850889245136042407154085469838297857292187347035492359540055492227822512458140269037567546119976309595685267059328503097802601274596051953728897555043442182432638912118214086596792857025735173692744450906559633901069848611000152694981799908562674080212673483483714535683816021391478836663467848746594481778215255545090822995407416235269774848665232107297962031453869358953402040347982467139283098108055610285820589613275368865515242210501491361858362122708451547647239066214844062386833772040444917284525202881555120247439897055373293814403955325754500816079489668326796664509455821614956472480002144936394671934338050270783459361214210050599756870439116283220868124998006625761895550396584389321270476762755086709308051601531689562716830791751872883137993455070471233464948461931211369790177531373113631239997994291418256714478265196669753238257830553539691807842745455955136875773828554605336260805640377757640862870194935776092004134130289520896834858656317913097532957724133151945092000859020920237096913664009534675855229755344172129957141641791984538395100720317980525185769142781585509930975604069100811643163009360481907738801078884830886276286316858755498443168347068032348883021378746194698784811802339515331441830238719175466597762050420975691354490653471436861965025398816127746666639354864324232964949049300538005293308845940271700888627199662903120034287206034687813252949705816491402178398645719387809539644872118409461401883654312922279080211009210189799876128819902719937084606802972639337531957278291820852311932551591955350790335928152884811433450537315845604917323956883583239480347219971438941586085711934485815121967398164101784083619826265891401802416571741345090544188799381856839432343498457496360597455526238460117589115787753968612657150077978004530794321967803330389249425352563744925321708518378671586645666604614530902858059020840074105043307623670946950043194604176031013849727052783428735689851667778432798381033674827978887751236650974118849759189503239625343304532523005839417475498961072873029640889256489519703706344292253527801297251124450502273288023521577486079679697498402526688946738210589004011833446500132651961861200853340654900269802660034733678942996167533210265105504648979731317667399933165040919109758988751189548962159739945527299915654716346246041095050960741515495587998776985363865506374140224005340645853795347072152325663672271845064723399857372941894460100333264447275387920605177410030429482678126703784114018103844023345892034742213333395468046660012665242882251447818527188389084106839211601891516465629590896364692175169015105701572123182161899801710734441225139364024469426754491100056297212476895075865513734972712990677136692220035091504362225897411284355159962673082264518469172649285965322881981348609178818294743174542244219819932183490365756919330710479957613508601495497295676950329757448944977362883166111823279769434700959568955927643656859063742327008267599164937006804048910677286568538933031439840564237461535941197796390759052457284051017778672694027120426633268111056448896881308374127555545225553090822535510692077989067554686838662757792829768851773704480230259292642841141429771977100764471997993102274545765814837384547498350869645999651843659166200886176115555346289903469340446739207010577645167542297460407137062960215028382415884570633157792532691792641314278905490923087079766067798937780659109451731519734592939579025164926515523248807352103381305168229367358321432773551392789398713507962778942820119469523225162863178680183911570348027961700553229115316563272964376101119188825605514991804081027954389921141273219285131032169547368944389824308436381941175515798111830481000043636844809228835704445068305252750582078049987152297826581119584963878880864201441342341314647264252390676175707582693479476352854352886370525502607349886832362596404647139600857534060227964743860211405500060294329186630176879724051222152101141867575359408008501674175606199047463432213378831599134528934108281929480497040842200684432006775368915613194065693056672838195707429303679749464784054705434213357415294902116744802057352193718342238545126703326661042546563491168121691269341550977021406438785288342043569889077634089317033122541296230748114388665029044499469546397108299753200706114193470635536895967048169021873576306364846257373205822028138269759764442484817509279075026743603019509097159849066563284407999202539936119877761212471543147933987133791650432393675308321559611393751092509456575599446737432047081189236910050329727334141146991725988700140584975269036834508080148636316737184199462112708124889925362377529178344014590919552819769657577672702978011641143673156015114065926314546589192090878523676668017033871729579063980669673546335286849239147941679867288782496042348838505520661208416542384402601836938516863582808398758530009389050063886699985783925267497452701039388970042411071173551559121683897134217799905956381777617760035612136975496448360169358472611166991247066660361258257792717955895802886807621142240955311727190733860080248699104145339409596193747533219052958194006816842395395133815227958447183027408201887154248055155515252489593725880002915429087346780489686173993006485543412786317161927405570384085201230519902078033355645726810161924247926196020315576428292022629241922920330634879366713250236205513546588717366123436426532878032863695637071735051269224304497931038322951508526569846253683590423751042200651378810558188601895181845187598166177418938407685219535673829472096697071612870362277436920342738049215807079089141509386167010651751786772439419974350420945450780317330425760939076658378846814831229353170269675745570687143370733413098798744099031911520221044007327256897909622230050896081391104380973572938318409605238511264413423963577109959485446578175113776603615777667633293449071495602382745493460804765597670064823587149295646560929042625803334777303751883329502685780494009410515987822344496036156411290474009548223625232450188758230491801781290987433426377664288677071271225318178134265723090953908487368210301890173799337794414289839164334384499838476694064042562380923392170814007209797114936223969923288492450317383650369779029731134714434936391643766311336738629884184770965675076449262359336759950385687723231779915621937147640435620959355327348891883061403815008875737737458441613654230046515389312374996035407943181440498220354304355266414125515658969508581407533490313522890987856883087879602650008064327529989955508937331955239874722401238624800305487314538069958888480061378318398494570408743929545890698144755401436645575305635886766888309290821752239252465276109182753977002117165726763101082508643896734872331680782581238479701159334042497390606376542941582331808271248759018721187949059390620081627947668715490802983617888543466920624132979650708704245244736734577571335364024219584348266021595514151130896017976378599765662306270194051912298827281348333359149495872248207397081180112660679500488646194492335713944553578485524340274065812575443967506816413669283541021458439360404721464264498869630723885583385346819805722244341238149657763492548458459521747402931332148061021522859079768700468052335856043104242388423745990751764752080395046941015982884875151539581000878641435603583824562615084914225729901628394177372130985466208762313918008648944381048427957163858317218102829834343833633544901126931143569398807905684970202348964194612275298885061923925145525774876352222523781858372282001957198274173098329010279847291113009852613678253123199322917136025127117154756978089704874006129913373888341731677935563427208491533468982839070555222905600716758864558055015455443368534003989339266991496574749087456141207063618250411241902141164015442390891110956633395370303166431966298954503533779086717784121585666343471909838926386599682823714314774096149220614537617503626682222182615668880281733598355987215201453863347388340090921698878129884976286937514133684565405410347549261471700192037533086493793953508999824708254409983739425082813111045769624535087578645427477116700686622592971553298713236705554924227547844058030634294043977065066654988266829751374105278390824121371044031181008428048205223923243651098135005092948487395324912456217052331950187603567228183420265978222659169332375919592362911152011838702189535847577763714114425190514299564739774757564037598485982927812147173140747827430978393017504243724684098500167685714749941846120533181791178220367836024729909146669128836477415610531307171288054524223649506374655503312084693854015857030163886937766181098823169023181572231477404931598733389102380674704591127778547890467262756173574558080654790642471369332640892203135294330237246272074631760017202872694312963325722611729402358297429077465902624984852437593479190867737167006749083009854670384065327519801302083242691293439616132893416660268947919201637739258769771607084518793369204312869826490193716352930819450570212844033786667236068075375941453964216107149779664323628747272497685794971849040594638565097670630010455310220514277785818284186463200618441748478788591987616681646033755321959251953987293706031605827100615706433378711983560088154239750803537349035070283423517350889381534886372817293834165533055835445256823942303051891255521175486827650886133221071633589921707722114526609240665260264492305806982431844042679579783582551609283040246523428581845720374540737897789979786180180579009825935175015723992444590406056732840128165816199908483281974729283159640149821021618151095300252407271226953926728439712096665201813821962143089789720545389677608391629805852569311950851389264151131224953921752017840922075938093985062781184787646406285721393870539756657767030925030053022461302204093227393963491255643017235236360807076699601286868224950349231983608760919780584266842953210668067889511328397050532424837545546721403509681669483144282692231815703147470176852156718005759125673967988457229048839619145997585270368102435074595029990094324102493737818970275642575407600875588537013441673454455861497898836728065291478392070865090189959309947742444986923526745948057899128034232868017159368271694223700039666236730894705407231009389857561190687139334624948051152611495443371208819706799382667564652218904459544669746954713753183826624347921466724650586905939136598547335012617702607014113794591546834254696563524548343500981096958481191991323022742758572702244370470464413665803392605126994943740602380225661619992335366449312159389272554547255369597536289533017879667844179574297853538262473990737634615419535991688218597561417950967595509116168022993443293531295365421530990278428579503023488689022645550899786226625323338180515144059213727584521215321722089993299184212218054163465777614637889378688685803879328452385390951350548924489120271418100487678768868428228212387228503799518279495595264908243662176970443975028752029355061454695157141184819938299926947437018478957044395662391617808375468649007600370172940115843761412592237460566795143736348519450988859101853660296226210668299394693230720927858276964586740548558363904065214488088226818002415057852903743836014126022876012254536312345404960062753442098036019060443237049994545797682297235099797863438436593216207403158412477892107575374686442179451430350704320791891708254315536860892520182634206456725864813704568320562591782038671811141093425946482688159934297090882997856490197026962532578625837338928755211465291529523683918247460452910194710972484675179153177104097104259910518268539520304289744878391349554947980543388976876106090112798575825073980240911865137171222653996955929253877954855333315507869969643594964229605539468134884245036416894025484737992830203554155653978459691014928198149428959910752989307071317377965664300905553289327994588549850950284644007080706241112418494862133916539297959029131158062514264923394985650739154621700845808120916284537924609624030443114218948985698358239949762635499673659005627824880546112922811671183977198549908295009183673236341667156736650377361061056737332063403410177715559814144656394550604447538215779823278536104712565326761405690441339115296210030702222989203489845948281369398678770779363415632864910236794328437692624022552548328392842615492736782204301768665965365930746241254165608754964908497067499545759985298460945344650446835792542841082131510112938961881927693248231120221756864036707731726487325938077272576650743798183544800139162905157445216386915371613768879264078891644381253089581539609558090983181521395649500355526541811118635730569046931361684921810261207373485062516626873625896376115969793729107031511621422445382850451172374270682693053568648031104008891817274572963359437128249991844891468313131004074851541435190896882353764875480896554449408432067645595533709041759932190996007431454089967656531249566609171679862639011907239936167049017771581006836981063193553563613522749187290893357797646951653930745484252566662895227296365515537656517639786730623586151975310765480540289532531601949395336304927562830700960037825411985561643821347883034995939999815320371904489018486314948455952559263146409710068471713259502647267478001977847611896061825935753950424233795977832748562746151379388667659849662204204370582406208836832264614999774576849343391530101628342373099807709619251009982948420174200692400576186926512032915961194241973580587141742017725523177905799155980685544702998175691236820149021743148908860959473955326805004843786317283255788228027783973963775307044681831745418957729607897287660450576165731690039127804414511168095180765758455897687743007250305015608713824106966239837615772559788333446260389735144551194566097856159222619045281993121036130544888850748533209105902290817972040683491743672438537427407555076754103740470470519996488106893988963679893402926779777315510136748292964498716616387480928391333727613516511458687653975670170800714203116160576633121381876444223289818335512535646590900478008372238152919598466400554972447258395277820369798167170321756327919408066285581702239995204777287480387161536727459448442509762680258106041535327214632697312513497219121039425133532472242095253942361432227842877340347922588175651734262339738440446492272637919578131157514237627203984698773116783796765212222546280365874311759355831644675241116934493294688108999510961605213084570721687715849450396639049106141887860856148954550750471455629931627105000620532269066137825781316017603220973433261333991034567108467510498624962642488699169465874363399488868154638948242465984577292633553735556852420099382096738662832127104872725881996505036610995572650123609241043781086883738614012464955179446535377004978611118562176293167638027449612637695085975726247778121052711332364566219200112876185845464416120363602708440087210524126961712756204182189211477418943839212507448032291316566737926226650207942465800405168687099249273393069060646360798873617365864441322829730079901581793477840461467290903920089953743513557150545457465001493281676469801544541444627173505187869563691796834575745981341826378231855942604285683577230974772727095310465725871392788376171498988325165587658459242478209763818343931715246275249033847544355256625769712507232847344158590312425822454135201105768865080501413412277647350979797597165322409320114702032426981288520271353130012171484594553991124856728942246176555811779216453894275972582641573921036716718553318429096852951098778309232081644343337035691135410384601765183315931601762146264393426528312050751636769212945201832547953844492774251628393141343106226795356284876139469403273284444586014152400694986734961594079272858809061960949904448174959103909564433761703907276125412354892775335876415272646526126192989549857858930065881045254576136386486138517438556555308338685607210816131204906145887848650892144421256413442786428159719389978047391109134257790046140655520758094636923303925473166438103154754510983147606737926330885845999568999353851276202586739695128035976057952375907156376600975164048300965313860942704588148212587962879654957903805340177854247259711308541551603503567837780970461451995771047865665783511661730311276567901518165972850520986636796137347177492175264790310493561351654339295597668712467832251955744640272444007155359474048804304065788982945928352532307632627576930665303670890426050955025688528627309916477125616012512925234970728304675990574496468777227069085170298364495254489068034897491392933909636369331527636742699013284766902371352506091776350995292002731244023865757006858780469293597018620342571723772179977093125789699475496105523743724832176529540068144093345882387953940656084217900519955099464578748726508611651485516665622261135808230656113185935758123090731435124996047414425279597354359574378856570913306377601759010157157490619551740940998388274502844305091669547119876233489292751989516078837544062423667004292912251992330172087279616497346882233046859736081564275972335625958254887035338484716664189318473872485695845339136606272315059741608927734938768821670382249825317380542046557829438761966527834167384855716224439462405323266438326536377961771823507569459750423103138290848070089339750740358977330113970497456562209782789816756431729085281442325129945131381329920983439892601873489278892739994343671536564003094063601168102358102060511646184488836555280866265439572865577916493719868641514516664261116535122724396782278955528978764063014169535540654859120299172230842177436210545014476071475600058330214022044195137271228882609806962913480150447375885450575324750279251402851061941914287093134507336790423199888450218824466412490267199774666086468918833734387337497335144015840693004008549890781493464193192460097751739334161380017888359443004786038046374825235310856409598367802175188078401652900630883502414596986630872311085261238505708931003788068325087199867279768495262956883650359670743609352716895125122349956601558456299500231541599105539315180746997839621279353395686142155700423447977269222089468138684489318419154262504409821198761325705465328527695537157420782082354078175035903462010430134986159387812646272750962009925857083492829567970790332465325289206689049063764087436241829439763284627544144883357167770069639466367471860398862788075053410539365200406384307372970511564096399841314435051459484946899992507044444836354985269418541366246616097379154763081470481918007310765539689731840724466167823996718641044946480569623102013135147003272739284086213587006083417239308558779132947952435879189833909533561483821067431049890268359556509392353401539333788301678145208658937272723188794578112686709909491108016192828130703303524780820687044001344046854958188080136806595303293237463476504011920463204562731540166037081435695648333493988584792808470211132901764592133330530980096778425332932212735837577215893864016217901368345444882023496497506785629435246203379531538457462340173890359032774939687844147198184957025212849427638320378720167398909916718917724985900920192030214246493573397230398365110417352778733527631095124650992710118667623539554692566783429394136221716928121159143717386855853984409631021985053790618629812165917024946228153251349408767853192940114553370189242241369551007994010028856078603666746043453656590118761983375709654169884658816846754918144899815282484040063735003947309015844941305847294632029009712335365639096408778574091927109550299652681981479767150215206743081866358869114610816772333138477417708074433283279303532825808874057642839515755856791048739006988848065926839028819778433988669939558066650036824490486884666934262276513630175045822348774690095228540301868104997197326328212569850060274724529767914857676420841256961349265084840795236300841400994212367633572991161913691050780025455347823394988202788101768864502813390202856859126972599856839543990159365234030538827346354126800097285185924007284964690706128142631879645458992663766048427439769100788649351932617465546902567125707865370814068813860587244367746419075848390538678832569432671471062986454254204755506074801888029161552920066319891531957945773273477214975812022453730709392776469844678661783580960787047698418293376308118134867752848112612486402593064704496634807094220104296663754040709636340404817455410880891536467187831977983640996849951650389805873899168181319390054320789631028913388232046260307268390249991322854583613804193446810865918674501358892715568404694072865540886401726893184784714501860380117604550931574048136798023258513596201002070068810852653249151000051456727886861808962487581377647552163976398924881561622659417081146106665646072744668498044426052522804636851043773834785399184804744620318835737108437901882030516095623037578335280017150548691261342926746197516595593226496924022045173580598481046504353473187019615999528239277638114058438415735028254220037867803763085393466530484468108461280119649653140359265924176687880191882252356096667279055875924399802049955390469540917907333623282921659561338713671919571784854447264751582461161121608220632552535539574811239491907977080055351867435082725503419467499187011802283659752233542349669207811280081047966667824818523441274660618920625130919101015888482026053951969439894711895548441586107366790258898741612638693297959237922447608589158095992135723952461923994687823650465896764883667052137155194576002906847524103760645387180490146865124538922972372819826875923731390254431637342915817358546048808767134126047097505431381328118991195760134187889545091844395783645096128280496313025953970498006602276712809536127205652543720418045709969402565206329936420465311999349099261495766939883753463147455929093001269063984253071712863023553747896664603639453734132845027589712104259060427174009223665700657893713650553018587778453891754253151543028835750947685193000377825566600933648482508779760768199662372049766387638985631992100720003474151721375703211133912952407983355924232680111677587187241552829353741946423917448296404338549819202048685814597880693735805572741960307139515943152276365487150482922514045581253293812970267225644349179074560531877646062461313500613224648092931335926366379056886844623491593907009953911828052093623916145953431995773150699039217050325951921320241782503621522257361377451082489605564890402097866814491505081488150019983296575499211151451554027366425864934924114301930078755148355932268605394003602081353485970925801149654213968714040128138987924299507789192344817388231539104117379617054404077042219865132840948934920651343894411168095993753287475595036673571212995962900134686846347787877484062299240326083529798662229832353356661104190733708040289237334415143318464007457016765783370725688178760684007631997290723697308539152704845065598303686071945621892934023531809446634995403272958391058435649685487542623361855343322082521933633876027950702259029069185899906864695622617535870612593631958372152800863964775616329570345552185613467025464216600056930056849030169878244758163240995914072907600096163507820815348734058513665059114508068178367617804243332753749239571295040855080590873111579164335770288383740923440579367884707497712423043388562508100574697765074001', -); -test( - macro, - '717897987691852588770249', - 5678, - '52992561458966917842048333229403244806917799627848421877881735070477262881098520765035249624964340882038688516377409835187369665592703958080735736766945912536313709777389461793817187662953548213601180992839097018162700540199444811234129652849225410276267930982552729151588039493817422762367215695837880393501083343614940195379176805915010804690716402053261575165097342342740863670719437568773682027047862479103787981449864557595411550480691451690239227939258640148661525627569354056573032574365819474479753874049318092332197860174730296445988139873008708564407683788184545625049358109338930604072043506368501486476015294370204931967091112231708457059830732539826223797283205277978138098770871113585235612923319080860928191126542635460138797782729492896291235430456696065935768220494159845006073392139110350323314505384289055017134916876163400462621881373937156047111273516233295024171469513762593244072341275620852077848874899582624269495895402815765777547424606219477655639449216632626280672365511304216574465048481409555551898153578798780997838187598030296504499299634026846370222734083675507056188173301287819190008251323703160735842279757966250463716342218905187576189745969039286653568566712245083192424309450098888181155360995569923237384829100088794333552637537227162177479701619093609870600007097257152299648831715938521942096231520452892461541884420652580871321292450318548928985510277252222535133365388202103209163165539197901552072608710284236732915850819518113234646115533291363606803403675185089565146698511010652775061073223214261491866092146057590474879116664838288380912194992229955697790523281474198511681898554287250127257584177956384808694445714111240128709963424475982531545945446204678284012510035965008794769324049843450109531060002528540713991395046933182699881232634176242677648962206607631738502280973898290005462656772264590786129579181328545465308696435762205327818322165386961509403474972525469518547542068305372202808432048462319049469153118249646785678722142597199696100956128198604501655682922926268156814400446792306656470188135722009834179368221149303323894575881803165080171867765138413350984666824885942458943042705023835971675031330773162756179573615771369921528023990741381103617964140627847781113773752668975380722356219881474606884340999916287255829002765995657643610750292167091336372823055491725335254964911991918866523018470993631691434109295300263601212125887194770564215757107756618621927605011672982388667069376436126257785256735035080395442838012293011886480858182971214107329249888540878170831338663664497081571648293369670697492303978168090750719696674347255594774732019346186950722015778265861706529434650218922964570378758677250144083322218433388621419998372158607084870550629095764769864396578302522198678754554607834625544465903300910375218946617943281021263817868702534903565965515996857490410905151194367951674404671401634726316031502775424938708095480058006939655833612970659151929020021108105677362480187576212239598103259569657352323481949129023622185672875961306339733885857708982104417776147428446169851035372923120375171782152648094932708525562623063044339202972582525453779487351603066880013958145443211731768489287736596200008852460116803737486674746320357688425959700168747470090109849460232048475582033235140686903423628462653109627172118888613705624945389644912331260448674882803772456442287538433120812454253132443354729068891796527676701606716457913622114298779919239138678095658602599035272101050540631199171079787674726148712746094500511958909309383648848324958153313684693020237870128517588375127269029825997693115614438073154312047924340357482412336581044347428383345931096734448615207346214924813291025243318597445591410601657643923497289883965796840775243249869681469920755474682727417587202159996646531840273727959008935890037688256043389201553466973472089962210203795891910446649680901883560841094031991763415446185012636385884139521383390919645656949585657311438685339885917614078799309904047978363483036838818577158746493373606130783588041171423001575976326332942068212106971788178296357879590268289870554895714998398477383074091612380803534549439364991095989289183083877933651758973534265032552397343750530201088858666516716202042806877592785968359618297523122663345711107589355569471982996246008945010788125903082708965247233856493295495884971617005159683177020951059046089360849718770603433176136962787644988761679786793574894146198596283619577589492917433648008790154607904592377489003959969338300144125428308936896784361334723137983098924994947562038207668868190447389976840741447171621269619747614678405424544476952607756858007392925674149003932269670585532289548230838340609191813200074864347826444440499651323577336653937195827618989214774650052553204749548153719625554328240930029474674929792915810450109353297164695948404332144143911830336116561122587580838323433271508758381427202886466864203006769876629040113309536126898286439306875888068434906684986109839807912211044229574073513385256008653277622489509139402265793326372569157760069106457217990235011506430988742050031863394618171218562494463476850191629255740324446363242993320648668718706796758945218459365076583628726166585648610786131608405727805072734696605117814467304269584486848714577856278821187639674139091420868276683680482402061170964129020179849417226407523345979683703744990934601753619379872634811616761518185857620947821097797023780246814812679446740501132957939033231020697754175111520932341860938863741889626558269454453009814222388294592392173794599397585978687451892813356296473121549635013676249164244665043044957101593039072361182135678926932958876432422873012810178205318591023576753916592920079031115341838800740563121977641772239560122596720253059357199257880604788460448454541912874334474110048318114397597184518307140986163690693584548192536813827180198436161154497288570678489493883807773676094581689577716104059811574599177659911227887188217401978474514757553745261264218832355099235158560242297233406180137292308698109610071281861640728221129462482399191931254988997403297870669677165754913546299432301037504530872073067858354779137558761312187986108590108671713663509463849235645441069025317032282653619885664511756487047824929057588473863132476505639554060087119089853326292527491890156165208813193528270287317866931952302862861082174087615226626147432099575255480389022327072418068332438673738233637882790315683455450464590709105784350178739780127964769969011026088597219619472341103459382289201174496483005244865985320414773065969458214373055466663167449827644842719260068316989039810368349530823214414315840300587086860582920441160086337872788129994593466901398749881456816893076117420457023093235142704769500472838381750950452685686468352355934718793080770041896266326591193598230038726258131382339638465090689033062834104050137121528398579502285618016610064410178458485780348478662846002089852720537701136965653853259363332024728436379986256649234691293765971251875100216741285408346246009343410757983483597963489740851123818712786795291798837714819930591978286010640687992692756495314962784887224591285887831740631885066445063662149099404455330521550962587381135521874864351037529468684827186997370955447481995887639571571525702373403403761671748587109161571183805369675426792116895119621582920253789699657615500011890976403807282199844302806272514657032217062946033211042074109494896045803992953473587506222506781346147810525891832442558813747914920938494195556975736956239077078403047716108873401240720217398379985768790248880164667538691286461771920136462983631359473029704858507306794650707316446091278308009089124701630706210560168792994743974642056525288870381921514176601924996181921908722977903765494032218635205563065562888264623205077967964252752702442201464476030020851153648989654374063092609825139716406169830702732441666788603492696815334157061439959989046789065423318960712201089688946540796678378497252260148940700296093007934347669870770800342086190913566676064617891161093655936605836899446861184700094847166382869925437304928565010472625277681782787551544062045311275114543518096882812611825710549053207666530027825046311534181156975603474991929909024388711945463808425263464957653237271591373069179547100808683091655216330416092310214397175383390044315163696300849781070219134615015219064302516596226701912265613020932966925428815092790344445459519486710818501491744578229686083894654498423852571127489975219254353172438337650602238280223597768220243105815348527252142824365262184240072688609964102457657199429178311502128276669149947703560777240739423309436247534508874804401314162274740915591635435183346939875420896409168143366133287003880010386186641170364265028042141513465453408101841921842528837600797310807883817569665409313593668849776576983790985321325237847569765650823790815463692017963395752927945155773792906513914253930342695948572439951274479143533256050317996678589637630517043566370062714774155238038673228364852986154012293796986173903941816772421914136811088242656279247112124439226958945034478877984596864873339798554814421219750181744221681578059062457004925780474249073437168128231790400216332672320703915847426463055894401088311795843457416623717000078714687159781995749578194250354449880164141903126715398601118555657753088212238422071158309996360998060316430904776007237664213238747361809842176066931627956726802459178808505394046664002938285314488362839317461527679372532822934704704470253690263875879702240062788026418261529389183596155698524599722228817999108140672748144745689714554812265041175714545225389990781353970530998752805250297945973556929670870774946985404265424068777800150897438843100570165412465536409965604362377295700424297999045416603027704210682281919437502308628718607989662408388051610908664802514940396058178295301888644151245892936386802507105326053427738255325180381762764389027620113283759653480743839809992357496074117200755535328327778239627950809058337055235742086687019858930046083297050726069315089882694837254737886800564117843966144822575643639731768343937069600705061564770014386059309401600994691145418984296800446891914436526504588487235668560512126375658106759961423238985938919327850368124270203404746108520903433047821070462173699752058768991623911437121303926263567247275258743101051399711951304774969904872170431870967998534905416515742768485058006433022048620528364549739197129869684349063800961670793383545725472346808561542828191153302612521938569967207547584404136442698715207952729855421979521420559878331433668100753209636435675712543276009510142074799136997641192447567079334735530723873493925022491212344710076896739154338361999719913499831623432329457641993249784570344228676317925346610689759322653659928903365020471696174639950909615303515965200146660518282411647170608800939660621685552950249611706475325198479518423077155301209371280575534360462938867984963297040183736104969929190183531952577283379234782953108926401989267488044466794228043770347285979888837421775091151607628072534183685174245345816369526145717126891495096063726823540297588186575358585981265343937095373338996442251138594460569709569806492449609367188654079820152455364920624125030761646597005088999711445807387895998396475835641806955712083403146532371590752368935420985233735695950492134965346564198873831201899225738635547303457400703163201429850285547082772143821844313238723456259228759115534200528631507109400219431734564426566942208047195491924187286616903223592310617985108600082628611087567285767001840566153820546701939593194433998024938689773662808625697973543664837705457336677737765607746286815865891347597385126417092248398027369133671804532615511954414419259304523253807140857494548560843072982788068686101289767274829556337961469578050554176149354133487258534215364379154660461310427570189912699705529950514413147328168458631103249872388038937376864265012237965847164952284836681545396080247290559401291604967701175723121502236181093388323626875423056619719092568232717945805103108385877791944344245670750247392343384296108323807858305055418400741553693700502565024106126585636797090774279356316370509236531508263353733878156923208632989404619022265962263865918260332262005803614050713268964027332085964017902372988449905870060050221522451244273428597501098201640739856281753377806262510621286335117441922221183997764738785835690806964058090618523209727153455617620262903964419882379089412045613968114570967614290250244897455062121766814873521607883867929237291112681395681208806316115052463955424369530957702703335301336133507196464013784297392355963686577412082487656646900727164897539211910515592015131790757084187802478999731058868779493827694303480414208944059771372285831516411891131036856120211199256880755033121745020506905940385581282403448035169726911436826243069847201133079363947969342361067328363441956715292529385906162072082866885762473853872136917177105248829462003088491198093528321254844293731158494353309329359943621539173472646030822664165537362617032785562181639419716789150739604369299294852110605262082459555983084488041202822751327819978152651961662242916641572040409255879415966668785223872853617095739101441693844227787889967257101619837706529517298805962370005920305999407921230127760675120172113782634335023130691310728800481538764425860624015422603351785485421993634219805565282967254634644843789616543323341653341146495092459321686531162492849751882105121323719768549112911144880654693888232614646653956763580397332567522797083319499426431434148243989859609258432804222067142397999063441042035277929314828603521084355742771233471852499158339778603981017500121847933601889420815095445410655577708991650898864592139988828909325847690688265292963327637387564935819554712076627813142907683346250203958929989323689935059457421263112380235019472983111424135581186825910973214910699149667710959563181536691099143613233601161732666745012245211307688622118221683809456064734882630698593204467656990257941572412614139802715394281994293120883156362501711873082011731962032490574884682131178885924065895059613017568119400856466320056952350332528728576467215637026738604714597593759418177681274482897193349099377791845071840865476390482509958300517175834887188010180465835340333367167368967646066303894894949259012937252758312734808329709232360933894530979086189948266744307651572635781288044544893571461370440118431167905294073527312254045244808871450613885567599305888413740007585647252065620950569327491405356998305146429471623136661921767554001049077582559141269075807726942292324962879195004849835063558899374919319497877100701211206496709025329275359077524423372451805882088092879051313263439053059246113586757853983808973560033255079821096458791208111949975520419973969738539460358523519982416915144979569986992658895580772468544281855421641228395656106360926287526507440986113241371749929933626943002948875469110027470912266294656790428857661799285796092963253692751518091473958954584426686863281912392953724819538676197544419608647219428371546066604565530829571887668487791705473466987941636508397417037367030291035726974209122929822977256282776129310660064280234827050717329256768834139633843952427070535536323343517859928713869623513480175609016408364304241592622958594443056559986989106563619631715224662514109451710877519669377700137922914878226108875076080968720985553774478319079858681651339801277697214672775772710298769965771899451131005224958432124257866462047576738776398467445567954900257927297206412032651048753538257470550748950042956467383856098326990699095531754983730997777376855850204059808381527746257418211558497066091371508074576455448794073221457106194028764995140574406949894779285509688637508122002763143590113564857465357157613251821223444359965532981305922833468097064802147367022534931051008695237039566704201353988540866088741667038552935423161581934287462404348346959712557410094417500120546248110357270320222372208679677188804508939856387875484398668973720610306440393165985553874361652311139176073072642232364301455756578533325673397255829115802632064375030488532724282480941523096056375612516691335273199076868478063949077979981834693199226789642526467313758886727034664155374708233413052241176017997770755357925454917422006910044558649830410441042783912087181440912216816911418077643846400706686847762348581058766312240711484387486718123588654129529313123730637305855816034535443508751239517641963906747738873083589048844951039924094554710311263734798500241327075231542378920749258310205825922008644493121370590192760015148501273427214461014155067372554805948839297269789248975606338557054691632614937241901458805041012227038978979812168094150773239740200926858206670986309560725257896194349092782159293694188307081347049188661030610107456715733073715420873434056971119630761658470234370438116245797515154771525887334083368102698399109278569996061959700658346646955565093203139925211068688479012109279872461395639869548120204532938913593022473786111209373901721432107297071448742770742412159279076830118439645403061943303917551223288001014702113659615663577592748103708841776873178445568235386839518530066675979433748005530615064885650866749177914061788524262808081456736332733040493983863214714692393115801670972860894965741349096171975727706157112301169070137414347667759125039407153467452265210719726714985635420293189470049637210766042254751512445609291095350283495503549502917353512206358756772848829158151755615008365723008445582823523075844725615067686956618810366284960890688672135540705475984841760373827462101875128799270857413282580082072800739904057148821354442778410810970050701431502851594089320392059591004827037030949407048303186582849254894900004175510461919883551638536839489510245449220044773071872011316439740663014720019722095387628672305811492191697738078092246616407460689410223935009608878423391167281114435298028095665936771603627090834937282850979762786426899134362341889415374040340896380252725754909908018401107333556100522040895675585460969780799009744922983914153517048037312468584877909733205649413029335540211297879068656419387807383048842494215387689331649844934805491180381285929557990551329032335758734597115389529509449814729908343459195813101027114347572133759851590325554983005153111501432758813072569701126690781490951740575825405497526335840722010023321789428374242548378889836216282253171286247053640123351326348638420215428018887341486150219038345363430704186782773219435948195386840643853198799818242098668338179745226151996534978279230096399308636037991368814207217507069935928147009785676785160027497317009001777550195024132691150567507011354412329032340603521157466518995650811670602491853174280204852628446269615787322879786482369408633164257134657023953228812362587592950746528121453810577970418765900895068401958324820738606431245080063027400254319882177028368653741793457795068935169938691425211024828792631933230877447721276360612404169065676636411366175986321744222814400246758586497722397143948714428396712767471630538898122410697568130170950184011778819880862316215372642601335542980464853249009026580690749759635033913834129498173805649521698922073038683841857811453879318495594875910979538327284780569733959417673964124812143583018523970514641401891081019284489763221082086325354879697385907787761049442665031058490028534622149846137905767487116029644971254430227080575349336243717394801443483839458265798732710051462772605466482812641037899172879970734427748668316293777647496909333662168116654868712457269032630974156741200422999141171874097340818602076458352626593605494845936264195396202806647904404677157734745652872270210704027405978135714048673747336292778720101960923698684395527092073172044177213818544969591585627238532808299570223371536372799012875224234778370905326852914976423861886454350497565400489482872955448045615907842220173649212448684979945647349079756570932865476086046458864652043811750235877344393220429343034415180297212581588145608747445493372426999318493938150343775786331056194752510426503166230913186538526760445807413799806204051029905931303093836872257279463684631738363832006044614840509662858475110814261755496445327276173263161251358809092006580985277059802629992110919876640778599238851224190806234298093499859897877945279235571464696627205637879325947667945367188005248720580469836926696939939415121732586533901411675573681854304269524168392617282088535658385037701299391440541334384518081022468387518749703363096233963804922423094068395126707285054702218861778016173542392815212283678372323848563282862826760297013819812339131493327915541965803998097384090951244169643369018641096219195430772492922432677413755019687006516340030964660067215342977430274756427296622985672207880091256161463966745535322513359262081324439248033434926360421216544044746832762555450035219016309931057323669695525075977196214861598745789848117118689974917406963326147153664733948922010644259043986576126492884735748201429479293157327397169116086340829373474447532461009810536262731597451754627874681161347317493618449699664690398390949643587566379695090443777568885944452505841199312483422475407319328641366974092114345516068535284073079980141067468263817385977308228962318323609469322490263507101669512786080642752319574742157425134152748843756299008728152305538809501024125010339213159780735824709099108882350824446352596024291069384003047531175618027373859127640704478972526885889432610483189753615050833681837753536005311543749368107499347315534545941713644730273702333948596900145557971505509367959108594407502948243020888234056853650963187076323765146652614211207546354464881645918117204811380635728429776867963381852884230518246631190131825530206787122927542913920281579736988824992521073962274953252144927376468933425658712672597384028057932228407070530265731165980966598601076506604289064934821557949717410539761505040873308406110474412692271216992858783788017692940669126619626790274625702146919817133167454141020585503777417647004018422961010432475942591656281157554753543866527442721860074055221343919493702427083052905183704806054896861313080853192781874338774353472175893928663360488609634784890485560515252214309637081204987618424027884591397424067625820413547165571090593288097729180898304860943714385424978418160835850877717027658521907629768814727424695191227358428401962885565649381238098204936255938797308193040643227676416950981533713051600283871175312807406414172316740879617172963584690587789848239482341701897688268557616992035582225306531638164023604262595670103263609695362798739463036593927714273709560324792380672245014432684528132529510597382659551239028729153767533108869546101650464606517031212471681999067256252173869702628620955732415793090541749027540473718940312552425322149119344958406002437705982398992267252296771928467559404038212669370252790729353944780711661881552113249584403769083480856475063987837244029373948596829428019040641426569984762280646821052726889241697080032561970596779105934595957656757479131467410030344286211442477923310898646446342650046369081113562118381113974544065289731235914381813526415129034466320886690781519982064571162447720218016309577515552126698701486349767343461948090842618080712299219097673966015228424172663889427342731020122066675346414052340618598182609249461329861211149036514914521730088889300616712047373574894553971526437268977130623792336839865094059220733603108966045443149552683777916379609517221061627320405151444134819286421255392382822364134687682168786843209394288411699746863444889434411414485519234492407599434325668997799101520066221602884158226756336984242409440361323534712903377984364440121709955882861088033253565408769726596294534478786779815095706073686709431442168829090896416212535563746063403950198043478906364003836786350526095004964058916984298874819382063723661497266846181942426357905013650755458667314604787157987764491101741899567408074361392569794087507924311908229702294763769391197478812554522186741135262551897352184690374471893073000220162512552332060179402611785987981834888043869118074160633762440696320006275857520907876405364367283599977809702429809327633774811777287837997929063319088643981288504577794563897734368357724456507233435413578168544122187905557510349163877892031860938380863700212457499941173051991635044055263541028899765559085615828388330183855986870987907204189354310066588413218192874980402116441641033329112521433352585269389744561428992772734752313702102338324264613628379476243754122969786509425444725576325781027140066964089023790292891876331352393285001370386695304261889280274262043056322796927733119572711356326685350484589411334123538058781520196877872573359539914258371620972518600167848136853804940166949001046871343046124149316149555200621260500187812862150026333455832936133319251080100944562462138196424435420637124060278270301200807655723626316279314677989720701526760643271100348145148124820564605091911779855169535418882307665289900355017573800822546237397396616805582194694056466899912723329771183008166619132092740342879643527581402206500436271851742975104495236263710329645094452343102310844177958838929699065716898974352408381283451421410089914102753296005962431058406067303947323833242313152680641247938380343115958860199956778403253209323348645070739497071952928327376353617380302386451510499726403590049039220125741769453186556766459550919922603305625386150812873799214104365798370292908598658060494523919882837028108696230018764525326479800889430827403509641329404504108584175416299778457550149516420306914056180810908889377149438217925739822836731498632998974190671944437651733816831832102819701452336948218481443109835371939006988086201718924066189320116586181314358289815550824203560990687366887222969587068618783822844334383574224286655847585666103020816988760101669647856537819653647348642372860462072094399934119806713804526340303858796726062832597308487962786568628209393365116177313500258916696602298504935899488231886983956122931761650910471751605728341369214793135444893690581825560582275170663803345907902656817500959962305071703161844221586272436733043463590790972533783408461905472360665984339275927320721268991984362793905235237928358401214308908599626975869024433459897721710178957512745942114341723971665941816834394308329806825884356070709685761638881841811423881417063972638317949761209293108884169157244310554120522091867059525129565074635172821024753666469843554970503238670636464476697226613787178875812109508162171406085559173637604564435642338746751084270357452547638347056148137732031656248286326291618903398185758507933313960978162364875292581607458217158798787916676003226916398811579605403809873107421485543087852003080885632791018542669430381491298441535109732809291308440227122322919323520142248717203062944396531767516101348669545805257723994808980312479264837725492136882355862941108451810186385271944727323937476421051113190387402775727960536639091788137833258176311969569961943551611853786770670960071652604792541940305956411115347733415222667549394453865233071674925052111317188727005402659672862870124353044134138940763586559553241714723475928344653659170671048092842027797901483049343811224941954463977298856433740106969036666079845988063391903825032855950193013788243789490182350376071702678007109765795706678377357340602031572982332824123773826221420577356000773691991307382149359100536109508425616929397580550980381697733400694828091467008203408893560621735626409474184799062207420684997475127497499271462600004670205579497645152495972389782480775949584706612600406180867943792941868858006175201936307008047616757589672523735789473093905193759863364945186628110590148829061593580057092925835363208545182849585868221368570360897560213869098865474255930740671657540215219483723251702391679084671148858456387364281103663462079699683913175189821329916045361853985054542513239589981629807348515391518514157410480876717317086568995965776721883816029400496479881361209069153709752129572198334892249502748191465310837081561861610032985534309285339681126580547626611304860810381677502832262489332934346926301205586228829998320869739620904253982155600321208706995102261899336727019317570934776614228279624359270351092121785581627705454815208145814747270980169200427592287264446298455337451867154675225312599671885696403119745068812877999940157697775260282173718338630223097905166067171605705202669147542203111329964484204150252769374041699642264247344682780556183768647043088086067328086717187740722470761010716276890826844033820289730485347275758989422619495961781370981845507287224106646612891699787304991489991450237892608587094959507431025121524157532996055387813931382902218941327406937104535120623519125622928074921413343511233341463048114587623180196119633871033128642353961758736942162376474650866446500486254254052378915783117942846877531394483736296707763850427149576406806692201719207270711640436539293214966734241103817572475879693972994529271225318511005262619518630808170022848370992692989178376091827819432746605823278836088860098280229785555789098175025591438486997677754831517943543494195444780421155712600231315338591816992539029327290383750279259408507030866894281949592643856951856970260492648859191372445722757560829643128598473999963495915365217562729260899176033339914368657427490270587754614627221314473523385599772728811860813438436363568535104917622395452899623639754284218650275206353695145264760567105459178562491882032831507849731082780751290549815090526014153248389638366562779197588704003763886554458980922773564631738946671358670002437792609926532640853858166371833689910006342371227521888985462256616595134913448753896321572610914451983732905554764025205460856114907835462908762361867725808829101494129427887010484807824575634192790958596192835856035642229775443466803753619433447559913956011510527564464490362903893004175699539657818550413774129471722988670400259357614877806334270973688298172787849219764510531270431348031231230366988119457069574129982095326123736732280724513806554712464556176030636815599985296475879329526942793809334154537286409720616279737748877805830625972559290659320870467177007699656878854930950374408662534796671508779289654115928497876570228294960433889385643701335793908755514074473749964759488535101951927148371376246782141759279753146527867175256859600371220723263087493647651934107824747038684956089218459994098442077055339542213286639575013424597339692639209982667429839922996745194919443742101455841754629560994904267305390310619195510596711795233359996984129886409644969307626193230100243445176341224116774838302230433293550887983785529668376917774923810049977020766265752226119147869678480128953266773825987624533026602499804124858105127910152228288680919984865137490347059505127939634012785058380116016158201512139929087364709693014634031763687342662706605079791983804043837557045973734575431521833043317763655587404678815578341748648519218701877257148921016285162472607623283323249556573753034374795565710904057626708068152251494257423269988884212986826103841847235290434753139713588793284927733100788323782464581521308771041340355123219181562733669769963813626654980259896667571531426558561083021853772568029181635433012078770849834446674149991209906653073314199262005928322117392615818629566430413616987317922057832297584265671398209566291140412705971275976266486649851786135002249020062965980087138574535447132363958635609925366757622786251073626356537120620726163351028366500669047752276806994698670175421508941444055686927449826465211114309355867990655881671257209904683585254426503206543491199687267119577128778582396178926678946290201534745035364519018795390246746811766723584255073984715970376061829082762752016704470773798620997166862372135899943680412430608608549449361762094538339329299440793971638832722944360033468293012144165093312313114839006029476318874961592758500904627465226488109581697907382066846687530136534632837946481815741937620620154295350284380932563345904144633726510177800611951790431250878298814044606538474701064227373555412349001233072133083235347487459787376279403703807888154514448002202951245397248869293062600560134295500105008538576207064629412523316530627112626565186270777090318018659291403078286535004079092813364057772695524445708298445548622123608796436695854008220295952906804796979613002284502190226292523908476214322919392774132723010892233879221455324852691358984021386299602980995708394090452538155116048679915227979809152112372669411580872195011069091512211098837265014358497390191374862378298332979828589280675262431318918898318225215446376722107524363251975033827569456312898080064881381141772242054225493451609900958323016634712370823083984626439009976816172490877077263224311036942854664827302424290250141379316709351675690520061130683735321311996496187247021962293994184343787870574057794627801215642399757391689423643087425702078241032082171429850853657783936393491748921202257137973536585938902448803265913705675751505623829853836767351048275120136814974429359820277661179090491547020218952518317240856799497902090061811729297871492235273099451994560780849999017077268810932708025581118347013333023449244901948116998051103180964193421409328454794534892399934923614215588057091032039363419930676743779898364001040849687155406279816603303339546771517073573996877517822995705129876831722490952428194724842099930819145094619254525540759400392691443317175946185255495513754986746278892496030387565394365588879946177842768690923727638413659745835806393996818031833024802300235446835796085570745553032228525815450531967652475109305456596317989530038989405999117072923810555284059845086948523349452739911967441605727895585516463617479813514316281381343200540684480647554584918667587044879862223471871709991329936110666394849738825285286263958437079344497666129723469849274424451217808101012327262154782486868475696579972204483320055712556519479118501769492253109282648803982799956007070413969057766641895108542980107519788443327966941933926975271423626274088356029953637857404994029785121788713172223066847502903458085949291823486875993171596694026412513484348659991282842807440540512919421580435830982886747148859097314781713081716943137837514388166635564093209988083853631966764152001236937201021272205337526464980001923248970935051413391014325982735295720169702781387326630373314301750994939700432204266441734849243617137063200743900861763556953331088533375662647974513214949950360582587461449318953013746171392411021921268719401083870455409243782703438717812520258803044022398736843362885510789738025682748439023460396397947226212022325837892155810227799539254487217780142395057860256227526753652355653439544898392544874518721260751136602267606533517775781758994893256983747903520154900084664232199826595227499066488170533660614570516974168882282194703476740231831764399346962406995812197194307712384356275327126581811963829857081764545583491933201665655011341750864389214260118093942175688349922926371415338795911538883608650663492494285079393689588623801351274317524162255546872032205137602055977698588526953067919577657802157230724010580762546282119676770146073279290190567417587379003247680752947289021207629278566655115192835788767007491592173561216460960732338187214850961468821550647703718319006714895171928841330718580062654702438419600965779600185378625085906358134551760230035403561105143710833508540322391028617424456041890440768192600260326521458091222064446938238524580192166531189004653013760970323476986163112729146041847368155310536930201842388100514907989986285028152232579121250243087183900990150304104081116859121286448239243348357354426439332087091013606470363706785376906184268755539296047766065167508797445567080041967876599818349026917276210630616917313061541554664359090008971749776374922888008224470479856127371383520079697079481864438879042548335953589849253380664920899400066389165030020576281747877494368823642902286149859757979430259416772186621524014692936483589683321666232231917198657382422968512537393374246432506459315712945887280161525313402564412785562279688402776014658097920177207595566191984505720566032171980817248093432499471573407422741267535537792190907867772310470192246974486242409294991646564339659296311172821487691415387361518368358002232126427175348186260983285915013630462489800994709039714768490653776139921591148425560513222581914691269099627882433950238366744049435126864696551517102338574990439051014288641107331775276925590557112123848552944123712559927798767656060604001870745831020943534367217710806627918743824819528778901432361132400874522503036881964803363227725213671319249255588338379558944373081448848288914340029381563870874199421074704225053940653263054076372331153673021564933861085136777463657122583608153245145603654759564012552343708794221112376282396672216677067893583529685387362866085958575144207549201885063634649664356022770450599025073193635589697904649689742659731140870664049705909529992131119908451169523625982480852065130458048303330783267873632661502527296193654564481985949017941867590637521370248661759842942985486580506523527905415291993129997589693562083571993824525692390012764335534053818968643292421277387911598443675823895632044862101929611888494601135784807263444029447043613253239718910969875605613576775133853633741165480175557199106843404370509722920321859723309901527892004815816154454240322704330590162893392597841258761159890728628197646144967822207646701728736399384331473403587477868423279416635027533248541770967263778198842567490190381802603584303232553124123738656775047738687142923133780711030685516297965124193566037052352262354539607323266508361484876586175823446779222126520889533051136757982925713629289751952089225590370193731715841445105382621870755409206256938181565226769507387707852521144122034388075830457994525416533663962455970297774911851804521911035459353309532169948020448427333167113803415885128164774439258952605402088109777145211067039266101515402978544740570697381766558881546774239387495303310021282368800400514079555621371851412626774730245176141487171901398964327496365698995566554278753549639947813610318041843322486236707793661756645237618569985152051174050866426218945874684052954853332216442206370490833124972712199887443585954028942543566576436008194402325554516608853398435525073932650524074286205850550540531543625550602818516054893310255606074691613285654709269754001340023163558376144694499945698271995324998769772391227717778525548481765287382012664202138451078614644891981447633443984616961062704113987629899385435093671888725031427992000013446048294556079409188916356329263861385119483041778470111323934672117382552154014552689712635622044067335585091419078549572685722517799853945139066113116557823200991839478980485148139756437276310315585052962711094520823502876017799162004452308825294752903780143322159163359216776682795639765675024359141047188281889450388835463485151185055730257857244956639772765885901407478608833348764219975332660938410968229409406088016572970425472041832771272378171279797797035736576275270098485254500981153781872753941048954786738308270916748413503252625251966120660459010356765817802826429045068657112315950170987790686087303575594630278186797170965451147353365942405760693758157024450678772714436915222715682621542648328393696771847903632197735143219253117775874065572827559278669061592703292357856712182245702829796197056320474383079124060345835424419150979181507698302000007069045583234865337926621992623375749971204642446990777626632490383499047710478578862245179305716165431024544308084192556089479503354600043311566543487429471050399741986074927517309966574629189828300270254631391989455006206141157242311958987861149970781306061082396476609746044799676946433313570016028171027821734752039087742788832856846639871795304172840764319177762201671679871703331176399614205812745806594113056822213610394374595550171039503669220580872124167464169590577829197969856928840564473147431728291951743418213909020891248139717532829309139307324676418134145138999363155157666822088563424974605011214474234561958644068385566981590500191642959522021800166068563481044756233678800379514457696678176805627254751999892080533501886765304008355851853948156310423934798610892860385518158372125742586604990037334390212148772332920836540413171820995316460503362722328438872099507648776358269375088834055987113695732969353422819649914493670628253189886707685826733188098490064699162769196462197178091601033240633742092060902726567598519786428036312494443148817711021658763571536644924743944370048324568741512735789195923635121797799038653592749525637165000255493407622344594232313502271601912269778165783446812278845417457586538145675618091493526724848167114864548061108275777820993568273138069570417876796279053044809083376787522011494624546074909061660691640637286419682093499212330107661282280374851441004473097968359669954161836104289719705649964194654369452812111646977860340985060266188051868138264924697766217093257796481229661635130361603763575209317631745373236794727193007345895568742625048392643535752017720886976385547006530147162370985119567662827452345951611661122285345274467812187128152772828198044470287829483436630828621443834283933061869973426636841662503174938088958731532564136006533111241497517080811026547277241069801619368046197038254330917315025484354794049944205979487352155731523443985515670321446995279071915493012622438463701624086676046991036641665468428667863243481438144104997475129384407937791753089800722213988580814506420181828434464111345849729424096408245260118164415180606108341818909452188841412079787980645835501934806620697807291698253154706727593807361760609508840206608172948784237440941360116633737918646533724288158512019153861656684310632599855068395383404299612799388078946939439804726113661786432879308541638420957312446608450673637732399682300434221464859925923221506390466698969039225502809581860888180763430173987356554433665298962587119505406649522644887130093859157162141940270620429317071422670076888270015287432039353142292463201458311748039953024013036300157681289307831534247803967378524151269240623018079511894898426335179627535676928729840275620799295814291986056942345428344453545269535794124327345707388409443474582974771283667398460633838739913858003572434702047552352950879994724952355013458855725485470732726133558254542140241633844025957105365419313572521406256164016462372080325523482769734126885228449084718164714605387688663314237773503394896942177771487500288657934065953470677148012467516329412866843212947650541393396631386347555804426102036080289255754843634434329602817459750576423199736486570021428392611373877893467131270574799604435726228651959220155729187266319233386485777943988660811844393451428256717646755716254300083904773522205309371240685190676214538753207966844645134821197918259003182495235479846985293701759492154378658914612708682142567444147095497018617281359110902117920725531122469148975703268958203323016883831569236133529003603833362202853118400173131984771412931859271574480640448580883928197270433178482028973090531595725903261739123015610187695736065475604480716148290769317072346477291109395091443012208320879788331725598789382708448112357055474285327626461197894056314208119696290296871946392825764203702558293596084592330063422640815063526516709219894586212199245909945107086110527318146202939164664570138496089256131319667582023030903220338472809679989900075966190134720802260549733743988009810716784814967132808315697037229066016638783617803049541403814297797063504097571959601223859618220236460435365468876273616964977582199141192717139286886479366882946601855885523540939542911001721165181303035250295757804176416487538695267810352135675174637329741832437202038317518501153696331084859275436546896784758870744418504221637131581695470043451607111498383586197039434557677809493753161844551986777183528706928317708570047213682844575429346154967850073774018951110599706445779164048664056208523721691779348621942136050587382152008824636852587867072370504325971481960878918898595254980293982721591693440821999279481942233518649498707717083882102011010920568111932250810913249902342481472764561569756057047564387676395955386968088987048250789547613391325196480282398866643140635374540815498886375692701566620478926327386180090314769809070586546850483645016414930149011180928072625396135675547919261758488905962683028189154974348858839670607559911538799594215181566419664461648293512903197378392772465968575275924040207070331647259700136865792916743805636460060225022009555911506758744722703329764833376608884035244776681807079272059851958248969103955274321981361055653095030882610383596652083951976626946931369787729556364440715932097751242497500001584071338920490837692185167860605115070019549822090122604643634410262326319800746320962802835287034390354111115865790874939042813949509988832911268012219132145696181195882383952958868481795589403551825711445660055304159790661413008365913113607195310961659663716376009165695349750905934408643499052196577976419823962941950712959992212234788580725813670158180525202141811656107580848620353789727923453309609949287741837902512599149154339176262431563817727378679677652789586189907215092360394745291315315178280769752824178866136127120364844360843686570666924377391665188451950415163418019008550860833335991205615992745172384110734413150392823334652249716284396986055940980014856009188306532585605420519999060408247632994088479770891700298117903439944095625163759805013608980060771557434355471774895250923968185127614872473437277089861855286234820208542123288985527978805250685814884921559427896393702833660533784695823628880970072319349073259978716833968468179590572694799891627034479004070759376277217793391752209577997711609243576249426419043330333248714674522314937604818018967788378992728856961524893134453753720792091904689980700491208047979392621587263636601034393317517058140153695430456108047489091988799433658727319727603208464797159018320689274278962431580710268611873345082042650017311093587316737506047072564104601699540422208265285367519250051097876841814985282642872180071842394128862870024131550427158424470800953331106953095712690997421000768047945089087663231635404628237322206056194051230418812268915485268026095537420507465353167347945777910402999486556725081524841236691353551068809229611287678981310879402131425967814033549233559647486789458759659524816156257785428046357885788728798334726449873717622126595441912361442030013584241365584775303418366701542287195829230746483209292971621640713714120962019145289378780969314257595128370406067557489678645404458053687082712789287239312499629853769537574070273969474157449684007131644293612697622540605642045541405898737405461999281923424705046372116343888909788638977762339671372562117660223660695670784812600612056762192717861277640703396725012445752647660972755926419081291679166524667260979795012933256505922882790031660146080407763031478392867425713264775858816101821915969759500481246145397674060323709892952582602767900235601067846724543572473980966420366855192885879180614548283832841466665075996354149725301338358519169323717267254062579184541615446217563552842801325876467818631048968727579042055430766829056006240108948018339677305715364169866474021158726443045415282083577876330771922441471903310208177751083536690365995902758865071635759854772834694926455251271950341529608500788151798625090215572084029028380951507817448298079939298183520695590038747651635996543349440728664825713158380373219558529466057128032322906043454271320772921500287417319365976168419625624605115776262120980985923226829065963505843252914585540909170419599634277050723038933433924966297553342377580579351310874515911272119419209407790850494402102776888845698141493104421164929231199034729805606023201679897060290278578720809957791951623105561111133441647850732477421840889254450727982538571816636875200828789909673369478549612505123453026030215697838939324904100215648041600048460039211128583146953718878628701163065895128903772760366897751078368367149449860760323482919313636639333077112532263506484449628903562140910917184883359776685061477491947729628529940226933346422619715834114167408979784271108750432262839890447106483996662801874672678069833459187503127812301867619501888954744651596042888493821496812330875953213277829557379428092928030401078060596211030759341486094758152719531736557706698181800703577011933959623488542790769609795754171725493159747905511760096118476672312212214368328427513637719899441014615290328882809796585736312071114005119700172543463579423776006423420286785176042602478265390069956838609562249314263338461011350408175605961013927967017552360420813070363697740897703263694257754856012654337464403965817533944829983303847137943128996206061949794495555772350381966455640399658960314931510072397034602157188468414498235332005390066923861865352437171408532901795023023963305004538478595986842966576827375616876814560462321033161451137536544148847560393613737181536328819284288283654494839769934062928897803037442335381073377792138665249528844845017487627988924712134129833878665284628767176241405461020337739105966169340002371434437030992017569093264600981712234552096820682678182956004241998659956895146005707847390853503811705773368682511571235504699508351848211408274201762880277944793124322084314104623005572039931534794296111644783972369615224022661119722029047041665683970708585749056976393919847203913389066146411665473936057926195115695695372679013803092665461271109469924054694941918792327473598367085225448873229547450901639248463592556312744455603370397515050475356724383915330376573631292372402745732770801947701519132781347983632063172159675682339097266427478373480515275484903594400622175573994679551026905871042323165045382475029142779227145853127831067763040180729594761438319420585431546444900131105212053283280444109163920317054623845778114784577652681377523891236283117469043861099922393013973145606449737426020400959335723260763918132824769576181564972959353534565137763089779652100094511330446364797507184259503543793453450700361208294282937345258864388186370815590043966329954654849125677177327740604000767897331162108194915690616287252972595860248117617268977717440000074061968313794506703892623292525804480259861766805425912512279877433662083855611776315705013366749522257941448775139795054547860959739810400803175328510521654357751870807142781191563107709530016678215888193691287437297082541468231278653445347712336543897189813930534546163421054102145489580924669226658179842336331091598641340097439471837720432580138626610040040257095582924562504785423881749020155620716033485839761416339278967015865325282388487004257267088252026526083144317305666263332820011765688760660248950414043569433347527093520428825842731654779513418611057685506312236998762941492403138134130278628895223957785888951153773377278219125362017598290832241727107181732628628969099360075180094934523410329138135442828417419667660450020302725791226991835309309904350519775277169896695751012666612484996123705824658061230636549341946353772353847256502559299230059708672205806258078192365971229407426411100522203370801883360978801045660422495415498395392435169201553938998447359782907217478259097827470124954127685902024144358350312650572612101443964768748398651928890056650901122614041238234484827589365452085753800901291898609505330030279920549391725529609085950104393364051410163218270357861744280293822046879547215661467548620526839159988042187655020925238897459763039384102623956395291728187832665657676191301309167658030267202643710625509623416068746532059528983901144863435882231708345398017370764455523600539902232933592756840568086521273281265548544166869155189217769253547646162274698681904982234866298619169147606728419531849753765787033118972568320216833418202898103877938830638735413399030740564216566952884545843561312568965256410100307415769201396847369236405710036800927520184308720379877462570422389272530968336374888153750668030474213183276584156135282037084306452805350387567036817741427086657772348793596448591205056211475960654991794579079509727749744145381046319701859330950696301434310162412623394533581040768155023230373375367951934091941241165048796250062129299057998101829846308428031549873308933439874652060342146147487112567741122821920746044030465493346166046949934759667809163747600240109859253313224534523318272414115305989077622667597620194386096109434183389241552231538271746064990361981994758480643400109172872094736135632452901332851948137971314553706055023957966448686966821991071157048343122334001260237583112954121317179044296283918200831396802298468845835281830105166394193289527823526663377548771320675672435904302829506965065381751997283437772160841249722003409268884062102256196782344983409233009570294135858257059097270907739258344911489341204245278111169086281184455973633769673687311268585203110806661036758146943995527693971279945008388466314779754691489727612537392064606860749506761615404385929028920080939532208104450150030102765923748624515319131703319720895752546614973524876482149732609293236236247273777247682281412717649106363575287531179493828389605764658808933368078871183171217047349880988574824325448372362610802218446169817070746575905701523040744440387553885188323723297560118413455086687428020491756241547694681510237054642664561138533959873257613324391861408301343062755145453231896143425698238618820153199341060086040582767420305271235520616347786529138839814469999702896131238637423238457679536703133536334614066610801078208632267460386521332681908693272437495162368891180048919544538231408211021882239835055241719820614932102560630354408793308986702893896750522314290296683540293827484505905300023101114992678464105412926567451101220289034894056181353733141385555104182626617264287068129416704930481819217760443171667541407462632641111979636261208100709624085412270249731273141538595684501410362538480004359104643319518414061525957275846423061937152965946901155002156142045064539496986370236697651210737114979925333838233483192299783546734471866931551536263459780264970260754449708918898646840741976940696392398098349093164620481102695289878324157316315265067700879853313949779009728011413535569426979582389581110912157244737931259265697284970217655135182755148621789122423740790275289578800695567912194172232381437001835055296422752802918477505980017007907830328996730968596231403288779932382828401789209564023214626352152557846773852252722874386407429775877571315794193926987712301114758359459503977627104506796335065315210696845619852741005843152072857586021494712277348477454941140247292113886806982524284931523693052325966127425300967746893055139725681250453767381048254515620100529385732505537575705833592952363980135107610728887764666569723973048108451266554589176904835207707227061181003264797909809603964010740136778165330131636080406736628862983444586970582772349185817537741391488455814718914037828201228379025106991928961877954472191162771803243900838963413363540922360099635689809501854005721083471139343422463302132347161478224568573755012232757654186967083217823591384926492065733104917127987001845373958949362819097899361570859947150307057739759117086549735298283819946900303841606500062502318918356952336582639401806122557399912051397857458771314546873219089182093197569434149084560114632323348457092797433851092597638983214843267901257463663134781314617308650305690845449700988250818658679957942716416638441577123155235542071894931406458086716314074927818884112642886658753625509830302008526793083053660843091515069802823880052816971852890353005110913111226709140643938928883849361969638411929899250818485685497351413304912979628343794926690672319498774771835144880126905945243021432825265901074072219675205421551379944471783809347780511228363292693403155051134265892661797569449245517472868660920599174127187787266072773703505077452795402984339284890109683702584921296131737245478223242813633895009345139605954330605487395849639794196025882962585218410041041429164367732771713486946842899444326395469338024741363056416431094423601582895344849458557569072143815600281853202226854482541926313966220609663653863085267317512426610902406967587585145668827935607177770167562516200765317627419446873064701802764040551347065283472151903752719308428159105984289801003877027690073436219093706923712506639592307178568316033439073153303229391098307418523745556949162370839618754825331714657520945252013875481051845919728709239722269244770125576684572285165138692025972298962448488064282487593614865073188125074142887636760634331369470666365999529301391916359895775328977931402715320155854718004339702657310779570651367343411980684708960460486854085813610752944735823372229719711477975083318919444329411604351499806575223073087721623022082458857799250279934773245731569510756715017313617596479814682740942606042680619141077209118785093772744481092324182153082120461148314509548822990848713228383587947163388561905319606931240687609278063872344362746752319253909833481608694446649396658474584472355022720916237042652989203977511744555535046390355716747577476430768291790028136110008828218535184055926064540415942043081374080942301716267577776825913761241698826441242707207132111082549055297779800869982368478064129006255786388275389167279944085935618049212708094398002773133828203282452806125310544290636953095062867364164973356884934487769366520655412414671998178217851002471623636416831521977100539461389358348201695611378431285352130979354332581354421771886107996693593322598686163173091956900566100319732711910014276847848482784607549460708071287982503797286563627735864685203387781411711447488662580506919074616983249559689439820043740266093359451795279470837398893812510457712164918416267341168526716387812302708234976506100956892054099586007977404466522826031043604785853756197203659574797542326864743641930696275983938639039383976918529453645314080185326049716458396631545041942484131324627562348361695524825293457752765911242135039196794110091975825747570795386505568799966389696249682246280342966618524092015699346105263218024163990791087132083482297903130763979613473913387176208922928712094682675515949616267443388284705478374658029384543881572979624256705070684391120324441805258828422852509250787864822604748651961772908816194380783959811159097025994482453404926919796944922483742026319123452985413278017571278566886309150358857124522190490885881345265863704746228263588956571919236644608937090368268874303754973376288862484085353465640115041462926017035394130089878665138771334776409467909158695157752579971217718909443837122861551887220981191484052592382920068292711250569816439601772572259768012623447983369317370268885112258821014795706180517495609583877032038048223764780202857829613900087634097949867241477820722398981112549887784310561560787017925696945478944574899189450789104776948969124427698064774021771308210774498675118083848377140246948789789200127922544042988206918987941080213229730827690255539103739275582043076502307615545309193623059515142968291118529600993950169553663464472074240224949614572614109928901068324130068211147114566598653975234575260644389185930565044366393116001108968881017090742771477265223806396303581603252017467829710954822985343413521574441176308265778385626082663160908651082450850219494390316261203030852320657614703993356424039212793921477017152023812702975090180642248767216176787186820146640075049858959179489141898945811981166766767170808958417303432764811446543595418634015844195047934691554050223561608312574096058566460662719383507164351661101386660993035073313069955716804706013822525515533056761110682353978362144060302654190404145577230935702804278403687876413224776226002198161508963623553291372473425796690649269790459891949449662734434497162619543058824618041217236890350648441493035341339677722497236966734545138008331189365802094164092973437751412787668677178386372246386901815475375282245813809318446288294605920682942075072774629822880638169371477662359989082379276962773285629649665570212988295554230364047191993415244940920604530986966933515031262488004170410349415695604383630856473825495652469190529276541843602095979249080866386859816410557433030131120597006919307418842721380676606492045017393675143982663469887726869561867405220787200566946232894314890798822098147226028444874947376198263353641501588628128443875786381112926797179439990922916825839092357124168749174656866448968685552166470253991097450460836745665776472567072345311249003579071254220431847829346190277916865241513339550320580978949242251407171309508801142462524615167545251923953553812812796260665256935971137006909979688518557390466617284338472954227671934777936276788589891063819758889652011751278052432598139972244722591673113941914651135780718062103411861458368484552768493818792461621795938862063507451763056325760717280557051015665570040719485293645791748867210332743309567807945264041911552088112683723606891810553846521465344581837340337575816983786603970147034983592476490445618714709223745252830335030049582105783537791929412139077666889615999658819848049169039429437562782426105040077835870008683383707489836861848947846519033195580928067520781916779357919581684434751406228043820330757395441949923732785636347709074020264905031104602407841853676929169108066940640934182483936811287487300187931038293402458787582994845693268663457343886526115370317989144981530950100566693608492368194385097064324657539024043053941959974602378726196174219543946708813954653192301733919067704673869912462150060977427632515602398636678171393136327767037299342951693778873671329147637095788215580934326288840911910852018852545035243020530629293621139561443932574144697089598068829122935731776730489045717358325562473156966942186455302127002114022039974608747779644709489115244797796589906384418770997189567851284837589695124739467392960938675720763779185299900011086163519213780957046726615385324925492817408567133339731588076377367093080077926628622522134161015406886491016458182682593162761762379998002418582226999896385410590275161171583552341286538648885208081413890952551752752797152221884999513693097781447598139937479799584372915499176297136232836731630374010313502043942856037083079284572855603421118286922603912225520993199838422159918448395641159089305976756705607255697017154184132277599592427392938983213868915348765539995943077594858133294717775720439621772454892132175003496794944803486399576292334316087142198570183000261767196592083498937714834808242405965785655310308867240264750725084240104837398367051824521123066238391904852929941093000718163245431136851931524669736901982562996216814232339219187517362249544143838108073634560101557169614027499080920897378574498357297870125151949273252611161270439044500436215339165600634590130638837538406159637912104127317075279667888957046588281010056971189276119613442952242095845370940420408785438221448450917300404499485015618821325815982156305406684467854915034867591295681736123801644123903472484880982695945490420745637844789016272486813545684665580677166106400066529378041174791179705123454191196373928042558220338091435619540304355802434014630796745807381153118372758265098581751614693253118459658201085261240929239816470742412216818546733542986999607169421929800394326943465975730067446356260970304813476771890576978631310520918610986809549213489461855270160970352221518582845449240776827108303819094494349973652345765519749649310958102444092065522056161957615174661219101969136249516408701120946402626071662270491861796002047372616649580878748688354792295293871534443385552049753198229230272437336753678022532393043874055184367911111756841551329365459321352608483315813334374337310568596237612671310603149703958105283852010022577250217733701047198419667300512304972779175103484703105288038490648270726239725182927861156936432252693896147533649924016941277794467332256579075124762539427709667169335313670086668318029176967310803557640237231328476703794053310311820101309395685542141383864830782211759227453232247222599993480652705495692598122075926249149059025080339063266945367639035599443590872363729278907201041022180650203892026357573097811468229412919246771523165703253446140387755383761517408100583680263192942088900969832791145099411098175243011028495152388183916902688052544899401372205613020195513891997531637831222041877674524454439472945945212254095374591974227370351556447699278732972179879420749801974327671114047748851166038416940672866245738532130035162815316105688928284265191769628703870398388478524535797061411200689742531616776934946758693566097915215363781852121921266589221146009676114370113880990427548952197197793587964394675135785553969275488255012991794910026117762758243938305646893882803367448467823194897238658298949353783762585384450212168523959099319015548041035269244644024724153384295951342588169331291340066513552922950611042664665784552557527329526991222642332215088273248516866665361603520835955238201517248244853520194287825971728930306223831381541107286874995748916814798772743186221871346550267849457341258409383121259355173215564802573398512742704407407353903309711766205739603005850572880227927179705863585546462587859618635376158672896533233699549913407067756479576671402085350179079209249233543131557488175982125732060048551988337610948620176856392229720122234214910003609592928397806655297646929652255915926843451405045566792524234905885047768125291074726237865711707059430190638416289880363751650390879052030444196453432195347346546471973595196025067314493203517091225798046431962802290239671550536465115332623149980169153056475053547607860207391885581969225821190724446164347656307844194594110576792306538361726391459536687379047485098306982872205684718711398869858317294785706246042607703321866399929168556274085551900157149582074858798858927963962886642316870029583741380775822184803732565395060022164330511870278833384757665789177983496628191962352707765946493535189857347970687549875458419045145213049730996897937959794156202605143810611598713734230136901890281412728525398320287477523443561838173293818292316049345833632539136167226924039140406480460644135895289197019166310421168967015930147894946958187321911099505281897711988711986440711206781762152755466176871831112451052660929435148527879081317378330218707839157868046840119670787750254465819236549430724723180882781380800498009997681913741209779008348640190124094824911594977145019009747796649127544460467428600868260071783252436776499503307448874271267037441639349631669659614339079901183854967640661714971402324716688608371364540073251883464247008581361272298946073942177695211713468753824764056219306029960615714963478676063271289460377364780779908789119694374694948721756119137458611220931626554435268407506342063623259853423754193831196822960510641939047408041517463239276398036147791768823711124554469403650924174273895189888261773301296597176093238168673898602284494223265973033503023529023169812999040854518427316573312766087472511745078594697118939720977713302594750217872938788577622688281692810911636801747417784941249725383961109844305428477014392159551331431076168788988569290084440324079103589355431543999281199292075106877733449820167248665228704540250235452159420892950731047234328569696921783329007157636061574786939467398213664407458777725098055171191943136064714165161316072512894042066104560945492786017799288070461971906640229475346422951137664902689538880023720233208657917884402752519306741337770701896574672161185533453422328642339907867753444909885936388031154743698567644292878171602323173273194876934667058056987393758751001171478861250884636993226549158207023070147724477550431365239144561160487466568984511452077444385275342682659058686754277070638882719331385445448903571853607535211471856374412735709013764283377436284460290231937342006032339701827707922817442089847588744750494996349517641320120671806850677834301397403339936324196914179019238540804491813927635863888947846261154343056708076375323933598767814935726758167789515936496642310804474947475865687661340840217148070121244073595708069268852618981241845239625501954372889470019480473741407998604411900951037029193441263418405020994094303361480076149295100962624745446550467217847414473500041749715164653532302920687277804823616802221784964851015064347929101622179630648327637687380603612754752974970029149053744377497534328571746960809258496336943458129317117108749110943530231269560651773367664239430832362186295189004611440592803547913033137146900023343642270506956296218655251529600728827340284662917217550133975294701804836435603468062751800831292702336291596085862177615293016738724534504884272841122349359660602202190360922370551132725799910004522848934386417702739100885687810909977641047143363695788010064393522909865656672138344979003352840989665576735791189768139643655400593235417439345892545613635058062893557581403178518529678550854034011830876857075004332710375269005275398156726238886594609684164522894656666643117415552255406921470418708233253877054918082927050214470427530282060399553781104384375329931827341236247969602131021426032878342743245861195045306133939322074780233254643933422730663181976488755094378227681335718503138551807719931614750344541719384731755237076027863556146460738410843506758494102586700860138868618715321908492007126865589707875689858105219292094170543344099565493690834388075882098724877634249396705111127634773665575252350634275462563176731500256038365869233021602990256900032352927488655490124416903452271837447299576242220639010907061858064097277856086727174377391537703531304601984931766854839949112775796533738980020917645130808081778526229854568799545636474153830960355056110667221970651174118436424704955422926114611808924206118633986104009778463930878802091271348693806759042132848977432544907839407229894124083874975784340941411789865437199229987857679079972812278866111383228117434403231935742412951943355777337320738797039792870381403337389249836994358066884293071110536418096095489031736481868834142904129262251299674149240088681775282677536767206682131494660086697105301879195912692669752737013459414707875332326832316805520209926198362044238796117915453474668621065495507685425295760656476351263333253557053579391889347869918730826586903927618911562012746134707451077209085361192437234954620077993720817707292652708920276099798204463859903235184577063288658339775658030543696920328358660586443711471963490741241704808567130613058265648429056733041283618448067490882859963365870952030401758438815166830096400653200589361857914073145024511257892789282012220366162507932778645783796644097201418760841458244803535271505188446325364600228373038329001148344983727415780410763608177474534085659766722855438779553141472201463883660140533273604776967204250729068893701780448002308249402131898895961276065230462135625138814289282424482034365894100618732231319262029630825600077324878984657127034891232398030151880850241090275223242683618285738275138652335488836850092016887233957720005123868359875312327017035129899936666445612378536864845904651190457646440643419208135324042038936473647725455300569901618785250323245030220455885019543920298770089651967385349965131986410066329735724022730291043988913669457208725464761438891007894401376051232101305572947867492280324821625860898937283773095038586551924151489767910591860630091629894310383726671100588154173294223723532094395594361641772465744163614789556332071501898580910681585287558325199372423177803751934338469445772702432876660006353837836703326676911276499512012962582693758329854966142867564873486417870035100330795449024284598485149429540972856737011140039980827119239141453802229603530372324417112527376064694011108981738030056876113314966941924915704431558708610086023561762708054622649049338521931180300209671257547211129794234628485633664404045197995878735616750046586846414924027073838323950629857186400659775611342196592070598169552997720795851864641489120086666175562439645778515180160384529046359837419156435243229978218877327828099325455308008277836672418275750435346665325739671985506750834857577562045612641496395264482426347660689847274946791804353362366051874308617906390474552359039812115785633662445482431920223051425348154020780114779718873485466160750066983756633375027947280911825376031437610838390417455312417927418478813239767795436873710212137850412494991847465160047196051375938686881233218288388039855640742456557676359641088365920800229589580739998212276979988060059286433886029676374980065493978457898258899695626513870863967195189417628051186051143850527902484536697960050092080018734068164574345216950905142467408231172362206509108459790789900935688249765506819076585037292263329658400840334443703911651918318863206224084506177979352979979285550048957452854769917110802987647100565140080883702332581718307479417361622995966993017794884062651434505397196069395116054966387078372208286495937249742717634708016775907594277259435004301089035868485896786714358190271668478971333623690298798338050336370164705382206735887598487705212548608557462124012177788808319104211003460062057906595584891542518494477419946177808481450736030647936524026490478748604770354459201268694152330901493672916895616887540284078399037382994770715721275703971619812251168155469894038647837135488907360139008313193339134501666772312541329083212102053108202297680534247758836007215220486139071741091128638505452260822036101738481918768120578834529930885032843468332338214627474749848240644896029175385104045688659856645221426062024389308831897432888911414414944316010763331281262581235973890151347909426838718615554968270002332886411059869219763135610736692850809498283104418349888858763568626218359772693675365334335478813100341812132988089348275392076257605274171608160729989915222663996382159687340262377596184844167241877430499467266696525961873922792118255327000888738216608308731076862754700201872012123299536865580913664556003609198864693989255054400782510467971752863106194886628216151529602069027034319849447481284632401402237915640524566126561377818427940870089696647162768112040175042203777960661383494935285891145967925288239477168587336692115864894200011358348022914538241180031723440081229178541616281104862485893862931314781580929099849929790025723663385256738050541378141257540675818027576504555692856993175194886865046922723986839223166952291510690890165099157192201938772180073744361395520795773414273656501934718321083650656676350516063046085473676585281605009155309372032971540546011226179858420919660100034986158006779424245268971529623483525659750103449182862259059710785618881444488273733830185781054259823531070834521256848926296318580901514461365294130225580731088689780519225535627633596308381077143519930759854675257282942009805297410267669201305522661882855813495497652520497056053749341782487262654372295554021810241157615877726221411357389852569916914983039078011639115242061369651371401013692164044884974391754028877524959096257867901994221198623002816636508756310729679857551117387731256752689642880393660681171598157168842922124970023435776343451437495070027872413143136382052730545706647770154682968890759108065134153342367104434332811695524280188861318426064822703530749854578337218868094306156272452304474994533083367209766079100311153501642596737484121665343039295709715162425462481765140610641555838017962917754230969231794114357430700387322717740738700586105183786602763547733814371035174551077017360266838442258888747614643313397379662416429156052575407391376193894937027042516265648175002807819642603937857799995239621182362330573252823250875082493043588960464387981115975753794299806069252212548430384332671093753746804835254281830285779599456875555812405004701236669125054076108557987921717995111107562970578244152387726255085686848362480641995183322918564509299994938762357299373267298403967538867641015301737963037778935533677014535475081011324338102251375453801006253492365919689556561806644926238039334003165876996374577216681658198479696434174576239983489285798119562279428430558802982138691171545290362097942755344284308392470149696692385008832170298237602126371562027732535865155136205379622116039954181782634415852155025443272581908624586124718784401841161075490255822610513885381104394407242095324645046737970945278053048720938057263899032107869608840684733339344162087061315569141541690358031957803785560435492216633041206749563324626493755605530361499281079517131761927349415342519441964635054465887408014195734522524559152447637762736882907199165483902875080669207754106332336256502832340626975864600210262400101441051902364927900090207197793645715907214990645793468082625989637516323092550321713708619296231930612607825968554907168407524424310608239531294860686660184589407429093110615079805651419178750377809588496473618838710537934025083717492051238501689615871861837795819859955137418083137190691464237122867857076941113699916940827867146546635155598183891552561999272509207582038186215300842416270615518293669136213077130202556885240270140233207568925519285405771849714349471020896876819018560735591774498811447805373682376709486718830434425059480764671062008087684322053388648762910271810955868607713741226069257158205406990492338283398598719259050095358273501618694951416638366242854951116180369522536621635584125214368967250494375705502954384661673054380970138541985618333307703413139071875739741609451613880135268595475819406443893674820007777916208203877574152238813569011666641007250697809462612754152291481878329339085734557254848138124936556185175334404245302932807118460919917012991472799316658902876636875604608849255271382448180701117467463509579827179311312155647669973918331820253398718845511467390114875450661531306595628856340586820203397692389477774363747053287232618196637648971073255115453659333031131019093837523754490397623506257940717326344758993739373009238759217149207727342988082941988655737337424383671105894614626266075399694177676862204501649525445460526198676572751698707949663525811638304723613463002135975787275725219470228977700513200757408099214966882862640139754551084791362693587493746696253240644150216789661628399342329702628214903408580361406044014865241815646434858794634740793744505042692975348467389001436204130244618877930798247365606706702153056279968717165902109591520761795948311965675398848465582109509788726131456674473360619242298493294306142893529140284629321460464139719168132403285421872814168793663610126392388471464309607701426225262223971884231211723241178528251170093721871534270061933311595498730543615131823936392577568967539517223475649003844997070368418613474674308765914208900631304862392751757847981277864004326705435717501130544568703269262181355349929067903403360424878045142937824589905520457189140714116930371407937881364516096680848055029622052790141508054303412531022029881056493817180956519513504013831135447586861323098418168321323757426239151245839501767790833857439105288430536520736402976318014980944312078301338747341912237683935233667387056271874000661136024717667617300205568593418411197402206628045098944517305843697594277739425160369909705027815638484482958311632383602361876126761221791635737974614019349604656322329612011064354929806407903660084039298666417004372296693731604322471838653582941761393122932124245459427083911147218652760745724866541400780804430839314587578113265531861843024870552342479925640847791089732550690026132077594543080636376137051201361452908792574156595525593276359496205983398608460565235736958415647552120820624337542814051703358253495253346020518449244995570377607785573434495947148424224572744751333165970865223005975038198457701646057586609251267367198979242242018515250637248688088871295146174992472816153707592002816226506493229697005533132193458466936497983217095620954670749188705355212240606036419133669480054626067267215568269605394789349499180845560667795288877079118365476136004044472585959458435736732884420822122890055697499620834968636670013561346785109748994354356515605620136568323207434115673380351968083658867696759771496500802578150156205511916453484276295580223652617612841420795331185687514955890841972539396331337316916351046072476706623699657385491293952910671198152781372078025150413035333790575059925316323076926234904691078439693919503812227253037319722474445107099146554139139585293136217432533683023927670384608882517657875687679367688826802695940687804841146418106685395001137486599604050942632173426026287127546531963762849816204839507096419762831052044956594159855004016940136789708720248178961350768270834378321868474677540495878377199733504049533538772454398417964054190556459785157395626879579992047816425017023482764979268964008018829532737403651620554211646915489164186182798316074919088977587575253262157720481892314821402725214316039005468056289053399124229893419377122172234826209868816665230233616502919564441257594581002453851979454393138900571698717665775892740867944879706667133985387529742552504368290666490233018000734096980479808073945050477005629620854568828395501105762860460748314986895073828914679474789748527513182033344638134277887902612963472901444517018438143417821376462657187420280605697389887995845254366288678659909456591066483923766921200942698991230878027491810036505479997723983042656597143100832318711397560932673606500607519587893898968006511950931308681524097327560388960449834255195599188432513217605952122193310060569405443670914525358791994638454429432326366615887989248283154920673603470580706613831867548250046983629614530832844894203115195024594470646988053908339618926329288307421635764352491973317395839783857928097959775462224577413155778815280270140280183489248197763398347358664975682943231645235787590879860390876066246240379451402426464566223188847688056924183288654691332901016380627219840395868061686735569710546245018166634138876378118656412460912988305033297231269719605327649849145386179128799275341959272146560632299549028810907091312356730423946815705261442498829696311632781749438332180642260451002539535926743011856879965684711808678271008917936930854554716587677417568858142399652272251496972961508077595477789735977166069206523904688265871486630416729839097194434388762595270762952480989071480850435073905871744681266533585665209763017293860317850306798448933509154741534217851834293717229819114541440577969862986380475729358654211570390196288226634588777383624005694618664604870482825275085166715081846966912011861668904757769629316542538464272966966702546856591634179170709790375852721660931710156886246555638054452364617443736259004578487317781662207444596091645029647595952532876958226373385749776121833977179892556808444531368422986141522654432213299872447682929801506860334099132784318954437215905328766159443181948841547946909751109178351160298054745607824597883460815700319418238597794230052904049854114762246201612608843569776717411765428764240033085327597705212634848400300748421128101784787599628399531772422652689523483453978463030948044199270373213609678688893993034604283598130447131074079839261197575844478543836718669148410596408518698649459932637590029734297837119733638416379734691214400231064602461058933789261762335312910074998462409709331485382264652492013791865251784211461623485811942971957458982269248373677379612275941200724619920657380899508626812125097502369559452314833258864413444720065537952020975396495991850901486731351518109598195687443139747651552324013557805886418933529947085566865372077889287252337948184687538937257038729540045045833436319085659052025791360048431816233635756387365413718971976625464688697596872128350645949087909756974073666125132452461233459265630928358888029908714397813123863792474307470691350937641561754523107565386801177756340991837065258690416650489911759226201293310124738536232750688214749827030955510983784128325372475161469965488404257495219056316372602483751466340010554492025083921368942015863898425791246738845851872718854832637858632363569243155707638645306391476136889149752807275946394403861412170215765362418180470323040380570108221370431503601899546230178315197685525715751551466151447719649094281690954346804349549315803597832004615651346211887077409928332658606628047657899854892509258886520396187956748336897332390926965463883841175378026821488605835558124650258632093049329910306812195104846742621837268128757419047426852922265868309214297082105469372575975176929180118434696948478735635004350260201072124473173510817529991708783527540203507444126568487182014012707333059916456897528833512138866463890054511850816447254550449860466339675370632744853836099597683423899729790361675693473167044458084656898049689383627760480335392379511841670954300312096099484678253036901110456621552286014981635335946702031364827302207937992625799382112541273652331824416795506012521275422939402357983947734074160692210440586935413034290060455485616966151091517939235565251322529005706626616399840747556161292409265342001828229214224771889207206563499360255538814431913796473292313626240757295374922151541505481486161439447708184391503375595637129668920933750343455058857906266102795051632484347517785978295775323313411556403338574996054791232512815178829995016073083615911762912807140943265709421880676954040922156791249216105364614646174270237019981464259861076961147343871418287024208577454102744157251374605807559652989668103983522331773005856798736211784358073721485893715199859942143076831892246250938439460795076346481880361828367706783175298020954885880573255887648742217293879553030687797055720059330561244848166263936991471959611810810988600032990009574880224663426077308171049142086505869148868192698897864934503622373256781630869980093411805561454357990857799965478299502781275790717707902607222618674689348285072030524157074910082856597144675664428920309135370902987523038654736312562578641361947882296467413488060279839437488088867599828236051930534701304652672217445735590772535403370902678093448222682680053593274050927198651958864999928587927875397210715075391153809797413174486913411766000980892551332294603430136868166360279931872592391424354929275993507786607438760277234827033453019219188269528949249774088459798992834262074116509659699273948423691240298934697772845831203728284342734080440582279279449385500813880860469186297615049748852512933782219769723482671459702540254235044536179822421216874614525001775749713947605392725371515410220051017826506129249370210074713215702646718970176529713529170846693381051341914295151409449535274191100251786675606588089286740192896220173361061377707404659207467549180382211210880569761422139184898779660299310669338557566288780097323071845964934545679097449303139272190049957007922314583636747895359566529361116457007403202909831940409008408006455189265916040115644007700978224902795314347419690556022233793451243422812163267353732124081552859052790805333444858580117846540174528080705596298960709801527940509275683218397940646245808634695942020582766084267011458198139134217769109493631186188584034555691133503811542411654924031597346116788156563936844605336064630810599891078683964173599911243401859150132908382095509344410768769312197988782293593537198007096111765417917288730733276028826279830984888069336133917241494472894000984748321005289428136407417143383750862604881892027565094938513244107402464312659770144751611495298642336640575468116437589335038757968609333810029938311287642384822983177956957457919821467535466615144194479940271281199097752277123252119610598482866706058077704801683207381237291016268712673697468663510162172182951210923396488561245335863030883344219370043264835426428832682045085253755391670342298510101240791652815282178053877948977154259387833692525521791097260735254755618317567726589263934090236977898070488889533001768033080964352020515624465895005372854060191248104423340744299475277063476859885100620036971367756235206040881659896008808970295379153880140188652519053561359286184993498714652572977374716481459400154748588295102164232072066728177279872344476533302549821537503226858890572258422159433131778568064332111856079614287771157174759861565675947119039965526059445784239886587228092494363643338630209966115619657624250037371779165687655095648387588685585792363772629008898474154430690326056968717544653041367105232246651558722455468732326955756053401047309862796011602372894278565100868637091089758266599361238734206663049144555150539070595637588187554293181813486405153628836709662862512993035807782770529389089919949664542622271445208193476990560947875444134292560734053337063940557698527728823901527391674988890430190248277740962123437623771908281171405783186441817996291976810993186075556557998226961899670505172503176970478318494381174105275028007164338657876084119897513726133620867213265307058021024183986849152145662738263711400764695322920097385398830140165112304853506792641405855223258965232350377597738969524234776253945915473091909670635824951733894422842441690890589660074437808252302182164094347365335981091810165325498936236852670961537328994524144662622431693237259802425553316465647703219931940096947383304113797575355299426165435216249264901202435937549720565760272838440903152626779553219325273970382404419424587985859846781540788635587515948941100411778748944502650203511973915518963080129984974652062938675447263343703802103216183312660101358702610588424035217529640766864782156402917035720017055514736724330170550520652178702579779484955594393385996288966604084534992808757887299465721086827531800822034503669206341119390769408551044063234359031185562305536043937417842317487170226200062346072656604035728764188813684832337862573503838491030861586594880626236663590941386623327835927321717242261635468987759100931389908205337030770125738718912435770089268772646148830404363784732440617363888102030072243083955413007193831439679970456749005959094031979836487634126392952125001974832070209779717836871185108707618032380023315277752035894893300486819522695218370814949896932469516548422492744407152604262917839754341539982172145176473319158732484361020100096843159572114232745239469462523284332950336060642864278383011730314933243463477469646126012777763143946081809278161847363459726085802082993954311369716895213259145683275933972210865623028510820734195492283984272237171447600320627621860145163832082725642648053305440108558000290856661858612943374585011721473586332779871910908665438633411015793112979556722608816324261617218240188630575982778748753216923065833352233711992412960663285551058869264633439446795915954686294614812267851897476985265416264653881588951986235110499785126886178087546621762307192867904079329799033213058893242834314134564638404027209296264546084794193282406062348821824423155096768904504497061310235195168378920891210746365273129740636575425724775096719685973840576077625549226389290134994901861591563708501023107317433094683524423566926509537438379112112112658879915751136317409207119917901667329649860100149711346557414843299024723560695387656137649394843018433478356786091791751305745282035536083934703526256356798287317181098199795831694546370237474853953650490965856766206827600821037559521394063663183057061934454436641882284337706578013703943005306609352594266289781854950351898955694436213541830663431623291621695983012038496943108637122750855537092780036012131708176091919272216046545333582484727067579416840034091823452982412452608419924000653635798647992947937057854184661089608239599508185063613570334829533970740227350035397393155717000491010204512679354461400115671394772335434139709506541341677872172226232919488944890308313364141651038254765895622435753193383680251800772959113895329441321721859304347096223992276458699860095587401063244938903631524427854527566729843925507208921156170380241316676078047203333145097818042063695366164952250125868882199360300793348864318938743538350779520736015874513241645425213979256676823982493109630427250526950543131849623812953265194125672661660564722217583709880675198616844293991683931488262348199697465820163923974650871923890267949940031368580963834738838382045223106716399600585770193305784153142999204994212344264185603545510277282390117483700082920984635953011329815361699580130063349632704773033869225243280908569596520924798977694322277132318091865693169389910910818137796930753149498399877281880235453475339256418983891401212406155809988252657479354535872175784013808059440368582374626977844863590704640726364297744401319292782694774852043441693789987538844035071829495800277347848392945872711029439190143738835446051406882570211233732353055205031785601381001751490539891533463476060914684491865795302793124812634292938729258908548785949974381609026349427257680016784008319822904823431224402746515750618877298990789566549591167421981146525982486041286695660346918649040893890529952835320375384828169153724378204160041109679640628149360050340719362200395015558988046003444392907438562636648996672619995607099011884690679787327881837494215470994195935009191107945020127290308719121239731563844162352311262518412437733499009201665458264015815084041372907673911545500186625364412514055512709567948836632239882862499529369150873406945635957430892689287223897788917209404656390186123754643704792312526659721911710831620882926714044399797932937935874846204682834735444913029508832604600747171792330300686670068879045983191414914556440968290589354551936445290932282717284780345437528663826658911009721234328805723634742252808426175723315214034767241558579691071299808539939227912672632135448482769304015962884348742552654461754813556572068845625918388293019201590573776635466348340225490519233570427113140964091080026750991318428149521130592552801650429338683804247951667750614813969302526367422406457815563011843737461106370447413823835929427571149495806735636579636505246039196761251582998379113194960798374548881126167046083541577264690350164040695374390403760483232487426907969264701730604605917641115872186492751601401540768096893232247106816237370071431262516928009116525918031071732149607695717330287664400388449004944403498864333360834519927216481199359488483600349580811081108803258488028117205380233106944766633970369772033836667500635856303866070883281834303457907185374443436889871019188538271949884260374458219127304807439449908032641760467442676895825187712284759765538892708197843487425672698947785306797456136861074026466056025262726253521599259674374717153826626922252778432014097817849155420887280472049764295288679353452257281475683610989060632309587905680120375957627610190163630854609626389444794718618646337790455190841902049220437390756944540835564472841204458038075119485233019599800644385006444878260393031248453798817756948921281426853927876203467130843966604509890604936184239397768012564657747251009692110704436962950828733238200269704213001973708578284212609185512288364053406427420303718076236718966075921928082423103412412810073729438174264930535115279310370809436535349704372122092772808311205709694838483480566612422178866540874830727924909126015149114122361383532493824266615853045739591845281785115924981801565811135432910818553666710891431263810106402449405293846623437189678807007567580086177116082086508543729472080209244417461996105698618463632958636895512937468286886682404553092230351494222523983785368113123054100219201694508508160335783567635083767105664768942661296097468283896289743762752819459804356761526930363403745840765716926799790752853383204561001290717065254048726204539116643589665766760207503852419405772018558805297914315650481025104791231536384841908392109956913137298910477627531090150672724521128080344094934375618956437285199128164017185489864055505480273524163381538021863534274161007995170494627712376739573174171577949643459882973059466169081648635125606820015220192986268562363724238995378028616673102128718868859658319934729971451370770952241624919178579880792404688510246051074486244400907290665535504891210734791442862664527925011154938086489761748830213420041441410795441427287670967734944140175009830148176010626330199995334445025129924805020099189346881861627509479431811633412006466439570334316748863076684188151895455803823629487713358007691599760014770387051723147876917505701098914898156122133031445729257132348607973498863402998273351611396186096977683334633642642475919666944082526369731541662808000659382179410786966504805500337258129350693101053207255202279770041500327998007405564901936828562060547815868627270776451890278957005689876700179680660140928575716108494803686725737227355919718772745097589449324636885629611882714228876922922654727015549270728493342955748787958683652293011241684802436474270400250339991796631824618261137921681148269031570836386231758265876473874785409074213192879447679603339755275165096464233516262846292240987012113005142402910732427670326800972269997556931810321969623075167947349664420039190015168031606911955116810359733062178050525928264724932867089085518874155222323826592938411100883237239419184717929853250063224262081910303242946266965212686054995542914328193708056213167768755029525425228121730715134066039136166913974313475237170559641391942930559556154768506208515234225281915601010429907045194668938269933118586223266628686524560667715561982855423538455341489501453565071388554543413749648778431986954572055748058525780086179666897015651026699461670974852804355186180055286280122388273709964778105732046855525585709331418308186257861378324726572970321067236186259757164365173062037174367307490246762922896153572456886183623969935172618995367851903065774032456161997373528485650562680301728277393976085706730015645692751763089210426842212469752577387265542210891229336053451882108895436093074719896835353915251316716889023128918198142247183496249375669742767821529802640336650566896509306560107164502860459284808453346020497140593686897163253179398741826121969231913899808762316510754425254214527198383609803492073431918205384313892349547927187330484542497846422247526867514548760491877160241712023567624788494434928841060712611775246913294873725213093415321346717577035639780758614167683275903632702235317671179998350358779664152708154826805626435810369727777705898847828223156530818093922760967429057841723216560880367472838031056702612438620596147962493894376430630634116658168081135637041043896498551610069029594620049986471482218095442076018635583292167262827239525881900914642855602062909618153167647301300257865177260440887047235966117406219906959148898946796785265630682107773324332816340438606462744761386084650946327756033944718602019303703826129060200685372385470410133550988380528141702110978409620807711997699979439215477794486894243415014562775659596501840302648309615813601078200240905076464301671678264357564791487825545492125005154563158399916778472384307047774025570427119515500850043845083569416806784433720974794127733799440155379312546033451236785670015641768344045426759121074314580788072339328233175418935760151263459569043791957344628793101241465836126365790826768941084010864182013856048108214272807421492723962155717422052392349992253004762661603830133636670865974026200369994082612122983027641984627467154924303293174679552820647120298635038596422626633367131070921212257380172519157892095091006266106336238865213631462749009201939446412199279992873912379794575302535380996591374368875867370683269214009907039303435258154034127358427240703569235722463117102489618311505265338894364396016170821820757424555729645751950938013045267030484071132579919704000383695297637175849308803685050271199402133951319424587426894270817726814085078707537025481185285217124747104571388430808225434616852501972955318332785066003160125045393202099220242221786632325664086168705178937882742242277165746617028186480005318789740910675334686262814998827237874071631478811776664224908230911808824944065082991981015553822387296404044844386735156296816936867251534686678253214752937639262632738482524494801384379332337480470709169945386371509647614941509343253879599228405683359341651150369200331627869129155068673882533164331711203264432784443794776075453809372085505973211287995413910137967773765035075707572416004974965375019430059449672115197114300308341296634363994018174330297705356895856527977484502082739452667191333702984833554618443509315932958410103837594032571605948350008824847778370755659616793205222944442367310107768568426622743058753667993503486152316260847004083332330934165984957571364648033739868094656854766500386094226118684316127496335727719622159618075553247931102450101054149694376997536689230943684015239637005008436776961362604652305250764577945044856588556303130337937637584568226098090221625852840065007874359290321320280588570788290885914502093892780043884142856683543161582956314949949293426434596312557816405452813904309919340117762606091291396350276557361466960427486323083036243880609805853987508200972976388861815215602054945816834928203725847667673945028734389184344497300002237854372859747728736574566265858956786353570529323722805481645627762807379385975585544049928360987093531707819283823266536710961820867633924800590269133451145478524723280221339382378445922687713943891845750409806611868670907219748024381644678781086851605483002667174026633942147115787092007842782089215280932470301448694378940120771506628624553222556977274369136892021197129214123263594672095597217355486420574693213184565388870349400407812238002050221101397933292440154429190620445874493260329716007771129191303341536040030592428787830710953329225322053382433402794995593643743855620097211156641499198323985531338448063465927345270793522844317122045095552926565677044820428094261462968855508105089039793320121397450575464235778223558550701675483599212849144814888133652970620146615312291602056113346547334646776467996624798663764467372375580618750128640544861527721799710886350650036297025492806666030463115163910449108678407169818833956842794038931950535234731256377643639809891076870027413672509017278335449342724752031217068013036299854864486679298821254140700140508370654161486627989944339229164887984150478813186460524403077637832381364584373993133638828939106376978010829730086696447469524751600169514925248184909347552458371906402894112143342913042425119075991498804897744279855393295019487193322201900767227385856948221965134031470815752979578234072872870864061610195683636663998136823702282925492401514502031130436657684615954108211084629706091437805772721273839178639131717887443026589301934722580722282264602230721192844748786432122622694374886983998153642178727677253887329096529940391620545690681265076676045454676208253215929693285211021809327343955990867532051223585898112036475970871713426656434583507474132880978383694284993881783628246832043836734870487600118712075146229509088907333216562883425010474157959519802753737353207074615734359950917633034041867497697849394985536732586580997316744690441713867540958059446378852789930297620222604833786957027197184006698392559628539458758277975628750775171072662357262156099911422044199119776211668331641095917636420244676259499477748560348602202823573665983770426282922735568820780900244211134532936029986419370700261488011130066473681600843990864279445635536649030253558266681746134732163994916058042638442347875574571919294921314038478195707704847242887613666027599240203590166042241934340471174690849959178248913783842199708330094706059766141282204703771349261845465467303949686774733804213775764864721402325034567509568877330744461204344698138303194549623159225216894758100480008789347237834635276279450652193595454415121670770058993190908223195136491307771401008770891360107630083958316519855924342524280718239245765071497107790470268951510947850084898361951159837168287131598618856023948505123054067976955802164238423731900524591132981388533153613275526318590113074530233657968268278701964894939858312848555329420551346758763412603037648991945626571950767817366711356065267604903640125757089182806339341468885796378166403252061915963576346584214070960520321235843301919111542224330257078627857685831760336918405043623623218177322286607121028025353816376982875087437289188692242440448124529064238399893918617384521476474527290475856945769548940414733949928109239080949364363998094818608866216883201409871009567794548425101533234569090375516630089610312693060075013396845329775390573341511572845753442124574506855139857087672290632520712822836898675653699908618283594666925898009548939833508608607260599779909008815361203081003227157528415246740299200554995948799831259966967806525309956398417425352543861623538307011474134635803745731847267250875746770766982302626792659921211234941731833882053196324508227865888959093887982719859970809616249967455654558771431045850598961881187639794534438030685376039310828691341548451406951017195388733834499617507054365137344410662419697760348536748426469448604793483530932640750916469203634994632111695419146368359339833746929053805269210488100993581075171407008234382621736446155623650688385406664750263808383762293216297895345148809644306105202242490456731839143553416517872397784142627170207117616546800488510968748159534050146410010900225410460505272717611800300176174751886985947613572282512798560845822104300231710375396317277094328371470734178310033428183218610039541143092072548258959267043864464067019986182140080743256758222364998974188269708680978061703088007330850301817979954406980309944743153559891729237589541344018176990147496150015837818215855483607900022663732655686300110093239694453332639499744272024497667341832341518261996223270150217325539338388475444196708640955072180280866107249608125454281286619085805121430852989367325716034183142321846736567033177166764958622722078083381202042487964418622425320574164505509217667075489286611913040599708716195534534575866921679871342975350542397202975526974957753497844993170014618854346782804011500877397090911335389729777688425147425653707225659768549265335006445942228732041557055574363071671478315218985234976551488390132425423807503054634266265542137826213300655078857699962239752567691950051475299821394882915795308134086830649337794708684433794705369036429172880274031644626953416473124875929802116738429300846368258041108589443155064127547730578769498657997299214316929898935573100095777193327343666456136807739936208212526323179690927158138732929201188422171096903075703929226961371897912656149953213489477096201294742738385902136137967167055346799290500698397301715510874102818517964855215115172099528516768891486769291346230843087259403358807539071183504277202836323683179078265380290655140041083740719498772639494011706018523988193688596387804837137717786509367084073068391855320094340208363746054252695211873108044187555617609150757296353758504243240978194894253561488051648399185550325409817923941633018831897300169815827459443001516839520793289738300462307725198142286148951142478439440317937819911800743416221271375057013264558879247432237718340532156058990251445907985761617469374174049678441215679716738971752972094145855349507157006920996807623674653318376939138922242997007311089636286145640685321012699136080416760311519093495183273488320240136224855610240134003134626860317310814142381469445745744312988970092743783644851419704393831404193089809870336977181337096190347252542337246633577184269223080133659191757033533670445433368346875296299597712382816252387319226452809710623121348465020836521844818866184432708251643138892691346300397967516905108567723009576758783140251278160521197786504211118003803877658280629033901085979269565501357187891176745582524331542155000436234325332651773064604028627338774142790245242183923664463705762075155544467497176172763469820054986252146724511695147486423691645218403742894405229905590313564067061881281936147158516087644390217739145563590052556448005684212375509470449959832354588039994963950899048481525477275883542383419590884309029779786306296038796100137911094697557722558499278494833301800755207967534234274887248989499965603683949638931118762378569545423932834137939138021647616118285271041532031479967768967462808938358947703060275473914250749974237751018161294576026327190979017858527604259806672994861552349980466179473571652046506342195244663206688176556106240872502147025613296682721844457249268312486837310823230261360564387698331214742713878609427817727747014502988707165820279954505779956773797633115663620397397289508489929230073829872744566111631572338222471484278324491268058258977023497243998988844939067198209483010356271863466864726221166286092829190808860962867602907791265041424348316701049279913939388016706714493232090945822681407566101660625138000793051663759617024346749625055889316850459372609378181761805626424927044621708514952079284031715105093449061273621226386882727965380249642434080605888446776533493338058135061734807525410509222833360336289595102939226655200812022605140049324644218351814904241332076450281003498689306907751777566101994377544114969360082451954596671173255725992859952119981246044186943505451985484433714684204234607713930938280777325979074551646211563456576877418149487019493256147325630113073449915110046253186604961336164705987026471007687253247036526105011083795161210599213425560459092290947785338107951611009854710399684225861046708990969462210054298677268685138827493436368017381290491823802175884434858199763060018402455043639347525831184432193636078822342855272045714074737369255993115783930109736819090487924888661206532460152000335168141422972804477193676562839111651217927275006871239204489224560659499951882162445251561519251541248698539440557530254984069771032438283335078495458321119998635017531513927437392901084739392972242542692195276630589584769378343518462089531228431076626920567680291911716197358785828771504571705365988485439338455687452361582509297690532338080100239588158759601890869057946746760040728484613767290873389593701930186035809192800969562487800035954203504649282600218351160276500359007615300515757508898779709877246512623459434858447146969974708619341633908471726486305914339279858862338017846384694050699293616338270067608418255741154878091279432910863846947853495266842413245686736164003947230214150059728260677166998592152224446922722452662753747553137462434046326231320967634891045845244598715834085735563556630887023572750027903905856709684257476157704227887757124631483082575613673921608702672850353548863884440900066221903279112207312376948419523363518890952580963345764362987689019978287277952578086509868522185854654213618794096811802407819350928688707440238724062879588975043085326106396878515638060391081322698344181591025607591793497200486019243990420559792338398268709614517166098033509667819207870694670445052964510380048754656246144268720559930338804756155067939792354864468392917295248902411941414395004555151105274496092565798501994597445334832292324136115789201898749628600240683858562935279953952763525046396599512968205865885738109875833622381771863255911903200835095037665281452075692485455860174792407834667524564755230285139131803587488375127641654069323952591318391877310092234823466809945560512533544279271701158598689104477558802992722469475457343409971488630110503021626875573525751934778139174961643122972879514029762422373759765314287522934382892975362750581751132453671903657267884376036661342843964219541887566119884579693381298937901406563419516192474661306516511725267669323609419087733340690450558165213454487297074862553371635331581087738855095802330159523967268648400713750438601474834235330437085390227380449117576988953079133406811397562588492545284394178380123683157531767298914314054054266990963190681914906510208311130377896728687657942468534543011606591877413631321762198303416289445543557360297724554881458955418542210450999122832422240671256313535578227419398806196547685103176356379705213628453476087647191624882510939310918226676457010246503649076887174058871800489062109983884602249535444174934077227481562851572448302453765047321847532378940907877851143226417167207865271313548633238344810072504878677344464081608772771449481960020157980944682498260587592717763415996642278042914584234546121362414297976133124187195363825151679773423909103521409278990450682793503356406863155407032340671391506418478690860575345041992163225409754423164352434991500264140292956147699696135281539726892935453106876852742287916824480432608704463478624349069682252057662741054671106465204178936003473244014157701024500525111785668386033963806047470587868478677866005941018778147625395184562630317637358327298263546058429323574557986170934591291167804403130173996890297165284394825291332954976005579513856860519351140890707453397241952980145879886978105344437928598187338219021315887361960592742773315472002853239408397789239344686421601638980426095208234422381784439647101937884365289752765795163630751895935377213417194091471158931428412311647990508749331887496749119177625623516517274409813373547097884797343831223446489714488277146796704707528417151005177758584705360452208655868043224502154261560328310031904546602778549929217020935777114230574433742647869213136054226574013575310385064398286790589577389246677367491487536907339515858623562466719142440369524996637703770985252803613777816346232435468253332516733074960201249413720878443642861735790578481437239478915479884748129025766655262300741908124515803036992955037147164379926226167619218381593549727846720152665688420845010280046156910091842431075734179979783749230883487520580468055061820398994057860895824863813246156474145956952950257440684073664889904226040560602079193578678161126084813574082600007829756702414971176685873724094152073889241847585711465880388970146267953322313509070101452690127057210105779022277343195276782480856529188340361561348550929855796859839712262320837313667484421485838926042660191699304201533766491830909468499432157653212172381580140823486192736058717317466163847683264531184832681703369211623877310612543643962337345035839522545922383698407681015377194206583397155612108653083191645988670212720030129762880942895247190983775045851394570956574880254102538475085951906008554776417154677487089697871874700602935649391122591469261263511710087692787102960769193239654139233235563061366787913078401419567070881356320830880213526970725503189214741870398652371928414023072687812809490256436240867996383840921607586376700609603866327956945454200216914054497140193729992601076381319927344795034858657960779221356583223536408862834118876504409798505054654654340618816822304137332216455898377580961438429059850323819755090293443799336410337513679189169504960056663576720505647998532197059594358470817219206875917266453374606287085863099056469497814288864827362802618046077223206196839764684021703896226885242604920443377925672122905761457061866837202922236817090556108848373230317984179859950962146699137111763195890862038319018061032059854841643758537559118461458584528636882655994870662977243594811242593731963776359913818723798612690418725118495457562018917042825869646026822042170164938176626617811529465195189729743965577948535312848582920828318037995320941088406331146501838211945555989460999499266195976995452899102082423620367295339270261124959008335815158764211599728620891355269369880777066243495576565602414466461313951949093817390758101911627280585346834490256559339783660736784597741875456385440960717762071157152054663841375517012505847417609854817536768451158381471816080654008826680154523338651980071906453012628196539678057912794047592200584891296694888963217168962672527132555070744099176536736468323874720058609140609125633443807501075614691579295085050547070656868116338927157780046853815222838857263960105057058243307334956179789792708461912072633112251197557082335365279102007024268161463397894521512991183827518360244054304112902681963889699612182085241809012781165396831190827645273329640058674414682090257661164073139455063771453745016860874539922946234522818828837496340942470763000717491170722821267660042795470521180204638104755668948924724039745847695888633985075452182680439794593084627425060093791510138248701420978485908934470218315026316537964710422414848508953653174885833202738382864411676022315464960073515324718648310766369966940592029950073626018052003382192830878675968406343999421251846765507910757723562376860823556630936746998493392075127302143459749574953145597189522407961223123553409134909993234776071487196398726480243384457525538908352522657598897188751829310731782947814194860357498926797639375692780897942649640984709512814089650303781983675097553142351844585048052518999108785885084128715673248602784852202625103212672429865661527695246604319778947900124911930886867136656012397500815427149001629595311461521909491378190818735821252571605128316359578846573762774931071481719546509212499934584164870580273389017244188393954501649198066523773617773603148318070338133033338972591051988165809681695447229880713273435088736826826770722034381291341169095581164119393086610843233071610442261294455334123815147843960365561837877205018038913232670227465189079832876850186118464035832178304638050199921558206268148596626835738621220408323149112415323716735712682952546582245705117230412997688385500025680894367542856812391925356804836843226527830989696461401860946353979452432274274964920385141721059486526602561621700757001951723017250514112376787574823102663139662690924447844096274279748103136259643012732398383704025649960014459222375208937377135086960530601311256939481230368773686301164318462671604583327430309190082530180667483584749343753766607113653497482984301901089950970913459388149100613517153938432877737734771821280254447470438819087196192237223304078940382387097398511730500403660027910360212920875397242062759420082766066071073341577474795254519604098132952303380378722701930037663925484469314023785380625108348136087828800437117299693827825611561606438539305841566582411873588437947478804984065159864435345076088007997181939891110871504386314503554946209094365654392650941459734437752499801655609105275249481281179902173573014492328741267556064260298802557836413692016016617669748043542306072551697935735746825089695874826948731881544269818023315400606701953197215378857346583566060188867877883402696009264891214523761321850570390767193931751146569912952896078615794446670090410139420800171065178067033197994516163258550311481959276610659074044524985800229299228966543054067588746481449229311460408549457355981220577363061921476421011073334112714243475459628100874153150699878674569108206416345365903297922921012380381007569387269116011092957834426860655788441475726921085179645009860474953277920185440079838954484886707511916628030508605658217777697998220345113976466651924617025416334341044221145733295408504392807954396151307885264705378477983896727073836856837620235140207456693911087053479132411488788790158615971668352740445806936367038922357337268462210096916521348168176682743961853038638673061119918119187716359164169444571406379455424290874419543670817530677676541875022056511296774022477450002728679040664986471899711013362194181815184472591061447488424875027349454680510566851684048259975803596168445168373243003982331546478158041588277779460034850719864600409493977640398092361316514907508342421422902139051990165573319189692423186174767104600600148134265471179386165793927640354534589543137690424787165731974481919188300904505418400996882308154835099253666611841538312312998231819699109801429636853713921345260197299766841937950906406548032602340054884977654139891095815240233234467133442021495220744851782237688425688959031252711264762708767338357468592642121004081137201237521417098050822536684007206712882631152148490890523814401714196984944804679489675174776184049404631094279956737122753825775748085792754776105710867256129753274940581094794847870606374893196903901621417734653625666077403420493919792655024777067311768016577482896998471910716852097033010898010186445031926303162374116046753551168125391955617905343365937938089282722859914768508181201172867540470665654742948597222563280678451402182626324367627789943262937705557087265579856057809551086296577566990613910362180278129785662042808063521713920147250640452588776439271155252643537150490630447948841296952179190073624651786379689854808868529795126378890858504242865541942872273056884845871457476143153314718677063731935291546180195217512217731081929119956154340451468735032164383282109523299782542573539172290016513396984876017270183825894574556108791029901424155246809340828709852267349158535664375031049444588500491485483180968913365990395654771006567422899781917903880556974077808484614702490694200671838213724208851280759884631990288078363988372431080994688444143679764701359755518252438059867085825863935412502662727657199067541943193285433812175474512578521148274909532958863395251951656595291321511692041940837930800910247884453729889188341633145491480408091982281173152722432780262445509782321678235044878025855705718538907483505898554256099969620966130090965658274503055056304302205589701600825504127756601491826803917988196135982155843447379573702413895350487644347515252532802411844463140907913400762357692797913754689226884736149676856077439534956014628788995262183121832769384699326248204543358092547676462813616252866002903472891134064144250270608421664146813965398780967700813244277543465345874410359433720560138908410081960804386664051419536311000388461950017124667515147440366134559808879788950521931999172295176273037788753694443728709322519027105308073803344250662527867491541720713646960403245267328210151103865256574620291837156086589496185518608531139968035120710186676603591051690907519688103777386210264556171179825957862984636184672745364037121364433025001866944845893062929771460245708428537857217531391554082579635931071315989384210450732463188365244921677970430073450551852731279385366659239344190124417726744852219108768490083445392411318877611652510551507575859804011711680935050414745944483162589233546375855776767002031155304479918355861115050998041016086837193337357975553651024649345386759740045299465443507262891914362838579825472072300373383314140809137622653162428553463542462300076344744853432331717707644082936407500448460168077342282673654690211705120825871739934721949817495250924250726925642789857144682543911295027774569440308524614307137969039330836064040018859177956858262686679114699075516215713058458238926200549247748286076368766901533212848354177289041468683550109704090524777537298208489933703135462881564099431841848525123082824584262118062924394370484670057600731014483833794809349939449513215416659281982338744013219843698812101653169164961442714143245482547387629724500143589118257677641415351286224243126644694731445894464907012370826536309474640534463336976668148365069960714298144682556320014978368933051669087408158855984456703270505669128365644980537540195891176195932619380439852108327520574536278469874845019532470297825798400478093569804309947662567686031949573083415953921209066913357170933142936795525992559921024120101313417481679563312303503160869343508168983778370718810001468711081456752658660638884619648395491000804102621263814323434264516893555329375430827852957296723644138547682740396981624166189947325058111521969662924312118815724801397142272873868447289013964235982967010968586926180105408495917618647401412474267934889758834498858014189818668698566257552425115133889558784816299389496397417033311988726873131528027212434926334053497309720298910228004908373296479534316950778781520725900232954876062179302157414640607899306414205889014396961918180959152949138198462355194937194456512982188462378681558730644868873850415529812634340472775726538865787580204790312618484890551873888725947776814785942928251702376169625542673210477924328163129048539475711728834200324746845178811691006259463580546059295237249941449674655889780033821763324072532714591843213015032197235641764896047227129055747346130958417293148044805889632654064150538697516962493630444716415940433176064306038719972147798773892848955893028582296350937617680827682919135911466714042777926514452512292960800340786722340541320649179899342782139190630921424731548524409813721719049277450147536299714482855123942922188882872165823371928562075908049597357931836592697073626866846662967056473414696012289054649334216959657450094861720796723399048221426950965351576190183628497897472913885974861195482287233272330631073272906238657963912961558017968672419636993357507327926654753450832552123516981295456326013018790230598241273242036157017241368719980083222349838069075595238052192860532054572107246906693777913015221780039950986575108200809776528168571461898916911635158704269356305188550156111768320987228764381341870572861116475331926890642183771521971835146026562830353905646181730936806570256764236706591127446751335707108810195680022570551336875595585544273574341544072591447472845400028098970682853724683437493734410851193196097453241753890472845085958747424602856097878528545187775407997154621177303031339100172669288976201057951121885825950956918526102107090036450824200069159718001599236330078833562106398636742717199392085787672934536134885946613681541796565247637961760715070517432423497976271253568381906775894367733653120631963151801986593531388967149711435973775550871188943713859848091954630234668612328899619278198946718625627630057172226198717255668223923904890768146987080707751220177091609648770120434768279559338063610192024519833268119705454153308595651538813921780342498141963164905511260143454931265701556562158264090824648351579043435702893453635054819012476149728370681444278505199006903212896548769236882909068546671150995589760754891507625492685131792418299782542728547778448453461101792924207968158552174577602546294984095234678192840960476386210024350185606609410667690932843429705931268359659552164788030824711745176610929643714782697763464025941436376119883442043651405819785395750254618094489169401030013543819259121122854238722988776519602373221724050916405650079014770648187623734031750235491964410642041932852871687936595663020518293155034697291267571007407824355433018154958785858475434507850904892164905683726569122392614760515053956908698779269999187649883835020011034268265026969018909896424000140656288941654229991152436190033893023874485198177367035859326595056483973691102528528964240238162690169769797872053924417306882145869496570622068064152567048641672910089034466482148259576598883675676559305620962774588428084766784414116997805736320364832583212662721001886011390639353175491376666606897406774841966431435260003955902744717191497660803060479889578097868601071357264140408520715503208109783638446056461520984027952828516557607719738796731794525772221096980949945273561032910012006494033523485945355873048645021280439047580017537220142423121774893185173329466211269176408088586862489556539533649460684315877915679859150495016361992776208222457743409154600833608278358758581453060018874654806158469935209424129086588097007658952952942711111315126687583428566179129561920536410044079683799872613222554918639288601507650870472774003701806254718086876319171696486793614727732979757046379755146280328266354020758820986430077712971580486344586381703953969346321181169192104636494630154711153619666625612026906439506854218786812240993780516646058740408377608389717211889712944024277671668754396479044681943854146770948657994287785792979803623008497859770742430848349599307423855758769983547158184688235373094032850678988103388739359527893501071404914173640804862181613420873011412458842231120289553227515291208261892442680444656692441590713999797893022991343828360615540663044391445778085139945599094074239762612456772578548076328639557450793670916499825916076795474644981946658952214795605488453772955033488494865214498815920404443957690438775163101524744668822878389148182995253640866407630244850888822773889814481442580382544887918223306200047057093191744017116590681555324789182407775866665100435926469674592435181453789517497170913007733429647167891477189372321676652882834647772070310297542094397523932163345722780599675988114774549208494809224706159973495073321478676741593210626463245533420320135047805255300115734651077808653087217338440136071977085011680526600480673446362453506269853330351107802011024714941904163599640702033334178009708280027243676240239632839833190086800100058785505242035602151193311212381125806324264054598875454442839222700398014359114677186893678295446859099994129657734990682460457444371064184692311755752541422151199708105198384237430802858411911034947006709981625809080232934922144135663658449085571277501979917843893240809260006508919841301015540362593229032108072689825169873993483717822344427052288062898849905137744969579079629178617645467526962720055032628667023552336797726063643852366606175531613341317196197864392121268769055177347789594578286793751698667802479410433905992805940732000255661814631962700778143239536096104701729340494466620042894434699772502523362436113819044501776630394960920395546918993072887803159200038513497548607143872818383086380817680722559842374631006953530567999908324197175226060014824313203037348268169926095288097144322551789684890648663457922550958843785072651487101659277551662918941361681291844882428584914633290399404985318303936955530378939063462556418941415029264319234049598323408367493224900433835477731924409751183050397065819857193854143426088211957823771085106209820471610682278689620969757921676775517314616530623257688107672947682658597173652390580624930436511108825021373017722979145548745526360319873068471900353622658246145403431408136194441206504994577360905054778745696917584830341379595574153259059234508991895104113725321454131921375733178112506607565288638393093800774772362121100123864093486021508415014831723894064495994297265569568730807876269888569731031755846775128444574553397997813792654431921834421363070757915775647019542518885598183471508749639882165975381022375915486437492344074425523139962629180384112629956456129401567847766137658011123670830980985007918997025977030110831796067951569965572007575902702144061044911452833206811316731088885223390097768175624261207932093558751202518412009102502007023386813814634972054308310984171324107369665562496654937381813957760624019775704510736176400350162938954403024939727373854471651438233295189222680764895418150428010246315726137001519913632525676047478506575714031274113457537113188910649703107854178914089554130455302878654582163342569616634049525997099279447905529226719538257258587393274130154916630672048328356066972804687652587441088521105876230763044801393780365032533142790361470708396485178111545244300098858104533794718403395346580859879503012075351566479135465214976248731740221718399842254842989306171139607700220638169440749741888701799889068347341403175965274567786320642727227656038739437174585149316301185870988806202046350716742616122073255219743263265181032576138673817502982223737574646083182965575011782438275471222775799172556149461261270904660505267167223932500389201907340426107384301197825454396941178367831034191888309584133979272805382546626473199829417047335138373106220916975733273156589158399416510189572510284174693874373753133185652978668579739303451944894907199782629217544087253869509690256364913361662649103302968370399404779514747755870330411967687050772107617321483418530312001893714042946479603145311350066416700023524669310259433718669444400963997152321649187814086836681368125870117467589428150519860600640710086475174958709157959905729767405260915067140443398013208738176994367507976640722447299842158803184305897947861652814216645807199421852517436374675233515223073367877374551529844461509573192306345037036313453322168768871805379018319904446550904855025013177324986195190433459157524173696890570121205948432263283565890164054944492494351263003114712693604264490550542501889653141667181313000917724453608551190885106698104041467588804923153077182674791076853804068398921227580309702149594473809868273473312340587938036654043442190717164560665129378355602095649072482648351965488556846296156897637715040962462010579776075850857781777376501426558909658580563413806753500690392254667257452261154877591099601883907846796078591115005269420617357121701976371785105596442959618559023720438391967628002735526981355323275637931672939282477623932022778544033100210379546063147023481872886415248211452729969152894850131780271188121472084090813830635493161325791646756216819484619434213399002311094007368175499040105370285459703462333608878126345166364275991309512708416171091252888271665752450769886751300197665033144009722236940513663503005517281624212062955587593905225204836125872420287156842497966510035381857017390496082026717117234446921374861682933593570817241106919584808267765255054877674327988929228526399335672320294573301001520843029197879539804218174400897658113932684317529388849754954547596665544635912594206180442533467344212032289410055743489598571841851117728886296883795457231078767117936640524239691929950908446099602437176001623544091050434889834488714558740591334803757508108213516471546244015687292725425961643005362084352528358998024484653362422817109599601827699239352698885776941029330533541192182033534815267864184300550859195484210442525809817478579086995239359572577878359857446016518293777772864837474595440203648840299944295003769029699812826670409448793305461680584150168511183561532408798094923463652836206847759544700761192784929675948448992774264756317901512710819515240377741714381578912318556683115599448809641013883431262041387895097129237574051734778907972947159713776030845364618737701437543788226417693517009464573693269163629836955181552453496432755298484707463786288236903178335220459845956025360838502442970340189970392285865395671330968107511680246013657146012292592726485990026067413336342912103988713654170966139605163811546859346092725013904046570958813090147586439690356080526002237067236208245581181104709820327435557479421048052102582945221727461079444883918690338568109856888473513216220902224916728774326675355246632875935193968645350659198408253015704540743454421175757722114992310792258682019154490386219338234855437019047513801817401966723441526965608853765796515819930902713986177822928103138866085869256177002823453937381750059810088988044992163878606494194942003728500483586733358419306065079413977546321632519557047405447758733069812177634710857655153708861398629124189882384961710471521696214316529809386737702792483019120104057983961636647935371498532955879072997143024922657859098831534282291039354692521854358932834033079077749660374347639359192129174608455854501478303286948350836377823786093757486840385379733704303180151630575572859840539517606670680890940314761502410867637720572494875842467283500906724147538683524285131521824679772373745705655291821841553636624574535994728495285140266712799463114681763773933801244847002709448323561838029381738291966632458552074655518389534127169628384377734519284699241471083404269760700018182204794404287701819691216381554007876115119366692872982493573130991180381561849948696022256167794093781010683628532555609969925503390052027633657135364055586665400097666209196786378997827923885723733291301616727422693871941122400000852137552752735919034668718884001271277947100817035228006279688274415192053253373855168093694549786789710733924396709597311514345638326570413189498231548126537259395975675283269228288437973242922424415919423396209042686615963781323856273642608141820472118230036648391889539721693265027529331515394513993428691615334165115485101112923744798941721691321577793251660840054500252718711487093865529781654778907992517365552078125868472676816797487586252427646134096661776029377149391080559672415449995426515067850638413525415089100674005993952074787337038441672320733134525556389880446580080915750147942037139997249753619127876102451083024162313175339423890521136479018002018284869981683123004832474627600914139214330016395652367362789835704364262039618514932181766121720953319121045210670266874090641919066784531915512931161152675968995662200513952927276870774262354013616729425606192170846845084136763603683726050134796690309333172432767501077016178941879137036576410003615620374169634228827967205498547282836561829082987166479810334518370009378884652334426945447921995955901150236225598284371072480043530582240830473314363170265028896465972017758373959256362854059666662550126674583687965776797215056816760067845756991797032721491730412298066456848713671526919843460994186809763222427245889347264252765604238690439311764137594322453250858384001622021750225328190551116273623414797841749098958001', -); -test( - macro, - '-717897987691852588770249', - 5678, - '52992561458966917842048333229403244806917799627848421877881735070477262881098520765035249624964340882038688516377409835187369665592703958080735736766945912536313709777389461793817187662953548213601180992839097018162700540199444811234129652849225410276267930982552729151588039493817422762367215695837880393501083343614940195379176805915010804690716402053261575165097342342740863670719437568773682027047862479103787981449864557595411550480691451690239227939258640148661525627569354056573032574365819474479753874049318092332197860174730296445988139873008708564407683788184545625049358109338930604072043506368501486476015294370204931967091112231708457059830732539826223797283205277978138098770871113585235612923319080860928191126542635460138797782729492896291235430456696065935768220494159845006073392139110350323314505384289055017134916876163400462621881373937156047111273516233295024171469513762593244072341275620852077848874899582624269495895402815765777547424606219477655639449216632626280672365511304216574465048481409555551898153578798780997838187598030296504499299634026846370222734083675507056188173301287819190008251323703160735842279757966250463716342218905187576189745969039286653568566712245083192424309450098888181155360995569923237384829100088794333552637537227162177479701619093609870600007097257152299648831715938521942096231520452892461541884420652580871321292450318548928985510277252222535133365388202103209163165539197901552072608710284236732915850819518113234646115533291363606803403675185089565146698511010652775061073223214261491866092146057590474879116664838288380912194992229955697790523281474198511681898554287250127257584177956384808694445714111240128709963424475982531545945446204678284012510035965008794769324049843450109531060002528540713991395046933182699881232634176242677648962206607631738502280973898290005462656772264590786129579181328545465308696435762205327818322165386961509403474972525469518547542068305372202808432048462319049469153118249646785678722142597199696100956128198604501655682922926268156814400446792306656470188135722009834179368221149303323894575881803165080171867765138413350984666824885942458943042705023835971675031330773162756179573615771369921528023990741381103617964140627847781113773752668975380722356219881474606884340999916287255829002765995657643610750292167091336372823055491725335254964911991918866523018470993631691434109295300263601212125887194770564215757107756618621927605011672982388667069376436126257785256735035080395442838012293011886480858182971214107329249888540878170831338663664497081571648293369670697492303978168090750719696674347255594774732019346186950722015778265861706529434650218922964570378758677250144083322218433388621419998372158607084870550629095764769864396578302522198678754554607834625544465903300910375218946617943281021263817868702534903565965515996857490410905151194367951674404671401634726316031502775424938708095480058006939655833612970659151929020021108105677362480187576212239598103259569657352323481949129023622185672875961306339733885857708982104417776147428446169851035372923120375171782152648094932708525562623063044339202972582525453779487351603066880013958145443211731768489287736596200008852460116803737486674746320357688425959700168747470090109849460232048475582033235140686903423628462653109627172118888613705624945389644912331260448674882803772456442287538433120812454253132443354729068891796527676701606716457913622114298779919239138678095658602599035272101050540631199171079787674726148712746094500511958909309383648848324958153313684693020237870128517588375127269029825997693115614438073154312047924340357482412336581044347428383345931096734448615207346214924813291025243318597445591410601657643923497289883965796840775243249869681469920755474682727417587202159996646531840273727959008935890037688256043389201553466973472089962210203795891910446649680901883560841094031991763415446185012636385884139521383390919645656949585657311438685339885917614078799309904047978363483036838818577158746493373606130783588041171423001575976326332942068212106971788178296357879590268289870554895714998398477383074091612380803534549439364991095989289183083877933651758973534265032552397343750530201088858666516716202042806877592785968359618297523122663345711107589355569471982996246008945010788125903082708965247233856493295495884971617005159683177020951059046089360849718770603433176136962787644988761679786793574894146198596283619577589492917433648008790154607904592377489003959969338300144125428308936896784361334723137983098924994947562038207668868190447389976840741447171621269619747614678405424544476952607756858007392925674149003932269670585532289548230838340609191813200074864347826444440499651323577336653937195827618989214774650052553204749548153719625554328240930029474674929792915810450109353297164695948404332144143911830336116561122587580838323433271508758381427202886466864203006769876629040113309536126898286439306875888068434906684986109839807912211044229574073513385256008653277622489509139402265793326372569157760069106457217990235011506430988742050031863394618171218562494463476850191629255740324446363242993320648668718706796758945218459365076583628726166585648610786131608405727805072734696605117814467304269584486848714577856278821187639674139091420868276683680482402061170964129020179849417226407523345979683703744990934601753619379872634811616761518185857620947821097797023780246814812679446740501132957939033231020697754175111520932341860938863741889626558269454453009814222388294592392173794599397585978687451892813356296473121549635013676249164244665043044957101593039072361182135678926932958876432422873012810178205318591023576753916592920079031115341838800740563121977641772239560122596720253059357199257880604788460448454541912874334474110048318114397597184518307140986163690693584548192536813827180198436161154497288570678489493883807773676094581689577716104059811574599177659911227887188217401978474514757553745261264218832355099235158560242297233406180137292308698109610071281861640728221129462482399191931254988997403297870669677165754913546299432301037504530872073067858354779137558761312187986108590108671713663509463849235645441069025317032282653619885664511756487047824929057588473863132476505639554060087119089853326292527491890156165208813193528270287317866931952302862861082174087615226626147432099575255480389022327072418068332438673738233637882790315683455450464590709105784350178739780127964769969011026088597219619472341103459382289201174496483005244865985320414773065969458214373055466663167449827644842719260068316989039810368349530823214414315840300587086860582920441160086337872788129994593466901398749881456816893076117420457023093235142704769500472838381750950452685686468352355934718793080770041896266326591193598230038726258131382339638465090689033062834104050137121528398579502285618016610064410178458485780348478662846002089852720537701136965653853259363332024728436379986256649234691293765971251875100216741285408346246009343410757983483597963489740851123818712786795291798837714819930591978286010640687992692756495314962784887224591285887831740631885066445063662149099404455330521550962587381135521874864351037529468684827186997370955447481995887639571571525702373403403761671748587109161571183805369675426792116895119621582920253789699657615500011890976403807282199844302806272514657032217062946033211042074109494896045803992953473587506222506781346147810525891832442558813747914920938494195556975736956239077078403047716108873401240720217398379985768790248880164667538691286461771920136462983631359473029704858507306794650707316446091278308009089124701630706210560168792994743974642056525288870381921514176601924996181921908722977903765494032218635205563065562888264623205077967964252752702442201464476030020851153648989654374063092609825139716406169830702732441666788603492696815334157061439959989046789065423318960712201089688946540796678378497252260148940700296093007934347669870770800342086190913566676064617891161093655936605836899446861184700094847166382869925437304928565010472625277681782787551544062045311275114543518096882812611825710549053207666530027825046311534181156975603474991929909024388711945463808425263464957653237271591373069179547100808683091655216330416092310214397175383390044315163696300849781070219134615015219064302516596226701912265613020932966925428815092790344445459519486710818501491744578229686083894654498423852571127489975219254353172438337650602238280223597768220243105815348527252142824365262184240072688609964102457657199429178311502128276669149947703560777240739423309436247534508874804401314162274740915591635435183346939875420896409168143366133287003880010386186641170364265028042141513465453408101841921842528837600797310807883817569665409313593668849776576983790985321325237847569765650823790815463692017963395752927945155773792906513914253930342695948572439951274479143533256050317996678589637630517043566370062714774155238038673228364852986154012293796986173903941816772421914136811088242656279247112124439226958945034478877984596864873339798554814421219750181744221681578059062457004925780474249073437168128231790400216332672320703915847426463055894401088311795843457416623717000078714687159781995749578194250354449880164141903126715398601118555657753088212238422071158309996360998060316430904776007237664213238747361809842176066931627956726802459178808505394046664002938285314488362839317461527679372532822934704704470253690263875879702240062788026418261529389183596155698524599722228817999108140672748144745689714554812265041175714545225389990781353970530998752805250297945973556929670870774946985404265424068777800150897438843100570165412465536409965604362377295700424297999045416603027704210682281919437502308628718607989662408388051610908664802514940396058178295301888644151245892936386802507105326053427738255325180381762764389027620113283759653480743839809992357496074117200755535328327778239627950809058337055235742086687019858930046083297050726069315089882694837254737886800564117843966144822575643639731768343937069600705061564770014386059309401600994691145418984296800446891914436526504588487235668560512126375658106759961423238985938919327850368124270203404746108520903433047821070462173699752058768991623911437121303926263567247275258743101051399711951304774969904872170431870967998534905416515742768485058006433022048620528364549739197129869684349063800961670793383545725472346808561542828191153302612521938569967207547584404136442698715207952729855421979521420559878331433668100753209636435675712543276009510142074799136997641192447567079334735530723873493925022491212344710076896739154338361999719913499831623432329457641993249784570344228676317925346610689759322653659928903365020471696174639950909615303515965200146660518282411647170608800939660621685552950249611706475325198479518423077155301209371280575534360462938867984963297040183736104969929190183531952577283379234782953108926401989267488044466794228043770347285979888837421775091151607628072534183685174245345816369526145717126891495096063726823540297588186575358585981265343937095373338996442251138594460569709569806492449609367188654079820152455364920624125030761646597005088999711445807387895998396475835641806955712083403146532371590752368935420985233735695950492134965346564198873831201899225738635547303457400703163201429850285547082772143821844313238723456259228759115534200528631507109400219431734564426566942208047195491924187286616903223592310617985108600082628611087567285767001840566153820546701939593194433998024938689773662808625697973543664837705457336677737765607746286815865891347597385126417092248398027369133671804532615511954414419259304523253807140857494548560843072982788068686101289767274829556337961469578050554176149354133487258534215364379154660461310427570189912699705529950514413147328168458631103249872388038937376864265012237965847164952284836681545396080247290559401291604967701175723121502236181093388323626875423056619719092568232717945805103108385877791944344245670750247392343384296108323807858305055418400741553693700502565024106126585636797090774279356316370509236531508263353733878156923208632989404619022265962263865918260332262005803614050713268964027332085964017902372988449905870060050221522451244273428597501098201640739856281753377806262510621286335117441922221183997764738785835690806964058090618523209727153455617620262903964419882379089412045613968114570967614290250244897455062121766814873521607883867929237291112681395681208806316115052463955424369530957702703335301336133507196464013784297392355963686577412082487656646900727164897539211910515592015131790757084187802478999731058868779493827694303480414208944059771372285831516411891131036856120211199256880755033121745020506905940385581282403448035169726911436826243069847201133079363947969342361067328363441956715292529385906162072082866885762473853872136917177105248829462003088491198093528321254844293731158494353309329359943621539173472646030822664165537362617032785562181639419716789150739604369299294852110605262082459555983084488041202822751327819978152651961662242916641572040409255879415966668785223872853617095739101441693844227787889967257101619837706529517298805962370005920305999407921230127760675120172113782634335023130691310728800481538764425860624015422603351785485421993634219805565282967254634644843789616543323341653341146495092459321686531162492849751882105121323719768549112911144880654693888232614646653956763580397332567522797083319499426431434148243989859609258432804222067142397999063441042035277929314828603521084355742771233471852499158339778603981017500121847933601889420815095445410655577708991650898864592139988828909325847690688265292963327637387564935819554712076627813142907683346250203958929989323689935059457421263112380235019472983111424135581186825910973214910699149667710959563181536691099143613233601161732666745012245211307688622118221683809456064734882630698593204467656990257941572412614139802715394281994293120883156362501711873082011731962032490574884682131178885924065895059613017568119400856466320056952350332528728576467215637026738604714597593759418177681274482897193349099377791845071840865476390482509958300517175834887188010180465835340333367167368967646066303894894949259012937252758312734808329709232360933894530979086189948266744307651572635781288044544893571461370440118431167905294073527312254045244808871450613885567599305888413740007585647252065620950569327491405356998305146429471623136661921767554001049077582559141269075807726942292324962879195004849835063558899374919319497877100701211206496709025329275359077524423372451805882088092879051313263439053059246113586757853983808973560033255079821096458791208111949975520419973969738539460358523519982416915144979569986992658895580772468544281855421641228395656106360926287526507440986113241371749929933626943002948875469110027470912266294656790428857661799285796092963253692751518091473958954584426686863281912392953724819538676197544419608647219428371546066604565530829571887668487791705473466987941636508397417037367030291035726974209122929822977256282776129310660064280234827050717329256768834139633843952427070535536323343517859928713869623513480175609016408364304241592622958594443056559986989106563619631715224662514109451710877519669377700137922914878226108875076080968720985553774478319079858681651339801277697214672775772710298769965771899451131005224958432124257866462047576738776398467445567954900257927297206412032651048753538257470550748950042956467383856098326990699095531754983730997777376855850204059808381527746257418211558497066091371508074576455448794073221457106194028764995140574406949894779285509688637508122002763143590113564857465357157613251821223444359965532981305922833468097064802147367022534931051008695237039566704201353988540866088741667038552935423161581934287462404348346959712557410094417500120546248110357270320222372208679677188804508939856387875484398668973720610306440393165985553874361652311139176073072642232364301455756578533325673397255829115802632064375030488532724282480941523096056375612516691335273199076868478063949077979981834693199226789642526467313758886727034664155374708233413052241176017997770755357925454917422006910044558649830410441042783912087181440912216816911418077643846400706686847762348581058766312240711484387486718123588654129529313123730637305855816034535443508751239517641963906747738873083589048844951039924094554710311263734798500241327075231542378920749258310205825922008644493121370590192760015148501273427214461014155067372554805948839297269789248975606338557054691632614937241901458805041012227038978979812168094150773239740200926858206670986309560725257896194349092782159293694188307081347049188661030610107456715733073715420873434056971119630761658470234370438116245797515154771525887334083368102698399109278569996061959700658346646955565093203139925211068688479012109279872461395639869548120204532938913593022473786111209373901721432107297071448742770742412159279076830118439645403061943303917551223288001014702113659615663577592748103708841776873178445568235386839518530066675979433748005530615064885650866749177914061788524262808081456736332733040493983863214714692393115801670972860894965741349096171975727706157112301169070137414347667759125039407153467452265210719726714985635420293189470049637210766042254751512445609291095350283495503549502917353512206358756772848829158151755615008365723008445582823523075844725615067686956618810366284960890688672135540705475984841760373827462101875128799270857413282580082072800739904057148821354442778410810970050701431502851594089320392059591004827037030949407048303186582849254894900004175510461919883551638536839489510245449220044773071872011316439740663014720019722095387628672305811492191697738078092246616407460689410223935009608878423391167281114435298028095665936771603627090834937282850979762786426899134362341889415374040340896380252725754909908018401107333556100522040895675585460969780799009744922983914153517048037312468584877909733205649413029335540211297879068656419387807383048842494215387689331649844934805491180381285929557990551329032335758734597115389529509449814729908343459195813101027114347572133759851590325554983005153111501432758813072569701126690781490951740575825405497526335840722010023321789428374242548378889836216282253171286247053640123351326348638420215428018887341486150219038345363430704186782773219435948195386840643853198799818242098668338179745226151996534978279230096399308636037991368814207217507069935928147009785676785160027497317009001777550195024132691150567507011354412329032340603521157466518995650811670602491853174280204852628446269615787322879786482369408633164257134657023953228812362587592950746528121453810577970418765900895068401958324820738606431245080063027400254319882177028368653741793457795068935169938691425211024828792631933230877447721276360612404169065676636411366175986321744222814400246758586497722397143948714428396712767471630538898122410697568130170950184011778819880862316215372642601335542980464853249009026580690749759635033913834129498173805649521698922073038683841857811453879318495594875910979538327284780569733959417673964124812143583018523970514641401891081019284489763221082086325354879697385907787761049442665031058490028534622149846137905767487116029644971254430227080575349336243717394801443483839458265798732710051462772605466482812641037899172879970734427748668316293777647496909333662168116654868712457269032630974156741200422999141171874097340818602076458352626593605494845936264195396202806647904404677157734745652872270210704027405978135714048673747336292778720101960923698684395527092073172044177213818544969591585627238532808299570223371536372799012875224234778370905326852914976423861886454350497565400489482872955448045615907842220173649212448684979945647349079756570932865476086046458864652043811750235877344393220429343034415180297212581588145608747445493372426999318493938150343775786331056194752510426503166230913186538526760445807413799806204051029905931303093836872257279463684631738363832006044614840509662858475110814261755496445327276173263161251358809092006580985277059802629992110919876640778599238851224190806234298093499859897877945279235571464696627205637879325947667945367188005248720580469836926696939939415121732586533901411675573681854304269524168392617282088535658385037701299391440541334384518081022468387518749703363096233963804922423094068395126707285054702218861778016173542392815212283678372323848563282862826760297013819812339131493327915541965803998097384090951244169643369018641096219195430772492922432677413755019687006516340030964660067215342977430274756427296622985672207880091256161463966745535322513359262081324439248033434926360421216544044746832762555450035219016309931057323669695525075977196214861598745789848117118689974917406963326147153664733948922010644259043986576126492884735748201429479293157327397169116086340829373474447532461009810536262731597451754627874681161347317493618449699664690398390949643587566379695090443777568885944452505841199312483422475407319328641366974092114345516068535284073079980141067468263817385977308228962318323609469322490263507101669512786080642752319574742157425134152748843756299008728152305538809501024125010339213159780735824709099108882350824446352596024291069384003047531175618027373859127640704478972526885889432610483189753615050833681837753536005311543749368107499347315534545941713644730273702333948596900145557971505509367959108594407502948243020888234056853650963187076323765146652614211207546354464881645918117204811380635728429776867963381852884230518246631190131825530206787122927542913920281579736988824992521073962274953252144927376468933425658712672597384028057932228407070530265731165980966598601076506604289064934821557949717410539761505040873308406110474412692271216992858783788017692940669126619626790274625702146919817133167454141020585503777417647004018422961010432475942591656281157554753543866527442721860074055221343919493702427083052905183704806054896861313080853192781874338774353472175893928663360488609634784890485560515252214309637081204987618424027884591397424067625820413547165571090593288097729180898304860943714385424978418160835850877717027658521907629768814727424695191227358428401962885565649381238098204936255938797308193040643227676416950981533713051600283871175312807406414172316740879617172963584690587789848239482341701897688268557616992035582225306531638164023604262595670103263609695362798739463036593927714273709560324792380672245014432684528132529510597382659551239028729153767533108869546101650464606517031212471681999067256252173869702628620955732415793090541749027540473718940312552425322149119344958406002437705982398992267252296771928467559404038212669370252790729353944780711661881552113249584403769083480856475063987837244029373948596829428019040641426569984762280646821052726889241697080032561970596779105934595957656757479131467410030344286211442477923310898646446342650046369081113562118381113974544065289731235914381813526415129034466320886690781519982064571162447720218016309577515552126698701486349767343461948090842618080712299219097673966015228424172663889427342731020122066675346414052340618598182609249461329861211149036514914521730088889300616712047373574894553971526437268977130623792336839865094059220733603108966045443149552683777916379609517221061627320405151444134819286421255392382822364134687682168786843209394288411699746863444889434411414485519234492407599434325668997799101520066221602884158226756336984242409440361323534712903377984364440121709955882861088033253565408769726596294534478786779815095706073686709431442168829090896416212535563746063403950198043478906364003836786350526095004964058916984298874819382063723661497266846181942426357905013650755458667314604787157987764491101741899567408074361392569794087507924311908229702294763769391197478812554522186741135262551897352184690374471893073000220162512552332060179402611785987981834888043869118074160633762440696320006275857520907876405364367283599977809702429809327633774811777287837997929063319088643981288504577794563897734368357724456507233435413578168544122187905557510349163877892031860938380863700212457499941173051991635044055263541028899765559085615828388330183855986870987907204189354310066588413218192874980402116441641033329112521433352585269389744561428992772734752313702102338324264613628379476243754122969786509425444725576325781027140066964089023790292891876331352393285001370386695304261889280274262043056322796927733119572711356326685350484589411334123538058781520196877872573359539914258371620972518600167848136853804940166949001046871343046124149316149555200621260500187812862150026333455832936133319251080100944562462138196424435420637124060278270301200807655723626316279314677989720701526760643271100348145148124820564605091911779855169535418882307665289900355017573800822546237397396616805582194694056466899912723329771183008166619132092740342879643527581402206500436271851742975104495236263710329645094452343102310844177958838929699065716898974352408381283451421410089914102753296005962431058406067303947323833242313152680641247938380343115958860199956778403253209323348645070739497071952928327376353617380302386451510499726403590049039220125741769453186556766459550919922603305625386150812873799214104365798370292908598658060494523919882837028108696230018764525326479800889430827403509641329404504108584175416299778457550149516420306914056180810908889377149438217925739822836731498632998974190671944437651733816831832102819701452336948218481443109835371939006988086201718924066189320116586181314358289815550824203560990687366887222969587068618783822844334383574224286655847585666103020816988760101669647856537819653647348642372860462072094399934119806713804526340303858796726062832597308487962786568628209393365116177313500258916696602298504935899488231886983956122931761650910471751605728341369214793135444893690581825560582275170663803345907902656817500959962305071703161844221586272436733043463590790972533783408461905472360665984339275927320721268991984362793905235237928358401214308908599626975869024433459897721710178957512745942114341723971665941816834394308329806825884356070709685761638881841811423881417063972638317949761209293108884169157244310554120522091867059525129565074635172821024753666469843554970503238670636464476697226613787178875812109508162171406085559173637604564435642338746751084270357452547638347056148137732031656248286326291618903398185758507933313960978162364875292581607458217158798787916676003226916398811579605403809873107421485543087852003080885632791018542669430381491298441535109732809291308440227122322919323520142248717203062944396531767516101348669545805257723994808980312479264837725492136882355862941108451810186385271944727323937476421051113190387402775727960536639091788137833258176311969569961943551611853786770670960071652604792541940305956411115347733415222667549394453865233071674925052111317188727005402659672862870124353044134138940763586559553241714723475928344653659170671048092842027797901483049343811224941954463977298856433740106969036666079845988063391903825032855950193013788243789490182350376071702678007109765795706678377357340602031572982332824123773826221420577356000773691991307382149359100536109508425616929397580550980381697733400694828091467008203408893560621735626409474184799062207420684997475127497499271462600004670205579497645152495972389782480775949584706612600406180867943792941868858006175201936307008047616757589672523735789473093905193759863364945186628110590148829061593580057092925835363208545182849585868221368570360897560213869098865474255930740671657540215219483723251702391679084671148858456387364281103663462079699683913175189821329916045361853985054542513239589981629807348515391518514157410480876717317086568995965776721883816029400496479881361209069153709752129572198334892249502748191465310837081561861610032985534309285339681126580547626611304860810381677502832262489332934346926301205586228829998320869739620904253982155600321208706995102261899336727019317570934776614228279624359270351092121785581627705454815208145814747270980169200427592287264446298455337451867154675225312599671885696403119745068812877999940157697775260282173718338630223097905166067171605705202669147542203111329964484204150252769374041699642264247344682780556183768647043088086067328086717187740722470761010716276890826844033820289730485347275758989422619495961781370981845507287224106646612891699787304991489991450237892608587094959507431025121524157532996055387813931382902218941327406937104535120623519125622928074921413343511233341463048114587623180196119633871033128642353961758736942162376474650866446500486254254052378915783117942846877531394483736296707763850427149576406806692201719207270711640436539293214966734241103817572475879693972994529271225318511005262619518630808170022848370992692989178376091827819432746605823278836088860098280229785555789098175025591438486997677754831517943543494195444780421155712600231315338591816992539029327290383750279259408507030866894281949592643856951856970260492648859191372445722757560829643128598473999963495915365217562729260899176033339914368657427490270587754614627221314473523385599772728811860813438436363568535104917622395452899623639754284218650275206353695145264760567105459178562491882032831507849731082780751290549815090526014153248389638366562779197588704003763886554458980922773564631738946671358670002437792609926532640853858166371833689910006342371227521888985462256616595134913448753896321572610914451983732905554764025205460856114907835462908762361867725808829101494129427887010484807824575634192790958596192835856035642229775443466803753619433447559913956011510527564464490362903893004175699539657818550413774129471722988670400259357614877806334270973688298172787849219764510531270431348031231230366988119457069574129982095326123736732280724513806554712464556176030636815599985296475879329526942793809334154537286409720616279737748877805830625972559290659320870467177007699656878854930950374408662534796671508779289654115928497876570228294960433889385643701335793908755514074473749964759488535101951927148371376246782141759279753146527867175256859600371220723263087493647651934107824747038684956089218459994098442077055339542213286639575013424597339692639209982667429839922996745194919443742101455841754629560994904267305390310619195510596711795233359996984129886409644969307626193230100243445176341224116774838302230433293550887983785529668376917774923810049977020766265752226119147869678480128953266773825987624533026602499804124858105127910152228288680919984865137490347059505127939634012785058380116016158201512139929087364709693014634031763687342662706605079791983804043837557045973734575431521833043317763655587404678815578341748648519218701877257148921016285162472607623283323249556573753034374795565710904057626708068152251494257423269988884212986826103841847235290434753139713588793284927733100788323782464581521308771041340355123219181562733669769963813626654980259896667571531426558561083021853772568029181635433012078770849834446674149991209906653073314199262005928322117392615818629566430413616987317922057832297584265671398209566291140412705971275976266486649851786135002249020062965980087138574535447132363958635609925366757622786251073626356537120620726163351028366500669047752276806994698670175421508941444055686927449826465211114309355867990655881671257209904683585254426503206543491199687267119577128778582396178926678946290201534745035364519018795390246746811766723584255073984715970376061829082762752016704470773798620997166862372135899943680412430608608549449361762094538339329299440793971638832722944360033468293012144165093312313114839006029476318874961592758500904627465226488109581697907382066846687530136534632837946481815741937620620154295350284380932563345904144633726510177800611951790431250878298814044606538474701064227373555412349001233072133083235347487459787376279403703807888154514448002202951245397248869293062600560134295500105008538576207064629412523316530627112626565186270777090318018659291403078286535004079092813364057772695524445708298445548622123608796436695854008220295952906804796979613002284502190226292523908476214322919392774132723010892233879221455324852691358984021386299602980995708394090452538155116048679915227979809152112372669411580872195011069091512211098837265014358497390191374862378298332979828589280675262431318918898318225215446376722107524363251975033827569456312898080064881381141772242054225493451609900958323016634712370823083984626439009976816172490877077263224311036942854664827302424290250141379316709351675690520061130683735321311996496187247021962293994184343787870574057794627801215642399757391689423643087425702078241032082171429850853657783936393491748921202257137973536585938902448803265913705675751505623829853836767351048275120136814974429359820277661179090491547020218952518317240856799497902090061811729297871492235273099451994560780849999017077268810932708025581118347013333023449244901948116998051103180964193421409328454794534892399934923614215588057091032039363419930676743779898364001040849687155406279816603303339546771517073573996877517822995705129876831722490952428194724842099930819145094619254525540759400392691443317175946185255495513754986746278892496030387565394365588879946177842768690923727638413659745835806393996818031833024802300235446835796085570745553032228525815450531967652475109305456596317989530038989405999117072923810555284059845086948523349452739911967441605727895585516463617479813514316281381343200540684480647554584918667587044879862223471871709991329936110666394849738825285286263958437079344497666129723469849274424451217808101012327262154782486868475696579972204483320055712556519479118501769492253109282648803982799956007070413969057766641895108542980107519788443327966941933926975271423626274088356029953637857404994029785121788713172223066847502903458085949291823486875993171596694026412513484348659991282842807440540512919421580435830982886747148859097314781713081716943137837514388166635564093209988083853631966764152001236937201021272205337526464980001923248970935051413391014325982735295720169702781387326630373314301750994939700432204266441734849243617137063200743900861763556953331088533375662647974513214949950360582587461449318953013746171392411021921268719401083870455409243782703438717812520258803044022398736843362885510789738025682748439023460396397947226212022325837892155810227799539254487217780142395057860256227526753652355653439544898392544874518721260751136602267606533517775781758994893256983747903520154900084664232199826595227499066488170533660614570516974168882282194703476740231831764399346962406995812197194307712384356275327126581811963829857081764545583491933201665655011341750864389214260118093942175688349922926371415338795911538883608650663492494285079393689588623801351274317524162255546872032205137602055977698588526953067919577657802157230724010580762546282119676770146073279290190567417587379003247680752947289021207629278566655115192835788767007491592173561216460960732338187214850961468821550647703718319006714895171928841330718580062654702438419600965779600185378625085906358134551760230035403561105143710833508540322391028617424456041890440768192600260326521458091222064446938238524580192166531189004653013760970323476986163112729146041847368155310536930201842388100514907989986285028152232579121250243087183900990150304104081116859121286448239243348357354426439332087091013606470363706785376906184268755539296047766065167508797445567080041967876599818349026917276210630616917313061541554664359090008971749776374922888008224470479856127371383520079697079481864438879042548335953589849253380664920899400066389165030020576281747877494368823642902286149859757979430259416772186621524014692936483589683321666232231917198657382422968512537393374246432506459315712945887280161525313402564412785562279688402776014658097920177207595566191984505720566032171980817248093432499471573407422741267535537792190907867772310470192246974486242409294991646564339659296311172821487691415387361518368358002232126427175348186260983285915013630462489800994709039714768490653776139921591148425560513222581914691269099627882433950238366744049435126864696551517102338574990439051014288641107331775276925590557112123848552944123712559927798767656060604001870745831020943534367217710806627918743824819528778901432361132400874522503036881964803363227725213671319249255588338379558944373081448848288914340029381563870874199421074704225053940653263054076372331153673021564933861085136777463657122583608153245145603654759564012552343708794221112376282396672216677067893583529685387362866085958575144207549201885063634649664356022770450599025073193635589697904649689742659731140870664049705909529992131119908451169523625982480852065130458048303330783267873632661502527296193654564481985949017941867590637521370248661759842942985486580506523527905415291993129997589693562083571993824525692390012764335534053818968643292421277387911598443675823895632044862101929611888494601135784807263444029447043613253239718910969875605613576775133853633741165480175557199106843404370509722920321859723309901527892004815816154454240322704330590162893392597841258761159890728628197646144967822207646701728736399384331473403587477868423279416635027533248541770967263778198842567490190381802603584303232553124123738656775047738687142923133780711030685516297965124193566037052352262354539607323266508361484876586175823446779222126520889533051136757982925713629289751952089225590370193731715841445105382621870755409206256938181565226769507387707852521144122034388075830457994525416533663962455970297774911851804521911035459353309532169948020448427333167113803415885128164774439258952605402088109777145211067039266101515402978544740570697381766558881546774239387495303310021282368800400514079555621371851412626774730245176141487171901398964327496365698995566554278753549639947813610318041843322486236707793661756645237618569985152051174050866426218945874684052954853332216442206370490833124972712199887443585954028942543566576436008194402325554516608853398435525073932650524074286205850550540531543625550602818516054893310255606074691613285654709269754001340023163558376144694499945698271995324998769772391227717778525548481765287382012664202138451078614644891981447633443984616961062704113987629899385435093671888725031427992000013446048294556079409188916356329263861385119483041778470111323934672117382552154014552689712635622044067335585091419078549572685722517799853945139066113116557823200991839478980485148139756437276310315585052962711094520823502876017799162004452308825294752903780143322159163359216776682795639765675024359141047188281889450388835463485151185055730257857244956639772765885901407478608833348764219975332660938410968229409406088016572970425472041832771272378171279797797035736576275270098485254500981153781872753941048954786738308270916748413503252625251966120660459010356765817802826429045068657112315950170987790686087303575594630278186797170965451147353365942405760693758157024450678772714436915222715682621542648328393696771847903632197735143219253117775874065572827559278669061592703292357856712182245702829796197056320474383079124060345835424419150979181507698302000007069045583234865337926621992623375749971204642446990777626632490383499047710478578862245179305716165431024544308084192556089479503354600043311566543487429471050399741986074927517309966574629189828300270254631391989455006206141157242311958987861149970781306061082396476609746044799676946433313570016028171027821734752039087742788832856846639871795304172840764319177762201671679871703331176399614205812745806594113056822213610394374595550171039503669220580872124167464169590577829197969856928840564473147431728291951743418213909020891248139717532829309139307324676418134145138999363155157666822088563424974605011214474234561958644068385566981590500191642959522021800166068563481044756233678800379514457696678176805627254751999892080533501886765304008355851853948156310423934798610892860385518158372125742586604990037334390212148772332920836540413171820995316460503362722328438872099507648776358269375088834055987113695732969353422819649914493670628253189886707685826733188098490064699162769196462197178091601033240633742092060902726567598519786428036312494443148817711021658763571536644924743944370048324568741512735789195923635121797799038653592749525637165000255493407622344594232313502271601912269778165783446812278845417457586538145675618091493526724848167114864548061108275777820993568273138069570417876796279053044809083376787522011494624546074909061660691640637286419682093499212330107661282280374851441004473097968359669954161836104289719705649964194654369452812111646977860340985060266188051868138264924697766217093257796481229661635130361603763575209317631745373236794727193007345895568742625048392643535752017720886976385547006530147162370985119567662827452345951611661122285345274467812187128152772828198044470287829483436630828621443834283933061869973426636841662503174938088958731532564136006533111241497517080811026547277241069801619368046197038254330917315025484354794049944205979487352155731523443985515670321446995279071915493012622438463701624086676046991036641665468428667863243481438144104997475129384407937791753089800722213988580814506420181828434464111345849729424096408245260118164415180606108341818909452188841412079787980645835501934806620697807291698253154706727593807361760609508840206608172948784237440941360116633737918646533724288158512019153861656684310632599855068395383404299612799388078946939439804726113661786432879308541638420957312446608450673637732399682300434221464859925923221506390466698969039225502809581860888180763430173987356554433665298962587119505406649522644887130093859157162141940270620429317071422670076888270015287432039353142292463201458311748039953024013036300157681289307831534247803967378524151269240623018079511894898426335179627535676928729840275620799295814291986056942345428344453545269535794124327345707388409443474582974771283667398460633838739913858003572434702047552352950879994724952355013458855725485470732726133558254542140241633844025957105365419313572521406256164016462372080325523482769734126885228449084718164714605387688663314237773503394896942177771487500288657934065953470677148012467516329412866843212947650541393396631386347555804426102036080289255754843634434329602817459750576423199736486570021428392611373877893467131270574799604435726228651959220155729187266319233386485777943988660811844393451428256717646755716254300083904773522205309371240685190676214538753207966844645134821197918259003182495235479846985293701759492154378658914612708682142567444147095497018617281359110902117920725531122469148975703268958203323016883831569236133529003603833362202853118400173131984771412931859271574480640448580883928197270433178482028973090531595725903261739123015610187695736065475604480716148290769317072346477291109395091443012208320879788331725598789382708448112357055474285327626461197894056314208119696290296871946392825764203702558293596084592330063422640815063526516709219894586212199245909945107086110527318146202939164664570138496089256131319667582023030903220338472809679989900075966190134720802260549733743988009810716784814967132808315697037229066016638783617803049541403814297797063504097571959601223859618220236460435365468876273616964977582199141192717139286886479366882946601855885523540939542911001721165181303035250295757804176416487538695267810352135675174637329741832437202038317518501153696331084859275436546896784758870744418504221637131581695470043451607111498383586197039434557677809493753161844551986777183528706928317708570047213682844575429346154967850073774018951110599706445779164048664056208523721691779348621942136050587382152008824636852587867072370504325971481960878918898595254980293982721591693440821999279481942233518649498707717083882102011010920568111932250810913249902342481472764561569756057047564387676395955386968088987048250789547613391325196480282398866643140635374540815498886375692701566620478926327386180090314769809070586546850483645016414930149011180928072625396135675547919261758488905962683028189154974348858839670607559911538799594215181566419664461648293512903197378392772465968575275924040207070331647259700136865792916743805636460060225022009555911506758744722703329764833376608884035244776681807079272059851958248969103955274321981361055653095030882610383596652083951976626946931369787729556364440715932097751242497500001584071338920490837692185167860605115070019549822090122604643634410262326319800746320962802835287034390354111115865790874939042813949509988832911268012219132145696181195882383952958868481795589403551825711445660055304159790661413008365913113607195310961659663716376009165695349750905934408643499052196577976419823962941950712959992212234788580725813670158180525202141811656107580848620353789727923453309609949287741837902512599149154339176262431563817727378679677652789586189907215092360394745291315315178280769752824178866136127120364844360843686570666924377391665188451950415163418019008550860833335991205615992745172384110734413150392823334652249716284396986055940980014856009188306532585605420519999060408247632994088479770891700298117903439944095625163759805013608980060771557434355471774895250923968185127614872473437277089861855286234820208542123288985527978805250685814884921559427896393702833660533784695823628880970072319349073259978716833968468179590572694799891627034479004070759376277217793391752209577997711609243576249426419043330333248714674522314937604818018967788378992728856961524893134453753720792091904689980700491208047979392621587263636601034393317517058140153695430456108047489091988799433658727319727603208464797159018320689274278962431580710268611873345082042650017311093587316737506047072564104601699540422208265285367519250051097876841814985282642872180071842394128862870024131550427158424470800953331106953095712690997421000768047945089087663231635404628237322206056194051230418812268915485268026095537420507465353167347945777910402999486556725081524841236691353551068809229611287678981310879402131425967814033549233559647486789458759659524816156257785428046357885788728798334726449873717622126595441912361442030013584241365584775303418366701542287195829230746483209292971621640713714120962019145289378780969314257595128370406067557489678645404458053687082712789287239312499629853769537574070273969474157449684007131644293612697622540605642045541405898737405461999281923424705046372116343888909788638977762339671372562117660223660695670784812600612056762192717861277640703396725012445752647660972755926419081291679166524667260979795012933256505922882790031660146080407763031478392867425713264775858816101821915969759500481246145397674060323709892952582602767900235601067846724543572473980966420366855192885879180614548283832841466665075996354149725301338358519169323717267254062579184541615446217563552842801325876467818631048968727579042055430766829056006240108948018339677305715364169866474021158726443045415282083577876330771922441471903310208177751083536690365995902758865071635759854772834694926455251271950341529608500788151798625090215572084029028380951507817448298079939298183520695590038747651635996543349440728664825713158380373219558529466057128032322906043454271320772921500287417319365976168419625624605115776262120980985923226829065963505843252914585540909170419599634277050723038933433924966297553342377580579351310874515911272119419209407790850494402102776888845698141493104421164929231199034729805606023201679897060290278578720809957791951623105561111133441647850732477421840889254450727982538571816636875200828789909673369478549612505123453026030215697838939324904100215648041600048460039211128583146953718878628701163065895128903772760366897751078368367149449860760323482919313636639333077112532263506484449628903562140910917184883359776685061477491947729628529940226933346422619715834114167408979784271108750432262839890447106483996662801874672678069833459187503127812301867619501888954744651596042888493821496812330875953213277829557379428092928030401078060596211030759341486094758152719531736557706698181800703577011933959623488542790769609795754171725493159747905511760096118476672312212214368328427513637719899441014615290328882809796585736312071114005119700172543463579423776006423420286785176042602478265390069956838609562249314263338461011350408175605961013927967017552360420813070363697740897703263694257754856012654337464403965817533944829983303847137943128996206061949794495555772350381966455640399658960314931510072397034602157188468414498235332005390066923861865352437171408532901795023023963305004538478595986842966576827375616876814560462321033161451137536544148847560393613737181536328819284288283654494839769934062928897803037442335381073377792138665249528844845017487627988924712134129833878665284628767176241405461020337739105966169340002371434437030992017569093264600981712234552096820682678182956004241998659956895146005707847390853503811705773368682511571235504699508351848211408274201762880277944793124322084314104623005572039931534794296111644783972369615224022661119722029047041665683970708585749056976393919847203913389066146411665473936057926195115695695372679013803092665461271109469924054694941918792327473598367085225448873229547450901639248463592556312744455603370397515050475356724383915330376573631292372402745732770801947701519132781347983632063172159675682339097266427478373480515275484903594400622175573994679551026905871042323165045382475029142779227145853127831067763040180729594761438319420585431546444900131105212053283280444109163920317054623845778114784577652681377523891236283117469043861099922393013973145606449737426020400959335723260763918132824769576181564972959353534565137763089779652100094511330446364797507184259503543793453450700361208294282937345258864388186370815590043966329954654849125677177327740604000767897331162108194915690616287252972595860248117617268977717440000074061968313794506703892623292525804480259861766805425912512279877433662083855611776315705013366749522257941448775139795054547860959739810400803175328510521654357751870807142781191563107709530016678215888193691287437297082541468231278653445347712336543897189813930534546163421054102145489580924669226658179842336331091598641340097439471837720432580138626610040040257095582924562504785423881749020155620716033485839761416339278967015865325282388487004257267088252026526083144317305666263332820011765688760660248950414043569433347527093520428825842731654779513418611057685506312236998762941492403138134130278628895223957785888951153773377278219125362017598290832241727107181732628628969099360075180094934523410329138135442828417419667660450020302725791226991835309309904350519775277169896695751012666612484996123705824658061230636549341946353772353847256502559299230059708672205806258078192365971229407426411100522203370801883360978801045660422495415498395392435169201553938998447359782907217478259097827470124954127685902024144358350312650572612101443964768748398651928890056650901122614041238234484827589365452085753800901291898609505330030279920549391725529609085950104393364051410163218270357861744280293822046879547215661467548620526839159988042187655020925238897459763039384102623956395291728187832665657676191301309167658030267202643710625509623416068746532059528983901144863435882231708345398017370764455523600539902232933592756840568086521273281265548544166869155189217769253547646162274698681904982234866298619169147606728419531849753765787033118972568320216833418202898103877938830638735413399030740564216566952884545843561312568965256410100307415769201396847369236405710036800927520184308720379877462570422389272530968336374888153750668030474213183276584156135282037084306452805350387567036817741427086657772348793596448591205056211475960654991794579079509727749744145381046319701859330950696301434310162412623394533581040768155023230373375367951934091941241165048796250062129299057998101829846308428031549873308933439874652060342146147487112567741122821920746044030465493346166046949934759667809163747600240109859253313224534523318272414115305989077622667597620194386096109434183389241552231538271746064990361981994758480643400109172872094736135632452901332851948137971314553706055023957966448686966821991071157048343122334001260237583112954121317179044296283918200831396802298468845835281830105166394193289527823526663377548771320675672435904302829506965065381751997283437772160841249722003409268884062102256196782344983409233009570294135858257059097270907739258344911489341204245278111169086281184455973633769673687311268585203110806661036758146943995527693971279945008388466314779754691489727612537392064606860749506761615404385929028920080939532208104450150030102765923748624515319131703319720895752546614973524876482149732609293236236247273777247682281412717649106363575287531179493828389605764658808933368078871183171217047349880988574824325448372362610802218446169817070746575905701523040744440387553885188323723297560118413455086687428020491756241547694681510237054642664561138533959873257613324391861408301343062755145453231896143425698238618820153199341060086040582767420305271235520616347786529138839814469999702896131238637423238457679536703133536334614066610801078208632267460386521332681908693272437495162368891180048919544538231408211021882239835055241719820614932102560630354408793308986702893896750522314290296683540293827484505905300023101114992678464105412926567451101220289034894056181353733141385555104182626617264287068129416704930481819217760443171667541407462632641111979636261208100709624085412270249731273141538595684501410362538480004359104643319518414061525957275846423061937152965946901155002156142045064539496986370236697651210737114979925333838233483192299783546734471866931551536263459780264970260754449708918898646840741976940696392398098349093164620481102695289878324157316315265067700879853313949779009728011413535569426979582389581110912157244737931259265697284970217655135182755148621789122423740790275289578800695567912194172232381437001835055296422752802918477505980017007907830328996730968596231403288779932382828401789209564023214626352152557846773852252722874386407429775877571315794193926987712301114758359459503977627104506796335065315210696845619852741005843152072857586021494712277348477454941140247292113886806982524284931523693052325966127425300967746893055139725681250453767381048254515620100529385732505537575705833592952363980135107610728887764666569723973048108451266554589176904835207707227061181003264797909809603964010740136778165330131636080406736628862983444586970582772349185817537741391488455814718914037828201228379025106991928961877954472191162771803243900838963413363540922360099635689809501854005721083471139343422463302132347161478224568573755012232757654186967083217823591384926492065733104917127987001845373958949362819097899361570859947150307057739759117086549735298283819946900303841606500062502318918356952336582639401806122557399912051397857458771314546873219089182093197569434149084560114632323348457092797433851092597638983214843267901257463663134781314617308650305690845449700988250818658679957942716416638441577123155235542071894931406458086716314074927818884112642886658753625509830302008526793083053660843091515069802823880052816971852890353005110913111226709140643938928883849361969638411929899250818485685497351413304912979628343794926690672319498774771835144880126905945243021432825265901074072219675205421551379944471783809347780511228363292693403155051134265892661797569449245517472868660920599174127187787266072773703505077452795402984339284890109683702584921296131737245478223242813633895009345139605954330605487395849639794196025882962585218410041041429164367732771713486946842899444326395469338024741363056416431094423601582895344849458557569072143815600281853202226854482541926313966220609663653863085267317512426610902406967587585145668827935607177770167562516200765317627419446873064701802764040551347065283472151903752719308428159105984289801003877027690073436219093706923712506639592307178568316033439073153303229391098307418523745556949162370839618754825331714657520945252013875481051845919728709239722269244770125576684572285165138692025972298962448488064282487593614865073188125074142887636760634331369470666365999529301391916359895775328977931402715320155854718004339702657310779570651367343411980684708960460486854085813610752944735823372229719711477975083318919444329411604351499806575223073087721623022082458857799250279934773245731569510756715017313617596479814682740942606042680619141077209118785093772744481092324182153082120461148314509548822990848713228383587947163388561905319606931240687609278063872344362746752319253909833481608694446649396658474584472355022720916237042652989203977511744555535046390355716747577476430768291790028136110008828218535184055926064540415942043081374080942301716267577776825913761241698826441242707207132111082549055297779800869982368478064129006255786388275389167279944085935618049212708094398002773133828203282452806125310544290636953095062867364164973356884934487769366520655412414671998178217851002471623636416831521977100539461389358348201695611378431285352130979354332581354421771886107996693593322598686163173091956900566100319732711910014276847848482784607549460708071287982503797286563627735864685203387781411711447488662580506919074616983249559689439820043740266093359451795279470837398893812510457712164918416267341168526716387812302708234976506100956892054099586007977404466522826031043604785853756197203659574797542326864743641930696275983938639039383976918529453645314080185326049716458396631545041942484131324627562348361695524825293457752765911242135039196794110091975825747570795386505568799966389696249682246280342966618524092015699346105263218024163990791087132083482297903130763979613473913387176208922928712094682675515949616267443388284705478374658029384543881572979624256705070684391120324441805258828422852509250787864822604748651961772908816194380783959811159097025994482453404926919796944922483742026319123452985413278017571278566886309150358857124522190490885881345265863704746228263588956571919236644608937090368268874303754973376288862484085353465640115041462926017035394130089878665138771334776409467909158695157752579971217718909443837122861551887220981191484052592382920068292711250569816439601772572259768012623447983369317370268885112258821014795706180517495609583877032038048223764780202857829613900087634097949867241477820722398981112549887784310561560787017925696945478944574899189450789104776948969124427698064774021771308210774498675118083848377140246948789789200127922544042988206918987941080213229730827690255539103739275582043076502307615545309193623059515142968291118529600993950169553663464472074240224949614572614109928901068324130068211147114566598653975234575260644389185930565044366393116001108968881017090742771477265223806396303581603252017467829710954822985343413521574441176308265778385626082663160908651082450850219494390316261203030852320657614703993356424039212793921477017152023812702975090180642248767216176787186820146640075049858959179489141898945811981166766767170808958417303432764811446543595418634015844195047934691554050223561608312574096058566460662719383507164351661101386660993035073313069955716804706013822525515533056761110682353978362144060302654190404145577230935702804278403687876413224776226002198161508963623553291372473425796690649269790459891949449662734434497162619543058824618041217236890350648441493035341339677722497236966734545138008331189365802094164092973437751412787668677178386372246386901815475375282245813809318446288294605920682942075072774629822880638169371477662359989082379276962773285629649665570212988295554230364047191993415244940920604530986966933515031262488004170410349415695604383630856473825495652469190529276541843602095979249080866386859816410557433030131120597006919307418842721380676606492045017393675143982663469887726869561867405220787200566946232894314890798822098147226028444874947376198263353641501588628128443875786381112926797179439990922916825839092357124168749174656866448968685552166470253991097450460836745665776472567072345311249003579071254220431847829346190277916865241513339550320580978949242251407171309508801142462524615167545251923953553812812796260665256935971137006909979688518557390466617284338472954227671934777936276788589891063819758889652011751278052432598139972244722591673113941914651135780718062103411861458368484552768493818792461621795938862063507451763056325760717280557051015665570040719485293645791748867210332743309567807945264041911552088112683723606891810553846521465344581837340337575816983786603970147034983592476490445618714709223745252830335030049582105783537791929412139077666889615999658819848049169039429437562782426105040077835870008683383707489836861848947846519033195580928067520781916779357919581684434751406228043820330757395441949923732785636347709074020264905031104602407841853676929169108066940640934182483936811287487300187931038293402458787582994845693268663457343886526115370317989144981530950100566693608492368194385097064324657539024043053941959974602378726196174219543946708813954653192301733919067704673869912462150060977427632515602398636678171393136327767037299342951693778873671329147637095788215580934326288840911910852018852545035243020530629293621139561443932574144697089598068829122935731776730489045717358325562473156966942186455302127002114022039974608747779644709489115244797796589906384418770997189567851284837589695124739467392960938675720763779185299900011086163519213780957046726615385324925492817408567133339731588076377367093080077926628622522134161015406886491016458182682593162761762379998002418582226999896385410590275161171583552341286538648885208081413890952551752752797152221884999513693097781447598139937479799584372915499176297136232836731630374010313502043942856037083079284572855603421118286922603912225520993199838422159918448395641159089305976756705607255697017154184132277599592427392938983213868915348765539995943077594858133294717775720439621772454892132175003496794944803486399576292334316087142198570183000261767196592083498937714834808242405965785655310308867240264750725084240104837398367051824521123066238391904852929941093000718163245431136851931524669736901982562996216814232339219187517362249544143838108073634560101557169614027499080920897378574498357297870125151949273252611161270439044500436215339165600634590130638837538406159637912104127317075279667888957046588281010056971189276119613442952242095845370940420408785438221448450917300404499485015618821325815982156305406684467854915034867591295681736123801644123903472484880982695945490420745637844789016272486813545684665580677166106400066529378041174791179705123454191196373928042558220338091435619540304355802434014630796745807381153118372758265098581751614693253118459658201085261240929239816470742412216818546733542986999607169421929800394326943465975730067446356260970304813476771890576978631310520918610986809549213489461855270160970352221518582845449240776827108303819094494349973652345765519749649310958102444092065522056161957615174661219101969136249516408701120946402626071662270491861796002047372616649580878748688354792295293871534443385552049753198229230272437336753678022532393043874055184367911111756841551329365459321352608483315813334374337310568596237612671310603149703958105283852010022577250217733701047198419667300512304972779175103484703105288038490648270726239725182927861156936432252693896147533649924016941277794467332256579075124762539427709667169335313670086668318029176967310803557640237231328476703794053310311820101309395685542141383864830782211759227453232247222599993480652705495692598122075926249149059025080339063266945367639035599443590872363729278907201041022180650203892026357573097811468229412919246771523165703253446140387755383761517408100583680263192942088900969832791145099411098175243011028495152388183916902688052544899401372205613020195513891997531637831222041877674524454439472945945212254095374591974227370351556447699278732972179879420749801974327671114047748851166038416940672866245738532130035162815316105688928284265191769628703870398388478524535797061411200689742531616776934946758693566097915215363781852121921266589221146009676114370113880990427548952197197793587964394675135785553969275488255012991794910026117762758243938305646893882803367448467823194897238658298949353783762585384450212168523959099319015548041035269244644024724153384295951342588169331291340066513552922950611042664665784552557527329526991222642332215088273248516866665361603520835955238201517248244853520194287825971728930306223831381541107286874995748916814798772743186221871346550267849457341258409383121259355173215564802573398512742704407407353903309711766205739603005850572880227927179705863585546462587859618635376158672896533233699549913407067756479576671402085350179079209249233543131557488175982125732060048551988337610948620176856392229720122234214910003609592928397806655297646929652255915926843451405045566792524234905885047768125291074726237865711707059430190638416289880363751650390879052030444196453432195347346546471973595196025067314493203517091225798046431962802290239671550536465115332623149980169153056475053547607860207391885581969225821190724446164347656307844194594110576792306538361726391459536687379047485098306982872205684718711398869858317294785706246042607703321866399929168556274085551900157149582074858798858927963962886642316870029583741380775822184803732565395060022164330511870278833384757665789177983496628191962352707765946493535189857347970687549875458419045145213049730996897937959794156202605143810611598713734230136901890281412728525398320287477523443561838173293818292316049345833632539136167226924039140406480460644135895289197019166310421168967015930147894946958187321911099505281897711988711986440711206781762152755466176871831112451052660929435148527879081317378330218707839157868046840119670787750254465819236549430724723180882781380800498009997681913741209779008348640190124094824911594977145019009747796649127544460467428600868260071783252436776499503307448874271267037441639349631669659614339079901183854967640661714971402324716688608371364540073251883464247008581361272298946073942177695211713468753824764056219306029960615714963478676063271289460377364780779908789119694374694948721756119137458611220931626554435268407506342063623259853423754193831196822960510641939047408041517463239276398036147791768823711124554469403650924174273895189888261773301296597176093238168673898602284494223265973033503023529023169812999040854518427316573312766087472511745078594697118939720977713302594750217872938788577622688281692810911636801747417784941249725383961109844305428477014392159551331431076168788988569290084440324079103589355431543999281199292075106877733449820167248665228704540250235452159420892950731047234328569696921783329007157636061574786939467398213664407458777725098055171191943136064714165161316072512894042066104560945492786017799288070461971906640229475346422951137664902689538880023720233208657917884402752519306741337770701896574672161185533453422328642339907867753444909885936388031154743698567644292878171602323173273194876934667058056987393758751001171478861250884636993226549158207023070147724477550431365239144561160487466568984511452077444385275342682659058686754277070638882719331385445448903571853607535211471856374412735709013764283377436284460290231937342006032339701827707922817442089847588744750494996349517641320120671806850677834301397403339936324196914179019238540804491813927635863888947846261154343056708076375323933598767814935726758167789515936496642310804474947475865687661340840217148070121244073595708069268852618981241845239625501954372889470019480473741407998604411900951037029193441263418405020994094303361480076149295100962624745446550467217847414473500041749715164653532302920687277804823616802221784964851015064347929101622179630648327637687380603612754752974970029149053744377497534328571746960809258496336943458129317117108749110943530231269560651773367664239430832362186295189004611440592803547913033137146900023343642270506956296218655251529600728827340284662917217550133975294701804836435603468062751800831292702336291596085862177615293016738724534504884272841122349359660602202190360922370551132725799910004522848934386417702739100885687810909977641047143363695788010064393522909865656672138344979003352840989665576735791189768139643655400593235417439345892545613635058062893557581403178518529678550854034011830876857075004332710375269005275398156726238886594609684164522894656666643117415552255406921470418708233253877054918082927050214470427530282060399553781104384375329931827341236247969602131021426032878342743245861195045306133939322074780233254643933422730663181976488755094378227681335718503138551807719931614750344541719384731755237076027863556146460738410843506758494102586700860138868618715321908492007126865589707875689858105219292094170543344099565493690834388075882098724877634249396705111127634773665575252350634275462563176731500256038365869233021602990256900032352927488655490124416903452271837447299576242220639010907061858064097277856086727174377391537703531304601984931766854839949112775796533738980020917645130808081778526229854568799545636474153830960355056110667221970651174118436424704955422926114611808924206118633986104009778463930878802091271348693806759042132848977432544907839407229894124083874975784340941411789865437199229987857679079972812278866111383228117434403231935742412951943355777337320738797039792870381403337389249836994358066884293071110536418096095489031736481868834142904129262251299674149240088681775282677536767206682131494660086697105301879195912692669752737013459414707875332326832316805520209926198362044238796117915453474668621065495507685425295760656476351263333253557053579391889347869918730826586903927618911562012746134707451077209085361192437234954620077993720817707292652708920276099798204463859903235184577063288658339775658030543696920328358660586443711471963490741241704808567130613058265648429056733041283618448067490882859963365870952030401758438815166830096400653200589361857914073145024511257892789282012220366162507932778645783796644097201418760841458244803535271505188446325364600228373038329001148344983727415780410763608177474534085659766722855438779553141472201463883660140533273604776967204250729068893701780448002308249402131898895961276065230462135625138814289282424482034365894100618732231319262029630825600077324878984657127034891232398030151880850241090275223242683618285738275138652335488836850092016887233957720005123868359875312327017035129899936666445612378536864845904651190457646440643419208135324042038936473647725455300569901618785250323245030220455885019543920298770089651967385349965131986410066329735724022730291043988913669457208725464761438891007894401376051232101305572947867492280324821625860898937283773095038586551924151489767910591860630091629894310383726671100588154173294223723532094395594361641772465744163614789556332071501898580910681585287558325199372423177803751934338469445772702432876660006353837836703326676911276499512012962582693758329854966142867564873486417870035100330795449024284598485149429540972856737011140039980827119239141453802229603530372324417112527376064694011108981738030056876113314966941924915704431558708610086023561762708054622649049338521931180300209671257547211129794234628485633664404045197995878735616750046586846414924027073838323950629857186400659775611342196592070598169552997720795851864641489120086666175562439645778515180160384529046359837419156435243229978218877327828099325455308008277836672418275750435346665325739671985506750834857577562045612641496395264482426347660689847274946791804353362366051874308617906390474552359039812115785633662445482431920223051425348154020780114779718873485466160750066983756633375027947280911825376031437610838390417455312417927418478813239767795436873710212137850412494991847465160047196051375938686881233218288388039855640742456557676359641088365920800229589580739998212276979988060059286433886029676374980065493978457898258899695626513870863967195189417628051186051143850527902484536697960050092080018734068164574345216950905142467408231172362206509108459790789900935688249765506819076585037292263329658400840334443703911651918318863206224084506177979352979979285550048957452854769917110802987647100565140080883702332581718307479417361622995966993017794884062651434505397196069395116054966387078372208286495937249742717634708016775907594277259435004301089035868485896786714358190271668478971333623690298798338050336370164705382206735887598487705212548608557462124012177788808319104211003460062057906595584891542518494477419946177808481450736030647936524026490478748604770354459201268694152330901493672916895616887540284078399037382994770715721275703971619812251168155469894038647837135488907360139008313193339134501666772312541329083212102053108202297680534247758836007215220486139071741091128638505452260822036101738481918768120578834529930885032843468332338214627474749848240644896029175385104045688659856645221426062024389308831897432888911414414944316010763331281262581235973890151347909426838718615554968270002332886411059869219763135610736692850809498283104418349888858763568626218359772693675365334335478813100341812132988089348275392076257605274171608160729989915222663996382159687340262377596184844167241877430499467266696525961873922792118255327000888738216608308731076862754700201872012123299536865580913664556003609198864693989255054400782510467971752863106194886628216151529602069027034319849447481284632401402237915640524566126561377818427940870089696647162768112040175042203777960661383494935285891145967925288239477168587336692115864894200011358348022914538241180031723440081229178541616281104862485893862931314781580929099849929790025723663385256738050541378141257540675818027576504555692856993175194886865046922723986839223166952291510690890165099157192201938772180073744361395520795773414273656501934718321083650656676350516063046085473676585281605009155309372032971540546011226179858420919660100034986158006779424245268971529623483525659750103449182862259059710785618881444488273733830185781054259823531070834521256848926296318580901514461365294130225580731088689780519225535627633596308381077143519930759854675257282942009805297410267669201305522661882855813495497652520497056053749341782487262654372295554021810241157615877726221411357389852569916914983039078011639115242061369651371401013692164044884974391754028877524959096257867901994221198623002816636508756310729679857551117387731256752689642880393660681171598157168842922124970023435776343451437495070027872413143136382052730545706647770154682968890759108065134153342367104434332811695524280188861318426064822703530749854578337218868094306156272452304474994533083367209766079100311153501642596737484121665343039295709715162425462481765140610641555838017962917754230969231794114357430700387322717740738700586105183786602763547733814371035174551077017360266838442258888747614643313397379662416429156052575407391376193894937027042516265648175002807819642603937857799995239621182362330573252823250875082493043588960464387981115975753794299806069252212548430384332671093753746804835254281830285779599456875555812405004701236669125054076108557987921717995111107562970578244152387726255085686848362480641995183322918564509299994938762357299373267298403967538867641015301737963037778935533677014535475081011324338102251375453801006253492365919689556561806644926238039334003165876996374577216681658198479696434174576239983489285798119562279428430558802982138691171545290362097942755344284308392470149696692385008832170298237602126371562027732535865155136205379622116039954181782634415852155025443272581908624586124718784401841161075490255822610513885381104394407242095324645046737970945278053048720938057263899032107869608840684733339344162087061315569141541690358031957803785560435492216633041206749563324626493755605530361499281079517131761927349415342519441964635054465887408014195734522524559152447637762736882907199165483902875080669207754106332336256502832340626975864600210262400101441051902364927900090207197793645715907214990645793468082625989637516323092550321713708619296231930612607825968554907168407524424310608239531294860686660184589407429093110615079805651419178750377809588496473618838710537934025083717492051238501689615871861837795819859955137418083137190691464237122867857076941113699916940827867146546635155598183891552561999272509207582038186215300842416270615518293669136213077130202556885240270140233207568925519285405771849714349471020896876819018560735591774498811447805373682376709486718830434425059480764671062008087684322053388648762910271810955868607713741226069257158205406990492338283398598719259050095358273501618694951416638366242854951116180369522536621635584125214368967250494375705502954384661673054380970138541985618333307703413139071875739741609451613880135268595475819406443893674820007777916208203877574152238813569011666641007250697809462612754152291481878329339085734557254848138124936556185175334404245302932807118460919917012991472799316658902876636875604608849255271382448180701117467463509579827179311312155647669973918331820253398718845511467390114875450661531306595628856340586820203397692389477774363747053287232618196637648971073255115453659333031131019093837523754490397623506257940717326344758993739373009238759217149207727342988082941988655737337424383671105894614626266075399694177676862204501649525445460526198676572751698707949663525811638304723613463002135975787275725219470228977700513200757408099214966882862640139754551084791362693587493746696253240644150216789661628399342329702628214903408580361406044014865241815646434858794634740793744505042692975348467389001436204130244618877930798247365606706702153056279968717165902109591520761795948311965675398848465582109509788726131456674473360619242298493294306142893529140284629321460464139719168132403285421872814168793663610126392388471464309607701426225262223971884231211723241178528251170093721871534270061933311595498730543615131823936392577568967539517223475649003844997070368418613474674308765914208900631304862392751757847981277864004326705435717501130544568703269262181355349929067903403360424878045142937824589905520457189140714116930371407937881364516096680848055029622052790141508054303412531022029881056493817180956519513504013831135447586861323098418168321323757426239151245839501767790833857439105288430536520736402976318014980944312078301338747341912237683935233667387056271874000661136024717667617300205568593418411197402206628045098944517305843697594277739425160369909705027815638484482958311632383602361876126761221791635737974614019349604656322329612011064354929806407903660084039298666417004372296693731604322471838653582941761393122932124245459427083911147218652760745724866541400780804430839314587578113265531861843024870552342479925640847791089732550690026132077594543080636376137051201361452908792574156595525593276359496205983398608460565235736958415647552120820624337542814051703358253495253346020518449244995570377607785573434495947148424224572744751333165970865223005975038198457701646057586609251267367198979242242018515250637248688088871295146174992472816153707592002816226506493229697005533132193458466936497983217095620954670749188705355212240606036419133669480054626067267215568269605394789349499180845560667795288877079118365476136004044472585959458435736732884420822122890055697499620834968636670013561346785109748994354356515605620136568323207434115673380351968083658867696759771496500802578150156205511916453484276295580223652617612841420795331185687514955890841972539396331337316916351046072476706623699657385491293952910671198152781372078025150413035333790575059925316323076926234904691078439693919503812227253037319722474445107099146554139139585293136217432533683023927670384608882517657875687679367688826802695940687804841146418106685395001137486599604050942632173426026287127546531963762849816204839507096419762831052044956594159855004016940136789708720248178961350768270834378321868474677540495878377199733504049533538772454398417964054190556459785157395626879579992047816425017023482764979268964008018829532737403651620554211646915489164186182798316074919088977587575253262157720481892314821402725214316039005468056289053399124229893419377122172234826209868816665230233616502919564441257594581002453851979454393138900571698717665775892740867944879706667133985387529742552504368290666490233018000734096980479808073945050477005629620854568828395501105762860460748314986895073828914679474789748527513182033344638134277887902612963472901444517018438143417821376462657187420280605697389887995845254366288678659909456591066483923766921200942698991230878027491810036505479997723983042656597143100832318711397560932673606500607519587893898968006511950931308681524097327560388960449834255195599188432513217605952122193310060569405443670914525358791994638454429432326366615887989248283154920673603470580706613831867548250046983629614530832844894203115195024594470646988053908339618926329288307421635764352491973317395839783857928097959775462224577413155778815280270140280183489248197763398347358664975682943231645235787590879860390876066246240379451402426464566223188847688056924183288654691332901016380627219840395868061686735569710546245018166634138876378118656412460912988305033297231269719605327649849145386179128799275341959272146560632299549028810907091312356730423946815705261442498829696311632781749438332180642260451002539535926743011856879965684711808678271008917936930854554716587677417568858142399652272251496972961508077595477789735977166069206523904688265871486630416729839097194434388762595270762952480989071480850435073905871744681266533585665209763017293860317850306798448933509154741534217851834293717229819114541440577969862986380475729358654211570390196288226634588777383624005694618664604870482825275085166715081846966912011861668904757769629316542538464272966966702546856591634179170709790375852721660931710156886246555638054452364617443736259004578487317781662207444596091645029647595952532876958226373385749776121833977179892556808444531368422986141522654432213299872447682929801506860334099132784318954437215905328766159443181948841547946909751109178351160298054745607824597883460815700319418238597794230052904049854114762246201612608843569776717411765428764240033085327597705212634848400300748421128101784787599628399531772422652689523483453978463030948044199270373213609678688893993034604283598130447131074079839261197575844478543836718669148410596408518698649459932637590029734297837119733638416379734691214400231064602461058933789261762335312910074998462409709331485382264652492013791865251784211461623485811942971957458982269248373677379612275941200724619920657380899508626812125097502369559452314833258864413444720065537952020975396495991850901486731351518109598195687443139747651552324013557805886418933529947085566865372077889287252337948184687538937257038729540045045833436319085659052025791360048431816233635756387365413718971976625464688697596872128350645949087909756974073666125132452461233459265630928358888029908714397813123863792474307470691350937641561754523107565386801177756340991837065258690416650489911759226201293310124738536232750688214749827030955510983784128325372475161469965488404257495219056316372602483751466340010554492025083921368942015863898425791246738845851872718854832637858632363569243155707638645306391476136889149752807275946394403861412170215765362418180470323040380570108221370431503601899546230178315197685525715751551466151447719649094281690954346804349549315803597832004615651346211887077409928332658606628047657899854892509258886520396187956748336897332390926965463883841175378026821488605835558124650258632093049329910306812195104846742621837268128757419047426852922265868309214297082105469372575975176929180118434696948478735635004350260201072124473173510817529991708783527540203507444126568487182014012707333059916456897528833512138866463890054511850816447254550449860466339675370632744853836099597683423899729790361675693473167044458084656898049689383627760480335392379511841670954300312096099484678253036901110456621552286014981635335946702031364827302207937992625799382112541273652331824416795506012521275422939402357983947734074160692210440586935413034290060455485616966151091517939235565251322529005706626616399840747556161292409265342001828229214224771889207206563499360255538814431913796473292313626240757295374922151541505481486161439447708184391503375595637129668920933750343455058857906266102795051632484347517785978295775323313411556403338574996054791232512815178829995016073083615911762912807140943265709421880676954040922156791249216105364614646174270237019981464259861076961147343871418287024208577454102744157251374605807559652989668103983522331773005856798736211784358073721485893715199859942143076831892246250938439460795076346481880361828367706783175298020954885880573255887648742217293879553030687797055720059330561244848166263936991471959611810810988600032990009574880224663426077308171049142086505869148868192698897864934503622373256781630869980093411805561454357990857799965478299502781275790717707902607222618674689348285072030524157074910082856597144675664428920309135370902987523038654736312562578641361947882296467413488060279839437488088867599828236051930534701304652672217445735590772535403370902678093448222682680053593274050927198651958864999928587927875397210715075391153809797413174486913411766000980892551332294603430136868166360279931872592391424354929275993507786607438760277234827033453019219188269528949249774088459798992834262074116509659699273948423691240298934697772845831203728284342734080440582279279449385500813880860469186297615049748852512933782219769723482671459702540254235044536179822421216874614525001775749713947605392725371515410220051017826506129249370210074713215702646718970176529713529170846693381051341914295151409449535274191100251786675606588089286740192896220173361061377707404659207467549180382211210880569761422139184898779660299310669338557566288780097323071845964934545679097449303139272190049957007922314583636747895359566529361116457007403202909831940409008408006455189265916040115644007700978224902795314347419690556022233793451243422812163267353732124081552859052790805333444858580117846540174528080705596298960709801527940509275683218397940646245808634695942020582766084267011458198139134217769109493631186188584034555691133503811542411654924031597346116788156563936844605336064630810599891078683964173599911243401859150132908382095509344410768769312197988782293593537198007096111765417917288730733276028826279830984888069336133917241494472894000984748321005289428136407417143383750862604881892027565094938513244107402464312659770144751611495298642336640575468116437589335038757968609333810029938311287642384822983177956957457919821467535466615144194479940271281199097752277123252119610598482866706058077704801683207381237291016268712673697468663510162172182951210923396488561245335863030883344219370043264835426428832682045085253755391670342298510101240791652815282178053877948977154259387833692525521791097260735254755618317567726589263934090236977898070488889533001768033080964352020515624465895005372854060191248104423340744299475277063476859885100620036971367756235206040881659896008808970295379153880140188652519053561359286184993498714652572977374716481459400154748588295102164232072066728177279872344476533302549821537503226858890572258422159433131778568064332111856079614287771157174759861565675947119039965526059445784239886587228092494363643338630209966115619657624250037371779165687655095648387588685585792363772629008898474154430690326056968717544653041367105232246651558722455468732326955756053401047309862796011602372894278565100868637091089758266599361238734206663049144555150539070595637588187554293181813486405153628836709662862512993035807782770529389089919949664542622271445208193476990560947875444134292560734053337063940557698527728823901527391674988890430190248277740962123437623771908281171405783186441817996291976810993186075556557998226961899670505172503176970478318494381174105275028007164338657876084119897513726133620867213265307058021024183986849152145662738263711400764695322920097385398830140165112304853506792641405855223258965232350377597738969524234776253945915473091909670635824951733894422842441690890589660074437808252302182164094347365335981091810165325498936236852670961537328994524144662622431693237259802425553316465647703219931940096947383304113797575355299426165435216249264901202435937549720565760272838440903152626779553219325273970382404419424587985859846781540788635587515948941100411778748944502650203511973915518963080129984974652062938675447263343703802103216183312660101358702610588424035217529640766864782156402917035720017055514736724330170550520652178702579779484955594393385996288966604084534992808757887299465721086827531800822034503669206341119390769408551044063234359031185562305536043937417842317487170226200062346072656604035728764188813684832337862573503838491030861586594880626236663590941386623327835927321717242261635468987759100931389908205337030770125738718912435770089268772646148830404363784732440617363888102030072243083955413007193831439679970456749005959094031979836487634126392952125001974832070209779717836871185108707618032380023315277752035894893300486819522695218370814949896932469516548422492744407152604262917839754341539982172145176473319158732484361020100096843159572114232745239469462523284332950336060642864278383011730314933243463477469646126012777763143946081809278161847363459726085802082993954311369716895213259145683275933972210865623028510820734195492283984272237171447600320627621860145163832082725642648053305440108558000290856661858612943374585011721473586332779871910908665438633411015793112979556722608816324261617218240188630575982778748753216923065833352233711992412960663285551058869264633439446795915954686294614812267851897476985265416264653881588951986235110499785126886178087546621762307192867904079329799033213058893242834314134564638404027209296264546084794193282406062348821824423155096768904504497061310235195168378920891210746365273129740636575425724775096719685973840576077625549226389290134994901861591563708501023107317433094683524423566926509537438379112112112658879915751136317409207119917901667329649860100149711346557414843299024723560695387656137649394843018433478356786091791751305745282035536083934703526256356798287317181098199795831694546370237474853953650490965856766206827600821037559521394063663183057061934454436641882284337706578013703943005306609352594266289781854950351898955694436213541830663431623291621695983012038496943108637122750855537092780036012131708176091919272216046545333582484727067579416840034091823452982412452608419924000653635798647992947937057854184661089608239599508185063613570334829533970740227350035397393155717000491010204512679354461400115671394772335434139709506541341677872172226232919488944890308313364141651038254765895622435753193383680251800772959113895329441321721859304347096223992276458699860095587401063244938903631524427854527566729843925507208921156170380241316676078047203333145097818042063695366164952250125868882199360300793348864318938743538350779520736015874513241645425213979256676823982493109630427250526950543131849623812953265194125672661660564722217583709880675198616844293991683931488262348199697465820163923974650871923890267949940031368580963834738838382045223106716399600585770193305784153142999204994212344264185603545510277282390117483700082920984635953011329815361699580130063349632704773033869225243280908569596520924798977694322277132318091865693169389910910818137796930753149498399877281880235453475339256418983891401212406155809988252657479354535872175784013808059440368582374626977844863590704640726364297744401319292782694774852043441693789987538844035071829495800277347848392945872711029439190143738835446051406882570211233732353055205031785601381001751490539891533463476060914684491865795302793124812634292938729258908548785949974381609026349427257680016784008319822904823431224402746515750618877298990789566549591167421981146525982486041286695660346918649040893890529952835320375384828169153724378204160041109679640628149360050340719362200395015558988046003444392907438562636648996672619995607099011884690679787327881837494215470994195935009191107945020127290308719121239731563844162352311262518412437733499009201665458264015815084041372907673911545500186625364412514055512709567948836632239882862499529369150873406945635957430892689287223897788917209404656390186123754643704792312526659721911710831620882926714044399797932937935874846204682834735444913029508832604600747171792330300686670068879045983191414914556440968290589354551936445290932282717284780345437528663826658911009721234328805723634742252808426175723315214034767241558579691071299808539939227912672632135448482769304015962884348742552654461754813556572068845625918388293019201590573776635466348340225490519233570427113140964091080026750991318428149521130592552801650429338683804247951667750614813969302526367422406457815563011843737461106370447413823835929427571149495806735636579636505246039196761251582998379113194960798374548881126167046083541577264690350164040695374390403760483232487426907969264701730604605917641115872186492751601401540768096893232247106816237370071431262516928009116525918031071732149607695717330287664400388449004944403498864333360834519927216481199359488483600349580811081108803258488028117205380233106944766633970369772033836667500635856303866070883281834303457907185374443436889871019188538271949884260374458219127304807439449908032641760467442676895825187712284759765538892708197843487425672698947785306797456136861074026466056025262726253521599259674374717153826626922252778432014097817849155420887280472049764295288679353452257281475683610989060632309587905680120375957627610190163630854609626389444794718618646337790455190841902049220437390756944540835564472841204458038075119485233019599800644385006444878260393031248453798817756948921281426853927876203467130843966604509890604936184239397768012564657747251009692110704436962950828733238200269704213001973708578284212609185512288364053406427420303718076236718966075921928082423103412412810073729438174264930535115279310370809436535349704372122092772808311205709694838483480566612422178866540874830727924909126015149114122361383532493824266615853045739591845281785115924981801565811135432910818553666710891431263810106402449405293846623437189678807007567580086177116082086508543729472080209244417461996105698618463632958636895512937468286886682404553092230351494222523983785368113123054100219201694508508160335783567635083767105664768942661296097468283896289743762752819459804356761526930363403745840765716926799790752853383204561001290717065254048726204539116643589665766760207503852419405772018558805297914315650481025104791231536384841908392109956913137298910477627531090150672724521128080344094934375618956437285199128164017185489864055505480273524163381538021863534274161007995170494627712376739573174171577949643459882973059466169081648635125606820015220192986268562363724238995378028616673102128718868859658319934729971451370770952241624919178579880792404688510246051074486244400907290665535504891210734791442862664527925011154938086489761748830213420041441410795441427287670967734944140175009830148176010626330199995334445025129924805020099189346881861627509479431811633412006466439570334316748863076684188151895455803823629487713358007691599760014770387051723147876917505701098914898156122133031445729257132348607973498863402998273351611396186096977683334633642642475919666944082526369731541662808000659382179410786966504805500337258129350693101053207255202279770041500327998007405564901936828562060547815868627270776451890278957005689876700179680660140928575716108494803686725737227355919718772745097589449324636885629611882714228876922922654727015549270728493342955748787958683652293011241684802436474270400250339991796631824618261137921681148269031570836386231758265876473874785409074213192879447679603339755275165096464233516262846292240987012113005142402910732427670326800972269997556931810321969623075167947349664420039190015168031606911955116810359733062178050525928264724932867089085518874155222323826592938411100883237239419184717929853250063224262081910303242946266965212686054995542914328193708056213167768755029525425228121730715134066039136166913974313475237170559641391942930559556154768506208515234225281915601010429907045194668938269933118586223266628686524560667715561982855423538455341489501453565071388554543413749648778431986954572055748058525780086179666897015651026699461670974852804355186180055286280122388273709964778105732046855525585709331418308186257861378324726572970321067236186259757164365173062037174367307490246762922896153572456886183623969935172618995367851903065774032456161997373528485650562680301728277393976085706730015645692751763089210426842212469752577387265542210891229336053451882108895436093074719896835353915251316716889023128918198142247183496249375669742767821529802640336650566896509306560107164502860459284808453346020497140593686897163253179398741826121969231913899808762316510754425254214527198383609803492073431918205384313892349547927187330484542497846422247526867514548760491877160241712023567624788494434928841060712611775246913294873725213093415321346717577035639780758614167683275903632702235317671179998350358779664152708154826805626435810369727777705898847828223156530818093922760967429057841723216560880367472838031056702612438620596147962493894376430630634116658168081135637041043896498551610069029594620049986471482218095442076018635583292167262827239525881900914642855602062909618153167647301300257865177260440887047235966117406219906959148898946796785265630682107773324332816340438606462744761386084650946327756033944718602019303703826129060200685372385470410133550988380528141702110978409620807711997699979439215477794486894243415014562775659596501840302648309615813601078200240905076464301671678264357564791487825545492125005154563158399916778472384307047774025570427119515500850043845083569416806784433720974794127733799440155379312546033451236785670015641768344045426759121074314580788072339328233175418935760151263459569043791957344628793101241465836126365790826768941084010864182013856048108214272807421492723962155717422052392349992253004762661603830133636670865974026200369994082612122983027641984627467154924303293174679552820647120298635038596422626633367131070921212257380172519157892095091006266106336238865213631462749009201939446412199279992873912379794575302535380996591374368875867370683269214009907039303435258154034127358427240703569235722463117102489618311505265338894364396016170821820757424555729645751950938013045267030484071132579919704000383695297637175849308803685050271199402133951319424587426894270817726814085078707537025481185285217124747104571388430808225434616852501972955318332785066003160125045393202099220242221786632325664086168705178937882742242277165746617028186480005318789740910675334686262814998827237874071631478811776664224908230911808824944065082991981015553822387296404044844386735156296816936867251534686678253214752937639262632738482524494801384379332337480470709169945386371509647614941509343253879599228405683359341651150369200331627869129155068673882533164331711203264432784443794776075453809372085505973211287995413910137967773765035075707572416004974965375019430059449672115197114300308341296634363994018174330297705356895856527977484502082739452667191333702984833554618443509315932958410103837594032571605948350008824847778370755659616793205222944442367310107768568426622743058753667993503486152316260847004083332330934165984957571364648033739868094656854766500386094226118684316127496335727719622159618075553247931102450101054149694376997536689230943684015239637005008436776961362604652305250764577945044856588556303130337937637584568226098090221625852840065007874359290321320280588570788290885914502093892780043884142856683543161582956314949949293426434596312557816405452813904309919340117762606091291396350276557361466960427486323083036243880609805853987508200972976388861815215602054945816834928203725847667673945028734389184344497300002237854372859747728736574566265858956786353570529323722805481645627762807379385975585544049928360987093531707819283823266536710961820867633924800590269133451145478524723280221339382378445922687713943891845750409806611868670907219748024381644678781086851605483002667174026633942147115787092007842782089215280932470301448694378940120771506628624553222556977274369136892021197129214123263594672095597217355486420574693213184565388870349400407812238002050221101397933292440154429190620445874493260329716007771129191303341536040030592428787830710953329225322053382433402794995593643743855620097211156641499198323985531338448063465927345270793522844317122045095552926565677044820428094261462968855508105089039793320121397450575464235778223558550701675483599212849144814888133652970620146615312291602056113346547334646776467996624798663764467372375580618750128640544861527721799710886350650036297025492806666030463115163910449108678407169818833956842794038931950535234731256377643639809891076870027413672509017278335449342724752031217068013036299854864486679298821254140700140508370654161486627989944339229164887984150478813186460524403077637832381364584373993133638828939106376978010829730086696447469524751600169514925248184909347552458371906402894112143342913042425119075991498804897744279855393295019487193322201900767227385856948221965134031470815752979578234072872870864061610195683636663998136823702282925492401514502031130436657684615954108211084629706091437805772721273839178639131717887443026589301934722580722282264602230721192844748786432122622694374886983998153642178727677253887329096529940391620545690681265076676045454676208253215929693285211021809327343955990867532051223585898112036475970871713426656434583507474132880978383694284993881783628246832043836734870487600118712075146229509088907333216562883425010474157959519802753737353207074615734359950917633034041867497697849394985536732586580997316744690441713867540958059446378852789930297620222604833786957027197184006698392559628539458758277975628750775171072662357262156099911422044199119776211668331641095917636420244676259499477748560348602202823573665983770426282922735568820780900244211134532936029986419370700261488011130066473681600843990864279445635536649030253558266681746134732163994916058042638442347875574571919294921314038478195707704847242887613666027599240203590166042241934340471174690849959178248913783842199708330094706059766141282204703771349261845465467303949686774733804213775764864721402325034567509568877330744461204344698138303194549623159225216894758100480008789347237834635276279450652193595454415121670770058993190908223195136491307771401008770891360107630083958316519855924342524280718239245765071497107790470268951510947850084898361951159837168287131598618856023948505123054067976955802164238423731900524591132981388533153613275526318590113074530233657968268278701964894939858312848555329420551346758763412603037648991945626571950767817366711356065267604903640125757089182806339341468885796378166403252061915963576346584214070960520321235843301919111542224330257078627857685831760336918405043623623218177322286607121028025353816376982875087437289188692242440448124529064238399893918617384521476474527290475856945769548940414733949928109239080949364363998094818608866216883201409871009567794548425101533234569090375516630089610312693060075013396845329775390573341511572845753442124574506855139857087672290632520712822836898675653699908618283594666925898009548939833508608607260599779909008815361203081003227157528415246740299200554995948799831259966967806525309956398417425352543861623538307011474134635803745731847267250875746770766982302626792659921211234941731833882053196324508227865888959093887982719859970809616249967455654558771431045850598961881187639794534438030685376039310828691341548451406951017195388733834499617507054365137344410662419697760348536748426469448604793483530932640750916469203634994632111695419146368359339833746929053805269210488100993581075171407008234382621736446155623650688385406664750263808383762293216297895345148809644306105202242490456731839143553416517872397784142627170207117616546800488510968748159534050146410010900225410460505272717611800300176174751886985947613572282512798560845822104300231710375396317277094328371470734178310033428183218610039541143092072548258959267043864464067019986182140080743256758222364998974188269708680978061703088007330850301817979954406980309944743153559891729237589541344018176990147496150015837818215855483607900022663732655686300110093239694453332639499744272024497667341832341518261996223270150217325539338388475444196708640955072180280866107249608125454281286619085805121430852989367325716034183142321846736567033177166764958622722078083381202042487964418622425320574164505509217667075489286611913040599708716195534534575866921679871342975350542397202975526974957753497844993170014618854346782804011500877397090911335389729777688425147425653707225659768549265335006445942228732041557055574363071671478315218985234976551488390132425423807503054634266265542137826213300655078857699962239752567691950051475299821394882915795308134086830649337794708684433794705369036429172880274031644626953416473124875929802116738429300846368258041108589443155064127547730578769498657997299214316929898935573100095777193327343666456136807739936208212526323179690927158138732929201188422171096903075703929226961371897912656149953213489477096201294742738385902136137967167055346799290500698397301715510874102818517964855215115172099528516768891486769291346230843087259403358807539071183504277202836323683179078265380290655140041083740719498772639494011706018523988193688596387804837137717786509367084073068391855320094340208363746054252695211873108044187555617609150757296353758504243240978194894253561488051648399185550325409817923941633018831897300169815827459443001516839520793289738300462307725198142286148951142478439440317937819911800743416221271375057013264558879247432237718340532156058990251445907985761617469374174049678441215679716738971752972094145855349507157006920996807623674653318376939138922242997007311089636286145640685321012699136080416760311519093495183273488320240136224855610240134003134626860317310814142381469445745744312988970092743783644851419704393831404193089809870336977181337096190347252542337246633577184269223080133659191757033533670445433368346875296299597712382816252387319226452809710623121348465020836521844818866184432708251643138892691346300397967516905108567723009576758783140251278160521197786504211118003803877658280629033901085979269565501357187891176745582524331542155000436234325332651773064604028627338774142790245242183923664463705762075155544467497176172763469820054986252146724511695147486423691645218403742894405229905590313564067061881281936147158516087644390217739145563590052556448005684212375509470449959832354588039994963950899048481525477275883542383419590884309029779786306296038796100137911094697557722558499278494833301800755207967534234274887248989499965603683949638931118762378569545423932834137939138021647616118285271041532031479967768967462808938358947703060275473914250749974237751018161294576026327190979017858527604259806672994861552349980466179473571652046506342195244663206688176556106240872502147025613296682721844457249268312486837310823230261360564387698331214742713878609427817727747014502988707165820279954505779956773797633115663620397397289508489929230073829872744566111631572338222471484278324491268058258977023497243998988844939067198209483010356271863466864726221166286092829190808860962867602907791265041424348316701049279913939388016706714493232090945822681407566101660625138000793051663759617024346749625055889316850459372609378181761805626424927044621708514952079284031715105093449061273621226386882727965380249642434080605888446776533493338058135061734807525410509222833360336289595102939226655200812022605140049324644218351814904241332076450281003498689306907751777566101994377544114969360082451954596671173255725992859952119981246044186943505451985484433714684204234607713930938280777325979074551646211563456576877418149487019493256147325630113073449915110046253186604961336164705987026471007687253247036526105011083795161210599213425560459092290947785338107951611009854710399684225861046708990969462210054298677268685138827493436368017381290491823802175884434858199763060018402455043639347525831184432193636078822342855272045714074737369255993115783930109736819090487924888661206532460152000335168141422972804477193676562839111651217927275006871239204489224560659499951882162445251561519251541248698539440557530254984069771032438283335078495458321119998635017531513927437392901084739392972242542692195276630589584769378343518462089531228431076626920567680291911716197358785828771504571705365988485439338455687452361582509297690532338080100239588158759601890869057946746760040728484613767290873389593701930186035809192800969562487800035954203504649282600218351160276500359007615300515757508898779709877246512623459434858447146969974708619341633908471726486305914339279858862338017846384694050699293616338270067608418255741154878091279432910863846947853495266842413245686736164003947230214150059728260677166998592152224446922722452662753747553137462434046326231320967634891045845244598715834085735563556630887023572750027903905856709684257476157704227887757124631483082575613673921608702672850353548863884440900066221903279112207312376948419523363518890952580963345764362987689019978287277952578086509868522185854654213618794096811802407819350928688707440238724062879588975043085326106396878515638060391081322698344181591025607591793497200486019243990420559792338398268709614517166098033509667819207870694670445052964510380048754656246144268720559930338804756155067939792354864468392917295248902411941414395004555151105274496092565798501994597445334832292324136115789201898749628600240683858562935279953952763525046396599512968205865885738109875833622381771863255911903200835095037665281452075692485455860174792407834667524564755230285139131803587488375127641654069323952591318391877310092234823466809945560512533544279271701158598689104477558802992722469475457343409971488630110503021626875573525751934778139174961643122972879514029762422373759765314287522934382892975362750581751132453671903657267884376036661342843964219541887566119884579693381298937901406563419516192474661306516511725267669323609419087733340690450558165213454487297074862553371635331581087738855095802330159523967268648400713750438601474834235330437085390227380449117576988953079133406811397562588492545284394178380123683157531767298914314054054266990963190681914906510208311130377896728687657942468534543011606591877413631321762198303416289445543557360297724554881458955418542210450999122832422240671256313535578227419398806196547685103176356379705213628453476087647191624882510939310918226676457010246503649076887174058871800489062109983884602249535444174934077227481562851572448302453765047321847532378940907877851143226417167207865271313548633238344810072504878677344464081608772771449481960020157980944682498260587592717763415996642278042914584234546121362414297976133124187195363825151679773423909103521409278990450682793503356406863155407032340671391506418478690860575345041992163225409754423164352434991500264140292956147699696135281539726892935453106876852742287916824480432608704463478624349069682252057662741054671106465204178936003473244014157701024500525111785668386033963806047470587868478677866005941018778147625395184562630317637358327298263546058429323574557986170934591291167804403130173996890297165284394825291332954976005579513856860519351140890707453397241952980145879886978105344437928598187338219021315887361960592742773315472002853239408397789239344686421601638980426095208234422381784439647101937884365289752765795163630751895935377213417194091471158931428412311647990508749331887496749119177625623516517274409813373547097884797343831223446489714488277146796704707528417151005177758584705360452208655868043224502154261560328310031904546602778549929217020935777114230574433742647869213136054226574013575310385064398286790589577389246677367491487536907339515858623562466719142440369524996637703770985252803613777816346232435468253332516733074960201249413720878443642861735790578481437239478915479884748129025766655262300741908124515803036992955037147164379926226167619218381593549727846720152665688420845010280046156910091842431075734179979783749230883487520580468055061820398994057860895824863813246156474145956952950257440684073664889904226040560602079193578678161126084813574082600007829756702414971176685873724094152073889241847585711465880388970146267953322313509070101452690127057210105779022277343195276782480856529188340361561348550929855796859839712262320837313667484421485838926042660191699304201533766491830909468499432157653212172381580140823486192736058717317466163847683264531184832681703369211623877310612543643962337345035839522545922383698407681015377194206583397155612108653083191645988670212720030129762880942895247190983775045851394570956574880254102538475085951906008554776417154677487089697871874700602935649391122591469261263511710087692787102960769193239654139233235563061366787913078401419567070881356320830880213526970725503189214741870398652371928414023072687812809490256436240867996383840921607586376700609603866327956945454200216914054497140193729992601076381319927344795034858657960779221356583223536408862834118876504409798505054654654340618816822304137332216455898377580961438429059850323819755090293443799336410337513679189169504960056663576720505647998532197059594358470817219206875917266453374606287085863099056469497814288864827362802618046077223206196839764684021703896226885242604920443377925672122905761457061866837202922236817090556108848373230317984179859950962146699137111763195890862038319018061032059854841643758537559118461458584528636882655994870662977243594811242593731963776359913818723798612690418725118495457562018917042825869646026822042170164938176626617811529465195189729743965577948535312848582920828318037995320941088406331146501838211945555989460999499266195976995452899102082423620367295339270261124959008335815158764211599728620891355269369880777066243495576565602414466461313951949093817390758101911627280585346834490256559339783660736784597741875456385440960717762071157152054663841375517012505847417609854817536768451158381471816080654008826680154523338651980071906453012628196539678057912794047592200584891296694888963217168962672527132555070744099176536736468323874720058609140609125633443807501075614691579295085050547070656868116338927157780046853815222838857263960105057058243307334956179789792708461912072633112251197557082335365279102007024268161463397894521512991183827518360244054304112902681963889699612182085241809012781165396831190827645273329640058674414682090257661164073139455063771453745016860874539922946234522818828837496340942470763000717491170722821267660042795470521180204638104755668948924724039745847695888633985075452182680439794593084627425060093791510138248701420978485908934470218315026316537964710422414848508953653174885833202738382864411676022315464960073515324718648310766369966940592029950073626018052003382192830878675968406343999421251846765507910757723562376860823556630936746998493392075127302143459749574953145597189522407961223123553409134909993234776071487196398726480243384457525538908352522657598897188751829310731782947814194860357498926797639375692780897942649640984709512814089650303781983675097553142351844585048052518999108785885084128715673248602784852202625103212672429865661527695246604319778947900124911930886867136656012397500815427149001629595311461521909491378190818735821252571605128316359578846573762774931071481719546509212499934584164870580273389017244188393954501649198066523773617773603148318070338133033338972591051988165809681695447229880713273435088736826826770722034381291341169095581164119393086610843233071610442261294455334123815147843960365561837877205018038913232670227465189079832876850186118464035832178304638050199921558206268148596626835738621220408323149112415323716735712682952546582245705117230412997688385500025680894367542856812391925356804836843226527830989696461401860946353979452432274274964920385141721059486526602561621700757001951723017250514112376787574823102663139662690924447844096274279748103136259643012732398383704025649960014459222375208937377135086960530601311256939481230368773686301164318462671604583327430309190082530180667483584749343753766607113653497482984301901089950970913459388149100613517153938432877737734771821280254447470438819087196192237223304078940382387097398511730500403660027910360212920875397242062759420082766066071073341577474795254519604098132952303380378722701930037663925484469314023785380625108348136087828800437117299693827825611561606438539305841566582411873588437947478804984065159864435345076088007997181939891110871504386314503554946209094365654392650941459734437752499801655609105275249481281179902173573014492328741267556064260298802557836413692016016617669748043542306072551697935735746825089695874826948731881544269818023315400606701953197215378857346583566060188867877883402696009264891214523761321850570390767193931751146569912952896078615794446670090410139420800171065178067033197994516163258550311481959276610659074044524985800229299228966543054067588746481449229311460408549457355981220577363061921476421011073334112714243475459628100874153150699878674569108206416345365903297922921012380381007569387269116011092957834426860655788441475726921085179645009860474953277920185440079838954484886707511916628030508605658217777697998220345113976466651924617025416334341044221145733295408504392807954396151307885264705378477983896727073836856837620235140207456693911087053479132411488788790158615971668352740445806936367038922357337268462210096916521348168176682743961853038638673061119918119187716359164169444571406379455424290874419543670817530677676541875022056511296774022477450002728679040664986471899711013362194181815184472591061447488424875027349454680510566851684048259975803596168445168373243003982331546478158041588277779460034850719864600409493977640398092361316514907508342421422902139051990165573319189692423186174767104600600148134265471179386165793927640354534589543137690424787165731974481919188300904505418400996882308154835099253666611841538312312998231819699109801429636853713921345260197299766841937950906406548032602340054884977654139891095815240233234467133442021495220744851782237688425688959031252711264762708767338357468592642121004081137201237521417098050822536684007206712882631152148490890523814401714196984944804679489675174776184049404631094279956737122753825775748085792754776105710867256129753274940581094794847870606374893196903901621417734653625666077403420493919792655024777067311768016577482896998471910716852097033010898010186445031926303162374116046753551168125391955617905343365937938089282722859914768508181201172867540470665654742948597222563280678451402182626324367627789943262937705557087265579856057809551086296577566990613910362180278129785662042808063521713920147250640452588776439271155252643537150490630447948841296952179190073624651786379689854808868529795126378890858504242865541942872273056884845871457476143153314718677063731935291546180195217512217731081929119956154340451468735032164383282109523299782542573539172290016513396984876017270183825894574556108791029901424155246809340828709852267349158535664375031049444588500491485483180968913365990395654771006567422899781917903880556974077808484614702490694200671838213724208851280759884631990288078363988372431080994688444143679764701359755518252438059867085825863935412502662727657199067541943193285433812175474512578521148274909532958863395251951656595291321511692041940837930800910247884453729889188341633145491480408091982281173152722432780262445509782321678235044878025855705718538907483505898554256099969620966130090965658274503055056304302205589701600825504127756601491826803917988196135982155843447379573702413895350487644347515252532802411844463140907913400762357692797913754689226884736149676856077439534956014628788995262183121832769384699326248204543358092547676462813616252866002903472891134064144250270608421664146813965398780967700813244277543465345874410359433720560138908410081960804386664051419536311000388461950017124667515147440366134559808879788950521931999172295176273037788753694443728709322519027105308073803344250662527867491541720713646960403245267328210151103865256574620291837156086589496185518608531139968035120710186676603591051690907519688103777386210264556171179825957862984636184672745364037121364433025001866944845893062929771460245708428537857217531391554082579635931071315989384210450732463188365244921677970430073450551852731279385366659239344190124417726744852219108768490083445392411318877611652510551507575859804011711680935050414745944483162589233546375855776767002031155304479918355861115050998041016086837193337357975553651024649345386759740045299465443507262891914362838579825472072300373383314140809137622653162428553463542462300076344744853432331717707644082936407500448460168077342282673654690211705120825871739934721949817495250924250726925642789857144682543911295027774569440308524614307137969039330836064040018859177956858262686679114699075516215713058458238926200549247748286076368766901533212848354177289041468683550109704090524777537298208489933703135462881564099431841848525123082824584262118062924394370484670057600731014483833794809349939449513215416659281982338744013219843698812101653169164961442714143245482547387629724500143589118257677641415351286224243126644694731445894464907012370826536309474640534463336976668148365069960714298144682556320014978368933051669087408158855984456703270505669128365644980537540195891176195932619380439852108327520574536278469874845019532470297825798400478093569804309947662567686031949573083415953921209066913357170933142936795525992559921024120101313417481679563312303503160869343508168983778370718810001468711081456752658660638884619648395491000804102621263814323434264516893555329375430827852957296723644138547682740396981624166189947325058111521969662924312118815724801397142272873868447289013964235982967010968586926180105408495917618647401412474267934889758834498858014189818668698566257552425115133889558784816299389496397417033311988726873131528027212434926334053497309720298910228004908373296479534316950778781520725900232954876062179302157414640607899306414205889014396961918180959152949138198462355194937194456512982188462378681558730644868873850415529812634340472775726538865787580204790312618484890551873888725947776814785942928251702376169625542673210477924328163129048539475711728834200324746845178811691006259463580546059295237249941449674655889780033821763324072532714591843213015032197235641764896047227129055747346130958417293148044805889632654064150538697516962493630444716415940433176064306038719972147798773892848955893028582296350937617680827682919135911466714042777926514452512292960800340786722340541320649179899342782139190630921424731548524409813721719049277450147536299714482855123942922188882872165823371928562075908049597357931836592697073626866846662967056473414696012289054649334216959657450094861720796723399048221426950965351576190183628497897472913885974861195482287233272330631073272906238657963912961558017968672419636993357507327926654753450832552123516981295456326013018790230598241273242036157017241368719980083222349838069075595238052192860532054572107246906693777913015221780039950986575108200809776528168571461898916911635158704269356305188550156111768320987228764381341870572861116475331926890642183771521971835146026562830353905646181730936806570256764236706591127446751335707108810195680022570551336875595585544273574341544072591447472845400028098970682853724683437493734410851193196097453241753890472845085958747424602856097878528545187775407997154621177303031339100172669288976201057951121885825950956918526102107090036450824200069159718001599236330078833562106398636742717199392085787672934536134885946613681541796565247637961760715070517432423497976271253568381906775894367733653120631963151801986593531388967149711435973775550871188943713859848091954630234668612328899619278198946718625627630057172226198717255668223923904890768146987080707751220177091609648770120434768279559338063610192024519833268119705454153308595651538813921780342498141963164905511260143454931265701556562158264090824648351579043435702893453635054819012476149728370681444278505199006903212896548769236882909068546671150995589760754891507625492685131792418299782542728547778448453461101792924207968158552174577602546294984095234678192840960476386210024350185606609410667690932843429705931268359659552164788030824711745176610929643714782697763464025941436376119883442043651405819785395750254618094489169401030013543819259121122854238722988776519602373221724050916405650079014770648187623734031750235491964410642041932852871687936595663020518293155034697291267571007407824355433018154958785858475434507850904892164905683726569122392614760515053956908698779269999187649883835020011034268265026969018909896424000140656288941654229991152436190033893023874485198177367035859326595056483973691102528528964240238162690169769797872053924417306882145869496570622068064152567048641672910089034466482148259576598883675676559305620962774588428084766784414116997805736320364832583212662721001886011390639353175491376666606897406774841966431435260003955902744717191497660803060479889578097868601071357264140408520715503208109783638446056461520984027952828516557607719738796731794525772221096980949945273561032910012006494033523485945355873048645021280439047580017537220142423121774893185173329466211269176408088586862489556539533649460684315877915679859150495016361992776208222457743409154600833608278358758581453060018874654806158469935209424129086588097007658952952942711111315126687583428566179129561920536410044079683799872613222554918639288601507650870472774003701806254718086876319171696486793614727732979757046379755146280328266354020758820986430077712971580486344586381703953969346321181169192104636494630154711153619666625612026906439506854218786812240993780516646058740408377608389717211889712944024277671668754396479044681943854146770948657994287785792979803623008497859770742430848349599307423855758769983547158184688235373094032850678988103388739359527893501071404914173640804862181613420873011412458842231120289553227515291208261892442680444656692441590713999797893022991343828360615540663044391445778085139945599094074239762612456772578548076328639557450793670916499825916076795474644981946658952214795605488453772955033488494865214498815920404443957690438775163101524744668822878389148182995253640866407630244850888822773889814481442580382544887918223306200047057093191744017116590681555324789182407775866665100435926469674592435181453789517497170913007733429647167891477189372321676652882834647772070310297542094397523932163345722780599675988114774549208494809224706159973495073321478676741593210626463245533420320135047805255300115734651077808653087217338440136071977085011680526600480673446362453506269853330351107802011024714941904163599640702033334178009708280027243676240239632839833190086800100058785505242035602151193311212381125806324264054598875454442839222700398014359114677186893678295446859099994129657734990682460457444371064184692311755752541422151199708105198384237430802858411911034947006709981625809080232934922144135663658449085571277501979917843893240809260006508919841301015540362593229032108072689825169873993483717822344427052288062898849905137744969579079629178617645467526962720055032628667023552336797726063643852366606175531613341317196197864392121268769055177347789594578286793751698667802479410433905992805940732000255661814631962700778143239536096104701729340494466620042894434699772502523362436113819044501776630394960920395546918993072887803159200038513497548607143872818383086380817680722559842374631006953530567999908324197175226060014824313203037348268169926095288097144322551789684890648663457922550958843785072651487101659277551662918941361681291844882428584914633290399404985318303936955530378939063462556418941415029264319234049598323408367493224900433835477731924409751183050397065819857193854143426088211957823771085106209820471610682278689620969757921676775517314616530623257688107672947682658597173652390580624930436511108825021373017722979145548745526360319873068471900353622658246145403431408136194441206504994577360905054778745696917584830341379595574153259059234508991895104113725321454131921375733178112506607565288638393093800774772362121100123864093486021508415014831723894064495994297265569568730807876269888569731031755846775128444574553397997813792654431921834421363070757915775647019542518885598183471508749639882165975381022375915486437492344074425523139962629180384112629956456129401567847766137658011123670830980985007918997025977030110831796067951569965572007575902702144061044911452833206811316731088885223390097768175624261207932093558751202518412009102502007023386813814634972054308310984171324107369665562496654937381813957760624019775704510736176400350162938954403024939727373854471651438233295189222680764895418150428010246315726137001519913632525676047478506575714031274113457537113188910649703107854178914089554130455302878654582163342569616634049525997099279447905529226719538257258587393274130154916630672048328356066972804687652587441088521105876230763044801393780365032533142790361470708396485178111545244300098858104533794718403395346580859879503012075351566479135465214976248731740221718399842254842989306171139607700220638169440749741888701799889068347341403175965274567786320642727227656038739437174585149316301185870988806202046350716742616122073255219743263265181032576138673817502982223737574646083182965575011782438275471222775799172556149461261270904660505267167223932500389201907340426107384301197825454396941178367831034191888309584133979272805382546626473199829417047335138373106220916975733273156589158399416510189572510284174693874373753133185652978668579739303451944894907199782629217544087253869509690256364913361662649103302968370399404779514747755870330411967687050772107617321483418530312001893714042946479603145311350066416700023524669310259433718669444400963997152321649187814086836681368125870117467589428150519860600640710086475174958709157959905729767405260915067140443398013208738176994367507976640722447299842158803184305897947861652814216645807199421852517436374675233515223073367877374551529844461509573192306345037036313453322168768871805379018319904446550904855025013177324986195190433459157524173696890570121205948432263283565890164054944492494351263003114712693604264490550542501889653141667181313000917724453608551190885106698104041467588804923153077182674791076853804068398921227580309702149594473809868273473312340587938036654043442190717164560665129378355602095649072482648351965488556846296156897637715040962462010579776075850857781777376501426558909658580563413806753500690392254667257452261154877591099601883907846796078591115005269420617357121701976371785105596442959618559023720438391967628002735526981355323275637931672939282477623932022778544033100210379546063147023481872886415248211452729969152894850131780271188121472084090813830635493161325791646756216819484619434213399002311094007368175499040105370285459703462333608878126345166364275991309512708416171091252888271665752450769886751300197665033144009722236940513663503005517281624212062955587593905225204836125872420287156842497966510035381857017390496082026717117234446921374861682933593570817241106919584808267765255054877674327988929228526399335672320294573301001520843029197879539804218174400897658113932684317529388849754954547596665544635912594206180442533467344212032289410055743489598571841851117728886296883795457231078767117936640524239691929950908446099602437176001623544091050434889834488714558740591334803757508108213516471546244015687292725425961643005362084352528358998024484653362422817109599601827699239352698885776941029330533541192182033534815267864184300550859195484210442525809817478579086995239359572577878359857446016518293777772864837474595440203648840299944295003769029699812826670409448793305461680584150168511183561532408798094923463652836206847759544700761192784929675948448992774264756317901512710819515240377741714381578912318556683115599448809641013883431262041387895097129237574051734778907972947159713776030845364618737701437543788226417693517009464573693269163629836955181552453496432755298484707463786288236903178335220459845956025360838502442970340189970392285865395671330968107511680246013657146012292592726485990026067413336342912103988713654170966139605163811546859346092725013904046570958813090147586439690356080526002237067236208245581181104709820327435557479421048052102582945221727461079444883918690338568109856888473513216220902224916728774326675355246632875935193968645350659198408253015704540743454421175757722114992310792258682019154490386219338234855437019047513801817401966723441526965608853765796515819930902713986177822928103138866085869256177002823453937381750059810088988044992163878606494194942003728500483586733358419306065079413977546321632519557047405447758733069812177634710857655153708861398629124189882384961710471521696214316529809386737702792483019120104057983961636647935371498532955879072997143024922657859098831534282291039354692521854358932834033079077749660374347639359192129174608455854501478303286948350836377823786093757486840385379733704303180151630575572859840539517606670680890940314761502410867637720572494875842467283500906724147538683524285131521824679772373745705655291821841553636624574535994728495285140266712799463114681763773933801244847002709448323561838029381738291966632458552074655518389534127169628384377734519284699241471083404269760700018182204794404287701819691216381554007876115119366692872982493573130991180381561849948696022256167794093781010683628532555609969925503390052027633657135364055586665400097666209196786378997827923885723733291301616727422693871941122400000852137552752735919034668718884001271277947100817035228006279688274415192053253373855168093694549786789710733924396709597311514345638326570413189498231548126537259395975675283269228288437973242922424415919423396209042686615963781323856273642608141820472118230036648391889539721693265027529331515394513993428691615334165115485101112923744798941721691321577793251660840054500252718711487093865529781654778907992517365552078125868472676816797487586252427646134096661776029377149391080559672415449995426515067850638413525415089100674005993952074787337038441672320733134525556389880446580080915750147942037139997249753619127876102451083024162313175339423890521136479018002018284869981683123004832474627600914139214330016395652367362789835704364262039618514932181766121720953319121045210670266874090641919066784531915512931161152675968995662200513952927276870774262354013616729425606192170846845084136763603683726050134796690309333172432767501077016178941879137036576410003615620374169634228827967205498547282836561829082987166479810334518370009378884652334426945447921995955901150236225598284371072480043530582240830473314363170265028896465972017758373959256362854059666662550126674583687965776797215056816760067845756991797032721491730412298066456848713671526919843460994186809763222427245889347264252765604238690439311764137594322453250858384001622021750225328190551116273623414797841749098958001', -); diff --git a/test/src/integer/arithmetic/isub.js b/test/src/integer/arithmetic/isub.js deleted file mode 100644 index 7531aa6..0000000 --- a/test/src/integer/arithmetic/isub.js +++ /dev/null @@ -1,1401 +0,0 @@ -import test from 'ava'; -import {parse, stringify, isub} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const b = parse(B); - const c = isub(a, b); - t.is(stringify(a), C); - t.is(stringify(b), B); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `isub(${fmt(A)},${fmt(B)}) = ${fmt(C)}`; - -test(macro, '0', '0', '0'); -test(macro, '0', '1', '-1'); -test(macro, '0', '-1', '1'); -test(macro, '0', '3', '-3'); -test(macro, '0', '-3', '3'); -test(macro, '0', '7', '-7'); -test(macro, '0', '-7', '7'); -test(macro, '0', '9', '-9'); -test(macro, '0', '-9', '9'); -test(macro, '0', '11', '-11'); -test(macro, '0', '-11', '11'); -test(macro, '0', '17', '-17'); -test(macro, '0', '-17', '17'); -test(macro, '0', '22', '-22'); -test(macro, '0', '-22', '22'); -test(macro, '0', '24', '-24'); -test(macro, '0', '-24', '24'); -test(macro, '0', '27', '-27'); -test(macro, '0', '-27', '27'); -test(macro, '0', '29', '-29'); -test(macro, '0', '-29', '29'); -test(macro, '0', '1234', '-1234'); -test(macro, '0', '-1234', '1234'); -test(macro, '0', '5678', '-5678'); -test(macro, '0', '-5678', '5678'); -test(macro, '0', '94906265', '-94906265'); -test(macro, '0', '-94906265', '94906265'); -test(macro, '0', '94906266', '-94906266'); -test(macro, '0', '-94906266', '94906266'); -test(macro, '0', '1073741824', '-1073741824'); -test(macro, '0', '-1073741824', '1073741824'); -test(macro, '0', '51676101935731', '-51676101935731'); -test(macro, '0', '-51676101935731', '51676101935731'); -test(macro, '0', '717897987691852588770249', '-717897987691852588770249'); -test(macro, '0', '-717897987691852588770249', '717897987691852588770249'); -test(macro, '1', '0', '1'); -test(macro, '-1', '0', '-1'); -test(macro, '1', '1', '0'); -test(macro, '-1', '1', '-2'); -test(macro, '1', '-1', '2'); -test(macro, '-1', '-1', '0'); -test(macro, '1', '3', '-2'); -test(macro, '-1', '3', '-4'); -test(macro, '1', '-3', '4'); -test(macro, '-1', '-3', '2'); -test(macro, '1', '7', '-6'); -test(macro, '-1', '7', '-8'); -test(macro, '1', '-7', '8'); -test(macro, '-1', '-7', '6'); -test(macro, '1', '9', '-8'); -test(macro, '-1', '9', '-10'); -test(macro, '1', '-9', '10'); -test(macro, '-1', '-9', '8'); -test(macro, '1', '11', '-10'); -test(macro, '-1', '11', '-12'); -test(macro, '1', '-11', '12'); -test(macro, '-1', '-11', '10'); -test(macro, '1', '17', '-16'); -test(macro, '-1', '17', '-18'); -test(macro, '1', '-17', '18'); -test(macro, '-1', '-17', '16'); -test(macro, '1', '22', '-21'); -test(macro, '-1', '22', '-23'); -test(macro, '1', '-22', '23'); -test(macro, '-1', '-22', '21'); -test(macro, '1', '24', '-23'); -test(macro, '-1', '24', '-25'); -test(macro, '1', '-24', '25'); -test(macro, '-1', '-24', '23'); -test(macro, '1', '27', '-26'); -test(macro, '-1', '27', '-28'); -test(macro, '1', '-27', '28'); -test(macro, '-1', '-27', '26'); -test(macro, '1', '29', '-28'); -test(macro, '-1', '29', '-30'); -test(macro, '1', '-29', '30'); -test(macro, '-1', '-29', '28'); -test(macro, '1', '1234', '-1233'); -test(macro, '-1', '1234', '-1235'); -test(macro, '1', '-1234', '1235'); -test(macro, '-1', '-1234', '1233'); -test(macro, '1', '5678', '-5677'); -test(macro, '-1', '5678', '-5679'); -test(macro, '1', '-5678', '5679'); -test(macro, '-1', '-5678', '5677'); -test(macro, '1', '94906265', '-94906264'); -test(macro, '-1', '94906265', '-94906266'); -test(macro, '1', '-94906265', '94906266'); -test(macro, '-1', '-94906265', '94906264'); -test(macro, '1', '94906266', '-94906265'); -test(macro, '-1', '94906266', '-94906267'); -test(macro, '1', '-94906266', '94906267'); -test(macro, '-1', '-94906266', '94906265'); -test(macro, '1', '1073741824', '-1073741823'); -test(macro, '-1', '1073741824', '-1073741825'); -test(macro, '1', '-1073741824', '1073741825'); -test(macro, '-1', '-1073741824', '1073741823'); -test(macro, '1', '51676101935731', '-51676101935730'); -test(macro, '-1', '51676101935731', '-51676101935732'); -test(macro, '1', '-51676101935731', '51676101935732'); -test(macro, '-1', '-51676101935731', '51676101935730'); -test(macro, '1', '717897987691852588770249', '-717897987691852588770248'); -test(macro, '-1', '717897987691852588770249', '-717897987691852588770250'); -test(macro, '1', '-717897987691852588770249', '717897987691852588770250'); -test(macro, '-1', '-717897987691852588770249', '717897987691852588770248'); -test(macro, '3', '0', '3'); -test(macro, '-3', '0', '-3'); -test(macro, '3', '1', '2'); -test(macro, '-3', '1', '-4'); -test(macro, '3', '-1', '4'); -test(macro, '-3', '-1', '-2'); -test(macro, '3', '3', '0'); -test(macro, '-3', '3', '-6'); -test(macro, '3', '-3', '6'); -test(macro, '-3', '-3', '0'); -test(macro, '3', '7', '-4'); -test(macro, '-3', '7', '-10'); -test(macro, '3', '-7', '10'); -test(macro, '-3', '-7', '4'); -test(macro, '3', '9', '-6'); -test(macro, '-3', '9', '-12'); -test(macro, '3', '-9', '12'); -test(macro, '-3', '-9', '6'); -test(macro, '3', '11', '-8'); -test(macro, '-3', '11', '-14'); -test(macro, '3', '-11', '14'); -test(macro, '-3', '-11', '8'); -test(macro, '3', '17', '-14'); -test(macro, '-3', '17', '-20'); -test(macro, '3', '-17', '20'); -test(macro, '-3', '-17', '14'); -test(macro, '3', '22', '-19'); -test(macro, '-3', '22', '-25'); -test(macro, '3', '-22', '25'); -test(macro, '-3', '-22', '19'); -test(macro, '3', '24', '-21'); -test(macro, '-3', '24', '-27'); -test(macro, '3', '-24', '27'); -test(macro, '-3', '-24', '21'); -test(macro, '3', '27', '-24'); -test(macro, '-3', '27', '-30'); -test(macro, '3', '-27', '30'); -test(macro, '-3', '-27', '24'); -test(macro, '3', '29', '-26'); -test(macro, '-3', '29', '-32'); -test(macro, '3', '-29', '32'); -test(macro, '-3', '-29', '26'); -test(macro, '3', '1234', '-1231'); -test(macro, '-3', '1234', '-1237'); -test(macro, '3', '-1234', '1237'); -test(macro, '-3', '-1234', '1231'); -test(macro, '3', '5678', '-5675'); -test(macro, '-3', '5678', '-5681'); -test(macro, '3', '-5678', '5681'); -test(macro, '-3', '-5678', '5675'); -test(macro, '3', '94906265', '-94906262'); -test(macro, '-3', '94906265', '-94906268'); -test(macro, '3', '-94906265', '94906268'); -test(macro, '-3', '-94906265', '94906262'); -test(macro, '3', '94906266', '-94906263'); -test(macro, '-3', '94906266', '-94906269'); -test(macro, '3', '-94906266', '94906269'); -test(macro, '-3', '-94906266', '94906263'); -test(macro, '3', '1073741824', '-1073741821'); -test(macro, '-3', '1073741824', '-1073741827'); -test(macro, '3', '-1073741824', '1073741827'); -test(macro, '-3', '-1073741824', '1073741821'); -test(macro, '3', '51676101935731', '-51676101935728'); -test(macro, '-3', '51676101935731', '-51676101935734'); -test(macro, '3', '-51676101935731', '51676101935734'); -test(macro, '-3', '-51676101935731', '51676101935728'); -test(macro, '3', '717897987691852588770249', '-717897987691852588770246'); -test(macro, '-3', '717897987691852588770249', '-717897987691852588770252'); -test(macro, '3', '-717897987691852588770249', '717897987691852588770252'); -test(macro, '-3', '-717897987691852588770249', '717897987691852588770246'); -test(macro, '7', '0', '7'); -test(macro, '-7', '0', '-7'); -test(macro, '7', '1', '6'); -test(macro, '-7', '1', '-8'); -test(macro, '7', '-1', '8'); -test(macro, '-7', '-1', '-6'); -test(macro, '7', '3', '4'); -test(macro, '-7', '3', '-10'); -test(macro, '7', '-3', '10'); -test(macro, '-7', '-3', '-4'); -test(macro, '7', '7', '0'); -test(macro, '-7', '7', '-14'); -test(macro, '7', '-7', '14'); -test(macro, '-7', '-7', '0'); -test(macro, '7', '9', '-2'); -test(macro, '-7', '9', '-16'); -test(macro, '7', '-9', '16'); -test(macro, '-7', '-9', '2'); -test(macro, '7', '11', '-4'); -test(macro, '-7', '11', '-18'); -test(macro, '7', '-11', '18'); -test(macro, '-7', '-11', '4'); -test(macro, '7', '17', '-10'); -test(macro, '-7', '17', '-24'); -test(macro, '7', '-17', '24'); -test(macro, '-7', '-17', '10'); -test(macro, '7', '22', '-15'); -test(macro, '-7', '22', '-29'); -test(macro, '7', '-22', '29'); -test(macro, '-7', '-22', '15'); -test(macro, '7', '24', '-17'); -test(macro, '-7', '24', '-31'); -test(macro, '7', '-24', '31'); -test(macro, '-7', '-24', '17'); -test(macro, '7', '27', '-20'); -test(macro, '-7', '27', '-34'); -test(macro, '7', '-27', '34'); -test(macro, '-7', '-27', '20'); -test(macro, '7', '29', '-22'); -test(macro, '-7', '29', '-36'); -test(macro, '7', '-29', '36'); -test(macro, '-7', '-29', '22'); -test(macro, '7', '1234', '-1227'); -test(macro, '-7', '1234', '-1241'); -test(macro, '7', '-1234', '1241'); -test(macro, '-7', '-1234', '1227'); -test(macro, '7', '5678', '-5671'); -test(macro, '-7', '5678', '-5685'); -test(macro, '7', '-5678', '5685'); -test(macro, '-7', '-5678', '5671'); -test(macro, '7', '94906265', '-94906258'); -test(macro, '-7', '94906265', '-94906272'); -test(macro, '7', '-94906265', '94906272'); -test(macro, '-7', '-94906265', '94906258'); -test(macro, '7', '94906266', '-94906259'); -test(macro, '-7', '94906266', '-94906273'); -test(macro, '7', '-94906266', '94906273'); -test(macro, '-7', '-94906266', '94906259'); -test(macro, '7', '1073741824', '-1073741817'); -test(macro, '-7', '1073741824', '-1073741831'); -test(macro, '7', '-1073741824', '1073741831'); -test(macro, '-7', '-1073741824', '1073741817'); -test(macro, '7', '51676101935731', '-51676101935724'); -test(macro, '-7', '51676101935731', '-51676101935738'); -test(macro, '7', '-51676101935731', '51676101935738'); -test(macro, '-7', '-51676101935731', '51676101935724'); -test(macro, '7', '717897987691852588770249', '-717897987691852588770242'); -test(macro, '-7', '717897987691852588770249', '-717897987691852588770256'); -test(macro, '7', '-717897987691852588770249', '717897987691852588770256'); -test(macro, '-7', '-717897987691852588770249', '717897987691852588770242'); -test(macro, '9', '0', '9'); -test(macro, '-9', '0', '-9'); -test(macro, '9', '1', '8'); -test(macro, '-9', '1', '-10'); -test(macro, '9', '-1', '10'); -test(macro, '-9', '-1', '-8'); -test(macro, '9', '3', '6'); -test(macro, '-9', '3', '-12'); -test(macro, '9', '-3', '12'); -test(macro, '-9', '-3', '-6'); -test(macro, '9', '7', '2'); -test(macro, '-9', '7', '-16'); -test(macro, '9', '-7', '16'); -test(macro, '-9', '-7', '-2'); -test(macro, '9', '9', '0'); -test(macro, '-9', '9', '-18'); -test(macro, '9', '-9', '18'); -test(macro, '-9', '-9', '0'); -test(macro, '9', '11', '-2'); -test(macro, '-9', '11', '-20'); -test(macro, '9', '-11', '20'); -test(macro, '-9', '-11', '2'); -test(macro, '9', '17', '-8'); -test(macro, '-9', '17', '-26'); -test(macro, '9', '-17', '26'); -test(macro, '-9', '-17', '8'); -test(macro, '9', '22', '-13'); -test(macro, '-9', '22', '-31'); -test(macro, '9', '-22', '31'); -test(macro, '-9', '-22', '13'); -test(macro, '9', '24', '-15'); -test(macro, '-9', '24', '-33'); -test(macro, '9', '-24', '33'); -test(macro, '-9', '-24', '15'); -test(macro, '9', '27', '-18'); -test(macro, '-9', '27', '-36'); -test(macro, '9', '-27', '36'); -test(macro, '-9', '-27', '18'); -test(macro, '9', '29', '-20'); -test(macro, '-9', '29', '-38'); -test(macro, '9', '-29', '38'); -test(macro, '-9', '-29', '20'); -test(macro, '9', '1234', '-1225'); -test(macro, '-9', '1234', '-1243'); -test(macro, '9', '-1234', '1243'); -test(macro, '-9', '-1234', '1225'); -test(macro, '9', '5678', '-5669'); -test(macro, '-9', '5678', '-5687'); -test(macro, '9', '-5678', '5687'); -test(macro, '-9', '-5678', '5669'); -test(macro, '9', '94906265', '-94906256'); -test(macro, '-9', '94906265', '-94906274'); -test(macro, '9', '-94906265', '94906274'); -test(macro, '-9', '-94906265', '94906256'); -test(macro, '9', '94906266', '-94906257'); -test(macro, '-9', '94906266', '-94906275'); -test(macro, '9', '-94906266', '94906275'); -test(macro, '-9', '-94906266', '94906257'); -test(macro, '9', '1073741824', '-1073741815'); -test(macro, '-9', '1073741824', '-1073741833'); -test(macro, '9', '-1073741824', '1073741833'); -test(macro, '-9', '-1073741824', '1073741815'); -test(macro, '9', '51676101935731', '-51676101935722'); -test(macro, '-9', '51676101935731', '-51676101935740'); -test(macro, '9', '-51676101935731', '51676101935740'); -test(macro, '-9', '-51676101935731', '51676101935722'); -test(macro, '9', '717897987691852588770249', '-717897987691852588770240'); -test(macro, '-9', '717897987691852588770249', '-717897987691852588770258'); -test(macro, '9', '-717897987691852588770249', '717897987691852588770258'); -test(macro, '-9', '-717897987691852588770249', '717897987691852588770240'); -test(macro, '11', '0', '11'); -test(macro, '-11', '0', '-11'); -test(macro, '11', '1', '10'); -test(macro, '-11', '1', '-12'); -test(macro, '11', '-1', '12'); -test(macro, '-11', '-1', '-10'); -test(macro, '11', '3', '8'); -test(macro, '-11', '3', '-14'); -test(macro, '11', '-3', '14'); -test(macro, '-11', '-3', '-8'); -test(macro, '11', '7', '4'); -test(macro, '-11', '7', '-18'); -test(macro, '11', '-7', '18'); -test(macro, '-11', '-7', '-4'); -test(macro, '11', '9', '2'); -test(macro, '-11', '9', '-20'); -test(macro, '11', '-9', '20'); -test(macro, '-11', '-9', '-2'); -test(macro, '11', '11', '0'); -test(macro, '-11', '11', '-22'); -test(macro, '11', '-11', '22'); -test(macro, '-11', '-11', '0'); -test(macro, '11', '17', '-6'); -test(macro, '-11', '17', '-28'); -test(macro, '11', '-17', '28'); -test(macro, '-11', '-17', '6'); -test(macro, '11', '22', '-11'); -test(macro, '-11', '22', '-33'); -test(macro, '11', '-22', '33'); -test(macro, '-11', '-22', '11'); -test(macro, '11', '24', '-13'); -test(macro, '-11', '24', '-35'); -test(macro, '11', '-24', '35'); -test(macro, '-11', '-24', '13'); -test(macro, '11', '27', '-16'); -test(macro, '-11', '27', '-38'); -test(macro, '11', '-27', '38'); -test(macro, '-11', '-27', '16'); -test(macro, '11', '29', '-18'); -test(macro, '-11', '29', '-40'); -test(macro, '11', '-29', '40'); -test(macro, '-11', '-29', '18'); -test(macro, '11', '1234', '-1223'); -test(macro, '-11', '1234', '-1245'); -test(macro, '11', '-1234', '1245'); -test(macro, '-11', '-1234', '1223'); -test(macro, '11', '5678', '-5667'); -test(macro, '-11', '5678', '-5689'); -test(macro, '11', '-5678', '5689'); -test(macro, '-11', '-5678', '5667'); -test(macro, '11', '94906265', '-94906254'); -test(macro, '-11', '94906265', '-94906276'); -test(macro, '11', '-94906265', '94906276'); -test(macro, '-11', '-94906265', '94906254'); -test(macro, '11', '94906266', '-94906255'); -test(macro, '-11', '94906266', '-94906277'); -test(macro, '11', '-94906266', '94906277'); -test(macro, '-11', '-94906266', '94906255'); -test(macro, '11', '1073741824', '-1073741813'); -test(macro, '-11', '1073741824', '-1073741835'); -test(macro, '11', '-1073741824', '1073741835'); -test(macro, '-11', '-1073741824', '1073741813'); -test(macro, '11', '51676101935731', '-51676101935720'); -test(macro, '-11', '51676101935731', '-51676101935742'); -test(macro, '11', '-51676101935731', '51676101935742'); -test(macro, '-11', '-51676101935731', '51676101935720'); -test(macro, '11', '717897987691852588770249', '-717897987691852588770238'); -test(macro, '-11', '717897987691852588770249', '-717897987691852588770260'); -test(macro, '11', '-717897987691852588770249', '717897987691852588770260'); -test(macro, '-11', '-717897987691852588770249', '717897987691852588770238'); -test(macro, '17', '0', '17'); -test(macro, '-17', '0', '-17'); -test(macro, '17', '1', '16'); -test(macro, '-17', '1', '-18'); -test(macro, '17', '-1', '18'); -test(macro, '-17', '-1', '-16'); -test(macro, '17', '3', '14'); -test(macro, '-17', '3', '-20'); -test(macro, '17', '-3', '20'); -test(macro, '-17', '-3', '-14'); -test(macro, '17', '7', '10'); -test(macro, '-17', '7', '-24'); -test(macro, '17', '-7', '24'); -test(macro, '-17', '-7', '-10'); -test(macro, '17', '9', '8'); -test(macro, '-17', '9', '-26'); -test(macro, '17', '-9', '26'); -test(macro, '-17', '-9', '-8'); -test(macro, '17', '11', '6'); -test(macro, '-17', '11', '-28'); -test(macro, '17', '-11', '28'); -test(macro, '-17', '-11', '-6'); -test(macro, '17', '17', '0'); -test(macro, '-17', '17', '-34'); -test(macro, '17', '-17', '34'); -test(macro, '-17', '-17', '0'); -test(macro, '17', '22', '-5'); -test(macro, '-17', '22', '-39'); -test(macro, '17', '-22', '39'); -test(macro, '-17', '-22', '5'); -test(macro, '17', '24', '-7'); -test(macro, '-17', '24', '-41'); -test(macro, '17', '-24', '41'); -test(macro, '-17', '-24', '7'); -test(macro, '17', '27', '-10'); -test(macro, '-17', '27', '-44'); -test(macro, '17', '-27', '44'); -test(macro, '-17', '-27', '10'); -test(macro, '17', '29', '-12'); -test(macro, '-17', '29', '-46'); -test(macro, '17', '-29', '46'); -test(macro, '-17', '-29', '12'); -test(macro, '17', '1234', '-1217'); -test(macro, '-17', '1234', '-1251'); -test(macro, '17', '-1234', '1251'); -test(macro, '-17', '-1234', '1217'); -test(macro, '17', '5678', '-5661'); -test(macro, '-17', '5678', '-5695'); -test(macro, '17', '-5678', '5695'); -test(macro, '-17', '-5678', '5661'); -test(macro, '17', '94906265', '-94906248'); -test(macro, '-17', '94906265', '-94906282'); -test(macro, '17', '-94906265', '94906282'); -test(macro, '-17', '-94906265', '94906248'); -test(macro, '17', '94906266', '-94906249'); -test(macro, '-17', '94906266', '-94906283'); -test(macro, '17', '-94906266', '94906283'); -test(macro, '-17', '-94906266', '94906249'); -test(macro, '17', '1073741824', '-1073741807'); -test(macro, '-17', '1073741824', '-1073741841'); -test(macro, '17', '-1073741824', '1073741841'); -test(macro, '-17', '-1073741824', '1073741807'); -test(macro, '17', '51676101935731', '-51676101935714'); -test(macro, '-17', '51676101935731', '-51676101935748'); -test(macro, '17', '-51676101935731', '51676101935748'); -test(macro, '-17', '-51676101935731', '51676101935714'); -test(macro, '17', '717897987691852588770249', '-717897987691852588770232'); -test(macro, '-17', '717897987691852588770249', '-717897987691852588770266'); -test(macro, '17', '-717897987691852588770249', '717897987691852588770266'); -test(macro, '-17', '-717897987691852588770249', '717897987691852588770232'); -test(macro, '22', '0', '22'); -test(macro, '-22', '0', '-22'); -test(macro, '22', '1', '21'); -test(macro, '-22', '1', '-23'); -test(macro, '22', '-1', '23'); -test(macro, '-22', '-1', '-21'); -test(macro, '22', '3', '19'); -test(macro, '-22', '3', '-25'); -test(macro, '22', '-3', '25'); -test(macro, '-22', '-3', '-19'); -test(macro, '22', '7', '15'); -test(macro, '-22', '7', '-29'); -test(macro, '22', '-7', '29'); -test(macro, '-22', '-7', '-15'); -test(macro, '22', '9', '13'); -test(macro, '-22', '9', '-31'); -test(macro, '22', '-9', '31'); -test(macro, '-22', '-9', '-13'); -test(macro, '22', '11', '11'); -test(macro, '-22', '11', '-33'); -test(macro, '22', '-11', '33'); -test(macro, '-22', '-11', '-11'); -test(macro, '22', '17', '5'); -test(macro, '-22', '17', '-39'); -test(macro, '22', '-17', '39'); -test(macro, '-22', '-17', '-5'); -test(macro, '22', '22', '0'); -test(macro, '-22', '22', '-44'); -test(macro, '22', '-22', '44'); -test(macro, '-22', '-22', '0'); -test(macro, '22', '24', '-2'); -test(macro, '-22', '24', '-46'); -test(macro, '22', '-24', '46'); -test(macro, '-22', '-24', '2'); -test(macro, '22', '27', '-5'); -test(macro, '-22', '27', '-49'); -test(macro, '22', '-27', '49'); -test(macro, '-22', '-27', '5'); -test(macro, '22', '29', '-7'); -test(macro, '-22', '29', '-51'); -test(macro, '22', '-29', '51'); -test(macro, '-22', '-29', '7'); -test(macro, '22', '1234', '-1212'); -test(macro, '-22', '1234', '-1256'); -test(macro, '22', '-1234', '1256'); -test(macro, '-22', '-1234', '1212'); -test(macro, '22', '5678', '-5656'); -test(macro, '-22', '5678', '-5700'); -test(macro, '22', '-5678', '5700'); -test(macro, '-22', '-5678', '5656'); -test(macro, '22', '94906265', '-94906243'); -test(macro, '-22', '94906265', '-94906287'); -test(macro, '22', '-94906265', '94906287'); -test(macro, '-22', '-94906265', '94906243'); -test(macro, '22', '94906266', '-94906244'); -test(macro, '-22', '94906266', '-94906288'); -test(macro, '22', '-94906266', '94906288'); -test(macro, '-22', '-94906266', '94906244'); -test(macro, '22', '1073741824', '-1073741802'); -test(macro, '-22', '1073741824', '-1073741846'); -test(macro, '22', '-1073741824', '1073741846'); -test(macro, '-22', '-1073741824', '1073741802'); -test(macro, '22', '51676101935731', '-51676101935709'); -test(macro, '-22', '51676101935731', '-51676101935753'); -test(macro, '22', '-51676101935731', '51676101935753'); -test(macro, '-22', '-51676101935731', '51676101935709'); -test(macro, '22', '717897987691852588770249', '-717897987691852588770227'); -test(macro, '-22', '717897987691852588770249', '-717897987691852588770271'); -test(macro, '22', '-717897987691852588770249', '717897987691852588770271'); -test(macro, '-22', '-717897987691852588770249', '717897987691852588770227'); -test(macro, '24', '0', '24'); -test(macro, '-24', '0', '-24'); -test(macro, '24', '1', '23'); -test(macro, '-24', '1', '-25'); -test(macro, '24', '-1', '25'); -test(macro, '-24', '-1', '-23'); -test(macro, '24', '3', '21'); -test(macro, '-24', '3', '-27'); -test(macro, '24', '-3', '27'); -test(macro, '-24', '-3', '-21'); -test(macro, '24', '7', '17'); -test(macro, '-24', '7', '-31'); -test(macro, '24', '-7', '31'); -test(macro, '-24', '-7', '-17'); -test(macro, '24', '9', '15'); -test(macro, '-24', '9', '-33'); -test(macro, '24', '-9', '33'); -test(macro, '-24', '-9', '-15'); -test(macro, '24', '11', '13'); -test(macro, '-24', '11', '-35'); -test(macro, '24', '-11', '35'); -test(macro, '-24', '-11', '-13'); -test(macro, '24', '17', '7'); -test(macro, '-24', '17', '-41'); -test(macro, '24', '-17', '41'); -test(macro, '-24', '-17', '-7'); -test(macro, '24', '22', '2'); -test(macro, '-24', '22', '-46'); -test(macro, '24', '-22', '46'); -test(macro, '-24', '-22', '-2'); -test(macro, '24', '24', '0'); -test(macro, '-24', '24', '-48'); -test(macro, '24', '-24', '48'); -test(macro, '-24', '-24', '0'); -test(macro, '24', '27', '-3'); -test(macro, '-24', '27', '-51'); -test(macro, '24', '-27', '51'); -test(macro, '-24', '-27', '3'); -test(macro, '24', '29', '-5'); -test(macro, '-24', '29', '-53'); -test(macro, '24', '-29', '53'); -test(macro, '-24', '-29', '5'); -test(macro, '24', '1234', '-1210'); -test(macro, '-24', '1234', '-1258'); -test(macro, '24', '-1234', '1258'); -test(macro, '-24', '-1234', '1210'); -test(macro, '24', '5678', '-5654'); -test(macro, '-24', '5678', '-5702'); -test(macro, '24', '-5678', '5702'); -test(macro, '-24', '-5678', '5654'); -test(macro, '24', '94906265', '-94906241'); -test(macro, '-24', '94906265', '-94906289'); -test(macro, '24', '-94906265', '94906289'); -test(macro, '-24', '-94906265', '94906241'); -test(macro, '24', '94906266', '-94906242'); -test(macro, '-24', '94906266', '-94906290'); -test(macro, '24', '-94906266', '94906290'); -test(macro, '-24', '-94906266', '94906242'); -test(macro, '24', '1073741824', '-1073741800'); -test(macro, '-24', '1073741824', '-1073741848'); -test(macro, '24', '-1073741824', '1073741848'); -test(macro, '-24', '-1073741824', '1073741800'); -test(macro, '24', '51676101935731', '-51676101935707'); -test(macro, '-24', '51676101935731', '-51676101935755'); -test(macro, '24', '-51676101935731', '51676101935755'); -test(macro, '-24', '-51676101935731', '51676101935707'); -test(macro, '24', '717897987691852588770249', '-717897987691852588770225'); -test(macro, '-24', '717897987691852588770249', '-717897987691852588770273'); -test(macro, '24', '-717897987691852588770249', '717897987691852588770273'); -test(macro, '-24', '-717897987691852588770249', '717897987691852588770225'); -test(macro, '27', '0', '27'); -test(macro, '-27', '0', '-27'); -test(macro, '27', '1', '26'); -test(macro, '-27', '1', '-28'); -test(macro, '27', '-1', '28'); -test(macro, '-27', '-1', '-26'); -test(macro, '27', '3', '24'); -test(macro, '-27', '3', '-30'); -test(macro, '27', '-3', '30'); -test(macro, '-27', '-3', '-24'); -test(macro, '27', '7', '20'); -test(macro, '-27', '7', '-34'); -test(macro, '27', '-7', '34'); -test(macro, '-27', '-7', '-20'); -test(macro, '27', '9', '18'); -test(macro, '-27', '9', '-36'); -test(macro, '27', '-9', '36'); -test(macro, '-27', '-9', '-18'); -test(macro, '27', '11', '16'); -test(macro, '-27', '11', '-38'); -test(macro, '27', '-11', '38'); -test(macro, '-27', '-11', '-16'); -test(macro, '27', '17', '10'); -test(macro, '-27', '17', '-44'); -test(macro, '27', '-17', '44'); -test(macro, '-27', '-17', '-10'); -test(macro, '27', '22', '5'); -test(macro, '-27', '22', '-49'); -test(macro, '27', '-22', '49'); -test(macro, '-27', '-22', '-5'); -test(macro, '27', '24', '3'); -test(macro, '-27', '24', '-51'); -test(macro, '27', '-24', '51'); -test(macro, '-27', '-24', '-3'); -test(macro, '27', '27', '0'); -test(macro, '-27', '27', '-54'); -test(macro, '27', '-27', '54'); -test(macro, '-27', '-27', '0'); -test(macro, '27', '29', '-2'); -test(macro, '-27', '29', '-56'); -test(macro, '27', '-29', '56'); -test(macro, '-27', '-29', '2'); -test(macro, '27', '1234', '-1207'); -test(macro, '-27', '1234', '-1261'); -test(macro, '27', '-1234', '1261'); -test(macro, '-27', '-1234', '1207'); -test(macro, '27', '5678', '-5651'); -test(macro, '-27', '5678', '-5705'); -test(macro, '27', '-5678', '5705'); -test(macro, '-27', '-5678', '5651'); -test(macro, '27', '94906265', '-94906238'); -test(macro, '-27', '94906265', '-94906292'); -test(macro, '27', '-94906265', '94906292'); -test(macro, '-27', '-94906265', '94906238'); -test(macro, '27', '94906266', '-94906239'); -test(macro, '-27', '94906266', '-94906293'); -test(macro, '27', '-94906266', '94906293'); -test(macro, '-27', '-94906266', '94906239'); -test(macro, '27', '1073741824', '-1073741797'); -test(macro, '-27', '1073741824', '-1073741851'); -test(macro, '27', '-1073741824', '1073741851'); -test(macro, '-27', '-1073741824', '1073741797'); -test(macro, '27', '51676101935731', '-51676101935704'); -test(macro, '-27', '51676101935731', '-51676101935758'); -test(macro, '27', '-51676101935731', '51676101935758'); -test(macro, '-27', '-51676101935731', '51676101935704'); -test(macro, '27', '717897987691852588770249', '-717897987691852588770222'); -test(macro, '-27', '717897987691852588770249', '-717897987691852588770276'); -test(macro, '27', '-717897987691852588770249', '717897987691852588770276'); -test(macro, '-27', '-717897987691852588770249', '717897987691852588770222'); -test(macro, '29', '0', '29'); -test(macro, '-29', '0', '-29'); -test(macro, '29', '1', '28'); -test(macro, '-29', '1', '-30'); -test(macro, '29', '-1', '30'); -test(macro, '-29', '-1', '-28'); -test(macro, '29', '3', '26'); -test(macro, '-29', '3', '-32'); -test(macro, '29', '-3', '32'); -test(macro, '-29', '-3', '-26'); -test(macro, '29', '7', '22'); -test(macro, '-29', '7', '-36'); -test(macro, '29', '-7', '36'); -test(macro, '-29', '-7', '-22'); -test(macro, '29', '9', '20'); -test(macro, '-29', '9', '-38'); -test(macro, '29', '-9', '38'); -test(macro, '-29', '-9', '-20'); -test(macro, '29', '11', '18'); -test(macro, '-29', '11', '-40'); -test(macro, '29', '-11', '40'); -test(macro, '-29', '-11', '-18'); -test(macro, '29', '17', '12'); -test(macro, '-29', '17', '-46'); -test(macro, '29', '-17', '46'); -test(macro, '-29', '-17', '-12'); -test(macro, '29', '22', '7'); -test(macro, '-29', '22', '-51'); -test(macro, '29', '-22', '51'); -test(macro, '-29', '-22', '-7'); -test(macro, '29', '24', '5'); -test(macro, '-29', '24', '-53'); -test(macro, '29', '-24', '53'); -test(macro, '-29', '-24', '-5'); -test(macro, '29', '27', '2'); -test(macro, '-29', '27', '-56'); -test(macro, '29', '-27', '56'); -test(macro, '-29', '-27', '-2'); -test(macro, '29', '29', '0'); -test(macro, '-29', '29', '-58'); -test(macro, '29', '-29', '58'); -test(macro, '-29', '-29', '0'); -test(macro, '29', '1234', '-1205'); -test(macro, '-29', '1234', '-1263'); -test(macro, '29', '-1234', '1263'); -test(macro, '-29', '-1234', '1205'); -test(macro, '29', '5678', '-5649'); -test(macro, '-29', '5678', '-5707'); -test(macro, '29', '-5678', '5707'); -test(macro, '-29', '-5678', '5649'); -test(macro, '29', '94906265', '-94906236'); -test(macro, '-29', '94906265', '-94906294'); -test(macro, '29', '-94906265', '94906294'); -test(macro, '-29', '-94906265', '94906236'); -test(macro, '29', '94906266', '-94906237'); -test(macro, '-29', '94906266', '-94906295'); -test(macro, '29', '-94906266', '94906295'); -test(macro, '-29', '-94906266', '94906237'); -test(macro, '29', '1073741824', '-1073741795'); -test(macro, '-29', '1073741824', '-1073741853'); -test(macro, '29', '-1073741824', '1073741853'); -test(macro, '-29', '-1073741824', '1073741795'); -test(macro, '29', '51676101935731', '-51676101935702'); -test(macro, '-29', '51676101935731', '-51676101935760'); -test(macro, '29', '-51676101935731', '51676101935760'); -test(macro, '-29', '-51676101935731', '51676101935702'); -test(macro, '29', '717897987691852588770249', '-717897987691852588770220'); -test(macro, '-29', '717897987691852588770249', '-717897987691852588770278'); -test(macro, '29', '-717897987691852588770249', '717897987691852588770278'); -test(macro, '-29', '-717897987691852588770249', '717897987691852588770220'); -test(macro, '1234', '0', '1234'); -test(macro, '-1234', '0', '-1234'); -test(macro, '1234', '1', '1233'); -test(macro, '-1234', '1', '-1235'); -test(macro, '1234', '-1', '1235'); -test(macro, '-1234', '-1', '-1233'); -test(macro, '1234', '3', '1231'); -test(macro, '-1234', '3', '-1237'); -test(macro, '1234', '-3', '1237'); -test(macro, '-1234', '-3', '-1231'); -test(macro, '1234', '7', '1227'); -test(macro, '-1234', '7', '-1241'); -test(macro, '1234', '-7', '1241'); -test(macro, '-1234', '-7', '-1227'); -test(macro, '1234', '9', '1225'); -test(macro, '-1234', '9', '-1243'); -test(macro, '1234', '-9', '1243'); -test(macro, '-1234', '-9', '-1225'); -test(macro, '1234', '11', '1223'); -test(macro, '-1234', '11', '-1245'); -test(macro, '1234', '-11', '1245'); -test(macro, '-1234', '-11', '-1223'); -test(macro, '1234', '17', '1217'); -test(macro, '-1234', '17', '-1251'); -test(macro, '1234', '-17', '1251'); -test(macro, '-1234', '-17', '-1217'); -test(macro, '1234', '22', '1212'); -test(macro, '-1234', '22', '-1256'); -test(macro, '1234', '-22', '1256'); -test(macro, '-1234', '-22', '-1212'); -test(macro, '1234', '24', '1210'); -test(macro, '-1234', '24', '-1258'); -test(macro, '1234', '-24', '1258'); -test(macro, '-1234', '-24', '-1210'); -test(macro, '1234', '27', '1207'); -test(macro, '-1234', '27', '-1261'); -test(macro, '1234', '-27', '1261'); -test(macro, '-1234', '-27', '-1207'); -test(macro, '1234', '29', '1205'); -test(macro, '-1234', '29', '-1263'); -test(macro, '1234', '-29', '1263'); -test(macro, '-1234', '-29', '-1205'); -test(macro, '1234', '1234', '0'); -test(macro, '-1234', '1234', '-2468'); -test(macro, '1234', '-1234', '2468'); -test(macro, '-1234', '-1234', '0'); -test(macro, '1234', '5678', '-4444'); -test(macro, '-1234', '5678', '-6912'); -test(macro, '1234', '-5678', '6912'); -test(macro, '-1234', '-5678', '4444'); -test(macro, '1234', '94906265', '-94905031'); -test(macro, '-1234', '94906265', '-94907499'); -test(macro, '1234', '-94906265', '94907499'); -test(macro, '-1234', '-94906265', '94905031'); -test(macro, '1234', '94906266', '-94905032'); -test(macro, '-1234', '94906266', '-94907500'); -test(macro, '1234', '-94906266', '94907500'); -test(macro, '-1234', '-94906266', '94905032'); -test(macro, '1234', '1073741824', '-1073740590'); -test(macro, '-1234', '1073741824', '-1073743058'); -test(macro, '1234', '-1073741824', '1073743058'); -test(macro, '-1234', '-1073741824', '1073740590'); -test(macro, '1234', '51676101935731', '-51676101934497'); -test(macro, '-1234', '51676101935731', '-51676101936965'); -test(macro, '1234', '-51676101935731', '51676101936965'); -test(macro, '-1234', '-51676101935731', '51676101934497'); -test(macro, '1234', '717897987691852588770249', '-717897987691852588769015'); -test(macro, '-1234', '717897987691852588770249', '-717897987691852588771483'); -test(macro, '1234', '-717897987691852588770249', '717897987691852588771483'); -test(macro, '-1234', '-717897987691852588770249', '717897987691852588769015'); -test(macro, '5678', '0', '5678'); -test(macro, '-5678', '0', '-5678'); -test(macro, '5678', '1', '5677'); -test(macro, '-5678', '1', '-5679'); -test(macro, '5678', '-1', '5679'); -test(macro, '-5678', '-1', '-5677'); -test(macro, '5678', '3', '5675'); -test(macro, '-5678', '3', '-5681'); -test(macro, '5678', '-3', '5681'); -test(macro, '-5678', '-3', '-5675'); -test(macro, '5678', '7', '5671'); -test(macro, '-5678', '7', '-5685'); -test(macro, '5678', '-7', '5685'); -test(macro, '-5678', '-7', '-5671'); -test(macro, '5678', '9', '5669'); -test(macro, '-5678', '9', '-5687'); -test(macro, '5678', '-9', '5687'); -test(macro, '-5678', '-9', '-5669'); -test(macro, '5678', '11', '5667'); -test(macro, '-5678', '11', '-5689'); -test(macro, '5678', '-11', '5689'); -test(macro, '-5678', '-11', '-5667'); -test(macro, '5678', '17', '5661'); -test(macro, '-5678', '17', '-5695'); -test(macro, '5678', '-17', '5695'); -test(macro, '-5678', '-17', '-5661'); -test(macro, '5678', '22', '5656'); -test(macro, '-5678', '22', '-5700'); -test(macro, '5678', '-22', '5700'); -test(macro, '-5678', '-22', '-5656'); -test(macro, '5678', '24', '5654'); -test(macro, '-5678', '24', '-5702'); -test(macro, '5678', '-24', '5702'); -test(macro, '-5678', '-24', '-5654'); -test(macro, '5678', '27', '5651'); -test(macro, '-5678', '27', '-5705'); -test(macro, '5678', '-27', '5705'); -test(macro, '-5678', '-27', '-5651'); -test(macro, '5678', '29', '5649'); -test(macro, '-5678', '29', '-5707'); -test(macro, '5678', '-29', '5707'); -test(macro, '-5678', '-29', '-5649'); -test(macro, '5678', '1234', '4444'); -test(macro, '-5678', '1234', '-6912'); -test(macro, '5678', '-1234', '6912'); -test(macro, '-5678', '-1234', '-4444'); -test(macro, '5678', '5678', '0'); -test(macro, '-5678', '5678', '-11356'); -test(macro, '5678', '-5678', '11356'); -test(macro, '-5678', '-5678', '0'); -test(macro, '5678', '94906265', '-94900587'); -test(macro, '-5678', '94906265', '-94911943'); -test(macro, '5678', '-94906265', '94911943'); -test(macro, '-5678', '-94906265', '94900587'); -test(macro, '5678', '94906266', '-94900588'); -test(macro, '-5678', '94906266', '-94911944'); -test(macro, '5678', '-94906266', '94911944'); -test(macro, '-5678', '-94906266', '94900588'); -test(macro, '5678', '1073741824', '-1073736146'); -test(macro, '-5678', '1073741824', '-1073747502'); -test(macro, '5678', '-1073741824', '1073747502'); -test(macro, '-5678', '-1073741824', '1073736146'); -test(macro, '5678', '51676101935731', '-51676101930053'); -test(macro, '-5678', '51676101935731', '-51676101941409'); -test(macro, '5678', '-51676101935731', '51676101941409'); -test(macro, '-5678', '-51676101935731', '51676101930053'); -test(macro, '5678', '717897987691852588770249', '-717897987691852588764571'); -test(macro, '-5678', '717897987691852588770249', '-717897987691852588775927'); -test(macro, '5678', '-717897987691852588770249', '717897987691852588775927'); -test(macro, '-5678', '-717897987691852588770249', '717897987691852588764571'); -test(macro, '94906265', '0', '94906265'); -test(macro, '-94906265', '0', '-94906265'); -test(macro, '94906265', '1', '94906264'); -test(macro, '-94906265', '1', '-94906266'); -test(macro, '94906265', '-1', '94906266'); -test(macro, '-94906265', '-1', '-94906264'); -test(macro, '94906265', '3', '94906262'); -test(macro, '-94906265', '3', '-94906268'); -test(macro, '94906265', '-3', '94906268'); -test(macro, '-94906265', '-3', '-94906262'); -test(macro, '94906265', '7', '94906258'); -test(macro, '-94906265', '7', '-94906272'); -test(macro, '94906265', '-7', '94906272'); -test(macro, '-94906265', '-7', '-94906258'); -test(macro, '94906265', '9', '94906256'); -test(macro, '-94906265', '9', '-94906274'); -test(macro, '94906265', '-9', '94906274'); -test(macro, '-94906265', '-9', '-94906256'); -test(macro, '94906265', '11', '94906254'); -test(macro, '-94906265', '11', '-94906276'); -test(macro, '94906265', '-11', '94906276'); -test(macro, '-94906265', '-11', '-94906254'); -test(macro, '94906265', '17', '94906248'); -test(macro, '-94906265', '17', '-94906282'); -test(macro, '94906265', '-17', '94906282'); -test(macro, '-94906265', '-17', '-94906248'); -test(macro, '94906265', '22', '94906243'); -test(macro, '-94906265', '22', '-94906287'); -test(macro, '94906265', '-22', '94906287'); -test(macro, '-94906265', '-22', '-94906243'); -test(macro, '94906265', '24', '94906241'); -test(macro, '-94906265', '24', '-94906289'); -test(macro, '94906265', '-24', '94906289'); -test(macro, '-94906265', '-24', '-94906241'); -test(macro, '94906265', '27', '94906238'); -test(macro, '-94906265', '27', '-94906292'); -test(macro, '94906265', '-27', '94906292'); -test(macro, '-94906265', '-27', '-94906238'); -test(macro, '94906265', '29', '94906236'); -test(macro, '-94906265', '29', '-94906294'); -test(macro, '94906265', '-29', '94906294'); -test(macro, '-94906265', '-29', '-94906236'); -test(macro, '94906265', '1234', '94905031'); -test(macro, '-94906265', '1234', '-94907499'); -test(macro, '94906265', '-1234', '94907499'); -test(macro, '-94906265', '-1234', '-94905031'); -test(macro, '94906265', '5678', '94900587'); -test(macro, '-94906265', '5678', '-94911943'); -test(macro, '94906265', '-5678', '94911943'); -test(macro, '-94906265', '-5678', '-94900587'); -test(macro, '94906265', '94906265', '0'); -test(macro, '-94906265', '94906265', '-189812530'); -test(macro, '94906265', '-94906265', '189812530'); -test(macro, '-94906265', '-94906265', '0'); -test(macro, '94906265', '94906266', '-1'); -test(macro, '-94906265', '94906266', '-189812531'); -test(macro, '94906265', '-94906266', '189812531'); -test(macro, '-94906265', '-94906266', '1'); -test(macro, '94906265', '1073741824', '-978835559'); -test(macro, '-94906265', '1073741824', '-1168648089'); -test(macro, '94906265', '-1073741824', '1168648089'); -test(macro, '-94906265', '-1073741824', '978835559'); -test(macro, '94906265', '51676101935731', '-51676007029466'); -test(macro, '-94906265', '51676101935731', '-51676196841996'); -test(macro, '94906265', '-51676101935731', '51676196841996'); -test(macro, '-94906265', '-51676101935731', '51676007029466'); -test( - macro, - '94906265', - '717897987691852588770249', - '-717897987691852493863984', -); -test( - macro, - '-94906265', - '717897987691852588770249', - '-717897987691852683676514', -); -test( - macro, - '94906265', - '-717897987691852588770249', - '717897987691852683676514', -); -test( - macro, - '-94906265', - '-717897987691852588770249', - '717897987691852493863984', -); -test(macro, '94906266', '0', '94906266'); -test(macro, '-94906266', '0', '-94906266'); -test(macro, '94906266', '1', '94906265'); -test(macro, '-94906266', '1', '-94906267'); -test(macro, '94906266', '-1', '94906267'); -test(macro, '-94906266', '-1', '-94906265'); -test(macro, '94906266', '3', '94906263'); -test(macro, '-94906266', '3', '-94906269'); -test(macro, '94906266', '-3', '94906269'); -test(macro, '-94906266', '-3', '-94906263'); -test(macro, '94906266', '7', '94906259'); -test(macro, '-94906266', '7', '-94906273'); -test(macro, '94906266', '-7', '94906273'); -test(macro, '-94906266', '-7', '-94906259'); -test(macro, '94906266', '9', '94906257'); -test(macro, '-94906266', '9', '-94906275'); -test(macro, '94906266', '-9', '94906275'); -test(macro, '-94906266', '-9', '-94906257'); -test(macro, '94906266', '11', '94906255'); -test(macro, '-94906266', '11', '-94906277'); -test(macro, '94906266', '-11', '94906277'); -test(macro, '-94906266', '-11', '-94906255'); -test(macro, '94906266', '17', '94906249'); -test(macro, '-94906266', '17', '-94906283'); -test(macro, '94906266', '-17', '94906283'); -test(macro, '-94906266', '-17', '-94906249'); -test(macro, '94906266', '22', '94906244'); -test(macro, '-94906266', '22', '-94906288'); -test(macro, '94906266', '-22', '94906288'); -test(macro, '-94906266', '-22', '-94906244'); -test(macro, '94906266', '24', '94906242'); -test(macro, '-94906266', '24', '-94906290'); -test(macro, '94906266', '-24', '94906290'); -test(macro, '-94906266', '-24', '-94906242'); -test(macro, '94906266', '27', '94906239'); -test(macro, '-94906266', '27', '-94906293'); -test(macro, '94906266', '-27', '94906293'); -test(macro, '-94906266', '-27', '-94906239'); -test(macro, '94906266', '29', '94906237'); -test(macro, '-94906266', '29', '-94906295'); -test(macro, '94906266', '-29', '94906295'); -test(macro, '-94906266', '-29', '-94906237'); -test(macro, '94906266', '1234', '94905032'); -test(macro, '-94906266', '1234', '-94907500'); -test(macro, '94906266', '-1234', '94907500'); -test(macro, '-94906266', '-1234', '-94905032'); -test(macro, '94906266', '5678', '94900588'); -test(macro, '-94906266', '5678', '-94911944'); -test(macro, '94906266', '-5678', '94911944'); -test(macro, '-94906266', '-5678', '-94900588'); -test(macro, '94906266', '94906265', '1'); -test(macro, '-94906266', '94906265', '-189812531'); -test(macro, '94906266', '-94906265', '189812531'); -test(macro, '-94906266', '-94906265', '-1'); -test(macro, '94906266', '94906266', '0'); -test(macro, '-94906266', '94906266', '-189812532'); -test(macro, '94906266', '-94906266', '189812532'); -test(macro, '-94906266', '-94906266', '0'); -test(macro, '94906266', '1073741824', '-978835558'); -test(macro, '-94906266', '1073741824', '-1168648090'); -test(macro, '94906266', '-1073741824', '1168648090'); -test(macro, '-94906266', '-1073741824', '978835558'); -test(macro, '94906266', '51676101935731', '-51676007029465'); -test(macro, '-94906266', '51676101935731', '-51676196841997'); -test(macro, '94906266', '-51676101935731', '51676196841997'); -test(macro, '-94906266', '-51676101935731', '51676007029465'); -test( - macro, - '94906266', - '717897987691852588770249', - '-717897987691852493863983', -); -test( - macro, - '-94906266', - '717897987691852588770249', - '-717897987691852683676515', -); -test( - macro, - '94906266', - '-717897987691852588770249', - '717897987691852683676515', -); -test( - macro, - '-94906266', - '-717897987691852588770249', - '717897987691852493863983', -); -test(macro, '1073741824', '0', '1073741824'); -test(macro, '-1073741824', '0', '-1073741824'); -test(macro, '1073741824', '1', '1073741823'); -test(macro, '-1073741824', '1', '-1073741825'); -test(macro, '1073741824', '-1', '1073741825'); -test(macro, '-1073741824', '-1', '-1073741823'); -test(macro, '1073741824', '3', '1073741821'); -test(macro, '-1073741824', '3', '-1073741827'); -test(macro, '1073741824', '-3', '1073741827'); -test(macro, '-1073741824', '-3', '-1073741821'); -test(macro, '1073741824', '7', '1073741817'); -test(macro, '-1073741824', '7', '-1073741831'); -test(macro, '1073741824', '-7', '1073741831'); -test(macro, '-1073741824', '-7', '-1073741817'); -test(macro, '1073741824', '9', '1073741815'); -test(macro, '-1073741824', '9', '-1073741833'); -test(macro, '1073741824', '-9', '1073741833'); -test(macro, '-1073741824', '-9', '-1073741815'); -test(macro, '1073741824', '11', '1073741813'); -test(macro, '-1073741824', '11', '-1073741835'); -test(macro, '1073741824', '-11', '1073741835'); -test(macro, '-1073741824', '-11', '-1073741813'); -test(macro, '1073741824', '17', '1073741807'); -test(macro, '-1073741824', '17', '-1073741841'); -test(macro, '1073741824', '-17', '1073741841'); -test(macro, '-1073741824', '-17', '-1073741807'); -test(macro, '1073741824', '22', '1073741802'); -test(macro, '-1073741824', '22', '-1073741846'); -test(macro, '1073741824', '-22', '1073741846'); -test(macro, '-1073741824', '-22', '-1073741802'); -test(macro, '1073741824', '24', '1073741800'); -test(macro, '-1073741824', '24', '-1073741848'); -test(macro, '1073741824', '-24', '1073741848'); -test(macro, '-1073741824', '-24', '-1073741800'); -test(macro, '1073741824', '27', '1073741797'); -test(macro, '-1073741824', '27', '-1073741851'); -test(macro, '1073741824', '-27', '1073741851'); -test(macro, '-1073741824', '-27', '-1073741797'); -test(macro, '1073741824', '29', '1073741795'); -test(macro, '-1073741824', '29', '-1073741853'); -test(macro, '1073741824', '-29', '1073741853'); -test(macro, '-1073741824', '-29', '-1073741795'); -test(macro, '1073741824', '1234', '1073740590'); -test(macro, '-1073741824', '1234', '-1073743058'); -test(macro, '1073741824', '-1234', '1073743058'); -test(macro, '-1073741824', '-1234', '-1073740590'); -test(macro, '1073741824', '5678', '1073736146'); -test(macro, '-1073741824', '5678', '-1073747502'); -test(macro, '1073741824', '-5678', '1073747502'); -test(macro, '-1073741824', '-5678', '-1073736146'); -test(macro, '1073741824', '94906265', '978835559'); -test(macro, '-1073741824', '94906265', '-1168648089'); -test(macro, '1073741824', '-94906265', '1168648089'); -test(macro, '-1073741824', '-94906265', '-978835559'); -test(macro, '1073741824', '94906266', '978835558'); -test(macro, '-1073741824', '94906266', '-1168648090'); -test(macro, '1073741824', '-94906266', '1168648090'); -test(macro, '-1073741824', '-94906266', '-978835558'); -test(macro, '1073741824', '1073741824', '0'); -test(macro, '-1073741824', '1073741824', '-2147483648'); -test(macro, '1073741824', '-1073741824', '2147483648'); -test(macro, '-1073741824', '-1073741824', '0'); -test(macro, '1073741824', '51676101935731', '-51675028193907'); -test(macro, '-1073741824', '51676101935731', '-51677175677555'); -test(macro, '1073741824', '-51676101935731', '51677175677555'); -test(macro, '-1073741824', '-51676101935731', '51675028193907'); -test( - macro, - '1073741824', - '717897987691852588770249', - '-717897987691851515028425', -); -test( - macro, - '-1073741824', - '717897987691852588770249', - '-717897987691853662512073', -); -test( - macro, - '1073741824', - '-717897987691852588770249', - '717897987691853662512073', -); -test( - macro, - '-1073741824', - '-717897987691852588770249', - '717897987691851515028425', -); -test(macro, '51676101935731', '0', '51676101935731'); -test(macro, '-51676101935731', '0', '-51676101935731'); -test(macro, '51676101935731', '1', '51676101935730'); -test(macro, '-51676101935731', '1', '-51676101935732'); -test(macro, '51676101935731', '-1', '51676101935732'); -test(macro, '-51676101935731', '-1', '-51676101935730'); -test(macro, '51676101935731', '3', '51676101935728'); -test(macro, '-51676101935731', '3', '-51676101935734'); -test(macro, '51676101935731', '-3', '51676101935734'); -test(macro, '-51676101935731', '-3', '-51676101935728'); -test(macro, '51676101935731', '7', '51676101935724'); -test(macro, '-51676101935731', '7', '-51676101935738'); -test(macro, '51676101935731', '-7', '51676101935738'); -test(macro, '-51676101935731', '-7', '-51676101935724'); -test(macro, '51676101935731', '9', '51676101935722'); -test(macro, '-51676101935731', '9', '-51676101935740'); -test(macro, '51676101935731', '-9', '51676101935740'); -test(macro, '-51676101935731', '-9', '-51676101935722'); -test(macro, '51676101935731', '11', '51676101935720'); -test(macro, '-51676101935731', '11', '-51676101935742'); -test(macro, '51676101935731', '-11', '51676101935742'); -test(macro, '-51676101935731', '-11', '-51676101935720'); -test(macro, '51676101935731', '17', '51676101935714'); -test(macro, '-51676101935731', '17', '-51676101935748'); -test(macro, '51676101935731', '-17', '51676101935748'); -test(macro, '-51676101935731', '-17', '-51676101935714'); -test(macro, '51676101935731', '22', '51676101935709'); -test(macro, '-51676101935731', '22', '-51676101935753'); -test(macro, '51676101935731', '-22', '51676101935753'); -test(macro, '-51676101935731', '-22', '-51676101935709'); -test(macro, '51676101935731', '24', '51676101935707'); -test(macro, '-51676101935731', '24', '-51676101935755'); -test(macro, '51676101935731', '-24', '51676101935755'); -test(macro, '-51676101935731', '-24', '-51676101935707'); -test(macro, '51676101935731', '27', '51676101935704'); -test(macro, '-51676101935731', '27', '-51676101935758'); -test(macro, '51676101935731', '-27', '51676101935758'); -test(macro, '-51676101935731', '-27', '-51676101935704'); -test(macro, '51676101935731', '29', '51676101935702'); -test(macro, '-51676101935731', '29', '-51676101935760'); -test(macro, '51676101935731', '-29', '51676101935760'); -test(macro, '-51676101935731', '-29', '-51676101935702'); -test(macro, '51676101935731', '1234', '51676101934497'); -test(macro, '-51676101935731', '1234', '-51676101936965'); -test(macro, '51676101935731', '-1234', '51676101936965'); -test(macro, '-51676101935731', '-1234', '-51676101934497'); -test(macro, '51676101935731', '5678', '51676101930053'); -test(macro, '-51676101935731', '5678', '-51676101941409'); -test(macro, '51676101935731', '-5678', '51676101941409'); -test(macro, '-51676101935731', '-5678', '-51676101930053'); -test(macro, '51676101935731', '94906265', '51676007029466'); -test(macro, '-51676101935731', '94906265', '-51676196841996'); -test(macro, '51676101935731', '-94906265', '51676196841996'); -test(macro, '-51676101935731', '-94906265', '-51676007029466'); -test(macro, '51676101935731', '94906266', '51676007029465'); -test(macro, '-51676101935731', '94906266', '-51676196841997'); -test(macro, '51676101935731', '-94906266', '51676196841997'); -test(macro, '-51676101935731', '-94906266', '-51676007029465'); -test(macro, '51676101935731', '1073741824', '51675028193907'); -test(macro, '-51676101935731', '1073741824', '-51677175677555'); -test(macro, '51676101935731', '-1073741824', '51677175677555'); -test(macro, '-51676101935731', '-1073741824', '-51675028193907'); -test(macro, '51676101935731', '51676101935731', '0'); -test(macro, '-51676101935731', '51676101935731', '-103352203871462'); -test(macro, '51676101935731', '-51676101935731', '103352203871462'); -test(macro, '-51676101935731', '-51676101935731', '0'); -test( - macro, - '51676101935731', - '717897987691852588770249', - '-717897987640176486834518', -); -test( - macro, - '-51676101935731', - '717897987691852588770249', - '-717897987743528690705980', -); -test( - macro, - '51676101935731', - '-717897987691852588770249', - '717897987743528690705980', -); -test( - macro, - '-51676101935731', - '-717897987691852588770249', - '717897987640176486834518', -); -test(macro, '717897987691852588770249', '0', '717897987691852588770249'); -test(macro, '-717897987691852588770249', '0', '-717897987691852588770249'); -test(macro, '717897987691852588770249', '1', '717897987691852588770248'); -test(macro, '-717897987691852588770249', '1', '-717897987691852588770250'); -test(macro, '717897987691852588770249', '-1', '717897987691852588770250'); -test(macro, '-717897987691852588770249', '-1', '-717897987691852588770248'); -test(macro, '717897987691852588770249', '3', '717897987691852588770246'); -test(macro, '-717897987691852588770249', '3', '-717897987691852588770252'); -test(macro, '717897987691852588770249', '-3', '717897987691852588770252'); -test(macro, '-717897987691852588770249', '-3', '-717897987691852588770246'); -test(macro, '717897987691852588770249', '7', '717897987691852588770242'); -test(macro, '-717897987691852588770249', '7', '-717897987691852588770256'); -test(macro, '717897987691852588770249', '-7', '717897987691852588770256'); -test(macro, '-717897987691852588770249', '-7', '-717897987691852588770242'); -test(macro, '717897987691852588770249', '9', '717897987691852588770240'); -test(macro, '-717897987691852588770249', '9', '-717897987691852588770258'); -test(macro, '717897987691852588770249', '-9', '717897987691852588770258'); -test(macro, '-717897987691852588770249', '-9', '-717897987691852588770240'); -test(macro, '717897987691852588770249', '11', '717897987691852588770238'); -test(macro, '-717897987691852588770249', '11', '-717897987691852588770260'); -test(macro, '717897987691852588770249', '-11', '717897987691852588770260'); -test(macro, '-717897987691852588770249', '-11', '-717897987691852588770238'); -test(macro, '717897987691852588770249', '17', '717897987691852588770232'); -test(macro, '-717897987691852588770249', '17', '-717897987691852588770266'); -test(macro, '717897987691852588770249', '-17', '717897987691852588770266'); -test(macro, '-717897987691852588770249', '-17', '-717897987691852588770232'); -test(macro, '717897987691852588770249', '22', '717897987691852588770227'); -test(macro, '-717897987691852588770249', '22', '-717897987691852588770271'); -test(macro, '717897987691852588770249', '-22', '717897987691852588770271'); -test(macro, '-717897987691852588770249', '-22', '-717897987691852588770227'); -test(macro, '717897987691852588770249', '24', '717897987691852588770225'); -test(macro, '-717897987691852588770249', '24', '-717897987691852588770273'); -test(macro, '717897987691852588770249', '-24', '717897987691852588770273'); -test(macro, '-717897987691852588770249', '-24', '-717897987691852588770225'); -test(macro, '717897987691852588770249', '27', '717897987691852588770222'); -test(macro, '-717897987691852588770249', '27', '-717897987691852588770276'); -test(macro, '717897987691852588770249', '-27', '717897987691852588770276'); -test(macro, '-717897987691852588770249', '-27', '-717897987691852588770222'); -test(macro, '717897987691852588770249', '29', '717897987691852588770220'); -test(macro, '-717897987691852588770249', '29', '-717897987691852588770278'); -test(macro, '717897987691852588770249', '-29', '717897987691852588770278'); -test(macro, '-717897987691852588770249', '-29', '-717897987691852588770220'); -test(macro, '717897987691852588770249', '1234', '717897987691852588769015'); -test(macro, '-717897987691852588770249', '1234', '-717897987691852588771483'); -test(macro, '717897987691852588770249', '-1234', '717897987691852588771483'); -test(macro, '-717897987691852588770249', '-1234', '-717897987691852588769015'); -test(macro, '717897987691852588770249', '5678', '717897987691852588764571'); -test(macro, '-717897987691852588770249', '5678', '-717897987691852588775927'); -test(macro, '717897987691852588770249', '-5678', '717897987691852588775927'); -test(macro, '-717897987691852588770249', '-5678', '-717897987691852588764571'); -test(macro, '717897987691852588770249', '94906265', '717897987691852493863984'); -test( - macro, - '-717897987691852588770249', - '94906265', - '-717897987691852683676514', -); -test( - macro, - '717897987691852588770249', - '-94906265', - '717897987691852683676514', -); -test( - macro, - '-717897987691852588770249', - '-94906265', - '-717897987691852493863984', -); -test(macro, '717897987691852588770249', '94906266', '717897987691852493863983'); -test( - macro, - '-717897987691852588770249', - '94906266', - '-717897987691852683676515', -); -test( - macro, - '717897987691852588770249', - '-94906266', - '717897987691852683676515', -); -test( - macro, - '-717897987691852588770249', - '-94906266', - '-717897987691852493863983', -); -test( - macro, - '717897987691852588770249', - '1073741824', - '717897987691851515028425', -); -test( - macro, - '-717897987691852588770249', - '1073741824', - '-717897987691853662512073', -); -test( - macro, - '717897987691852588770249', - '-1073741824', - '717897987691853662512073', -); -test( - macro, - '-717897987691852588770249', - '-1073741824', - '-717897987691851515028425', -); -test( - macro, - '717897987691852588770249', - '51676101935731', - '717897987640176486834518', -); -test( - macro, - '-717897987691852588770249', - '51676101935731', - '-717897987743528690705980', -); -test( - macro, - '717897987691852588770249', - '-51676101935731', - '717897987743528690705980', -); -test( - macro, - '-717897987691852588770249', - '-51676101935731', - '-717897987640176486834518', -); -test(macro, '717897987691852588770249', '717897987691852588770249', '0'); -test( - macro, - '-717897987691852588770249', - '717897987691852588770249', - '-1435795975383705177540498', -); -test( - macro, - '717897987691852588770249', - '-717897987691852588770249', - '1435795975383705177540498', -); -test(macro, '-717897987691852588770249', '-717897987691852588770249', '0'); diff --git a/test/src/integer/arithmetic/isubn.js b/test/src/integer/arithmetic/isubn.js deleted file mode 100644 index 40a3a45..0000000 --- a/test/src/integer/arithmetic/isubn.js +++ /dev/null @@ -1,1214 +0,0 @@ -import test from 'ava'; -import {parse, stringify, isubn} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const c = isubn(a, B); - t.is(stringify(a), C); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `isubn(${fmt(A)},${B}) = ${fmt(C)}`; - -test(macro, '0', 0, '0'); -test(macro, '0', 1, '-1'); -test(macro, '0', -1, '1'); -test(macro, '0', 3, '-3'); -test(macro, '0', -3, '3'); -test(macro, '0', 7, '-7'); -test(macro, '0', -7, '7'); -test(macro, '0', 9, '-9'); -test(macro, '0', -9, '9'); -test(macro, '0', 11, '-11'); -test(macro, '0', -11, '11'); -test(macro, '0', 17, '-17'); -test(macro, '0', -17, '17'); -test(macro, '0', 22, '-22'); -test(macro, '0', -22, '22'); -test(macro, '0', 24, '-24'); -test(macro, '0', -24, '24'); -test(macro, '0', 27, '-27'); -test(macro, '0', -27, '27'); -test(macro, '0', 29, '-29'); -test(macro, '0', -29, '29'); -test(macro, '0', 1234, '-1234'); -test(macro, '0', -1234, '1234'); -test(macro, '0', 5678, '-5678'); -test(macro, '0', -5678, '5678'); -test(macro, '0', 94906265, '-94906265'); -test(macro, '0', -94906265, '94906265'); -test(macro, '0', 94906266, '-94906266'); -test(macro, '0', -94906266, '94906266'); -test(macro, '0', 1073741824, '-1073741824'); -test(macro, '0', -1073741824, '1073741824'); -test(macro, '0', 51676101935731, '-51676101935731'); -test(macro, '0', -51676101935731, '51676101935731'); -test(macro, '1', 0, '1'); -test(macro, '-1', 0, '-1'); -test(macro, '1', 1, '0'); -test(macro, '-1', 1, '-2'); -test(macro, '1', -1, '2'); -test(macro, '-1', -1, '0'); -test(macro, '1', 3, '-2'); -test(macro, '-1', 3, '-4'); -test(macro, '1', -3, '4'); -test(macro, '-1', -3, '2'); -test(macro, '1', 7, '-6'); -test(macro, '-1', 7, '-8'); -test(macro, '1', -7, '8'); -test(macro, '-1', -7, '6'); -test(macro, '1', 9, '-8'); -test(macro, '-1', 9, '-10'); -test(macro, '1', -9, '10'); -test(macro, '-1', -9, '8'); -test(macro, '1', 11, '-10'); -test(macro, '-1', 11, '-12'); -test(macro, '1', -11, '12'); -test(macro, '-1', -11, '10'); -test(macro, '1', 17, '-16'); -test(macro, '-1', 17, '-18'); -test(macro, '1', -17, '18'); -test(macro, '-1', -17, '16'); -test(macro, '1', 22, '-21'); -test(macro, '-1', 22, '-23'); -test(macro, '1', -22, '23'); -test(macro, '-1', -22, '21'); -test(macro, '1', 24, '-23'); -test(macro, '-1', 24, '-25'); -test(macro, '1', -24, '25'); -test(macro, '-1', -24, '23'); -test(macro, '1', 27, '-26'); -test(macro, '-1', 27, '-28'); -test(macro, '1', -27, '28'); -test(macro, '-1', -27, '26'); -test(macro, '1', 29, '-28'); -test(macro, '-1', 29, '-30'); -test(macro, '1', -29, '30'); -test(macro, '-1', -29, '28'); -test(macro, '1', 1234, '-1233'); -test(macro, '-1', 1234, '-1235'); -test(macro, '1', -1234, '1235'); -test(macro, '-1', -1234, '1233'); -test(macro, '1', 5678, '-5677'); -test(macro, '-1', 5678, '-5679'); -test(macro, '1', -5678, '5679'); -test(macro, '-1', -5678, '5677'); -test(macro, '1', 94906265, '-94906264'); -test(macro, '-1', 94906265, '-94906266'); -test(macro, '1', -94906265, '94906266'); -test(macro, '-1', -94906265, '94906264'); -test(macro, '1', 94906266, '-94906265'); -test(macro, '-1', 94906266, '-94906267'); -test(macro, '1', -94906266, '94906267'); -test(macro, '-1', -94906266, '94906265'); -test(macro, '1', 1073741824, '-1073741823'); -test(macro, '-1', 1073741824, '-1073741825'); -test(macro, '1', -1073741824, '1073741825'); -test(macro, '-1', -1073741824, '1073741823'); -test(macro, '1', 51676101935731, '-51676101935730'); -test(macro, '-1', 51676101935731, '-51676101935732'); -test(macro, '1', -51676101935731, '51676101935732'); -test(macro, '-1', -51676101935731, '51676101935730'); -test(macro, '3', 0, '3'); -test(macro, '-3', 0, '-3'); -test(macro, '3', 1, '2'); -test(macro, '-3', 1, '-4'); -test(macro, '3', -1, '4'); -test(macro, '-3', -1, '-2'); -test(macro, '3', 3, '0'); -test(macro, '-3', 3, '-6'); -test(macro, '3', -3, '6'); -test(macro, '-3', -3, '0'); -test(macro, '3', 7, '-4'); -test(macro, '-3', 7, '-10'); -test(macro, '3', -7, '10'); -test(macro, '-3', -7, '4'); -test(macro, '3', 9, '-6'); -test(macro, '-3', 9, '-12'); -test(macro, '3', -9, '12'); -test(macro, '-3', -9, '6'); -test(macro, '3', 11, '-8'); -test(macro, '-3', 11, '-14'); -test(macro, '3', -11, '14'); -test(macro, '-3', -11, '8'); -test(macro, '3', 17, '-14'); -test(macro, '-3', 17, '-20'); -test(macro, '3', -17, '20'); -test(macro, '-3', -17, '14'); -test(macro, '3', 22, '-19'); -test(macro, '-3', 22, '-25'); -test(macro, '3', -22, '25'); -test(macro, '-3', -22, '19'); -test(macro, '3', 24, '-21'); -test(macro, '-3', 24, '-27'); -test(macro, '3', -24, '27'); -test(macro, '-3', -24, '21'); -test(macro, '3', 27, '-24'); -test(macro, '-3', 27, '-30'); -test(macro, '3', -27, '30'); -test(macro, '-3', -27, '24'); -test(macro, '3', 29, '-26'); -test(macro, '-3', 29, '-32'); -test(macro, '3', -29, '32'); -test(macro, '-3', -29, '26'); -test(macro, '3', 1234, '-1231'); -test(macro, '-3', 1234, '-1237'); -test(macro, '3', -1234, '1237'); -test(macro, '-3', -1234, '1231'); -test(macro, '3', 5678, '-5675'); -test(macro, '-3', 5678, '-5681'); -test(macro, '3', -5678, '5681'); -test(macro, '-3', -5678, '5675'); -test(macro, '3', 94906265, '-94906262'); -test(macro, '-3', 94906265, '-94906268'); -test(macro, '3', -94906265, '94906268'); -test(macro, '-3', -94906265, '94906262'); -test(macro, '3', 94906266, '-94906263'); -test(macro, '-3', 94906266, '-94906269'); -test(macro, '3', -94906266, '94906269'); -test(macro, '-3', -94906266, '94906263'); -test(macro, '3', 1073741824, '-1073741821'); -test(macro, '-3', 1073741824, '-1073741827'); -test(macro, '3', -1073741824, '1073741827'); -test(macro, '-3', -1073741824, '1073741821'); -test(macro, '3', 51676101935731, '-51676101935728'); -test(macro, '-3', 51676101935731, '-51676101935734'); -test(macro, '3', -51676101935731, '51676101935734'); -test(macro, '-3', -51676101935731, '51676101935728'); -test(macro, '7', 0, '7'); -test(macro, '-7', 0, '-7'); -test(macro, '7', 1, '6'); -test(macro, '-7', 1, '-8'); -test(macro, '7', -1, '8'); -test(macro, '-7', -1, '-6'); -test(macro, '7', 3, '4'); -test(macro, '-7', 3, '-10'); -test(macro, '7', -3, '10'); -test(macro, '-7', -3, '-4'); -test(macro, '7', 7, '0'); -test(macro, '-7', 7, '-14'); -test(macro, '7', -7, '14'); -test(macro, '-7', -7, '0'); -test(macro, '7', 9, '-2'); -test(macro, '-7', 9, '-16'); -test(macro, '7', -9, '16'); -test(macro, '-7', -9, '2'); -test(macro, '7', 11, '-4'); -test(macro, '-7', 11, '-18'); -test(macro, '7', -11, '18'); -test(macro, '-7', -11, '4'); -test(macro, '7', 17, '-10'); -test(macro, '-7', 17, '-24'); -test(macro, '7', -17, '24'); -test(macro, '-7', -17, '10'); -test(macro, '7', 22, '-15'); -test(macro, '-7', 22, '-29'); -test(macro, '7', -22, '29'); -test(macro, '-7', -22, '15'); -test(macro, '7', 24, '-17'); -test(macro, '-7', 24, '-31'); -test(macro, '7', -24, '31'); -test(macro, '-7', -24, '17'); -test(macro, '7', 27, '-20'); -test(macro, '-7', 27, '-34'); -test(macro, '7', -27, '34'); -test(macro, '-7', -27, '20'); -test(macro, '7', 29, '-22'); -test(macro, '-7', 29, '-36'); -test(macro, '7', -29, '36'); -test(macro, '-7', -29, '22'); -test(macro, '7', 1234, '-1227'); -test(macro, '-7', 1234, '-1241'); -test(macro, '7', -1234, '1241'); -test(macro, '-7', -1234, '1227'); -test(macro, '7', 5678, '-5671'); -test(macro, '-7', 5678, '-5685'); -test(macro, '7', -5678, '5685'); -test(macro, '-7', -5678, '5671'); -test(macro, '7', 94906265, '-94906258'); -test(macro, '-7', 94906265, '-94906272'); -test(macro, '7', -94906265, '94906272'); -test(macro, '-7', -94906265, '94906258'); -test(macro, '7', 94906266, '-94906259'); -test(macro, '-7', 94906266, '-94906273'); -test(macro, '7', -94906266, '94906273'); -test(macro, '-7', -94906266, '94906259'); -test(macro, '7', 1073741824, '-1073741817'); -test(macro, '-7', 1073741824, '-1073741831'); -test(macro, '7', -1073741824, '1073741831'); -test(macro, '-7', -1073741824, '1073741817'); -test(macro, '7', 51676101935731, '-51676101935724'); -test(macro, '-7', 51676101935731, '-51676101935738'); -test(macro, '7', -51676101935731, '51676101935738'); -test(macro, '-7', -51676101935731, '51676101935724'); -test(macro, '9', 0, '9'); -test(macro, '-9', 0, '-9'); -test(macro, '9', 1, '8'); -test(macro, '-9', 1, '-10'); -test(macro, '9', -1, '10'); -test(macro, '-9', -1, '-8'); -test(macro, '9', 3, '6'); -test(macro, '-9', 3, '-12'); -test(macro, '9', -3, '12'); -test(macro, '-9', -3, '-6'); -test(macro, '9', 7, '2'); -test(macro, '-9', 7, '-16'); -test(macro, '9', -7, '16'); -test(macro, '-9', -7, '-2'); -test(macro, '9', 9, '0'); -test(macro, '-9', 9, '-18'); -test(macro, '9', -9, '18'); -test(macro, '-9', -9, '0'); -test(macro, '9', 11, '-2'); -test(macro, '-9', 11, '-20'); -test(macro, '9', -11, '20'); -test(macro, '-9', -11, '2'); -test(macro, '9', 17, '-8'); -test(macro, '-9', 17, '-26'); -test(macro, '9', -17, '26'); -test(macro, '-9', -17, '8'); -test(macro, '9', 22, '-13'); -test(macro, '-9', 22, '-31'); -test(macro, '9', -22, '31'); -test(macro, '-9', -22, '13'); -test(macro, '9', 24, '-15'); -test(macro, '-9', 24, '-33'); -test(macro, '9', -24, '33'); -test(macro, '-9', -24, '15'); -test(macro, '9', 27, '-18'); -test(macro, '-9', 27, '-36'); -test(macro, '9', -27, '36'); -test(macro, '-9', -27, '18'); -test(macro, '9', 29, '-20'); -test(macro, '-9', 29, '-38'); -test(macro, '9', -29, '38'); -test(macro, '-9', -29, '20'); -test(macro, '9', 1234, '-1225'); -test(macro, '-9', 1234, '-1243'); -test(macro, '9', -1234, '1243'); -test(macro, '-9', -1234, '1225'); -test(macro, '9', 5678, '-5669'); -test(macro, '-9', 5678, '-5687'); -test(macro, '9', -5678, '5687'); -test(macro, '-9', -5678, '5669'); -test(macro, '9', 94906265, '-94906256'); -test(macro, '-9', 94906265, '-94906274'); -test(macro, '9', -94906265, '94906274'); -test(macro, '-9', -94906265, '94906256'); -test(macro, '9', 94906266, '-94906257'); -test(macro, '-9', 94906266, '-94906275'); -test(macro, '9', -94906266, '94906275'); -test(macro, '-9', -94906266, '94906257'); -test(macro, '9', 1073741824, '-1073741815'); -test(macro, '-9', 1073741824, '-1073741833'); -test(macro, '9', -1073741824, '1073741833'); -test(macro, '-9', -1073741824, '1073741815'); -test(macro, '9', 51676101935731, '-51676101935722'); -test(macro, '-9', 51676101935731, '-51676101935740'); -test(macro, '9', -51676101935731, '51676101935740'); -test(macro, '-9', -51676101935731, '51676101935722'); -test(macro, '11', 0, '11'); -test(macro, '-11', 0, '-11'); -test(macro, '11', 1, '10'); -test(macro, '-11', 1, '-12'); -test(macro, '11', -1, '12'); -test(macro, '-11', -1, '-10'); -test(macro, '11', 3, '8'); -test(macro, '-11', 3, '-14'); -test(macro, '11', -3, '14'); -test(macro, '-11', -3, '-8'); -test(macro, '11', 7, '4'); -test(macro, '-11', 7, '-18'); -test(macro, '11', -7, '18'); -test(macro, '-11', -7, '-4'); -test(macro, '11', 9, '2'); -test(macro, '-11', 9, '-20'); -test(macro, '11', -9, '20'); -test(macro, '-11', -9, '-2'); -test(macro, '11', 11, '0'); -test(macro, '-11', 11, '-22'); -test(macro, '11', -11, '22'); -test(macro, '-11', -11, '0'); -test(macro, '11', 17, '-6'); -test(macro, '-11', 17, '-28'); -test(macro, '11', -17, '28'); -test(macro, '-11', -17, '6'); -test(macro, '11', 22, '-11'); -test(macro, '-11', 22, '-33'); -test(macro, '11', -22, '33'); -test(macro, '-11', -22, '11'); -test(macro, '11', 24, '-13'); -test(macro, '-11', 24, '-35'); -test(macro, '11', -24, '35'); -test(macro, '-11', -24, '13'); -test(macro, '11', 27, '-16'); -test(macro, '-11', 27, '-38'); -test(macro, '11', -27, '38'); -test(macro, '-11', -27, '16'); -test(macro, '11', 29, '-18'); -test(macro, '-11', 29, '-40'); -test(macro, '11', -29, '40'); -test(macro, '-11', -29, '18'); -test(macro, '11', 1234, '-1223'); -test(macro, '-11', 1234, '-1245'); -test(macro, '11', -1234, '1245'); -test(macro, '-11', -1234, '1223'); -test(macro, '11', 5678, '-5667'); -test(macro, '-11', 5678, '-5689'); -test(macro, '11', -5678, '5689'); -test(macro, '-11', -5678, '5667'); -test(macro, '11', 94906265, '-94906254'); -test(macro, '-11', 94906265, '-94906276'); -test(macro, '11', -94906265, '94906276'); -test(macro, '-11', -94906265, '94906254'); -test(macro, '11', 94906266, '-94906255'); -test(macro, '-11', 94906266, '-94906277'); -test(macro, '11', -94906266, '94906277'); -test(macro, '-11', -94906266, '94906255'); -test(macro, '11', 1073741824, '-1073741813'); -test(macro, '-11', 1073741824, '-1073741835'); -test(macro, '11', -1073741824, '1073741835'); -test(macro, '-11', -1073741824, '1073741813'); -test(macro, '11', 51676101935731, '-51676101935720'); -test(macro, '-11', 51676101935731, '-51676101935742'); -test(macro, '11', -51676101935731, '51676101935742'); -test(macro, '-11', -51676101935731, '51676101935720'); -test(macro, '17', 0, '17'); -test(macro, '-17', 0, '-17'); -test(macro, '17', 1, '16'); -test(macro, '-17', 1, '-18'); -test(macro, '17', -1, '18'); -test(macro, '-17', -1, '-16'); -test(macro, '17', 3, '14'); -test(macro, '-17', 3, '-20'); -test(macro, '17', -3, '20'); -test(macro, '-17', -3, '-14'); -test(macro, '17', 7, '10'); -test(macro, '-17', 7, '-24'); -test(macro, '17', -7, '24'); -test(macro, '-17', -7, '-10'); -test(macro, '17', 9, '8'); -test(macro, '-17', 9, '-26'); -test(macro, '17', -9, '26'); -test(macro, '-17', -9, '-8'); -test(macro, '17', 11, '6'); -test(macro, '-17', 11, '-28'); -test(macro, '17', -11, '28'); -test(macro, '-17', -11, '-6'); -test(macro, '17', 17, '0'); -test(macro, '-17', 17, '-34'); -test(macro, '17', -17, '34'); -test(macro, '-17', -17, '0'); -test(macro, '17', 22, '-5'); -test(macro, '-17', 22, '-39'); -test(macro, '17', -22, '39'); -test(macro, '-17', -22, '5'); -test(macro, '17', 24, '-7'); -test(macro, '-17', 24, '-41'); -test(macro, '17', -24, '41'); -test(macro, '-17', -24, '7'); -test(macro, '17', 27, '-10'); -test(macro, '-17', 27, '-44'); -test(macro, '17', -27, '44'); -test(macro, '-17', -27, '10'); -test(macro, '17', 29, '-12'); -test(macro, '-17', 29, '-46'); -test(macro, '17', -29, '46'); -test(macro, '-17', -29, '12'); -test(macro, '17', 1234, '-1217'); -test(macro, '-17', 1234, '-1251'); -test(macro, '17', -1234, '1251'); -test(macro, '-17', -1234, '1217'); -test(macro, '17', 5678, '-5661'); -test(macro, '-17', 5678, '-5695'); -test(macro, '17', -5678, '5695'); -test(macro, '-17', -5678, '5661'); -test(macro, '17', 94906265, '-94906248'); -test(macro, '-17', 94906265, '-94906282'); -test(macro, '17', -94906265, '94906282'); -test(macro, '-17', -94906265, '94906248'); -test(macro, '17', 94906266, '-94906249'); -test(macro, '-17', 94906266, '-94906283'); -test(macro, '17', -94906266, '94906283'); -test(macro, '-17', -94906266, '94906249'); -test(macro, '17', 1073741824, '-1073741807'); -test(macro, '-17', 1073741824, '-1073741841'); -test(macro, '17', -1073741824, '1073741841'); -test(macro, '-17', -1073741824, '1073741807'); -test(macro, '17', 51676101935731, '-51676101935714'); -test(macro, '-17', 51676101935731, '-51676101935748'); -test(macro, '17', -51676101935731, '51676101935748'); -test(macro, '-17', -51676101935731, '51676101935714'); -test(macro, '22', 0, '22'); -test(macro, '-22', 0, '-22'); -test(macro, '22', 1, '21'); -test(macro, '-22', 1, '-23'); -test(macro, '22', -1, '23'); -test(macro, '-22', -1, '-21'); -test(macro, '22', 3, '19'); -test(macro, '-22', 3, '-25'); -test(macro, '22', -3, '25'); -test(macro, '-22', -3, '-19'); -test(macro, '22', 7, '15'); -test(macro, '-22', 7, '-29'); -test(macro, '22', -7, '29'); -test(macro, '-22', -7, '-15'); -test(macro, '22', 9, '13'); -test(macro, '-22', 9, '-31'); -test(macro, '22', -9, '31'); -test(macro, '-22', -9, '-13'); -test(macro, '22', 11, '11'); -test(macro, '-22', 11, '-33'); -test(macro, '22', -11, '33'); -test(macro, '-22', -11, '-11'); -test(macro, '22', 17, '5'); -test(macro, '-22', 17, '-39'); -test(macro, '22', -17, '39'); -test(macro, '-22', -17, '-5'); -test(macro, '22', 22, '0'); -test(macro, '-22', 22, '-44'); -test(macro, '22', -22, '44'); -test(macro, '-22', -22, '0'); -test(macro, '22', 24, '-2'); -test(macro, '-22', 24, '-46'); -test(macro, '22', -24, '46'); -test(macro, '-22', -24, '2'); -test(macro, '22', 27, '-5'); -test(macro, '-22', 27, '-49'); -test(macro, '22', -27, '49'); -test(macro, '-22', -27, '5'); -test(macro, '22', 29, '-7'); -test(macro, '-22', 29, '-51'); -test(macro, '22', -29, '51'); -test(macro, '-22', -29, '7'); -test(macro, '22', 1234, '-1212'); -test(macro, '-22', 1234, '-1256'); -test(macro, '22', -1234, '1256'); -test(macro, '-22', -1234, '1212'); -test(macro, '22', 5678, '-5656'); -test(macro, '-22', 5678, '-5700'); -test(macro, '22', -5678, '5700'); -test(macro, '-22', -5678, '5656'); -test(macro, '22', 94906265, '-94906243'); -test(macro, '-22', 94906265, '-94906287'); -test(macro, '22', -94906265, '94906287'); -test(macro, '-22', -94906265, '94906243'); -test(macro, '22', 94906266, '-94906244'); -test(macro, '-22', 94906266, '-94906288'); -test(macro, '22', -94906266, '94906288'); -test(macro, '-22', -94906266, '94906244'); -test(macro, '22', 1073741824, '-1073741802'); -test(macro, '-22', 1073741824, '-1073741846'); -test(macro, '22', -1073741824, '1073741846'); -test(macro, '-22', -1073741824, '1073741802'); -test(macro, '22', 51676101935731, '-51676101935709'); -test(macro, '-22', 51676101935731, '-51676101935753'); -test(macro, '22', -51676101935731, '51676101935753'); -test(macro, '-22', -51676101935731, '51676101935709'); -test(macro, '24', 0, '24'); -test(macro, '-24', 0, '-24'); -test(macro, '24', 1, '23'); -test(macro, '-24', 1, '-25'); -test(macro, '24', -1, '25'); -test(macro, '-24', -1, '-23'); -test(macro, '24', 3, '21'); -test(macro, '-24', 3, '-27'); -test(macro, '24', -3, '27'); -test(macro, '-24', -3, '-21'); -test(macro, '24', 7, '17'); -test(macro, '-24', 7, '-31'); -test(macro, '24', -7, '31'); -test(macro, '-24', -7, '-17'); -test(macro, '24', 9, '15'); -test(macro, '-24', 9, '-33'); -test(macro, '24', -9, '33'); -test(macro, '-24', -9, '-15'); -test(macro, '24', 11, '13'); -test(macro, '-24', 11, '-35'); -test(macro, '24', -11, '35'); -test(macro, '-24', -11, '-13'); -test(macro, '24', 17, '7'); -test(macro, '-24', 17, '-41'); -test(macro, '24', -17, '41'); -test(macro, '-24', -17, '-7'); -test(macro, '24', 22, '2'); -test(macro, '-24', 22, '-46'); -test(macro, '24', -22, '46'); -test(macro, '-24', -22, '-2'); -test(macro, '24', 24, '0'); -test(macro, '-24', 24, '-48'); -test(macro, '24', -24, '48'); -test(macro, '-24', -24, '0'); -test(macro, '24', 27, '-3'); -test(macro, '-24', 27, '-51'); -test(macro, '24', -27, '51'); -test(macro, '-24', -27, '3'); -test(macro, '24', 29, '-5'); -test(macro, '-24', 29, '-53'); -test(macro, '24', -29, '53'); -test(macro, '-24', -29, '5'); -test(macro, '24', 1234, '-1210'); -test(macro, '-24', 1234, '-1258'); -test(macro, '24', -1234, '1258'); -test(macro, '-24', -1234, '1210'); -test(macro, '24', 5678, '-5654'); -test(macro, '-24', 5678, '-5702'); -test(macro, '24', -5678, '5702'); -test(macro, '-24', -5678, '5654'); -test(macro, '24', 94906265, '-94906241'); -test(macro, '-24', 94906265, '-94906289'); -test(macro, '24', -94906265, '94906289'); -test(macro, '-24', -94906265, '94906241'); -test(macro, '24', 94906266, '-94906242'); -test(macro, '-24', 94906266, '-94906290'); -test(macro, '24', -94906266, '94906290'); -test(macro, '-24', -94906266, '94906242'); -test(macro, '24', 1073741824, '-1073741800'); -test(macro, '-24', 1073741824, '-1073741848'); -test(macro, '24', -1073741824, '1073741848'); -test(macro, '-24', -1073741824, '1073741800'); -test(macro, '24', 51676101935731, '-51676101935707'); -test(macro, '-24', 51676101935731, '-51676101935755'); -test(macro, '24', -51676101935731, '51676101935755'); -test(macro, '-24', -51676101935731, '51676101935707'); -test(macro, '27', 0, '27'); -test(macro, '-27', 0, '-27'); -test(macro, '27', 1, '26'); -test(macro, '-27', 1, '-28'); -test(macro, '27', -1, '28'); -test(macro, '-27', -1, '-26'); -test(macro, '27', 3, '24'); -test(macro, '-27', 3, '-30'); -test(macro, '27', -3, '30'); -test(macro, '-27', -3, '-24'); -test(macro, '27', 7, '20'); -test(macro, '-27', 7, '-34'); -test(macro, '27', -7, '34'); -test(macro, '-27', -7, '-20'); -test(macro, '27', 9, '18'); -test(macro, '-27', 9, '-36'); -test(macro, '27', -9, '36'); -test(macro, '-27', -9, '-18'); -test(macro, '27', 11, '16'); -test(macro, '-27', 11, '-38'); -test(macro, '27', -11, '38'); -test(macro, '-27', -11, '-16'); -test(macro, '27', 17, '10'); -test(macro, '-27', 17, '-44'); -test(macro, '27', -17, '44'); -test(macro, '-27', -17, '-10'); -test(macro, '27', 22, '5'); -test(macro, '-27', 22, '-49'); -test(macro, '27', -22, '49'); -test(macro, '-27', -22, '-5'); -test(macro, '27', 24, '3'); -test(macro, '-27', 24, '-51'); -test(macro, '27', -24, '51'); -test(macro, '-27', -24, '-3'); -test(macro, '27', 27, '0'); -test(macro, '-27', 27, '-54'); -test(macro, '27', -27, '54'); -test(macro, '-27', -27, '0'); -test(macro, '27', 29, '-2'); -test(macro, '-27', 29, '-56'); -test(macro, '27', -29, '56'); -test(macro, '-27', -29, '2'); -test(macro, '27', 1234, '-1207'); -test(macro, '-27', 1234, '-1261'); -test(macro, '27', -1234, '1261'); -test(macro, '-27', -1234, '1207'); -test(macro, '27', 5678, '-5651'); -test(macro, '-27', 5678, '-5705'); -test(macro, '27', -5678, '5705'); -test(macro, '-27', -5678, '5651'); -test(macro, '27', 94906265, '-94906238'); -test(macro, '-27', 94906265, '-94906292'); -test(macro, '27', -94906265, '94906292'); -test(macro, '-27', -94906265, '94906238'); -test(macro, '27', 94906266, '-94906239'); -test(macro, '-27', 94906266, '-94906293'); -test(macro, '27', -94906266, '94906293'); -test(macro, '-27', -94906266, '94906239'); -test(macro, '27', 1073741824, '-1073741797'); -test(macro, '-27', 1073741824, '-1073741851'); -test(macro, '27', -1073741824, '1073741851'); -test(macro, '-27', -1073741824, '1073741797'); -test(macro, '27', 51676101935731, '-51676101935704'); -test(macro, '-27', 51676101935731, '-51676101935758'); -test(macro, '27', -51676101935731, '51676101935758'); -test(macro, '-27', -51676101935731, '51676101935704'); -test(macro, '29', 0, '29'); -test(macro, '-29', 0, '-29'); -test(macro, '29', 1, '28'); -test(macro, '-29', 1, '-30'); -test(macro, '29', -1, '30'); -test(macro, '-29', -1, '-28'); -test(macro, '29', 3, '26'); -test(macro, '-29', 3, '-32'); -test(macro, '29', -3, '32'); -test(macro, '-29', -3, '-26'); -test(macro, '29', 7, '22'); -test(macro, '-29', 7, '-36'); -test(macro, '29', -7, '36'); -test(macro, '-29', -7, '-22'); -test(macro, '29', 9, '20'); -test(macro, '-29', 9, '-38'); -test(macro, '29', -9, '38'); -test(macro, '-29', -9, '-20'); -test(macro, '29', 11, '18'); -test(macro, '-29', 11, '-40'); -test(macro, '29', -11, '40'); -test(macro, '-29', -11, '-18'); -test(macro, '29', 17, '12'); -test(macro, '-29', 17, '-46'); -test(macro, '29', -17, '46'); -test(macro, '-29', -17, '-12'); -test(macro, '29', 22, '7'); -test(macro, '-29', 22, '-51'); -test(macro, '29', -22, '51'); -test(macro, '-29', -22, '-7'); -test(macro, '29', 24, '5'); -test(macro, '-29', 24, '-53'); -test(macro, '29', -24, '53'); -test(macro, '-29', -24, '-5'); -test(macro, '29', 27, '2'); -test(macro, '-29', 27, '-56'); -test(macro, '29', -27, '56'); -test(macro, '-29', -27, '-2'); -test(macro, '29', 29, '0'); -test(macro, '-29', 29, '-58'); -test(macro, '29', -29, '58'); -test(macro, '-29', -29, '0'); -test(macro, '29', 1234, '-1205'); -test(macro, '-29', 1234, '-1263'); -test(macro, '29', -1234, '1263'); -test(macro, '-29', -1234, '1205'); -test(macro, '29', 5678, '-5649'); -test(macro, '-29', 5678, '-5707'); -test(macro, '29', -5678, '5707'); -test(macro, '-29', -5678, '5649'); -test(macro, '29', 94906265, '-94906236'); -test(macro, '-29', 94906265, '-94906294'); -test(macro, '29', -94906265, '94906294'); -test(macro, '-29', -94906265, '94906236'); -test(macro, '29', 94906266, '-94906237'); -test(macro, '-29', 94906266, '-94906295'); -test(macro, '29', -94906266, '94906295'); -test(macro, '-29', -94906266, '94906237'); -test(macro, '29', 1073741824, '-1073741795'); -test(macro, '-29', 1073741824, '-1073741853'); -test(macro, '29', -1073741824, '1073741853'); -test(macro, '-29', -1073741824, '1073741795'); -test(macro, '29', 51676101935731, '-51676101935702'); -test(macro, '-29', 51676101935731, '-51676101935760'); -test(macro, '29', -51676101935731, '51676101935760'); -test(macro, '-29', -51676101935731, '51676101935702'); -test(macro, '1234', 0, '1234'); -test(macro, '-1234', 0, '-1234'); -test(macro, '1234', 1, '1233'); -test(macro, '-1234', 1, '-1235'); -test(macro, '1234', -1, '1235'); -test(macro, '-1234', -1, '-1233'); -test(macro, '1234', 3, '1231'); -test(macro, '-1234', 3, '-1237'); -test(macro, '1234', -3, '1237'); -test(macro, '-1234', -3, '-1231'); -test(macro, '1234', 7, '1227'); -test(macro, '-1234', 7, '-1241'); -test(macro, '1234', -7, '1241'); -test(macro, '-1234', -7, '-1227'); -test(macro, '1234', 9, '1225'); -test(macro, '-1234', 9, '-1243'); -test(macro, '1234', -9, '1243'); -test(macro, '-1234', -9, '-1225'); -test(macro, '1234', 11, '1223'); -test(macro, '-1234', 11, '-1245'); -test(macro, '1234', -11, '1245'); -test(macro, '-1234', -11, '-1223'); -test(macro, '1234', 17, '1217'); -test(macro, '-1234', 17, '-1251'); -test(macro, '1234', -17, '1251'); -test(macro, '-1234', -17, '-1217'); -test(macro, '1234', 22, '1212'); -test(macro, '-1234', 22, '-1256'); -test(macro, '1234', -22, '1256'); -test(macro, '-1234', -22, '-1212'); -test(macro, '1234', 24, '1210'); -test(macro, '-1234', 24, '-1258'); -test(macro, '1234', -24, '1258'); -test(macro, '-1234', -24, '-1210'); -test(macro, '1234', 27, '1207'); -test(macro, '-1234', 27, '-1261'); -test(macro, '1234', -27, '1261'); -test(macro, '-1234', -27, '-1207'); -test(macro, '1234', 29, '1205'); -test(macro, '-1234', 29, '-1263'); -test(macro, '1234', -29, '1263'); -test(macro, '-1234', -29, '-1205'); -test(macro, '1234', 1234, '0'); -test(macro, '-1234', 1234, '-2468'); -test(macro, '1234', -1234, '2468'); -test(macro, '-1234', -1234, '0'); -test(macro, '1234', 5678, '-4444'); -test(macro, '-1234', 5678, '-6912'); -test(macro, '1234', -5678, '6912'); -test(macro, '-1234', -5678, '4444'); -test(macro, '1234', 94906265, '-94905031'); -test(macro, '-1234', 94906265, '-94907499'); -test(macro, '1234', -94906265, '94907499'); -test(macro, '-1234', -94906265, '94905031'); -test(macro, '1234', 94906266, '-94905032'); -test(macro, '-1234', 94906266, '-94907500'); -test(macro, '1234', -94906266, '94907500'); -test(macro, '-1234', -94906266, '94905032'); -test(macro, '1234', 1073741824, '-1073740590'); -test(macro, '-1234', 1073741824, '-1073743058'); -test(macro, '1234', -1073741824, '1073743058'); -test(macro, '-1234', -1073741824, '1073740590'); -test(macro, '1234', 51676101935731, '-51676101934497'); -test(macro, '-1234', 51676101935731, '-51676101936965'); -test(macro, '1234', -51676101935731, '51676101936965'); -test(macro, '-1234', -51676101935731, '51676101934497'); -test(macro, '5678', 0, '5678'); -test(macro, '-5678', 0, '-5678'); -test(macro, '5678', 1, '5677'); -test(macro, '-5678', 1, '-5679'); -test(macro, '5678', -1, '5679'); -test(macro, '-5678', -1, '-5677'); -test(macro, '5678', 3, '5675'); -test(macro, '-5678', 3, '-5681'); -test(macro, '5678', -3, '5681'); -test(macro, '-5678', -3, '-5675'); -test(macro, '5678', 7, '5671'); -test(macro, '-5678', 7, '-5685'); -test(macro, '5678', -7, '5685'); -test(macro, '-5678', -7, '-5671'); -test(macro, '5678', 9, '5669'); -test(macro, '-5678', 9, '-5687'); -test(macro, '5678', -9, '5687'); -test(macro, '-5678', -9, '-5669'); -test(macro, '5678', 11, '5667'); -test(macro, '-5678', 11, '-5689'); -test(macro, '5678', -11, '5689'); -test(macro, '-5678', -11, '-5667'); -test(macro, '5678', 17, '5661'); -test(macro, '-5678', 17, '-5695'); -test(macro, '5678', -17, '5695'); -test(macro, '-5678', -17, '-5661'); -test(macro, '5678', 22, '5656'); -test(macro, '-5678', 22, '-5700'); -test(macro, '5678', -22, '5700'); -test(macro, '-5678', -22, '-5656'); -test(macro, '5678', 24, '5654'); -test(macro, '-5678', 24, '-5702'); -test(macro, '5678', -24, '5702'); -test(macro, '-5678', -24, '-5654'); -test(macro, '5678', 27, '5651'); -test(macro, '-5678', 27, '-5705'); -test(macro, '5678', -27, '5705'); -test(macro, '-5678', -27, '-5651'); -test(macro, '5678', 29, '5649'); -test(macro, '-5678', 29, '-5707'); -test(macro, '5678', -29, '5707'); -test(macro, '-5678', -29, '-5649'); -test(macro, '5678', 1234, '4444'); -test(macro, '-5678', 1234, '-6912'); -test(macro, '5678', -1234, '6912'); -test(macro, '-5678', -1234, '-4444'); -test(macro, '5678', 5678, '0'); -test(macro, '-5678', 5678, '-11356'); -test(macro, '5678', -5678, '11356'); -test(macro, '-5678', -5678, '0'); -test(macro, '5678', 94906265, '-94900587'); -test(macro, '-5678', 94906265, '-94911943'); -test(macro, '5678', -94906265, '94911943'); -test(macro, '-5678', -94906265, '94900587'); -test(macro, '5678', 94906266, '-94900588'); -test(macro, '-5678', 94906266, '-94911944'); -test(macro, '5678', -94906266, '94911944'); -test(macro, '-5678', -94906266, '94900588'); -test(macro, '5678', 1073741824, '-1073736146'); -test(macro, '-5678', 1073741824, '-1073747502'); -test(macro, '5678', -1073741824, '1073747502'); -test(macro, '-5678', -1073741824, '1073736146'); -test(macro, '5678', 51676101935731, '-51676101930053'); -test(macro, '-5678', 51676101935731, '-51676101941409'); -test(macro, '5678', -51676101935731, '51676101941409'); -test(macro, '-5678', -51676101935731, '51676101930053'); -test(macro, '94906265', 0, '94906265'); -test(macro, '-94906265', 0, '-94906265'); -test(macro, '94906265', 1, '94906264'); -test(macro, '-94906265', 1, '-94906266'); -test(macro, '94906265', -1, '94906266'); -test(macro, '-94906265', -1, '-94906264'); -test(macro, '94906265', 3, '94906262'); -test(macro, '-94906265', 3, '-94906268'); -test(macro, '94906265', -3, '94906268'); -test(macro, '-94906265', -3, '-94906262'); -test(macro, '94906265', 7, '94906258'); -test(macro, '-94906265', 7, '-94906272'); -test(macro, '94906265', -7, '94906272'); -test(macro, '-94906265', -7, '-94906258'); -test(macro, '94906265', 9, '94906256'); -test(macro, '-94906265', 9, '-94906274'); -test(macro, '94906265', -9, '94906274'); -test(macro, '-94906265', -9, '-94906256'); -test(macro, '94906265', 11, '94906254'); -test(macro, '-94906265', 11, '-94906276'); -test(macro, '94906265', -11, '94906276'); -test(macro, '-94906265', -11, '-94906254'); -test(macro, '94906265', 17, '94906248'); -test(macro, '-94906265', 17, '-94906282'); -test(macro, '94906265', -17, '94906282'); -test(macro, '-94906265', -17, '-94906248'); -test(macro, '94906265', 22, '94906243'); -test(macro, '-94906265', 22, '-94906287'); -test(macro, '94906265', -22, '94906287'); -test(macro, '-94906265', -22, '-94906243'); -test(macro, '94906265', 24, '94906241'); -test(macro, '-94906265', 24, '-94906289'); -test(macro, '94906265', -24, '94906289'); -test(macro, '-94906265', -24, '-94906241'); -test(macro, '94906265', 27, '94906238'); -test(macro, '-94906265', 27, '-94906292'); -test(macro, '94906265', -27, '94906292'); -test(macro, '-94906265', -27, '-94906238'); -test(macro, '94906265', 29, '94906236'); -test(macro, '-94906265', 29, '-94906294'); -test(macro, '94906265', -29, '94906294'); -test(macro, '-94906265', -29, '-94906236'); -test(macro, '94906265', 1234, '94905031'); -test(macro, '-94906265', 1234, '-94907499'); -test(macro, '94906265', -1234, '94907499'); -test(macro, '-94906265', -1234, '-94905031'); -test(macro, '94906265', 5678, '94900587'); -test(macro, '-94906265', 5678, '-94911943'); -test(macro, '94906265', -5678, '94911943'); -test(macro, '-94906265', -5678, '-94900587'); -test(macro, '94906265', 94906265, '0'); -test(macro, '-94906265', 94906265, '-189812530'); -test(macro, '94906265', -94906265, '189812530'); -test(macro, '-94906265', -94906265, '0'); -test(macro, '94906265', 94906266, '-1'); -test(macro, '-94906265', 94906266, '-189812531'); -test(macro, '94906265', -94906266, '189812531'); -test(macro, '-94906265', -94906266, '1'); -test(macro, '94906265', 1073741824, '-978835559'); -test(macro, '-94906265', 1073741824, '-1168648089'); -test(macro, '94906265', -1073741824, '1168648089'); -test(macro, '-94906265', -1073741824, '978835559'); -test(macro, '94906265', 51676101935731, '-51676007029466'); -test(macro, '-94906265', 51676101935731, '-51676196841996'); -test(macro, '94906265', -51676101935731, '51676196841996'); -test(macro, '-94906265', -51676101935731, '51676007029466'); -test(macro, '94906266', 0, '94906266'); -test(macro, '-94906266', 0, '-94906266'); -test(macro, '94906266', 1, '94906265'); -test(macro, '-94906266', 1, '-94906267'); -test(macro, '94906266', -1, '94906267'); -test(macro, '-94906266', -1, '-94906265'); -test(macro, '94906266', 3, '94906263'); -test(macro, '-94906266', 3, '-94906269'); -test(macro, '94906266', -3, '94906269'); -test(macro, '-94906266', -3, '-94906263'); -test(macro, '94906266', 7, '94906259'); -test(macro, '-94906266', 7, '-94906273'); -test(macro, '94906266', -7, '94906273'); -test(macro, '-94906266', -7, '-94906259'); -test(macro, '94906266', 9, '94906257'); -test(macro, '-94906266', 9, '-94906275'); -test(macro, '94906266', -9, '94906275'); -test(macro, '-94906266', -9, '-94906257'); -test(macro, '94906266', 11, '94906255'); -test(macro, '-94906266', 11, '-94906277'); -test(macro, '94906266', -11, '94906277'); -test(macro, '-94906266', -11, '-94906255'); -test(macro, '94906266', 17, '94906249'); -test(macro, '-94906266', 17, '-94906283'); -test(macro, '94906266', -17, '94906283'); -test(macro, '-94906266', -17, '-94906249'); -test(macro, '94906266', 22, '94906244'); -test(macro, '-94906266', 22, '-94906288'); -test(macro, '94906266', -22, '94906288'); -test(macro, '-94906266', -22, '-94906244'); -test(macro, '94906266', 24, '94906242'); -test(macro, '-94906266', 24, '-94906290'); -test(macro, '94906266', -24, '94906290'); -test(macro, '-94906266', -24, '-94906242'); -test(macro, '94906266', 27, '94906239'); -test(macro, '-94906266', 27, '-94906293'); -test(macro, '94906266', -27, '94906293'); -test(macro, '-94906266', -27, '-94906239'); -test(macro, '94906266', 29, '94906237'); -test(macro, '-94906266', 29, '-94906295'); -test(macro, '94906266', -29, '94906295'); -test(macro, '-94906266', -29, '-94906237'); -test(macro, '94906266', 1234, '94905032'); -test(macro, '-94906266', 1234, '-94907500'); -test(macro, '94906266', -1234, '94907500'); -test(macro, '-94906266', -1234, '-94905032'); -test(macro, '94906266', 5678, '94900588'); -test(macro, '-94906266', 5678, '-94911944'); -test(macro, '94906266', -5678, '94911944'); -test(macro, '-94906266', -5678, '-94900588'); -test(macro, '94906266', 94906265, '1'); -test(macro, '-94906266', 94906265, '-189812531'); -test(macro, '94906266', -94906265, '189812531'); -test(macro, '-94906266', -94906265, '-1'); -test(macro, '94906266', 94906266, '0'); -test(macro, '-94906266', 94906266, '-189812532'); -test(macro, '94906266', -94906266, '189812532'); -test(macro, '-94906266', -94906266, '0'); -test(macro, '94906266', 1073741824, '-978835558'); -test(macro, '-94906266', 1073741824, '-1168648090'); -test(macro, '94906266', -1073741824, '1168648090'); -test(macro, '-94906266', -1073741824, '978835558'); -test(macro, '94906266', 51676101935731, '-51676007029465'); -test(macro, '-94906266', 51676101935731, '-51676196841997'); -test(macro, '94906266', -51676101935731, '51676196841997'); -test(macro, '-94906266', -51676101935731, '51676007029465'); -test(macro, '1073741824', 0, '1073741824'); -test(macro, '-1073741824', 0, '-1073741824'); -test(macro, '1073741824', 1, '1073741823'); -test(macro, '-1073741824', 1, '-1073741825'); -test(macro, '1073741824', -1, '1073741825'); -test(macro, '-1073741824', -1, '-1073741823'); -test(macro, '1073741824', 3, '1073741821'); -test(macro, '-1073741824', 3, '-1073741827'); -test(macro, '1073741824', -3, '1073741827'); -test(macro, '-1073741824', -3, '-1073741821'); -test(macro, '1073741824', 7, '1073741817'); -test(macro, '-1073741824', 7, '-1073741831'); -test(macro, '1073741824', -7, '1073741831'); -test(macro, '-1073741824', -7, '-1073741817'); -test(macro, '1073741824', 9, '1073741815'); -test(macro, '-1073741824', 9, '-1073741833'); -test(macro, '1073741824', -9, '1073741833'); -test(macro, '-1073741824', -9, '-1073741815'); -test(macro, '1073741824', 11, '1073741813'); -test(macro, '-1073741824', 11, '-1073741835'); -test(macro, '1073741824', -11, '1073741835'); -test(macro, '-1073741824', -11, '-1073741813'); -test(macro, '1073741824', 17, '1073741807'); -test(macro, '-1073741824', 17, '-1073741841'); -test(macro, '1073741824', -17, '1073741841'); -test(macro, '-1073741824', -17, '-1073741807'); -test(macro, '1073741824', 22, '1073741802'); -test(macro, '-1073741824', 22, '-1073741846'); -test(macro, '1073741824', -22, '1073741846'); -test(macro, '-1073741824', -22, '-1073741802'); -test(macro, '1073741824', 24, '1073741800'); -test(macro, '-1073741824', 24, '-1073741848'); -test(macro, '1073741824', -24, '1073741848'); -test(macro, '-1073741824', -24, '-1073741800'); -test(macro, '1073741824', 27, '1073741797'); -test(macro, '-1073741824', 27, '-1073741851'); -test(macro, '1073741824', -27, '1073741851'); -test(macro, '-1073741824', -27, '-1073741797'); -test(macro, '1073741824', 29, '1073741795'); -test(macro, '-1073741824', 29, '-1073741853'); -test(macro, '1073741824', -29, '1073741853'); -test(macro, '-1073741824', -29, '-1073741795'); -test(macro, '1073741824', 1234, '1073740590'); -test(macro, '-1073741824', 1234, '-1073743058'); -test(macro, '1073741824', -1234, '1073743058'); -test(macro, '-1073741824', -1234, '-1073740590'); -test(macro, '1073741824', 5678, '1073736146'); -test(macro, '-1073741824', 5678, '-1073747502'); -test(macro, '1073741824', -5678, '1073747502'); -test(macro, '-1073741824', -5678, '-1073736146'); -test(macro, '1073741824', 94906265, '978835559'); -test(macro, '-1073741824', 94906265, '-1168648089'); -test(macro, '1073741824', -94906265, '1168648089'); -test(macro, '-1073741824', -94906265, '-978835559'); -test(macro, '1073741824', 94906266, '978835558'); -test(macro, '-1073741824', 94906266, '-1168648090'); -test(macro, '1073741824', -94906266, '1168648090'); -test(macro, '-1073741824', -94906266, '-978835558'); -test(macro, '1073741824', 1073741824, '0'); -test(macro, '-1073741824', 1073741824, '-2147483648'); -test(macro, '1073741824', -1073741824, '2147483648'); -test(macro, '-1073741824', -1073741824, '0'); -test(macro, '1073741824', 51676101935731, '-51675028193907'); -test(macro, '-1073741824', 51676101935731, '-51677175677555'); -test(macro, '1073741824', -51676101935731, '51677175677555'); -test(macro, '-1073741824', -51676101935731, '51675028193907'); -test(macro, '51676101935731', 0, '51676101935731'); -test(macro, '-51676101935731', 0, '-51676101935731'); -test(macro, '51676101935731', 1, '51676101935730'); -test(macro, '-51676101935731', 1, '-51676101935732'); -test(macro, '51676101935731', -1, '51676101935732'); -test(macro, '-51676101935731', -1, '-51676101935730'); -test(macro, '51676101935731', 3, '51676101935728'); -test(macro, '-51676101935731', 3, '-51676101935734'); -test(macro, '51676101935731', -3, '51676101935734'); -test(macro, '-51676101935731', -3, '-51676101935728'); -test(macro, '51676101935731', 7, '51676101935724'); -test(macro, '-51676101935731', 7, '-51676101935738'); -test(macro, '51676101935731', -7, '51676101935738'); -test(macro, '-51676101935731', -7, '-51676101935724'); -test(macro, '51676101935731', 9, '51676101935722'); -test(macro, '-51676101935731', 9, '-51676101935740'); -test(macro, '51676101935731', -9, '51676101935740'); -test(macro, '-51676101935731', -9, '-51676101935722'); -test(macro, '51676101935731', 11, '51676101935720'); -test(macro, '-51676101935731', 11, '-51676101935742'); -test(macro, '51676101935731', -11, '51676101935742'); -test(macro, '-51676101935731', -11, '-51676101935720'); -test(macro, '51676101935731', 17, '51676101935714'); -test(macro, '-51676101935731', 17, '-51676101935748'); -test(macro, '51676101935731', -17, '51676101935748'); -test(macro, '-51676101935731', -17, '-51676101935714'); -test(macro, '51676101935731', 22, '51676101935709'); -test(macro, '-51676101935731', 22, '-51676101935753'); -test(macro, '51676101935731', -22, '51676101935753'); -test(macro, '-51676101935731', -22, '-51676101935709'); -test(macro, '51676101935731', 24, '51676101935707'); -test(macro, '-51676101935731', 24, '-51676101935755'); -test(macro, '51676101935731', -24, '51676101935755'); -test(macro, '-51676101935731', -24, '-51676101935707'); -test(macro, '51676101935731', 27, '51676101935704'); -test(macro, '-51676101935731', 27, '-51676101935758'); -test(macro, '51676101935731', -27, '51676101935758'); -test(macro, '-51676101935731', -27, '-51676101935704'); -test(macro, '51676101935731', 29, '51676101935702'); -test(macro, '-51676101935731', 29, '-51676101935760'); -test(macro, '51676101935731', -29, '51676101935760'); -test(macro, '-51676101935731', -29, '-51676101935702'); -test(macro, '51676101935731', 1234, '51676101934497'); -test(macro, '-51676101935731', 1234, '-51676101936965'); -test(macro, '51676101935731', -1234, '51676101936965'); -test(macro, '-51676101935731', -1234, '-51676101934497'); -test(macro, '51676101935731', 5678, '51676101930053'); -test(macro, '-51676101935731', 5678, '-51676101941409'); -test(macro, '51676101935731', -5678, '51676101941409'); -test(macro, '-51676101935731', -5678, '-51676101930053'); -test(macro, '51676101935731', 94906265, '51676007029466'); -test(macro, '-51676101935731', 94906265, '-51676196841996'); -test(macro, '51676101935731', -94906265, '51676196841996'); -test(macro, '-51676101935731', -94906265, '-51676007029466'); -test(macro, '51676101935731', 94906266, '51676007029465'); -test(macro, '-51676101935731', 94906266, '-51676196841997'); -test(macro, '51676101935731', -94906266, '51676196841997'); -test(macro, '-51676101935731', -94906266, '-51676007029465'); -test(macro, '51676101935731', 1073741824, '51675028193907'); -test(macro, '-51676101935731', 1073741824, '-51677175677555'); -test(macro, '51676101935731', -1073741824, '51677175677555'); -test(macro, '-51676101935731', -1073741824, '-51675028193907'); -test(macro, '51676101935731', 51676101935731, '0'); -test(macro, '-51676101935731', 51676101935731, '-103352203871462'); -test(macro, '51676101935731', -51676101935731, '103352203871462'); -test(macro, '-51676101935731', -51676101935731, '0'); -test(macro, '717897987691852588770249', 0, '717897987691852588770249'); -test(macro, '-717897987691852588770249', 0, '-717897987691852588770249'); -test(macro, '717897987691852588770249', 1, '717897987691852588770248'); -test(macro, '-717897987691852588770249', 1, '-717897987691852588770250'); -test(macro, '717897987691852588770249', -1, '717897987691852588770250'); -test(macro, '-717897987691852588770249', -1, '-717897987691852588770248'); -test(macro, '717897987691852588770249', 3, '717897987691852588770246'); -test(macro, '-717897987691852588770249', 3, '-717897987691852588770252'); -test(macro, '717897987691852588770249', -3, '717897987691852588770252'); -test(macro, '-717897987691852588770249', -3, '-717897987691852588770246'); -test(macro, '717897987691852588770249', 7, '717897987691852588770242'); -test(macro, '-717897987691852588770249', 7, '-717897987691852588770256'); -test(macro, '717897987691852588770249', -7, '717897987691852588770256'); -test(macro, '-717897987691852588770249', -7, '-717897987691852588770242'); -test(macro, '717897987691852588770249', 9, '717897987691852588770240'); -test(macro, '-717897987691852588770249', 9, '-717897987691852588770258'); -test(macro, '717897987691852588770249', -9, '717897987691852588770258'); -test(macro, '-717897987691852588770249', -9, '-717897987691852588770240'); -test(macro, '717897987691852588770249', 11, '717897987691852588770238'); -test(macro, '-717897987691852588770249', 11, '-717897987691852588770260'); -test(macro, '717897987691852588770249', -11, '717897987691852588770260'); -test(macro, '-717897987691852588770249', -11, '-717897987691852588770238'); -test(macro, '717897987691852588770249', 17, '717897987691852588770232'); -test(macro, '-717897987691852588770249', 17, '-717897987691852588770266'); -test(macro, '717897987691852588770249', -17, '717897987691852588770266'); -test(macro, '-717897987691852588770249', -17, '-717897987691852588770232'); -test(macro, '717897987691852588770249', 22, '717897987691852588770227'); -test(macro, '-717897987691852588770249', 22, '-717897987691852588770271'); -test(macro, '717897987691852588770249', -22, '717897987691852588770271'); -test(macro, '-717897987691852588770249', -22, '-717897987691852588770227'); -test(macro, '717897987691852588770249', 24, '717897987691852588770225'); -test(macro, '-717897987691852588770249', 24, '-717897987691852588770273'); -test(macro, '717897987691852588770249', -24, '717897987691852588770273'); -test(macro, '-717897987691852588770249', -24, '-717897987691852588770225'); -test(macro, '717897987691852588770249', 27, '717897987691852588770222'); -test(macro, '-717897987691852588770249', 27, '-717897987691852588770276'); -test(macro, '717897987691852588770249', -27, '717897987691852588770276'); -test(macro, '-717897987691852588770249', -27, '-717897987691852588770222'); -test(macro, '717897987691852588770249', 29, '717897987691852588770220'); -test(macro, '-717897987691852588770249', 29, '-717897987691852588770278'); -test(macro, '717897987691852588770249', -29, '717897987691852588770278'); -test(macro, '-717897987691852588770249', -29, '-717897987691852588770220'); -test(macro, '717897987691852588770249', 1234, '717897987691852588769015'); -test(macro, '-717897987691852588770249', 1234, '-717897987691852588771483'); -test(macro, '717897987691852588770249', -1234, '717897987691852588771483'); -test(macro, '-717897987691852588770249', -1234, '-717897987691852588769015'); -test(macro, '717897987691852588770249', 5678, '717897987691852588764571'); -test(macro, '-717897987691852588770249', 5678, '-717897987691852588775927'); -test(macro, '717897987691852588770249', -5678, '717897987691852588775927'); -test(macro, '-717897987691852588770249', -5678, '-717897987691852588764571'); -test(macro, '717897987691852588770249', 94906265, '717897987691852493863984'); -test(macro, '-717897987691852588770249', 94906265, '-717897987691852683676514'); -test(macro, '717897987691852588770249', -94906265, '717897987691852683676514'); -test( - macro, - '-717897987691852588770249', - -94906265, - '-717897987691852493863984', -); -test(macro, '717897987691852588770249', 94906266, '717897987691852493863983'); -test(macro, '-717897987691852588770249', 94906266, '-717897987691852683676515'); -test(macro, '717897987691852588770249', -94906266, '717897987691852683676515'); -test( - macro, - '-717897987691852588770249', - -94906266, - '-717897987691852493863983', -); -test(macro, '717897987691852588770249', 1073741824, '717897987691851515028425'); -test( - macro, - '-717897987691852588770249', - 1073741824, - '-717897987691853662512073', -); -test( - macro, - '717897987691852588770249', - -1073741824, - '717897987691853662512073', -); -test( - macro, - '-717897987691852588770249', - -1073741824, - '-717897987691851515028425', -); -test( - macro, - '717897987691852588770249', - 51676101935731, - '717897987640176486834518', -); -test( - macro, - '-717897987691852588770249', - 51676101935731, - '-717897987743528690705980', -); -test( - macro, - '717897987691852588770249', - -51676101935731, - '717897987743528690705980', -); -test( - macro, - '-717897987691852588770249', - -51676101935731, - '-717897987640176486834518', -); diff --git a/test/src/integer/arithmetic/mod.js b/test/src/integer/arithmetic/mod.js deleted file mode 100644 index db534d3..0000000 --- a/test/src/integer/arithmetic/mod.js +++ /dev/null @@ -1,1246 +0,0 @@ -import test from 'ava'; -import {parse, stringify, mod} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const b = parse(B); - const c = mod(a, b); - t.is(stringify(a), A); - t.is(stringify(b), B); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `mod(${fmt(A)},${fmt(B)}) = ${fmt(C)}`; - -test(macro, '0', '1', '0'); -test(macro, '0', '-1', '0'); -test(macro, '0', '3', '0'); -test(macro, '0', '-3', '0'); -test(macro, '0', '7', '0'); -test(macro, '0', '-7', '0'); -test(macro, '0', '9', '0'); -test(macro, '0', '-9', '0'); -test(macro, '0', '11', '0'); -test(macro, '0', '-11', '0'); -test(macro, '0', '17', '0'); -test(macro, '0', '-17', '0'); -test(macro, '0', '22', '0'); -test(macro, '0', '-22', '0'); -test(macro, '0', '24', '0'); -test(macro, '0', '-24', '0'); -test(macro, '0', '27', '0'); -test(macro, '0', '-27', '0'); -test(macro, '0', '29', '0'); -test(macro, '0', '-29', '0'); -test(macro, '0', '1234', '0'); -test(macro, '0', '-1234', '0'); -test(macro, '0', '5678', '0'); -test(macro, '0', '-5678', '0'); -test(macro, '0', '94906265', '0'); -test(macro, '0', '-94906265', '0'); -test(macro, '0', '94906266', '0'); -test(macro, '0', '-94906266', '0'); -test(macro, '0', '1073741824', '0'); -test(macro, '0', '-1073741824', '0'); -test(macro, '0', '51676101935731', '0'); -test(macro, '0', '-51676101935731', '0'); -test(macro, '0', '717897987691852588770249', '0'); -test(macro, '0', '-717897987691852588770249', '0'); -test(macro, '1', '1', '0'); -test(macro, '-1', '1', '0'); -test(macro, '1', '-1', '0'); -test(macro, '-1', '-1', '0'); -test(macro, '1', '3', '1'); -test(macro, '-1', '3', '2'); -test(macro, '1', '-3', '-2'); -test(macro, '-1', '-3', '-1'); -test(macro, '1', '7', '1'); -test(macro, '-1', '7', '6'); -test(macro, '1', '-7', '-6'); -test(macro, '-1', '-7', '-1'); -test(macro, '1', '9', '1'); -test(macro, '-1', '9', '8'); -test(macro, '1', '-9', '-8'); -test(macro, '-1', '-9', '-1'); -test(macro, '1', '11', '1'); -test(macro, '-1', '11', '10'); -test(macro, '1', '-11', '-10'); -test(macro, '-1', '-11', '-1'); -test(macro, '1', '17', '1'); -test(macro, '-1', '17', '16'); -test(macro, '1', '-17', '-16'); -test(macro, '-1', '-17', '-1'); -test(macro, '1', '22', '1'); -test(macro, '-1', '22', '21'); -test(macro, '1', '-22', '-21'); -test(macro, '-1', '-22', '-1'); -test(macro, '1', '24', '1'); -test(macro, '-1', '24', '23'); -test(macro, '1', '-24', '-23'); -test(macro, '-1', '-24', '-1'); -test(macro, '1', '27', '1'); -test(macro, '-1', '27', '26'); -test(macro, '1', '-27', '-26'); -test(macro, '-1', '-27', '-1'); -test(macro, '1', '29', '1'); -test(macro, '-1', '29', '28'); -test(macro, '1', '-29', '-28'); -test(macro, '-1', '-29', '-1'); -test(macro, '1', '1234', '1'); -test(macro, '-1', '1234', '1233'); -test(macro, '1', '-1234', '-1233'); -test(macro, '-1', '-1234', '-1'); -test(macro, '1', '5678', '1'); -test(macro, '-1', '5678', '5677'); -test(macro, '1', '-5678', '-5677'); -test(macro, '-1', '-5678', '-1'); -test(macro, '1', '94906265', '1'); -test(macro, '-1', '94906265', '94906264'); -test(macro, '1', '-94906265', '-94906264'); -test(macro, '-1', '-94906265', '-1'); -test(macro, '1', '94906266', '1'); -test(macro, '-1', '94906266', '94906265'); -test(macro, '1', '-94906266', '-94906265'); -test(macro, '-1', '-94906266', '-1'); -test(macro, '1', '1073741824', '1'); -test(macro, '-1', '1073741824', '1073741823'); -test(macro, '1', '-1073741824', '-1073741823'); -test(macro, '-1', '-1073741824', '-1'); -test(macro, '1', '51676101935731', '1'); -test(macro, '-1', '51676101935731', '51676101935730'); -test(macro, '1', '-51676101935731', '-51676101935730'); -test(macro, '-1', '-51676101935731', '-1'); -test(macro, '1', '717897987691852588770249', '1'); -test(macro, '-1', '717897987691852588770249', '717897987691852588770248'); -test(macro, '1', '-717897987691852588770249', '-717897987691852588770248'); -test(macro, '-1', '-717897987691852588770249', '-1'); -test(macro, '3', '1', '0'); -test(macro, '-3', '1', '0'); -test(macro, '3', '-1', '0'); -test(macro, '-3', '-1', '0'); -test(macro, '3', '3', '0'); -test(macro, '-3', '3', '0'); -test(macro, '3', '-3', '0'); -test(macro, '-3', '-3', '0'); -test(macro, '3', '7', '3'); -test(macro, '-3', '7', '4'); -test(macro, '3', '-7', '-4'); -test(macro, '-3', '-7', '-3'); -test(macro, '3', '9', '3'); -test(macro, '-3', '9', '6'); -test(macro, '3', '-9', '-6'); -test(macro, '-3', '-9', '-3'); -test(macro, '3', '11', '3'); -test(macro, '-3', '11', '8'); -test(macro, '3', '-11', '-8'); -test(macro, '-3', '-11', '-3'); -test(macro, '3', '17', '3'); -test(macro, '-3', '17', '14'); -test(macro, '3', '-17', '-14'); -test(macro, '-3', '-17', '-3'); -test(macro, '3', '22', '3'); -test(macro, '-3', '22', '19'); -test(macro, '3', '-22', '-19'); -test(macro, '-3', '-22', '-3'); -test(macro, '3', '24', '3'); -test(macro, '-3', '24', '21'); -test(macro, '3', '-24', '-21'); -test(macro, '-3', '-24', '-3'); -test(macro, '3', '27', '3'); -test(macro, '-3', '27', '24'); -test(macro, '3', '-27', '-24'); -test(macro, '-3', '-27', '-3'); -test(macro, '3', '29', '3'); -test(macro, '-3', '29', '26'); -test(macro, '3', '-29', '-26'); -test(macro, '-3', '-29', '-3'); -test(macro, '3', '1234', '3'); -test(macro, '-3', '1234', '1231'); -test(macro, '3', '-1234', '-1231'); -test(macro, '-3', '-1234', '-3'); -test(macro, '3', '5678', '3'); -test(macro, '-3', '5678', '5675'); -test(macro, '3', '-5678', '-5675'); -test(macro, '-3', '-5678', '-3'); -test(macro, '3', '94906265', '3'); -test(macro, '-3', '94906265', '94906262'); -test(macro, '3', '-94906265', '-94906262'); -test(macro, '-3', '-94906265', '-3'); -test(macro, '3', '94906266', '3'); -test(macro, '-3', '94906266', '94906263'); -test(macro, '3', '-94906266', '-94906263'); -test(macro, '-3', '-94906266', '-3'); -test(macro, '3', '1073741824', '3'); -test(macro, '-3', '1073741824', '1073741821'); -test(macro, '3', '-1073741824', '-1073741821'); -test(macro, '-3', '-1073741824', '-3'); -test(macro, '3', '51676101935731', '3'); -test(macro, '-3', '51676101935731', '51676101935728'); -test(macro, '3', '-51676101935731', '-51676101935728'); -test(macro, '-3', '-51676101935731', '-3'); -test(macro, '3', '717897987691852588770249', '3'); -test(macro, '-3', '717897987691852588770249', '717897987691852588770246'); -test(macro, '3', '-717897987691852588770249', '-717897987691852588770246'); -test(macro, '-3', '-717897987691852588770249', '-3'); -test(macro, '7', '1', '0'); -test(macro, '-7', '1', '0'); -test(macro, '7', '-1', '0'); -test(macro, '-7', '-1', '0'); -test(macro, '7', '3', '1'); -test(macro, '-7', '3', '2'); -test(macro, '7', '-3', '-2'); -test(macro, '-7', '-3', '-1'); -test(macro, '7', '7', '0'); -test(macro, '-7', '7', '0'); -test(macro, '7', '-7', '0'); -test(macro, '-7', '-7', '0'); -test(macro, '7', '9', '7'); -test(macro, '-7', '9', '2'); -test(macro, '7', '-9', '-2'); -test(macro, '-7', '-9', '-7'); -test(macro, '7', '11', '7'); -test(macro, '-7', '11', '4'); -test(macro, '7', '-11', '-4'); -test(macro, '-7', '-11', '-7'); -test(macro, '7', '17', '7'); -test(macro, '-7', '17', '10'); -test(macro, '7', '-17', '-10'); -test(macro, '-7', '-17', '-7'); -test(macro, '7', '22', '7'); -test(macro, '-7', '22', '15'); -test(macro, '7', '-22', '-15'); -test(macro, '-7', '-22', '-7'); -test(macro, '7', '24', '7'); -test(macro, '-7', '24', '17'); -test(macro, '7', '-24', '-17'); -test(macro, '-7', '-24', '-7'); -test(macro, '7', '27', '7'); -test(macro, '-7', '27', '20'); -test(macro, '7', '-27', '-20'); -test(macro, '-7', '-27', '-7'); -test(macro, '7', '29', '7'); -test(macro, '-7', '29', '22'); -test(macro, '7', '-29', '-22'); -test(macro, '-7', '-29', '-7'); -test(macro, '7', '1234', '7'); -test(macro, '-7', '1234', '1227'); -test(macro, '7', '-1234', '-1227'); -test(macro, '-7', '-1234', '-7'); -test(macro, '7', '5678', '7'); -test(macro, '-7', '5678', '5671'); -test(macro, '7', '-5678', '-5671'); -test(macro, '-7', '-5678', '-7'); -test(macro, '7', '94906265', '7'); -test(macro, '-7', '94906265', '94906258'); -test(macro, '7', '-94906265', '-94906258'); -test(macro, '-7', '-94906265', '-7'); -test(macro, '7', '94906266', '7'); -test(macro, '-7', '94906266', '94906259'); -test(macro, '7', '-94906266', '-94906259'); -test(macro, '-7', '-94906266', '-7'); -test(macro, '7', '1073741824', '7'); -test(macro, '-7', '1073741824', '1073741817'); -test(macro, '7', '-1073741824', '-1073741817'); -test(macro, '-7', '-1073741824', '-7'); -test(macro, '7', '51676101935731', '7'); -test(macro, '-7', '51676101935731', '51676101935724'); -test(macro, '7', '-51676101935731', '-51676101935724'); -test(macro, '-7', '-51676101935731', '-7'); -test(macro, '7', '717897987691852588770249', '7'); -test(macro, '-7', '717897987691852588770249', '717897987691852588770242'); -test(macro, '7', '-717897987691852588770249', '-717897987691852588770242'); -test(macro, '-7', '-717897987691852588770249', '-7'); -test(macro, '9', '1', '0'); -test(macro, '-9', '1', '0'); -test(macro, '9', '-1', '0'); -test(macro, '-9', '-1', '0'); -test(macro, '9', '3', '0'); -test(macro, '-9', '3', '0'); -test(macro, '9', '-3', '0'); -test(macro, '-9', '-3', '0'); -test(macro, '9', '7', '2'); -test(macro, '-9', '7', '5'); -test(macro, '9', '-7', '-5'); -test(macro, '-9', '-7', '-2'); -test(macro, '9', '9', '0'); -test(macro, '-9', '9', '0'); -test(macro, '9', '-9', '0'); -test(macro, '-9', '-9', '0'); -test(macro, '9', '11', '9'); -test(macro, '-9', '11', '2'); -test(macro, '9', '-11', '-2'); -test(macro, '-9', '-11', '-9'); -test(macro, '9', '17', '9'); -test(macro, '-9', '17', '8'); -test(macro, '9', '-17', '-8'); -test(macro, '-9', '-17', '-9'); -test(macro, '9', '22', '9'); -test(macro, '-9', '22', '13'); -test(macro, '9', '-22', '-13'); -test(macro, '-9', '-22', '-9'); -test(macro, '9', '24', '9'); -test(macro, '-9', '24', '15'); -test(macro, '9', '-24', '-15'); -test(macro, '-9', '-24', '-9'); -test(macro, '9', '27', '9'); -test(macro, '-9', '27', '18'); -test(macro, '9', '-27', '-18'); -test(macro, '-9', '-27', '-9'); -test(macro, '9', '29', '9'); -test(macro, '-9', '29', '20'); -test(macro, '9', '-29', '-20'); -test(macro, '-9', '-29', '-9'); -test(macro, '9', '1234', '9'); -test(macro, '-9', '1234', '1225'); -test(macro, '9', '-1234', '-1225'); -test(macro, '-9', '-1234', '-9'); -test(macro, '9', '5678', '9'); -test(macro, '-9', '5678', '5669'); -test(macro, '9', '-5678', '-5669'); -test(macro, '-9', '-5678', '-9'); -test(macro, '9', '94906265', '9'); -test(macro, '-9', '94906265', '94906256'); -test(macro, '9', '-94906265', '-94906256'); -test(macro, '-9', '-94906265', '-9'); -test(macro, '9', '94906266', '9'); -test(macro, '-9', '94906266', '94906257'); -test(macro, '9', '-94906266', '-94906257'); -test(macro, '-9', '-94906266', '-9'); -test(macro, '9', '1073741824', '9'); -test(macro, '-9', '1073741824', '1073741815'); -test(macro, '9', '-1073741824', '-1073741815'); -test(macro, '-9', '-1073741824', '-9'); -test(macro, '9', '51676101935731', '9'); -test(macro, '-9', '51676101935731', '51676101935722'); -test(macro, '9', '-51676101935731', '-51676101935722'); -test(macro, '-9', '-51676101935731', '-9'); -test(macro, '9', '717897987691852588770249', '9'); -test(macro, '-9', '717897987691852588770249', '717897987691852588770240'); -test(macro, '9', '-717897987691852588770249', '-717897987691852588770240'); -test(macro, '-9', '-717897987691852588770249', '-9'); -test(macro, '11', '1', '0'); -test(macro, '-11', '1', '0'); -test(macro, '11', '-1', '0'); -test(macro, '-11', '-1', '0'); -test(macro, '11', '3', '2'); -test(macro, '-11', '3', '1'); -test(macro, '11', '-3', '-1'); -test(macro, '-11', '-3', '-2'); -test(macro, '11', '7', '4'); -test(macro, '-11', '7', '3'); -test(macro, '11', '-7', '-3'); -test(macro, '-11', '-7', '-4'); -test(macro, '11', '9', '2'); -test(macro, '-11', '9', '7'); -test(macro, '11', '-9', '-7'); -test(macro, '-11', '-9', '-2'); -test(macro, '11', '11', '0'); -test(macro, '-11', '11', '0'); -test(macro, '11', '-11', '0'); -test(macro, '-11', '-11', '0'); -test(macro, '11', '17', '11'); -test(macro, '-11', '17', '6'); -test(macro, '11', '-17', '-6'); -test(macro, '-11', '-17', '-11'); -test(macro, '11', '22', '11'); -test(macro, '-11', '22', '11'); -test(macro, '11', '-22', '-11'); -test(macro, '-11', '-22', '-11'); -test(macro, '11', '24', '11'); -test(macro, '-11', '24', '13'); -test(macro, '11', '-24', '-13'); -test(macro, '-11', '-24', '-11'); -test(macro, '11', '27', '11'); -test(macro, '-11', '27', '16'); -test(macro, '11', '-27', '-16'); -test(macro, '-11', '-27', '-11'); -test(macro, '11', '29', '11'); -test(macro, '-11', '29', '18'); -test(macro, '11', '-29', '-18'); -test(macro, '-11', '-29', '-11'); -test(macro, '11', '1234', '11'); -test(macro, '-11', '1234', '1223'); -test(macro, '11', '-1234', '-1223'); -test(macro, '-11', '-1234', '-11'); -test(macro, '11', '5678', '11'); -test(macro, '-11', '5678', '5667'); -test(macro, '11', '-5678', '-5667'); -test(macro, '-11', '-5678', '-11'); -test(macro, '11', '94906265', '11'); -test(macro, '-11', '94906265', '94906254'); -test(macro, '11', '-94906265', '-94906254'); -test(macro, '-11', '-94906265', '-11'); -test(macro, '11', '94906266', '11'); -test(macro, '-11', '94906266', '94906255'); -test(macro, '11', '-94906266', '-94906255'); -test(macro, '-11', '-94906266', '-11'); -test(macro, '11', '1073741824', '11'); -test(macro, '-11', '1073741824', '1073741813'); -test(macro, '11', '-1073741824', '-1073741813'); -test(macro, '-11', '-1073741824', '-11'); -test(macro, '11', '51676101935731', '11'); -test(macro, '-11', '51676101935731', '51676101935720'); -test(macro, '11', '-51676101935731', '-51676101935720'); -test(macro, '-11', '-51676101935731', '-11'); -test(macro, '11', '717897987691852588770249', '11'); -test(macro, '-11', '717897987691852588770249', '717897987691852588770238'); -test(macro, '11', '-717897987691852588770249', '-717897987691852588770238'); -test(macro, '-11', '-717897987691852588770249', '-11'); -test(macro, '17', '1', '0'); -test(macro, '-17', '1', '0'); -test(macro, '17', '-1', '0'); -test(macro, '-17', '-1', '0'); -test(macro, '17', '3', '2'); -test(macro, '-17', '3', '1'); -test(macro, '17', '-3', '-1'); -test(macro, '-17', '-3', '-2'); -test(macro, '17', '7', '3'); -test(macro, '-17', '7', '4'); -test(macro, '17', '-7', '-4'); -test(macro, '-17', '-7', '-3'); -test(macro, '17', '9', '8'); -test(macro, '-17', '9', '1'); -test(macro, '17', '-9', '-1'); -test(macro, '-17', '-9', '-8'); -test(macro, '17', '11', '6'); -test(macro, '-17', '11', '5'); -test(macro, '17', '-11', '-5'); -test(macro, '-17', '-11', '-6'); -test(macro, '17', '17', '0'); -test(macro, '-17', '17', '0'); -test(macro, '17', '-17', '0'); -test(macro, '-17', '-17', '0'); -test(macro, '17', '22', '17'); -test(macro, '-17', '22', '5'); -test(macro, '17', '-22', '-5'); -test(macro, '-17', '-22', '-17'); -test(macro, '17', '24', '17'); -test(macro, '-17', '24', '7'); -test(macro, '17', '-24', '-7'); -test(macro, '-17', '-24', '-17'); -test(macro, '17', '27', '17'); -test(macro, '-17', '27', '10'); -test(macro, '17', '-27', '-10'); -test(macro, '-17', '-27', '-17'); -test(macro, '17', '29', '17'); -test(macro, '-17', '29', '12'); -test(macro, '17', '-29', '-12'); -test(macro, '-17', '-29', '-17'); -test(macro, '17', '1234', '17'); -test(macro, '-17', '1234', '1217'); -test(macro, '17', '-1234', '-1217'); -test(macro, '-17', '-1234', '-17'); -test(macro, '17', '5678', '17'); -test(macro, '-17', '5678', '5661'); -test(macro, '17', '-5678', '-5661'); -test(macro, '-17', '-5678', '-17'); -test(macro, '17', '94906265', '17'); -test(macro, '-17', '94906265', '94906248'); -test(macro, '17', '-94906265', '-94906248'); -test(macro, '-17', '-94906265', '-17'); -test(macro, '17', '94906266', '17'); -test(macro, '-17', '94906266', '94906249'); -test(macro, '17', '-94906266', '-94906249'); -test(macro, '-17', '-94906266', '-17'); -test(macro, '17', '1073741824', '17'); -test(macro, '-17', '1073741824', '1073741807'); -test(macro, '17', '-1073741824', '-1073741807'); -test(macro, '-17', '-1073741824', '-17'); -test(macro, '17', '51676101935731', '17'); -test(macro, '-17', '51676101935731', '51676101935714'); -test(macro, '17', '-51676101935731', '-51676101935714'); -test(macro, '-17', '-51676101935731', '-17'); -test(macro, '17', '717897987691852588770249', '17'); -test(macro, '-17', '717897987691852588770249', '717897987691852588770232'); -test(macro, '17', '-717897987691852588770249', '-717897987691852588770232'); -test(macro, '-17', '-717897987691852588770249', '-17'); -test(macro, '22', '1', '0'); -test(macro, '-22', '1', '0'); -test(macro, '22', '-1', '0'); -test(macro, '-22', '-1', '0'); -test(macro, '22', '3', '1'); -test(macro, '-22', '3', '2'); -test(macro, '22', '-3', '-2'); -test(macro, '-22', '-3', '-1'); -test(macro, '22', '7', '1'); -test(macro, '-22', '7', '6'); -test(macro, '22', '-7', '-6'); -test(macro, '-22', '-7', '-1'); -test(macro, '22', '9', '4'); -test(macro, '-22', '9', '5'); -test(macro, '22', '-9', '-5'); -test(macro, '-22', '-9', '-4'); -test(macro, '22', '11', '0'); -test(macro, '-22', '11', '0'); -test(macro, '22', '-11', '0'); -test(macro, '-22', '-11', '0'); -test(macro, '22', '17', '5'); -test(macro, '-22', '17', '12'); -test(macro, '22', '-17', '-12'); -test(macro, '-22', '-17', '-5'); -test(macro, '22', '22', '0'); -test(macro, '-22', '22', '0'); -test(macro, '22', '-22', '0'); -test(macro, '-22', '-22', '0'); -test(macro, '22', '24', '22'); -test(macro, '-22', '24', '2'); -test(macro, '22', '-24', '-2'); -test(macro, '-22', '-24', '-22'); -test(macro, '22', '27', '22'); -test(macro, '-22', '27', '5'); -test(macro, '22', '-27', '-5'); -test(macro, '-22', '-27', '-22'); -test(macro, '22', '29', '22'); -test(macro, '-22', '29', '7'); -test(macro, '22', '-29', '-7'); -test(macro, '-22', '-29', '-22'); -test(macro, '22', '1234', '22'); -test(macro, '-22', '1234', '1212'); -test(macro, '22', '-1234', '-1212'); -test(macro, '-22', '-1234', '-22'); -test(macro, '22', '5678', '22'); -test(macro, '-22', '5678', '5656'); -test(macro, '22', '-5678', '-5656'); -test(macro, '-22', '-5678', '-22'); -test(macro, '22', '94906265', '22'); -test(macro, '-22', '94906265', '94906243'); -test(macro, '22', '-94906265', '-94906243'); -test(macro, '-22', '-94906265', '-22'); -test(macro, '22', '94906266', '22'); -test(macro, '-22', '94906266', '94906244'); -test(macro, '22', '-94906266', '-94906244'); -test(macro, '-22', '-94906266', '-22'); -test(macro, '22', '1073741824', '22'); -test(macro, '-22', '1073741824', '1073741802'); -test(macro, '22', '-1073741824', '-1073741802'); -test(macro, '-22', '-1073741824', '-22'); -test(macro, '22', '51676101935731', '22'); -test(macro, '-22', '51676101935731', '51676101935709'); -test(macro, '22', '-51676101935731', '-51676101935709'); -test(macro, '-22', '-51676101935731', '-22'); -test(macro, '22', '717897987691852588770249', '22'); -test(macro, '-22', '717897987691852588770249', '717897987691852588770227'); -test(macro, '22', '-717897987691852588770249', '-717897987691852588770227'); -test(macro, '-22', '-717897987691852588770249', '-22'); -test(macro, '24', '1', '0'); -test(macro, '-24', '1', '0'); -test(macro, '24', '-1', '0'); -test(macro, '-24', '-1', '0'); -test(macro, '24', '3', '0'); -test(macro, '-24', '3', '0'); -test(macro, '24', '-3', '0'); -test(macro, '-24', '-3', '0'); -test(macro, '24', '7', '3'); -test(macro, '-24', '7', '4'); -test(macro, '24', '-7', '-4'); -test(macro, '-24', '-7', '-3'); -test(macro, '24', '9', '6'); -test(macro, '-24', '9', '3'); -test(macro, '24', '-9', '-3'); -test(macro, '-24', '-9', '-6'); -test(macro, '24', '11', '2'); -test(macro, '-24', '11', '9'); -test(macro, '24', '-11', '-9'); -test(macro, '-24', '-11', '-2'); -test(macro, '24', '17', '7'); -test(macro, '-24', '17', '10'); -test(macro, '24', '-17', '-10'); -test(macro, '-24', '-17', '-7'); -test(macro, '24', '22', '2'); -test(macro, '-24', '22', '20'); -test(macro, '24', '-22', '-20'); -test(macro, '-24', '-22', '-2'); -test(macro, '24', '24', '0'); -test(macro, '-24', '24', '0'); -test(macro, '24', '-24', '0'); -test(macro, '-24', '-24', '0'); -test(macro, '24', '27', '24'); -test(macro, '-24', '27', '3'); -test(macro, '24', '-27', '-3'); -test(macro, '-24', '-27', '-24'); -test(macro, '24', '29', '24'); -test(macro, '-24', '29', '5'); -test(macro, '24', '-29', '-5'); -test(macro, '-24', '-29', '-24'); -test(macro, '24', '1234', '24'); -test(macro, '-24', '1234', '1210'); -test(macro, '24', '-1234', '-1210'); -test(macro, '-24', '-1234', '-24'); -test(macro, '24', '5678', '24'); -test(macro, '-24', '5678', '5654'); -test(macro, '24', '-5678', '-5654'); -test(macro, '-24', '-5678', '-24'); -test(macro, '24', '94906265', '24'); -test(macro, '-24', '94906265', '94906241'); -test(macro, '24', '-94906265', '-94906241'); -test(macro, '-24', '-94906265', '-24'); -test(macro, '24', '94906266', '24'); -test(macro, '-24', '94906266', '94906242'); -test(macro, '24', '-94906266', '-94906242'); -test(macro, '-24', '-94906266', '-24'); -test(macro, '24', '1073741824', '24'); -test(macro, '-24', '1073741824', '1073741800'); -test(macro, '24', '-1073741824', '-1073741800'); -test(macro, '-24', '-1073741824', '-24'); -test(macro, '24', '51676101935731', '24'); -test(macro, '-24', '51676101935731', '51676101935707'); -test(macro, '24', '-51676101935731', '-51676101935707'); -test(macro, '-24', '-51676101935731', '-24'); -test(macro, '24', '717897987691852588770249', '24'); -test(macro, '-24', '717897987691852588770249', '717897987691852588770225'); -test(macro, '24', '-717897987691852588770249', '-717897987691852588770225'); -test(macro, '-24', '-717897987691852588770249', '-24'); -test(macro, '27', '1', '0'); -test(macro, '-27', '1', '0'); -test(macro, '27', '-1', '0'); -test(macro, '-27', '-1', '0'); -test(macro, '27', '3', '0'); -test(macro, '-27', '3', '0'); -test(macro, '27', '-3', '0'); -test(macro, '-27', '-3', '0'); -test(macro, '27', '7', '6'); -test(macro, '-27', '7', '1'); -test(macro, '27', '-7', '-1'); -test(macro, '-27', '-7', '-6'); -test(macro, '27', '9', '0'); -test(macro, '-27', '9', '0'); -test(macro, '27', '-9', '0'); -test(macro, '-27', '-9', '0'); -test(macro, '27', '11', '5'); -test(macro, '-27', '11', '6'); -test(macro, '27', '-11', '-6'); -test(macro, '-27', '-11', '-5'); -test(macro, '27', '17', '10'); -test(macro, '-27', '17', '7'); -test(macro, '27', '-17', '-7'); -test(macro, '-27', '-17', '-10'); -test(macro, '27', '22', '5'); -test(macro, '-27', '22', '17'); -test(macro, '27', '-22', '-17'); -test(macro, '-27', '-22', '-5'); -test(macro, '27', '24', '3'); -test(macro, '-27', '24', '21'); -test(macro, '27', '-24', '-21'); -test(macro, '-27', '-24', '-3'); -test(macro, '27', '27', '0'); -test(macro, '-27', '27', '0'); -test(macro, '27', '-27', '0'); -test(macro, '-27', '-27', '0'); -test(macro, '27', '29', '27'); -test(macro, '-27', '29', '2'); -test(macro, '27', '-29', '-2'); -test(macro, '-27', '-29', '-27'); -test(macro, '27', '1234', '27'); -test(macro, '-27', '1234', '1207'); -test(macro, '27', '-1234', '-1207'); -test(macro, '-27', '-1234', '-27'); -test(macro, '27', '5678', '27'); -test(macro, '-27', '5678', '5651'); -test(macro, '27', '-5678', '-5651'); -test(macro, '-27', '-5678', '-27'); -test(macro, '27', '94906265', '27'); -test(macro, '-27', '94906265', '94906238'); -test(macro, '27', '-94906265', '-94906238'); -test(macro, '-27', '-94906265', '-27'); -test(macro, '27', '94906266', '27'); -test(macro, '-27', '94906266', '94906239'); -test(macro, '27', '-94906266', '-94906239'); -test(macro, '-27', '-94906266', '-27'); -test(macro, '27', '1073741824', '27'); -test(macro, '-27', '1073741824', '1073741797'); -test(macro, '27', '-1073741824', '-1073741797'); -test(macro, '-27', '-1073741824', '-27'); -test(macro, '27', '51676101935731', '27'); -test(macro, '-27', '51676101935731', '51676101935704'); -test(macro, '27', '-51676101935731', '-51676101935704'); -test(macro, '-27', '-51676101935731', '-27'); -test(macro, '27', '717897987691852588770249', '27'); -test(macro, '-27', '717897987691852588770249', '717897987691852588770222'); -test(macro, '27', '-717897987691852588770249', '-717897987691852588770222'); -test(macro, '-27', '-717897987691852588770249', '-27'); -test(macro, '29', '1', '0'); -test(macro, '-29', '1', '0'); -test(macro, '29', '-1', '0'); -test(macro, '-29', '-1', '0'); -test(macro, '29', '3', '2'); -test(macro, '-29', '3', '1'); -test(macro, '29', '-3', '-1'); -test(macro, '-29', '-3', '-2'); -test(macro, '29', '7', '1'); -test(macro, '-29', '7', '6'); -test(macro, '29', '-7', '-6'); -test(macro, '-29', '-7', '-1'); -test(macro, '29', '9', '2'); -test(macro, '-29', '9', '7'); -test(macro, '29', '-9', '-7'); -test(macro, '-29', '-9', '-2'); -test(macro, '29', '11', '7'); -test(macro, '-29', '11', '4'); -test(macro, '29', '-11', '-4'); -test(macro, '-29', '-11', '-7'); -test(macro, '29', '17', '12'); -test(macro, '-29', '17', '5'); -test(macro, '29', '-17', '-5'); -test(macro, '-29', '-17', '-12'); -test(macro, '29', '22', '7'); -test(macro, '-29', '22', '15'); -test(macro, '29', '-22', '-15'); -test(macro, '-29', '-22', '-7'); -test(macro, '29', '24', '5'); -test(macro, '-29', '24', '19'); -test(macro, '29', '-24', '-19'); -test(macro, '-29', '-24', '-5'); -test(macro, '29', '27', '2'); -test(macro, '-29', '27', '25'); -test(macro, '29', '-27', '-25'); -test(macro, '-29', '-27', '-2'); -test(macro, '29', '29', '0'); -test(macro, '-29', '29', '0'); -test(macro, '29', '-29', '0'); -test(macro, '-29', '-29', '0'); -test(macro, '29', '1234', '29'); -test(macro, '-29', '1234', '1205'); -test(macro, '29', '-1234', '-1205'); -test(macro, '-29', '-1234', '-29'); -test(macro, '29', '5678', '29'); -test(macro, '-29', '5678', '5649'); -test(macro, '29', '-5678', '-5649'); -test(macro, '-29', '-5678', '-29'); -test(macro, '29', '94906265', '29'); -test(macro, '-29', '94906265', '94906236'); -test(macro, '29', '-94906265', '-94906236'); -test(macro, '-29', '-94906265', '-29'); -test(macro, '29', '94906266', '29'); -test(macro, '-29', '94906266', '94906237'); -test(macro, '29', '-94906266', '-94906237'); -test(macro, '-29', '-94906266', '-29'); -test(macro, '29', '1073741824', '29'); -test(macro, '-29', '1073741824', '1073741795'); -test(macro, '29', '-1073741824', '-1073741795'); -test(macro, '-29', '-1073741824', '-29'); -test(macro, '29', '51676101935731', '29'); -test(macro, '-29', '51676101935731', '51676101935702'); -test(macro, '29', '-51676101935731', '-51676101935702'); -test(macro, '-29', '-51676101935731', '-29'); -test(macro, '29', '717897987691852588770249', '29'); -test(macro, '-29', '717897987691852588770249', '717897987691852588770220'); -test(macro, '29', '-717897987691852588770249', '-717897987691852588770220'); -test(macro, '-29', '-717897987691852588770249', '-29'); -test(macro, '1234', '1', '0'); -test(macro, '-1234', '1', '0'); -test(macro, '1234', '-1', '0'); -test(macro, '-1234', '-1', '0'); -test(macro, '1234', '3', '1'); -test(macro, '-1234', '3', '2'); -test(macro, '1234', '-3', '-2'); -test(macro, '-1234', '-3', '-1'); -test(macro, '1234', '7', '2'); -test(macro, '-1234', '7', '5'); -test(macro, '1234', '-7', '-5'); -test(macro, '-1234', '-7', '-2'); -test(macro, '1234', '9', '1'); -test(macro, '-1234', '9', '8'); -test(macro, '1234', '-9', '-8'); -test(macro, '-1234', '-9', '-1'); -test(macro, '1234', '11', '2'); -test(macro, '-1234', '11', '9'); -test(macro, '1234', '-11', '-9'); -test(macro, '-1234', '-11', '-2'); -test(macro, '1234', '17', '10'); -test(macro, '-1234', '17', '7'); -test(macro, '1234', '-17', '-7'); -test(macro, '-1234', '-17', '-10'); -test(macro, '1234', '22', '2'); -test(macro, '-1234', '22', '20'); -test(macro, '1234', '-22', '-20'); -test(macro, '-1234', '-22', '-2'); -test(macro, '1234', '24', '10'); -test(macro, '-1234', '24', '14'); -test(macro, '1234', '-24', '-14'); -test(macro, '-1234', '-24', '-10'); -test(macro, '1234', '27', '19'); -test(macro, '-1234', '27', '8'); -test(macro, '1234', '-27', '-8'); -test(macro, '-1234', '-27', '-19'); -test(macro, '1234', '29', '16'); -test(macro, '-1234', '29', '13'); -test(macro, '1234', '-29', '-13'); -test(macro, '-1234', '-29', '-16'); -test(macro, '1234', '1234', '0'); -test(macro, '-1234', '1234', '0'); -test(macro, '1234', '-1234', '0'); -test(macro, '-1234', '-1234', '0'); -test(macro, '1234', '5678', '1234'); -test(macro, '-1234', '5678', '4444'); -test(macro, '1234', '-5678', '-4444'); -test(macro, '-1234', '-5678', '-1234'); -test(macro, '1234', '94906265', '1234'); -test(macro, '-1234', '94906265', '94905031'); -test(macro, '1234', '-94906265', '-94905031'); -test(macro, '-1234', '-94906265', '-1234'); -test(macro, '1234', '94906266', '1234'); -test(macro, '-1234', '94906266', '94905032'); -test(macro, '1234', '-94906266', '-94905032'); -test(macro, '-1234', '-94906266', '-1234'); -test(macro, '1234', '1073741824', '1234'); -test(macro, '-1234', '1073741824', '1073740590'); -test(macro, '1234', '-1073741824', '-1073740590'); -test(macro, '-1234', '-1073741824', '-1234'); -test(macro, '1234', '51676101935731', '1234'); -test(macro, '-1234', '51676101935731', '51676101934497'); -test(macro, '1234', '-51676101935731', '-51676101934497'); -test(macro, '-1234', '-51676101935731', '-1234'); -test(macro, '1234', '717897987691852588770249', '1234'); -test(macro, '-1234', '717897987691852588770249', '717897987691852588769015'); -test(macro, '1234', '-717897987691852588770249', '-717897987691852588769015'); -test(macro, '-1234', '-717897987691852588770249', '-1234'); -test(macro, '5678', '1', '0'); -test(macro, '-5678', '1', '0'); -test(macro, '5678', '-1', '0'); -test(macro, '-5678', '-1', '0'); -test(macro, '5678', '3', '2'); -test(macro, '-5678', '3', '1'); -test(macro, '5678', '-3', '-1'); -test(macro, '-5678', '-3', '-2'); -test(macro, '5678', '7', '1'); -test(macro, '-5678', '7', '6'); -test(macro, '5678', '-7', '-6'); -test(macro, '-5678', '-7', '-1'); -test(macro, '5678', '9', '8'); -test(macro, '-5678', '9', '1'); -test(macro, '5678', '-9', '-1'); -test(macro, '-5678', '-9', '-8'); -test(macro, '5678', '11', '2'); -test(macro, '-5678', '11', '9'); -test(macro, '5678', '-11', '-9'); -test(macro, '-5678', '-11', '-2'); -test(macro, '5678', '17', '0'); -test(macro, '-5678', '17', '0'); -test(macro, '5678', '-17', '0'); -test(macro, '-5678', '-17', '0'); -test(macro, '5678', '22', '2'); -test(macro, '-5678', '22', '20'); -test(macro, '5678', '-22', '-20'); -test(macro, '-5678', '-22', '-2'); -test(macro, '5678', '24', '14'); -test(macro, '-5678', '24', '10'); -test(macro, '5678', '-24', '-10'); -test(macro, '-5678', '-24', '-14'); -test(macro, '5678', '27', '8'); -test(macro, '-5678', '27', '19'); -test(macro, '5678', '-27', '-19'); -test(macro, '-5678', '-27', '-8'); -test(macro, '5678', '29', '23'); -test(macro, '-5678', '29', '6'); -test(macro, '5678', '-29', '-6'); -test(macro, '-5678', '-29', '-23'); -test(macro, '5678', '1234', '742'); -test(macro, '-5678', '1234', '492'); -test(macro, '5678', '-1234', '-492'); -test(macro, '-5678', '-1234', '-742'); -test(macro, '5678', '5678', '0'); -test(macro, '-5678', '5678', '0'); -test(macro, '5678', '-5678', '0'); -test(macro, '-5678', '-5678', '0'); -test(macro, '5678', '94906265', '5678'); -test(macro, '-5678', '94906265', '94900587'); -test(macro, '5678', '-94906265', '-94900587'); -test(macro, '-5678', '-94906265', '-5678'); -test(macro, '5678', '94906266', '5678'); -test(macro, '-5678', '94906266', '94900588'); -test(macro, '5678', '-94906266', '-94900588'); -test(macro, '-5678', '-94906266', '-5678'); -test(macro, '5678', '1073741824', '5678'); -test(macro, '-5678', '1073741824', '1073736146'); -test(macro, '5678', '-1073741824', '-1073736146'); -test(macro, '-5678', '-1073741824', '-5678'); -test(macro, '5678', '51676101935731', '5678'); -test(macro, '-5678', '51676101935731', '51676101930053'); -test(macro, '5678', '-51676101935731', '-51676101930053'); -test(macro, '-5678', '-51676101935731', '-5678'); -test(macro, '5678', '717897987691852588770249', '5678'); -test(macro, '-5678', '717897987691852588770249', '717897987691852588764571'); -test(macro, '5678', '-717897987691852588770249', '-717897987691852588764571'); -test(macro, '-5678', '-717897987691852588770249', '-5678'); -test(macro, '94906265', '1', '0'); -test(macro, '-94906265', '1', '0'); -test(macro, '94906265', '-1', '0'); -test(macro, '-94906265', '-1', '0'); -test(macro, '94906265', '3', '2'); -test(macro, '-94906265', '3', '1'); -test(macro, '94906265', '-3', '-1'); -test(macro, '-94906265', '-3', '-2'); -test(macro, '94906265', '7', '6'); -test(macro, '-94906265', '7', '1'); -test(macro, '94906265', '-7', '-1'); -test(macro, '-94906265', '-7', '-6'); -test(macro, '94906265', '9', '5'); -test(macro, '-94906265', '9', '4'); -test(macro, '94906265', '-9', '-4'); -test(macro, '-94906265', '-9', '-5'); -test(macro, '94906265', '11', '3'); -test(macro, '-94906265', '11', '8'); -test(macro, '94906265', '-11', '-8'); -test(macro, '-94906265', '-11', '-3'); -test(macro, '94906265', '17', '8'); -test(macro, '-94906265', '17', '9'); -test(macro, '94906265', '-17', '-9'); -test(macro, '-94906265', '-17', '-8'); -test(macro, '94906265', '22', '3'); -test(macro, '-94906265', '22', '19'); -test(macro, '94906265', '-22', '-19'); -test(macro, '-94906265', '-22', '-3'); -test(macro, '94906265', '24', '17'); -test(macro, '-94906265', '24', '7'); -test(macro, '94906265', '-24', '-7'); -test(macro, '-94906265', '-24', '-17'); -test(macro, '94906265', '27', '23'); -test(macro, '-94906265', '27', '4'); -test(macro, '94906265', '-27', '-4'); -test(macro, '-94906265', '-27', '-23'); -test(macro, '94906265', '29', '24'); -test(macro, '-94906265', '29', '5'); -test(macro, '94906265', '-29', '-5'); -test(macro, '-94906265', '-29', '-24'); -test(macro, '94906265', '1234', '559'); -test(macro, '-94906265', '1234', '675'); -test(macro, '94906265', '-1234', '-675'); -test(macro, '-94906265', '-1234', '-559'); -test(macro, '94906265', '5678', '4173'); -test(macro, '-94906265', '5678', '1505'); -test(macro, '94906265', '-5678', '-1505'); -test(macro, '-94906265', '-5678', '-4173'); -test(macro, '94906265', '94906265', '0'); -test(macro, '-94906265', '94906265', '0'); -test(macro, '94906265', '-94906265', '0'); -test(macro, '-94906265', '-94906265', '0'); -test(macro, '94906265', '94906266', '94906265'); -test(macro, '-94906265', '94906266', '1'); -test(macro, '94906265', '-94906266', '-1'); -test(macro, '-94906265', '-94906266', '-94906265'); -test(macro, '94906265', '1073741824', '94906265'); -test(macro, '-94906265', '1073741824', '978835559'); -test(macro, '94906265', '-1073741824', '-978835559'); -test(macro, '-94906265', '-1073741824', '-94906265'); -test(macro, '94906265', '51676101935731', '94906265'); -test(macro, '-94906265', '51676101935731', '51676007029466'); -test(macro, '94906265', '-51676101935731', '-51676007029466'); -test(macro, '-94906265', '-51676101935731', '-94906265'); -test(macro, '94906265', '717897987691852588770249', '94906265'); -test( - macro, - '-94906265', - '717897987691852588770249', - '717897987691852493863984', -); -test( - macro, - '94906265', - '-717897987691852588770249', - '-717897987691852493863984', -); -test(macro, '-94906265', '-717897987691852588770249', '-94906265'); -test(macro, '94906266', '1', '0'); -test(macro, '-94906266', '1', '0'); -test(macro, '94906266', '-1', '0'); -test(macro, '-94906266', '-1', '0'); -test(macro, '94906266', '3', '0'); -test(macro, '-94906266', '3', '0'); -test(macro, '94906266', '-3', '0'); -test(macro, '-94906266', '-3', '0'); -test(macro, '94906266', '7', '0'); -test(macro, '-94906266', '7', '0'); -test(macro, '94906266', '-7', '0'); -test(macro, '-94906266', '-7', '0'); -test(macro, '94906266', '9', '6'); -test(macro, '-94906266', '9', '3'); -test(macro, '94906266', '-9', '-3'); -test(macro, '-94906266', '-9', '-6'); -test(macro, '94906266', '11', '4'); -test(macro, '-94906266', '11', '7'); -test(macro, '94906266', '-11', '-7'); -test(macro, '-94906266', '-11', '-4'); -test(macro, '94906266', '17', '9'); -test(macro, '-94906266', '17', '8'); -test(macro, '94906266', '-17', '-8'); -test(macro, '-94906266', '-17', '-9'); -test(macro, '94906266', '22', '4'); -test(macro, '-94906266', '22', '18'); -test(macro, '94906266', '-22', '-18'); -test(macro, '-94906266', '-22', '-4'); -test(macro, '94906266', '24', '18'); -test(macro, '-94906266', '24', '6'); -test(macro, '94906266', '-24', '-6'); -test(macro, '-94906266', '-24', '-18'); -test(macro, '94906266', '27', '24'); -test(macro, '-94906266', '27', '3'); -test(macro, '94906266', '-27', '-3'); -test(macro, '-94906266', '-27', '-24'); -test(macro, '94906266', '29', '25'); -test(macro, '-94906266', '29', '4'); -test(macro, '94906266', '-29', '-4'); -test(macro, '-94906266', '-29', '-25'); -test(macro, '94906266', '1234', '560'); -test(macro, '-94906266', '1234', '674'); -test(macro, '94906266', '-1234', '-674'); -test(macro, '-94906266', '-1234', '-560'); -test(macro, '94906266', '5678', '4174'); -test(macro, '-94906266', '5678', '1504'); -test(macro, '94906266', '-5678', '-1504'); -test(macro, '-94906266', '-5678', '-4174'); -test(macro, '94906266', '94906265', '1'); -test(macro, '-94906266', '94906265', '94906264'); -test(macro, '94906266', '-94906265', '-94906264'); -test(macro, '-94906266', '-94906265', '-1'); -test(macro, '94906266', '94906266', '0'); -test(macro, '-94906266', '94906266', '0'); -test(macro, '94906266', '-94906266', '0'); -test(macro, '-94906266', '-94906266', '0'); -test(macro, '94906266', '1073741824', '94906266'); -test(macro, '-94906266', '1073741824', '978835558'); -test(macro, '94906266', '-1073741824', '-978835558'); -test(macro, '-94906266', '-1073741824', '-94906266'); -test(macro, '94906266', '51676101935731', '94906266'); -test(macro, '-94906266', '51676101935731', '51676007029465'); -test(macro, '94906266', '-51676101935731', '-51676007029465'); -test(macro, '-94906266', '-51676101935731', '-94906266'); -test(macro, '94906266', '717897987691852588770249', '94906266'); -test( - macro, - '-94906266', - '717897987691852588770249', - '717897987691852493863983', -); -test( - macro, - '94906266', - '-717897987691852588770249', - '-717897987691852493863983', -); -test(macro, '-94906266', '-717897987691852588770249', '-94906266'); -test(macro, '1073741824', '1', '0'); -test(macro, '-1073741824', '1', '0'); -test(macro, '1073741824', '-1', '0'); -test(macro, '-1073741824', '-1', '0'); -test(macro, '1073741824', '3', '1'); -test(macro, '-1073741824', '3', '2'); -test(macro, '1073741824', '-3', '-2'); -test(macro, '-1073741824', '-3', '-1'); -test(macro, '1073741824', '7', '1'); -test(macro, '-1073741824', '7', '6'); -test(macro, '1073741824', '-7', '-6'); -test(macro, '-1073741824', '-7', '-1'); -test(macro, '1073741824', '9', '1'); -test(macro, '-1073741824', '9', '8'); -test(macro, '1073741824', '-9', '-8'); -test(macro, '-1073741824', '-9', '-1'); -test(macro, '1073741824', '11', '1'); -test(macro, '-1073741824', '11', '10'); -test(macro, '1073741824', '-11', '-10'); -test(macro, '-1073741824', '-11', '-1'); -test(macro, '1073741824', '17', '13'); -test(macro, '-1073741824', '17', '4'); -test(macro, '1073741824', '-17', '-4'); -test(macro, '-1073741824', '-17', '-13'); -test(macro, '1073741824', '22', '12'); -test(macro, '-1073741824', '22', '10'); -test(macro, '1073741824', '-22', '-10'); -test(macro, '-1073741824', '-22', '-12'); -test(macro, '1073741824', '24', '16'); -test(macro, '-1073741824', '24', '8'); -test(macro, '1073741824', '-24', '-8'); -test(macro, '-1073741824', '-24', '-16'); -test(macro, '1073741824', '27', '19'); -test(macro, '-1073741824', '27', '8'); -test(macro, '1073741824', '-27', '-8'); -test(macro, '-1073741824', '-27', '-19'); -test(macro, '1073741824', '29', '4'); -test(macro, '-1073741824', '29', '25'); -test(macro, '1073741824', '-29', '-25'); -test(macro, '-1073741824', '-29', '-4'); -test(macro, '1073741824', '1234', '170'); -test(macro, '-1073741824', '1234', '1064'); -test(macro, '1073741824', '-1234', '-1064'); -test(macro, '-1073741824', '-1234', '-170'); -test(macro, '1073741824', '5678', '3634'); -test(macro, '-1073741824', '5678', '2044'); -test(macro, '1073741824', '-5678', '-2044'); -test(macro, '-1073741824', '-5678', '-3634'); -test(macro, '1073741824', '94906265', '29772909'); -test(macro, '-1073741824', '94906265', '65133356'); -test(macro, '1073741824', '-94906265', '-65133356'); -test(macro, '-1073741824', '-94906265', '-29772909'); -test(macro, '1073741824', '94906266', '29772898'); -test(macro, '-1073741824', '94906266', '65133368'); -test(macro, '1073741824', '-94906266', '-65133368'); -test(macro, '-1073741824', '-94906266', '-29772898'); -test(macro, '1073741824', '1073741824', '0'); -test(macro, '-1073741824', '1073741824', '0'); -test(macro, '1073741824', '-1073741824', '0'); -test(macro, '-1073741824', '-1073741824', '0'); -test(macro, '1073741824', '51676101935731', '1073741824'); -test(macro, '-1073741824', '51676101935731', '51675028193907'); -test(macro, '1073741824', '-51676101935731', '-51675028193907'); -test(macro, '-1073741824', '-51676101935731', '-1073741824'); -test(macro, '1073741824', '717897987691852588770249', '1073741824'); -test( - macro, - '-1073741824', - '717897987691852588770249', - '717897987691851515028425', -); -test( - macro, - '1073741824', - '-717897987691852588770249', - '-717897987691851515028425', -); -test(macro, '-1073741824', '-717897987691852588770249', '-1073741824'); -test(macro, '51676101935731', '1', '0'); -test(macro, '-51676101935731', '1', '0'); -test(macro, '51676101935731', '-1', '0'); -test(macro, '-51676101935731', '-1', '0'); -test(macro, '51676101935731', '3', '1'); -test(macro, '-51676101935731', '3', '2'); -test(macro, '51676101935731', '-3', '-2'); -test(macro, '-51676101935731', '-3', '-1'); -test(macro, '51676101935731', '7', '0'); -test(macro, '-51676101935731', '7', '0'); -test(macro, '51676101935731', '-7', '0'); -test(macro, '-51676101935731', '-7', '0'); -test(macro, '51676101935731', '9', '1'); -test(macro, '-51676101935731', '9', '8'); -test(macro, '51676101935731', '-9', '-8'); -test(macro, '-51676101935731', '-9', '-1'); -test(macro, '51676101935731', '11', '9'); -test(macro, '-51676101935731', '11', '2'); -test(macro, '51676101935731', '-11', '-2'); -test(macro, '-51676101935731', '-11', '-9'); -test(macro, '51676101935731', '17', '14'); -test(macro, '-51676101935731', '17', '3'); -test(macro, '51676101935731', '-17', '-3'); -test(macro, '-51676101935731', '-17', '-14'); -test(macro, '51676101935731', '22', '9'); -test(macro, '-51676101935731', '22', '13'); -test(macro, '51676101935731', '-22', '-13'); -test(macro, '-51676101935731', '-22', '-9'); -test(macro, '51676101935731', '24', '19'); -test(macro, '-51676101935731', '24', '5'); -test(macro, '51676101935731', '-24', '-5'); -test(macro, '-51676101935731', '-24', '-19'); -test(macro, '51676101935731', '27', '10'); -test(macro, '-51676101935731', '27', '17'); -test(macro, '51676101935731', '-27', '-17'); -test(macro, '-51676101935731', '-27', '-10'); -test(macro, '51676101935731', '29', '28'); -test(macro, '-51676101935731', '29', '1'); -test(macro, '51676101935731', '-29', '-1'); -test(macro, '-51676101935731', '-29', '-28'); -test(macro, '51676101935731', '1234', '835'); -test(macro, '-51676101935731', '1234', '399'); -test(macro, '51676101935731', '-1234', '-399'); -test(macro, '-51676101935731', '-1234', '-835'); -test(macro, '51676101935731', '5678', '3023'); -test(macro, '-51676101935731', '5678', '2655'); -test(macro, '51676101935731', '-5678', '-2655'); -test(macro, '-51676101935731', '-5678', '-3023'); -test(macro, '51676101935731', '94906265', '20268291'); -test(macro, '-51676101935731', '94906265', '74637974'); -test(macro, '51676101935731', '-94906265', '-74637974'); -test(macro, '-51676101935731', '-94906265', '-20268291'); -test(macro, '51676101935731', '94906266', '19723795'); -test(macro, '-51676101935731', '94906266', '75182471'); -test(macro, '51676101935731', '-94906266', '-75182471'); -test(macro, '-51676101935731', '-94906266', '-19723795'); -test(macro, '51676101935731', '1073741824', '129172083'); -test(macro, '-51676101935731', '1073741824', '944569741'); -test(macro, '51676101935731', '-1073741824', '-944569741'); -test(macro, '-51676101935731', '-1073741824', '-129172083'); -test(macro, '51676101935731', '51676101935731', '0'); -test(macro, '-51676101935731', '51676101935731', '0'); -test(macro, '51676101935731', '-51676101935731', '0'); -test(macro, '-51676101935731', '-51676101935731', '0'); -test(macro, '51676101935731', '717897987691852588770249', '51676101935731'); -test( - macro, - '-51676101935731', - '717897987691852588770249', - '717897987640176486834518', -); -test( - macro, - '51676101935731', - '-717897987691852588770249', - '-717897987640176486834518', -); -test(macro, '-51676101935731', '-717897987691852588770249', '-51676101935731'); -test(macro, '717897987691852588770249', '1', '0'); -test(macro, '-717897987691852588770249', '1', '0'); -test(macro, '717897987691852588770249', '-1', '0'); -test(macro, '-717897987691852588770249', '-1', '0'); -test(macro, '717897987691852588770249', '3', '0'); -test(macro, '-717897987691852588770249', '3', '0'); -test(macro, '717897987691852588770249', '-3', '0'); -test(macro, '-717897987691852588770249', '-3', '0'); -test(macro, '717897987691852588770249', '7', '2'); -test(macro, '-717897987691852588770249', '7', '5'); -test(macro, '717897987691852588770249', '-7', '-5'); -test(macro, '-717897987691852588770249', '-7', '-2'); -test(macro, '717897987691852588770249', '9', '0'); -test(macro, '-717897987691852588770249', '9', '0'); -test(macro, '717897987691852588770249', '-9', '0'); -test(macro, '-717897987691852588770249', '-9', '0'); -test(macro, '717897987691852588770249', '11', '1'); -test(macro, '-717897987691852588770249', '11', '10'); -test(macro, '717897987691852588770249', '-11', '-10'); -test(macro, '-717897987691852588770249', '-11', '-1'); -test(macro, '717897987691852588770249', '17', '9'); -test(macro, '-717897987691852588770249', '17', '8'); -test(macro, '717897987691852588770249', '-17', '-8'); -test(macro, '-717897987691852588770249', '-17', '-9'); -test(macro, '717897987691852588770249', '22', '1'); -test(macro, '-717897987691852588770249', '22', '21'); -test(macro, '717897987691852588770249', '-22', '-21'); -test(macro, '-717897987691852588770249', '-22', '-1'); -test(macro, '717897987691852588770249', '24', '9'); -test(macro, '-717897987691852588770249', '24', '15'); -test(macro, '717897987691852588770249', '-24', '-15'); -test(macro, '-717897987691852588770249', '-24', '-9'); -test(macro, '717897987691852588770249', '27', '0'); -test(macro, '-717897987691852588770249', '27', '0'); -test(macro, '717897987691852588770249', '-27', '0'); -test(macro, '-717897987691852588770249', '-27', '0'); -test(macro, '717897987691852588770249', '29', '22'); -test(macro, '-717897987691852588770249', '29', '7'); -test(macro, '717897987691852588770249', '-29', '-7'); -test(macro, '-717897987691852588770249', '-29', '-22'); -test(macro, '717897987691852588770249', '1234', '755'); -test(macro, '-717897987691852588770249', '1234', '479'); -test(macro, '717897987691852588770249', '-1234', '-479'); -test(macro, '-717897987691852588770249', '-1234', '-755'); -test(macro, '717897987691852588770249', '5678', '3477'); -test(macro, '-717897987691852588770249', '5678', '2201'); -test(macro, '717897987691852588770249', '-5678', '-2201'); -test(macro, '-717897987691852588770249', '-5678', '-3477'); -test(macro, '717897987691852588770249', '94906265', '56517934'); -test(macro, '-717897987691852588770249', '94906265', '38388331'); -test(macro, '717897987691852588770249', '-94906265', '-38388331'); -test(macro, '-717897987691852588770249', '-94906265', '-56517934'); -test(macro, '717897987691852588770249', '94906266', '81625371'); -test(macro, '-717897987691852588770249', '94906266', '13280895'); -test(macro, '717897987691852588770249', '-94906266', '-13280895'); -test(macro, '-717897987691852588770249', '-94906266', '-81625371'); -test(macro, '717897987691852588770249', '1073741824', '278782921'); -test(macro, '-717897987691852588770249', '1073741824', '794958903'); -test(macro, '717897987691852588770249', '-1073741824', '-794958903'); -test(macro, '-717897987691852588770249', '-1073741824', '-278782921'); -test(macro, '717897987691852588770249', '51676101935731', '51258661506607'); -test(macro, '-717897987691852588770249', '51676101935731', '417440429124'); -test(macro, '717897987691852588770249', '-51676101935731', '-417440429124'); -test(macro, '-717897987691852588770249', '-51676101935731', '-51258661506607'); -test(macro, '717897987691852588770249', '717897987691852588770249', '0'); -test(macro, '-717897987691852588770249', '717897987691852588770249', '0'); -test(macro, '717897987691852588770249', '-717897987691852588770249', '0'); -test(macro, '-717897987691852588770249', '-717897987691852588770249', '0'); diff --git a/test/src/integer/arithmetic/modn.js b/test/src/integer/arithmetic/modn.js deleted file mode 100644 index 9a94e18..0000000 --- a/test/src/integer/arithmetic/modn.js +++ /dev/null @@ -1,1134 +0,0 @@ -import test from 'ava'; -import {parse, stringify, modn} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const c = modn(a, B); - t.is(stringify(a), A); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `modn(${fmt(A)},${B}) = ${fmt(C)}`; - -test(macro, '0', 1, '0'); -test(macro, '0', -1, '0'); -test(macro, '0', 3, '0'); -test(macro, '0', -3, '0'); -test(macro, '0', 7, '0'); -test(macro, '0', -7, '0'); -test(macro, '0', 9, '0'); -test(macro, '0', -9, '0'); -test(macro, '0', 11, '0'); -test(macro, '0', -11, '0'); -test(macro, '0', 17, '0'); -test(macro, '0', -17, '0'); -test(macro, '0', 22, '0'); -test(macro, '0', -22, '0'); -test(macro, '0', 24, '0'); -test(macro, '0', -24, '0'); -test(macro, '0', 27, '0'); -test(macro, '0', -27, '0'); -test(macro, '0', 29, '0'); -test(macro, '0', -29, '0'); -test(macro, '0', 1234, '0'); -test(macro, '0', -1234, '0'); -test(macro, '0', 5678, '0'); -test(macro, '0', -5678, '0'); -test(macro, '0', 94906265, '0'); -test(macro, '0', -94906265, '0'); -test(macro, '0', 94906266, '0'); -test(macro, '0', -94906266, '0'); -test(macro, '0', 1073741824, '0'); -test(macro, '0', -1073741824, '0'); -test(macro, '0', 51676101935731, '0'); -test(macro, '0', -51676101935731, '0'); -test(macro, '1', 1, '0'); -test(macro, '-1', 1, '0'); -test(macro, '1', -1, '0'); -test(macro, '-1', -1, '0'); -test(macro, '1', 3, '1'); -test(macro, '-1', 3, '2'); -test(macro, '1', -3, '-2'); -test(macro, '-1', -3, '-1'); -test(macro, '1', 7, '1'); -test(macro, '-1', 7, '6'); -test(macro, '1', -7, '-6'); -test(macro, '-1', -7, '-1'); -test(macro, '1', 9, '1'); -test(macro, '-1', 9, '8'); -test(macro, '1', -9, '-8'); -test(macro, '-1', -9, '-1'); -test(macro, '1', 11, '1'); -test(macro, '-1', 11, '10'); -test(macro, '1', -11, '-10'); -test(macro, '-1', -11, '-1'); -test(macro, '1', 17, '1'); -test(macro, '-1', 17, '16'); -test(macro, '1', -17, '-16'); -test(macro, '-1', -17, '-1'); -test(macro, '1', 22, '1'); -test(macro, '-1', 22, '21'); -test(macro, '1', -22, '-21'); -test(macro, '-1', -22, '-1'); -test(macro, '1', 24, '1'); -test(macro, '-1', 24, '23'); -test(macro, '1', -24, '-23'); -test(macro, '-1', -24, '-1'); -test(macro, '1', 27, '1'); -test(macro, '-1', 27, '26'); -test(macro, '1', -27, '-26'); -test(macro, '-1', -27, '-1'); -test(macro, '1', 29, '1'); -test(macro, '-1', 29, '28'); -test(macro, '1', -29, '-28'); -test(macro, '-1', -29, '-1'); -test(macro, '1', 1234, '1'); -test(macro, '-1', 1234, '1233'); -test(macro, '1', -1234, '-1233'); -test(macro, '-1', -1234, '-1'); -test(macro, '1', 5678, '1'); -test(macro, '-1', 5678, '5677'); -test(macro, '1', -5678, '-5677'); -test(macro, '-1', -5678, '-1'); -test(macro, '1', 94906265, '1'); -test(macro, '-1', 94906265, '94906264'); -test(macro, '1', -94906265, '-94906264'); -test(macro, '-1', -94906265, '-1'); -test(macro, '1', 94906266, '1'); -test(macro, '-1', 94906266, '94906265'); -test(macro, '1', -94906266, '-94906265'); -test(macro, '-1', -94906266, '-1'); -test(macro, '1', 1073741824, '1'); -test(macro, '-1', 1073741824, '1073741823'); -test(macro, '1', -1073741824, '-1073741823'); -test(macro, '-1', -1073741824, '-1'); -test(macro, '1', 51676101935731, '1'); -test(macro, '-1', 51676101935731, '51676101935730'); -test(macro, '1', -51676101935731, '-51676101935730'); -test(macro, '-1', -51676101935731, '-1'); -test(macro, '3', 1, '0'); -test(macro, '-3', 1, '0'); -test(macro, '3', -1, '0'); -test(macro, '-3', -1, '0'); -test(macro, '3', 3, '0'); -test(macro, '-3', 3, '0'); -test(macro, '3', -3, '0'); -test(macro, '-3', -3, '0'); -test(macro, '3', 7, '3'); -test(macro, '-3', 7, '4'); -test(macro, '3', -7, '-4'); -test(macro, '-3', -7, '-3'); -test(macro, '3', 9, '3'); -test(macro, '-3', 9, '6'); -test(macro, '3', -9, '-6'); -test(macro, '-3', -9, '-3'); -test(macro, '3', 11, '3'); -test(macro, '-3', 11, '8'); -test(macro, '3', -11, '-8'); -test(macro, '-3', -11, '-3'); -test(macro, '3', 17, '3'); -test(macro, '-3', 17, '14'); -test(macro, '3', -17, '-14'); -test(macro, '-3', -17, '-3'); -test(macro, '3', 22, '3'); -test(macro, '-3', 22, '19'); -test(macro, '3', -22, '-19'); -test(macro, '-3', -22, '-3'); -test(macro, '3', 24, '3'); -test(macro, '-3', 24, '21'); -test(macro, '3', -24, '-21'); -test(macro, '-3', -24, '-3'); -test(macro, '3', 27, '3'); -test(macro, '-3', 27, '24'); -test(macro, '3', -27, '-24'); -test(macro, '-3', -27, '-3'); -test(macro, '3', 29, '3'); -test(macro, '-3', 29, '26'); -test(macro, '3', -29, '-26'); -test(macro, '-3', -29, '-3'); -test(macro, '3', 1234, '3'); -test(macro, '-3', 1234, '1231'); -test(macro, '3', -1234, '-1231'); -test(macro, '-3', -1234, '-3'); -test(macro, '3', 5678, '3'); -test(macro, '-3', 5678, '5675'); -test(macro, '3', -5678, '-5675'); -test(macro, '-3', -5678, '-3'); -test(macro, '3', 94906265, '3'); -test(macro, '-3', 94906265, '94906262'); -test(macro, '3', -94906265, '-94906262'); -test(macro, '-3', -94906265, '-3'); -test(macro, '3', 94906266, '3'); -test(macro, '-3', 94906266, '94906263'); -test(macro, '3', -94906266, '-94906263'); -test(macro, '-3', -94906266, '-3'); -test(macro, '3', 1073741824, '3'); -test(macro, '-3', 1073741824, '1073741821'); -test(macro, '3', -1073741824, '-1073741821'); -test(macro, '-3', -1073741824, '-3'); -test(macro, '3', 51676101935731, '3'); -test(macro, '-3', 51676101935731, '51676101935728'); -test(macro, '3', -51676101935731, '-51676101935728'); -test(macro, '-3', -51676101935731, '-3'); -test(macro, '7', 1, '0'); -test(macro, '-7', 1, '0'); -test(macro, '7', -1, '0'); -test(macro, '-7', -1, '0'); -test(macro, '7', 3, '1'); -test(macro, '-7', 3, '2'); -test(macro, '7', -3, '-2'); -test(macro, '-7', -3, '-1'); -test(macro, '7', 7, '0'); -test(macro, '-7', 7, '0'); -test(macro, '7', -7, '0'); -test(macro, '-7', -7, '0'); -test(macro, '7', 9, '7'); -test(macro, '-7', 9, '2'); -test(macro, '7', -9, '-2'); -test(macro, '-7', -9, '-7'); -test(macro, '7', 11, '7'); -test(macro, '-7', 11, '4'); -test(macro, '7', -11, '-4'); -test(macro, '-7', -11, '-7'); -test(macro, '7', 17, '7'); -test(macro, '-7', 17, '10'); -test(macro, '7', -17, '-10'); -test(macro, '-7', -17, '-7'); -test(macro, '7', 22, '7'); -test(macro, '-7', 22, '15'); -test(macro, '7', -22, '-15'); -test(macro, '-7', -22, '-7'); -test(macro, '7', 24, '7'); -test(macro, '-7', 24, '17'); -test(macro, '7', -24, '-17'); -test(macro, '-7', -24, '-7'); -test(macro, '7', 27, '7'); -test(macro, '-7', 27, '20'); -test(macro, '7', -27, '-20'); -test(macro, '-7', -27, '-7'); -test(macro, '7', 29, '7'); -test(macro, '-7', 29, '22'); -test(macro, '7', -29, '-22'); -test(macro, '-7', -29, '-7'); -test(macro, '7', 1234, '7'); -test(macro, '-7', 1234, '1227'); -test(macro, '7', -1234, '-1227'); -test(macro, '-7', -1234, '-7'); -test(macro, '7', 5678, '7'); -test(macro, '-7', 5678, '5671'); -test(macro, '7', -5678, '-5671'); -test(macro, '-7', -5678, '-7'); -test(macro, '7', 94906265, '7'); -test(macro, '-7', 94906265, '94906258'); -test(macro, '7', -94906265, '-94906258'); -test(macro, '-7', -94906265, '-7'); -test(macro, '7', 94906266, '7'); -test(macro, '-7', 94906266, '94906259'); -test(macro, '7', -94906266, '-94906259'); -test(macro, '-7', -94906266, '-7'); -test(macro, '7', 1073741824, '7'); -test(macro, '-7', 1073741824, '1073741817'); -test(macro, '7', -1073741824, '-1073741817'); -test(macro, '-7', -1073741824, '-7'); -test(macro, '7', 51676101935731, '7'); -test(macro, '-7', 51676101935731, '51676101935724'); -test(macro, '7', -51676101935731, '-51676101935724'); -test(macro, '-7', -51676101935731, '-7'); -test(macro, '9', 1, '0'); -test(macro, '-9', 1, '0'); -test(macro, '9', -1, '0'); -test(macro, '-9', -1, '0'); -test(macro, '9', 3, '0'); -test(macro, '-9', 3, '0'); -test(macro, '9', -3, '0'); -test(macro, '-9', -3, '0'); -test(macro, '9', 7, '2'); -test(macro, '-9', 7, '5'); -test(macro, '9', -7, '-5'); -test(macro, '-9', -7, '-2'); -test(macro, '9', 9, '0'); -test(macro, '-9', 9, '0'); -test(macro, '9', -9, '0'); -test(macro, '-9', -9, '0'); -test(macro, '9', 11, '9'); -test(macro, '-9', 11, '2'); -test(macro, '9', -11, '-2'); -test(macro, '-9', -11, '-9'); -test(macro, '9', 17, '9'); -test(macro, '-9', 17, '8'); -test(macro, '9', -17, '-8'); -test(macro, '-9', -17, '-9'); -test(macro, '9', 22, '9'); -test(macro, '-9', 22, '13'); -test(macro, '9', -22, '-13'); -test(macro, '-9', -22, '-9'); -test(macro, '9', 24, '9'); -test(macro, '-9', 24, '15'); -test(macro, '9', -24, '-15'); -test(macro, '-9', -24, '-9'); -test(macro, '9', 27, '9'); -test(macro, '-9', 27, '18'); -test(macro, '9', -27, '-18'); -test(macro, '-9', -27, '-9'); -test(macro, '9', 29, '9'); -test(macro, '-9', 29, '20'); -test(macro, '9', -29, '-20'); -test(macro, '-9', -29, '-9'); -test(macro, '9', 1234, '9'); -test(macro, '-9', 1234, '1225'); -test(macro, '9', -1234, '-1225'); -test(macro, '-9', -1234, '-9'); -test(macro, '9', 5678, '9'); -test(macro, '-9', 5678, '5669'); -test(macro, '9', -5678, '-5669'); -test(macro, '-9', -5678, '-9'); -test(macro, '9', 94906265, '9'); -test(macro, '-9', 94906265, '94906256'); -test(macro, '9', -94906265, '-94906256'); -test(macro, '-9', -94906265, '-9'); -test(macro, '9', 94906266, '9'); -test(macro, '-9', 94906266, '94906257'); -test(macro, '9', -94906266, '-94906257'); -test(macro, '-9', -94906266, '-9'); -test(macro, '9', 1073741824, '9'); -test(macro, '-9', 1073741824, '1073741815'); -test(macro, '9', -1073741824, '-1073741815'); -test(macro, '-9', -1073741824, '-9'); -test(macro, '9', 51676101935731, '9'); -test(macro, '-9', 51676101935731, '51676101935722'); -test(macro, '9', -51676101935731, '-51676101935722'); -test(macro, '-9', -51676101935731, '-9'); -test(macro, '11', 1, '0'); -test(macro, '-11', 1, '0'); -test(macro, '11', -1, '0'); -test(macro, '-11', -1, '0'); -test(macro, '11', 3, '2'); -test(macro, '-11', 3, '1'); -test(macro, '11', -3, '-1'); -test(macro, '-11', -3, '-2'); -test(macro, '11', 7, '4'); -test(macro, '-11', 7, '3'); -test(macro, '11', -7, '-3'); -test(macro, '-11', -7, '-4'); -test(macro, '11', 9, '2'); -test(macro, '-11', 9, '7'); -test(macro, '11', -9, '-7'); -test(macro, '-11', -9, '-2'); -test(macro, '11', 11, '0'); -test(macro, '-11', 11, '0'); -test(macro, '11', -11, '0'); -test(macro, '-11', -11, '0'); -test(macro, '11', 17, '11'); -test(macro, '-11', 17, '6'); -test(macro, '11', -17, '-6'); -test(macro, '-11', -17, '-11'); -test(macro, '11', 22, '11'); -test(macro, '-11', 22, '11'); -test(macro, '11', -22, '-11'); -test(macro, '-11', -22, '-11'); -test(macro, '11', 24, '11'); -test(macro, '-11', 24, '13'); -test(macro, '11', -24, '-13'); -test(macro, '-11', -24, '-11'); -test(macro, '11', 27, '11'); -test(macro, '-11', 27, '16'); -test(macro, '11', -27, '-16'); -test(macro, '-11', -27, '-11'); -test(macro, '11', 29, '11'); -test(macro, '-11', 29, '18'); -test(macro, '11', -29, '-18'); -test(macro, '-11', -29, '-11'); -test(macro, '11', 1234, '11'); -test(macro, '-11', 1234, '1223'); -test(macro, '11', -1234, '-1223'); -test(macro, '-11', -1234, '-11'); -test(macro, '11', 5678, '11'); -test(macro, '-11', 5678, '5667'); -test(macro, '11', -5678, '-5667'); -test(macro, '-11', -5678, '-11'); -test(macro, '11', 94906265, '11'); -test(macro, '-11', 94906265, '94906254'); -test(macro, '11', -94906265, '-94906254'); -test(macro, '-11', -94906265, '-11'); -test(macro, '11', 94906266, '11'); -test(macro, '-11', 94906266, '94906255'); -test(macro, '11', -94906266, '-94906255'); -test(macro, '-11', -94906266, '-11'); -test(macro, '11', 1073741824, '11'); -test(macro, '-11', 1073741824, '1073741813'); -test(macro, '11', -1073741824, '-1073741813'); -test(macro, '-11', -1073741824, '-11'); -test(macro, '11', 51676101935731, '11'); -test(macro, '-11', 51676101935731, '51676101935720'); -test(macro, '11', -51676101935731, '-51676101935720'); -test(macro, '-11', -51676101935731, '-11'); -test(macro, '17', 1, '0'); -test(macro, '-17', 1, '0'); -test(macro, '17', -1, '0'); -test(macro, '-17', -1, '0'); -test(macro, '17', 3, '2'); -test(macro, '-17', 3, '1'); -test(macro, '17', -3, '-1'); -test(macro, '-17', -3, '-2'); -test(macro, '17', 7, '3'); -test(macro, '-17', 7, '4'); -test(macro, '17', -7, '-4'); -test(macro, '-17', -7, '-3'); -test(macro, '17', 9, '8'); -test(macro, '-17', 9, '1'); -test(macro, '17', -9, '-1'); -test(macro, '-17', -9, '-8'); -test(macro, '17', 11, '6'); -test(macro, '-17', 11, '5'); -test(macro, '17', -11, '-5'); -test(macro, '-17', -11, '-6'); -test(macro, '17', 17, '0'); -test(macro, '-17', 17, '0'); -test(macro, '17', -17, '0'); -test(macro, '-17', -17, '0'); -test(macro, '17', 22, '17'); -test(macro, '-17', 22, '5'); -test(macro, '17', -22, '-5'); -test(macro, '-17', -22, '-17'); -test(macro, '17', 24, '17'); -test(macro, '-17', 24, '7'); -test(macro, '17', -24, '-7'); -test(macro, '-17', -24, '-17'); -test(macro, '17', 27, '17'); -test(macro, '-17', 27, '10'); -test(macro, '17', -27, '-10'); -test(macro, '-17', -27, '-17'); -test(macro, '17', 29, '17'); -test(macro, '-17', 29, '12'); -test(macro, '17', -29, '-12'); -test(macro, '-17', -29, '-17'); -test(macro, '17', 1234, '17'); -test(macro, '-17', 1234, '1217'); -test(macro, '17', -1234, '-1217'); -test(macro, '-17', -1234, '-17'); -test(macro, '17', 5678, '17'); -test(macro, '-17', 5678, '5661'); -test(macro, '17', -5678, '-5661'); -test(macro, '-17', -5678, '-17'); -test(macro, '17', 94906265, '17'); -test(macro, '-17', 94906265, '94906248'); -test(macro, '17', -94906265, '-94906248'); -test(macro, '-17', -94906265, '-17'); -test(macro, '17', 94906266, '17'); -test(macro, '-17', 94906266, '94906249'); -test(macro, '17', -94906266, '-94906249'); -test(macro, '-17', -94906266, '-17'); -test(macro, '17', 1073741824, '17'); -test(macro, '-17', 1073741824, '1073741807'); -test(macro, '17', -1073741824, '-1073741807'); -test(macro, '-17', -1073741824, '-17'); -test(macro, '17', 51676101935731, '17'); -test(macro, '-17', 51676101935731, '51676101935714'); -test(macro, '17', -51676101935731, '-51676101935714'); -test(macro, '-17', -51676101935731, '-17'); -test(macro, '22', 1, '0'); -test(macro, '-22', 1, '0'); -test(macro, '22', -1, '0'); -test(macro, '-22', -1, '0'); -test(macro, '22', 3, '1'); -test(macro, '-22', 3, '2'); -test(macro, '22', -3, '-2'); -test(macro, '-22', -3, '-1'); -test(macro, '22', 7, '1'); -test(macro, '-22', 7, '6'); -test(macro, '22', -7, '-6'); -test(macro, '-22', -7, '-1'); -test(macro, '22', 9, '4'); -test(macro, '-22', 9, '5'); -test(macro, '22', -9, '-5'); -test(macro, '-22', -9, '-4'); -test(macro, '22', 11, '0'); -test(macro, '-22', 11, '0'); -test(macro, '22', -11, '0'); -test(macro, '-22', -11, '0'); -test(macro, '22', 17, '5'); -test(macro, '-22', 17, '12'); -test(macro, '22', -17, '-12'); -test(macro, '-22', -17, '-5'); -test(macro, '22', 22, '0'); -test(macro, '-22', 22, '0'); -test(macro, '22', -22, '0'); -test(macro, '-22', -22, '0'); -test(macro, '22', 24, '22'); -test(macro, '-22', 24, '2'); -test(macro, '22', -24, '-2'); -test(macro, '-22', -24, '-22'); -test(macro, '22', 27, '22'); -test(macro, '-22', 27, '5'); -test(macro, '22', -27, '-5'); -test(macro, '-22', -27, '-22'); -test(macro, '22', 29, '22'); -test(macro, '-22', 29, '7'); -test(macro, '22', -29, '-7'); -test(macro, '-22', -29, '-22'); -test(macro, '22', 1234, '22'); -test(macro, '-22', 1234, '1212'); -test(macro, '22', -1234, '-1212'); -test(macro, '-22', -1234, '-22'); -test(macro, '22', 5678, '22'); -test(macro, '-22', 5678, '5656'); -test(macro, '22', -5678, '-5656'); -test(macro, '-22', -5678, '-22'); -test(macro, '22', 94906265, '22'); -test(macro, '-22', 94906265, '94906243'); -test(macro, '22', -94906265, '-94906243'); -test(macro, '-22', -94906265, '-22'); -test(macro, '22', 94906266, '22'); -test(macro, '-22', 94906266, '94906244'); -test(macro, '22', -94906266, '-94906244'); -test(macro, '-22', -94906266, '-22'); -test(macro, '22', 1073741824, '22'); -test(macro, '-22', 1073741824, '1073741802'); -test(macro, '22', -1073741824, '-1073741802'); -test(macro, '-22', -1073741824, '-22'); -test(macro, '22', 51676101935731, '22'); -test(macro, '-22', 51676101935731, '51676101935709'); -test(macro, '22', -51676101935731, '-51676101935709'); -test(macro, '-22', -51676101935731, '-22'); -test(macro, '24', 1, '0'); -test(macro, '-24', 1, '0'); -test(macro, '24', -1, '0'); -test(macro, '-24', -1, '0'); -test(macro, '24', 3, '0'); -test(macro, '-24', 3, '0'); -test(macro, '24', -3, '0'); -test(macro, '-24', -3, '0'); -test(macro, '24', 7, '3'); -test(macro, '-24', 7, '4'); -test(macro, '24', -7, '-4'); -test(macro, '-24', -7, '-3'); -test(macro, '24', 9, '6'); -test(macro, '-24', 9, '3'); -test(macro, '24', -9, '-3'); -test(macro, '-24', -9, '-6'); -test(macro, '24', 11, '2'); -test(macro, '-24', 11, '9'); -test(macro, '24', -11, '-9'); -test(macro, '-24', -11, '-2'); -test(macro, '24', 17, '7'); -test(macro, '-24', 17, '10'); -test(macro, '24', -17, '-10'); -test(macro, '-24', -17, '-7'); -test(macro, '24', 22, '2'); -test(macro, '-24', 22, '20'); -test(macro, '24', -22, '-20'); -test(macro, '-24', -22, '-2'); -test(macro, '24', 24, '0'); -test(macro, '-24', 24, '0'); -test(macro, '24', -24, '0'); -test(macro, '-24', -24, '0'); -test(macro, '24', 27, '24'); -test(macro, '-24', 27, '3'); -test(macro, '24', -27, '-3'); -test(macro, '-24', -27, '-24'); -test(macro, '24', 29, '24'); -test(macro, '-24', 29, '5'); -test(macro, '24', -29, '-5'); -test(macro, '-24', -29, '-24'); -test(macro, '24', 1234, '24'); -test(macro, '-24', 1234, '1210'); -test(macro, '24', -1234, '-1210'); -test(macro, '-24', -1234, '-24'); -test(macro, '24', 5678, '24'); -test(macro, '-24', 5678, '5654'); -test(macro, '24', -5678, '-5654'); -test(macro, '-24', -5678, '-24'); -test(macro, '24', 94906265, '24'); -test(macro, '-24', 94906265, '94906241'); -test(macro, '24', -94906265, '-94906241'); -test(macro, '-24', -94906265, '-24'); -test(macro, '24', 94906266, '24'); -test(macro, '-24', 94906266, '94906242'); -test(macro, '24', -94906266, '-94906242'); -test(macro, '-24', -94906266, '-24'); -test(macro, '24', 1073741824, '24'); -test(macro, '-24', 1073741824, '1073741800'); -test(macro, '24', -1073741824, '-1073741800'); -test(macro, '-24', -1073741824, '-24'); -test(macro, '24', 51676101935731, '24'); -test(macro, '-24', 51676101935731, '51676101935707'); -test(macro, '24', -51676101935731, '-51676101935707'); -test(macro, '-24', -51676101935731, '-24'); -test(macro, '27', 1, '0'); -test(macro, '-27', 1, '0'); -test(macro, '27', -1, '0'); -test(macro, '-27', -1, '0'); -test(macro, '27', 3, '0'); -test(macro, '-27', 3, '0'); -test(macro, '27', -3, '0'); -test(macro, '-27', -3, '0'); -test(macro, '27', 7, '6'); -test(macro, '-27', 7, '1'); -test(macro, '27', -7, '-1'); -test(macro, '-27', -7, '-6'); -test(macro, '27', 9, '0'); -test(macro, '-27', 9, '0'); -test(macro, '27', -9, '0'); -test(macro, '-27', -9, '0'); -test(macro, '27', 11, '5'); -test(macro, '-27', 11, '6'); -test(macro, '27', -11, '-6'); -test(macro, '-27', -11, '-5'); -test(macro, '27', 17, '10'); -test(macro, '-27', 17, '7'); -test(macro, '27', -17, '-7'); -test(macro, '-27', -17, '-10'); -test(macro, '27', 22, '5'); -test(macro, '-27', 22, '17'); -test(macro, '27', -22, '-17'); -test(macro, '-27', -22, '-5'); -test(macro, '27', 24, '3'); -test(macro, '-27', 24, '21'); -test(macro, '27', -24, '-21'); -test(macro, '-27', -24, '-3'); -test(macro, '27', 27, '0'); -test(macro, '-27', 27, '0'); -test(macro, '27', -27, '0'); -test(macro, '-27', -27, '0'); -test(macro, '27', 29, '27'); -test(macro, '-27', 29, '2'); -test(macro, '27', -29, '-2'); -test(macro, '-27', -29, '-27'); -test(macro, '27', 1234, '27'); -test(macro, '-27', 1234, '1207'); -test(macro, '27', -1234, '-1207'); -test(macro, '-27', -1234, '-27'); -test(macro, '27', 5678, '27'); -test(macro, '-27', 5678, '5651'); -test(macro, '27', -5678, '-5651'); -test(macro, '-27', -5678, '-27'); -test(macro, '27', 94906265, '27'); -test(macro, '-27', 94906265, '94906238'); -test(macro, '27', -94906265, '-94906238'); -test(macro, '-27', -94906265, '-27'); -test(macro, '27', 94906266, '27'); -test(macro, '-27', 94906266, '94906239'); -test(macro, '27', -94906266, '-94906239'); -test(macro, '-27', -94906266, '-27'); -test(macro, '27', 1073741824, '27'); -test(macro, '-27', 1073741824, '1073741797'); -test(macro, '27', -1073741824, '-1073741797'); -test(macro, '-27', -1073741824, '-27'); -test(macro, '27', 51676101935731, '27'); -test(macro, '-27', 51676101935731, '51676101935704'); -test(macro, '27', -51676101935731, '-51676101935704'); -test(macro, '-27', -51676101935731, '-27'); -test(macro, '29', 1, '0'); -test(macro, '-29', 1, '0'); -test(macro, '29', -1, '0'); -test(macro, '-29', -1, '0'); -test(macro, '29', 3, '2'); -test(macro, '-29', 3, '1'); -test(macro, '29', -3, '-1'); -test(macro, '-29', -3, '-2'); -test(macro, '29', 7, '1'); -test(macro, '-29', 7, '6'); -test(macro, '29', -7, '-6'); -test(macro, '-29', -7, '-1'); -test(macro, '29', 9, '2'); -test(macro, '-29', 9, '7'); -test(macro, '29', -9, '-7'); -test(macro, '-29', -9, '-2'); -test(macro, '29', 11, '7'); -test(macro, '-29', 11, '4'); -test(macro, '29', -11, '-4'); -test(macro, '-29', -11, '-7'); -test(macro, '29', 17, '12'); -test(macro, '-29', 17, '5'); -test(macro, '29', -17, '-5'); -test(macro, '-29', -17, '-12'); -test(macro, '29', 22, '7'); -test(macro, '-29', 22, '15'); -test(macro, '29', -22, '-15'); -test(macro, '-29', -22, '-7'); -test(macro, '29', 24, '5'); -test(macro, '-29', 24, '19'); -test(macro, '29', -24, '-19'); -test(macro, '-29', -24, '-5'); -test(macro, '29', 27, '2'); -test(macro, '-29', 27, '25'); -test(macro, '29', -27, '-25'); -test(macro, '-29', -27, '-2'); -test(macro, '29', 29, '0'); -test(macro, '-29', 29, '0'); -test(macro, '29', -29, '0'); -test(macro, '-29', -29, '0'); -test(macro, '29', 1234, '29'); -test(macro, '-29', 1234, '1205'); -test(macro, '29', -1234, '-1205'); -test(macro, '-29', -1234, '-29'); -test(macro, '29', 5678, '29'); -test(macro, '-29', 5678, '5649'); -test(macro, '29', -5678, '-5649'); -test(macro, '-29', -5678, '-29'); -test(macro, '29', 94906265, '29'); -test(macro, '-29', 94906265, '94906236'); -test(macro, '29', -94906265, '-94906236'); -test(macro, '-29', -94906265, '-29'); -test(macro, '29', 94906266, '29'); -test(macro, '-29', 94906266, '94906237'); -test(macro, '29', -94906266, '-94906237'); -test(macro, '-29', -94906266, '-29'); -test(macro, '29', 1073741824, '29'); -test(macro, '-29', 1073741824, '1073741795'); -test(macro, '29', -1073741824, '-1073741795'); -test(macro, '-29', -1073741824, '-29'); -test(macro, '29', 51676101935731, '29'); -test(macro, '-29', 51676101935731, '51676101935702'); -test(macro, '29', -51676101935731, '-51676101935702'); -test(macro, '-29', -51676101935731, '-29'); -test(macro, '1234', 1, '0'); -test(macro, '-1234', 1, '0'); -test(macro, '1234', -1, '0'); -test(macro, '-1234', -1, '0'); -test(macro, '1234', 3, '1'); -test(macro, '-1234', 3, '2'); -test(macro, '1234', -3, '-2'); -test(macro, '-1234', -3, '-1'); -test(macro, '1234', 7, '2'); -test(macro, '-1234', 7, '5'); -test(macro, '1234', -7, '-5'); -test(macro, '-1234', -7, '-2'); -test(macro, '1234', 9, '1'); -test(macro, '-1234', 9, '8'); -test(macro, '1234', -9, '-8'); -test(macro, '-1234', -9, '-1'); -test(macro, '1234', 11, '2'); -test(macro, '-1234', 11, '9'); -test(macro, '1234', -11, '-9'); -test(macro, '-1234', -11, '-2'); -test(macro, '1234', 17, '10'); -test(macro, '-1234', 17, '7'); -test(macro, '1234', -17, '-7'); -test(macro, '-1234', -17, '-10'); -test(macro, '1234', 22, '2'); -test(macro, '-1234', 22, '20'); -test(macro, '1234', -22, '-20'); -test(macro, '-1234', -22, '-2'); -test(macro, '1234', 24, '10'); -test(macro, '-1234', 24, '14'); -test(macro, '1234', -24, '-14'); -test(macro, '-1234', -24, '-10'); -test(macro, '1234', 27, '19'); -test(macro, '-1234', 27, '8'); -test(macro, '1234', -27, '-8'); -test(macro, '-1234', -27, '-19'); -test(macro, '1234', 29, '16'); -test(macro, '-1234', 29, '13'); -test(macro, '1234', -29, '-13'); -test(macro, '-1234', -29, '-16'); -test(macro, '1234', 1234, '0'); -test(macro, '-1234', 1234, '0'); -test(macro, '1234', -1234, '0'); -test(macro, '-1234', -1234, '0'); -test(macro, '1234', 5678, '1234'); -test(macro, '-1234', 5678, '4444'); -test(macro, '1234', -5678, '-4444'); -test(macro, '-1234', -5678, '-1234'); -test(macro, '1234', 94906265, '1234'); -test(macro, '-1234', 94906265, '94905031'); -test(macro, '1234', -94906265, '-94905031'); -test(macro, '-1234', -94906265, '-1234'); -test(macro, '1234', 94906266, '1234'); -test(macro, '-1234', 94906266, '94905032'); -test(macro, '1234', -94906266, '-94905032'); -test(macro, '-1234', -94906266, '-1234'); -test(macro, '1234', 1073741824, '1234'); -test(macro, '-1234', 1073741824, '1073740590'); -test(macro, '1234', -1073741824, '-1073740590'); -test(macro, '-1234', -1073741824, '-1234'); -test(macro, '1234', 51676101935731, '1234'); -test(macro, '-1234', 51676101935731, '51676101934497'); -test(macro, '1234', -51676101935731, '-51676101934497'); -test(macro, '-1234', -51676101935731, '-1234'); -test(macro, '5678', 1, '0'); -test(macro, '-5678', 1, '0'); -test(macro, '5678', -1, '0'); -test(macro, '-5678', -1, '0'); -test(macro, '5678', 3, '2'); -test(macro, '-5678', 3, '1'); -test(macro, '5678', -3, '-1'); -test(macro, '-5678', -3, '-2'); -test(macro, '5678', 7, '1'); -test(macro, '-5678', 7, '6'); -test(macro, '5678', -7, '-6'); -test(macro, '-5678', -7, '-1'); -test(macro, '5678', 9, '8'); -test(macro, '-5678', 9, '1'); -test(macro, '5678', -9, '-1'); -test(macro, '-5678', -9, '-8'); -test(macro, '5678', 11, '2'); -test(macro, '-5678', 11, '9'); -test(macro, '5678', -11, '-9'); -test(macro, '-5678', -11, '-2'); -test(macro, '5678', 17, '0'); -test(macro, '-5678', 17, '0'); -test(macro, '5678', -17, '0'); -test(macro, '-5678', -17, '0'); -test(macro, '5678', 22, '2'); -test(macro, '-5678', 22, '20'); -test(macro, '5678', -22, '-20'); -test(macro, '-5678', -22, '-2'); -test(macro, '5678', 24, '14'); -test(macro, '-5678', 24, '10'); -test(macro, '5678', -24, '-10'); -test(macro, '-5678', -24, '-14'); -test(macro, '5678', 27, '8'); -test(macro, '-5678', 27, '19'); -test(macro, '5678', -27, '-19'); -test(macro, '-5678', -27, '-8'); -test(macro, '5678', 29, '23'); -test(macro, '-5678', 29, '6'); -test(macro, '5678', -29, '-6'); -test(macro, '-5678', -29, '-23'); -test(macro, '5678', 1234, '742'); -test(macro, '-5678', 1234, '492'); -test(macro, '5678', -1234, '-492'); -test(macro, '-5678', -1234, '-742'); -test(macro, '5678', 5678, '0'); -test(macro, '-5678', 5678, '0'); -test(macro, '5678', -5678, '0'); -test(macro, '-5678', -5678, '0'); -test(macro, '5678', 94906265, '5678'); -test(macro, '-5678', 94906265, '94900587'); -test(macro, '5678', -94906265, '-94900587'); -test(macro, '-5678', -94906265, '-5678'); -test(macro, '5678', 94906266, '5678'); -test(macro, '-5678', 94906266, '94900588'); -test(macro, '5678', -94906266, '-94900588'); -test(macro, '-5678', -94906266, '-5678'); -test(macro, '5678', 1073741824, '5678'); -test(macro, '-5678', 1073741824, '1073736146'); -test(macro, '5678', -1073741824, '-1073736146'); -test(macro, '-5678', -1073741824, '-5678'); -test(macro, '5678', 51676101935731, '5678'); -test(macro, '-5678', 51676101935731, '51676101930053'); -test(macro, '5678', -51676101935731, '-51676101930053'); -test(macro, '-5678', -51676101935731, '-5678'); -test(macro, '94906265', 1, '0'); -test(macro, '-94906265', 1, '0'); -test(macro, '94906265', -1, '0'); -test(macro, '-94906265', -1, '0'); -test(macro, '94906265', 3, '2'); -test(macro, '-94906265', 3, '1'); -test(macro, '94906265', -3, '-1'); -test(macro, '-94906265', -3, '-2'); -test(macro, '94906265', 7, '6'); -test(macro, '-94906265', 7, '1'); -test(macro, '94906265', -7, '-1'); -test(macro, '-94906265', -7, '-6'); -test(macro, '94906265', 9, '5'); -test(macro, '-94906265', 9, '4'); -test(macro, '94906265', -9, '-4'); -test(macro, '-94906265', -9, '-5'); -test(macro, '94906265', 11, '3'); -test(macro, '-94906265', 11, '8'); -test(macro, '94906265', -11, '-8'); -test(macro, '-94906265', -11, '-3'); -test(macro, '94906265', 17, '8'); -test(macro, '-94906265', 17, '9'); -test(macro, '94906265', -17, '-9'); -test(macro, '-94906265', -17, '-8'); -test(macro, '94906265', 22, '3'); -test(macro, '-94906265', 22, '19'); -test(macro, '94906265', -22, '-19'); -test(macro, '-94906265', -22, '-3'); -test(macro, '94906265', 24, '17'); -test(macro, '-94906265', 24, '7'); -test(macro, '94906265', -24, '-7'); -test(macro, '-94906265', -24, '-17'); -test(macro, '94906265', 27, '23'); -test(macro, '-94906265', 27, '4'); -test(macro, '94906265', -27, '-4'); -test(macro, '-94906265', -27, '-23'); -test(macro, '94906265', 29, '24'); -test(macro, '-94906265', 29, '5'); -test(macro, '94906265', -29, '-5'); -test(macro, '-94906265', -29, '-24'); -test(macro, '94906265', 1234, '559'); -test(macro, '-94906265', 1234, '675'); -test(macro, '94906265', -1234, '-675'); -test(macro, '-94906265', -1234, '-559'); -test(macro, '94906265', 5678, '4173'); -test(macro, '-94906265', 5678, '1505'); -test(macro, '94906265', -5678, '-1505'); -test(macro, '-94906265', -5678, '-4173'); -test(macro, '94906265', 94906265, '0'); -test(macro, '-94906265', 94906265, '0'); -test(macro, '94906265', -94906265, '0'); -test(macro, '-94906265', -94906265, '0'); -test(macro, '94906265', 94906266, '94906265'); -test(macro, '-94906265', 94906266, '1'); -test(macro, '94906265', -94906266, '-1'); -test(macro, '-94906265', -94906266, '-94906265'); -test(macro, '94906265', 1073741824, '94906265'); -test(macro, '-94906265', 1073741824, '978835559'); -test(macro, '94906265', -1073741824, '-978835559'); -test(macro, '-94906265', -1073741824, '-94906265'); -test(macro, '94906265', 51676101935731, '94906265'); -test(macro, '-94906265', 51676101935731, '51676007029466'); -test(macro, '94906265', -51676101935731, '-51676007029466'); -test(macro, '-94906265', -51676101935731, '-94906265'); -test(macro, '94906266', 1, '0'); -test(macro, '-94906266', 1, '0'); -test(macro, '94906266', -1, '0'); -test(macro, '-94906266', -1, '0'); -test(macro, '94906266', 3, '0'); -test(macro, '-94906266', 3, '0'); -test(macro, '94906266', -3, '0'); -test(macro, '-94906266', -3, '0'); -test(macro, '94906266', 7, '0'); -test(macro, '-94906266', 7, '0'); -test(macro, '94906266', -7, '0'); -test(macro, '-94906266', -7, '0'); -test(macro, '94906266', 9, '6'); -test(macro, '-94906266', 9, '3'); -test(macro, '94906266', -9, '-3'); -test(macro, '-94906266', -9, '-6'); -test(macro, '94906266', 11, '4'); -test(macro, '-94906266', 11, '7'); -test(macro, '94906266', -11, '-7'); -test(macro, '-94906266', -11, '-4'); -test(macro, '94906266', 17, '9'); -test(macro, '-94906266', 17, '8'); -test(macro, '94906266', -17, '-8'); -test(macro, '-94906266', -17, '-9'); -test(macro, '94906266', 22, '4'); -test(macro, '-94906266', 22, '18'); -test(macro, '94906266', -22, '-18'); -test(macro, '-94906266', -22, '-4'); -test(macro, '94906266', 24, '18'); -test(macro, '-94906266', 24, '6'); -test(macro, '94906266', -24, '-6'); -test(macro, '-94906266', -24, '-18'); -test(macro, '94906266', 27, '24'); -test(macro, '-94906266', 27, '3'); -test(macro, '94906266', -27, '-3'); -test(macro, '-94906266', -27, '-24'); -test(macro, '94906266', 29, '25'); -test(macro, '-94906266', 29, '4'); -test(macro, '94906266', -29, '-4'); -test(macro, '-94906266', -29, '-25'); -test(macro, '94906266', 1234, '560'); -test(macro, '-94906266', 1234, '674'); -test(macro, '94906266', -1234, '-674'); -test(macro, '-94906266', -1234, '-560'); -test(macro, '94906266', 5678, '4174'); -test(macro, '-94906266', 5678, '1504'); -test(macro, '94906266', -5678, '-1504'); -test(macro, '-94906266', -5678, '-4174'); -test(macro, '94906266', 94906265, '1'); -test(macro, '-94906266', 94906265, '94906264'); -test(macro, '94906266', -94906265, '-94906264'); -test(macro, '-94906266', -94906265, '-1'); -test(macro, '94906266', 94906266, '0'); -test(macro, '-94906266', 94906266, '0'); -test(macro, '94906266', -94906266, '0'); -test(macro, '-94906266', -94906266, '0'); -test(macro, '94906266', 1073741824, '94906266'); -test(macro, '-94906266', 1073741824, '978835558'); -test(macro, '94906266', -1073741824, '-978835558'); -test(macro, '-94906266', -1073741824, '-94906266'); -test(macro, '94906266', 51676101935731, '94906266'); -test(macro, '-94906266', 51676101935731, '51676007029465'); -test(macro, '94906266', -51676101935731, '-51676007029465'); -test(macro, '-94906266', -51676101935731, '-94906266'); -test(macro, '1073741824', 1, '0'); -test(macro, '-1073741824', 1, '0'); -test(macro, '1073741824', -1, '0'); -test(macro, '-1073741824', -1, '0'); -test(macro, '1073741824', 3, '1'); -test(macro, '-1073741824', 3, '2'); -test(macro, '1073741824', -3, '-2'); -test(macro, '-1073741824', -3, '-1'); -test(macro, '1073741824', 7, '1'); -test(macro, '-1073741824', 7, '6'); -test(macro, '1073741824', -7, '-6'); -test(macro, '-1073741824', -7, '-1'); -test(macro, '1073741824', 9, '1'); -test(macro, '-1073741824', 9, '8'); -test(macro, '1073741824', -9, '-8'); -test(macro, '-1073741824', -9, '-1'); -test(macro, '1073741824', 11, '1'); -test(macro, '-1073741824', 11, '10'); -test(macro, '1073741824', -11, '-10'); -test(macro, '-1073741824', -11, '-1'); -test(macro, '1073741824', 17, '13'); -test(macro, '-1073741824', 17, '4'); -test(macro, '1073741824', -17, '-4'); -test(macro, '-1073741824', -17, '-13'); -test(macro, '1073741824', 22, '12'); -test(macro, '-1073741824', 22, '10'); -test(macro, '1073741824', -22, '-10'); -test(macro, '-1073741824', -22, '-12'); -test(macro, '1073741824', 24, '16'); -test(macro, '-1073741824', 24, '8'); -test(macro, '1073741824', -24, '-8'); -test(macro, '-1073741824', -24, '-16'); -test(macro, '1073741824', 27, '19'); -test(macro, '-1073741824', 27, '8'); -test(macro, '1073741824', -27, '-8'); -test(macro, '-1073741824', -27, '-19'); -test(macro, '1073741824', 29, '4'); -test(macro, '-1073741824', 29, '25'); -test(macro, '1073741824', -29, '-25'); -test(macro, '-1073741824', -29, '-4'); -test(macro, '1073741824', 1234, '170'); -test(macro, '-1073741824', 1234, '1064'); -test(macro, '1073741824', -1234, '-1064'); -test(macro, '-1073741824', -1234, '-170'); -test(macro, '1073741824', 5678, '3634'); -test(macro, '-1073741824', 5678, '2044'); -test(macro, '1073741824', -5678, '-2044'); -test(macro, '-1073741824', -5678, '-3634'); -test(macro, '1073741824', 94906265, '29772909'); -test(macro, '-1073741824', 94906265, '65133356'); -test(macro, '1073741824', -94906265, '-65133356'); -test(macro, '-1073741824', -94906265, '-29772909'); -test(macro, '1073741824', 94906266, '29772898'); -test(macro, '-1073741824', 94906266, '65133368'); -test(macro, '1073741824', -94906266, '-65133368'); -test(macro, '-1073741824', -94906266, '-29772898'); -test(macro, '1073741824', 1073741824, '0'); -test(macro, '-1073741824', 1073741824, '0'); -test(macro, '1073741824', -1073741824, '0'); -test(macro, '-1073741824', -1073741824, '0'); -test(macro, '1073741824', 51676101935731, '1073741824'); -test(macro, '-1073741824', 51676101935731, '51675028193907'); -test(macro, '1073741824', -51676101935731, '-51675028193907'); -test(macro, '-1073741824', -51676101935731, '-1073741824'); -test(macro, '51676101935731', 1, '0'); -test(macro, '-51676101935731', 1, '0'); -test(macro, '51676101935731', -1, '0'); -test(macro, '-51676101935731', -1, '0'); -test(macro, '51676101935731', 3, '1'); -test(macro, '-51676101935731', 3, '2'); -test(macro, '51676101935731', -3, '-2'); -test(macro, '-51676101935731', -3, '-1'); -test(macro, '51676101935731', 7, '0'); -test(macro, '-51676101935731', 7, '0'); -test(macro, '51676101935731', -7, '0'); -test(macro, '-51676101935731', -7, '0'); -test(macro, '51676101935731', 9, '1'); -test(macro, '-51676101935731', 9, '8'); -test(macro, '51676101935731', -9, '-8'); -test(macro, '-51676101935731', -9, '-1'); -test(macro, '51676101935731', 11, '9'); -test(macro, '-51676101935731', 11, '2'); -test(macro, '51676101935731', -11, '-2'); -test(macro, '-51676101935731', -11, '-9'); -test(macro, '51676101935731', 17, '14'); -test(macro, '-51676101935731', 17, '3'); -test(macro, '51676101935731', -17, '-3'); -test(macro, '-51676101935731', -17, '-14'); -test(macro, '51676101935731', 22, '9'); -test(macro, '-51676101935731', 22, '13'); -test(macro, '51676101935731', -22, '-13'); -test(macro, '-51676101935731', -22, '-9'); -test(macro, '51676101935731', 24, '19'); -test(macro, '-51676101935731', 24, '5'); -test(macro, '51676101935731', -24, '-5'); -test(macro, '-51676101935731', -24, '-19'); -test(macro, '51676101935731', 27, '10'); -test(macro, '-51676101935731', 27, '17'); -test(macro, '51676101935731', -27, '-17'); -test(macro, '-51676101935731', -27, '-10'); -test(macro, '51676101935731', 29, '28'); -test(macro, '-51676101935731', 29, '1'); -test(macro, '51676101935731', -29, '-1'); -test(macro, '-51676101935731', -29, '-28'); -test(macro, '51676101935731', 1234, '835'); -test(macro, '-51676101935731', 1234, '399'); -test(macro, '51676101935731', -1234, '-399'); -test(macro, '-51676101935731', -1234, '-835'); -test(macro, '51676101935731', 5678, '3023'); -test(macro, '-51676101935731', 5678, '2655'); -test(macro, '51676101935731', -5678, '-2655'); -test(macro, '-51676101935731', -5678, '-3023'); -test(macro, '51676101935731', 94906265, '20268291'); -test(macro, '-51676101935731', 94906265, '74637974'); -test(macro, '51676101935731', -94906265, '-74637974'); -test(macro, '-51676101935731', -94906265, '-20268291'); -test(macro, '51676101935731', 94906266, '19723795'); -test(macro, '-51676101935731', 94906266, '75182471'); -test(macro, '51676101935731', -94906266, '-75182471'); -test(macro, '-51676101935731', -94906266, '-19723795'); -test(macro, '51676101935731', 1073741824, '129172083'); -test(macro, '-51676101935731', 1073741824, '944569741'); -test(macro, '51676101935731', -1073741824, '-944569741'); -test(macro, '-51676101935731', -1073741824, '-129172083'); -test(macro, '51676101935731', 51676101935731, '0'); -test(macro, '-51676101935731', 51676101935731, '0'); -test(macro, '51676101935731', -51676101935731, '0'); -test(macro, '-51676101935731', -51676101935731, '0'); -test(macro, '717897987691852588770249', 1, '0'); -test(macro, '-717897987691852588770249', 1, '0'); -test(macro, '717897987691852588770249', -1, '0'); -test(macro, '-717897987691852588770249', -1, '0'); -test(macro, '717897987691852588770249', 3, '0'); -test(macro, '-717897987691852588770249', 3, '0'); -test(macro, '717897987691852588770249', -3, '0'); -test(macro, '-717897987691852588770249', -3, '0'); -test(macro, '717897987691852588770249', 7, '2'); -test(macro, '-717897987691852588770249', 7, '5'); -test(macro, '717897987691852588770249', -7, '-5'); -test(macro, '-717897987691852588770249', -7, '-2'); -test(macro, '717897987691852588770249', 9, '0'); -test(macro, '-717897987691852588770249', 9, '0'); -test(macro, '717897987691852588770249', -9, '0'); -test(macro, '-717897987691852588770249', -9, '0'); -test(macro, '717897987691852588770249', 11, '1'); -test(macro, '-717897987691852588770249', 11, '10'); -test(macro, '717897987691852588770249', -11, '-10'); -test(macro, '-717897987691852588770249', -11, '-1'); -test(macro, '717897987691852588770249', 17, '9'); -test(macro, '-717897987691852588770249', 17, '8'); -test(macro, '717897987691852588770249', -17, '-8'); -test(macro, '-717897987691852588770249', -17, '-9'); -test(macro, '717897987691852588770249', 22, '1'); -test(macro, '-717897987691852588770249', 22, '21'); -test(macro, '717897987691852588770249', -22, '-21'); -test(macro, '-717897987691852588770249', -22, '-1'); -test(macro, '717897987691852588770249', 24, '9'); -test(macro, '-717897987691852588770249', 24, '15'); -test(macro, '717897987691852588770249', -24, '-15'); -test(macro, '-717897987691852588770249', -24, '-9'); -test(macro, '717897987691852588770249', 27, '0'); -test(macro, '-717897987691852588770249', 27, '0'); -test(macro, '717897987691852588770249', -27, '0'); -test(macro, '-717897987691852588770249', -27, '0'); -test(macro, '717897987691852588770249', 29, '22'); -test(macro, '-717897987691852588770249', 29, '7'); -test(macro, '717897987691852588770249', -29, '-7'); -test(macro, '-717897987691852588770249', -29, '-22'); -test(macro, '717897987691852588770249', 1234, '755'); -test(macro, '-717897987691852588770249', 1234, '479'); -test(macro, '717897987691852588770249', -1234, '-479'); -test(macro, '-717897987691852588770249', -1234, '-755'); -test(macro, '717897987691852588770249', 5678, '3477'); -test(macro, '-717897987691852588770249', 5678, '2201'); -test(macro, '717897987691852588770249', -5678, '-2201'); -test(macro, '-717897987691852588770249', -5678, '-3477'); -test(macro, '717897987691852588770249', 94906265, '56517934'); -test(macro, '-717897987691852588770249', 94906265, '38388331'); -test(macro, '717897987691852588770249', -94906265, '-38388331'); -test(macro, '-717897987691852588770249', -94906265, '-56517934'); -test(macro, '717897987691852588770249', 94906266, '81625371'); -test(macro, '-717897987691852588770249', 94906266, '13280895'); -test(macro, '717897987691852588770249', -94906266, '-13280895'); -test(macro, '-717897987691852588770249', -94906266, '-81625371'); -test(macro, '717897987691852588770249', 1073741824, '278782921'); -test(macro, '-717897987691852588770249', 1073741824, '794958903'); -test(macro, '717897987691852588770249', -1073741824, '-794958903'); -test(macro, '-717897987691852588770249', -1073741824, '-278782921'); -test(macro, '717897987691852588770249', 51676101935731, '51258661506607'); -test(macro, '-717897987691852588770249', 51676101935731, '417440429124'); -test(macro, '717897987691852588770249', -51676101935731, '-417440429124'); -test(macro, '-717897987691852588770249', -51676101935731, '-51258661506607'); diff --git a/test/src/integer/arithmetic/mul.js b/test/src/integer/arithmetic/mul.js deleted file mode 100644 index b92534a..0000000 --- a/test/src/integer/arithmetic/mul.js +++ /dev/null @@ -1,1496 +0,0 @@ -import test from 'ava'; -import {parse, stringify, mul} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const b = parse(B); - const c = mul(a, b); - t.is(stringify(a), A); - t.is(stringify(b), B); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `mul(${fmt(A)},${fmt(B)}) = ${fmt(C)}`; - -test(macro, '0', '0', '0'); -test(macro, '0', '1', '0'); -test(macro, '0', '-1', '0'); -test(macro, '0', '3', '0'); -test(macro, '0', '-3', '0'); -test(macro, '0', '7', '0'); -test(macro, '0', '-7', '0'); -test(macro, '0', '9', '0'); -test(macro, '0', '-9', '0'); -test(macro, '0', '11', '0'); -test(macro, '0', '-11', '0'); -test(macro, '0', '17', '0'); -test(macro, '0', '-17', '0'); -test(macro, '0', '22', '0'); -test(macro, '0', '-22', '0'); -test(macro, '0', '24', '0'); -test(macro, '0', '-24', '0'); -test(macro, '0', '27', '0'); -test(macro, '0', '-27', '0'); -test(macro, '0', '29', '0'); -test(macro, '0', '-29', '0'); -test(macro, '0', '1234', '0'); -test(macro, '0', '-1234', '0'); -test(macro, '0', '5678', '0'); -test(macro, '0', '-5678', '0'); -test(macro, '0', '94906265', '0'); -test(macro, '0', '-94906265', '0'); -test(macro, '0', '94906266', '0'); -test(macro, '0', '-94906266', '0'); -test(macro, '0', '1073741824', '0'); -test(macro, '0', '-1073741824', '0'); -test(macro, '0', '51676101935731', '0'); -test(macro, '0', '-51676101935731', '0'); -test(macro, '0', '717897987691852588770249', '0'); -test(macro, '0', '-717897987691852588770249', '0'); -test(macro, '1', '0', '0'); -test(macro, '-1', '0', '0'); -test(macro, '1', '1', '1'); -test(macro, '-1', '1', '-1'); -test(macro, '1', '-1', '-1'); -test(macro, '-1', '-1', '1'); -test(macro, '1', '3', '3'); -test(macro, '-1', '3', '-3'); -test(macro, '1', '-3', '-3'); -test(macro, '-1', '-3', '3'); -test(macro, '1', '7', '7'); -test(macro, '-1', '7', '-7'); -test(macro, '1', '-7', '-7'); -test(macro, '-1', '-7', '7'); -test(macro, '1', '9', '9'); -test(macro, '-1', '9', '-9'); -test(macro, '1', '-9', '-9'); -test(macro, '-1', '-9', '9'); -test(macro, '1', '11', '11'); -test(macro, '-1', '11', '-11'); -test(macro, '1', '-11', '-11'); -test(macro, '-1', '-11', '11'); -test(macro, '1', '17', '17'); -test(macro, '-1', '17', '-17'); -test(macro, '1', '-17', '-17'); -test(macro, '-1', '-17', '17'); -test(macro, '1', '22', '22'); -test(macro, '-1', '22', '-22'); -test(macro, '1', '-22', '-22'); -test(macro, '-1', '-22', '22'); -test(macro, '1', '24', '24'); -test(macro, '-1', '24', '-24'); -test(macro, '1', '-24', '-24'); -test(macro, '-1', '-24', '24'); -test(macro, '1', '27', '27'); -test(macro, '-1', '27', '-27'); -test(macro, '1', '-27', '-27'); -test(macro, '-1', '-27', '27'); -test(macro, '1', '29', '29'); -test(macro, '-1', '29', '-29'); -test(macro, '1', '-29', '-29'); -test(macro, '-1', '-29', '29'); -test(macro, '1', '1234', '1234'); -test(macro, '-1', '1234', '-1234'); -test(macro, '1', '-1234', '-1234'); -test(macro, '-1', '-1234', '1234'); -test(macro, '1', '5678', '5678'); -test(macro, '-1', '5678', '-5678'); -test(macro, '1', '-5678', '-5678'); -test(macro, '-1', '-5678', '5678'); -test(macro, '1', '94906265', '94906265'); -test(macro, '-1', '94906265', '-94906265'); -test(macro, '1', '-94906265', '-94906265'); -test(macro, '-1', '-94906265', '94906265'); -test(macro, '1', '94906266', '94906266'); -test(macro, '-1', '94906266', '-94906266'); -test(macro, '1', '-94906266', '-94906266'); -test(macro, '-1', '-94906266', '94906266'); -test(macro, '1', '1073741824', '1073741824'); -test(macro, '-1', '1073741824', '-1073741824'); -test(macro, '1', '-1073741824', '-1073741824'); -test(macro, '-1', '-1073741824', '1073741824'); -test(macro, '1', '51676101935731', '51676101935731'); -test(macro, '-1', '51676101935731', '-51676101935731'); -test(macro, '1', '-51676101935731', '-51676101935731'); -test(macro, '-1', '-51676101935731', '51676101935731'); -test(macro, '1', '717897987691852588770249', '717897987691852588770249'); -test(macro, '-1', '717897987691852588770249', '-717897987691852588770249'); -test(macro, '1', '-717897987691852588770249', '-717897987691852588770249'); -test(macro, '-1', '-717897987691852588770249', '717897987691852588770249'); -test(macro, '3', '0', '0'); -test(macro, '-3', '0', '0'); -test(macro, '3', '1', '3'); -test(macro, '-3', '1', '-3'); -test(macro, '3', '-1', '-3'); -test(macro, '-3', '-1', '3'); -test(macro, '3', '3', '9'); -test(macro, '-3', '3', '-9'); -test(macro, '3', '-3', '-9'); -test(macro, '-3', '-3', '9'); -test(macro, '3', '7', '21'); -test(macro, '-3', '7', '-21'); -test(macro, '3', '-7', '-21'); -test(macro, '-3', '-7', '21'); -test(macro, '3', '9', '27'); -test(macro, '-3', '9', '-27'); -test(macro, '3', '-9', '-27'); -test(macro, '-3', '-9', '27'); -test(macro, '3', '11', '33'); -test(macro, '-3', '11', '-33'); -test(macro, '3', '-11', '-33'); -test(macro, '-3', '-11', '33'); -test(macro, '3', '17', '51'); -test(macro, '-3', '17', '-51'); -test(macro, '3', '-17', '-51'); -test(macro, '-3', '-17', '51'); -test(macro, '3', '22', '66'); -test(macro, '-3', '22', '-66'); -test(macro, '3', '-22', '-66'); -test(macro, '-3', '-22', '66'); -test(macro, '3', '24', '72'); -test(macro, '-3', '24', '-72'); -test(macro, '3', '-24', '-72'); -test(macro, '-3', '-24', '72'); -test(macro, '3', '27', '81'); -test(macro, '-3', '27', '-81'); -test(macro, '3', '-27', '-81'); -test(macro, '-3', '-27', '81'); -test(macro, '3', '29', '87'); -test(macro, '-3', '29', '-87'); -test(macro, '3', '-29', '-87'); -test(macro, '-3', '-29', '87'); -test(macro, '3', '1234', '3702'); -test(macro, '-3', '1234', '-3702'); -test(macro, '3', '-1234', '-3702'); -test(macro, '-3', '-1234', '3702'); -test(macro, '3', '5678', '17034'); -test(macro, '-3', '5678', '-17034'); -test(macro, '3', '-5678', '-17034'); -test(macro, '-3', '-5678', '17034'); -test(macro, '3', '94906265', '284718795'); -test(macro, '-3', '94906265', '-284718795'); -test(macro, '3', '-94906265', '-284718795'); -test(macro, '-3', '-94906265', '284718795'); -test(macro, '3', '94906266', '284718798'); -test(macro, '-3', '94906266', '-284718798'); -test(macro, '3', '-94906266', '-284718798'); -test(macro, '-3', '-94906266', '284718798'); -test(macro, '3', '1073741824', '3221225472'); -test(macro, '-3', '1073741824', '-3221225472'); -test(macro, '3', '-1073741824', '-3221225472'); -test(macro, '-3', '-1073741824', '3221225472'); -test(macro, '3', '51676101935731', '155028305807193'); -test(macro, '-3', '51676101935731', '-155028305807193'); -test(macro, '3', '-51676101935731', '-155028305807193'); -test(macro, '-3', '-51676101935731', '155028305807193'); -test(macro, '3', '717897987691852588770249', '2153693963075557766310747'); -test(macro, '-3', '717897987691852588770249', '-2153693963075557766310747'); -test(macro, '3', '-717897987691852588770249', '-2153693963075557766310747'); -test(macro, '-3', '-717897987691852588770249', '2153693963075557766310747'); -test(macro, '7', '0', '0'); -test(macro, '-7', '0', '0'); -test(macro, '7', '1', '7'); -test(macro, '-7', '1', '-7'); -test(macro, '7', '-1', '-7'); -test(macro, '-7', '-1', '7'); -test(macro, '7', '3', '21'); -test(macro, '-7', '3', '-21'); -test(macro, '7', '-3', '-21'); -test(macro, '-7', '-3', '21'); -test(macro, '7', '7', '49'); -test(macro, '-7', '7', '-49'); -test(macro, '7', '-7', '-49'); -test(macro, '-7', '-7', '49'); -test(macro, '7', '9', '63'); -test(macro, '-7', '9', '-63'); -test(macro, '7', '-9', '-63'); -test(macro, '-7', '-9', '63'); -test(macro, '7', '11', '77'); -test(macro, '-7', '11', '-77'); -test(macro, '7', '-11', '-77'); -test(macro, '-7', '-11', '77'); -test(macro, '7', '17', '119'); -test(macro, '-7', '17', '-119'); -test(macro, '7', '-17', '-119'); -test(macro, '-7', '-17', '119'); -test(macro, '7', '22', '154'); -test(macro, '-7', '22', '-154'); -test(macro, '7', '-22', '-154'); -test(macro, '-7', '-22', '154'); -test(macro, '7', '24', '168'); -test(macro, '-7', '24', '-168'); -test(macro, '7', '-24', '-168'); -test(macro, '-7', '-24', '168'); -test(macro, '7', '27', '189'); -test(macro, '-7', '27', '-189'); -test(macro, '7', '-27', '-189'); -test(macro, '-7', '-27', '189'); -test(macro, '7', '29', '203'); -test(macro, '-7', '29', '-203'); -test(macro, '7', '-29', '-203'); -test(macro, '-7', '-29', '203'); -test(macro, '7', '1234', '8638'); -test(macro, '-7', '1234', '-8638'); -test(macro, '7', '-1234', '-8638'); -test(macro, '-7', '-1234', '8638'); -test(macro, '7', '5678', '39746'); -test(macro, '-7', '5678', '-39746'); -test(macro, '7', '-5678', '-39746'); -test(macro, '-7', '-5678', '39746'); -test(macro, '7', '94906265', '664343855'); -test(macro, '-7', '94906265', '-664343855'); -test(macro, '7', '-94906265', '-664343855'); -test(macro, '-7', '-94906265', '664343855'); -test(macro, '7', '94906266', '664343862'); -test(macro, '-7', '94906266', '-664343862'); -test(macro, '7', '-94906266', '-664343862'); -test(macro, '-7', '-94906266', '664343862'); -test(macro, '7', '1073741824', '7516192768'); -test(macro, '-7', '1073741824', '-7516192768'); -test(macro, '7', '-1073741824', '-7516192768'); -test(macro, '-7', '-1073741824', '7516192768'); -test(macro, '7', '51676101935731', '361732713550117'); -test(macro, '-7', '51676101935731', '-361732713550117'); -test(macro, '7', '-51676101935731', '-361732713550117'); -test(macro, '-7', '-51676101935731', '361732713550117'); -test(macro, '7', '717897987691852588770249', '5025285913842968121391743'); -test(macro, '-7', '717897987691852588770249', '-5025285913842968121391743'); -test(macro, '7', '-717897987691852588770249', '-5025285913842968121391743'); -test(macro, '-7', '-717897987691852588770249', '5025285913842968121391743'); -test(macro, '9', '0', '0'); -test(macro, '-9', '0', '0'); -test(macro, '9', '1', '9'); -test(macro, '-9', '1', '-9'); -test(macro, '9', '-1', '-9'); -test(macro, '-9', '-1', '9'); -test(macro, '9', '3', '27'); -test(macro, '-9', '3', '-27'); -test(macro, '9', '-3', '-27'); -test(macro, '-9', '-3', '27'); -test(macro, '9', '7', '63'); -test(macro, '-9', '7', '-63'); -test(macro, '9', '-7', '-63'); -test(macro, '-9', '-7', '63'); -test(macro, '9', '9', '81'); -test(macro, '-9', '9', '-81'); -test(macro, '9', '-9', '-81'); -test(macro, '-9', '-9', '81'); -test(macro, '9', '11', '99'); -test(macro, '-9', '11', '-99'); -test(macro, '9', '-11', '-99'); -test(macro, '-9', '-11', '99'); -test(macro, '9', '17', '153'); -test(macro, '-9', '17', '-153'); -test(macro, '9', '-17', '-153'); -test(macro, '-9', '-17', '153'); -test(macro, '9', '22', '198'); -test(macro, '-9', '22', '-198'); -test(macro, '9', '-22', '-198'); -test(macro, '-9', '-22', '198'); -test(macro, '9', '24', '216'); -test(macro, '-9', '24', '-216'); -test(macro, '9', '-24', '-216'); -test(macro, '-9', '-24', '216'); -test(macro, '9', '27', '243'); -test(macro, '-9', '27', '-243'); -test(macro, '9', '-27', '-243'); -test(macro, '-9', '-27', '243'); -test(macro, '9', '29', '261'); -test(macro, '-9', '29', '-261'); -test(macro, '9', '-29', '-261'); -test(macro, '-9', '-29', '261'); -test(macro, '9', '1234', '11106'); -test(macro, '-9', '1234', '-11106'); -test(macro, '9', '-1234', '-11106'); -test(macro, '-9', '-1234', '11106'); -test(macro, '9', '5678', '51102'); -test(macro, '-9', '5678', '-51102'); -test(macro, '9', '-5678', '-51102'); -test(macro, '-9', '-5678', '51102'); -test(macro, '9', '94906265', '854156385'); -test(macro, '-9', '94906265', '-854156385'); -test(macro, '9', '-94906265', '-854156385'); -test(macro, '-9', '-94906265', '854156385'); -test(macro, '9', '94906266', '854156394'); -test(macro, '-9', '94906266', '-854156394'); -test(macro, '9', '-94906266', '-854156394'); -test(macro, '-9', '-94906266', '854156394'); -test(macro, '9', '1073741824', '9663676416'); -test(macro, '-9', '1073741824', '-9663676416'); -test(macro, '9', '-1073741824', '-9663676416'); -test(macro, '-9', '-1073741824', '9663676416'); -test(macro, '9', '51676101935731', '465084917421579'); -test(macro, '-9', '51676101935731', '-465084917421579'); -test(macro, '9', '-51676101935731', '-465084917421579'); -test(macro, '-9', '-51676101935731', '465084917421579'); -test(macro, '9', '717897987691852588770249', '6461081889226673298932241'); -test(macro, '-9', '717897987691852588770249', '-6461081889226673298932241'); -test(macro, '9', '-717897987691852588770249', '-6461081889226673298932241'); -test(macro, '-9', '-717897987691852588770249', '6461081889226673298932241'); -test(macro, '11', '0', '0'); -test(macro, '-11', '0', '0'); -test(macro, '11', '1', '11'); -test(macro, '-11', '1', '-11'); -test(macro, '11', '-1', '-11'); -test(macro, '-11', '-1', '11'); -test(macro, '11', '3', '33'); -test(macro, '-11', '3', '-33'); -test(macro, '11', '-3', '-33'); -test(macro, '-11', '-3', '33'); -test(macro, '11', '7', '77'); -test(macro, '-11', '7', '-77'); -test(macro, '11', '-7', '-77'); -test(macro, '-11', '-7', '77'); -test(macro, '11', '9', '99'); -test(macro, '-11', '9', '-99'); -test(macro, '11', '-9', '-99'); -test(macro, '-11', '-9', '99'); -test(macro, '11', '11', '121'); -test(macro, '-11', '11', '-121'); -test(macro, '11', '-11', '-121'); -test(macro, '-11', '-11', '121'); -test(macro, '11', '17', '187'); -test(macro, '-11', '17', '-187'); -test(macro, '11', '-17', '-187'); -test(macro, '-11', '-17', '187'); -test(macro, '11', '22', '242'); -test(macro, '-11', '22', '-242'); -test(macro, '11', '-22', '-242'); -test(macro, '-11', '-22', '242'); -test(macro, '11', '24', '264'); -test(macro, '-11', '24', '-264'); -test(macro, '11', '-24', '-264'); -test(macro, '-11', '-24', '264'); -test(macro, '11', '27', '297'); -test(macro, '-11', '27', '-297'); -test(macro, '11', '-27', '-297'); -test(macro, '-11', '-27', '297'); -test(macro, '11', '29', '319'); -test(macro, '-11', '29', '-319'); -test(macro, '11', '-29', '-319'); -test(macro, '-11', '-29', '319'); -test(macro, '11', '1234', '13574'); -test(macro, '-11', '1234', '-13574'); -test(macro, '11', '-1234', '-13574'); -test(macro, '-11', '-1234', '13574'); -test(macro, '11', '5678', '62458'); -test(macro, '-11', '5678', '-62458'); -test(macro, '11', '-5678', '-62458'); -test(macro, '-11', '-5678', '62458'); -test(macro, '11', '94906265', '1043968915'); -test(macro, '-11', '94906265', '-1043968915'); -test(macro, '11', '-94906265', '-1043968915'); -test(macro, '-11', '-94906265', '1043968915'); -test(macro, '11', '94906266', '1043968926'); -test(macro, '-11', '94906266', '-1043968926'); -test(macro, '11', '-94906266', '-1043968926'); -test(macro, '-11', '-94906266', '1043968926'); -test(macro, '11', '1073741824', '11811160064'); -test(macro, '-11', '1073741824', '-11811160064'); -test(macro, '11', '-1073741824', '-11811160064'); -test(macro, '-11', '-1073741824', '11811160064'); -test(macro, '11', '51676101935731', '568437121293041'); -test(macro, '-11', '51676101935731', '-568437121293041'); -test(macro, '11', '-51676101935731', '-568437121293041'); -test(macro, '-11', '-51676101935731', '568437121293041'); -test(macro, '11', '717897987691852588770249', '7896877864610378476472739'); -test(macro, '-11', '717897987691852588770249', '-7896877864610378476472739'); -test(macro, '11', '-717897987691852588770249', '-7896877864610378476472739'); -test(macro, '-11', '-717897987691852588770249', '7896877864610378476472739'); -test(macro, '17', '0', '0'); -test(macro, '-17', '0', '0'); -test(macro, '17', '1', '17'); -test(macro, '-17', '1', '-17'); -test(macro, '17', '-1', '-17'); -test(macro, '-17', '-1', '17'); -test(macro, '17', '3', '51'); -test(macro, '-17', '3', '-51'); -test(macro, '17', '-3', '-51'); -test(macro, '-17', '-3', '51'); -test(macro, '17', '7', '119'); -test(macro, '-17', '7', '-119'); -test(macro, '17', '-7', '-119'); -test(macro, '-17', '-7', '119'); -test(macro, '17', '9', '153'); -test(macro, '-17', '9', '-153'); -test(macro, '17', '-9', '-153'); -test(macro, '-17', '-9', '153'); -test(macro, '17', '11', '187'); -test(macro, '-17', '11', '-187'); -test(macro, '17', '-11', '-187'); -test(macro, '-17', '-11', '187'); -test(macro, '17', '17', '289'); -test(macro, '-17', '17', '-289'); -test(macro, '17', '-17', '-289'); -test(macro, '-17', '-17', '289'); -test(macro, '17', '22', '374'); -test(macro, '-17', '22', '-374'); -test(macro, '17', '-22', '-374'); -test(macro, '-17', '-22', '374'); -test(macro, '17', '24', '408'); -test(macro, '-17', '24', '-408'); -test(macro, '17', '-24', '-408'); -test(macro, '-17', '-24', '408'); -test(macro, '17', '27', '459'); -test(macro, '-17', '27', '-459'); -test(macro, '17', '-27', '-459'); -test(macro, '-17', '-27', '459'); -test(macro, '17', '29', '493'); -test(macro, '-17', '29', '-493'); -test(macro, '17', '-29', '-493'); -test(macro, '-17', '-29', '493'); -test(macro, '17', '1234', '20978'); -test(macro, '-17', '1234', '-20978'); -test(macro, '17', '-1234', '-20978'); -test(macro, '-17', '-1234', '20978'); -test(macro, '17', '5678', '96526'); -test(macro, '-17', '5678', '-96526'); -test(macro, '17', '-5678', '-96526'); -test(macro, '-17', '-5678', '96526'); -test(macro, '17', '94906265', '1613406505'); -test(macro, '-17', '94906265', '-1613406505'); -test(macro, '17', '-94906265', '-1613406505'); -test(macro, '-17', '-94906265', '1613406505'); -test(macro, '17', '94906266', '1613406522'); -test(macro, '-17', '94906266', '-1613406522'); -test(macro, '17', '-94906266', '-1613406522'); -test(macro, '-17', '-94906266', '1613406522'); -test(macro, '17', '1073741824', '18253611008'); -test(macro, '-17', '1073741824', '-18253611008'); -test(macro, '17', '-1073741824', '-18253611008'); -test(macro, '-17', '-1073741824', '18253611008'); -test(macro, '17', '51676101935731', '878493732907427'); -test(macro, '-17', '51676101935731', '-878493732907427'); -test(macro, '17', '-51676101935731', '-878493732907427'); -test(macro, '-17', '-51676101935731', '878493732907427'); -test(macro, '17', '717897987691852588770249', '12204265790761494009094233'); -test(macro, '-17', '717897987691852588770249', '-12204265790761494009094233'); -test(macro, '17', '-717897987691852588770249', '-12204265790761494009094233'); -test(macro, '-17', '-717897987691852588770249', '12204265790761494009094233'); -test(macro, '22', '0', '0'); -test(macro, '-22', '0', '0'); -test(macro, '22', '1', '22'); -test(macro, '-22', '1', '-22'); -test(macro, '22', '-1', '-22'); -test(macro, '-22', '-1', '22'); -test(macro, '22', '3', '66'); -test(macro, '-22', '3', '-66'); -test(macro, '22', '-3', '-66'); -test(macro, '-22', '-3', '66'); -test(macro, '22', '7', '154'); -test(macro, '-22', '7', '-154'); -test(macro, '22', '-7', '-154'); -test(macro, '-22', '-7', '154'); -test(macro, '22', '9', '198'); -test(macro, '-22', '9', '-198'); -test(macro, '22', '-9', '-198'); -test(macro, '-22', '-9', '198'); -test(macro, '22', '11', '242'); -test(macro, '-22', '11', '-242'); -test(macro, '22', '-11', '-242'); -test(macro, '-22', '-11', '242'); -test(macro, '22', '17', '374'); -test(macro, '-22', '17', '-374'); -test(macro, '22', '-17', '-374'); -test(macro, '-22', '-17', '374'); -test(macro, '22', '22', '484'); -test(macro, '-22', '22', '-484'); -test(macro, '22', '-22', '-484'); -test(macro, '-22', '-22', '484'); -test(macro, '22', '24', '528'); -test(macro, '-22', '24', '-528'); -test(macro, '22', '-24', '-528'); -test(macro, '-22', '-24', '528'); -test(macro, '22', '27', '594'); -test(macro, '-22', '27', '-594'); -test(macro, '22', '-27', '-594'); -test(macro, '-22', '-27', '594'); -test(macro, '22', '29', '638'); -test(macro, '-22', '29', '-638'); -test(macro, '22', '-29', '-638'); -test(macro, '-22', '-29', '638'); -test(macro, '22', '1234', '27148'); -test(macro, '-22', '1234', '-27148'); -test(macro, '22', '-1234', '-27148'); -test(macro, '-22', '-1234', '27148'); -test(macro, '22', '5678', '124916'); -test(macro, '-22', '5678', '-124916'); -test(macro, '22', '-5678', '-124916'); -test(macro, '-22', '-5678', '124916'); -test(macro, '22', '94906265', '2087937830'); -test(macro, '-22', '94906265', '-2087937830'); -test(macro, '22', '-94906265', '-2087937830'); -test(macro, '-22', '-94906265', '2087937830'); -test(macro, '22', '94906266', '2087937852'); -test(macro, '-22', '94906266', '-2087937852'); -test(macro, '22', '-94906266', '-2087937852'); -test(macro, '-22', '-94906266', '2087937852'); -test(macro, '22', '1073741824', '23622320128'); -test(macro, '-22', '1073741824', '-23622320128'); -test(macro, '22', '-1073741824', '-23622320128'); -test(macro, '-22', '-1073741824', '23622320128'); -test(macro, '22', '51676101935731', '1136874242586082'); -test(macro, '-22', '51676101935731', '-1136874242586082'); -test(macro, '22', '-51676101935731', '-1136874242586082'); -test(macro, '-22', '-51676101935731', '1136874242586082'); -test(macro, '22', '717897987691852588770249', '15793755729220756952945478'); -test(macro, '-22', '717897987691852588770249', '-15793755729220756952945478'); -test(macro, '22', '-717897987691852588770249', '-15793755729220756952945478'); -test(macro, '-22', '-717897987691852588770249', '15793755729220756952945478'); -test(macro, '24', '0', '0'); -test(macro, '-24', '0', '0'); -test(macro, '24', '1', '24'); -test(macro, '-24', '1', '-24'); -test(macro, '24', '-1', '-24'); -test(macro, '-24', '-1', '24'); -test(macro, '24', '3', '72'); -test(macro, '-24', '3', '-72'); -test(macro, '24', '-3', '-72'); -test(macro, '-24', '-3', '72'); -test(macro, '24', '7', '168'); -test(macro, '-24', '7', '-168'); -test(macro, '24', '-7', '-168'); -test(macro, '-24', '-7', '168'); -test(macro, '24', '9', '216'); -test(macro, '-24', '9', '-216'); -test(macro, '24', '-9', '-216'); -test(macro, '-24', '-9', '216'); -test(macro, '24', '11', '264'); -test(macro, '-24', '11', '-264'); -test(macro, '24', '-11', '-264'); -test(macro, '-24', '-11', '264'); -test(macro, '24', '17', '408'); -test(macro, '-24', '17', '-408'); -test(macro, '24', '-17', '-408'); -test(macro, '-24', '-17', '408'); -test(macro, '24', '22', '528'); -test(macro, '-24', '22', '-528'); -test(macro, '24', '-22', '-528'); -test(macro, '-24', '-22', '528'); -test(macro, '24', '24', '576'); -test(macro, '-24', '24', '-576'); -test(macro, '24', '-24', '-576'); -test(macro, '-24', '-24', '576'); -test(macro, '24', '27', '648'); -test(macro, '-24', '27', '-648'); -test(macro, '24', '-27', '-648'); -test(macro, '-24', '-27', '648'); -test(macro, '24', '29', '696'); -test(macro, '-24', '29', '-696'); -test(macro, '24', '-29', '-696'); -test(macro, '-24', '-29', '696'); -test(macro, '24', '1234', '29616'); -test(macro, '-24', '1234', '-29616'); -test(macro, '24', '-1234', '-29616'); -test(macro, '-24', '-1234', '29616'); -test(macro, '24', '5678', '136272'); -test(macro, '-24', '5678', '-136272'); -test(macro, '24', '-5678', '-136272'); -test(macro, '-24', '-5678', '136272'); -test(macro, '24', '94906265', '2277750360'); -test(macro, '-24', '94906265', '-2277750360'); -test(macro, '24', '-94906265', '-2277750360'); -test(macro, '-24', '-94906265', '2277750360'); -test(macro, '24', '94906266', '2277750384'); -test(macro, '-24', '94906266', '-2277750384'); -test(macro, '24', '-94906266', '-2277750384'); -test(macro, '-24', '-94906266', '2277750384'); -test(macro, '24', '1073741824', '25769803776'); -test(macro, '-24', '1073741824', '-25769803776'); -test(macro, '24', '-1073741824', '-25769803776'); -test(macro, '-24', '-1073741824', '25769803776'); -test(macro, '24', '51676101935731', '1240226446457544'); -test(macro, '-24', '51676101935731', '-1240226446457544'); -test(macro, '24', '-51676101935731', '-1240226446457544'); -test(macro, '-24', '-51676101935731', '1240226446457544'); -test(macro, '24', '717897987691852588770249', '17229551704604462130485976'); -test(macro, '-24', '717897987691852588770249', '-17229551704604462130485976'); -test(macro, '24', '-717897987691852588770249', '-17229551704604462130485976'); -test(macro, '-24', '-717897987691852588770249', '17229551704604462130485976'); -test(macro, '27', '0', '0'); -test(macro, '-27', '0', '0'); -test(macro, '27', '1', '27'); -test(macro, '-27', '1', '-27'); -test(macro, '27', '-1', '-27'); -test(macro, '-27', '-1', '27'); -test(macro, '27', '3', '81'); -test(macro, '-27', '3', '-81'); -test(macro, '27', '-3', '-81'); -test(macro, '-27', '-3', '81'); -test(macro, '27', '7', '189'); -test(macro, '-27', '7', '-189'); -test(macro, '27', '-7', '-189'); -test(macro, '-27', '-7', '189'); -test(macro, '27', '9', '243'); -test(macro, '-27', '9', '-243'); -test(macro, '27', '-9', '-243'); -test(macro, '-27', '-9', '243'); -test(macro, '27', '11', '297'); -test(macro, '-27', '11', '-297'); -test(macro, '27', '-11', '-297'); -test(macro, '-27', '-11', '297'); -test(macro, '27', '17', '459'); -test(macro, '-27', '17', '-459'); -test(macro, '27', '-17', '-459'); -test(macro, '-27', '-17', '459'); -test(macro, '27', '22', '594'); -test(macro, '-27', '22', '-594'); -test(macro, '27', '-22', '-594'); -test(macro, '-27', '-22', '594'); -test(macro, '27', '24', '648'); -test(macro, '-27', '24', '-648'); -test(macro, '27', '-24', '-648'); -test(macro, '-27', '-24', '648'); -test(macro, '27', '27', '729'); -test(macro, '-27', '27', '-729'); -test(macro, '27', '-27', '-729'); -test(macro, '-27', '-27', '729'); -test(macro, '27', '29', '783'); -test(macro, '-27', '29', '-783'); -test(macro, '27', '-29', '-783'); -test(macro, '-27', '-29', '783'); -test(macro, '27', '1234', '33318'); -test(macro, '-27', '1234', '-33318'); -test(macro, '27', '-1234', '-33318'); -test(macro, '-27', '-1234', '33318'); -test(macro, '27', '5678', '153306'); -test(macro, '-27', '5678', '-153306'); -test(macro, '27', '-5678', '-153306'); -test(macro, '-27', '-5678', '153306'); -test(macro, '27', '94906265', '2562469155'); -test(macro, '-27', '94906265', '-2562469155'); -test(macro, '27', '-94906265', '-2562469155'); -test(macro, '-27', '-94906265', '2562469155'); -test(macro, '27', '94906266', '2562469182'); -test(macro, '-27', '94906266', '-2562469182'); -test(macro, '27', '-94906266', '-2562469182'); -test(macro, '-27', '-94906266', '2562469182'); -test(macro, '27', '1073741824', '28991029248'); -test(macro, '-27', '1073741824', '-28991029248'); -test(macro, '27', '-1073741824', '-28991029248'); -test(macro, '-27', '-1073741824', '28991029248'); -test(macro, '27', '51676101935731', '1395254752264737'); -test(macro, '-27', '51676101935731', '-1395254752264737'); -test(macro, '27', '-51676101935731', '-1395254752264737'); -test(macro, '-27', '-51676101935731', '1395254752264737'); -test(macro, '27', '717897987691852588770249', '19383245667680019896796723'); -test(macro, '-27', '717897987691852588770249', '-19383245667680019896796723'); -test(macro, '27', '-717897987691852588770249', '-19383245667680019896796723'); -test(macro, '-27', '-717897987691852588770249', '19383245667680019896796723'); -test(macro, '29', '0', '0'); -test(macro, '-29', '0', '0'); -test(macro, '29', '1', '29'); -test(macro, '-29', '1', '-29'); -test(macro, '29', '-1', '-29'); -test(macro, '-29', '-1', '29'); -test(macro, '29', '3', '87'); -test(macro, '-29', '3', '-87'); -test(macro, '29', '-3', '-87'); -test(macro, '-29', '-3', '87'); -test(macro, '29', '7', '203'); -test(macro, '-29', '7', '-203'); -test(macro, '29', '-7', '-203'); -test(macro, '-29', '-7', '203'); -test(macro, '29', '9', '261'); -test(macro, '-29', '9', '-261'); -test(macro, '29', '-9', '-261'); -test(macro, '-29', '-9', '261'); -test(macro, '29', '11', '319'); -test(macro, '-29', '11', '-319'); -test(macro, '29', '-11', '-319'); -test(macro, '-29', '-11', '319'); -test(macro, '29', '17', '493'); -test(macro, '-29', '17', '-493'); -test(macro, '29', '-17', '-493'); -test(macro, '-29', '-17', '493'); -test(macro, '29', '22', '638'); -test(macro, '-29', '22', '-638'); -test(macro, '29', '-22', '-638'); -test(macro, '-29', '-22', '638'); -test(macro, '29', '24', '696'); -test(macro, '-29', '24', '-696'); -test(macro, '29', '-24', '-696'); -test(macro, '-29', '-24', '696'); -test(macro, '29', '27', '783'); -test(macro, '-29', '27', '-783'); -test(macro, '29', '-27', '-783'); -test(macro, '-29', '-27', '783'); -test(macro, '29', '29', '841'); -test(macro, '-29', '29', '-841'); -test(macro, '29', '-29', '-841'); -test(macro, '-29', '-29', '841'); -test(macro, '29', '1234', '35786'); -test(macro, '-29', '1234', '-35786'); -test(macro, '29', '-1234', '-35786'); -test(macro, '-29', '-1234', '35786'); -test(macro, '29', '5678', '164662'); -test(macro, '-29', '5678', '-164662'); -test(macro, '29', '-5678', '-164662'); -test(macro, '-29', '-5678', '164662'); -test(macro, '29', '94906265', '2752281685'); -test(macro, '-29', '94906265', '-2752281685'); -test(macro, '29', '-94906265', '-2752281685'); -test(macro, '-29', '-94906265', '2752281685'); -test(macro, '29', '94906266', '2752281714'); -test(macro, '-29', '94906266', '-2752281714'); -test(macro, '29', '-94906266', '-2752281714'); -test(macro, '-29', '-94906266', '2752281714'); -test(macro, '29', '1073741824', '31138512896'); -test(macro, '-29', '1073741824', '-31138512896'); -test(macro, '29', '-1073741824', '-31138512896'); -test(macro, '-29', '-1073741824', '31138512896'); -test(macro, '29', '51676101935731', '1498606956136199'); -test(macro, '-29', '51676101935731', '-1498606956136199'); -test(macro, '29', '-51676101935731', '-1498606956136199'); -test(macro, '-29', '-51676101935731', '1498606956136199'); -test(macro, '29', '717897987691852588770249', '20819041643063725074337221'); -test(macro, '-29', '717897987691852588770249', '-20819041643063725074337221'); -test(macro, '29', '-717897987691852588770249', '-20819041643063725074337221'); -test(macro, '-29', '-717897987691852588770249', '20819041643063725074337221'); -test(macro, '1234', '0', '0'); -test(macro, '-1234', '0', '0'); -test(macro, '1234', '1', '1234'); -test(macro, '-1234', '1', '-1234'); -test(macro, '1234', '-1', '-1234'); -test(macro, '-1234', '-1', '1234'); -test(macro, '1234', '3', '3702'); -test(macro, '-1234', '3', '-3702'); -test(macro, '1234', '-3', '-3702'); -test(macro, '-1234', '-3', '3702'); -test(macro, '1234', '7', '8638'); -test(macro, '-1234', '7', '-8638'); -test(macro, '1234', '-7', '-8638'); -test(macro, '-1234', '-7', '8638'); -test(macro, '1234', '9', '11106'); -test(macro, '-1234', '9', '-11106'); -test(macro, '1234', '-9', '-11106'); -test(macro, '-1234', '-9', '11106'); -test(macro, '1234', '11', '13574'); -test(macro, '-1234', '11', '-13574'); -test(macro, '1234', '-11', '-13574'); -test(macro, '-1234', '-11', '13574'); -test(macro, '1234', '17', '20978'); -test(macro, '-1234', '17', '-20978'); -test(macro, '1234', '-17', '-20978'); -test(macro, '-1234', '-17', '20978'); -test(macro, '1234', '22', '27148'); -test(macro, '-1234', '22', '-27148'); -test(macro, '1234', '-22', '-27148'); -test(macro, '-1234', '-22', '27148'); -test(macro, '1234', '24', '29616'); -test(macro, '-1234', '24', '-29616'); -test(macro, '1234', '-24', '-29616'); -test(macro, '-1234', '-24', '29616'); -test(macro, '1234', '27', '33318'); -test(macro, '-1234', '27', '-33318'); -test(macro, '1234', '-27', '-33318'); -test(macro, '-1234', '-27', '33318'); -test(macro, '1234', '29', '35786'); -test(macro, '-1234', '29', '-35786'); -test(macro, '1234', '-29', '-35786'); -test(macro, '-1234', '-29', '35786'); -test(macro, '1234', '1234', '1522756'); -test(macro, '-1234', '1234', '-1522756'); -test(macro, '1234', '-1234', '-1522756'); -test(macro, '-1234', '-1234', '1522756'); -test(macro, '1234', '5678', '7006652'); -test(macro, '-1234', '5678', '-7006652'); -test(macro, '1234', '-5678', '-7006652'); -test(macro, '-1234', '-5678', '7006652'); -test(macro, '1234', '94906265', '117114331010'); -test(macro, '-1234', '94906265', '-117114331010'); -test(macro, '1234', '-94906265', '-117114331010'); -test(macro, '-1234', '-94906265', '117114331010'); -test(macro, '1234', '94906266', '117114332244'); -test(macro, '-1234', '94906266', '-117114332244'); -test(macro, '1234', '-94906266', '-117114332244'); -test(macro, '-1234', '-94906266', '117114332244'); -test(macro, '1234', '1073741824', '1324997410816'); -test(macro, '-1234', '1073741824', '-1324997410816'); -test(macro, '1234', '-1073741824', '-1324997410816'); -test(macro, '-1234', '-1073741824', '1324997410816'); -test(macro, '1234', '51676101935731', '63768309788692054'); -test(macro, '-1234', '51676101935731', '-63768309788692054'); -test(macro, '1234', '-51676101935731', '-63768309788692054'); -test(macro, '-1234', '-51676101935731', '63768309788692054'); -test(macro, '1234', '717897987691852588770249', '885886116811746094542487266'); -test( - macro, - '-1234', - '717897987691852588770249', - '-885886116811746094542487266', -); -test( - macro, - '1234', - '-717897987691852588770249', - '-885886116811746094542487266', -); -test( - macro, - '-1234', - '-717897987691852588770249', - '885886116811746094542487266', -); -test(macro, '5678', '0', '0'); -test(macro, '-5678', '0', '0'); -test(macro, '5678', '1', '5678'); -test(macro, '-5678', '1', '-5678'); -test(macro, '5678', '-1', '-5678'); -test(macro, '-5678', '-1', '5678'); -test(macro, '5678', '3', '17034'); -test(macro, '-5678', '3', '-17034'); -test(macro, '5678', '-3', '-17034'); -test(macro, '-5678', '-3', '17034'); -test(macro, '5678', '7', '39746'); -test(macro, '-5678', '7', '-39746'); -test(macro, '5678', '-7', '-39746'); -test(macro, '-5678', '-7', '39746'); -test(macro, '5678', '9', '51102'); -test(macro, '-5678', '9', '-51102'); -test(macro, '5678', '-9', '-51102'); -test(macro, '-5678', '-9', '51102'); -test(macro, '5678', '11', '62458'); -test(macro, '-5678', '11', '-62458'); -test(macro, '5678', '-11', '-62458'); -test(macro, '-5678', '-11', '62458'); -test(macro, '5678', '17', '96526'); -test(macro, '-5678', '17', '-96526'); -test(macro, '5678', '-17', '-96526'); -test(macro, '-5678', '-17', '96526'); -test(macro, '5678', '22', '124916'); -test(macro, '-5678', '22', '-124916'); -test(macro, '5678', '-22', '-124916'); -test(macro, '-5678', '-22', '124916'); -test(macro, '5678', '24', '136272'); -test(macro, '-5678', '24', '-136272'); -test(macro, '5678', '-24', '-136272'); -test(macro, '-5678', '-24', '136272'); -test(macro, '5678', '27', '153306'); -test(macro, '-5678', '27', '-153306'); -test(macro, '5678', '-27', '-153306'); -test(macro, '-5678', '-27', '153306'); -test(macro, '5678', '29', '164662'); -test(macro, '-5678', '29', '-164662'); -test(macro, '5678', '-29', '-164662'); -test(macro, '-5678', '-29', '164662'); -test(macro, '5678', '1234', '7006652'); -test(macro, '-5678', '1234', '-7006652'); -test(macro, '5678', '-1234', '-7006652'); -test(macro, '-5678', '-1234', '7006652'); -test(macro, '5678', '5678', '32239684'); -test(macro, '-5678', '5678', '-32239684'); -test(macro, '5678', '-5678', '-32239684'); -test(macro, '-5678', '-5678', '32239684'); -test(macro, '5678', '94906265', '538877772670'); -test(macro, '-5678', '94906265', '-538877772670'); -test(macro, '5678', '-94906265', '-538877772670'); -test(macro, '-5678', '-94906265', '538877772670'); -test(macro, '5678', '94906266', '538877778348'); -test(macro, '-5678', '94906266', '-538877778348'); -test(macro, '5678', '-94906266', '-538877778348'); -test(macro, '-5678', '-94906266', '538877778348'); -test(macro, '5678', '1073741824', '6096706076672'); -test(macro, '-5678', '1073741824', '-6096706076672'); -test(macro, '5678', '-1073741824', '-6096706076672'); -test(macro, '-5678', '-1073741824', '6096706076672'); -test(macro, '5678', '51676101935731', '293416906791080618'); -test(macro, '-5678', '51676101935731', '-293416906791080618'); -test(macro, '5678', '-51676101935731', '-293416906791080618'); -test(macro, '-5678', '-51676101935731', '293416906791080618'); -test(macro, '5678', '717897987691852588770249', '4076224774114338999037473822'); -test( - macro, - '-5678', - '717897987691852588770249', - '-4076224774114338999037473822', -); -test( - macro, - '5678', - '-717897987691852588770249', - '-4076224774114338999037473822', -); -test( - macro, - '-5678', - '-717897987691852588770249', - '4076224774114338999037473822', -); -test(macro, '94906265', '0', '0'); -test(macro, '-94906265', '0', '0'); -test(macro, '94906265', '1', '94906265'); -test(macro, '-94906265', '1', '-94906265'); -test(macro, '94906265', '-1', '-94906265'); -test(macro, '-94906265', '-1', '94906265'); -test(macro, '94906265', '3', '284718795'); -test(macro, '-94906265', '3', '-284718795'); -test(macro, '94906265', '-3', '-284718795'); -test(macro, '-94906265', '-3', '284718795'); -test(macro, '94906265', '7', '664343855'); -test(macro, '-94906265', '7', '-664343855'); -test(macro, '94906265', '-7', '-664343855'); -test(macro, '-94906265', '-7', '664343855'); -test(macro, '94906265', '9', '854156385'); -test(macro, '-94906265', '9', '-854156385'); -test(macro, '94906265', '-9', '-854156385'); -test(macro, '-94906265', '-9', '854156385'); -test(macro, '94906265', '11', '1043968915'); -test(macro, '-94906265', '11', '-1043968915'); -test(macro, '94906265', '-11', '-1043968915'); -test(macro, '-94906265', '-11', '1043968915'); -test(macro, '94906265', '17', '1613406505'); -test(macro, '-94906265', '17', '-1613406505'); -test(macro, '94906265', '-17', '-1613406505'); -test(macro, '-94906265', '-17', '1613406505'); -test(macro, '94906265', '22', '2087937830'); -test(macro, '-94906265', '22', '-2087937830'); -test(macro, '94906265', '-22', '-2087937830'); -test(macro, '-94906265', '-22', '2087937830'); -test(macro, '94906265', '24', '2277750360'); -test(macro, '-94906265', '24', '-2277750360'); -test(macro, '94906265', '-24', '-2277750360'); -test(macro, '-94906265', '-24', '2277750360'); -test(macro, '94906265', '27', '2562469155'); -test(macro, '-94906265', '27', '-2562469155'); -test(macro, '94906265', '-27', '-2562469155'); -test(macro, '-94906265', '-27', '2562469155'); -test(macro, '94906265', '29', '2752281685'); -test(macro, '-94906265', '29', '-2752281685'); -test(macro, '94906265', '-29', '-2752281685'); -test(macro, '-94906265', '-29', '2752281685'); -test(macro, '94906265', '1234', '117114331010'); -test(macro, '-94906265', '1234', '-117114331010'); -test(macro, '94906265', '-1234', '-117114331010'); -test(macro, '-94906265', '-1234', '117114331010'); -test(macro, '94906265', '5678', '538877772670'); -test(macro, '-94906265', '5678', '-538877772670'); -test(macro, '94906265', '-5678', '-538877772670'); -test(macro, '-94906265', '-5678', '538877772670'); -test(macro, '94906265', '94906265', '9007199136250225'); -test(macro, '-94906265', '94906265', '-9007199136250225'); -test(macro, '94906265', '-94906265', '-9007199136250225'); -test(macro, '-94906265', '-94906265', '9007199136250225'); -test(macro, '94906265', '94906266', '9007199231156490'); -test(macro, '-94906265', '94906266', '-9007199231156490'); -test(macro, '94906265', '-94906266', '-9007199231156490'); -test(macro, '-94906265', '-94906266', '9007199231156490'); -test(macro, '94906265', '1073741824', '101904826090127360'); -test(macro, '-94906265', '1073741824', '-101904826090127360'); -test(macro, '94906265', '-1073741824', '-101904826090127360'); -test(macro, '-94906265', '-1073741824', '101904826090127360'); -test(macro, '94906265', '51676101935731', '4904385824479499254715'); -test(macro, '-94906265', '51676101935731', '-4904385824479499254715'); -test(macro, '94906265', '-51676101935731', '-4904385824479499254715'); -test(macro, '-94906265', '-51676101935731', '4904385824479499254715'); -test( - macro, - '94906265', - '717897987691852588770249', - '68133016662849700130765275709985', -); -test( - macro, - '-94906265', - '717897987691852588770249', - '-68133016662849700130765275709985', -); -test( - macro, - '94906265', - '-717897987691852588770249', - '-68133016662849700130765275709985', -); -test( - macro, - '-94906265', - '-717897987691852588770249', - '68133016662849700130765275709985', -); -test(macro, '94906266', '0', '0'); -test(macro, '-94906266', '0', '0'); -test(macro, '94906266', '1', '94906266'); -test(macro, '-94906266', '1', '-94906266'); -test(macro, '94906266', '-1', '-94906266'); -test(macro, '-94906266', '-1', '94906266'); -test(macro, '94906266', '3', '284718798'); -test(macro, '-94906266', '3', '-284718798'); -test(macro, '94906266', '-3', '-284718798'); -test(macro, '-94906266', '-3', '284718798'); -test(macro, '94906266', '7', '664343862'); -test(macro, '-94906266', '7', '-664343862'); -test(macro, '94906266', '-7', '-664343862'); -test(macro, '-94906266', '-7', '664343862'); -test(macro, '94906266', '9', '854156394'); -test(macro, '-94906266', '9', '-854156394'); -test(macro, '94906266', '-9', '-854156394'); -test(macro, '-94906266', '-9', '854156394'); -test(macro, '94906266', '11', '1043968926'); -test(macro, '-94906266', '11', '-1043968926'); -test(macro, '94906266', '-11', '-1043968926'); -test(macro, '-94906266', '-11', '1043968926'); -test(macro, '94906266', '17', '1613406522'); -test(macro, '-94906266', '17', '-1613406522'); -test(macro, '94906266', '-17', '-1613406522'); -test(macro, '-94906266', '-17', '1613406522'); -test(macro, '94906266', '22', '2087937852'); -test(macro, '-94906266', '22', '-2087937852'); -test(macro, '94906266', '-22', '-2087937852'); -test(macro, '-94906266', '-22', '2087937852'); -test(macro, '94906266', '24', '2277750384'); -test(macro, '-94906266', '24', '-2277750384'); -test(macro, '94906266', '-24', '-2277750384'); -test(macro, '-94906266', '-24', '2277750384'); -test(macro, '94906266', '27', '2562469182'); -test(macro, '-94906266', '27', '-2562469182'); -test(macro, '94906266', '-27', '-2562469182'); -test(macro, '-94906266', '-27', '2562469182'); -test(macro, '94906266', '29', '2752281714'); -test(macro, '-94906266', '29', '-2752281714'); -test(macro, '94906266', '-29', '-2752281714'); -test(macro, '-94906266', '-29', '2752281714'); -test(macro, '94906266', '1234', '117114332244'); -test(macro, '-94906266', '1234', '-117114332244'); -test(macro, '94906266', '-1234', '-117114332244'); -test(macro, '-94906266', '-1234', '117114332244'); -test(macro, '94906266', '5678', '538877778348'); -test(macro, '-94906266', '5678', '-538877778348'); -test(macro, '94906266', '-5678', '-538877778348'); -test(macro, '-94906266', '-5678', '538877778348'); -test(macro, '94906266', '94906265', '9007199231156490'); -test(macro, '-94906266', '94906265', '-9007199231156490'); -test(macro, '94906266', '-94906265', '-9007199231156490'); -test(macro, '-94906266', '-94906265', '9007199231156490'); -test(macro, '94906266', '94906266', '9007199326062756'); -test(macro, '-94906266', '94906266', '-9007199326062756'); -test(macro, '94906266', '-94906266', '-9007199326062756'); -test(macro, '-94906266', '-94906266', '9007199326062756'); -test(macro, '94906266', '1073741824', '101904827163869184'); -test(macro, '-94906266', '1073741824', '-101904827163869184'); -test(macro, '94906266', '-1073741824', '-101904827163869184'); -test(macro, '-94906266', '-1073741824', '101904827163869184'); -test(macro, '94906266', '51676101935731', '4904385876155601190446'); -test(macro, '-94906266', '51676101935731', '-4904385876155601190446'); -test(macro, '94906266', '-51676101935731', '-4904385876155601190446'); -test(macro, '-94906266', '-51676101935731', '4904385876155601190446'); -test( - macro, - '94906266', - '717897987691852588770249', - '68133017380747687822617864480234', -); -test( - macro, - '-94906266', - '717897987691852588770249', - '-68133017380747687822617864480234', -); -test( - macro, - '94906266', - '-717897987691852588770249', - '-68133017380747687822617864480234', -); -test( - macro, - '-94906266', - '-717897987691852588770249', - '68133017380747687822617864480234', -); -test(macro, '1073741824', '0', '0'); -test(macro, '-1073741824', '0', '0'); -test(macro, '1073741824', '1', '1073741824'); -test(macro, '-1073741824', '1', '-1073741824'); -test(macro, '1073741824', '-1', '-1073741824'); -test(macro, '-1073741824', '-1', '1073741824'); -test(macro, '1073741824', '3', '3221225472'); -test(macro, '-1073741824', '3', '-3221225472'); -test(macro, '1073741824', '-3', '-3221225472'); -test(macro, '-1073741824', '-3', '3221225472'); -test(macro, '1073741824', '7', '7516192768'); -test(macro, '-1073741824', '7', '-7516192768'); -test(macro, '1073741824', '-7', '-7516192768'); -test(macro, '-1073741824', '-7', '7516192768'); -test(macro, '1073741824', '9', '9663676416'); -test(macro, '-1073741824', '9', '-9663676416'); -test(macro, '1073741824', '-9', '-9663676416'); -test(macro, '-1073741824', '-9', '9663676416'); -test(macro, '1073741824', '11', '11811160064'); -test(macro, '-1073741824', '11', '-11811160064'); -test(macro, '1073741824', '-11', '-11811160064'); -test(macro, '-1073741824', '-11', '11811160064'); -test(macro, '1073741824', '17', '18253611008'); -test(macro, '-1073741824', '17', '-18253611008'); -test(macro, '1073741824', '-17', '-18253611008'); -test(macro, '-1073741824', '-17', '18253611008'); -test(macro, '1073741824', '22', '23622320128'); -test(macro, '-1073741824', '22', '-23622320128'); -test(macro, '1073741824', '-22', '-23622320128'); -test(macro, '-1073741824', '-22', '23622320128'); -test(macro, '1073741824', '24', '25769803776'); -test(macro, '-1073741824', '24', '-25769803776'); -test(macro, '1073741824', '-24', '-25769803776'); -test(macro, '-1073741824', '-24', '25769803776'); -test(macro, '1073741824', '27', '28991029248'); -test(macro, '-1073741824', '27', '-28991029248'); -test(macro, '1073741824', '-27', '-28991029248'); -test(macro, '-1073741824', '-27', '28991029248'); -test(macro, '1073741824', '29', '31138512896'); -test(macro, '-1073741824', '29', '-31138512896'); -test(macro, '1073741824', '-29', '-31138512896'); -test(macro, '-1073741824', '-29', '31138512896'); -test(macro, '1073741824', '1234', '1324997410816'); -test(macro, '-1073741824', '1234', '-1324997410816'); -test(macro, '1073741824', '-1234', '-1324997410816'); -test(macro, '-1073741824', '-1234', '1324997410816'); -test(macro, '1073741824', '5678', '6096706076672'); -test(macro, '-1073741824', '5678', '-6096706076672'); -test(macro, '1073741824', '-5678', '-6096706076672'); -test(macro, '-1073741824', '-5678', '6096706076672'); -test(macro, '1073741824', '94906265', '101904826090127360'); -test(macro, '-1073741824', '94906265', '-101904826090127360'); -test(macro, '1073741824', '-94906265', '-101904826090127360'); -test(macro, '-1073741824', '-94906265', '101904826090127360'); -test(macro, '1073741824', '94906266', '101904827163869184'); -test(macro, '-1073741824', '94906266', '-101904827163869184'); -test(macro, '1073741824', '-94906266', '-101904827163869184'); -test(macro, '-1073741824', '-94906266', '101904827163869184'); -test(macro, '1073741824', '1073741824', '1152921504606846976'); -test(macro, '-1073741824', '1073741824', '-1152921504606846976'); -test(macro, '1073741824', '-1073741824', '-1152921504606846976'); -test(macro, '-1073741824', '-1073741824', '1152921504606846976'); -test(macro, '1073741824', '51676101935731', '55486791949681734713344'); -test(macro, '-1073741824', '51676101935731', '-55486791949681734713344'); -test(macro, '1073741824', '-51676101935731', '-55486791949681734713344'); -test(macro, '-1073741824', '-51676101935731', '55486791949681734713344'); -test( - macro, - '1073741824', - '717897987691852588770249', - '770837094750179348605289078194176', -); -test( - macro, - '-1073741824', - '717897987691852588770249', - '-770837094750179348605289078194176', -); -test( - macro, - '1073741824', - '-717897987691852588770249', - '-770837094750179348605289078194176', -); -test( - macro, - '-1073741824', - '-717897987691852588770249', - '770837094750179348605289078194176', -); -test(macro, '51676101935731', '0', '0'); -test(macro, '-51676101935731', '0', '0'); -test(macro, '51676101935731', '1', '51676101935731'); -test(macro, '-51676101935731', '1', '-51676101935731'); -test(macro, '51676101935731', '-1', '-51676101935731'); -test(macro, '-51676101935731', '-1', '51676101935731'); -test(macro, '51676101935731', '3', '155028305807193'); -test(macro, '-51676101935731', '3', '-155028305807193'); -test(macro, '51676101935731', '-3', '-155028305807193'); -test(macro, '-51676101935731', '-3', '155028305807193'); -test(macro, '51676101935731', '7', '361732713550117'); -test(macro, '-51676101935731', '7', '-361732713550117'); -test(macro, '51676101935731', '-7', '-361732713550117'); -test(macro, '-51676101935731', '-7', '361732713550117'); -test(macro, '51676101935731', '9', '465084917421579'); -test(macro, '-51676101935731', '9', '-465084917421579'); -test(macro, '51676101935731', '-9', '-465084917421579'); -test(macro, '-51676101935731', '-9', '465084917421579'); -test(macro, '51676101935731', '11', '568437121293041'); -test(macro, '-51676101935731', '11', '-568437121293041'); -test(macro, '51676101935731', '-11', '-568437121293041'); -test(macro, '-51676101935731', '-11', '568437121293041'); -test(macro, '51676101935731', '17', '878493732907427'); -test(macro, '-51676101935731', '17', '-878493732907427'); -test(macro, '51676101935731', '-17', '-878493732907427'); -test(macro, '-51676101935731', '-17', '878493732907427'); -test(macro, '51676101935731', '22', '1136874242586082'); -test(macro, '-51676101935731', '22', '-1136874242586082'); -test(macro, '51676101935731', '-22', '-1136874242586082'); -test(macro, '-51676101935731', '-22', '1136874242586082'); -test(macro, '51676101935731', '24', '1240226446457544'); -test(macro, '-51676101935731', '24', '-1240226446457544'); -test(macro, '51676101935731', '-24', '-1240226446457544'); -test(macro, '-51676101935731', '-24', '1240226446457544'); -test(macro, '51676101935731', '27', '1395254752264737'); -test(macro, '-51676101935731', '27', '-1395254752264737'); -test(macro, '51676101935731', '-27', '-1395254752264737'); -test(macro, '-51676101935731', '-27', '1395254752264737'); -test(macro, '51676101935731', '29', '1498606956136199'); -test(macro, '-51676101935731', '29', '-1498606956136199'); -test(macro, '51676101935731', '-29', '-1498606956136199'); -test(macro, '-51676101935731', '-29', '1498606956136199'); -test(macro, '51676101935731', '1234', '63768309788692054'); -test(macro, '-51676101935731', '1234', '-63768309788692054'); -test(macro, '51676101935731', '-1234', '-63768309788692054'); -test(macro, '-51676101935731', '-1234', '63768309788692054'); -test(macro, '51676101935731', '5678', '293416906791080618'); -test(macro, '-51676101935731', '5678', '-293416906791080618'); -test(macro, '51676101935731', '-5678', '-293416906791080618'); -test(macro, '-51676101935731', '-5678', '293416906791080618'); -test(macro, '51676101935731', '94906265', '4904385824479499254715'); -test(macro, '-51676101935731', '94906265', '-4904385824479499254715'); -test(macro, '51676101935731', '-94906265', '-4904385824479499254715'); -test(macro, '-51676101935731', '-94906265', '4904385824479499254715'); -test(macro, '51676101935731', '94906266', '4904385876155601190446'); -test(macro, '-51676101935731', '94906266', '-4904385876155601190446'); -test(macro, '51676101935731', '-94906266', '-4904385876155601190446'); -test(macro, '-51676101935731', '-94906266', '4904385876155601190446'); -test(macro, '51676101935731', '1073741824', '55486791949681734713344'); -test(macro, '-51676101935731', '1073741824', '-55486791949681734713344'); -test(macro, '51676101935731', '-1073741824', '-55486791949681734713344'); -test(macro, '-51676101935731', '-1073741824', '55486791949681734713344'); -test(macro, '51676101935731', '51676101935731', '2670419511272061205254504361'); -test( - macro, - '-51676101935731', - '51676101935731', - '-2670419511272061205254504361', -); -test( - macro, - '51676101935731', - '-51676101935731', - '-2670419511272061205254504361', -); -test( - macro, - '-51676101935731', - '-51676101935731', - '2670419511272061205254504361', -); -test( - macro, - '51676101935731', - '717897987691852588770249', - '37098169591420333175287767861722867019', -); -test( - macro, - '-51676101935731', - '717897987691852588770249', - '-37098169591420333175287767861722867019', -); -test( - macro, - '51676101935731', - '-717897987691852588770249', - '-37098169591420333175287767861722867019', -); -test( - macro, - '-51676101935731', - '-717897987691852588770249', - '37098169591420333175287767861722867019', -); -test(macro, '717897987691852588770249', '0', '0'); -test(macro, '-717897987691852588770249', '0', '0'); -test(macro, '717897987691852588770249', '1', '717897987691852588770249'); -test(macro, '-717897987691852588770249', '1', '-717897987691852588770249'); -test(macro, '717897987691852588770249', '-1', '-717897987691852588770249'); -test(macro, '-717897987691852588770249', '-1', '717897987691852588770249'); -test(macro, '717897987691852588770249', '3', '2153693963075557766310747'); -test(macro, '-717897987691852588770249', '3', '-2153693963075557766310747'); -test(macro, '717897987691852588770249', '-3', '-2153693963075557766310747'); -test(macro, '-717897987691852588770249', '-3', '2153693963075557766310747'); -test(macro, '717897987691852588770249', '7', '5025285913842968121391743'); -test(macro, '-717897987691852588770249', '7', '-5025285913842968121391743'); -test(macro, '717897987691852588770249', '-7', '-5025285913842968121391743'); -test(macro, '-717897987691852588770249', '-7', '5025285913842968121391743'); -test(macro, '717897987691852588770249', '9', '6461081889226673298932241'); -test(macro, '-717897987691852588770249', '9', '-6461081889226673298932241'); -test(macro, '717897987691852588770249', '-9', '-6461081889226673298932241'); -test(macro, '-717897987691852588770249', '-9', '6461081889226673298932241'); -test(macro, '717897987691852588770249', '11', '7896877864610378476472739'); -test(macro, '-717897987691852588770249', '11', '-7896877864610378476472739'); -test(macro, '717897987691852588770249', '-11', '-7896877864610378476472739'); -test(macro, '-717897987691852588770249', '-11', '7896877864610378476472739'); -test(macro, '717897987691852588770249', '17', '12204265790761494009094233'); -test(macro, '-717897987691852588770249', '17', '-12204265790761494009094233'); -test(macro, '717897987691852588770249', '-17', '-12204265790761494009094233'); -test(macro, '-717897987691852588770249', '-17', '12204265790761494009094233'); -test(macro, '717897987691852588770249', '22', '15793755729220756952945478'); -test(macro, '-717897987691852588770249', '22', '-15793755729220756952945478'); -test(macro, '717897987691852588770249', '-22', '-15793755729220756952945478'); -test(macro, '-717897987691852588770249', '-22', '15793755729220756952945478'); -test(macro, '717897987691852588770249', '24', '17229551704604462130485976'); -test(macro, '-717897987691852588770249', '24', '-17229551704604462130485976'); -test(macro, '717897987691852588770249', '-24', '-17229551704604462130485976'); -test(macro, '-717897987691852588770249', '-24', '17229551704604462130485976'); -test(macro, '717897987691852588770249', '27', '19383245667680019896796723'); -test(macro, '-717897987691852588770249', '27', '-19383245667680019896796723'); -test(macro, '717897987691852588770249', '-27', '-19383245667680019896796723'); -test(macro, '-717897987691852588770249', '-27', '19383245667680019896796723'); -test(macro, '717897987691852588770249', '29', '20819041643063725074337221'); -test(macro, '-717897987691852588770249', '29', '-20819041643063725074337221'); -test(macro, '717897987691852588770249', '-29', '-20819041643063725074337221'); -test(macro, '-717897987691852588770249', '-29', '20819041643063725074337221'); -test(macro, '717897987691852588770249', '1234', '885886116811746094542487266'); -test( - macro, - '-717897987691852588770249', - '1234', - '-885886116811746094542487266', -); -test( - macro, - '717897987691852588770249', - '-1234', - '-885886116811746094542487266', -); -test( - macro, - '-717897987691852588770249', - '-1234', - '885886116811746094542487266', -); -test(macro, '717897987691852588770249', '5678', '4076224774114338999037473822'); -test( - macro, - '-717897987691852588770249', - '5678', - '-4076224774114338999037473822', -); -test( - macro, - '717897987691852588770249', - '-5678', - '-4076224774114338999037473822', -); -test( - macro, - '-717897987691852588770249', - '-5678', - '4076224774114338999037473822', -); -test( - macro, - '717897987691852588770249', - '94906265', - '68133016662849700130765275709985', -); -test( - macro, - '-717897987691852588770249', - '94906265', - '-68133016662849700130765275709985', -); -test( - macro, - '717897987691852588770249', - '-94906265', - '-68133016662849700130765275709985', -); -test( - macro, - '-717897987691852588770249', - '-94906265', - '68133016662849700130765275709985', -); -test( - macro, - '717897987691852588770249', - '94906266', - '68133017380747687822617864480234', -); -test( - macro, - '-717897987691852588770249', - '94906266', - '-68133017380747687822617864480234', -); -test( - macro, - '717897987691852588770249', - '-94906266', - '-68133017380747687822617864480234', -); -test( - macro, - '-717897987691852588770249', - '-94906266', - '68133017380747687822617864480234', -); -test( - macro, - '717897987691852588770249', - '1073741824', - '770837094750179348605289078194176', -); -test( - macro, - '-717897987691852588770249', - '1073741824', - '-770837094750179348605289078194176', -); -test( - macro, - '717897987691852588770249', - '-1073741824', - '-770837094750179348605289078194176', -); -test( - macro, - '-717897987691852588770249', - '-1073741824', - '770837094750179348605289078194176', -); -test( - macro, - '717897987691852588770249', - '51676101935731', - '37098169591420333175287767861722867019', -); -test( - macro, - '-717897987691852588770249', - '51676101935731', - '-37098169591420333175287767861722867019', -); -test( - macro, - '717897987691852588770249', - '-51676101935731', - '-37098169591420333175287767861722867019', -); -test( - macro, - '-717897987691852588770249', - '-51676101935731', - '37098169591420333175287767861722867019', -); -test( - macro, - '717897987691852588770249', - '717897987691852588770249', - '515377520732011331036461129765621272702107522001', -); -test( - macro, - '-717897987691852588770249', - '717897987691852588770249', - '-515377520732011331036461129765621272702107522001', -); -test( - macro, - '717897987691852588770249', - '-717897987691852588770249', - '-515377520732011331036461129765621272702107522001', -); -test( - macro, - '-717897987691852588770249', - '-717897987691852588770249', - '515377520732011331036461129765621272702107522001', -); diff --git a/test/src/integer/arithmetic/muln.js b/test/src/integer/arithmetic/muln.js deleted file mode 100644 index 42b0bc5..0000000 --- a/test/src/integer/arithmetic/muln.js +++ /dev/null @@ -1,1249 +0,0 @@ -import test from 'ava'; -import {parse, stringify, muln} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const c = muln(a, B); - t.is(stringify(a), A); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `muln(${fmt(A)},${B}) = ${fmt(C)}`; - -test(macro, '0', 0, '0'); -test(macro, '0', 1, '0'); -test(macro, '0', -1, '0'); -test(macro, '0', 3, '0'); -test(macro, '0', -3, '0'); -test(macro, '0', 7, '0'); -test(macro, '0', -7, '0'); -test(macro, '0', 9, '0'); -test(macro, '0', -9, '0'); -test(macro, '0', 11, '0'); -test(macro, '0', -11, '0'); -test(macro, '0', 17, '0'); -test(macro, '0', -17, '0'); -test(macro, '0', 22, '0'); -test(macro, '0', -22, '0'); -test(macro, '0', 24, '0'); -test(macro, '0', -24, '0'); -test(macro, '0', 27, '0'); -test(macro, '0', -27, '0'); -test(macro, '0', 29, '0'); -test(macro, '0', -29, '0'); -test(macro, '0', 1234, '0'); -test(macro, '0', -1234, '0'); -test(macro, '0', 5678, '0'); -test(macro, '0', -5678, '0'); -test(macro, '0', 94906265, '0'); -test(macro, '0', -94906265, '0'); -test(macro, '0', 94906266, '0'); -test(macro, '0', -94906266, '0'); -test(macro, '0', 1073741824, '0'); -test(macro, '0', -1073741824, '0'); -test(macro, '0', 51676101935731, '0'); -test(macro, '0', -51676101935731, '0'); -test(macro, '1', 0, '0'); -test(macro, '-1', 0, '0'); -test(macro, '1', 1, '1'); -test(macro, '-1', 1, '-1'); -test(macro, '1', -1, '-1'); -test(macro, '-1', -1, '1'); -test(macro, '1', 3, '3'); -test(macro, '-1', 3, '-3'); -test(macro, '1', -3, '-3'); -test(macro, '-1', -3, '3'); -test(macro, '1', 7, '7'); -test(macro, '-1', 7, '-7'); -test(macro, '1', -7, '-7'); -test(macro, '-1', -7, '7'); -test(macro, '1', 9, '9'); -test(macro, '-1', 9, '-9'); -test(macro, '1', -9, '-9'); -test(macro, '-1', -9, '9'); -test(macro, '1', 11, '11'); -test(macro, '-1', 11, '-11'); -test(macro, '1', -11, '-11'); -test(macro, '-1', -11, '11'); -test(macro, '1', 17, '17'); -test(macro, '-1', 17, '-17'); -test(macro, '1', -17, '-17'); -test(macro, '-1', -17, '17'); -test(macro, '1', 22, '22'); -test(macro, '-1', 22, '-22'); -test(macro, '1', -22, '-22'); -test(macro, '-1', -22, '22'); -test(macro, '1', 24, '24'); -test(macro, '-1', 24, '-24'); -test(macro, '1', -24, '-24'); -test(macro, '-1', -24, '24'); -test(macro, '1', 27, '27'); -test(macro, '-1', 27, '-27'); -test(macro, '1', -27, '-27'); -test(macro, '-1', -27, '27'); -test(macro, '1', 29, '29'); -test(macro, '-1', 29, '-29'); -test(macro, '1', -29, '-29'); -test(macro, '-1', -29, '29'); -test(macro, '1', 1234, '1234'); -test(macro, '-1', 1234, '-1234'); -test(macro, '1', -1234, '-1234'); -test(macro, '-1', -1234, '1234'); -test(macro, '1', 5678, '5678'); -test(macro, '-1', 5678, '-5678'); -test(macro, '1', -5678, '-5678'); -test(macro, '-1', -5678, '5678'); -test(macro, '1', 94906265, '94906265'); -test(macro, '-1', 94906265, '-94906265'); -test(macro, '1', -94906265, '-94906265'); -test(macro, '-1', -94906265, '94906265'); -test(macro, '1', 94906266, '94906266'); -test(macro, '-1', 94906266, '-94906266'); -test(macro, '1', -94906266, '-94906266'); -test(macro, '-1', -94906266, '94906266'); -test(macro, '1', 1073741824, '1073741824'); -test(macro, '-1', 1073741824, '-1073741824'); -test(macro, '1', -1073741824, '-1073741824'); -test(macro, '-1', -1073741824, '1073741824'); -test(macro, '1', 51676101935731, '51676101935731'); -test(macro, '-1', 51676101935731, '-51676101935731'); -test(macro, '1', -51676101935731, '-51676101935731'); -test(macro, '-1', -51676101935731, '51676101935731'); -test(macro, '3', 0, '0'); -test(macro, '-3', 0, '0'); -test(macro, '3', 1, '3'); -test(macro, '-3', 1, '-3'); -test(macro, '3', -1, '-3'); -test(macro, '-3', -1, '3'); -test(macro, '3', 3, '9'); -test(macro, '-3', 3, '-9'); -test(macro, '3', -3, '-9'); -test(macro, '-3', -3, '9'); -test(macro, '3', 7, '21'); -test(macro, '-3', 7, '-21'); -test(macro, '3', -7, '-21'); -test(macro, '-3', -7, '21'); -test(macro, '3', 9, '27'); -test(macro, '-3', 9, '-27'); -test(macro, '3', -9, '-27'); -test(macro, '-3', -9, '27'); -test(macro, '3', 11, '33'); -test(macro, '-3', 11, '-33'); -test(macro, '3', -11, '-33'); -test(macro, '-3', -11, '33'); -test(macro, '3', 17, '51'); -test(macro, '-3', 17, '-51'); -test(macro, '3', -17, '-51'); -test(macro, '-3', -17, '51'); -test(macro, '3', 22, '66'); -test(macro, '-3', 22, '-66'); -test(macro, '3', -22, '-66'); -test(macro, '-3', -22, '66'); -test(macro, '3', 24, '72'); -test(macro, '-3', 24, '-72'); -test(macro, '3', -24, '-72'); -test(macro, '-3', -24, '72'); -test(macro, '3', 27, '81'); -test(macro, '-3', 27, '-81'); -test(macro, '3', -27, '-81'); -test(macro, '-3', -27, '81'); -test(macro, '3', 29, '87'); -test(macro, '-3', 29, '-87'); -test(macro, '3', -29, '-87'); -test(macro, '-3', -29, '87'); -test(macro, '3', 1234, '3702'); -test(macro, '-3', 1234, '-3702'); -test(macro, '3', -1234, '-3702'); -test(macro, '-3', -1234, '3702'); -test(macro, '3', 5678, '17034'); -test(macro, '-3', 5678, '-17034'); -test(macro, '3', -5678, '-17034'); -test(macro, '-3', -5678, '17034'); -test(macro, '3', 94906265, '284718795'); -test(macro, '-3', 94906265, '-284718795'); -test(macro, '3', -94906265, '-284718795'); -test(macro, '-3', -94906265, '284718795'); -test(macro, '3', 94906266, '284718798'); -test(macro, '-3', 94906266, '-284718798'); -test(macro, '3', -94906266, '-284718798'); -test(macro, '-3', -94906266, '284718798'); -test(macro, '3', 1073741824, '3221225472'); -test(macro, '-3', 1073741824, '-3221225472'); -test(macro, '3', -1073741824, '-3221225472'); -test(macro, '-3', -1073741824, '3221225472'); -test(macro, '3', 51676101935731, '155028305807193'); -test(macro, '-3', 51676101935731, '-155028305807193'); -test(macro, '3', -51676101935731, '-155028305807193'); -test(macro, '-3', -51676101935731, '155028305807193'); -test(macro, '7', 0, '0'); -test(macro, '-7', 0, '0'); -test(macro, '7', 1, '7'); -test(macro, '-7', 1, '-7'); -test(macro, '7', -1, '-7'); -test(macro, '-7', -1, '7'); -test(macro, '7', 3, '21'); -test(macro, '-7', 3, '-21'); -test(macro, '7', -3, '-21'); -test(macro, '-7', -3, '21'); -test(macro, '7', 7, '49'); -test(macro, '-7', 7, '-49'); -test(macro, '7', -7, '-49'); -test(macro, '-7', -7, '49'); -test(macro, '7', 9, '63'); -test(macro, '-7', 9, '-63'); -test(macro, '7', -9, '-63'); -test(macro, '-7', -9, '63'); -test(macro, '7', 11, '77'); -test(macro, '-7', 11, '-77'); -test(macro, '7', -11, '-77'); -test(macro, '-7', -11, '77'); -test(macro, '7', 17, '119'); -test(macro, '-7', 17, '-119'); -test(macro, '7', -17, '-119'); -test(macro, '-7', -17, '119'); -test(macro, '7', 22, '154'); -test(macro, '-7', 22, '-154'); -test(macro, '7', -22, '-154'); -test(macro, '-7', -22, '154'); -test(macro, '7', 24, '168'); -test(macro, '-7', 24, '-168'); -test(macro, '7', -24, '-168'); -test(macro, '-7', -24, '168'); -test(macro, '7', 27, '189'); -test(macro, '-7', 27, '-189'); -test(macro, '7', -27, '-189'); -test(macro, '-7', -27, '189'); -test(macro, '7', 29, '203'); -test(macro, '-7', 29, '-203'); -test(macro, '7', -29, '-203'); -test(macro, '-7', -29, '203'); -test(macro, '7', 1234, '8638'); -test(macro, '-7', 1234, '-8638'); -test(macro, '7', -1234, '-8638'); -test(macro, '-7', -1234, '8638'); -test(macro, '7', 5678, '39746'); -test(macro, '-7', 5678, '-39746'); -test(macro, '7', -5678, '-39746'); -test(macro, '-7', -5678, '39746'); -test(macro, '7', 94906265, '664343855'); -test(macro, '-7', 94906265, '-664343855'); -test(macro, '7', -94906265, '-664343855'); -test(macro, '-7', -94906265, '664343855'); -test(macro, '7', 94906266, '664343862'); -test(macro, '-7', 94906266, '-664343862'); -test(macro, '7', -94906266, '-664343862'); -test(macro, '-7', -94906266, '664343862'); -test(macro, '7', 1073741824, '7516192768'); -test(macro, '-7', 1073741824, '-7516192768'); -test(macro, '7', -1073741824, '-7516192768'); -test(macro, '-7', -1073741824, '7516192768'); -test(macro, '7', 51676101935731, '361732713550117'); -test(macro, '-7', 51676101935731, '-361732713550117'); -test(macro, '7', -51676101935731, '-361732713550117'); -test(macro, '-7', -51676101935731, '361732713550117'); -test(macro, '9', 0, '0'); -test(macro, '-9', 0, '0'); -test(macro, '9', 1, '9'); -test(macro, '-9', 1, '-9'); -test(macro, '9', -1, '-9'); -test(macro, '-9', -1, '9'); -test(macro, '9', 3, '27'); -test(macro, '-9', 3, '-27'); -test(macro, '9', -3, '-27'); -test(macro, '-9', -3, '27'); -test(macro, '9', 7, '63'); -test(macro, '-9', 7, '-63'); -test(macro, '9', -7, '-63'); -test(macro, '-9', -7, '63'); -test(macro, '9', 9, '81'); -test(macro, '-9', 9, '-81'); -test(macro, '9', -9, '-81'); -test(macro, '-9', -9, '81'); -test(macro, '9', 11, '99'); -test(macro, '-9', 11, '-99'); -test(macro, '9', -11, '-99'); -test(macro, '-9', -11, '99'); -test(macro, '9', 17, '153'); -test(macro, '-9', 17, '-153'); -test(macro, '9', -17, '-153'); -test(macro, '-9', -17, '153'); -test(macro, '9', 22, '198'); -test(macro, '-9', 22, '-198'); -test(macro, '9', -22, '-198'); -test(macro, '-9', -22, '198'); -test(macro, '9', 24, '216'); -test(macro, '-9', 24, '-216'); -test(macro, '9', -24, '-216'); -test(macro, '-9', -24, '216'); -test(macro, '9', 27, '243'); -test(macro, '-9', 27, '-243'); -test(macro, '9', -27, '-243'); -test(macro, '-9', -27, '243'); -test(macro, '9', 29, '261'); -test(macro, '-9', 29, '-261'); -test(macro, '9', -29, '-261'); -test(macro, '-9', -29, '261'); -test(macro, '9', 1234, '11106'); -test(macro, '-9', 1234, '-11106'); -test(macro, '9', -1234, '-11106'); -test(macro, '-9', -1234, '11106'); -test(macro, '9', 5678, '51102'); -test(macro, '-9', 5678, '-51102'); -test(macro, '9', -5678, '-51102'); -test(macro, '-9', -5678, '51102'); -test(macro, '9', 94906265, '854156385'); -test(macro, '-9', 94906265, '-854156385'); -test(macro, '9', -94906265, '-854156385'); -test(macro, '-9', -94906265, '854156385'); -test(macro, '9', 94906266, '854156394'); -test(macro, '-9', 94906266, '-854156394'); -test(macro, '9', -94906266, '-854156394'); -test(macro, '-9', -94906266, '854156394'); -test(macro, '9', 1073741824, '9663676416'); -test(macro, '-9', 1073741824, '-9663676416'); -test(macro, '9', -1073741824, '-9663676416'); -test(macro, '-9', -1073741824, '9663676416'); -test(macro, '9', 51676101935731, '465084917421579'); -test(macro, '-9', 51676101935731, '-465084917421579'); -test(macro, '9', -51676101935731, '-465084917421579'); -test(macro, '-9', -51676101935731, '465084917421579'); -test(macro, '11', 0, '0'); -test(macro, '-11', 0, '0'); -test(macro, '11', 1, '11'); -test(macro, '-11', 1, '-11'); -test(macro, '11', -1, '-11'); -test(macro, '-11', -1, '11'); -test(macro, '11', 3, '33'); -test(macro, '-11', 3, '-33'); -test(macro, '11', -3, '-33'); -test(macro, '-11', -3, '33'); -test(macro, '11', 7, '77'); -test(macro, '-11', 7, '-77'); -test(macro, '11', -7, '-77'); -test(macro, '-11', -7, '77'); -test(macro, '11', 9, '99'); -test(macro, '-11', 9, '-99'); -test(macro, '11', -9, '-99'); -test(macro, '-11', -9, '99'); -test(macro, '11', 11, '121'); -test(macro, '-11', 11, '-121'); -test(macro, '11', -11, '-121'); -test(macro, '-11', -11, '121'); -test(macro, '11', 17, '187'); -test(macro, '-11', 17, '-187'); -test(macro, '11', -17, '-187'); -test(macro, '-11', -17, '187'); -test(macro, '11', 22, '242'); -test(macro, '-11', 22, '-242'); -test(macro, '11', -22, '-242'); -test(macro, '-11', -22, '242'); -test(macro, '11', 24, '264'); -test(macro, '-11', 24, '-264'); -test(macro, '11', -24, '-264'); -test(macro, '-11', -24, '264'); -test(macro, '11', 27, '297'); -test(macro, '-11', 27, '-297'); -test(macro, '11', -27, '-297'); -test(macro, '-11', -27, '297'); -test(macro, '11', 29, '319'); -test(macro, '-11', 29, '-319'); -test(macro, '11', -29, '-319'); -test(macro, '-11', -29, '319'); -test(macro, '11', 1234, '13574'); -test(macro, '-11', 1234, '-13574'); -test(macro, '11', -1234, '-13574'); -test(macro, '-11', -1234, '13574'); -test(macro, '11', 5678, '62458'); -test(macro, '-11', 5678, '-62458'); -test(macro, '11', -5678, '-62458'); -test(macro, '-11', -5678, '62458'); -test(macro, '11', 94906265, '1043968915'); -test(macro, '-11', 94906265, '-1043968915'); -test(macro, '11', -94906265, '-1043968915'); -test(macro, '-11', -94906265, '1043968915'); -test(macro, '11', 94906266, '1043968926'); -test(macro, '-11', 94906266, '-1043968926'); -test(macro, '11', -94906266, '-1043968926'); -test(macro, '-11', -94906266, '1043968926'); -test(macro, '11', 1073741824, '11811160064'); -test(macro, '-11', 1073741824, '-11811160064'); -test(macro, '11', -1073741824, '-11811160064'); -test(macro, '-11', -1073741824, '11811160064'); -test(macro, '11', 51676101935731, '568437121293041'); -test(macro, '-11', 51676101935731, '-568437121293041'); -test(macro, '11', -51676101935731, '-568437121293041'); -test(macro, '-11', -51676101935731, '568437121293041'); -test(macro, '17', 0, '0'); -test(macro, '-17', 0, '0'); -test(macro, '17', 1, '17'); -test(macro, '-17', 1, '-17'); -test(macro, '17', -1, '-17'); -test(macro, '-17', -1, '17'); -test(macro, '17', 3, '51'); -test(macro, '-17', 3, '-51'); -test(macro, '17', -3, '-51'); -test(macro, '-17', -3, '51'); -test(macro, '17', 7, '119'); -test(macro, '-17', 7, '-119'); -test(macro, '17', -7, '-119'); -test(macro, '-17', -7, '119'); -test(macro, '17', 9, '153'); -test(macro, '-17', 9, '-153'); -test(macro, '17', -9, '-153'); -test(macro, '-17', -9, '153'); -test(macro, '17', 11, '187'); -test(macro, '-17', 11, '-187'); -test(macro, '17', -11, '-187'); -test(macro, '-17', -11, '187'); -test(macro, '17', 17, '289'); -test(macro, '-17', 17, '-289'); -test(macro, '17', -17, '-289'); -test(macro, '-17', -17, '289'); -test(macro, '17', 22, '374'); -test(macro, '-17', 22, '-374'); -test(macro, '17', -22, '-374'); -test(macro, '-17', -22, '374'); -test(macro, '17', 24, '408'); -test(macro, '-17', 24, '-408'); -test(macro, '17', -24, '-408'); -test(macro, '-17', -24, '408'); -test(macro, '17', 27, '459'); -test(macro, '-17', 27, '-459'); -test(macro, '17', -27, '-459'); -test(macro, '-17', -27, '459'); -test(macro, '17', 29, '493'); -test(macro, '-17', 29, '-493'); -test(macro, '17', -29, '-493'); -test(macro, '-17', -29, '493'); -test(macro, '17', 1234, '20978'); -test(macro, '-17', 1234, '-20978'); -test(macro, '17', -1234, '-20978'); -test(macro, '-17', -1234, '20978'); -test(macro, '17', 5678, '96526'); -test(macro, '-17', 5678, '-96526'); -test(macro, '17', -5678, '-96526'); -test(macro, '-17', -5678, '96526'); -test(macro, '17', 94906265, '1613406505'); -test(macro, '-17', 94906265, '-1613406505'); -test(macro, '17', -94906265, '-1613406505'); -test(macro, '-17', -94906265, '1613406505'); -test(macro, '17', 94906266, '1613406522'); -test(macro, '-17', 94906266, '-1613406522'); -test(macro, '17', -94906266, '-1613406522'); -test(macro, '-17', -94906266, '1613406522'); -test(macro, '17', 1073741824, '18253611008'); -test(macro, '-17', 1073741824, '-18253611008'); -test(macro, '17', -1073741824, '-18253611008'); -test(macro, '-17', -1073741824, '18253611008'); -test(macro, '17', 51676101935731, '878493732907427'); -test(macro, '-17', 51676101935731, '-878493732907427'); -test(macro, '17', -51676101935731, '-878493732907427'); -test(macro, '-17', -51676101935731, '878493732907427'); -test(macro, '22', 0, '0'); -test(macro, '-22', 0, '0'); -test(macro, '22', 1, '22'); -test(macro, '-22', 1, '-22'); -test(macro, '22', -1, '-22'); -test(macro, '-22', -1, '22'); -test(macro, '22', 3, '66'); -test(macro, '-22', 3, '-66'); -test(macro, '22', -3, '-66'); -test(macro, '-22', -3, '66'); -test(macro, '22', 7, '154'); -test(macro, '-22', 7, '-154'); -test(macro, '22', -7, '-154'); -test(macro, '-22', -7, '154'); -test(macro, '22', 9, '198'); -test(macro, '-22', 9, '-198'); -test(macro, '22', -9, '-198'); -test(macro, '-22', -9, '198'); -test(macro, '22', 11, '242'); -test(macro, '-22', 11, '-242'); -test(macro, '22', -11, '-242'); -test(macro, '-22', -11, '242'); -test(macro, '22', 17, '374'); -test(macro, '-22', 17, '-374'); -test(macro, '22', -17, '-374'); -test(macro, '-22', -17, '374'); -test(macro, '22', 22, '484'); -test(macro, '-22', 22, '-484'); -test(macro, '22', -22, '-484'); -test(macro, '-22', -22, '484'); -test(macro, '22', 24, '528'); -test(macro, '-22', 24, '-528'); -test(macro, '22', -24, '-528'); -test(macro, '-22', -24, '528'); -test(macro, '22', 27, '594'); -test(macro, '-22', 27, '-594'); -test(macro, '22', -27, '-594'); -test(macro, '-22', -27, '594'); -test(macro, '22', 29, '638'); -test(macro, '-22', 29, '-638'); -test(macro, '22', -29, '-638'); -test(macro, '-22', -29, '638'); -test(macro, '22', 1234, '27148'); -test(macro, '-22', 1234, '-27148'); -test(macro, '22', -1234, '-27148'); -test(macro, '-22', -1234, '27148'); -test(macro, '22', 5678, '124916'); -test(macro, '-22', 5678, '-124916'); -test(macro, '22', -5678, '-124916'); -test(macro, '-22', -5678, '124916'); -test(macro, '22', 94906265, '2087937830'); -test(macro, '-22', 94906265, '-2087937830'); -test(macro, '22', -94906265, '-2087937830'); -test(macro, '-22', -94906265, '2087937830'); -test(macro, '22', 94906266, '2087937852'); -test(macro, '-22', 94906266, '-2087937852'); -test(macro, '22', -94906266, '-2087937852'); -test(macro, '-22', -94906266, '2087937852'); -test(macro, '22', 1073741824, '23622320128'); -test(macro, '-22', 1073741824, '-23622320128'); -test(macro, '22', -1073741824, '-23622320128'); -test(macro, '-22', -1073741824, '23622320128'); -test(macro, '22', 51676101935731, '1136874242586082'); -test(macro, '-22', 51676101935731, '-1136874242586082'); -test(macro, '22', -51676101935731, '-1136874242586082'); -test(macro, '-22', -51676101935731, '1136874242586082'); -test(macro, '24', 0, '0'); -test(macro, '-24', 0, '0'); -test(macro, '24', 1, '24'); -test(macro, '-24', 1, '-24'); -test(macro, '24', -1, '-24'); -test(macro, '-24', -1, '24'); -test(macro, '24', 3, '72'); -test(macro, '-24', 3, '-72'); -test(macro, '24', -3, '-72'); -test(macro, '-24', -3, '72'); -test(macro, '24', 7, '168'); -test(macro, '-24', 7, '-168'); -test(macro, '24', -7, '-168'); -test(macro, '-24', -7, '168'); -test(macro, '24', 9, '216'); -test(macro, '-24', 9, '-216'); -test(macro, '24', -9, '-216'); -test(macro, '-24', -9, '216'); -test(macro, '24', 11, '264'); -test(macro, '-24', 11, '-264'); -test(macro, '24', -11, '-264'); -test(macro, '-24', -11, '264'); -test(macro, '24', 17, '408'); -test(macro, '-24', 17, '-408'); -test(macro, '24', -17, '-408'); -test(macro, '-24', -17, '408'); -test(macro, '24', 22, '528'); -test(macro, '-24', 22, '-528'); -test(macro, '24', -22, '-528'); -test(macro, '-24', -22, '528'); -test(macro, '24', 24, '576'); -test(macro, '-24', 24, '-576'); -test(macro, '24', -24, '-576'); -test(macro, '-24', -24, '576'); -test(macro, '24', 27, '648'); -test(macro, '-24', 27, '-648'); -test(macro, '24', -27, '-648'); -test(macro, '-24', -27, '648'); -test(macro, '24', 29, '696'); -test(macro, '-24', 29, '-696'); -test(macro, '24', -29, '-696'); -test(macro, '-24', -29, '696'); -test(macro, '24', 1234, '29616'); -test(macro, '-24', 1234, '-29616'); -test(macro, '24', -1234, '-29616'); -test(macro, '-24', -1234, '29616'); -test(macro, '24', 5678, '136272'); -test(macro, '-24', 5678, '-136272'); -test(macro, '24', -5678, '-136272'); -test(macro, '-24', -5678, '136272'); -test(macro, '24', 94906265, '2277750360'); -test(macro, '-24', 94906265, '-2277750360'); -test(macro, '24', -94906265, '-2277750360'); -test(macro, '-24', -94906265, '2277750360'); -test(macro, '24', 94906266, '2277750384'); -test(macro, '-24', 94906266, '-2277750384'); -test(macro, '24', -94906266, '-2277750384'); -test(macro, '-24', -94906266, '2277750384'); -test(macro, '24', 1073741824, '25769803776'); -test(macro, '-24', 1073741824, '-25769803776'); -test(macro, '24', -1073741824, '-25769803776'); -test(macro, '-24', -1073741824, '25769803776'); -test(macro, '24', 51676101935731, '1240226446457544'); -test(macro, '-24', 51676101935731, '-1240226446457544'); -test(macro, '24', -51676101935731, '-1240226446457544'); -test(macro, '-24', -51676101935731, '1240226446457544'); -test(macro, '27', 0, '0'); -test(macro, '-27', 0, '0'); -test(macro, '27', 1, '27'); -test(macro, '-27', 1, '-27'); -test(macro, '27', -1, '-27'); -test(macro, '-27', -1, '27'); -test(macro, '27', 3, '81'); -test(macro, '-27', 3, '-81'); -test(macro, '27', -3, '-81'); -test(macro, '-27', -3, '81'); -test(macro, '27', 7, '189'); -test(macro, '-27', 7, '-189'); -test(macro, '27', -7, '-189'); -test(macro, '-27', -7, '189'); -test(macro, '27', 9, '243'); -test(macro, '-27', 9, '-243'); -test(macro, '27', -9, '-243'); -test(macro, '-27', -9, '243'); -test(macro, '27', 11, '297'); -test(macro, '-27', 11, '-297'); -test(macro, '27', -11, '-297'); -test(macro, '-27', -11, '297'); -test(macro, '27', 17, '459'); -test(macro, '-27', 17, '-459'); -test(macro, '27', -17, '-459'); -test(macro, '-27', -17, '459'); -test(macro, '27', 22, '594'); -test(macro, '-27', 22, '-594'); -test(macro, '27', -22, '-594'); -test(macro, '-27', -22, '594'); -test(macro, '27', 24, '648'); -test(macro, '-27', 24, '-648'); -test(macro, '27', -24, '-648'); -test(macro, '-27', -24, '648'); -test(macro, '27', 27, '729'); -test(macro, '-27', 27, '-729'); -test(macro, '27', -27, '-729'); -test(macro, '-27', -27, '729'); -test(macro, '27', 29, '783'); -test(macro, '-27', 29, '-783'); -test(macro, '27', -29, '-783'); -test(macro, '-27', -29, '783'); -test(macro, '27', 1234, '33318'); -test(macro, '-27', 1234, '-33318'); -test(macro, '27', -1234, '-33318'); -test(macro, '-27', -1234, '33318'); -test(macro, '27', 5678, '153306'); -test(macro, '-27', 5678, '-153306'); -test(macro, '27', -5678, '-153306'); -test(macro, '-27', -5678, '153306'); -test(macro, '27', 94906265, '2562469155'); -test(macro, '-27', 94906265, '-2562469155'); -test(macro, '27', -94906265, '-2562469155'); -test(macro, '-27', -94906265, '2562469155'); -test(macro, '27', 94906266, '2562469182'); -test(macro, '-27', 94906266, '-2562469182'); -test(macro, '27', -94906266, '-2562469182'); -test(macro, '-27', -94906266, '2562469182'); -test(macro, '27', 1073741824, '28991029248'); -test(macro, '-27', 1073741824, '-28991029248'); -test(macro, '27', -1073741824, '-28991029248'); -test(macro, '-27', -1073741824, '28991029248'); -test(macro, '27', 51676101935731, '1395254752264737'); -test(macro, '-27', 51676101935731, '-1395254752264737'); -test(macro, '27', -51676101935731, '-1395254752264737'); -test(macro, '-27', -51676101935731, '1395254752264737'); -test(macro, '29', 0, '0'); -test(macro, '-29', 0, '0'); -test(macro, '29', 1, '29'); -test(macro, '-29', 1, '-29'); -test(macro, '29', -1, '-29'); -test(macro, '-29', -1, '29'); -test(macro, '29', 3, '87'); -test(macro, '-29', 3, '-87'); -test(macro, '29', -3, '-87'); -test(macro, '-29', -3, '87'); -test(macro, '29', 7, '203'); -test(macro, '-29', 7, '-203'); -test(macro, '29', -7, '-203'); -test(macro, '-29', -7, '203'); -test(macro, '29', 9, '261'); -test(macro, '-29', 9, '-261'); -test(macro, '29', -9, '-261'); -test(macro, '-29', -9, '261'); -test(macro, '29', 11, '319'); -test(macro, '-29', 11, '-319'); -test(macro, '29', -11, '-319'); -test(macro, '-29', -11, '319'); -test(macro, '29', 17, '493'); -test(macro, '-29', 17, '-493'); -test(macro, '29', -17, '-493'); -test(macro, '-29', -17, '493'); -test(macro, '29', 22, '638'); -test(macro, '-29', 22, '-638'); -test(macro, '29', -22, '-638'); -test(macro, '-29', -22, '638'); -test(macro, '29', 24, '696'); -test(macro, '-29', 24, '-696'); -test(macro, '29', -24, '-696'); -test(macro, '-29', -24, '696'); -test(macro, '29', 27, '783'); -test(macro, '-29', 27, '-783'); -test(macro, '29', -27, '-783'); -test(macro, '-29', -27, '783'); -test(macro, '29', 29, '841'); -test(macro, '-29', 29, '-841'); -test(macro, '29', -29, '-841'); -test(macro, '-29', -29, '841'); -test(macro, '29', 1234, '35786'); -test(macro, '-29', 1234, '-35786'); -test(macro, '29', -1234, '-35786'); -test(macro, '-29', -1234, '35786'); -test(macro, '29', 5678, '164662'); -test(macro, '-29', 5678, '-164662'); -test(macro, '29', -5678, '-164662'); -test(macro, '-29', -5678, '164662'); -test(macro, '29', 94906265, '2752281685'); -test(macro, '-29', 94906265, '-2752281685'); -test(macro, '29', -94906265, '-2752281685'); -test(macro, '-29', -94906265, '2752281685'); -test(macro, '29', 94906266, '2752281714'); -test(macro, '-29', 94906266, '-2752281714'); -test(macro, '29', -94906266, '-2752281714'); -test(macro, '-29', -94906266, '2752281714'); -test(macro, '29', 1073741824, '31138512896'); -test(macro, '-29', 1073741824, '-31138512896'); -test(macro, '29', -1073741824, '-31138512896'); -test(macro, '-29', -1073741824, '31138512896'); -test(macro, '29', 51676101935731, '1498606956136199'); -test(macro, '-29', 51676101935731, '-1498606956136199'); -test(macro, '29', -51676101935731, '-1498606956136199'); -test(macro, '-29', -51676101935731, '1498606956136199'); -test(macro, '1234', 0, '0'); -test(macro, '-1234', 0, '0'); -test(macro, '1234', 1, '1234'); -test(macro, '-1234', 1, '-1234'); -test(macro, '1234', -1, '-1234'); -test(macro, '-1234', -1, '1234'); -test(macro, '1234', 3, '3702'); -test(macro, '-1234', 3, '-3702'); -test(macro, '1234', -3, '-3702'); -test(macro, '-1234', -3, '3702'); -test(macro, '1234', 7, '8638'); -test(macro, '-1234', 7, '-8638'); -test(macro, '1234', -7, '-8638'); -test(macro, '-1234', -7, '8638'); -test(macro, '1234', 9, '11106'); -test(macro, '-1234', 9, '-11106'); -test(macro, '1234', -9, '-11106'); -test(macro, '-1234', -9, '11106'); -test(macro, '1234', 11, '13574'); -test(macro, '-1234', 11, '-13574'); -test(macro, '1234', -11, '-13574'); -test(macro, '-1234', -11, '13574'); -test(macro, '1234', 17, '20978'); -test(macro, '-1234', 17, '-20978'); -test(macro, '1234', -17, '-20978'); -test(macro, '-1234', -17, '20978'); -test(macro, '1234', 22, '27148'); -test(macro, '-1234', 22, '-27148'); -test(macro, '1234', -22, '-27148'); -test(macro, '-1234', -22, '27148'); -test(macro, '1234', 24, '29616'); -test(macro, '-1234', 24, '-29616'); -test(macro, '1234', -24, '-29616'); -test(macro, '-1234', -24, '29616'); -test(macro, '1234', 27, '33318'); -test(macro, '-1234', 27, '-33318'); -test(macro, '1234', -27, '-33318'); -test(macro, '-1234', -27, '33318'); -test(macro, '1234', 29, '35786'); -test(macro, '-1234', 29, '-35786'); -test(macro, '1234', -29, '-35786'); -test(macro, '-1234', -29, '35786'); -test(macro, '1234', 1234, '1522756'); -test(macro, '-1234', 1234, '-1522756'); -test(macro, '1234', -1234, '-1522756'); -test(macro, '-1234', -1234, '1522756'); -test(macro, '1234', 5678, '7006652'); -test(macro, '-1234', 5678, '-7006652'); -test(macro, '1234', -5678, '-7006652'); -test(macro, '-1234', -5678, '7006652'); -test(macro, '1234', 94906265, '117114331010'); -test(macro, '-1234', 94906265, '-117114331010'); -test(macro, '1234', -94906265, '-117114331010'); -test(macro, '-1234', -94906265, '117114331010'); -test(macro, '1234', 94906266, '117114332244'); -test(macro, '-1234', 94906266, '-117114332244'); -test(macro, '1234', -94906266, '-117114332244'); -test(macro, '-1234', -94906266, '117114332244'); -test(macro, '1234', 1073741824, '1324997410816'); -test(macro, '-1234', 1073741824, '-1324997410816'); -test(macro, '1234', -1073741824, '-1324997410816'); -test(macro, '-1234', -1073741824, '1324997410816'); -test(macro, '1234', 51676101935731, '63768309788692054'); -test(macro, '-1234', 51676101935731, '-63768309788692054'); -test(macro, '1234', -51676101935731, '-63768309788692054'); -test(macro, '-1234', -51676101935731, '63768309788692054'); -test(macro, '5678', 0, '0'); -test(macro, '-5678', 0, '0'); -test(macro, '5678', 1, '5678'); -test(macro, '-5678', 1, '-5678'); -test(macro, '5678', -1, '-5678'); -test(macro, '-5678', -1, '5678'); -test(macro, '5678', 3, '17034'); -test(macro, '-5678', 3, '-17034'); -test(macro, '5678', -3, '-17034'); -test(macro, '-5678', -3, '17034'); -test(macro, '5678', 7, '39746'); -test(macro, '-5678', 7, '-39746'); -test(macro, '5678', -7, '-39746'); -test(macro, '-5678', -7, '39746'); -test(macro, '5678', 9, '51102'); -test(macro, '-5678', 9, '-51102'); -test(macro, '5678', -9, '-51102'); -test(macro, '-5678', -9, '51102'); -test(macro, '5678', 11, '62458'); -test(macro, '-5678', 11, '-62458'); -test(macro, '5678', -11, '-62458'); -test(macro, '-5678', -11, '62458'); -test(macro, '5678', 17, '96526'); -test(macro, '-5678', 17, '-96526'); -test(macro, '5678', -17, '-96526'); -test(macro, '-5678', -17, '96526'); -test(macro, '5678', 22, '124916'); -test(macro, '-5678', 22, '-124916'); -test(macro, '5678', -22, '-124916'); -test(macro, '-5678', -22, '124916'); -test(macro, '5678', 24, '136272'); -test(macro, '-5678', 24, '-136272'); -test(macro, '5678', -24, '-136272'); -test(macro, '-5678', -24, '136272'); -test(macro, '5678', 27, '153306'); -test(macro, '-5678', 27, '-153306'); -test(macro, '5678', -27, '-153306'); -test(macro, '-5678', -27, '153306'); -test(macro, '5678', 29, '164662'); -test(macro, '-5678', 29, '-164662'); -test(macro, '5678', -29, '-164662'); -test(macro, '-5678', -29, '164662'); -test(macro, '5678', 1234, '7006652'); -test(macro, '-5678', 1234, '-7006652'); -test(macro, '5678', -1234, '-7006652'); -test(macro, '-5678', -1234, '7006652'); -test(macro, '5678', 5678, '32239684'); -test(macro, '-5678', 5678, '-32239684'); -test(macro, '5678', -5678, '-32239684'); -test(macro, '-5678', -5678, '32239684'); -test(macro, '5678', 94906265, '538877772670'); -test(macro, '-5678', 94906265, '-538877772670'); -test(macro, '5678', -94906265, '-538877772670'); -test(macro, '-5678', -94906265, '538877772670'); -test(macro, '5678', 94906266, '538877778348'); -test(macro, '-5678', 94906266, '-538877778348'); -test(macro, '5678', -94906266, '-538877778348'); -test(macro, '-5678', -94906266, '538877778348'); -test(macro, '5678', 1073741824, '6096706076672'); -test(macro, '-5678', 1073741824, '-6096706076672'); -test(macro, '5678', -1073741824, '-6096706076672'); -test(macro, '-5678', -1073741824, '6096706076672'); -test(macro, '5678', 51676101935731, '293416906791080618'); -test(macro, '-5678', 51676101935731, '-293416906791080618'); -test(macro, '5678', -51676101935731, '-293416906791080618'); -test(macro, '-5678', -51676101935731, '293416906791080618'); -test(macro, '94906265', 0, '0'); -test(macro, '-94906265', 0, '0'); -test(macro, '94906265', 1, '94906265'); -test(macro, '-94906265', 1, '-94906265'); -test(macro, '94906265', -1, '-94906265'); -test(macro, '-94906265', -1, '94906265'); -test(macro, '94906265', 3, '284718795'); -test(macro, '-94906265', 3, '-284718795'); -test(macro, '94906265', -3, '-284718795'); -test(macro, '-94906265', -3, '284718795'); -test(macro, '94906265', 7, '664343855'); -test(macro, '-94906265', 7, '-664343855'); -test(macro, '94906265', -7, '-664343855'); -test(macro, '-94906265', -7, '664343855'); -test(macro, '94906265', 9, '854156385'); -test(macro, '-94906265', 9, '-854156385'); -test(macro, '94906265', -9, '-854156385'); -test(macro, '-94906265', -9, '854156385'); -test(macro, '94906265', 11, '1043968915'); -test(macro, '-94906265', 11, '-1043968915'); -test(macro, '94906265', -11, '-1043968915'); -test(macro, '-94906265', -11, '1043968915'); -test(macro, '94906265', 17, '1613406505'); -test(macro, '-94906265', 17, '-1613406505'); -test(macro, '94906265', -17, '-1613406505'); -test(macro, '-94906265', -17, '1613406505'); -test(macro, '94906265', 22, '2087937830'); -test(macro, '-94906265', 22, '-2087937830'); -test(macro, '94906265', -22, '-2087937830'); -test(macro, '-94906265', -22, '2087937830'); -test(macro, '94906265', 24, '2277750360'); -test(macro, '-94906265', 24, '-2277750360'); -test(macro, '94906265', -24, '-2277750360'); -test(macro, '-94906265', -24, '2277750360'); -test(macro, '94906265', 27, '2562469155'); -test(macro, '-94906265', 27, '-2562469155'); -test(macro, '94906265', -27, '-2562469155'); -test(macro, '-94906265', -27, '2562469155'); -test(macro, '94906265', 29, '2752281685'); -test(macro, '-94906265', 29, '-2752281685'); -test(macro, '94906265', -29, '-2752281685'); -test(macro, '-94906265', -29, '2752281685'); -test(macro, '94906265', 1234, '117114331010'); -test(macro, '-94906265', 1234, '-117114331010'); -test(macro, '94906265', -1234, '-117114331010'); -test(macro, '-94906265', -1234, '117114331010'); -test(macro, '94906265', 5678, '538877772670'); -test(macro, '-94906265', 5678, '-538877772670'); -test(macro, '94906265', -5678, '-538877772670'); -test(macro, '-94906265', -5678, '538877772670'); -test(macro, '94906265', 94906265, '9007199136250225'); -test(macro, '-94906265', 94906265, '-9007199136250225'); -test(macro, '94906265', -94906265, '-9007199136250225'); -test(macro, '-94906265', -94906265, '9007199136250225'); -test(macro, '94906265', 94906266, '9007199231156490'); -test(macro, '-94906265', 94906266, '-9007199231156490'); -test(macro, '94906265', -94906266, '-9007199231156490'); -test(macro, '-94906265', -94906266, '9007199231156490'); -test(macro, '94906265', 1073741824, '101904826090127360'); -test(macro, '-94906265', 1073741824, '-101904826090127360'); -test(macro, '94906265', -1073741824, '-101904826090127360'); -test(macro, '-94906265', -1073741824, '101904826090127360'); -test(macro, '94906265', 51676101935731, '4904385824479499254715'); -test(macro, '-94906265', 51676101935731, '-4904385824479499254715'); -test(macro, '94906265', -51676101935731, '-4904385824479499254715'); -test(macro, '-94906265', -51676101935731, '4904385824479499254715'); -test(macro, '94906266', 0, '0'); -test(macro, '-94906266', 0, '0'); -test(macro, '94906266', 1, '94906266'); -test(macro, '-94906266', 1, '-94906266'); -test(macro, '94906266', -1, '-94906266'); -test(macro, '-94906266', -1, '94906266'); -test(macro, '94906266', 3, '284718798'); -test(macro, '-94906266', 3, '-284718798'); -test(macro, '94906266', -3, '-284718798'); -test(macro, '-94906266', -3, '284718798'); -test(macro, '94906266', 7, '664343862'); -test(macro, '-94906266', 7, '-664343862'); -test(macro, '94906266', -7, '-664343862'); -test(macro, '-94906266', -7, '664343862'); -test(macro, '94906266', 9, '854156394'); -test(macro, '-94906266', 9, '-854156394'); -test(macro, '94906266', -9, '-854156394'); -test(macro, '-94906266', -9, '854156394'); -test(macro, '94906266', 11, '1043968926'); -test(macro, '-94906266', 11, '-1043968926'); -test(macro, '94906266', -11, '-1043968926'); -test(macro, '-94906266', -11, '1043968926'); -test(macro, '94906266', 17, '1613406522'); -test(macro, '-94906266', 17, '-1613406522'); -test(macro, '94906266', -17, '-1613406522'); -test(macro, '-94906266', -17, '1613406522'); -test(macro, '94906266', 22, '2087937852'); -test(macro, '-94906266', 22, '-2087937852'); -test(macro, '94906266', -22, '-2087937852'); -test(macro, '-94906266', -22, '2087937852'); -test(macro, '94906266', 24, '2277750384'); -test(macro, '-94906266', 24, '-2277750384'); -test(macro, '94906266', -24, '-2277750384'); -test(macro, '-94906266', -24, '2277750384'); -test(macro, '94906266', 27, '2562469182'); -test(macro, '-94906266', 27, '-2562469182'); -test(macro, '94906266', -27, '-2562469182'); -test(macro, '-94906266', -27, '2562469182'); -test(macro, '94906266', 29, '2752281714'); -test(macro, '-94906266', 29, '-2752281714'); -test(macro, '94906266', -29, '-2752281714'); -test(macro, '-94906266', -29, '2752281714'); -test(macro, '94906266', 1234, '117114332244'); -test(macro, '-94906266', 1234, '-117114332244'); -test(macro, '94906266', -1234, '-117114332244'); -test(macro, '-94906266', -1234, '117114332244'); -test(macro, '94906266', 5678, '538877778348'); -test(macro, '-94906266', 5678, '-538877778348'); -test(macro, '94906266', -5678, '-538877778348'); -test(macro, '-94906266', -5678, '538877778348'); -test(macro, '94906266', 94906265, '9007199231156490'); -test(macro, '-94906266', 94906265, '-9007199231156490'); -test(macro, '94906266', -94906265, '-9007199231156490'); -test(macro, '-94906266', -94906265, '9007199231156490'); -test(macro, '94906266', 94906266, '9007199326062756'); -test(macro, '-94906266', 94906266, '-9007199326062756'); -test(macro, '94906266', -94906266, '-9007199326062756'); -test(macro, '-94906266', -94906266, '9007199326062756'); -test(macro, '94906266', 1073741824, '101904827163869184'); -test(macro, '-94906266', 1073741824, '-101904827163869184'); -test(macro, '94906266', -1073741824, '-101904827163869184'); -test(macro, '-94906266', -1073741824, '101904827163869184'); -test(macro, '94906266', 51676101935731, '4904385876155601190446'); -test(macro, '-94906266', 51676101935731, '-4904385876155601190446'); -test(macro, '94906266', -51676101935731, '-4904385876155601190446'); -test(macro, '-94906266', -51676101935731, '4904385876155601190446'); -test(macro, '1073741824', 0, '0'); -test(macro, '-1073741824', 0, '0'); -test(macro, '1073741824', 1, '1073741824'); -test(macro, '-1073741824', 1, '-1073741824'); -test(macro, '1073741824', -1, '-1073741824'); -test(macro, '-1073741824', -1, '1073741824'); -test(macro, '1073741824', 3, '3221225472'); -test(macro, '-1073741824', 3, '-3221225472'); -test(macro, '1073741824', -3, '-3221225472'); -test(macro, '-1073741824', -3, '3221225472'); -test(macro, '1073741824', 7, '7516192768'); -test(macro, '-1073741824', 7, '-7516192768'); -test(macro, '1073741824', -7, '-7516192768'); -test(macro, '-1073741824', -7, '7516192768'); -test(macro, '1073741824', 9, '9663676416'); -test(macro, '-1073741824', 9, '-9663676416'); -test(macro, '1073741824', -9, '-9663676416'); -test(macro, '-1073741824', -9, '9663676416'); -test(macro, '1073741824', 11, '11811160064'); -test(macro, '-1073741824', 11, '-11811160064'); -test(macro, '1073741824', -11, '-11811160064'); -test(macro, '-1073741824', -11, '11811160064'); -test(macro, '1073741824', 17, '18253611008'); -test(macro, '-1073741824', 17, '-18253611008'); -test(macro, '1073741824', -17, '-18253611008'); -test(macro, '-1073741824', -17, '18253611008'); -test(macro, '1073741824', 22, '23622320128'); -test(macro, '-1073741824', 22, '-23622320128'); -test(macro, '1073741824', -22, '-23622320128'); -test(macro, '-1073741824', -22, '23622320128'); -test(macro, '1073741824', 24, '25769803776'); -test(macro, '-1073741824', 24, '-25769803776'); -test(macro, '1073741824', -24, '-25769803776'); -test(macro, '-1073741824', -24, '25769803776'); -test(macro, '1073741824', 27, '28991029248'); -test(macro, '-1073741824', 27, '-28991029248'); -test(macro, '1073741824', -27, '-28991029248'); -test(macro, '-1073741824', -27, '28991029248'); -test(macro, '1073741824', 29, '31138512896'); -test(macro, '-1073741824', 29, '-31138512896'); -test(macro, '1073741824', -29, '-31138512896'); -test(macro, '-1073741824', -29, '31138512896'); -test(macro, '1073741824', 1234, '1324997410816'); -test(macro, '-1073741824', 1234, '-1324997410816'); -test(macro, '1073741824', -1234, '-1324997410816'); -test(macro, '-1073741824', -1234, '1324997410816'); -test(macro, '1073741824', 5678, '6096706076672'); -test(macro, '-1073741824', 5678, '-6096706076672'); -test(macro, '1073741824', -5678, '-6096706076672'); -test(macro, '-1073741824', -5678, '6096706076672'); -test(macro, '1073741824', 94906265, '101904826090127360'); -test(macro, '-1073741824', 94906265, '-101904826090127360'); -test(macro, '1073741824', -94906265, '-101904826090127360'); -test(macro, '-1073741824', -94906265, '101904826090127360'); -test(macro, '1073741824', 94906266, '101904827163869184'); -test(macro, '-1073741824', 94906266, '-101904827163869184'); -test(macro, '1073741824', -94906266, '-101904827163869184'); -test(macro, '-1073741824', -94906266, '101904827163869184'); -test(macro, '1073741824', 1073741824, '1152921504606846976'); -test(macro, '-1073741824', 1073741824, '-1152921504606846976'); -test(macro, '1073741824', -1073741824, '-1152921504606846976'); -test(macro, '-1073741824', -1073741824, '1152921504606846976'); -test(macro, '1073741824', 51676101935731, '55486791949681734713344'); -test(macro, '-1073741824', 51676101935731, '-55486791949681734713344'); -test(macro, '1073741824', -51676101935731, '-55486791949681734713344'); -test(macro, '-1073741824', -51676101935731, '55486791949681734713344'); -test(macro, '51676101935731', 0, '0'); -test(macro, '-51676101935731', 0, '0'); -test(macro, '51676101935731', 1, '51676101935731'); -test(macro, '-51676101935731', 1, '-51676101935731'); -test(macro, '51676101935731', -1, '-51676101935731'); -test(macro, '-51676101935731', -1, '51676101935731'); -test(macro, '51676101935731', 3, '155028305807193'); -test(macro, '-51676101935731', 3, '-155028305807193'); -test(macro, '51676101935731', -3, '-155028305807193'); -test(macro, '-51676101935731', -3, '155028305807193'); -test(macro, '51676101935731', 7, '361732713550117'); -test(macro, '-51676101935731', 7, '-361732713550117'); -test(macro, '51676101935731', -7, '-361732713550117'); -test(macro, '-51676101935731', -7, '361732713550117'); -test(macro, '51676101935731', 9, '465084917421579'); -test(macro, '-51676101935731', 9, '-465084917421579'); -test(macro, '51676101935731', -9, '-465084917421579'); -test(macro, '-51676101935731', -9, '465084917421579'); -test(macro, '51676101935731', 11, '568437121293041'); -test(macro, '-51676101935731', 11, '-568437121293041'); -test(macro, '51676101935731', -11, '-568437121293041'); -test(macro, '-51676101935731', -11, '568437121293041'); -test(macro, '51676101935731', 17, '878493732907427'); -test(macro, '-51676101935731', 17, '-878493732907427'); -test(macro, '51676101935731', -17, '-878493732907427'); -test(macro, '-51676101935731', -17, '878493732907427'); -test(macro, '51676101935731', 22, '1136874242586082'); -test(macro, '-51676101935731', 22, '-1136874242586082'); -test(macro, '51676101935731', -22, '-1136874242586082'); -test(macro, '-51676101935731', -22, '1136874242586082'); -test(macro, '51676101935731', 24, '1240226446457544'); -test(macro, '-51676101935731', 24, '-1240226446457544'); -test(macro, '51676101935731', -24, '-1240226446457544'); -test(macro, '-51676101935731', -24, '1240226446457544'); -test(macro, '51676101935731', 27, '1395254752264737'); -test(macro, '-51676101935731', 27, '-1395254752264737'); -test(macro, '51676101935731', -27, '-1395254752264737'); -test(macro, '-51676101935731', -27, '1395254752264737'); -test(macro, '51676101935731', 29, '1498606956136199'); -test(macro, '-51676101935731', 29, '-1498606956136199'); -test(macro, '51676101935731', -29, '-1498606956136199'); -test(macro, '-51676101935731', -29, '1498606956136199'); -test(macro, '51676101935731', 1234, '63768309788692054'); -test(macro, '-51676101935731', 1234, '-63768309788692054'); -test(macro, '51676101935731', -1234, '-63768309788692054'); -test(macro, '-51676101935731', -1234, '63768309788692054'); -test(macro, '51676101935731', 5678, '293416906791080618'); -test(macro, '-51676101935731', 5678, '-293416906791080618'); -test(macro, '51676101935731', -5678, '-293416906791080618'); -test(macro, '-51676101935731', -5678, '293416906791080618'); -test(macro, '51676101935731', 94906265, '4904385824479499254715'); -test(macro, '-51676101935731', 94906265, '-4904385824479499254715'); -test(macro, '51676101935731', -94906265, '-4904385824479499254715'); -test(macro, '-51676101935731', -94906265, '4904385824479499254715'); -test(macro, '51676101935731', 94906266, '4904385876155601190446'); -test(macro, '-51676101935731', 94906266, '-4904385876155601190446'); -test(macro, '51676101935731', -94906266, '-4904385876155601190446'); -test(macro, '-51676101935731', -94906266, '4904385876155601190446'); -test(macro, '51676101935731', 1073741824, '55486791949681734713344'); -test(macro, '-51676101935731', 1073741824, '-55486791949681734713344'); -test(macro, '51676101935731', -1073741824, '-55486791949681734713344'); -test(macro, '-51676101935731', -1073741824, '55486791949681734713344'); -test(macro, '51676101935731', 51676101935731, '2670419511272061205254504361'); -test(macro, '-51676101935731', 51676101935731, '-2670419511272061205254504361'); -test(macro, '51676101935731', -51676101935731, '-2670419511272061205254504361'); -test(macro, '-51676101935731', -51676101935731, '2670419511272061205254504361'); -test(macro, '717897987691852588770249', 0, '0'); -test(macro, '-717897987691852588770249', 0, '0'); -test(macro, '717897987691852588770249', 1, '717897987691852588770249'); -test(macro, '-717897987691852588770249', 1, '-717897987691852588770249'); -test(macro, '717897987691852588770249', -1, '-717897987691852588770249'); -test(macro, '-717897987691852588770249', -1, '717897987691852588770249'); -test(macro, '717897987691852588770249', 3, '2153693963075557766310747'); -test(macro, '-717897987691852588770249', 3, '-2153693963075557766310747'); -test(macro, '717897987691852588770249', -3, '-2153693963075557766310747'); -test(macro, '-717897987691852588770249', -3, '2153693963075557766310747'); -test(macro, '717897987691852588770249', 7, '5025285913842968121391743'); -test(macro, '-717897987691852588770249', 7, '-5025285913842968121391743'); -test(macro, '717897987691852588770249', -7, '-5025285913842968121391743'); -test(macro, '-717897987691852588770249', -7, '5025285913842968121391743'); -test(macro, '717897987691852588770249', 9, '6461081889226673298932241'); -test(macro, '-717897987691852588770249', 9, '-6461081889226673298932241'); -test(macro, '717897987691852588770249', -9, '-6461081889226673298932241'); -test(macro, '-717897987691852588770249', -9, '6461081889226673298932241'); -test(macro, '717897987691852588770249', 11, '7896877864610378476472739'); -test(macro, '-717897987691852588770249', 11, '-7896877864610378476472739'); -test(macro, '717897987691852588770249', -11, '-7896877864610378476472739'); -test(macro, '-717897987691852588770249', -11, '7896877864610378476472739'); -test(macro, '717897987691852588770249', 17, '12204265790761494009094233'); -test(macro, '-717897987691852588770249', 17, '-12204265790761494009094233'); -test(macro, '717897987691852588770249', -17, '-12204265790761494009094233'); -test(macro, '-717897987691852588770249', -17, '12204265790761494009094233'); -test(macro, '717897987691852588770249', 22, '15793755729220756952945478'); -test(macro, '-717897987691852588770249', 22, '-15793755729220756952945478'); -test(macro, '717897987691852588770249', -22, '-15793755729220756952945478'); -test(macro, '-717897987691852588770249', -22, '15793755729220756952945478'); -test(macro, '717897987691852588770249', 24, '17229551704604462130485976'); -test(macro, '-717897987691852588770249', 24, '-17229551704604462130485976'); -test(macro, '717897987691852588770249', -24, '-17229551704604462130485976'); -test(macro, '-717897987691852588770249', -24, '17229551704604462130485976'); -test(macro, '717897987691852588770249', 27, '19383245667680019896796723'); -test(macro, '-717897987691852588770249', 27, '-19383245667680019896796723'); -test(macro, '717897987691852588770249', -27, '-19383245667680019896796723'); -test(macro, '-717897987691852588770249', -27, '19383245667680019896796723'); -test(macro, '717897987691852588770249', 29, '20819041643063725074337221'); -test(macro, '-717897987691852588770249', 29, '-20819041643063725074337221'); -test(macro, '717897987691852588770249', -29, '-20819041643063725074337221'); -test(macro, '-717897987691852588770249', -29, '20819041643063725074337221'); -test(macro, '717897987691852588770249', 1234, '885886116811746094542487266'); -test(macro, '-717897987691852588770249', 1234, '-885886116811746094542487266'); -test(macro, '717897987691852588770249', -1234, '-885886116811746094542487266'); -test(macro, '-717897987691852588770249', -1234, '885886116811746094542487266'); -test(macro, '717897987691852588770249', 5678, '4076224774114338999037473822'); -test(macro, '-717897987691852588770249', 5678, '-4076224774114338999037473822'); -test(macro, '717897987691852588770249', -5678, '-4076224774114338999037473822'); -test(macro, '-717897987691852588770249', -5678, '4076224774114338999037473822'); -test( - macro, - '717897987691852588770249', - 94906265, - '68133016662849700130765275709985', -); -test( - macro, - '-717897987691852588770249', - 94906265, - '-68133016662849700130765275709985', -); -test( - macro, - '717897987691852588770249', - -94906265, - '-68133016662849700130765275709985', -); -test( - macro, - '-717897987691852588770249', - -94906265, - '68133016662849700130765275709985', -); -test( - macro, - '717897987691852588770249', - 94906266, - '68133017380747687822617864480234', -); -test( - macro, - '-717897987691852588770249', - 94906266, - '-68133017380747687822617864480234', -); -test( - macro, - '717897987691852588770249', - -94906266, - '-68133017380747687822617864480234', -); -test( - macro, - '-717897987691852588770249', - -94906266, - '68133017380747687822617864480234', -); -test( - macro, - '717897987691852588770249', - 1073741824, - '770837094750179348605289078194176', -); -test( - macro, - '-717897987691852588770249', - 1073741824, - '-770837094750179348605289078194176', -); -test( - macro, - '717897987691852588770249', - -1073741824, - '-770837094750179348605289078194176', -); -test( - macro, - '-717897987691852588770249', - -1073741824, - '770837094750179348605289078194176', -); -test( - macro, - '717897987691852588770249', - 51676101935731, - '37098169591420333175287767861722867019', -); -test( - macro, - '-717897987691852588770249', - 51676101935731, - '-37098169591420333175287767861722867019', -); -test( - macro, - '717897987691852588770249', - -51676101935731, - '-37098169591420333175287767861722867019', -); -test( - macro, - '-717897987691852588770249', - -51676101935731, - '37098169591420333175287767861722867019', -); diff --git a/test/src/integer/arithmetic/pow.js b/test/src/integer/arithmetic/pow.js deleted file mode 100644 index 24bc920..0000000 --- a/test/src/integer/arithmetic/pow.js +++ /dev/null @@ -1,1311 +0,0 @@ -import test from 'ava'; -import {parse, stringify, pow} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const b = parse(B); - const c = pow(a, b); - t.is(stringify(a), A); - t.is(stringify(b), B); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `pow(${fmt(A)},${fmt(B)}) = ${fmt(C)}`; - -test(macro, '0', '0', '1'); -test(macro, '0', '1', '0'); -test(macro, '0', '3', '0'); -test(macro, '0', '7', '0'); -test(macro, '0', '9', '0'); -test(macro, '0', '11', '0'); -test(macro, '0', '17', '0'); -test(macro, '0', '22', '0'); -test(macro, '0', '24', '0'); -test(macro, '0', '27', '0'); -test(macro, '0', '29', '0'); -test(macro, '0', '1234', '0'); -test(macro, '0', '5678', '0'); -test(macro, '1', '0', '1'); -test(macro, '-1', '0', '1'); -test(macro, '1', '1', '1'); -test(macro, '-1', '1', '-1'); -test(macro, '1', '3', '1'); -test(macro, '-1', '3', '-1'); -test(macro, '1', '7', '1'); -test(macro, '-1', '7', '-1'); -test(macro, '1', '9', '1'); -test(macro, '-1', '9', '-1'); -test(macro, '1', '11', '1'); -test(macro, '-1', '11', '-1'); -test(macro, '1', '17', '1'); -test(macro, '-1', '17', '-1'); -test(macro, '1', '22', '1'); -test(macro, '-1', '22', '1'); -test(macro, '1', '24', '1'); -test(macro, '-1', '24', '1'); -test(macro, '1', '27', '1'); -test(macro, '-1', '27', '-1'); -test(macro, '1', '29', '1'); -test(macro, '-1', '29', '-1'); -test(macro, '1', '1234', '1'); -test(macro, '-1', '1234', '1'); -test(macro, '1', '5678', '1'); -test(macro, '-1', '5678', '1'); -test(macro, '3', '0', '1'); -test(macro, '-3', '0', '1'); -test(macro, '3', '1', '3'); -test(macro, '-3', '1', '-3'); -test(macro, '3', '3', '27'); -test(macro, '-3', '3', '-27'); -test(macro, '3', '7', '2187'); -test(macro, '-3', '7', '-2187'); -test(macro, '3', '9', '19683'); -test(macro, '-3', '9', '-19683'); -test(macro, '3', '11', '177147'); -test(macro, '-3', '11', '-177147'); -test(macro, '3', '17', '129140163'); -test(macro, '-3', '17', '-129140163'); -test(macro, '3', '22', '31381059609'); -test(macro, '-3', '22', '31381059609'); -test(macro, '3', '24', '282429536481'); -test(macro, '-3', '24', '282429536481'); -test(macro, '3', '27', '7625597484987'); -test(macro, '-3', '27', '-7625597484987'); -test(macro, '3', '29', '68630377364883'); -test(macro, '-3', '29', '-68630377364883'); -test( - macro, - '3', - '1234', - '5856367529932071269049608726415028439757143623443063785468784843536946634255003858796842453459905186846046851774292445753149532138648409140561593823222428559200283816367593571556942770711203894947318922509986128995034233177140247221695941679146171215675158154358685224309073135481486540427499644363484815218991488230440687359021965115067678545212365725678242878485920885436927030372580147256775788882374301866845441065076726499613479868210410548366056401445912760529623658838510267592199677099676046090140514526228797525926977514932394954796457727416398081482661262807288229389463819882569', -); -test( - macro, - '-3', - '1234', - '5856367529932071269049608726415028439757143623443063785468784843536946634255003858796842453459905186846046851774292445753149532138648409140561593823222428559200283816367593571556942770711203894947318922509986128995034233177140247221695941679146171215675158154358685224309073135481486540427499644363484815218991488230440687359021965115067678545212365725678242878485920885436927030372580147256775788882374301866845441065076726499613479868210410548366056401445912760529623658838510267592199677099676046090140514526228797525926977514932394954796457727416398081482661262807288229389463819882569', -); -test( - macro, - '3', - '5678', - '1243037693463227949112091519279672492044687354501434200945857669926116693806746194857301400780233995488733257302119315313384942062399372466241771979139200777946071311247293019863313186668415340857975663750784195666817545404528999322911175416479945350848509815821523649497472945192185204394061354208077647593251971659190791580018094752316074849512115300952408135740274415868364936851842971492114222395071837019898407594635391436897273675376020860228061632238135757402157534256820528991141884997213617990932313869139157767548368622729617821353870622703296087570908735603155999125081727743790083245652659362145288136145004020964445403739551815349944634978429930196370344630107979223204102936646371908266047485583735925127513544821868443751038578347212600335097321876283836508599321409432666223344497759612113922437886158316317309321756691709644342882638785970256967423622312748711462021869668719494868133737340936529693827973449768289569618616959110477938348069764446874172549277166445629673389323537570721499025892871401583780718566334141146891444372056720167238580106004294588023983408110949068925676634600934614407326236494754543604668091196426889487866586253683006497687344805244551116811415322677755309138100217606582159711957778349675405780924725098248165734440609725859923557227882624090733819954748607788759286778393117307486567713449414531253242799336048793898512587416922351072249862379979496346075333842525402457713987512962241151801408088747602541118319602580139543049458650772613553099704696427391659934847692973786316292223944739381848786388556341954241622083310642850447813219607073326408041563486733069853816257896789324045551319755037088618442131331146423713621289638493891684978150596496763780207895660476795481533699694118004797315688020850843758776485972938923432434495440069418445343215420341280042711847572084403785495272596239611718358057479206763407758265413312407824846381133395192898456506473229225136787314930144756882252451305634473881426309641144171713785689008872861781376574439959633987648643018576130215542337839481438388884082264677560703461771690165647753395118399310441168972645259556152700302308180192341217336414601260891209846568563921259501135353991491621201855991355185034869242032403371115547965465483990269048544429538087341589568713744694551680574689237237491011280632994211265728601046457084272149460827390761878382623695568170089082824214781471624419349859426165335950948736550329484315091462220430038109528301488465151597001587458695626672091775630841370920667673089484634221309873986915635179460410766176505308693753040761858823435567699379069230334377993680841390907035222598330539569286394567432603810064443684500211286790765380067016868875864059604528460045303289', -); -test( - macro, - '-3', - '5678', - '1243037693463227949112091519279672492044687354501434200945857669926116693806746194857301400780233995488733257302119315313384942062399372466241771979139200777946071311247293019863313186668415340857975663750784195666817545404528999322911175416479945350848509815821523649497472945192185204394061354208077647593251971659190791580018094752316074849512115300952408135740274415868364936851842971492114222395071837019898407594635391436897273675376020860228061632238135757402157534256820528991141884997213617990932313869139157767548368622729617821353870622703296087570908735603155999125081727743790083245652659362145288136145004020964445403739551815349944634978429930196370344630107979223204102936646371908266047485583735925127513544821868443751038578347212600335097321876283836508599321409432666223344497759612113922437886158316317309321756691709644342882638785970256967423622312748711462021869668719494868133737340936529693827973449768289569618616959110477938348069764446874172549277166445629673389323537570721499025892871401583780718566334141146891444372056720167238580106004294588023983408110949068925676634600934614407326236494754543604668091196426889487866586253683006497687344805244551116811415322677755309138100217606582159711957778349675405780924725098248165734440609725859923557227882624090733819954748607788759286778393117307486567713449414531253242799336048793898512587416922351072249862379979496346075333842525402457713987512962241151801408088747602541118319602580139543049458650772613553099704696427391659934847692973786316292223944739381848786388556341954241622083310642850447813219607073326408041563486733069853816257896789324045551319755037088618442131331146423713621289638493891684978150596496763780207895660476795481533699694118004797315688020850843758776485972938923432434495440069418445343215420341280042711847572084403785495272596239611718358057479206763407758265413312407824846381133395192898456506473229225136787314930144756882252451305634473881426309641144171713785689008872861781376574439959633987648643018576130215542337839481438388884082264677560703461771690165647753395118399310441168972645259556152700302308180192341217336414601260891209846568563921259501135353991491621201855991355185034869242032403371115547965465483990269048544429538087341589568713744694551680574689237237491011280632994211265728601046457084272149460827390761878382623695568170089082824214781471624419349859426165335950948736550329484315091462220430038109528301488465151597001587458695626672091775630841370920667673089484634221309873986915635179460410766176505308693753040761858823435567699379069230334377993680841390907035222598330539569286394567432603810064443684500211286790765380067016868875864059604528460045303289', -); -test(macro, '7', '0', '1'); -test(macro, '-7', '0', '1'); -test(macro, '7', '1', '7'); -test(macro, '-7', '1', '-7'); -test(macro, '7', '3', '343'); -test(macro, '-7', '3', '-343'); -test(macro, '7', '7', '823543'); -test(macro, '-7', '7', '-823543'); -test(macro, '7', '9', '40353607'); -test(macro, '-7', '9', '-40353607'); -test(macro, '7', '11', '1977326743'); -test(macro, '-7', '11', '-1977326743'); -test(macro, '7', '17', '232630513987207'); -test(macro, '-7', '17', '-232630513987207'); -test(macro, '7', '22', '3909821048582988049'); -test(macro, '-7', '22', '3909821048582988049'); -test(macro, '7', '24', '191581231380566414401'); -test(macro, '-7', '24', '191581231380566414401'); -test(macro, '7', '27', '65712362363534280139543'); -test(macro, '-7', '27', '-65712362363534280139543'); -test(macro, '7', '29', '3219905755813179726837607'); -test(macro, '-7', '29', '-3219905755813179726837607'); -test( - macro, - '7', - '1234', - '70954734215028011240104595141498929070420289200365254864883100224459061531095964535961424752183918983389834714345883085722594630104327570484382813454950959834721299254363358098967399048133489131401375954827777487240689332659684949614116231197346793510695402301156840458057925504143947679213040737846060014251249690928324441226158708348216074516368113070768675494487327714367821662938661080440834970823376650216081882744143161592962823478851621834726159007802788609981541818975600270503709811145869971874252832721423453899821462438727851069669041332053765106227148570291872998008674128627485981069824533343176007316751497280494057995201432198045575691194828311578763776024467116028227768366827683004790939265568398432923069244698164607404132404210543306184313774389935234011995625090611727226388755028092996618090667295922698497975515840710550500258575437750076719351206138149202280453034232757583405474400100672191700332560347912741669538744924043142095605796598736664375513698661239721232174697654768024941266796370339939780641017369634940849', -); -test( - macro, - '-7', - '1234', - '70954734215028011240104595141498929070420289200365254864883100224459061531095964535961424752183918983389834714345883085722594630104327570484382813454950959834721299254363358098967399048133489131401375954827777487240689332659684949614116231197346793510695402301156840458057925504143947679213040737846060014251249690928324441226158708348216074516368113070768675494487327714367821662938661080440834970823376650216081882744143161592962823478851621834726159007802788609981541818975600270503709811145869971874252832721423453899821462438727851069669041332053765106227148570291872998008674128627485981069824533343176007316751497280494057995201432198045575691194828311578763776024467116028227768366827683004790939265568398432923069244698164607404132404210543306184313774389935234011995625090611727226388755028092996618090667295922698497975515840710550500258575437750076719351206138149202280453034232757583405474400100672191700332560347912741669538744924043142095605796598736664375513698661239721232174697654768024941266796370339939780641017369634940849', -); -test( - macro, - '7', - '5678', - '29286751415147620247012304773980453114296677803073891717128731934016701215974044080405159393233326470923575961142799138193074871298378636445798628179207951349293982721295278501959247567396219037376513091082530976510046931578018252332911963395881855502229529277894696192062382498205446451330821264508660060350680978703632399146027439892583747910260252573283992801340972629278229559465911897286605725711901509827250224363194810593341410557007928980446292059141174553339348167116022054072976080669663383423876445574623259565705649860557328656767872910853528973163262527221058274477371143012479363191542123347184358086644971892976333589967255121778587469470892635729379036729236304281800433959466187506663459515828468608307875018665592185468341433713422202882333951754002984232398322608180776700835785085017756319924590206151470700716667835012667869936677506199082647415474168800484943151012348606524534006652121876222361977658821488777239683223567987622345303322949601239794141770292343853950382720459690070362230065991442547398307358472021289622300608069384246841369764420640724519271620643375180877746823736826186226120840335052438117942436533089511127752752776144826427488391781629757387931931866819313611113838895192595153612697562710052857839705947750975715806160854609794879295166494370393332625817992461823676698792102936528543520961016844260805703577116507427610889086939384974782917847235365828889115833315047177125587286162340061433341091371954086793250119039573579409345450985100916248737095737635113804291080478497302622719151600453447616115190282792195268648972132196212717229671264933006034401449925954728380766566809709129051085718977633841056681750845701567687767262960074466629251941876310059953363356531903058045532738271892988757147772703584798866501751770352083540196100803611978925296332203675077547295577020941062653460756395909170345723103094148861314777405742548532625701646810183666329500365537037837796381818770012342811563068087864026587087965941993420061262519506075499730518978585216724282264266842476339924360204070092387081062271166294076464986173214296883414741128262228746457873862297729461562411250198067094652357764260127419648002555197136786444971264851853928282497021712573900531648560775269275620991652740780298232021457075682576160866924920643357459760230060837118671529811745348483144053263057167731433439790093453587845785289839653966318286353544985756786138017559281729742760365436559566020930901853363600729656253961774820405787066019640729410826090870703799290454880306581230282510738087113753806619350425640320369895844610395585664858869947128190822130577054035661501630309320241329765059393323789228824376116472207943909200787598356625424332899455771232035169336714551998000090274179880982976417171021168670556482314198238096787861626550887693327061858177712413982165608873492233854569701565615054215981574912415571024874796636058468882371352130950473473787764998548443335260725529010774114177855533290850946155316766268951403608859645495518354455415922245608492259889927964017924837101397067268070099225030817739186510992894635323450695473383790259049745811723535604236057509473976199273919932581197631717736843031016857549306106108894545373734030577486454218738603892987604028992432585288674498003102110839666180973964000647771786878484450905268467447862314262776221757175689654294334472018305832948254130011534914626821150798633758257956359485409097758800820518855504265570934089990834849940809640817750881113810307074278330447454706136884709705076100153948256437849665146298178253907766151956875148887880704088418959235408519102084994845764532487122261171084690258639078929318849083005320788264786818741497152218531813309049735082217246480998356792356423468690812689741878405570775329789967268544118775265597533519971689880183688879583268069589841484628003686747384622711287138558207298669062173888449730536222746981830761436411638918704083993605529775430511215721624379386418171517300661716804853921368534386259059328549100166544678556092078039125431284837120330424638877929381377386822642410570351497645327464806551308709476717189758730145852636898776648068485630182784186320600350425256211486828867199336911598081431699804028420689319751310314229065511569912938919887605558610237415833117670117720398090281760742873925225005809250637733443636498423237903430070501472467711563994554631346830772764419040383097667651843091497767178561922112757100189347867151512651676504135813782377307832677229924200900337767048640550254889564573280195779350492199790482755320611128427773224927972518754103462948342397056029050310063164777386764680047944172099837029881521262503568821175159785856887995352684696513864645799309539055373624021324611634320733523909093966797454147058520418465164134584379979514639416027197229802081214558290831868642024962672375789914449', -); -test( - macro, - '-7', - '5678', - '29286751415147620247012304773980453114296677803073891717128731934016701215974044080405159393233326470923575961142799138193074871298378636445798628179207951349293982721295278501959247567396219037376513091082530976510046931578018252332911963395881855502229529277894696192062382498205446451330821264508660060350680978703632399146027439892583747910260252573283992801340972629278229559465911897286605725711901509827250224363194810593341410557007928980446292059141174553339348167116022054072976080669663383423876445574623259565705649860557328656767872910853528973163262527221058274477371143012479363191542123347184358086644971892976333589967255121778587469470892635729379036729236304281800433959466187506663459515828468608307875018665592185468341433713422202882333951754002984232398322608180776700835785085017756319924590206151470700716667835012667869936677506199082647415474168800484943151012348606524534006652121876222361977658821488777239683223567987622345303322949601239794141770292343853950382720459690070362230065991442547398307358472021289622300608069384246841369764420640724519271620643375180877746823736826186226120840335052438117942436533089511127752752776144826427488391781629757387931931866819313611113838895192595153612697562710052857839705947750975715806160854609794879295166494370393332625817992461823676698792102936528543520961016844260805703577116507427610889086939384974782917847235365828889115833315047177125587286162340061433341091371954086793250119039573579409345450985100916248737095737635113804291080478497302622719151600453447616115190282792195268648972132196212717229671264933006034401449925954728380766566809709129051085718977633841056681750845701567687767262960074466629251941876310059953363356531903058045532738271892988757147772703584798866501751770352083540196100803611978925296332203675077547295577020941062653460756395909170345723103094148861314777405742548532625701646810183666329500365537037837796381818770012342811563068087864026587087965941993420061262519506075499730518978585216724282264266842476339924360204070092387081062271166294076464986173214296883414741128262228746457873862297729461562411250198067094652357764260127419648002555197136786444971264851853928282497021712573900531648560775269275620991652740780298232021457075682576160866924920643357459760230060837118671529811745348483144053263057167731433439790093453587845785289839653966318286353544985756786138017559281729742760365436559566020930901853363600729656253961774820405787066019640729410826090870703799290454880306581230282510738087113753806619350425640320369895844610395585664858869947128190822130577054035661501630309320241329765059393323789228824376116472207943909200787598356625424332899455771232035169336714551998000090274179880982976417171021168670556482314198238096787861626550887693327061858177712413982165608873492233854569701565615054215981574912415571024874796636058468882371352130950473473787764998548443335260725529010774114177855533290850946155316766268951403608859645495518354455415922245608492259889927964017924837101397067268070099225030817739186510992894635323450695473383790259049745811723535604236057509473976199273919932581197631717736843031016857549306106108894545373734030577486454218738603892987604028992432585288674498003102110839666180973964000647771786878484450905268467447862314262776221757175689654294334472018305832948254130011534914626821150798633758257956359485409097758800820518855504265570934089990834849940809640817750881113810307074278330447454706136884709705076100153948256437849665146298178253907766151956875148887880704088418959235408519102084994845764532487122261171084690258639078929318849083005320788264786818741497152218531813309049735082217246480998356792356423468690812689741878405570775329789967268544118775265597533519971689880183688879583268069589841484628003686747384622711287138558207298669062173888449730536222746981830761436411638918704083993605529775430511215721624379386418171517300661716804853921368534386259059328549100166544678556092078039125431284837120330424638877929381377386822642410570351497645327464806551308709476717189758730145852636898776648068485630182784186320600350425256211486828867199336911598081431699804028420689319751310314229065511569912938919887605558610237415833117670117720398090281760742873925225005809250637733443636498423237903430070501472467711563994554631346830772764419040383097667651843091497767178561922112757100189347867151512651676504135813782377307832677229924200900337767048640550254889564573280195779350492199790482755320611128427773224927972518754103462948342397056029050310063164777386764680047944172099837029881521262503568821175159785856887995352684696513864645799309539055373624021324611634320733523909093966797454147058520418465164134584379979514639416027197229802081214558290831868642024962672375789914449', -); -test(macro, '9', '0', '1'); -test(macro, '-9', '0', '1'); -test(macro, '9', '1', '9'); -test(macro, '-9', '1', '-9'); -test(macro, '9', '3', '729'); -test(macro, '-9', '3', '-729'); -test(macro, '9', '7', '4782969'); -test(macro, '-9', '7', '-4782969'); -test(macro, '9', '9', '387420489'); -test(macro, '-9', '9', '-387420489'); -test(macro, '9', '11', '31381059609'); -test(macro, '-9', '11', '-31381059609'); -test(macro, '9', '17', '16677181699666569'); -test(macro, '-9', '17', '-16677181699666569'); -test(macro, '9', '22', '984770902183611232881'); -test(macro, '-9', '22', '984770902183611232881'); -test(macro, '9', '24', '79766443076872509863361'); -test(macro, '-9', '24', '79766443076872509863361'); -test(macro, '9', '27', '58149737003040059690390169'); -test(macro, '-9', '27', '-58149737003040059690390169'); -test(macro, '9', '29', '4710128697246244834921603689'); -test(macro, '-9', '29', '-4710128697246244834921603689'); -test( - macro, - '9', - '1234', - '34297040645642669671420659321651782362579256907010306825298584320017224909034295065159266732166824736588968016033381896847023243099736344433210097854593507161679850671932155017203599500044609298345843661231598352934672574000630755280719247078658076071069504371210453795997193380141459822909472292250049962822082559318856309665763195373936160408297178132724501864611562349337209033935902601202229170588203644970751513231529370646017342084334943445632338625406001819417100075123659123153934372275946883429572960429182400235833979860757127508599030945874737763438221696224240363286973695769026948553357192210469914347532288838793872337455361841599848707950096810738215169875752378946944496071085184269469689190048414428631904103213703000348839546159132360494448224371361413782868923322232033859714664315449006669237525993661192066307764695656412997620762143868465614936957887460078238297229855499508020184426374192732713213787351302551235717525464575349122336444905826195262672337776865803043472081042136085365758586709594709588874980188963624351301943558778230597943000313246648597648327615323559497393534626812152826795197456515853598831232826676446660986298958124148320950039761', -); -test( - macro, - '-9', - '1234', - '34297040645642669671420659321651782362579256907010306825298584320017224909034295065159266732166824736588968016033381896847023243099736344433210097854593507161679850671932155017203599500044609298345843661231598352934672574000630755280719247078658076071069504371210453795997193380141459822909472292250049962822082559318856309665763195373936160408297178132724501864611562349337209033935902601202229170588203644970751513231529370646017342084334943445632338625406001819417100075123659123153934372275946883429572960429182400235833979860757127508599030945874737763438221696224240363286973695769026948553357192210469914347532288838793872337455361841599848707950096810738215169875752378946944496071085184269469689190048414428631904103213703000348839546159132360494448224371361413782868923322232033859714664315449006669237525993661192066307764695656412997620762143868465614936957887460078238297229855499508020184426374192732713213787351302551235717525464575349122336444905826195262672337776865803043472081042136085365758586709594709588874980188963624351301943558778230597943000313246648597648327615323559497393534626812152826795197456515853598831232826676446660986298958124148320950039761', -); -test( - macro, - '9', - '5678', - '1545142707370381851609411413899132682778575844549055737803770782486638374123987237714505350031063863696419362246215324259025872807818706708567475641777221524486469451542665562456475991411669945011588061933033043990285593410736303684531491655090341501196320194664020232558795638543041629641355998266033548545684015858096482700688284981448066016292615109699224816361227721744941140103885809784889737995411688872156490144707451483247506723486569306623432455131502484848152542555905761267826576308873877093265177335466304892722841390706005314223149855304965697484723009003003632083696007411617084581327217056398066426605090819508953675656967992469076739615155228601392777535817633074609994606291164127882587611790074634314684395235695951310867816046457022429685001454352432479391043233372844749832834475133612310166159430096724033853202779978343792803241815105520473343882963270232006318108101172487652645037890933800756420196027281412374330156942298809917864681543862000700290148757672140417762608153842991450104537691398458724848347134986905461646720926318916004759872555232117444680320721345188614171935657721162922772487571124238457660530591028220098993082424798607063347980184136709298769413926930349712815088173558675750389256644773436235100564071786607781876607264630905026348034479999782657445944748011068965501487523392800451597712231719881642976802003901339999399734075058637765277161028644547435177576795907751332319356126994328383614000959809721439665568650348697207647555316250229874630972224221714533827025501634911141684146186203253767040684930463940464377863490189848093370410257333803061200409882588601608120045438839772858741664177165757415118862088960994925276210066381127080570557851385479331042246570187178836367072105659557298025995994432154607547760881911528513006072722679351100800384912243076415109378562053413427675008822161639569146618213571005063105134152183592318763191892403562862300332002443513358137733609305717552536116534529456800098568792487873742228833784937429502805597130286226862975217006199009586805130712898326268708779958470992748082915469591083119179614842245665430602770992134692732918676506143472628731074803946929989696665115780648730022856841984172068021565899431168771658079365019826787122767864320410003659006630243236082123473778365296923504448099879355899093296587407124679743539714668629739203451409169220276915270710072344374154805355451447610334870077107520916084363778625558453362830867729338005614696548674280966101030920025275289509398227466089735040095294432049245365579301293649947590752813026695775305108512549093425827168709309153164964518435002803203260297748051469146218834794141288192941465904821437732646224427502122761116109084100303184096830143400182874440330465783102621606891257024121143498202107903258018086176991251634730153737114344138284105389641830312676972930646347797776529968734739053219753095634106865389392731865073020060739843556848436924296264365174038915119777825322849472657573916448107560433792653801959610188502511534981700386973496144694841422884340132779103883906981191026922867395953990063126834152580234552204739961906926767894178052760711620116507790314554396528396871813365687210073019525832824479961834155693623848039441214108218991798316931852715586106991173419636671902754236049107585921303060877716511803128895869667091654139705002524900507762082934568975954418238682291841910718982426145152686903351718809457762642345982881924850372358154935832556134320066020200965922897806724341248914397224558268067799442480589425192305345138246146351317529543861709892659099510408182947241066305485992782013056611600088525469992301128153504386277775010761258678532453273506462144848662004743034850060677824385240850588592267171443255754150565279560373497193659947780285389694817090742653506541905415465147664245703555755319506569259093273234477472175250215865923275863458053491886242823523838048453699851299857579772170676938286642988817887754472081798505839390455625598352142445901032306662849749227441402540484189893049732970070242662289545041240186274540855527695224386798038802847716909643228838071712328328843306868604223267430082476250031289111386554075507235619140890749226586960627425891165027575773899527151843957100604729050655499468273965365676635425643512622568877104991613143416548361882289872531929492966266589241390435796283886856494108038015908593659759442649289267891231233370864787216502985947587427499976015148867290521443540972183144322560989287993403276257505450903566910878200950050498748138177006078421885399215834679055363231796024572637313051142809997975829383113593886842905030615548365187334414986576626572709945335218302316974585860218354236627526789998871983242318007851112973254711384763164130812368517530397568357211122447291577632411868201330873749770649724664584931910689209273266716237972155094521293509679679188639121028673703592870439365985904787534978888232064234185884332728603718178498587929582594411733908808682843871136010409164159211147954735782608477209486374278676903968217823052983733854225085207900133055681775964179915225898467500534275504778286018191192185134700062560159814398118843013372902422075816271217441168393867803438088703366735453642092957869537542911086888294098076857636181045592676382529427459580323398060295400592579156848598273806304984575515978899816201496154375306741429141182134037640643883635820658781752675039083634856662576936007793352035809688183925957066262267994217521', -); -test( - macro, - '-9', - '5678', - '1545142707370381851609411413899132682778575844549055737803770782486638374123987237714505350031063863696419362246215324259025872807818706708567475641777221524486469451542665562456475991411669945011588061933033043990285593410736303684531491655090341501196320194664020232558795638543041629641355998266033548545684015858096482700688284981448066016292615109699224816361227721744941140103885809784889737995411688872156490144707451483247506723486569306623432455131502484848152542555905761267826576308873877093265177335466304892722841390706005314223149855304965697484723009003003632083696007411617084581327217056398066426605090819508953675656967992469076739615155228601392777535817633074609994606291164127882587611790074634314684395235695951310867816046457022429685001454352432479391043233372844749832834475133612310166159430096724033853202779978343792803241815105520473343882963270232006318108101172487652645037890933800756420196027281412374330156942298809917864681543862000700290148757672140417762608153842991450104537691398458724848347134986905461646720926318916004759872555232117444680320721345188614171935657721162922772487571124238457660530591028220098993082424798607063347980184136709298769413926930349712815088173558675750389256644773436235100564071786607781876607264630905026348034479999782657445944748011068965501487523392800451597712231719881642976802003901339999399734075058637765277161028644547435177576795907751332319356126994328383614000959809721439665568650348697207647555316250229874630972224221714533827025501634911141684146186203253767040684930463940464377863490189848093370410257333803061200409882588601608120045438839772858741664177165757415118862088960994925276210066381127080570557851385479331042246570187178836367072105659557298025995994432154607547760881911528513006072722679351100800384912243076415109378562053413427675008822161639569146618213571005063105134152183592318763191892403562862300332002443513358137733609305717552536116534529456800098568792487873742228833784937429502805597130286226862975217006199009586805130712898326268708779958470992748082915469591083119179614842245665430602770992134692732918676506143472628731074803946929989696665115780648730022856841984172068021565899431168771658079365019826787122767864320410003659006630243236082123473778365296923504448099879355899093296587407124679743539714668629739203451409169220276915270710072344374154805355451447610334870077107520916084363778625558453362830867729338005614696548674280966101030920025275289509398227466089735040095294432049245365579301293649947590752813026695775305108512549093425827168709309153164964518435002803203260297748051469146218834794141288192941465904821437732646224427502122761116109084100303184096830143400182874440330465783102621606891257024121143498202107903258018086176991251634730153737114344138284105389641830312676972930646347797776529968734739053219753095634106865389392731865073020060739843556848436924296264365174038915119777825322849472657573916448107560433792653801959610188502511534981700386973496144694841422884340132779103883906981191026922867395953990063126834152580234552204739961906926767894178052760711620116507790314554396528396871813365687210073019525832824479961834155693623848039441214108218991798316931852715586106991173419636671902754236049107585921303060877716511803128895869667091654139705002524900507762082934568975954418238682291841910718982426145152686903351718809457762642345982881924850372358154935832556134320066020200965922897806724341248914397224558268067799442480589425192305345138246146351317529543861709892659099510408182947241066305485992782013056611600088525469992301128153504386277775010761258678532453273506462144848662004743034850060677824385240850588592267171443255754150565279560373497193659947780285389694817090742653506541905415465147664245703555755319506569259093273234477472175250215865923275863458053491886242823523838048453699851299857579772170676938286642988817887754472081798505839390455625598352142445901032306662849749227441402540484189893049732970070242662289545041240186274540855527695224386798038802847716909643228838071712328328843306868604223267430082476250031289111386554075507235619140890749226586960627425891165027575773899527151843957100604729050655499468273965365676635425643512622568877104991613143416548361882289872531929492966266589241390435796283886856494108038015908593659759442649289267891231233370864787216502985947587427499976015148867290521443540972183144322560989287993403276257505450903566910878200950050498748138177006078421885399215834679055363231796024572637313051142809997975829383113593886842905030615548365187334414986576626572709945335218302316974585860218354236627526789998871983242318007851112973254711384763164130812368517530397568357211122447291577632411868201330873749770649724664584931910689209273266716237972155094521293509679679188639121028673703592870439365985904787534978888232064234185884332728603718178498587929582594411733908808682843871136010409164159211147954735782608477209486374278676903968217823052983733854225085207900133055681775964179915225898467500534275504778286018191192185134700062560159814398118843013372902422075816271217441168393867803438088703366735453642092957869537542911086888294098076857636181045592676382529427459580323398060295400592579156848598273806304984575515978899816201496154375306741429141182134037640643883635820658781752675039083634856662576936007793352035809688183925957066262267994217521', -); -test(macro, '11', '0', '1'); -test(macro, '-11', '0', '1'); -test(macro, '11', '1', '11'); -test(macro, '-11', '1', '-11'); -test(macro, '11', '3', '1331'); -test(macro, '-11', '3', '-1331'); -test(macro, '11', '7', '19487171'); -test(macro, '-11', '7', '-19487171'); -test(macro, '11', '9', '2357947691'); -test(macro, '-11', '9', '-2357947691'); -test(macro, '11', '11', '285311670611'); -test(macro, '-11', '11', '-285311670611'); -test(macro, '11', '17', '505447028499293771'); -test(macro, '-11', '17', '-505447028499293771'); -test(macro, '11', '22', '81402749386839761113321'); -test(macro, '-11', '22', '81402749386839761113321'); -test(macro, '11', '24', '9849732675807611094711841'); -test(macro, '-11', '24', '9849732675807611094711841'); -test(macro, '11', '27', '13109994191499930367061460371'); -test(macro, '-11', '27', '-13109994191499930367061460371'); -test(macro, '11', '29', '1586309297171491574414436704891'); -test(macro, '-11', '29', '-1586309297171491574414436704891'); -test( - macro, - '11', - '1234', - '11983218693353866267692684359194000502433893845480769112172251205188147262289354049461429172488569661122876033605557421170789272790102054304092511689341645557874249802952871767405284987003806187594928847518777345850099915863264078051816617440620669835924344622459557434141694081118718006962588499405658476477809584051185924057025464163718833076869861008662963948775457304791091957146272768229564713967630639094659383688489828857998385412406001934065445969895732784144880158564496904866299896753946773061123748947095350178138399329492711931118102507186743010708942286629969813642204878306198565914755078983880064808436574100979762259478493960140042607880569732036310833444310215790281432505720437714904537904767412626253808859682743392379188494787465177304942343204339576610614978528053711125948630650946573610344095512008508992625585490923211491629695497720992580178320146672152256706875056491678710723022609578354722578101061602454247010516142562468962308895384683137775859149496917496435957009023897662611266558969297452444733968450168403551460556237438931715240285963118359275426150086656493777954817140258639584026557409436805416478575578840073580647683266895284248911727092735184253994397858925804638577468716770187699083797737507027525458211673613162334364880959262660197607632441', -); -test( - macro, - '-11', - '1234', - '11983218693353866267692684359194000502433893845480769112172251205188147262289354049461429172488569661122876033605557421170789272790102054304092511689341645557874249802952871767405284987003806187594928847518777345850099915863264078051816617440620669835924344622459557434141694081118718006962588499405658476477809584051185924057025464163718833076869861008662963948775457304791091957146272768229564713967630639094659383688489828857998385412406001934065445969895732784144880158564496904866299896753946773061123748947095350178138399329492711931118102507186743010708942286629969813642204878306198565914755078983880064808436574100979762259478493960140042607880569732036310833444310215790281432505720437714904537904767412626253808859682743392379188494787465177304942343204339576610614978528053711125948630650946573610344095512008508992625585490923211491629695497720992580178320146672152256706875056491678710723022609578354722578101061602454247010516142562468962308895384683137775859149496917496435957009023897662611266558969297452444733968450168403551460556237438931715240285963118359275426150086656493777954817140258639584026557409436805416478575578840073580647683266895284248911727092735184253994397858925804638577468716770187699083797737507027525458211673613162334364880959262660197607632441', -); -test( - macro, - '11', - '5678', - '1065776962422733390099998701350852375306774582971639100309613498738018463297402426284028524738823271322985272649725948115092991253107878527781609210894707854772049951003472314067831553881895690939206687522352568657440321602968389543267780665609966988582230996295164519798616549566676379590692798762716905683941763340478583251178705357020162093767335382720674351919299433767565974669460608726103203480874707475235760946929885758550631464242176556080700621170771150306343987986469041228052005627284421145796887853536588932524692770319694218582474445761213162153365490914843340179888987594736119906310580976352820314588543355972619484459495220871689392023112857825597955459918887431929154224173483293504587547665399509030344942605272570136172447400900121488107719512383240606334221292626608823849332333400482253520345477235442179195426136234693064612259799609047549032234897003107500108465053915738728979810144514094776056483728190563804640721019604885909118861940983487407937039944554294878572669564050159687664895605736084313761462824024676968707517184596167351978713169868322481182055851502456062238802586269146612231272427522079499528515959498333263466983785280259161881502475046417048213519584900610678927089224215919039112968768072827818708306560616332850558578446752780273726465248390043011232866170085126505517422418551900039852406583243467144607754086873525143407052846262179499389679942347532000823560325207132685549949066558071494494427946598444312782804755853495210071597142876358782604358201649556061239418307323404601244967442012437515731329817926308824617354000382199156471760900683632471277324956810127590967837960592617262960312465376355316455915879176664759553277776308042310559423721792898442749222107490339293940127243016498854242115145167447996864142048792438738560578225455082147842584858075118284318490977553362786437651112857419381043628238857484819676978075445230762210380626626912004719898874366572155465547173520667309054225283981508791442674778656040035468907369752869408514185313704067350389223145645763194281830994949130563721534905420232142720998287316636023688674050985251378185009914925807988317225071216640027871716722483316868791467166847104807602861728042597469553982173934183881854721408118637488166739219019898807239930452080477028419451221482169218590941548470167987081105665128401656215589475541679937253196949254758234290186798375277113144758530616146671086378878587968488456069580463733501978709324650086157580838543304059737187837840172970261310651170220832783959402177878176227431050767112633358910621278034506978615256025290080266327386921789544837403448128169941411317755734221724534993423771737584328270941785681037187637148965847831330028884230742250527433592894233763159902534751780862175154629552102145945586119235764832272990067006647822901592710351066659902000064017329218952050761426811476157880640667065247449451972208247978421550456277234547741925058712547416503369256196211239680164366047864051968708570583351534285698926517869625895514771976844313520579796558965092576627465235658048719487760146348808931495565346847366003973304701007063054233684522192162343464740701950442784465797167708293183479944132342976405589996322951258093432243177899159394041673341432298028719356007636825480992284923970510736838942942304796113387801478681602920972896373837595385277191717576279392952761700936522637224711546691229425008983033605153229822416869513005954335605693170930885249832778368398645533597288302148018420434619254347639616385151984552960650830068954346104302987832610586471252692718122275927836615526059882116390127451028052550923092000111263140958227160206219707410977980611517826815099866318452865266839478499873605810527128458400682829266213047212490751292505412839799091839878790386710181065160084894230231280531312918673011117069898789068313484780627491574837836376088397252997015833464534344451570629480561635620053916519436130021805563621848179479920844707168181116371097043308074403627884022121921874913710872985556815638427086651333779751907556934770310989869843884425304798400423634711778163856020448720206496290069493745603962153577775093497572698365374594076591461904206049396452233781439591258104765917225718355977433822381572720392535330998593120939566841352057738311318719931927026631838006769672045108443992445284929970269294270278680743013077174180453305089917742058685731225366141765610284466364224239657923316122018028323771071925305776184392902004619136458183176936490831946840938417871887775288789743276992617406109612755025092558440576560761222878309756084815155667190192960921003385227785262941734093931704345512521132798515611547442925571295279505831931283715748549845669395353133931794747206486070337327303879615849380818093267141506586465834431904895759614006956917248763890815129377994441625824333049728355566141085538225755137382489951163889065597959637090364281160499433447909053653936224421624718741987104354218067585258083011422152546594719663896981399037561028385236732212486414059132101618529606220469363058220156329055224342467340925139139929630506131648767286858276792072149267144670692471130323158321566298623976468399937857216321372392619400998408839149950057518963808345869653309993310768299116776379707325175676054902275922736269241390641779960744489235538753789112847068524247966967539956729499733460342777803955793449997285158138613067762195702203432660309455273766440576594246410536265644453872508630612565356986609709760894462294180493818840739169368085369286699229156832130169858213118001196840078980080715876252447472429116934369285480649794242527428955233670068043503668172668283633933776143476087412305215113096021310601587105393061779999730415570592566016145834001225399284902644145953391096153151308606014346031294960654945643001133160678398141361376867996289493175381235832216759220680742166229263430190948116635508223815277449847445410032258317401960451466607747028200896253295257428236276899079754883495683081', -); -test( - macro, - '-11', - '5678', - '1065776962422733390099998701350852375306774582971639100309613498738018463297402426284028524738823271322985272649725948115092991253107878527781609210894707854772049951003472314067831553881895690939206687522352568657440321602968389543267780665609966988582230996295164519798616549566676379590692798762716905683941763340478583251178705357020162093767335382720674351919299433767565974669460608726103203480874707475235760946929885758550631464242176556080700621170771150306343987986469041228052005627284421145796887853536588932524692770319694218582474445761213162153365490914843340179888987594736119906310580976352820314588543355972619484459495220871689392023112857825597955459918887431929154224173483293504587547665399509030344942605272570136172447400900121488107719512383240606334221292626608823849332333400482253520345477235442179195426136234693064612259799609047549032234897003107500108465053915738728979810144514094776056483728190563804640721019604885909118861940983487407937039944554294878572669564050159687664895605736084313761462824024676968707517184596167351978713169868322481182055851502456062238802586269146612231272427522079499528515959498333263466983785280259161881502475046417048213519584900610678927089224215919039112968768072827818708306560616332850558578446752780273726465248390043011232866170085126505517422418551900039852406583243467144607754086873525143407052846262179499389679942347532000823560325207132685549949066558071494494427946598444312782804755853495210071597142876358782604358201649556061239418307323404601244967442012437515731329817926308824617354000382199156471760900683632471277324956810127590967837960592617262960312465376355316455915879176664759553277776308042310559423721792898442749222107490339293940127243016498854242115145167447996864142048792438738560578225455082147842584858075118284318490977553362786437651112857419381043628238857484819676978075445230762210380626626912004719898874366572155465547173520667309054225283981508791442674778656040035468907369752869408514185313704067350389223145645763194281830994949130563721534905420232142720998287316636023688674050985251378185009914925807988317225071216640027871716722483316868791467166847104807602861728042597469553982173934183881854721408118637488166739219019898807239930452080477028419451221482169218590941548470167987081105665128401656215589475541679937253196949254758234290186798375277113144758530616146671086378878587968488456069580463733501978709324650086157580838543304059737187837840172970261310651170220832783959402177878176227431050767112633358910621278034506978615256025290080266327386921789544837403448128169941411317755734221724534993423771737584328270941785681037187637148965847831330028884230742250527433592894233763159902534751780862175154629552102145945586119235764832272990067006647822901592710351066659902000064017329218952050761426811476157880640667065247449451972208247978421550456277234547741925058712547416503369256196211239680164366047864051968708570583351534285698926517869625895514771976844313520579796558965092576627465235658048719487760146348808931495565346847366003973304701007063054233684522192162343464740701950442784465797167708293183479944132342976405589996322951258093432243177899159394041673341432298028719356007636825480992284923970510736838942942304796113387801478681602920972896373837595385277191717576279392952761700936522637224711546691229425008983033605153229822416869513005954335605693170930885249832778368398645533597288302148018420434619254347639616385151984552960650830068954346104302987832610586471252692718122275927836615526059882116390127451028052550923092000111263140958227160206219707410977980611517826815099866318452865266839478499873605810527128458400682829266213047212490751292505412839799091839878790386710181065160084894230231280531312918673011117069898789068313484780627491574837836376088397252997015833464534344451570629480561635620053916519436130021805563621848179479920844707168181116371097043308074403627884022121921874913710872985556815638427086651333779751907556934770310989869843884425304798400423634711778163856020448720206496290069493745603962153577775093497572698365374594076591461904206049396452233781439591258104765917225718355977433822381572720392535330998593120939566841352057738311318719931927026631838006769672045108443992445284929970269294270278680743013077174180453305089917742058685731225366141765610284466364224239657923316122018028323771071925305776184392902004619136458183176936490831946840938417871887775288789743276992617406109612755025092558440576560761222878309756084815155667190192960921003385227785262941734093931704345512521132798515611547442925571295279505831931283715748549845669395353133931794747206486070337327303879615849380818093267141506586465834431904895759614006956917248763890815129377994441625824333049728355566141085538225755137382489951163889065597959637090364281160499433447909053653936224421624718741987104354218067585258083011422152546594719663896981399037561028385236732212486414059132101618529606220469363058220156329055224342467340925139139929630506131648767286858276792072149267144670692471130323158321566298623976468399937857216321372392619400998408839149950057518963808345869653309993310768299116776379707325175676054902275922736269241390641779960744489235538753789112847068524247966967539956729499733460342777803955793449997285158138613067762195702203432660309455273766440576594246410536265644453872508630612565356986609709760894462294180493818840739169368085369286699229156832130169858213118001196840078980080715876252447472429116934369285480649794242527428955233670068043503668172668283633933776143476087412305215113096021310601587105393061779999730415570592566016145834001225399284902644145953391096153151308606014346031294960654945643001133160678398141361376867996289493175381235832216759220680742166229263430190948116635508223815277449847445410032258317401960451466607747028200896253295257428236276899079754883495683081', -); -test(macro, '17', '0', '1'); -test(macro, '-17', '0', '1'); -test(macro, '17', '1', '17'); -test(macro, '-17', '1', '-17'); -test(macro, '17', '3', '4913'); -test(macro, '-17', '3', '-4913'); -test(macro, '17', '7', '410338673'); -test(macro, '-17', '7', '-410338673'); -test(macro, '17', '9', '118587876497'); -test(macro, '-17', '9', '-118587876497'); -test(macro, '17', '11', '34271896307633'); -test(macro, '-17', '11', '-34271896307633'); -test(macro, '17', '17', '827240261886336764177'); -test(macro, '-17', '17', '-827240261886336764177'); -test(macro, '17', '22', '1174562876521148458974062689'); -test(macro, '-17', '22', '1174562876521148458974062689'); -test(macro, '17', '24', '339448671314611904643504117121'); -test(macro, '-17', '24', '339448671314611904643504117121'); -test(macro, '17', '27', '1667711322168688287513535727415473'); -test(macro, '-17', '27', '-1667711322168688287513535727415473'); -test(macro, '17', '29', '481968572106750915091411825223071697'); -test(macro, '-17', '29', '-481968572106750915091411825223071697'); -test( - macro, - '17', - '1234', - '2365750719195418700959936173439221488331849554433443272309037789270912117133978206777246165583614280813095899236078594286552848472860457643580615017539717857048793304325119681053421007826013802905479250885212839793760101742612296877478711932287387420109262614158330630362237192202151123468592153560375572873151822947436950242912080157786888545384847518810574795754691976973525697429044294851654461713242307440541746159573098284837473930094049306091573440131975480886198509578012017892791103610676499734889373927818577887242310104551008535893775377108954649457429588226369074071331951078940909959401201709240381177136083510255280740550175339832084572676328794889199725393235934601424964165016988318210336776289444267654575587266337284861333685818972410304844379843215873568783484299285855710739185984313729162892241201484427793478780366719828354369198742105822244711994746358620164097425507697349511284930229811697252220792819650825560346717292110648932265899796733644188721108873119505172872099646531092906043987147572277125354950545394615532850018465975565730363029206743959014462690377536775695776234592924640448812639061038539121473894456471681658974744379159553490945761899997224178778022075766625329855978704429033291722506766694214979844269409520158332260044608648267713490710210601126307243035021020433002092628988274703326841291915973218749244960354639698612598420531573152776417281665548298330678827921029701549454503621900176615327265802134551424622450618795022965384601079468969005231566796416059429914871329', -); -test( - macro, - '-17', - '1234', - '2365750719195418700959936173439221488331849554433443272309037789270912117133978206777246165583614280813095899236078594286552848472860457643580615017539717857048793304325119681053421007826013802905479250885212839793760101742612296877478711932287387420109262614158330630362237192202151123468592153560375572873151822947436950242912080157786888545384847518810574795754691976973525697429044294851654461713242307440541746159573098284837473930094049306091573440131975480886198509578012017892791103610676499734889373927818577887242310104551008535893775377108954649457429588226369074071331951078940909959401201709240381177136083510255280740550175339832084572676328794889199725393235934601424964165016988318210336776289444267654575587266337284861333685818972410304844379843215873568783484299285855710739185984313729162892241201484427793478780366719828354369198742105822244711994746358620164097425507697349511284930229811697252220792819650825560346717292110648932265899796733644188721108873119505172872099646531092906043987147572277125354950545394615532850018465975565730363029206743959014462690377536775695776234592924640448812639061038539121473894456471681658974744379159553490945761899997224178778022075766625329855978704429033291722506766694214979844269409520158332260044608648267713490710210601126307243035021020433002092628988274703326841291915973218749244960354639698612598420531573152776417281665548298330678827921029701549454503621900176615327265802134551424622450618795022965384601079468969005231566796416059429914871329', -); -test( - macro, - '17', - '5678', - '308301463160662792592974191225677550213805858865919919735981762675623786601714250489696698804852341045297420123063243922100400196696349793305072692507353336241216967013579955338321444377099377319922539877186220868052446496202732277247371505550502651392252286935974933884151213108283554369258213425365822337513947069960567344400310797289631047757394436944996398072856708476570135250826251807398908611346753721594187395239741456589520555880152964355709918481651414281037119345031864349473612190232783371634279010028835470052200853299387882937134502672486160490325572916770961984349270782004601755602396869480289583861432077292039522042728544628472407886559019506167070189042096361924625145764203394220016152058200833752782786135860272071163220664632628957715045743868317244354995167227549385742687044952230405548258021083955544683907569599512046698283062653360884689200605347962098694683370357258724260056117352725577527325470851942851786836586694378752609414985480451815306391204834718631347771140575410484669506656818267247739857567770208151137491950666879071411531164773778999066561543024242136809243170757624965045375519201614760897620552430403133361040466722500087079354845734867920025285926879314249326848120872229945829401869885167283900122714895079076317869209094125931991982545556531488000512974612556335371838867029549796298764189897495724664237888752067198837966134423345547661571313151671040573897238403514602328827651572079820723701139609625952452387726428497198778814867224019443231895553458612781145096614872436875589042063008282687051858429092860711826018500930659407306718573155390037651077626487553235826051751992178074784247327240446763311187915496267026614485771849109815253713934148711216787298996520671468152820643885099705983302989002284908552857617520501529946390075868206425878082496708806322673513995979106164216776193616172985959907688824822708649852983817019144075028883180470899174789547764945602382526461092533221644053611458447978077780558970501641646067073622734477217735505282263211128124481305514353186357540419010992434002107768783355740756446187324942325654652625852412169287153813508608016280113952446920176296614253376950196475669316351020403077722724490519629898377036323360129820529281045109963371249894530276099561144042482626338772593989844316087710972792550257456128886470019096822479564940726737877698151825386119418309553408271231027478809647742899313908009933334462963092648575508695193735333743379173370627653867407320126715177974457764503548774713620560056196952152990116210197349898408972339742529128594321078656213131646113348021113593500434299052367891502628806326549121118207042607447479186463436915417026432303558853528036464975473796918542444020373057871946369301364258538966068868254352995619682873466974346238932655967123889634837113714800967760011350882223310353543059601985301931618545990512349177473607469589077686942177079271505612848872737004531036693137411376221188948435205746764410417572244552151115770898205429797968294734548429417278840745724261982834336050319128899682414411262548690370173790043028979845800173387057519576117961404309649305131253106853311405290729585498843142932710693864698111280652528337779798996371020065243801932085317018569183094721517622383953097502437063509905231723076848695664475891217676900061772996514510444773379828633675940309305355017384694473467108649959260135277673044625735731445353762845612054986937722179046658335121624623887140876084354281345305162356789678255300384384362221940169560849412314449721012605468584753472048939293608001304951329291978795373421372496969569792459269771201979081563170756324976549131692045507222783153489641325969541556371425701402301211477683080268682892338248206661170350045844352061951383330942281351775350666794898243271686809285942972250079237128202766005910057022811233073148416980300503195301226425284939582119267754559346938405839108209948260224741026519729353522763156183432819133601211163851967797956224605731130210254259956239010777634280103656590161967025286273834863275135448484296586047436588377498080471091688749259494163596420313099632079876409348525630028055176035711873634035464870888160379725751723195018099253375258568577967864792488387641817874998840468383878650374885021482953160299619530112289571703664629650689171966549636405214013448300445958738210047255092576641861296921647468062688837053654674936187674808709795653883608126278103976777614235428024410406774617308906840440399533093675542694404899247309187944909110631946845342610548908241677763415814807299529431331306295147372426206682600091831666916348144604753853633093752578611067563482135824231785498536893195996043663278185036145372756479240008651658799543396796498313843752029567365904330978277771584083764680985424357979370673048412336161600105590795221468539510721486414696405244842077338791619491047555626214572469854774642809583879845753149299202220239018392390206481186381875779757172402492713818647299968359129028554409153515978523967576074137219417098042854838667104016609738651022464948341424258581649824364793277410362004657346730312486772187893045818208465017592301709242049247100206034557497898122997305711805266614983374701841598496819251246442389163596781052495386660654519709452526951157596940799622382556542978303127167636912967999455236012568054985444079556177250723837365747957344490952925271966201701550593265443332902956508294939313094240833285876555046619359268191001846635259161706865131541180784321186186894945212300349221818709758522540187015314739189058530961568234354902922125914842193133460218438518962244238370699624523924419568327136723141811138403931677301481592189660339567894761665454562699685520993156044186932965753836572801390460509640488798964928095419008854900677851241358987176646501215201974659363616049261017603457999596184581511549579905438019185941637728665384585389583535891202008231419334008863423647112514312757047826028932882729541950746057232359164344651932902110039997136484675561126583054833776169478582845219207488207389196029054365227406667723162110887854915641006891303598854753903506554856041472945272356941328283818164784067726584990924119024325130661086148657987548771738842769797564552756354942918282971676618299580653036928287938534922839104145089706750975511251679142746672018472326704754194244955633025397110493863802050335540295002732461604260398261242352490448735856721475625306260022338327634579483863218960189713021604374058340162879817478268896311320400935427024907872299937115878667674458494570901082210791903147151206004364128850910892512190179733983576746853124510692834110403304378183988508805646983947420299974549209519662950763156097018733065661357905142120460779273146947254095926981543175326111475835364495732470677817188832146552441552139930332238086701277874221108259025888256128861209127658043159023987114966310186989910006136268267279080051772647893114806659477299459033328734671642634822948069793513975896907315793907807201218951810262212834206364838330104666470691976814742557318317590520995786209', -); -test( - macro, - '-17', - '5678', - '308301463160662792592974191225677550213805858865919919735981762675623786601714250489696698804852341045297420123063243922100400196696349793305072692507353336241216967013579955338321444377099377319922539877186220868052446496202732277247371505550502651392252286935974933884151213108283554369258213425365822337513947069960567344400310797289631047757394436944996398072856708476570135250826251807398908611346753721594187395239741456589520555880152964355709918481651414281037119345031864349473612190232783371634279010028835470052200853299387882937134502672486160490325572916770961984349270782004601755602396869480289583861432077292039522042728544628472407886559019506167070189042096361924625145764203394220016152058200833752782786135860272071163220664632628957715045743868317244354995167227549385742687044952230405548258021083955544683907569599512046698283062653360884689200605347962098694683370357258724260056117352725577527325470851942851786836586694378752609414985480451815306391204834718631347771140575410484669506656818267247739857567770208151137491950666879071411531164773778999066561543024242136809243170757624965045375519201614760897620552430403133361040466722500087079354845734867920025285926879314249326848120872229945829401869885167283900122714895079076317869209094125931991982545556531488000512974612556335371838867029549796298764189897495724664237888752067198837966134423345547661571313151671040573897238403514602328827651572079820723701139609625952452387726428497198778814867224019443231895553458612781145096614872436875589042063008282687051858429092860711826018500930659407306718573155390037651077626487553235826051751992178074784247327240446763311187915496267026614485771849109815253713934148711216787298996520671468152820643885099705983302989002284908552857617520501529946390075868206425878082496708806322673513995979106164216776193616172985959907688824822708649852983817019144075028883180470899174789547764945602382526461092533221644053611458447978077780558970501641646067073622734477217735505282263211128124481305514353186357540419010992434002107768783355740756446187324942325654652625852412169287153813508608016280113952446920176296614253376950196475669316351020403077722724490519629898377036323360129820529281045109963371249894530276099561144042482626338772593989844316087710972792550257456128886470019096822479564940726737877698151825386119418309553408271231027478809647742899313908009933334462963092648575508695193735333743379173370627653867407320126715177974457764503548774713620560056196952152990116210197349898408972339742529128594321078656213131646113348021113593500434299052367891502628806326549121118207042607447479186463436915417026432303558853528036464975473796918542444020373057871946369301364258538966068868254352995619682873466974346238932655967123889634837113714800967760011350882223310353543059601985301931618545990512349177473607469589077686942177079271505612848872737004531036693137411376221188948435205746764410417572244552151115770898205429797968294734548429417278840745724261982834336050319128899682414411262548690370173790043028979845800173387057519576117961404309649305131253106853311405290729585498843142932710693864698111280652528337779798996371020065243801932085317018569183094721517622383953097502437063509905231723076848695664475891217676900061772996514510444773379828633675940309305355017384694473467108649959260135277673044625735731445353762845612054986937722179046658335121624623887140876084354281345305162356789678255300384384362221940169560849412314449721012605468584753472048939293608001304951329291978795373421372496969569792459269771201979081563170756324976549131692045507222783153489641325969541556371425701402301211477683080268682892338248206661170350045844352061951383330942281351775350666794898243271686809285942972250079237128202766005910057022811233073148416980300503195301226425284939582119267754559346938405839108209948260224741026519729353522763156183432819133601211163851967797956224605731130210254259956239010777634280103656590161967025286273834863275135448484296586047436588377498080471091688749259494163596420313099632079876409348525630028055176035711873634035464870888160379725751723195018099253375258568577967864792488387641817874998840468383878650374885021482953160299619530112289571703664629650689171966549636405214013448300445958738210047255092576641861296921647468062688837053654674936187674808709795653883608126278103976777614235428024410406774617308906840440399533093675542694404899247309187944909110631946845342610548908241677763415814807299529431331306295147372426206682600091831666916348144604753853633093752578611067563482135824231785498536893195996043663278185036145372756479240008651658799543396796498313843752029567365904330978277771584083764680985424357979370673048412336161600105590795221468539510721486414696405244842077338791619491047555626214572469854774642809583879845753149299202220239018392390206481186381875779757172402492713818647299968359129028554409153515978523967576074137219417098042854838667104016609738651022464948341424258581649824364793277410362004657346730312486772187893045818208465017592301709242049247100206034557497898122997305711805266614983374701841598496819251246442389163596781052495386660654519709452526951157596940799622382556542978303127167636912967999455236012568054985444079556177250723837365747957344490952925271966201701550593265443332902956508294939313094240833285876555046619359268191001846635259161706865131541180784321186186894945212300349221818709758522540187015314739189058530961568234354902922125914842193133460218438518962244238370699624523924419568327136723141811138403931677301481592189660339567894761665454562699685520993156044186932965753836572801390460509640488798964928095419008854900677851241358987176646501215201974659363616049261017603457999596184581511549579905438019185941637728665384585389583535891202008231419334008863423647112514312757047826028932882729541950746057232359164344651932902110039997136484675561126583054833776169478582845219207488207389196029054365227406667723162110887854915641006891303598854753903506554856041472945272356941328283818164784067726584990924119024325130661086148657987548771738842769797564552756354942918282971676618299580653036928287938534922839104145089706750975511251679142746672018472326704754194244955633025397110493863802050335540295002732461604260398261242352490448735856721475625306260022338327634579483863218960189713021604374058340162879817478268896311320400935427024907872299937115878667674458494570901082210791903147151206004364128850910892512190179733983576746853124510692834110403304378183988508805646983947420299974549209519662950763156097018733065661357905142120460779273146947254095926981543175326111475835364495732470677817188832146552441552139930332238086701277874221108259025888256128861209127658043159023987114966310186989910006136268267279080051772647893114806659477299459033328734671642634822948069793513975896907315793907807201218951810262212834206364838330104666470691976814742557318317590520995786209', -); -test(macro, '22', '0', '1'); -test(macro, '-22', '0', '1'); -test(macro, '22', '1', '22'); -test(macro, '-22', '1', '-22'); -test(macro, '22', '3', '10648'); -test(macro, '-22', '3', '-10648'); -test(macro, '22', '7', '2494357888'); -test(macro, '-22', '7', '-2494357888'); -test(macro, '22', '9', '1207269217792'); -test(macro, '-22', '9', '-1207269217792'); -test(macro, '22', '11', '584318301411328'); -test(macro, '-22', '11', '-584318301411328'); -test(macro, '22', '17', '66249952919459433152512'); -test(macro, '-22', '17', '-66249952919459433152512'); -test(macro, '22', '22', '341427877364219557396646723584'); -test(macro, '-22', '22', '341427877364219557396646723584'); -test(macro, '22', '24', '165251092644282265779977014214656'); -test(macro, '-22', '24', '165251092644282265779977014214656'); -test(macro, '22', '27', '1759593634476317566025195247357657088'); -test(macro, '-22', '27', '-1759593634476317566025195247357657088'); -test(macro, '22', '29', '851643319086537701956194499721106030592'); -test(macro, '-22', '29', '-851643319086537701956194499721106030592'); -test( - macro, - '22', - '1234', - '3544770596427666704933670825514058656840289167033434034813245091750883162270446675859397841986880345238161021960809170374322988214534191585053363506454126462213757244784862172250548800355120891239982462620296434675754206726427100313150523472266151826654642293138772262710079764335312817589977974888511704681598808553789636057965795110640986410281597921902662990963638641278281253781683699119666661945433104346601274970659774893661365968347766707077408549681767565454620843792569318870542401828729517938364411892509820193464655128629664809734022850771731500407885408815335930002147542787627415049845408189806745107445132307539157002401311183617949986742914159513317593667951549591942294545010053084686720365553135398975223690151357594502438362943103211174888290826883518964968656962099365383745446040058868947352605005471883468803102923319135160194367582819156826127917537651473185148386098880353425069599001396856273342875688276177114278359156141134393159654758637663041409089129911594364800818125391217718986756939362789014002086984204053324062930069928284955781180175025313587891151051182531528712430068603601480445127763661852050046817311966022046189931948955290807404661752447837636846919052423707195121151844536365697282035619507227238494415828142354268295050195101293247644044457267714935452707723243836958166570458923766194943739329318567831418083291367602614610628703776858094904109993034272453854415127335371407800891291417423473199819581953311554881626790599515656538382928587235599730899217327975918421664202906795230685640597210322674275525454392606193005351353121325240801341129111396762030413616120113277356128432334929643219670987389108486144', -); -test( - macro, - '-22', - '1234', - '3544770596427666704933670825514058656840289167033434034813245091750883162270446675859397841986880345238161021960809170374322988214534191585053363506454126462213757244784862172250548800355120891239982462620296434675754206726427100313150523472266151826654642293138772262710079764335312817589977974888511704681598808553789636057965795110640986410281597921902662990963638641278281253781683699119666661945433104346601274970659774893661365968347766707077408549681767565454620843792569318870542401828729517938364411892509820193464655128629664809734022850771731500407885408815335930002147542787627415049845408189806745107445132307539157002401311183617949986742914159513317593667951549591942294545010053084686720365553135398975223690151357594502438362943103211174888290826883518964968656962099365383745446040058868947352605005471883468803102923319135160194367582819156826127917537651473185148386098880353425069599001396856273342875688276177114278359156141134393159654758637663041409089129911594364800818125391217718986756939362789014002086984204053324062930069928284955781180175025313587891151051182531528712430068603601480445127763661852050046817311966022046189931948955290807404661752447837636846919052423707195121151844536365697282035619507227238494415828142354268295050195101293247644044457267714935452707723243836958166570458923766194943739329318567831418083291367602614610628703776858094904109993034272453854415127335371407800891291417423473199819581953311554881626790599515656538382928587235599730899217327975918421664202906795230685640597210322674275525454392606193005351353121325240801341129111396762030413616120113277356128432334929643219670987389108486144', -); -test( - macro, - '22', - '5678', - '188791183279459428032979917309231847200926168850386143505884770467168693375931895922274556902557057349070006829787284038833847205657221323086778299516173672693704766555252528139265360902778722183082662200078678453997329891537034422822575803367053904655840627755946766693757142547502052565953996363335560763158268551572751512866106778431138820615713754627823698314270698590631138259164788157389001919104523833942391091963057065922406993273787102400618472074518275818851551644852629873956788856970633475366447672782530547865741999862312938533203178291710002234858638631656516476317172691637416817888111298556457298999099751473928302529193993166300867967794207259256002142542750751106986007283388678487258401453058580610853029932752094378405105178931730860876546015936460719383487738652762837137015685750382657573311754947701500407222582281566094817174073472144811366744070419797423798544094403873094199877877853150049457040475968921734523430878675521293370360945777794830877356184006978877091885754906917991440962876015220987468233257346287046662479844768237469373754719329682306024899040352120465381043236796342435914139828201123414926711331244145922850129403791095391423842253313316894102060772814826064451102647169447140443080993464221839521726629053885287095964136013255179000177247350196068604054496565177879080513643431866167726634133898846619131635347475126027711691279901001090402999384232358268658557899584767972188754606811562218767608264930824961710835118809206445233999791639003838245009290187741328535591220360093897367352614744829186871911800346161094937089356183566076527889043149104246450652971623538711614388121183532572879725745001292012401206003161879654577991659939731216517542635503622655459132088797820236545384884194315725633695427351662866125654652037894893851700035152604437639749253793788001370984215018294940417131355604149159082298240255347039270323737033829938556652804213810754530366216244627359047801328010962028910363918606863009301850889578079483970837777414556113020756651244678945855588115566911935996323508669528384387516643242397299023508751043526450954773213552893031292302108980643471326696435902444257202942430483248169515243504400730148395387415129983474005341937524404093610934807837061631884341923871640332973833712473410511352497840950354717471207835203039728832245686598798557108303180717754281741624836460482499750093903647140024989550279346101803707104317524947924300904078402788855449767432346556247835035384556446005558861060448421141387365651441511783999354650683395274128594606161258833809729090469884846090442597192736831693121095035897380375918668414251031197753973301724588916035485541075323904538088914655589426133179024612467018336059489439900282543046314110365187230735791452277032816340183238147712040823773524149282426416491420492939282622735636049912086266615529452977045894296591781274478366606588824311816021589425349467712419121696503212958985567622927656183375686142819491308359745612172611203958699633657019779838962795602648062265858350278662630718999151751658417214897098590866440999092201908970405217151181916677531588126391148866486355596584519721899405760444541383544962722489875114029357216033135513811415437737779643777561247514270920525940156015070057021445589556923682615671082792479847690833002924073136137432397339370513067790302967340822556367795292986667622422991835236165285127792424630052345714281497090373958007873533009712803180058310323179851564088273446186130049950558067667847928286576209829335469946077179104819764051749338467796811081169318581581642850701153588880097116565036806635144191514941671379189491284471206062525996710209192630982325515553569877748865098007911563238370520552779962974699534249328592557597174798475291743896129283115647913205511724485683652165879255348366405023438903433484562441296977463064589755118577364288557833533525712147910220705629283320345221392498374920388002113076781370533887021362629864905597326338617774056928683324516257011958993549660242683378628080041274187041027497798834136787655367653313087762082861764871834770591798602251128431476037857054662472011944666943267798513485310853118021197803091306619087873370818101335777419097062662406323667850528298645645659705841302522876053300363978267616708413039423577121433189797240232888355212252359572984976125208566821140812480736284072108352440262297665734819819192122502735544582352754969285563661193235781572915221488949701772581090470157333949943304303258562699351706132291487263002827565568137178391760246763425471476903399001677140103838451942491852797942220150718465024075126021867404930949262237514847293928201986505952400034942909184404021589066392741316625432520165649180730478556845798056299390529868233644331355976433410122475395339372683857077054367193114853723272384165320308359895327456012695111158341679642973786987974118879672101864000622440671637727905844446346659140267379540618189466479973512691352669908635579670046572643071543414288852945575507001364000587388365403163906923211010169649609787771443144617832964226341728880822040252791050573628058886465561125429540997997868877363781470212869288169031000314873670199023295575975029256888216051199783236003631198408646449546200837126408047806205375568516286244938833513923703107122664057553162916061895211874413026882293647396162003729561243896593367071601927468297455059908329773843490942712555322638331213927467737996161390460580291397428087241641827588245090045532168071664305848368946557531242866689515860672755630196510501059011076815782465524313305009301928730197566296410986829702452451693715022525438145214864666547710131393893422930433170192612410872699695903278923467086552431305253131022041442224030817136355438528522927710943963127661600938420524965868054868420789110281366652020715320237791007498809737701793479928444775909635220385965554432486139403818709288893492972588178924163488669440430698055258217332383878998815578776861203408118636769740672061660441927713102293878635124860434685746066579552625545433283636852639248738646856738605099028379736959929344991408860138578579292810759278795009828170173218117855426563489356914140296451669797511966308454520777982547536269136517098058706965105246074767227371117788844144579058151777933868930309861162765115846938463381459853947747275772776398557035107245698846181277540908832896814422527395488764190929404319672627395382255601482932675915638164367605784383912597789157118099369129866134453961147524445310724935291432570358456707042196935301261866358927798468810349341142291611156159359534617856444941265047694063906146162911324572161847512820145217043951957402547150640394819164257476384755090115583219631277624937601796185647361374464816722286079605798681157282804842881477768712666527405194818777681881080754221642693036637898043597600173291293530540776397593912983219493509839629946441187964692468617078532810433116136093659551535138860229829786694832025732595062223913257013909834336129848617643821876714991430811032042401672948443617106295564657838664397093430728751201194167005351810695181731189639616620396686825283143974008053920667467718924710366948369410543884199762061772961627365614073985761451542908159022475474594645453428260577023270323956122594107262708230204278635766614607705687764981980866116553659699581936921712862570741253541801805383105858152652730146528763628550254584923431153812726414403489380619446609235095663174700659695093931838433555356529154564055522469749278362012539004460570850761165655051971287648503799979759701767311217436978364357210522552286818202064756315420591610749979193377628867887418264504475624922321666517244630230702755729863166168476152067458807632513614287747416064', -); -test( - macro, - '-22', - '5678', - '188791183279459428032979917309231847200926168850386143505884770467168693375931895922274556902557057349070006829787284038833847205657221323086778299516173672693704766555252528139265360902778722183082662200078678453997329891537034422822575803367053904655840627755946766693757142547502052565953996363335560763158268551572751512866106778431138820615713754627823698314270698590631138259164788157389001919104523833942391091963057065922406993273787102400618472074518275818851551644852629873956788856970633475366447672782530547865741999862312938533203178291710002234858638631656516476317172691637416817888111298556457298999099751473928302529193993166300867967794207259256002142542750751106986007283388678487258401453058580610853029932752094378405105178931730860876546015936460719383487738652762837137015685750382657573311754947701500407222582281566094817174073472144811366744070419797423798544094403873094199877877853150049457040475968921734523430878675521293370360945777794830877356184006978877091885754906917991440962876015220987468233257346287046662479844768237469373754719329682306024899040352120465381043236796342435914139828201123414926711331244145922850129403791095391423842253313316894102060772814826064451102647169447140443080993464221839521726629053885287095964136013255179000177247350196068604054496565177879080513643431866167726634133898846619131635347475126027711691279901001090402999384232358268658557899584767972188754606811562218767608264930824961710835118809206445233999791639003838245009290187741328535591220360093897367352614744829186871911800346161094937089356183566076527889043149104246450652971623538711614388121183532572879725745001292012401206003161879654577991659939731216517542635503622655459132088797820236545384884194315725633695427351662866125654652037894893851700035152604437639749253793788001370984215018294940417131355604149159082298240255347039270323737033829938556652804213810754530366216244627359047801328010962028910363918606863009301850889578079483970837777414556113020756651244678945855588115566911935996323508669528384387516643242397299023508751043526450954773213552893031292302108980643471326696435902444257202942430483248169515243504400730148395387415129983474005341937524404093610934807837061631884341923871640332973833712473410511352497840950354717471207835203039728832245686598798557108303180717754281741624836460482499750093903647140024989550279346101803707104317524947924300904078402788855449767432346556247835035384556446005558861060448421141387365651441511783999354650683395274128594606161258833809729090469884846090442597192736831693121095035897380375918668414251031197753973301724588916035485541075323904538088914655589426133179024612467018336059489439900282543046314110365187230735791452277032816340183238147712040823773524149282426416491420492939282622735636049912086266615529452977045894296591781274478366606588824311816021589425349467712419121696503212958985567622927656183375686142819491308359745612172611203958699633657019779838962795602648062265858350278662630718999151751658417214897098590866440999092201908970405217151181916677531588126391148866486355596584519721899405760444541383544962722489875114029357216033135513811415437737779643777561247514270920525940156015070057021445589556923682615671082792479847690833002924073136137432397339370513067790302967340822556367795292986667622422991835236165285127792424630052345714281497090373958007873533009712803180058310323179851564088273446186130049950558067667847928286576209829335469946077179104819764051749338467796811081169318581581642850701153588880097116565036806635144191514941671379189491284471206062525996710209192630982325515553569877748865098007911563238370520552779962974699534249328592557597174798475291743896129283115647913205511724485683652165879255348366405023438903433484562441296977463064589755118577364288557833533525712147910220705629283320345221392498374920388002113076781370533887021362629864905597326338617774056928683324516257011958993549660242683378628080041274187041027497798834136787655367653313087762082861764871834770591798602251128431476037857054662472011944666943267798513485310853118021197803091306619087873370818101335777419097062662406323667850528298645645659705841302522876053300363978267616708413039423577121433189797240232888355212252359572984976125208566821140812480736284072108352440262297665734819819192122502735544582352754969285563661193235781572915221488949701772581090470157333949943304303258562699351706132291487263002827565568137178391760246763425471476903399001677140103838451942491852797942220150718465024075126021867404930949262237514847293928201986505952400034942909184404021589066392741316625432520165649180730478556845798056299390529868233644331355976433410122475395339372683857077054367193114853723272384165320308359895327456012695111158341679642973786987974118879672101864000622440671637727905844446346659140267379540618189466479973512691352669908635579670046572643071543414288852945575507001364000587388365403163906923211010169649609787771443144617832964226341728880822040252791050573628058886465561125429540997997868877363781470212869288169031000314873670199023295575975029256888216051199783236003631198408646449546200837126408047806205375568516286244938833513923703107122664057553162916061895211874413026882293647396162003729561243896593367071601927468297455059908329773843490942712555322638331213927467737996161390460580291397428087241641827588245090045532168071664305848368946557531242866689515860672755630196510501059011076815782465524313305009301928730197566296410986829702452451693715022525438145214864666547710131393893422930433170192612410872699695903278923467086552431305253131022041442224030817136355438528522927710943963127661600938420524965868054868420789110281366652020715320237791007498809737701793479928444775909635220385965554432486139403818709288893492972588178924163488669440430698055258217332383878998815578776861203408118636769740672061660441927713102293878635124860434685746066579552625545433283636852639248738646856738605099028379736959929344991408860138578579292810759278795009828170173218117855426563489356914140296451669797511966308454520777982547536269136517098058706965105246074767227371117788844144579058151777933868930309861162765115846938463381459853947747275772776398557035107245698846181277540908832896814422527395488764190929404319672627395382255601482932675915638164367605784383912597789157118099369129866134453961147524445310724935291432570358456707042196935301261866358927798468810349341142291611156159359534617856444941265047694063906146162911324572161847512820145217043951957402547150640394819164257476384755090115583219631277624937601796185647361374464816722286079605798681157282804842881477768712666527405194818777681881080754221642693036637898043597600173291293530540776397593912983219493509839629946441187964692468617078532810433116136093659551535138860229829786694832025732595062223913257013909834336129848617643821876714991430811032042401672948443617106295564657838664397093430728751201194167005351810695181731189639616620396686825283143974008053920667467718924710366948369410543884199762061772961627365614073985761451542908159022475474594645453428260577023270323956122594107262708230204278635766614607705687764981980866116553659699581936921712862570741253541801805383105858152652730146528763628550254584923431153812726414403489380619446609235095663174700659695093931838433555356529154564055522469749278362012539004460570850761165655051971287648503799979759701767311217436978364357210522552286818202064756315420591610749979193377628867887418264504475624922321666517244630230702755729863166168476152067458807632513614287747416064', -); -test(macro, '24', '0', '1'); -test(macro, '-24', '0', '1'); -test(macro, '24', '1', '24'); -test(macro, '-24', '1', '-24'); -test(macro, '24', '3', '13824'); -test(macro, '-24', '3', '-13824'); -test(macro, '24', '7', '4586471424'); -test(macro, '-24', '7', '-4586471424'); -test(macro, '24', '9', '2641807540224'); -test(macro, '-24', '9', '-2641807540224'); -test(macro, '24', '11', '1521681143169024'); -test(macro, '-24', '11', '-1521681143169024'); -test(macro, '24', '17', '290797794982682557415424'); -test(macro, '-24', '17', '-290797794982682557415424'); -test(macro, '24', '22', '2315513501476187716057433112576'); -test(macro, '-24', '22', '2315513501476187716057433112576'); -test(macro, '24', '24', '1333735776850284124449081472843776'); -test(macro, '-24', '24', '1333735776850284124449081472843776'); -test(macro, '24', '27', '18437563379178327736384102280592359424'); -test(macro, '-24', '27', '-18437563379178327736384102280592359424'); -test(macro, '24', '29', '10620036506406716776157242913621199028224'); -test(macro, '-24', '29', '-10620036506406716776157242913621199028224'); -test( - macro, - '24', - '1234', - '151590600073425387047449072838201737923790545622778515405542489295365280374802003092345748753681766769342781749881287249346464958055559009581857595198530089819230481306713155507019243375785757736393010981297487306518434496622971579086045332205893329146303230768285811255525374621247345141815714309058936253285898983419720608226966436915189967268919455309262250618242751360361248909034678867178267283386443504378478143195886936482599662011569578168577981039494263767900563281750273077550310292671674973097829744745890473331477918697103083690536733167341918362953786259364594330084180149751256516756030378850936663791973239733978417672189517102102223884258181339830461602957890003315317105400603981501400219540598427784828262715802695138377182060865841593833485720205274139142676664443049548450410277812263367703519777502927932788452627831274636998616672291216489574557549335055172197580577132711118453026428882649878235139444805201982069512799047951007377619920034219848761549071361411729427628794049204602980944425540332659900016630759739316868023749785700349807321646264995322781924302276013058208345925931493883895500465669887594678839788578637461303074752727476500990640364376722701859400316730559885693050235239674548455869510362677791910042980988146640583541719495331021584874341075294784062883967560447377347188388603280434006674600263225696860648015867438392697049466565415507219522458255386701717251429282388492292922044650917640291089769306296653188826596134691225361787940784064160312363042310597352769798472903809450672123731170381463659456013676278088123310449702495131987916252551416683646406232220563855513976356100126013273624446723135664155744771247145879322648352616000381514511103819776', -); -test( - macro, - '-24', - '1234', - '151590600073425387047449072838201737923790545622778515405542489295365280374802003092345748753681766769342781749881287249346464958055559009581857595198530089819230481306713155507019243375785757736393010981297487306518434496622971579086045332205893329146303230768285811255525374621247345141815714309058936253285898983419720608226966436915189967268919455309262250618242751360361248909034678867178267283386443504378478143195886936482599662011569578168577981039494263767900563281750273077550310292671674973097829744745890473331477918697103083690536733167341918362953786259364594330084180149751256516756030378850936663791973239733978417672189517102102223884258181339830461602957890003315317105400603981501400219540598427784828262715802695138377182060865841593833485720205274139142676664443049548450410277812263367703519777502927932788452627831274636998616672291216489574557549335055172197580577132711118453026428882649878235139444805201982069512799047951007377619920034219848761549071361411729427628794049204602980944425540332659900016630759739316868023749785700349807321646264995322781924302276013058208345925931493883895500465669887594678839788578637461303074752727476500990640364376722701859400316730559885693050235239674548455869510362677791910042980988146640583541719495331021584874341075294784062883967560447377347188388603280434006674600263225696860648015867438392697049466565415507219522458255386701717251429282388492292922044650917640291089769306296653188826596134691225361787940784064160312363042310597352769798472903809450672123731170381463659456013676278088123310449702495131987916252551416683646406232220563855513976356100126013273624446723135664155744771247145879322648352616000381514511103819776', -); -test( - macro, - '24', - '5678', - '6909242543227743353809302095921095536524473561057165844581679410386766748488604299037026802190036290972523220194842752741485565945649373120593235468335848253481678944344897925015389714826413349410177631790045031943248773428879772739522827289604213275638780181896952443263073559712416131489957618900530740123400118237435413354649143060792875091318278585372437653470273949962335683216876622997736142741297958867176104235205056075719300228586105300420306369433989133325438387954921091906656969473369516356480833865066363304713540618192703365037455056012113960923122124179128736981338610956142771571808684231131105687569641388188446317730999584880794042484851478768133389844980164151720217542320262939508347691682342138522778060463084758675137561278861799859513960422378371775012031341809600887021827399844120518619103264164650677563352321974137647628478200600886109391143827381751378326104568910362334391415559848713463581352282420781294283758639369444314274599463207309901919833477647095250455332103956624216723089194770241296308302890710708138463591594108491375387092442160498438129101391736935004797211781736084624679135725046642935877005904500941008512545713383636775910913769118763901254831863898567559039792892496993193767213865404695189447620717191889574607271221253734214207606509303815710653198438402041521568515611813364721395336273048987799371934481049393697436377986134414568848925779333002134965587464106528152928197340289146528067712765151185247134251516207138782552793628345378997820905660194178001186994530020474952912269460972371580105721313532384574354540871635624041776046333388469745473028713013516683096356715177489532374407329471698695330614689214238225012907430432633909454857348989628051205236149551583947299465167194467668846336660944015180433931614586767779054115885111857540745528169992322163207044044488670657531868958992608214820354213074535958852759290564716927478198823333373374937720003672027398087124135343370691960382869258899427129220320143902491278793813238430465235860186960018237027526759813434944109474246741949527335246220480560254865111600632880608044682824898931874699864943855203431042365227377620680321459660987508307256592281727918306852635765535692503733218735444193207821083815581499399442219650000118107924012043499451238573570094079990109299190701814648807629227553766337073738504785496741973216586368345759189450452701067651649687981494044123926355817855226945627140031748054123594178696095671207794087457165269491338522780645313431934736643701650275328610821351006893740759674097541752357384338680350586790224882237683629538804015848469557782536191568984440803205429574817416905810035999083705208747035308838067377457376573948667705334690478735291850144203728342247634285563284902811919599506802960145211594874021503961512312094455587567697236904427829310783955019968993798633410220915273077833273759995480078554390567958801041571463441272562445362793890427049722892579012150812992897784399765836371711342270697399079409268621338465141537827604272596264561524757775919137279622148165105100726581985370376533708520083031902822380651049138314828258157760660361052917356148361076858029197983199714799549388753138873630163899577287697011072200217713083219980223308329072386564251855404194759034472140811253397135777998749327737590240550674739896553325406340850660822401505867952863442378032198550214676960873593184653003702714053785570797139346858405632080994993407154375607762459908870347788282713628065134448424324925307478350063149225594053973115267392759652869926859055261981795715793911665450618835722442776629043819843412433877325397811994145386781513794026045770684736082651288118224886713369764471121039811165405122248681255438916750835952141059316087666360985121458782402604238437689336401689176904961406119640521283036564242883812119616205627240236429984215840153559625562378652590836660740334768903772785794796630784565702603904128880950290899077458848713352239690752094902536139625944326846369933673626859584112711752192959568868026727635227118775593609034554724305741667971932241251649212234621343015740929858616626107670522527456130285503983446125409978068781856751731806377464920495450984236307279195922116693350211579310114468642544808587506381899146228392160338911761298983523394475914069925661336317688601614635176466936516650628457951262007237173667306984959634154161894116260039666735252234838350152349621573967073004378209996258899425957230823935962484203146411470794692397709720438221504023967184703626974385880417280024680786833273012433711625620042440253039851842539066103583671616276204858517722243909738410395578467951278134847051746601519549418794912211694740522839231762718034975617793333279450013015728897326891841305278169840750523025407888699660353086878542323408902020520745137853306948470924526832755671922980299901111454489829178447374350297734241924593197533476648287362705907326587903971144933195960309922016559115259145542602390960186986114826396112061139400167607740086448386211148049775587962761029591347975930271748327096753101637755673736334797475756177782477162997340502006754139409837932248709217588171272019845846608674183857309614487497423529281774820812855625200995143972487433890984243531847462852919240554641115522799596773636837906026144057598069511617898449948350572214384921080971973902502402211568802750379122998511274466017974941804703068336349215856446000530541951506765590932187755221324429657770293929726963214364914920312944839250592743611686981542097230343416941015181738191936768424805774791532673824342775520989922696032234542390090970378211787898110639660594600049631415764918868664882579924419113193629865077574463611875775532515680395533801486247525366388744886221612290889104531414904759924423276133269774474452875660758985017677276475305727162499245682784233172420800860481499133924145865006672545584647252606595826412236376706363585768675313853908404643815973889284292155410703372372413690775754902752855223760995153783326936793360537270982814844058735862825288469622833678311343943432205861271223777059946323093642457760026188705359296753808062709160061509562758124516997994361930873438768495782976556725650123698976773727667700766538233502587452020369593449922805037117490069737863202092655675092095120263618908362070898189610949764500023308769612177756951169777556263087771050269419640346318095925480284387495101736136602935813966818000418340535260863387002103707013222602870150906297763302008471389096475403406466296868498675202862934711769313692649420019010134057017438532712341527913711423268858441655875081926096567951606219719933592384316299968711193818524843736420584441099884547446077376494324792588069639621837526038238059880241227778527626618221494264760180657732801612348589103290695260992552373632950395780820971888676534078241816018476901814022905750537014600909836985401547164897051750176229167184596483534227572123935968337358752623038645346798033051576788492613747977196321371756084172394656509906994497839796532944821661702141307321688426555797056528768304358309636187850354312111960227634944375652263825013063956181739704664262214737743372154205999348652610776761883817832581027315985029870825344987010322787125818214235132013611644153949859858447569681743008753567948866312695912331296212062406828770679518938594754011864087516302762316464021883336600792442268009755925214689196103335236650748927588009005181069463851717820411294243164434618318426347580730703078170070907659408761721872488572982052027987813740488362497448333259178540819360984769894490609499528923446089556631606201168915777672445957547945071192408471582321347458393347744642123820014403943301956456199036248285841251751630923650699885800543144864303330551321206054023250603498937703173818262472928828604335469562756457727795232009580481882359659372911042201823035731975439128565006789723919934319797028003654293808085441085447766777266176', -); -test( - macro, - '-24', - '5678', - '6909242543227743353809302095921095536524473561057165844581679410386766748488604299037026802190036290972523220194842752741485565945649373120593235468335848253481678944344897925015389714826413349410177631790045031943248773428879772739522827289604213275638780181896952443263073559712416131489957618900530740123400118237435413354649143060792875091318278585372437653470273949962335683216876622997736142741297958867176104235205056075719300228586105300420306369433989133325438387954921091906656969473369516356480833865066363304713540618192703365037455056012113960923122124179128736981338610956142771571808684231131105687569641388188446317730999584880794042484851478768133389844980164151720217542320262939508347691682342138522778060463084758675137561278861799859513960422378371775012031341809600887021827399844120518619103264164650677563352321974137647628478200600886109391143827381751378326104568910362334391415559848713463581352282420781294283758639369444314274599463207309901919833477647095250455332103956624216723089194770241296308302890710708138463591594108491375387092442160498438129101391736935004797211781736084624679135725046642935877005904500941008512545713383636775910913769118763901254831863898567559039792892496993193767213865404695189447620717191889574607271221253734214207606509303815710653198438402041521568515611813364721395336273048987799371934481049393697436377986134414568848925779333002134965587464106528152928197340289146528067712765151185247134251516207138782552793628345378997820905660194178001186994530020474952912269460972371580105721313532384574354540871635624041776046333388469745473028713013516683096356715177489532374407329471698695330614689214238225012907430432633909454857348989628051205236149551583947299465167194467668846336660944015180433931614586767779054115885111857540745528169992322163207044044488670657531868958992608214820354213074535958852759290564716927478198823333373374937720003672027398087124135343370691960382869258899427129220320143902491278793813238430465235860186960018237027526759813434944109474246741949527335246220480560254865111600632880608044682824898931874699864943855203431042365227377620680321459660987508307256592281727918306852635765535692503733218735444193207821083815581499399442219650000118107924012043499451238573570094079990109299190701814648807629227553766337073738504785496741973216586368345759189450452701067651649687981494044123926355817855226945627140031748054123594178696095671207794087457165269491338522780645313431934736643701650275328610821351006893740759674097541752357384338680350586790224882237683629538804015848469557782536191568984440803205429574817416905810035999083705208747035308838067377457376573948667705334690478735291850144203728342247634285563284902811919599506802960145211594874021503961512312094455587567697236904427829310783955019968993798633410220915273077833273759995480078554390567958801041571463441272562445362793890427049722892579012150812992897784399765836371711342270697399079409268621338465141537827604272596264561524757775919137279622148165105100726581985370376533708520083031902822380651049138314828258157760660361052917356148361076858029197983199714799549388753138873630163899577287697011072200217713083219980223308329072386564251855404194759034472140811253397135777998749327737590240550674739896553325406340850660822401505867952863442378032198550214676960873593184653003702714053785570797139346858405632080994993407154375607762459908870347788282713628065134448424324925307478350063149225594053973115267392759652869926859055261981795715793911665450618835722442776629043819843412433877325397811994145386781513794026045770684736082651288118224886713369764471121039811165405122248681255438916750835952141059316087666360985121458782402604238437689336401689176904961406119640521283036564242883812119616205627240236429984215840153559625562378652590836660740334768903772785794796630784565702603904128880950290899077458848713352239690752094902536139625944326846369933673626859584112711752192959568868026727635227118775593609034554724305741667971932241251649212234621343015740929858616626107670522527456130285503983446125409978068781856751731806377464920495450984236307279195922116693350211579310114468642544808587506381899146228392160338911761298983523394475914069925661336317688601614635176466936516650628457951262007237173667306984959634154161894116260039666735252234838350152349621573967073004378209996258899425957230823935962484203146411470794692397709720438221504023967184703626974385880417280024680786833273012433711625620042440253039851842539066103583671616276204858517722243909738410395578467951278134847051746601519549418794912211694740522839231762718034975617793333279450013015728897326891841305278169840750523025407888699660353086878542323408902020520745137853306948470924526832755671922980299901111454489829178447374350297734241924593197533476648287362705907326587903971144933195960309922016559115259145542602390960186986114826396112061139400167607740086448386211148049775587962761029591347975930271748327096753101637755673736334797475756177782477162997340502006754139409837932248709217588171272019845846608674183857309614487497423529281774820812855625200995143972487433890984243531847462852919240554641115522799596773636837906026144057598069511617898449948350572214384921080971973902502402211568802750379122998511274466017974941804703068336349215856446000530541951506765590932187755221324429657770293929726963214364914920312944839250592743611686981542097230343416941015181738191936768424805774791532673824342775520989922696032234542390090970378211787898110639660594600049631415764918868664882579924419113193629865077574463611875775532515680395533801486247525366388744886221612290889104531414904759924423276133269774474452875660758985017677276475305727162499245682784233172420800860481499133924145865006672545584647252606595826412236376706363585768675313853908404643815973889284292155410703372372413690775754902752855223760995153783326936793360537270982814844058735862825288469622833678311343943432205861271223777059946323093642457760026188705359296753808062709160061509562758124516997994361930873438768495782976556725650123698976773727667700766538233502587452020369593449922805037117490069737863202092655675092095120263618908362070898189610949764500023308769612177756951169777556263087771050269419640346318095925480284387495101736136602935813966818000418340535260863387002103707013222602870150906297763302008471389096475403406466296868498675202862934711769313692649420019010134057017438532712341527913711423268858441655875081926096567951606219719933592384316299968711193818524843736420584441099884547446077376494324792588069639621837526038238059880241227778527626618221494264760180657732801612348589103290695260992552373632950395780820971888676534078241816018476901814022905750537014600909836985401547164897051750176229167184596483534227572123935968337358752623038645346798033051576788492613747977196321371756084172394656509906994497839796532944821661702141307321688426555797056528768304358309636187850354312111960227634944375652263825013063956181739704664262214737743372154205999348652610776761883817832581027315985029870825344987010322787125818214235132013611644153949859858447569681743008753567948866312695912331296212062406828770679518938594754011864087516302762316464021883336600792442268009755925214689196103335236650748927588009005181069463851717820411294243164434618318426347580730703078170070907659408761721872488572982052027987813740488362497448333259178540819360984769894490609499528923446089556631606201168915777672445957547945071192408471582321347458393347744642123820014403943301956456199036248285841251751630923650699885800543144864303330551321206054023250603498937703173818262472928828604335469562756457727795232009580481882359659372911042201823035731975439128565006789723919934319797028003654293808085441085447766777266176', -); -test(macro, '27', '0', '1'); -test(macro, '-27', '0', '1'); -test(macro, '27', '1', '27'); -test(macro, '-27', '1', '-27'); -test(macro, '27', '3', '19683'); -test(macro, '-27', '3', '-19683'); -test(macro, '27', '7', '10460353203'); -test(macro, '-27', '7', '-10460353203'); -test(macro, '27', '9', '7625597484987'); -test(macro, '-27', '9', '-7625597484987'); -test(macro, '27', '11', '5559060566555523'); -test(macro, '-27', '11', '-5559060566555523'); -test(macro, '27', '17', '2153693963075557766310747'); -test(macro, '-27', '17', '-2153693963075557766310747'); -test(macro, '27', '22', '30903154382632612361920641803529'); -test(macro, '-27', '22', '30903154382632612361920641803529'); -test(macro, '27', '24', '22528399544939174411840147874772641'); -test(macro, '-27', '24', '22528399544939174411840147874772641'); -test(macro, '27', '27', '443426488243037769948249630619149892803'); -test(macro, '-27', '27', '-443426488243037769948249630619149892803'); -test(macro, '27', '29', '323257909929174534292273980721360271853387'); -test(macro, '-27', '29', '-323257909929174534292273980721360271853387'); -test( - macro, - '27', - '1234', - '200856075209902212199811223498516329401019153294330654484899457135661710831649025094793443576863417869675999053574959337346792532217485737202817800641723197630343724422691567676966750017719674361721564299756255063995170624987815873886816573528036690980712399472082918987467608319915320632750007215671073941033733822406638067457070592416925055525002249965214978226439419675794443664397992725836030753072150525500182271105668883387299438014566998450801673929744863349108063057027323538841038850392906331064754828529624866950550712400849201192591205142296901842010465055290151680972126095024443830456846851602321575873316021498267598562024770678289890230706320997870461736064158216930272006483331205888383426585499224333788304253250735446206878459830691428518801804316734865056012563110060177249063533223360212951908142458456167777780005320459640618276526423350311574957115723697862633038912990076590485058168720523332363832907739630745212612829631298739740918292687323963984732777515115303964140679392026532299969353302111690876222512591852054954749110470134966527453125805201071472068728012702260328777663337721407575454838256471452852284288283640249611394712320213997254539391537655386427263371372214172403860536953046790124191276197581019979325589039334200287751090718265018203205058843589368322867283544158866611521312017186795565242663733214746314148048347376472660469372081324221562030477828367398702782252799482995882978202357840004609118497407774448098166472475681019210778338607385302368427582889110199771043940039384173696648402793417875142304690934448344767850874922126620454594771669567183452729544713864889437820573063999170931037181075406666631149358312284169719891882097692840499902508546688352472767932029187479332141883194288344509584921993462900826009', -); -test( - macro, - '-27', - '1234', - '200856075209902212199811223498516329401019153294330654484899457135661710831649025094793443576863417869675999053574959337346792532217485737202817800641723197630343724422691567676966750017719674361721564299756255063995170624987815873886816573528036690980712399472082918987467608319915320632750007215671073941033733822406638067457070592416925055525002249965214978226439419675794443664397992725836030753072150525500182271105668883387299438014566998450801673929744863349108063057027323538841038850392906331064754828529624866950550712400849201192591205142296901842010465055290151680972126095024443830456846851602321575873316021498267598562024770678289890230706320997870461736064158216930272006483331205888383426585499224333788304253250735446206878459830691428518801804316734865056012563110060177249063533223360212951908142458456167777780005320459640618276526423350311574957115723697862633038912990076590485058168720523332363832907739630745212612829631298739740918292687323963984732777515115303964140679392026532299969353302111690876222512591852054954749110470134966527453125805201071472068728012702260328777663337721407575454838256471452852284288283640249611394712320213997254539391537655386427263371372214172403860536953046790124191276197581019979325589039334200287751090718265018203205058843589368322867283544158866611521312017186795565242663733214746314148048347376472660469372081324221562030477828367398702782252799482995882978202357840004609118497407774448098166472475681019210778338607385302368427582889110199771043940039384173696648402793417875142304690934448344767850874922126620454594771669567183452729544713864889437820573063999170931037181075406666631149358312284169719891882097692840499902508546688352472767932029187479332141883194288344509584921993462900826009', -); -test( - macro, - '27', - '5678', - '1920670627041206840774317663061948531951548392586808036968655466513575530956212975774514238251197579090763349520005051835865042160772589169624476421706202590867860836690838786680450886141750404308408100197254742949071761592216668354595970793821666614574491628116021852490928266530039402274346603263915374906973045214520217579266276548940290197959870301983972948179342634336579386358378974195640173820826951706289068255636419593014486343794593987163856420064173623896766989137738772776377427442097331419584717293530596353658978697049818315083325917184148323246870360758039957677823155528069256344361615958925614299682556146381515609616001741477538909124857988462042152583475858959708352329078738601094623969648315977840331485254209899871646649972472372095452648168794559531587891304723383377106143342610066593596322450066346593064250164293612171399887948611723002687714633034005580022925175850122398245122163141238188056618415646875743299757508586238824342158406775418269157574948228511042170075383701360380600119963052883698603996010908136679734984191666988039630564578030822333416473331686176299575683617183902279297306358801915764702865246245093148511987518794036684029774730705063803579378907496553385221304907007953529232866068390828615106548652525036824065996249327562337880011776639185551336530505634619418517450596528181304358633713465477039574138461504506994233623242585354356605524242258852820324114074452649908604782399002596550916153410839185516390213358357834548623096143445732587215823810288043211299034382028751910218222923967466149776778576877664248973225249782758952557190800287368177398454902378376415868362035425615655624682981455869051819800859456132732320054055510566958251135161043336938045009646963245189593774509479550785046075894792169710218139317967718680527440283599846493280581066859320369808514616618064316610685296144379483228881158978531428541323976687007318478840124238398533801496097297015071332134452660846054421428149909225409769221839051449083375270329899898374485884886887125190469494156954015355114580948849208785046347459412975637271976882114713062112330537331127876640249342310281450813349286664902834009007280339950648850700440708748555487997305797417944284640312847154412547496220096692340189416832210466282566649332925837995666008798051378581959040498954085132477390853383093481176129650878445248789958824391345493197569531442806979176311248211412871040845844736158339923712459547591539550415996003282072387219018911765803789518884827791568134984700358743507239288171453633843763592103578573012447420761597931062446196749823913274155393819970124816742398443420049898048112792722620849282590853010364704986150303874501432870838621770926441069468404770404373890675534844221570867260548530639691411361203218650846445492626294997020128545271334888747901443583519313242322333157269016724544126555722125271718466441377338744197144665139930690040364724035268720548346016327799586536627059546835935892111936009551045577780871821958233775831514715738552477848906407293516034093463840649146923172863395128138438835433544718807766062278768770741451744867618368286602135404656520890155890101238524261112587615907631923684591193938770711298726617459834584716577454226046024456280984368570829122148771541978532132344153800979821391341346004725017526699171610089317393609489521109593485218609778690258066523564081395391334194325940849299429508434537825642151593153347775123712329348554222878530900249479115866329061956089475067568518232744646491234812061940598193564767933639294691752620290371604670392024822794195223184833997452082017311737450285129468363744078154728675038628714333873175144570204913129267965199303431706858336186755042226231183468843385119778696375795488511428939963856300359813082019502017643381504199506863718337397994274997752254757708272367666078675965040032039655925062247707075636789805274539053194840259610422752138553537725180597167371438930229420783619411928005931473865400477223675968308708249216344281666556496504984085949177728422334819418475038623078588714141499380129463420875932101260033375811625528931966565505132882422386608325523560248190689939207313386561886327643980713525129761663096753770390758712896499116510493355246860369384153391737470406874172921606838934727403098744014663071565032303777192174084122582946730008756106536993815320872157236729317634745631667114394136303705919618073684341874403244980777746281597675723918499517754138950341742429841628648421346110812738800865692526985004078449939939783096689246579006137481593969321838858087486685024934605209896758266277194033480123936439845801365328872002053460702803079717583034058121243760136910286949853216903677522250905510392566713879118017180689421758716319873286365642344743985956630970396015789433527653341599927766716994599791600982672311972370893852024580742922038592291822037985280439374076859860760447456227214570107076713441371110040481866528520446919136604157813535069283884957393825645814464806264277503491404782371252976040724254957145667674092298268073285259823296618873217871906591552510862582155404488921608024654326375619469231209031828858072396365212385640204416236746788303867620644842086149794597453008219491687259712252301584276458360737524420726294591150435186990238809185847919451252123489656372496043613842279955888472720044814213508941637152519990348407148927393875038476852404825802087693473325854313140587032371097348401164191468159425742186705236542204710037466387769479015379900734664129501511212299294684814946146327048005184836003000107105496191991647505947395678538952761563693653092396057893346156774141317075936232087744314496490509956837645841465967388142202300490064869619347902652823984909945873701021070634445104869604603785547980280081380393790903364474376364758613264472606771556227675845245248027497873498296375511004458930274898993867038605298383591809404357101355240283437176300862637920738599498741746521150167455353523330927129326274447459351643494051864005920884002398608267587991014622605843142855151877012756952553990368252360102557816678486685822969507404277254601956581010759230620724352157677998795938501832890979436797552440883742531302558570709076361709043133531426503972386170819272650464336778033158976021327334838579925495189278796979109139792191232782473002231837350047198764643616374041356297768694046950486001246185234359318391038800197857746441789669972513126194313149333382712207147511481557975622743732344202629767274244165956943548372982915991124491226134463115022810739060569665040240717572615620932472093174981002205974542066246133177952669421013895627060630464567760434256996281799968688229590092429649604880061340304296561685165836856606423053897026939262772456099432796351052849390003427289920795408775824445019032961645886626504591512212048335924123109654993739800469629501329929168753430905653421576424474668087832145303326186917347787604661201427588255288110103869986804399331506635536060487601890785562151210207595887133197464066346972583280471678345734031148539530692397993301487901118668413151152739493110857842168357407107810369630513619746957021035200287975064451571078331784369474527599711715767496931770063061477359695737750256984149156979906478297668490377273421425063634135938949613904319446351606432659158890010438536452763547944727936040394443661905803287318582738928999257571951746826811304523891797753282572538169266332939635099581060985026521423506192706942972853666059905273146115417304211233570424956603493273168920814813255134455438235602527751336570402852196721589759010458939788308886259589255589838453865926112669922271314441973202683425050250138493114016754036551602588968457859033236160720022442073508673912688509196121011581235868256299459315148083511624384602779057762575835218305144492664825432085770601166428566236259201040157805073745401588372353777316940550146420767400912250370939891562978931549393144124943754754417984294956325477143759436596679468856665971712954391480006376974981025962172422482296884009980457223252674173743660093454998272067099021050616490581360309414669608617227081755602192101247842052099617282451750980683945908343300229792225173818905754262604195304086203817551885146682726569', -); -test( - macro, - '-27', - '5678', - '1920670627041206840774317663061948531951548392586808036968655466513575530956212975774514238251197579090763349520005051835865042160772589169624476421706202590867860836690838786680450886141750404308408100197254742949071761592216668354595970793821666614574491628116021852490928266530039402274346603263915374906973045214520217579266276548940290197959870301983972948179342634336579386358378974195640173820826951706289068255636419593014486343794593987163856420064173623896766989137738772776377427442097331419584717293530596353658978697049818315083325917184148323246870360758039957677823155528069256344361615958925614299682556146381515609616001741477538909124857988462042152583475858959708352329078738601094623969648315977840331485254209899871646649972472372095452648168794559531587891304723383377106143342610066593596322450066346593064250164293612171399887948611723002687714633034005580022925175850122398245122163141238188056618415646875743299757508586238824342158406775418269157574948228511042170075383701360380600119963052883698603996010908136679734984191666988039630564578030822333416473331686176299575683617183902279297306358801915764702865246245093148511987518794036684029774730705063803579378907496553385221304907007953529232866068390828615106548652525036824065996249327562337880011776639185551336530505634619418517450596528181304358633713465477039574138461504506994233623242585354356605524242258852820324114074452649908604782399002596550916153410839185516390213358357834548623096143445732587215823810288043211299034382028751910218222923967466149776778576877664248973225249782758952557190800287368177398454902378376415868362035425615655624682981455869051819800859456132732320054055510566958251135161043336938045009646963245189593774509479550785046075894792169710218139317967718680527440283599846493280581066859320369808514616618064316610685296144379483228881158978531428541323976687007318478840124238398533801496097297015071332134452660846054421428149909225409769221839051449083375270329899898374485884886887125190469494156954015355114580948849208785046347459412975637271976882114713062112330537331127876640249342310281450813349286664902834009007280339950648850700440708748555487997305797417944284640312847154412547496220096692340189416832210466282566649332925837995666008798051378581959040498954085132477390853383093481176129650878445248789958824391345493197569531442806979176311248211412871040845844736158339923712459547591539550415996003282072387219018911765803789518884827791568134984700358743507239288171453633843763592103578573012447420761597931062446196749823913274155393819970124816742398443420049898048112792722620849282590853010364704986150303874501432870838621770926441069468404770404373890675534844221570867260548530639691411361203218650846445492626294997020128545271334888747901443583519313242322333157269016724544126555722125271718466441377338744197144665139930690040364724035268720548346016327799586536627059546835935892111936009551045577780871821958233775831514715738552477848906407293516034093463840649146923172863395128138438835433544718807766062278768770741451744867618368286602135404656520890155890101238524261112587615907631923684591193938770711298726617459834584716577454226046024456280984368570829122148771541978532132344153800979821391341346004725017526699171610089317393609489521109593485218609778690258066523564081395391334194325940849299429508434537825642151593153347775123712329348554222878530900249479115866329061956089475067568518232744646491234812061940598193564767933639294691752620290371604670392024822794195223184833997452082017311737450285129468363744078154728675038628714333873175144570204913129267965199303431706858336186755042226231183468843385119778696375795488511428939963856300359813082019502017643381504199506863718337397994274997752254757708272367666078675965040032039655925062247707075636789805274539053194840259610422752138553537725180597167371438930229420783619411928005931473865400477223675968308708249216344281666556496504984085949177728422334819418475038623078588714141499380129463420875932101260033375811625528931966565505132882422386608325523560248190689939207313386561886327643980713525129761663096753770390758712896499116510493355246860369384153391737470406874172921606838934727403098744014663071565032303777192174084122582946730008756106536993815320872157236729317634745631667114394136303705919618073684341874403244980777746281597675723918499517754138950341742429841628648421346110812738800865692526985004078449939939783096689246579006137481593969321838858087486685024934605209896758266277194033480123936439845801365328872002053460702803079717583034058121243760136910286949853216903677522250905510392566713879118017180689421758716319873286365642344743985956630970396015789433527653341599927766716994599791600982672311972370893852024580742922038592291822037985280439374076859860760447456227214570107076713441371110040481866528520446919136604157813535069283884957393825645814464806264277503491404782371252976040724254957145667674092298268073285259823296618873217871906591552510862582155404488921608024654326375619469231209031828858072396365212385640204416236746788303867620644842086149794597453008219491687259712252301584276458360737524420726294591150435186990238809185847919451252123489656372496043613842279955888472720044814213508941637152519990348407148927393875038476852404825802087693473325854313140587032371097348401164191468159425742186705236542204710037466387769479015379900734664129501511212299294684814946146327048005184836003000107105496191991647505947395678538952761563693653092396057893346156774141317075936232087744314496490509956837645841465967388142202300490064869619347902652823984909945873701021070634445104869604603785547980280081380393790903364474376364758613264472606771556227675845245248027497873498296375511004458930274898993867038605298383591809404357101355240283437176300862637920738599498741746521150167455353523330927129326274447459351643494051864005920884002398608267587991014622605843142855151877012756952553990368252360102557816678486685822969507404277254601956581010759230620724352157677998795938501832890979436797552440883742531302558570709076361709043133531426503972386170819272650464336778033158976021327334838579925495189278796979109139792191232782473002231837350047198764643616374041356297768694046950486001246185234359318391038800197857746441789669972513126194313149333382712207147511481557975622743732344202629767274244165956943548372982915991124491226134463115022810739060569665040240717572615620932472093174981002205974542066246133177952669421013895627060630464567760434256996281799968688229590092429649604880061340304296561685165836856606423053897026939262772456099432796351052849390003427289920795408775824445019032961645886626504591512212048335924123109654993739800469629501329929168753430905653421576424474668087832145303326186917347787604661201427588255288110103869986804399331506635536060487601890785562151210207595887133197464066346972583280471678345734031148539530692397993301487901118668413151152739493110857842168357407107810369630513619746957021035200287975064451571078331784369474527599711715767496931770063061477359695737750256984149156979906478297668490377273421425063634135938949613904319446351606432659158890010438536452763547944727936040394443661905803287318582738928999257571951746826811304523891797753282572538169266332939635099581060985026521423506192706942972853666059905273146115417304211233570424956603493273168920814813255134455438235602527751336570402852196721589759010458939788308886259589255589838453865926112669922271314441973202683425050250138493114016754036551602588968457859033236160720022442073508673912688509196121011581235868256299459315148083511624384602779057762575835218305144492664825432085770601166428566236259201040157805073745401588372353777316940550146420767400912250370939891562978931549393144124943754754417984294956325477143759436596679468856665971712954391480006376974981025962172422482296884009980457223252674173743660093454998272067099021050616490581360309414669608617227081755602192101247842052099617282451750980683945908343300229792225173818905754262604195304086203817551885146682726569', -); -test(macro, '29', '0', '1'); -test(macro, '-29', '0', '1'); -test(macro, '29', '1', '29'); -test(macro, '-29', '1', '-29'); -test(macro, '29', '3', '24389'); -test(macro, '-29', '3', '-24389'); -test(macro, '29', '7', '17249876309'); -test(macro, '-29', '7', '-17249876309'); -test(macro, '29', '9', '14507145975869'); -test(macro, '-29', '9', '-14507145975869'); -test(macro, '29', '11', '12200509765705829'); -test(macro, '-29', '11', '-12200509765705829'); -test(macro, '29', '17', '7257147736730073114838109'); -test(macro, '-29', '17', '-7257147736730073114838109'); -test(macro, '29', '22', '148852438543083302439338564577241'); -test(macro, '-29', '22', '148852438543083302439338564577241'); -test(macro, '29', '24', '125184900814733057351483732809459681'); -test(macro, '-29', '24', '125184900814733057351483732809459681'); -test(macro, '29', '27', '3053134545970524535745336759489912159909'); -test(macro, '-29', '27', '-3053134545970524535745336759489912159909'); -test(macro, '29', '29', '2567686153161211134561828214731016126483469'); -test(macro, '-29', '29', '-2567686153161211134561828214731016126483469'); -test( - macro, - '29', - '1234', - '39730991880495272432206471391877971807542673627957704904437675569298014672895070646102535214916047201597057604326381566232240717146352905189648219707403914660579022999012335291748319902460223265040313524900417222861808879210656981706108411235266301032093577572784389639719581120084786412413811442838338528471340965314240553665532845900842671741344271394471188943084404951380820901385463995110598814337441546368977234557474886215832235597884716646333931698424620615636355660537976497375196427830792301269566792792820200233670131878651690073642956396203530193828971438659013332283684624052196883142348635262157010483447752926525087705971032741588045925402251432696384942322183761498083408303101185212952621515583790502916056759732756688326445700770330618736098784570958650303610518453345373695638406312777059006873348441083653408306117070042611172352888144271588938812215283718988243964723451182501170569555882799635882695185231569905013697274942621016347442475467611094595589653640159813052986283489436916917813443702411392363491760078918071760360736064794346216924583036877713278321020682861527277057026346194702327617123158348328127954077761730411509703210527413729724018291740451232173623681566068132712321584183435235162559116277847790802991789615957113420980884848226115467550693444248836097094675037594634337127844160706154634179432597281415179294940602829040686835658254209377758530578171235783275715264069690583402743872874027236142735859680441203304209066670057316622505879861269271750030338720992453155828397426773289742123912597304182933866285890213055204261259697174309425441282464103760493735120470209861686631467978789655753554085703565573238818516254588594497513866508088253727621898347478665593386957598553232780662697618992458924510409036459946339696264729231292522628108751878543189439881', -); -test( - macro, - '-29', - '1234', - '39730991880495272432206471391877971807542673627957704904437675569298014672895070646102535214916047201597057604326381566232240717146352905189648219707403914660579022999012335291748319902460223265040313524900417222861808879210656981706108411235266301032093577572784389639719581120084786412413811442838338528471340965314240553665532845900842671741344271394471188943084404951380820901385463995110598814337441546368977234557474886215832235597884716646333931698424620615636355660537976497375196427830792301269566792792820200233670131878651690073642956396203530193828971438659013332283684624052196883142348635262157010483447752926525087705971032741588045925402251432696384942322183761498083408303101185212952621515583790502916056759732756688326445700770330618736098784570958650303610518453345373695638406312777059006873348441083653408306117070042611172352888144271588938812215283718988243964723451182501170569555882799635882695185231569905013697274942621016347442475467611094595589653640159813052986283489436916917813443702411392363491760078918071760360736064794346216924583036877713278321020682861527277057026346194702327617123158348328127954077761730411509703210527413729724018291740451232173623681566068132712321584183435235162559116277847790802991789615957113420980884848226115467550693444248836097094675037594634337127844160706154634179432597281415179294940602829040686835658254209377758530578171235783275715264069690583402743872874027236142735859680441203304209066670057316622505879861269271750030338720992453155828397426773289742123912597304182933866285890213055204261259697174309425441282464103760493735120470209861686631467978789655753554085703565573238818516254588594497513866508088253727621898347478665593386957598553232780662697618992458924510409036459946339696264729231292522628108751878543189439881', -); -test( - macro, - '29', - '5678', - '313207440313997908395360596779470167556524821354565066095934942813317027334851280816617044201242781788146681988256606728079031305742275517077538609509120818518756804198333905529512296693856744615547940344437655023604047387036912191665614525105764965628772142528903024079009603734878606031530632092694960209733041961976900299957401439942773853016980543659640387923110020096006907771085339532274479213069118590997912505738354256882132244489587891193436787796035297069548656015753468337910267383320384793478210922890393478684942943141047002641653826266029229940679855534185446029984642265309401937942618414456448051700283163409781590734858988186144878262850039132607214392219461954724509852981830436014103811121607636976310541241787952347172457061695467609228341593457389693092010216371829783365534416058276646629047941217000988603430079143125039335627916862701970337819367723342798417859182486827526226654222231668270437699336871914098038361896878124581202115603167581573365860844809754272768688324186177525910163640984471107241223997815556859746973062170016697071082852292553186973695195935555110865322841675967709255577273671862096739084719096018866542773915268182681924434693068974368743671856917344307823491424582073941774677763676838999012920849775131545807745557984609998089011839713971782596354276378462706118799367614933692723994860493006852617761691726490661973852484146025859542525994878650901900539984977032822503678380135265674374963780412402639819492697327642089488065515069103579821680270517245818991769253700477178501902173016760022083570625339617613196787508937132294439190707656675750593358777466252187024649444055524431976996354765962227578084126526998133034612602577472655126094054706811331042567986558208826619738372058912709936441330068785945557615305430573158660857083639685984708079449553432767371468432769763059815568294817006766150407711429524381443764353328649143392243030605175631903617241400590334520731552887905420357821333357323178558962729624695160152424150927961815517235178471668611411980527664098448189919626749630449729346413932330280051038124207698726994136053148704139757193993822565645450063014557144715444390692035805048906587820840149620974473539068602257213468282796698357998860905499646858875696140347697252404855916130979765736125939491404582947894766627011437008321826084551608917643552039692092641434023416721725802295946129541224330913037830711831897505727181643752070238124258716406913604326003886892777871785171083042338438822589466034333257513519074249290059508044387937515941195584536849935639306854418549865654614408061949225554166135582427881807182193783599601973694343161657685275975826632605401059697677450138694781053611138910985474876254987791226771601983926224950708128705207698446999762970868619741399138388955923671766834618892101519803294063152179901055619441840211468137457499243080615163211420407368571631248280853519881920654995329479197651873469046539891470723077610689204092925437192831324700740508382223044845331373899396944326854982107248264681927553073948403069191143379621931012158878080926767868489154472525785183112596722186693274842978659686633055410031307047971804940821454957589943688441766427442473419051396660930726551215776955035627059923619934434939234337389228818252138062651964023385907259716856875217332983206258542647956484144053376895677282058618726894075264893141459345095513971695129554583296521812210859456760034199169197708311366529261902786358093999101305450016786730606230292030206470077429240950433535818902863132927160089386510261064201968667301688946240130924904222733535811233377310709070575388538077218732749361385735781362671410241779765408330752886228016198747347816427191393767361118607002910804994498483946180719901059745498161376023303011413268091725633426377641439705607490836958493776666210760974330249691898146723384558621097993110200107834567985162015781903474771053336026970797082827405583984640152590311586996651130978390269635682523375227724690841049723350239062980077884498173472853922895986259449703557854615873912991492706834134188831223288072115285680543132659530562006474917573599463126164660175597089006340798638300090399758336562085930375566544725514749718150151542246563296277642802552407242105936832988106386539137183422418699327088241800890533010663176410353351158461215403413109833504713371583660146076296550323246201815389456172173706830863136468029781683216347313194402113678038893523681163091511426864300172115307127211628298548752944885599448207246119768819846726699639029352863512164216176446798914058117163239884649542915510529041947704391959354269079196393984501554075330930504966050842500838363928465487060306050596564952197235832052713931735782408102332284034120417772720870851192746545714460855294262457078632718061537234518630269810919269617488169257070620461029811140007937616623706165998602970962299178529667384281611711284607273114722670486790204254070817193833701660203086417276450859927068939525290399922358343072724298746965385101645299436440204421048958231664229609473978540663876261084401885358577081838088427532726342531219666349529588708676864620007863974417011281178486555297841836402783955736921273673850857042328354562375043956630762645678828277468596945482993393974109650561321318909283802349703359908590794955598686861188105172867117624073767884315818474218316939810928386473450140843666379789633933028157360991196643780492156331045116092963007359899178903786388658268081752185404862465975652717573346338903555552006181453313780938268351957198485656126588122587529425797721024874117272720122593011520181102165173778540109649069873683782560225421253727583520275185027823279197281638302017391265559931535066430315642407161670790778165873761260850453732642568406324331424811297605391958431678345086072195795316149924023369165664626175580036981425302726551623339910755431707540465223502996664989856176285277665969692278401436557276802735628722927403361765477884441622418274020615931280165006550295668823519197254154151454712027583777160043458631500373569552286186287576649460507457140013106316295491415062488184750166573300098842610352649548418028671322996383284580438817915912751328692636309346404265340559254967861755662343799686476963239624473583538068952690259757479187975773947646635862072773097932605011147309545946917745817618263320705384509256266597692822011258526575769901432671791899309866212784593294231039210384345017912165232281651766218511816118452245482765148462644057186723738724822065021604329606577441416459752329357653818884431934533205079171447937450753200091846699978761407348142216571160734786231176158036173395546313127825240933740557460405345687875822691395927735307954680584540631539852299093845143573101926536856436774094890716935644906531408882553968024236594348780230005657598271432594655727370741202306848716798905210887080943457274364437927441617729886063620378682180675795409711770720617214861995899802099720841503268275592791154447987570696376013830399865593021757490603503782606236297834983555381943082960053607082894098193433830439836836701596825459287327985068484765725312935435383570713001737353493414554745918732199428982288861916281925853870473235242613934578658466072097633829351396159739136586030233961937919001934510892835623188835150906662666684162280030518846926507260191259658152547057140996892575994838442450176092944932641609223450069710549113423096908693460705811017954646809219195537407087992070845823304506437379135120730335409827645953230507797899159560638526238733117928509820396840716609945419171886667127363308348835299399638934816341074966311440750045989538622932362121521488502205477949656543218950989955469235493902648629617578805931019123481068629850143880665080707955617337916811297483768702780290392503453278969467260654930304742159521939597380725090779572928293901161522955743015424778301780849024292067139437382979863134823284319627217588300337639449928419525514096794167112290463836322735157448121909387510372861759941692821797921023914852572773124758265866489263355698959718432102332876091323039261846105459189300877483349757964955202240267626882379975165911407692612296374563798585046788847367663183939085894084851302628081935576963248048370548543807192978291741302368501280165227638198366783808938518346282718195546770075506680849155238300453171855111852650642578666970792276185247457685538362574130361', -); -test( - macro, - '-29', - '5678', - '313207440313997908395360596779470167556524821354565066095934942813317027334851280816617044201242781788146681988256606728079031305742275517077538609509120818518756804198333905529512296693856744615547940344437655023604047387036912191665614525105764965628772142528903024079009603734878606031530632092694960209733041961976900299957401439942773853016980543659640387923110020096006907771085339532274479213069118590997912505738354256882132244489587891193436787796035297069548656015753468337910267383320384793478210922890393478684942943141047002641653826266029229940679855534185446029984642265309401937942618414456448051700283163409781590734858988186144878262850039132607214392219461954724509852981830436014103811121607636976310541241787952347172457061695467609228341593457389693092010216371829783365534416058276646629047941217000988603430079143125039335627916862701970337819367723342798417859182486827526226654222231668270437699336871914098038361896878124581202115603167581573365860844809754272768688324186177525910163640984471107241223997815556859746973062170016697071082852292553186973695195935555110865322841675967709255577273671862096739084719096018866542773915268182681924434693068974368743671856917344307823491424582073941774677763676838999012920849775131545807745557984609998089011839713971782596354276378462706118799367614933692723994860493006852617761691726490661973852484146025859542525994878650901900539984977032822503678380135265674374963780412402639819492697327642089488065515069103579821680270517245818991769253700477178501902173016760022083570625339617613196787508937132294439190707656675750593358777466252187024649444055524431976996354765962227578084126526998133034612602577472655126094054706811331042567986558208826619738372058912709936441330068785945557615305430573158660857083639685984708079449553432767371468432769763059815568294817006766150407711429524381443764353328649143392243030605175631903617241400590334520731552887905420357821333357323178558962729624695160152424150927961815517235178471668611411980527664098448189919626749630449729346413932330280051038124207698726994136053148704139757193993822565645450063014557144715444390692035805048906587820840149620974473539068602257213468282796698357998860905499646858875696140347697252404855916130979765736125939491404582947894766627011437008321826084551608917643552039692092641434023416721725802295946129541224330913037830711831897505727181643752070238124258716406913604326003886892777871785171083042338438822589466034333257513519074249290059508044387937515941195584536849935639306854418549865654614408061949225554166135582427881807182193783599601973694343161657685275975826632605401059697677450138694781053611138910985474876254987791226771601983926224950708128705207698446999762970868619741399138388955923671766834618892101519803294063152179901055619441840211468137457499243080615163211420407368571631248280853519881920654995329479197651873469046539891470723077610689204092925437192831324700740508382223044845331373899396944326854982107248264681927553073948403069191143379621931012158878080926767868489154472525785183112596722186693274842978659686633055410031307047971804940821454957589943688441766427442473419051396660930726551215776955035627059923619934434939234337389228818252138062651964023385907259716856875217332983206258542647956484144053376895677282058618726894075264893141459345095513971695129554583296521812210859456760034199169197708311366529261902786358093999101305450016786730606230292030206470077429240950433535818902863132927160089386510261064201968667301688946240130924904222733535811233377310709070575388538077218732749361385735781362671410241779765408330752886228016198747347816427191393767361118607002910804994498483946180719901059745498161376023303011413268091725633426377641439705607490836958493776666210760974330249691898146723384558621097993110200107834567985162015781903474771053336026970797082827405583984640152590311586996651130978390269635682523375227724690841049723350239062980077884498173472853922895986259449703557854615873912991492706834134188831223288072115285680543132659530562006474917573599463126164660175597089006340798638300090399758336562085930375566544725514749718150151542246563296277642802552407242105936832988106386539137183422418699327088241800890533010663176410353351158461215403413109833504713371583660146076296550323246201815389456172173706830863136468029781683216347313194402113678038893523681163091511426864300172115307127211628298548752944885599448207246119768819846726699639029352863512164216176446798914058117163239884649542915510529041947704391959354269079196393984501554075330930504966050842500838363928465487060306050596564952197235832052713931735782408102332284034120417772720870851192746545714460855294262457078632718061537234518630269810919269617488169257070620461029811140007937616623706165998602970962299178529667384281611711284607273114722670486790204254070817193833701660203086417276450859927068939525290399922358343072724298746965385101645299436440204421048958231664229609473978540663876261084401885358577081838088427532726342531219666349529588708676864620007863974417011281178486555297841836402783955736921273673850857042328354562375043956630762645678828277468596945482993393974109650561321318909283802349703359908590794955598686861188105172867117624073767884315818474218316939810928386473450140843666379789633933028157360991196643780492156331045116092963007359899178903786388658268081752185404862465975652717573346338903555552006181453313780938268351957198485656126588122587529425797721024874117272720122593011520181102165173778540109649069873683782560225421253727583520275185027823279197281638302017391265559931535066430315642407161670790778165873761260850453732642568406324331424811297605391958431678345086072195795316149924023369165664626175580036981425302726551623339910755431707540465223502996664989856176285277665969692278401436557276802735628722927403361765477884441622418274020615931280165006550295668823519197254154151454712027583777160043458631500373569552286186287576649460507457140013106316295491415062488184750166573300098842610352649548418028671322996383284580438817915912751328692636309346404265340559254967861755662343799686476963239624473583538068952690259757479187975773947646635862072773097932605011147309545946917745817618263320705384509256266597692822011258526575769901432671791899309866212784593294231039210384345017912165232281651766218511816118452245482765148462644057186723738724822065021604329606577441416459752329357653818884431934533205079171447937450753200091846699978761407348142216571160734786231176158036173395546313127825240933740557460405345687875822691395927735307954680584540631539852299093845143573101926536856436774094890716935644906531408882553968024236594348780230005657598271432594655727370741202306848716798905210887080943457274364437927441617729886063620378682180675795409711770720617214861995899802099720841503268275592791154447987570696376013830399865593021757490603503782606236297834983555381943082960053607082894098193433830439836836701596825459287327985068484765725312935435383570713001737353493414554745918732199428982288861916281925853870473235242613934578658466072097633829351396159739136586030233961937919001934510892835623188835150906662666684162280030518846926507260191259658152547057140996892575994838442450176092944932641609223450069710549113423096908693460705811017954646809219195537407087992070845823304506437379135120730335409827645953230507797899159560638526238733117928509820396840716609945419171886667127363308348835299399638934816341074966311440750045989538622932362121521488502205477949656543218950989955469235493902648629617578805931019123481068629850143880665080707955617337916811297483768702780290392503453278969467260654930304742159521939597380725090779572928293901161522955743015424778301780849024292067139437382979863134823284319627217588300337639449928419525514096794167112290463836322735157448121909387510372861759941692821797921023914852572773124758265866489263355698959718432102332876091323039261846105459189300877483349757964955202240267626882379975165911407692612296374563798585046788847367663183939085894084851302628081935576963248048370548543807192978291741302368501280165227638198366783808938518346282718195546770075506680849155238300453171855111852650642578666970792276185247457685538362574130361', -); -test(macro, '1234', '0', '1'); -test(macro, '-1234', '0', '1'); -test(macro, '1234', '1', '1234'); -test(macro, '-1234', '1', '-1234'); -test(macro, '1234', '3', '1879080904'); -test(macro, '-1234', '3', '-1879080904'); -test(macro, '1234', '7', '4357186184021382204544'); -test(macro, '-1234', '7', '-4357186184021382204544'); -test(macro, '1234', '9', '6634931404835663880262603264'); -test(macro, '-1234', '9', '-6634931404835663880262603264'); -test(macro, '1234', '11', '10103381606301936187653160695875584'); -test(macro, '-1234', '11', '-10103381606301936187653160695875584'); -test( - macro, - '1234', - '17', - '35674485208164146078917356926246803757746166219014144', -); -test( - macro, - '-1234', - '17', - '-35674485208164146078917356926246803757746166219014144', -); -test( - macro, - '1234', - '22', - '102078319882560292285132581626357595569664307813353093133708407341056', -); -test( - macro, - '-1234', - '22', - '102078319882560292285132581626357595569664307813353093133708407341056', -); -test( - macro, - '1234', - '24', - '155440374071087980438939349467025786799279742708630302687913279529037070336', -); -test( - macro, - '-1234', - '24', - '155440374071087980438939349467025786799279742708630302687913279529037070336', -); -test( - macro, - '1234', - '27', - '292085038627598162546736469597670733650101845477820437776597715171027672376482463744', -); -test( - macro, - '-1234', - '27', - '-292085038627598162546736469597670733650101845477820437776597715171027672376482463744', -); -test( - macro, - '1234', - '29', - '444774245080406867607018239498670695690094485812423938546940830362973414277322930560958464', -); -test( - macro, - '-1234', - '29', - '-444774245080406867607018239498670695690094485812423938546940830362973414277322930560958464', -); -test( - macro, - '1234', - '1234', - '48184467781382543701667186039468406661059770237590274727670474872867568934066212120125133953550629961484891523453397766904292741725027019645437267985042784717562212455213265145073576158446772320656790521515384533153285495122560467130551068937365382642309092956110550380937116582823950116105467284919886128590021120491211422848352480419801389040432671756358444906225483817656922238136306002774235317628882806945193646888148396110892049431698226720231373322565553173892155104287328274243305595665720786784052656812367125148945799485499060066329553808509237311004983159894774937428752149540862686417306258598574741354798734543908917749037010338607293558391168741173229347205324015819180886782731783732875096308025479318621477536729557178851277749719374746640105570680704597488214460168162719035143192317718562628271959732323123847141889566569180545843169342410738692059982444746465750802950208574020617939255322870389259522352007286309084437654560750826135123276437360339867137662914521505757477954199067061537563338324827971696801982963501680500285473348151566773437596060788388816834765832275133438433921225741018069257650081651893412763515411183995641907421720698187041665296617342826301233824768831086783439617690340317902242011073693697825044232174730876417203502412742085342749470261962000902738749779130464597185957223365845266728739264096596554562810900489160285087089151363421121896616575007056439552166409310603897415780357105218172824045265515881762471530724320743935876223471758489130857861949736325801719247163392163145092104862730777665632878101469684676983177748845758819134783307275384116307332565581471205450219638137864387568253396048525319846029722597087368081615296780675739066314774724547006391416740049175425483980982557830287877118477623151223431159832554386188341940675670910313367805899112248803570997473057794418174867654496284922646065073429519234590181376956226715629044946363751414558194273837719521633486883608951520130473135848525228767697904589545099613408858934772678955107374792767376297292404355699412788887158297703071562694349633862471115563026643188726923335031942038276485070702440112289573556176109970627523424440589934713944485023114357294128614721641112627517540349238220184422744440362721622786094864017694819354467741507712876404983391152695521440373975295468154208059821687654408426427370963930322531227395895396783921477437273314199002421808939747302217153865116186806351980760710239964563379901328372415061933640351961853616394184876278706277214297206989695471340253866298118966493903627998818702216683968716037963198654625001668768390791943686432733286824675468274040171973201059002888713965690564527215419345100503188258777506372065686193271207542007415422109631813074486204833751677472525228744950194297089998305021078379670692156515896561318156670094486647187285361909788624195866103332184213842805429511053631902833667630273693526699848894312061513323511126288640008264849029913769883352116160378319937025276742846457501369721989078408607355941517261584972558483819760496804231338012065441081939772196754109683768808242484290927174759258520839532703010720373548957783991479615682174614219692539567777715560109326389875468292301222743028820913581258063284673412787274389056140124677069653486630962880192937633527058165237839406307326482619493415666561288774929091975803346338652727476500670928651812154306332363280019281880148780695662032811060669099701522746512853264775139655489705043573689252437465482977809592752059272522878781208311791893662451561020284928906469358115442883064671084339186725298116883304622860824362268174217031187839248915211550033719913619980315078125050194505282396757349145204835262063407488072671571413182055277457862261818131387963934879102237121895980689553963436483304289698371277085427432858554859126640569432899045006806292448711540736', -); -test( - macro, - '-1234', - '1234', - '48184467781382543701667186039468406661059770237590274727670474872867568934066212120125133953550629961484891523453397766904292741725027019645437267985042784717562212455213265145073576158446772320656790521515384533153285495122560467130551068937365382642309092956110550380937116582823950116105467284919886128590021120491211422848352480419801389040432671756358444906225483817656922238136306002774235317628882806945193646888148396110892049431698226720231373322565553173892155104287328274243305595665720786784052656812367125148945799485499060066329553808509237311004983159894774937428752149540862686417306258598574741354798734543908917749037010338607293558391168741173229347205324015819180886782731783732875096308025479318621477536729557178851277749719374746640105570680704597488214460168162719035143192317718562628271959732323123847141889566569180545843169342410738692059982444746465750802950208574020617939255322870389259522352007286309084437654560750826135123276437360339867137662914521505757477954199067061537563338324827971696801982963501680500285473348151566773437596060788388816834765832275133438433921225741018069257650081651893412763515411183995641907421720698187041665296617342826301233824768831086783439617690340317902242011073693697825044232174730876417203502412742085342749470261962000902738749779130464597185957223365845266728739264096596554562810900489160285087089151363421121896616575007056439552166409310603897415780357105218172824045265515881762471530724320743935876223471758489130857861949736325801719247163392163145092104862730777665632878101469684676983177748845758819134783307275384116307332565581471205450219638137864387568253396048525319846029722597087368081615296780675739066314774724547006391416740049175425483980982557830287877118477623151223431159832554386188341940675670910313367805899112248803570997473057794418174867654496284922646065073429519234590181376956226715629044946363751414558194273837719521633486883608951520130473135848525228767697904589545099613408858934772678955107374792767376297292404355699412788887158297703071562694349633862471115563026643188726923335031942038276485070702440112289573556176109970627523424440589934713944485023114357294128614721641112627517540349238220184422744440362721622786094864017694819354467741507712876404983391152695521440373975295468154208059821687654408426427370963930322531227395895396783921477437273314199002421808939747302217153865116186806351980760710239964563379901328372415061933640351961853616394184876278706277214297206989695471340253866298118966493903627998818702216683968716037963198654625001668768390791943686432733286824675468274040171973201059002888713965690564527215419345100503188258777506372065686193271207542007415422109631813074486204833751677472525228744950194297089998305021078379670692156515896561318156670094486647187285361909788624195866103332184213842805429511053631902833667630273693526699848894312061513323511126288640008264849029913769883352116160378319937025276742846457501369721989078408607355941517261584972558483819760496804231338012065441081939772196754109683768808242484290927174759258520839532703010720373548957783991479615682174614219692539567777715560109326389875468292301222743028820913581258063284673412787274389056140124677069653486630962880192937633527058165237839406307326482619493415666561288774929091975803346338652727476500670928651812154306332363280019281880148780695662032811060669099701522746512853264775139655489705043573689252437465482977809592752059272522878781208311791893662451561020284928906469358115442883064671084339186725298116883304622860824362268174217031187839248915211550033719913619980315078125050194505282396757349145204835262063407488072671571413182055277457862261818131387963934879102237121895980689553963436483304289698371277085427432858554859126640569432899045006806292448711540736', -); -test( - macro, - '1234', - '5678', - '307239295662090741644584872593956173493568238595074141254349565406661439636598896798876823220904084953233015553994854875890890858118656468658643918169805277399402542281777901029346337707622181574346585989613344285010764501017625366742865066948856161360224801370482171458030533346309750557140549621313515752078638620714732831815297168231790779296290266207315344008883935010274044001522606235576584215999260117523114297033944018699691024106823438431754073086813382242140602291215149759520833200152654884259619588924545324597336231254738156229165754184379098279299262049527493981418773939710052567148397520139396664287825920245602806281465369440795094171273883323944551402505328195835875189714803373532518976612644335221127924375262338025026738810109229789066895210195233568313781368494583937688244974433119626632798061718807757570369881396496330922521092429743441101260124582034961693322001051820700723840579394700173377538808676217188816149219248363818340764914694139680749024310479827367842428590981843277277511673125624678580926604235648781819510534399854187957358228934011534030807453365221505448908659560252635131850623331246397555109848508339190181937347601723206430770586417066983949247170768203919583900239303725667699002878222006139705975234985123135091187455708833574958129058095463081654382235387683423032727818984044935970076132966529729332219803725615665380149260841248646307744074852263644971412954286319498473825976906290726980643387278999438899482000949753370477834589869715954340896670602062189642115067712194143619891104758054603148185422879681279323731504130318089025303464892133142814050831321280869931356176562021125636637696428931550149163626111706971094926279122079036473959349398647207563958880810847203107558693382581247719368450328373491128928043528764468838481015835481857925222963292893497064677790987715608519992573590320785069213807044062645935102241563318077900517348913659692426362075079090302084558791018063653522660752511850417737787810507118607660015778345736185544774065149632138946958208872078504737965494929224554757212817739013665074197553518364007019034099233743417376008297034225146702810718547331679637811882447383064783027200681712046322391430903630967737127735630322507937735245138690231556762427184206415939967664528096214944050443838234089893942372249310965891033124439206439457942974559079093400885882410032029710828368112382759140589323805553285532286914003552846853057576991775275570301997344165769850233881907361264015895890818849669805891907459800581990812691006812626374363578450984335517894357744829092787395926839000023962733949335231397395401479346911188305001193928601270290423808867456174087663596893004075220125591262058242530195664451642127872992040342213830892225801497136162152126452814636821372850336677985479349893600592592681158187543928904613001813023098258056853626951063105305617338502819189272263288481301255674961962172018025892490871747497521613169302263447945299308964856799345744118753448948756633623000928292271644274476514153318916142897646572809647150502567312733052336669846353667317222010832483097294019925495696183147173179102497732276927446687768280599040464245101520966166706822935112404086619669510798582900981432655281831317374774621351894425270900215984721126295035504324174185149268696653681359521661246230845622880397944668142537238039679575235700048519280449389874038813948425385923473788921228513953652472377934540266323863335829226613711924193402576311531059727276108808010971355782749309158823047978491790920875069292996040857512538729285177101496567684459641487139689410758137498167987281056377030844965856298252042132686609411400751350979919962404101477738095442835101123059316328509676953867455359567416099259739884548059992245862006247543500012335979063372087713854337763356772298485634443508377176714285187750207610971059830770832297524782702349430113067885720680406382750054789965311761788658021072821754255217642242163558086741759388374052688951876547395076883774495970922489499563244338874847247075560546870915783578293537186883556120656238250632036990110926238158152815482271306910080137344309034132272734875502201244632205163102423192286940171017158243227969637526316846974981084420356508830681480947885917792995548959521169789814827379240290484939291595796335808304369249825132694371154995629020348448070937697459457310658016390510669950232202117026949332446206032626619437018409520774627547364298492663317409090888105284856231403203264042680650088950260251993214047720274157347392106720550579972688296788335711267163348525040618144978956911125218083835003018934447595528171992681871934696456852699493142208475082155078613935820598046951404164272965056793854322831971808425855979818512937009767860333913142708117420468535706707338985116178601074119960157589096146389334345593090791448497569418129926045664495907334153337589635221974568810352681900639590387377238660034950767943219972827486077231842758760058663109292511409668322244689754266200746246009494113605844291527613997239500108446722588067983522129703414514679248433646988350542223586243640715804222865695841503336942447435284973707708738401917434544559678813875897734731101993564026733107673289113791026266802347607067756870070049091879278550780571887185814708537343643120109716176863158267452564359772918848474831928740035479988942851917286977981468213676371170376581599421687421157192621766056282635455502745345422134109463656273257647493243595299386340007285458064661281500227780615582329762847666128912270287127702011512298795737439109946753443411265222017119479062242748224835713889637406840422012428195129047091229247913611585459076419478870311555089949116202363154707599047680183367431508170042693609348631935300963606524001909354481256448016576044636672552024793800896987328626909995732430432770110962492541560005764748146851044781232535045697298013876874942199766539748522749578575930121320360075106502263951925603758744064725542088121966571973151956517962196033756616574064204240308736083289250933661070517861933607033805383794022932833914403046538303160864479381724650667684378003267241939785566603437594388219429227245319361052082720101153688737108636181648544729232365745223735571958927805431626874954284337872776726226192776223809114300468574608813958523118548177886092362889284408683605828714504550636413269626117352112283711190743705957538771405106257296054814739841947086172415476929232773599749549247112194345575894505210361533349007732728515354190634197202883617455807662715540116552260765510850657135720244190956869964668147050309837395659245843733132747750125006720855350386404222102322699685624358041394671351793225094747979930897598627334206296992066864002770865189677622663536544862088852637370423181596293505045491829198840304769603782293214203771365262426835626638710332592520084894203380483205318574229509791732093263658924554481129110023771559358840259857767832130838951986420641743231157549206628101961335770935217869188598407871879846953788231452559357515703225887372560571514246425295258565332871227501930345253728333861399415882260461345687393410071890081321210957633577414930430621476910640788200315263505324920812865141791848583320684391090487087855177019341942297833034669241769410159832097007619834572197457123843735128138967329683027440008185533782920736485842481620240819664388691386839924189266798055808795241509113657623950370311771062440917977857478832595327568508967705426889618627733979628180362261623944529557924325588829972626926001856116218149641848931627611856095681608502049604728694373866998800873793794833475389120231569350898916749652696861495083269053509194449587614725554391245026950041678221421784696915639893978008988115974628714547147103468130211269397474452407156217137857585748699660585669149692200183240671446131671973589521765207492540448301776208106269303417635729945209531363305026742848137813838295036147383212196832126162865335463466561361409672786144491545547877231568077479720810911371970039908454207555969974929024330604715947635120890002757270394372957682905595391676060862365861775640550248935336685083103867570594614396930935612590413493959149016850970545876096218158891338146114924706065887199224191578080834101491435941396082107871178120691839003211534425918642587315041952198269461336583739132022883309457097019209940833906282314924551936086693600235902374507567167637535381913303859494521404821158954494161315238799966252882039753927801125656757563231893176983091324850782220479663033201458404864019043728888446967709975804533406561597647307666736915858037493602438470123931843180216995263782074288168270696306819344125131703913727531436787169764181060443128826914028449143343870445556915243291006445590059689543641135357147336450120418996865830009910043524732386950657567959305789673308988840460874020981183065604588157684942510453265370111980067359260650568119370610380556946353747266717913608784026798916527135355036629347450939565819904625935450373503394875228925517167402287702922664490685223930566127022783241602405058913218083039094404066037147525985595082542486481669033554440669209239655726473710598417289863187780615394059781396829068192614265298593097207267823436957283409373106070373278544263878956713757687019674587981457190254278514279204605546359474410508605834050747211850883484821202442476380159869647953907610229592310303134114435748409130185991653212644798150231313091123308159964059871142740195724462392875247410611671330900705772528157325261686884901444831627452426862521432079108938454589234625663627219874064683315753735830472270203230291590088379095823378190821206228778033950009778463074754597422953197657206227154124599901813786834672435550297250999713209514657587197026419042487591887319632167337140620411177338653361805100343525050955261127436206126342162794160499514973561746207894282310244084464331015046184437092252547644317599059469495339372219011274409057478305874498858052105032898790647318808541273973307143643618340481044516933353419712178803129533334912992701719925571602601231239966045848260929819259463725272466267039934723526708966021692828547630900867908313425791675877136094296969834925611943928639082538263478045795468797884085508436740105548477287495851150076743539940855079782006029276242181215199960474633917064701868986279575047584875782888121629159833482729108471411086004777222004940690886933449751160053486753465048382468022710892618307193393528079008752243904763586506319110138528885232166270184875496667758544101338512476188537568996993043100897750547345490436292741108436750920835304292808262544944670065385074720714585256100047460364718010959212394917302809571145040577796350681992159274957618160496935869534857889595670144103693696724808909241541937251046834703005546264200526980116401703872577549517787709928581009929724799949713171016514146509097812026583336780509096196442473618165553854996468315728059606232406325692644298205678901764327286910778328167615148282802913180962943257625623528207208823616122188000672048377973388690302368144655729681461875178487994418224929756029694157916324380087380717263548515509059805890429224503660512145778492057781022321319300741401538410679063054050314878059794599008988939481984403757789776259194385861548907079786218989999985501502512699493693947825897304013412779728462320145418134117202642305220024682824144269946547059866645346290129336922393759141046965787439826153450256825134094790929592783588398691272222187792943672971006484184098016720992986997067386737093941669105468352548563143947335409769120498804286178739726148574102071841252232146176236358066633649877671588502174880747910470620226875718620591588580632465728693537756687445252996484012749560906868590019478473487675167061165693342982827540412207944219805698909631680447518841794973864110724383885552977456485490355687570208317569412914524579582528443585244963004875806464317485086354268522391292873764104739225726087924762553552795782491218068168781724170435932899368215004200480636159439699787658534222744609009579495632497983889807333784591846944280527939629108316893490033323187019394767254142325425613836459619989619263579911717847411193199852084628049271525546800786030737052994542939990268948285213669034871808549614119094067473581277599609496762960972260689628137112032360486445234598511199684675881816677322350072503071116878677854198807513803028345384041193976936949595607619772723094339732775857366188394242237888454133005692229522627059021766683056379166328758643074034651477088295526779481972642314260481913656849908998775026037593896126509468805024130879738114831726507455996318751711242257525370629800182960054820056459299031313033178639379789867248052191948564791284306277912200831531132727252848046975079274107604207422180790180674442083634545051718378749397382615541422595171094449620979551195843771863108274520677010097230731862345300468517668904946393480947243124651839763143567511692669685031233831621389557659840710993215211263285069063398339503947184997161094083083053877736678929654970511831662984737433141151838605212887047272029235859200632246127971440751906726106283042958810473062871828212882679956627599162978008334087215417428566328627933710537352061688382898427732919052252532626559528549194113550832651182056923950487564696393200874225189927497353864238597667828879046351719309006631247078157959316594673705629051666057170908233857157705536358758178001948093811831452532180297259924653826868431583529081443915403274901333012849380463102430959626058209184844395226752980898545128507931317338496625907256515055513251369817237050215214244175173206043376003288561848566594665578019149404316779573795236831759132895146984523319002050235985934121956160952246405830116891841948253796487984299917640127262665004204345083559607575220761423930983654019621896859885405207293374556775708780952649634706639743293665862226821403434927000882776959081749622346161275243116822118898574420383467793130210766019125911546825496631056718811589200078195809534266736568373586977485098744359972146470201537305238751109316700591533775648459300115999077864969027102697762222355198344795959353792485217583990345381206371761414421010734536687579132581669308016312802515063088351170568135725500656192906416429028050777241979163318996341855526467788527253070038318737475135130442244262535653432939984902783154351748576002192512489655923703793418069024108798838849972906445094342850419486037552044967029146488792384693648586002550767915684072869316718751724643267161008346373705744182753875744727023321494376965078987015632054807290667808424067931728833093486771961815346826309828195559704978447323474359127908437922549870919735027220283560010130504849534025889434952608766951053099462066403239613829870069506759073794934606255061208438993717700947178902855875926936475717036748410034341552469899952887639559618260694386489180172457011104588203088631135975270713663097698949066683649938633016773410320323447393245620649077170739933817132023640554516055821080347587299514517344103913434724274570905671411870152447633630020794116729196035297166502202283173704040564353623362060624602105914889095359863566586252963824184113069544184070392139803990488178637780619106269997462589919674956410553073119659130443817291726973054433812614236377566385896766193436531715868492078679787049921607831256548591420181144337005624829883308079609829281702933920044150724362349082932337529275183555550759563264061342114344076379295287668872881144842678541568323866396895644823948668725645603165802387345638352049954163004283115082448016533419466854214433863370929972934845362307106230764527411697357427260580526749886925414604386144800887890455404447490586471146843968438319402848710992027349479404509054156265030858599686233771999636756519543362055535931234102657321710620159992369968135582404861074012859908357457643934719496361092731946805880148347648955726838411743124285700361371263752582259872541407572187701536397820799177145606117943127447314468934127745737896295536031841708107999973631172074267987053572743091086520751474818610389107050882688611509676523391949612687262723024304567914249177164676175113427118894827540124754596538131148662139737659987591987808710366016209270335796976639603952589746825309966421820623559980254684651585816259754646896675329322398127468234562575355911037292681588630747026794408719412044361738934185088651798053979414290523336289393920442009235066258188884117507158747732520164728032543870564722222274127742468776838751533544621992260989073383290925600190934951597609650422144836431238624232246140925645252235224277512965625723103788058599484029459545200287204461143877805380501018130152779707416171004132419255619937668896930949220825217150414062456758348613847169640357557332484328139934101922784000250937441082915494248269026918650402924769009110291437748448952763518164181850168552758762497110615089698420229504724702503938309581244539522277495404978052342540570967136271030627694122107443462213646337183623126971012986781309482020707420593863632485843384964535477343527400908627484307719882317043393718378810857723613256421901261434759064975382278747543366226417959638731591323673527823550282181039009870490445320706815835382713226494596508647261636899500195110884870850525896617885714025707410504066312830152850302561635092619333567203579066303154655776839525470585505379545233565628470526466798193127760716376850644169280567548816813902508183547962830998308876094664913115567444899888066294586537615803720457816111393232094487429956726714915349898077589609929473981536895559767177568911357519231394434393732467776362068275102582907448002180170709026284212375295627830371543656788608582913633102101052379592812704964682084931076096', -); -test( - macro, - '-1234', - '5678', - '307239295662090741644584872593956173493568238595074141254349565406661439636598896798876823220904084953233015553994854875890890858118656468658643918169805277399402542281777901029346337707622181574346585989613344285010764501017625366742865066948856161360224801370482171458030533346309750557140549621313515752078638620714732831815297168231790779296290266207315344008883935010274044001522606235576584215999260117523114297033944018699691024106823438431754073086813382242140602291215149759520833200152654884259619588924545324597336231254738156229165754184379098279299262049527493981418773939710052567148397520139396664287825920245602806281465369440795094171273883323944551402505328195835875189714803373532518976612644335221127924375262338025026738810109229789066895210195233568313781368494583937688244974433119626632798061718807757570369881396496330922521092429743441101260124582034961693322001051820700723840579394700173377538808676217188816149219248363818340764914694139680749024310479827367842428590981843277277511673125624678580926604235648781819510534399854187957358228934011534030807453365221505448908659560252635131850623331246397555109848508339190181937347601723206430770586417066983949247170768203919583900239303725667699002878222006139705975234985123135091187455708833574958129058095463081654382235387683423032727818984044935970076132966529729332219803725615665380149260841248646307744074852263644971412954286319498473825976906290726980643387278999438899482000949753370477834589869715954340896670602062189642115067712194143619891104758054603148185422879681279323731504130318089025303464892133142814050831321280869931356176562021125636637696428931550149163626111706971094926279122079036473959349398647207563958880810847203107558693382581247719368450328373491128928043528764468838481015835481857925222963292893497064677790987715608519992573590320785069213807044062645935102241563318077900517348913659692426362075079090302084558791018063653522660752511850417737787810507118607660015778345736185544774065149632138946958208872078504737965494929224554757212817739013665074197553518364007019034099233743417376008297034225146702810718547331679637811882447383064783027200681712046322391430903630967737127735630322507937735245138690231556762427184206415939967664528096214944050443838234089893942372249310965891033124439206439457942974559079093400885882410032029710828368112382759140589323805553285532286914003552846853057576991775275570301997344165769850233881907361264015895890818849669805891907459800581990812691006812626374363578450984335517894357744829092787395926839000023962733949335231397395401479346911188305001193928601270290423808867456174087663596893004075220125591262058242530195664451642127872992040342213830892225801497136162152126452814636821372850336677985479349893600592592681158187543928904613001813023098258056853626951063105305617338502819189272263288481301255674961962172018025892490871747497521613169302263447945299308964856799345744118753448948756633623000928292271644274476514153318916142897646572809647150502567312733052336669846353667317222010832483097294019925495696183147173179102497732276927446687768280599040464245101520966166706822935112404086619669510798582900981432655281831317374774621351894425270900215984721126295035504324174185149268696653681359521661246230845622880397944668142537238039679575235700048519280449389874038813948425385923473788921228513953652472377934540266323863335829226613711924193402576311531059727276108808010971355782749309158823047978491790920875069292996040857512538729285177101496567684459641487139689410758137498167987281056377030844965856298252042132686609411400751350979919962404101477738095442835101123059316328509676953867455359567416099259739884548059992245862006247543500012335979063372087713854337763356772298485634443508377176714285187750207610971059830770832297524782702349430113067885720680406382750054789965311761788658021072821754255217642242163558086741759388374052688951876547395076883774495970922489499563244338874847247075560546870915783578293537186883556120656238250632036990110926238158152815482271306910080137344309034132272734875502201244632205163102423192286940171017158243227969637526316846974981084420356508830681480947885917792995548959521169789814827379240290484939291595796335808304369249825132694371154995629020348448070937697459457310658016390510669950232202117026949332446206032626619437018409520774627547364298492663317409090888105284856231403203264042680650088950260251993214047720274157347392106720550579972688296788335711267163348525040618144978956911125218083835003018934447595528171992681871934696456852699493142208475082155078613935820598046951404164272965056793854322831971808425855979818512937009767860333913142708117420468535706707338985116178601074119960157589096146389334345593090791448497569418129926045664495907334153337589635221974568810352681900639590387377238660034950767943219972827486077231842758760058663109292511409668322244689754266200746246009494113605844291527613997239500108446722588067983522129703414514679248433646988350542223586243640715804222865695841503336942447435284973707708738401917434544559678813875897734731101993564026733107673289113791026266802347607067756870070049091879278550780571887185814708537343643120109716176863158267452564359772918848474831928740035479988942851917286977981468213676371170376581599421687421157192621766056282635455502745345422134109463656273257647493243595299386340007285458064661281500227780615582329762847666128912270287127702011512298795737439109946753443411265222017119479062242748224835713889637406840422012428195129047091229247913611585459076419478870311555089949116202363154707599047680183367431508170042693609348631935300963606524001909354481256448016576044636672552024793800896987328626909995732430432770110962492541560005764748146851044781232535045697298013876874942199766539748522749578575930121320360075106502263951925603758744064725542088121966571973151956517962196033756616574064204240308736083289250933661070517861933607033805383794022932833914403046538303160864479381724650667684378003267241939785566603437594388219429227245319361052082720101153688737108636181648544729232365745223735571958927805431626874954284337872776726226192776223809114300468574608813958523118548177886092362889284408683605828714504550636413269626117352112283711190743705957538771405106257296054814739841947086172415476929232773599749549247112194345575894505210361533349007732728515354190634197202883617455807662715540116552260765510850657135720244190956869964668147050309837395659245843733132747750125006720855350386404222102322699685624358041394671351793225094747979930897598627334206296992066864002770865189677622663536544862088852637370423181596293505045491829198840304769603782293214203771365262426835626638710332592520084894203380483205318574229509791732093263658924554481129110023771559358840259857767832130838951986420641743231157549206628101961335770935217869188598407871879846953788231452559357515703225887372560571514246425295258565332871227501930345253728333861399415882260461345687393410071890081321210957633577414930430621476910640788200315263505324920812865141791848583320684391090487087855177019341942297833034669241769410159832097007619834572197457123843735128138967329683027440008185533782920736485842481620240819664388691386839924189266798055808795241509113657623950370311771062440917977857478832595327568508967705426889618627733979628180362261623944529557924325588829972626926001856116218149641848931627611856095681608502049604728694373866998800873793794833475389120231569350898916749652696861495083269053509194449587614725554391245026950041678221421784696915639893978008988115974628714547147103468130211269397474452407156217137857585748699660585669149692200183240671446131671973589521765207492540448301776208106269303417635729945209531363305026742848137813838295036147383212196832126162865335463466561361409672786144491545547877231568077479720810911371970039908454207555969974929024330604715947635120890002757270394372957682905595391676060862365861775640550248935336685083103867570594614396930935612590413493959149016850970545876096218158891338146114924706065887199224191578080834101491435941396082107871178120691839003211534425918642587315041952198269461336583739132022883309457097019209940833906282314924551936086693600235902374507567167637535381913303859494521404821158954494161315238799966252882039753927801125656757563231893176983091324850782220479663033201458404864019043728888446967709975804533406561597647307666736915858037493602438470123931843180216995263782074288168270696306819344125131703913727531436787169764181060443128826914028449143343870445556915243291006445590059689543641135357147336450120418996865830009910043524732386950657567959305789673308988840460874020981183065604588157684942510453265370111980067359260650568119370610380556946353747266717913608784026798916527135355036629347450939565819904625935450373503394875228925517167402287702922664490685223930566127022783241602405058913218083039094404066037147525985595082542486481669033554440669209239655726473710598417289863187780615394059781396829068192614265298593097207267823436957283409373106070373278544263878956713757687019674587981457190254278514279204605546359474410508605834050747211850883484821202442476380159869647953907610229592310303134114435748409130185991653212644798150231313091123308159964059871142740195724462392875247410611671330900705772528157325261686884901444831627452426862521432079108938454589234625663627219874064683315753735830472270203230291590088379095823378190821206228778033950009778463074754597422953197657206227154124599901813786834672435550297250999713209514657587197026419042487591887319632167337140620411177338653361805100343525050955261127436206126342162794160499514973561746207894282310244084464331015046184437092252547644317599059469495339372219011274409057478305874498858052105032898790647318808541273973307143643618340481044516933353419712178803129533334912992701719925571602601231239966045848260929819259463725272466267039934723526708966021692828547630900867908313425791675877136094296969834925611943928639082538263478045795468797884085508436740105548477287495851150076743539940855079782006029276242181215199960474633917064701868986279575047584875782888121629159833482729108471411086004777222004940690886933449751160053486753465048382468022710892618307193393528079008752243904763586506319110138528885232166270184875496667758544101338512476188537568996993043100897750547345490436292741108436750920835304292808262544944670065385074720714585256100047460364718010959212394917302809571145040577796350681992159274957618160496935869534857889595670144103693696724808909241541937251046834703005546264200526980116401703872577549517787709928581009929724799949713171016514146509097812026583336780509096196442473618165553854996468315728059606232406325692644298205678901764327286910778328167615148282802913180962943257625623528207208823616122188000672048377973388690302368144655729681461875178487994418224929756029694157916324380087380717263548515509059805890429224503660512145778492057781022321319300741401538410679063054050314878059794599008988939481984403757789776259194385861548907079786218989999985501502512699493693947825897304013412779728462320145418134117202642305220024682824144269946547059866645346290129336922393759141046965787439826153450256825134094790929592783588398691272222187792943672971006484184098016720992986997067386737093941669105468352548563143947335409769120498804286178739726148574102071841252232146176236358066633649877671588502174880747910470620226875718620591588580632465728693537756687445252996484012749560906868590019478473487675167061165693342982827540412207944219805698909631680447518841794973864110724383885552977456485490355687570208317569412914524579582528443585244963004875806464317485086354268522391292873764104739225726087924762553552795782491218068168781724170435932899368215004200480636159439699787658534222744609009579495632497983889807333784591846944280527939629108316893490033323187019394767254142325425613836459619989619263579911717847411193199852084628049271525546800786030737052994542939990268948285213669034871808549614119094067473581277599609496762960972260689628137112032360486445234598511199684675881816677322350072503071116878677854198807513803028345384041193976936949595607619772723094339732775857366188394242237888454133005692229522627059021766683056379166328758643074034651477088295526779481972642314260481913656849908998775026037593896126509468805024130879738114831726507455996318751711242257525370629800182960054820056459299031313033178639379789867248052191948564791284306277912200831531132727252848046975079274107604207422180790180674442083634545051718378749397382615541422595171094449620979551195843771863108274520677010097230731862345300468517668904946393480947243124651839763143567511692669685031233831621389557659840710993215211263285069063398339503947184997161094083083053877736678929654970511831662984737433141151838605212887047272029235859200632246127971440751906726106283042958810473062871828212882679956627599162978008334087215417428566328627933710537352061688382898427732919052252532626559528549194113550832651182056923950487564696393200874225189927497353864238597667828879046351719309006631247078157959316594673705629051666057170908233857157705536358758178001948093811831452532180297259924653826868431583529081443915403274901333012849380463102430959626058209184844395226752980898545128507931317338496625907256515055513251369817237050215214244175173206043376003288561848566594665578019149404316779573795236831759132895146984523319002050235985934121956160952246405830116891841948253796487984299917640127262665004204345083559607575220761423930983654019621896859885405207293374556775708780952649634706639743293665862226821403434927000882776959081749622346161275243116822118898574420383467793130210766019125911546825496631056718811589200078195809534266736568373586977485098744359972146470201537305238751109316700591533775648459300115999077864969027102697762222355198344795959353792485217583990345381206371761414421010734536687579132581669308016312802515063088351170568135725500656192906416429028050777241979163318996341855526467788527253070038318737475135130442244262535653432939984902783154351748576002192512489655923703793418069024108798838849972906445094342850419486037552044967029146488792384693648586002550767915684072869316718751724643267161008346373705744182753875744727023321494376965078987015632054807290667808424067931728833093486771961815346826309828195559704978447323474359127908437922549870919735027220283560010130504849534025889434952608766951053099462066403239613829870069506759073794934606255061208438993717700947178902855875926936475717036748410034341552469899952887639559618260694386489180172457011104588203088631135975270713663097698949066683649938633016773410320323447393245620649077170739933817132023640554516055821080347587299514517344103913434724274570905671411870152447633630020794116729196035297166502202283173704040564353623362060624602105914889095359863566586252963824184113069544184070392139803990488178637780619106269997462589919674956410553073119659130443817291726973054433812614236377566385896766193436531715868492078679787049921607831256548591420181144337005624829883308079609829281702933920044150724362349082932337529275183555550759563264061342114344076379295287668872881144842678541568323866396895644823948668725645603165802387345638352049954163004283115082448016533419466854214433863370929972934845362307106230764527411697357427260580526749886925414604386144800887890455404447490586471146843968438319402848710992027349479404509054156265030858599686233771999636756519543362055535931234102657321710620159992369968135582404861074012859908357457643934719496361092731946805880148347648955726838411743124285700361371263752582259872541407572187701536397820799177145606117943127447314468934127745737896295536031841708107999973631172074267987053572743091086520751474818610389107050882688611509676523391949612687262723024304567914249177164676175113427118894827540124754596538131148662139737659987591987808710366016209270335796976639603952589746825309966421820623559980254684651585816259754646896675329322398127468234562575355911037292681588630747026794408719412044361738934185088651798053979414290523336289393920442009235066258188884117507158747732520164728032543870564722222274127742468776838751533544621992260989073383290925600190934951597609650422144836431238624232246140925645252235224277512965625723103788058599484029459545200287204461143877805380501018130152779707416171004132419255619937668896930949220825217150414062456758348613847169640357557332484328139934101922784000250937441082915494248269026918650402924769009110291437748448952763518164181850168552758762497110615089698420229504724702503938309581244539522277495404978052342540570967136271030627694122107443462213646337183623126971012986781309482020707420593863632485843384964535477343527400908627484307719882317043393718378810857723613256421901261434759064975382278747543366226417959638731591323673527823550282181039009870490445320706815835382713226494596508647261636899500195110884870850525896617885714025707410504066312830152850302561635092619333567203579066303154655776839525470585505379545233565628470526466798193127760716376850644169280567548816813902508183547962830998308876094664913115567444899888066294586537615803720457816111393232094487429956726714915349898077589609929473981536895559767177568911357519231394434393732467776362068275102582907448002180170709026284212375295627830371543656788608582913633102101052379592812704964682084931076096', -); -test(macro, '5678', '0', '1'); -test(macro, '-5678', '0', '1'); -test(macro, '5678', '1', '5678'); -test(macro, '-5678', '1', '-5678'); -test(macro, '5678', '3', '183056925752'); -test(macro, '-5678', '3', '-183056925752'); -test(macro, '5678', '7', '190268860537460461066531712'); -test(macro, '-5678', '7', '-190268860537460461066531712'); -test(macro, '5678', '9', '6134207938767795427279285370859008'); -test(macro, '-5678', '9', '-6134207938767795427279285370859008'); -test(macro, '5678', '11', '197764925536165073952129140102317226473472'); -test(macro, '-5678', '11', '-197764925536165073952129140102317226473472'); -test( - macro, - '5678', - '17', - '6627070629806594831656022886215600897329358775394273623628709888', -); -test( - macro, - '-5678', - '17', - '-6627070629806594831656022886215600897329358775394273623628709888', -); -test( - macro, - '5678', - '22', - '39110965772324916562997532491390626962790594973791320596125071181383759481519734784', -); -test( - macro, - '-5678', - '22', - '39110965772324916562997532491390626962790594973791320596125071181383759481519734784', -); -test( - macro, - '5678', - '24', - '1260925177434571255317406540302166533842248540127020457961763919365319088416200089199968256', -); -test( - macro, - '-5678', - '24', - '1260925177434571255317406540302166533842248540127020457961763919365319088416200089199968256', -); -test( - macro, - '5678', - '27', - '230821086584467736122591924241292894830299686290762376622091655042209731331992663002654366119348928512', -); -test( - macro, - '-5678', - '27', - '-230821086584467736122591924241292894830299686290762376622091655042209731331992663002654366119348928512', -); -test( - macro, - '5678', - '29', - '7441598892019879120787748898491222680774095511313311141385222377597848399868342545524067924908115740965470208', -); -test( - macro, - '-5678', - '29', - '-7441598892019879120787748898491222680774095511313311141385222377597848399868342545524067924908115740965470208', -); -test( - macro, - '5678', - '1234', - '4754545701433992331733575256099410533228458670475892396381228147140277468895263961376711046431196278059194371543633511738104729515132046647921588948673317858795453334016910038267103044330714716949310557017200499682459199588937173529096934288020024176158267550101701080481254770583881162470132740630857097654899879616282728381172344973405997803534651364288959497452319805334849653833958710102843349430647090705281620494871877782238874887814289734228053896202806354761750369269951229593313010945689761891211258688068066696055485242378613245933537337160634515912577045202472450817451849184207035648874665441200090642213657945355196460821766460825032224534602658525599188179237649065062512691280473121441573617950552334838912754947407978233727886935344811884839323223019614920728343603125258018137019905454492748785128237691020015003872956540230098415206613398448533046207656300960598259213003433022409251838940742693047445967307981951797528065313733200257272599665561813580891071207079215211460876715623293069910550166302272098118272527916433819800298828239405657658438060618142659814207004518209034153803725735869682967280748736992669014651682583009724296577174387664968207473327117061022862388179179805519732871243762549484990925427400006876201981312808033770504367669331073626566876134508721159965417268468228608040850320762590581251984432320891961775899262667965048729940448530756142869126858563901357526390190162408750825956708618281237598759925725241049426257439561800035105159165326290183277107179838103459135561724394264803171431808241820795445711863608586766345039254614846933931024903619561176580056139441625967323631797367126958482941668050957659192162167276197457147030284596116968435975482030070191450200681573163807130339270972064786812978664842441338738386157257657806440916739246453417871760401803525801345778950479694386503103948471086023573572269171237514322085437996393254976781298685048789580780175371793986673922336623057771141110132765327451487041405878107213683772036140143582620048289665134817805568670112167960808287343393646995734701543886022122701209620784296421140764622633595229564449908877625079263109689514631383456799358203288875405982309838110130925886572530681702118654886611249141922200019882428708452245424153239056842500484262106739374720265689912446227419480220842375352629558959175152376134258348738676918576054510702773097564166661175972907344227049028399511499148144890097723715043579731339916022734957419253364608790001408119360562088903660541256901511777417919298919881207626846049705641631114520861910821360106286185700362951871430037373045323853881352479438655780016733428623128344067196426832063335414492412985195862227411532910672295727557475523062269393814283457830004423808768415796967148960731363753261748078031957490406872476713147808646830842062710450030612153443209478241811514340917541321810139916689385477670593954065087892241850261558516392240563145569557862995904133784803099322335109965684092492599160998743520079066871458347318820041040608736708265400811003296782209446700589963177364290058854636845629046307738816633516835431430230362482024920978970474394893679522412954011767859444487351352199067658529260874277691008237384360434306282016514094096768013798147480740509779810560544648455485790268334288880803641971210749525943040368705400269755514646235977621926612279423197054873015209023113609804623745158430744774035859946298137588499302254901538876084525827492824031763727264344218393017853529749735850655796213422695465000659399958563228524294668421953057407346976847682240743601105444694630169017375480155130799595124045461115669497563631224904361329523188370665305938674437690787549882389569867694166936751165216920602732743849889023149711513126398908342104741198863408830097845137505662663458382001009103659839197477448289276824608807661040318889081157573844237090631229284090854577084517143322570965548490565414070261786860900921959546383612702905328456128108405235351119788158687215861758441073018835708344133679077552976919500888460205455433542878586438605353256917018782886441646030034030257088489389720348078103255876838236261154196475758170227577027093408115125958792540599677335099871170489525421378579051844293126380522395565389230525206095904182031294100225265853213565367785174160416143450757600749410617414444540260518189203196008117912073471241250825794798475803391996546423777135418649913067759391180278825562475480988246874450672101428462254341590331425352560400400946802179861512954182324631693500044001899557332925974569520166679673993884049720918350709799494693984974735913494505510527664100089926593875304828031765284659403018738108240944539887468544', -); -test( - macro, - '-5678', - '1234', - '4754545701433992331733575256099410533228458670475892396381228147140277468895263961376711046431196278059194371543633511738104729515132046647921588948673317858795453334016910038267103044330714716949310557017200499682459199588937173529096934288020024176158267550101701080481254770583881162470132740630857097654899879616282728381172344973405997803534651364288959497452319805334849653833958710102843349430647090705281620494871877782238874887814289734228053896202806354761750369269951229593313010945689761891211258688068066696055485242378613245933537337160634515912577045202472450817451849184207035648874665441200090642213657945355196460821766460825032224534602658525599188179237649065062512691280473121441573617950552334838912754947407978233727886935344811884839323223019614920728343603125258018137019905454492748785128237691020015003872956540230098415206613398448533046207656300960598259213003433022409251838940742693047445967307981951797528065313733200257272599665561813580891071207079215211460876715623293069910550166302272098118272527916433819800298828239405657658438060618142659814207004518209034153803725735869682967280748736992669014651682583009724296577174387664968207473327117061022862388179179805519732871243762549484990925427400006876201981312808033770504367669331073626566876134508721159965417268468228608040850320762590581251984432320891961775899262667965048729940448530756142869126858563901357526390190162408750825956708618281237598759925725241049426257439561800035105159165326290183277107179838103459135561724394264803171431808241820795445711863608586766345039254614846933931024903619561176580056139441625967323631797367126958482941668050957659192162167276197457147030284596116968435975482030070191450200681573163807130339270972064786812978664842441338738386157257657806440916739246453417871760401803525801345778950479694386503103948471086023573572269171237514322085437996393254976781298685048789580780175371793986673922336623057771141110132765327451487041405878107213683772036140143582620048289665134817805568670112167960808287343393646995734701543886022122701209620784296421140764622633595229564449908877625079263109689514631383456799358203288875405982309838110130925886572530681702118654886611249141922200019882428708452245424153239056842500484262106739374720265689912446227419480220842375352629558959175152376134258348738676918576054510702773097564166661175972907344227049028399511499148144890097723715043579731339916022734957419253364608790001408119360562088903660541256901511777417919298919881207626846049705641631114520861910821360106286185700362951871430037373045323853881352479438655780016733428623128344067196426832063335414492412985195862227411532910672295727557475523062269393814283457830004423808768415796967148960731363753261748078031957490406872476713147808646830842062710450030612153443209478241811514340917541321810139916689385477670593954065087892241850261558516392240563145569557862995904133784803099322335109965684092492599160998743520079066871458347318820041040608736708265400811003296782209446700589963177364290058854636845629046307738816633516835431430230362482024920978970474394893679522412954011767859444487351352199067658529260874277691008237384360434306282016514094096768013798147480740509779810560544648455485790268334288880803641971210749525943040368705400269755514646235977621926612279423197054873015209023113609804623745158430744774035859946298137588499302254901538876084525827492824031763727264344218393017853529749735850655796213422695465000659399958563228524294668421953057407346976847682240743601105444694630169017375480155130799595124045461115669497563631224904361329523188370665305938674437690787549882389569867694166936751165216920602732743849889023149711513126398908342104741198863408830097845137505662663458382001009103659839197477448289276824608807661040318889081157573844237090631229284090854577084517143322570965548490565414070261786860900921959546383612702905328456128108405235351119788158687215861758441073018835708344133679077552976919500888460205455433542878586438605353256917018782886441646030034030257088489389720348078103255876838236261154196475758170227577027093408115125958792540599677335099871170489525421378579051844293126380522395565389230525206095904182031294100225265853213565367785174160416143450757600749410617414444540260518189203196008117912073471241250825794798475803391996546423777135418649913067759391180278825562475480988246874450672101428462254341590331425352560400400946802179861512954182324631693500044001899557332925974569520166679673993884049720918350709799494693984974735913494505510527664100089926593875304828031765284659403018738108240944539887468544', -); -test( - macro, - '5678', - '5678', - '20961103475860397096620198785828544812451875765346411250885842038327056305534831427524235929264523155549200123342202792959619294498356925569029791517054522023286004576806428127901116917137966737875680160041853755979622047280407769716320420049316833329762005532988708704331049532598407081927588476358096106830430346678025737622384646014143458292081444951646455890942404183781454801771092170042167548767143528488456067477683808637020193350086262620837499156780659643514425992677777549276236748838733016855656036767803970531404652487170875923200639888516998895605428441017745101547422412068987348460209115448467644054468275648419404395337331198996639591442581724727811657252555545825531082415497100293537939448249078775822683882777300250359161247892959517197286724099314650422427240434528774639093971213821558552657313136317745703702089009078172440361842759228550114479452733116278009555122957802967528098994386176881771431841384903021658686272530901973786608204786721041117420281569693260260781545794591991815167424486772633334335112935740169814675786293770425639825077094249010948409458543312552634155954058706239948602914517292759521672875666304364312018937594156108424003164485077624655063004963280160357043967713172961937421714852351728786997474570833727073802073151242655465897621077578606223043356016087694305078059542256401820222791125648819317007287481280897846845478489548491210810983350692374049786882713293346324409753707754423018924164908641564327101470836717142930169947476809752607171960867023783880340917424768781396844547673066773609064248651574496288539173939354153931404464270119589133463933821401953922574158938448014272201881447815841632885101526774501650212127008845801189603638355135409486428091715296322188863520347687656551080147975509615440823847444672761184968625278441257265131960174485819064367376310553604561354630629371249798285268189004212654426527594297664248117535729307223651413582559430948950731935053761900974795521089002020414940829028280569419489831414227882285622096763688719827413987472799210647005984076492462922894315598285699105391088926945250813040451821143186871090522965245589172188408143948195834368520199216096394211579483487673484669778106884250996681597133290790739693751847242221100768244023759346750635341703420379801838942511917350863694564847029339158694426890381897099989180224343864523754112539067694526528401217644323654424427231493800150103842858508404600706382916219260256068179635822489248860978198535137682711137174374077990340914136980156334917668955828893820631948604959981643749170072224740493035859834098207411894779743137041606544382898751128407139489082003820804677974180712232039944683681108546158160055498114804222931787517216194961705600600921002101530486944828893320089698663702374771897219653436814633911298888459476136973550537723000547178216062641659170242351858997391600121959716952009812638059726218252540709679474668997724436632309816876295236407595457518507126861860680695750920654652963320254726353162418187659321568071114917619368662094712938035019186605722392484634089048490456834552767036555584677757558574446800534129195021872811546196149505124075849131199605515302266412472075986121981758995616205249141869256646920464095875775897714478203686225976431026856924883709687572948846561956353515691616376669694467094214890998233570175924571354681813611569544223781951920459777052032721788869612973356209611272860999692421601135843006769446060803502108056936952707032803521745669953368947886400455020197982813897023648803789317080479601810246362997281767966345793599493006980728517888764254888947867564213736366873403675906000079828022438134598229588800533119240383617199914137931213183505864880894139667746523030715098472929472302939576875444596462566452370793967057305702473460610483922270628542439793100970761937675746264116065218777391795769254579066163889330331112744733423405142790082465878728322397848857528516220224146420991983558383260828431109792636682987735128999042469763301989217214843757185512109526419275078060717097555288972272391704978646752898865425525925148946610574643747876579415727008374889238583995957880506518609256410087352303549297375442558667992920688803103146202722246249407948046901012612240584683255617396467408314435847004205877168068226283077754365919306242384808777157837278694966451380135919664731764683570386835799307599048703936473275613236972515229396396260958643009818292356066675853792547520081901067916982728871525491998521513382058653551548991210196432125407005261758774055758476265898632777046159129580237974401964271710584580359869876137967244126611356619072305094409440480536976363305436314025755667452127894209347682659916071643846222364653470873175722549995662291210659162334560246843460484181862192208393363077518809836625686572884061772196633797888749892277506502441191600357977013385504776300311259998291033716404492720409291745672289169990906465740353542556271192233542966467378955571662470116771561584749525830836527785451464178352895390807054081934597059639771119622039654129377672203491023057905439106311615960089279769697340091409307248615189012263871246113888420237101222530953693460050751365447872194314346321021252618391674612597521999861167606501984138883750088324174460600828958999555754255610905124642928577815381854757230470329901276588212295301182538623633435542874680576666352264509760450468573897306825844154780925961121512391772395963933139713039190021107996813065298155982705497740394116136786877280826320702315582767519525968812480806822623479009377991272623849572823287103715254262434467196819571876352232869161557710895323643426054024697392936513538931702107731492975713311800736817229334271317993829146513166265221678058872670454757573140530510521990000183590216202544311048834058740149712755109451126122309764879750972847619124852572353750625754484613228115522998750920829289098099554644037180554427993408365441797464370149734104965776213777083810307981642619540386518150159046829445424829754275452381328601724043449450956030748949308969828402680425162361229035418400544619561607296204881691791480090999541515616010212649557063997168853645599579523842619790074716906017775453082500897068436460404332503814365128244826029711441494116174974844655172720999917810103350411225796563189051529716191842251620861664071037527702847381765521782774102962458150055205741141136106439247547142624381556529650433877764934281678531465410529585976763361537124975372339008916161274767618913876519271418713246480667376525939051541144349620741087940031759796162844867538970077387831434344681530487207516991510520912619511583884571364622210013697048350627846600223329500321002977613397306970367590540778783822774812030074816751772184402370029104045385214602610907543748021786280923450646029057709024071335807175590663303554223846464611978030180007569607921318215938216147386594093783432526613610728757005691521557409476530287282519784554821625290605602981175951476074638525315922123873770224286936370399872701299567171494946919326740256775127284475987028437513344512643223731472467390195611228556080275245145240204853439354039812301589775361549206311675316060841046896944990780074886738787814930150748548502907587826876353074588954972282061956250092436604733846523028612361583744352854099913930684272445300389550635728506447056670977566263911578264334619665006859685788546051311606465170520850052292627918870022043421681580681687815285018239742758216968701779554391176904096742556900135151126780776552006315456063734183800063507587324457500426893135954572619126593168091720910428883991975359480482573972151692294245346527271827960866757765591817415445212833405373149434835366091481859076709340699689283099227679095904342934396597071849631503357041827588692207811689619541022987674906772902279361365116008403959183232244277968153717371380870224724601675215395853317076044589055344155303188951949633122037313447319757599917592415992347777664120565677256132176162285933749924410020763498845915345437059932175518550870149266678352583554753248105512643561027254478108520853968547412343074452732048940948337258955528107066091208271688418567950938759541825412737643300318455888061336920776577194225851506408333260918392790229453752287062094219357308185064469699183516806540942085490353756937701017866352051531856798410752966442088040473501761715035453238890231970013529945683188860755904234083724684800512845736719451852683069210468801867201477539348052542015577484072403704037776579238040836520289410747338939580941699344511302194270338381742596661809385741277476102729401334821325398466231955303171814534873887668780922143864823502410049426239526505466585893420380824352949092066404315279591440868891045752500463965898054919547044239119894054717314737895191652981340489644261093020311422889692148710370782648783605622470403387492804891787456729566334392617608021680405626520291926600181533814037514425472456947855714901443112699002508628600214500147437397501520737486276785876992172931265188844659595175189051513909865093560705009962172767282431656449941715794260678036177108296646748595792902478003711079538568560569329362052983611711508572531810948840324314191268617953219086794280506078381146419144518511359337076537668884246531754894520493160189833787323225134536395026232747632921100895318203838170957249192688530720205345436462911312863754388655934052209987748976917630044613649507982963832646361600102327899814182961925247597766558883415426602825642679231108408717356160761811443138678307765670120961632324431937203518098606674451620777129193461079930070445790621797443406995457673007773949240694361732293871256269440702045044042508400041950088476821880075340029625967767429598359971876420730553017036711928950784849486622452639853318381569541989587912394634477936955057149926195818822162073890615735490958836145860064089782477806643629376414359166374954027243086599306339146161006095540567436463505814151437072367936996320385241887273358613933332829151995652505803301556826697804912428850607413334679395180944373755345498960648748382482129209871428353424166735231886964387990779276298346036013789942626283820173524619459795908090658203843828759290932760054102527111538316976316107885329942413386870965936382594101982473536441345366235792871866647413979193839717006298786289046184792740497837459531945129292724622806109963537972595469737226837786127695843373683711177980931771124939231813651067119584047671610562615594610013918906014074965915938697967519291496645151577431294255803269930598594469775759332172418552542909930827665688050144404349648565099431522182800149383324488601033329987788729015603953218570332519940819306386650225037968580102257373618430731324266588124210598703511685751977221929792590346525097022616738437403242628009366426304027403800405332758340415937758762022018256029841471401813518917716264970909993826679020791028595741882041564058061727313588364708255873250181519665032113898406604900457648507873836669075356646954261077641216790353285042630288932760415550082594708503004210469047805667031578982859227123863848155443706073467171101932882914667034131195237741270122375436214181192852781446477601012439563301881420830604554167146333080753008048466060868180919956181803167095012443813370384688061266418807988055127749853292289167056432298804062936653555435002773574758792724801465815463068776612178263548503872068353366422210523694946841803129147625915455142179893256525229164984372164655503046171715680679418354756933948568190062498291382727237063733314557270124601968330877375375302905000458666065115393775985001980241299574368885547201655980200135959471425563854499243977941637298696317480645641835649611961706086308603047338759013980114790118006676458648654934040344142400548899195911697413888327578658688851175449259234204015146825772165610587763768386460010876806660067899144780128980585458498486050060134774086471042255869079733943552895314018768767346670068755253063974621759845733812981050837508917001404433039971743800738940429888879719722032789032572353352744414958968603767414609445925606874565266830823048810770676933082518916615247308650769963520499383636076074952007889469520893094651525307614701445078300776534195271458658643120654661933319467024570788906633360571649837492003799512889247911398553146591016455594218010075513724555874545150086787082537930052790651798957811066300144858455106371826307947479024319648174975420433374959084000626716279569226568594439081586004086396789477140805229043751501120056323542312951737926321877235735914913996771106885471756468685655223612768963960722422730242543178403592512730653108901995129957541586204986193328435470246585569185661237173969190411536963744455489053317973231535816102151692209387506678463166253256748427255152612939374373490497892336019501080931787139480532743574835338284878792836456350443071849124517079708282814044437298390350851907341664119465791873084560904592692890839175621671856709653467138377030657216088346458495003129554331909651018828349471677645970827844610092659017435212835903616196746033025057028617583036181754607527505265145156915470410506790682071708352303854971538714988518380835322105678173900156055910356897513042381483508937842961980161225304561882550956202034776079550133622209227253722849998842871720910727926556496708078296526342129984119761109693088229168055370682490197459698160878225168359328983640522770803808232985893757138451252793719878554146381587949241129832715284164638628327205083947429369577324247974259656591200285342816299760599997325343453887746113000804971059841058142634932629767863224029057643740199869860852268177578424390685549803794805777768828321816077711698044150850387564161363159273195211266593336485672068912471611545555503828635002039882216193749699794930785426172968668007437496372781477721590621442715765093180923013806625623519237937374711524887079886806048451452685056714484012446162628312599653092101079835587808229519810848029768298450707529049027855868594581351120373694968471491325622921276839709147987501499009362126994924173034840891447854850534760007717018397409635389989721942703280358887059064381016959134652333830901444808032621722673636621106845864481104295244621928353536906854484306037465883277840775957049146224492353399079659842861817526312402994884769704689603020779604603739636166608166158691216721969031390843150488617586505783575176219285589177884503871139501493503315056927532546400718168079346521373642983412554286854653491668302783219026411150683690404676506814296062048782453375783985993074773600530807406821508678796048884535057070454725641832804881628290472319378708107612672514958728208415814832848366830770879939252404453831503925587010649860843157237264031863553723731115423243833225146791947855702939079762335792076456959779445036020009496001781800831364672755699695312438929954900086480320360978014700132221039920117199716948333953655007203510534208947542173707336851190033391697173213334983116967278338578042740237971848876445165127559667023731212410332059567408688316981002760859447186074029885560854879276393896939409839546337254074481153175622933159009005807484599017919954851974584592781083821785005276107736054438857737927856937120884899984310863662967573212483017728483751788255634467095976284660372895727900973207840312300428355116015427435590176977077187205781812230534547145024610923191323048599366029697646809970005492711875817316442030817504177259518549452303716064462428946033555861760032856644595430216590534551860765065591027032595210910008411076368147326583568499051675140899438258973699944961369654185169046437778566505363261882513483043961521822263294058027245777275740012119198813520182688767132883689210273201334533673118014437798534485316245391538318773583087415840444449319110606856512447512427810349060960965229304174718418904023965554517483150090227734193870384044342790786375008719255816638434921858068442041606691749879152418145598438590758009228404117127766264078915319545878728346609769951809923039955260523001211528419908084892249955619893908746226668926291220179829726182253315628363003141666323849121632438113963636026816170489507556799521505584106702009070060137446668676003914632974027568315166623356117669864718049566304056730319591969263694104593459765322344772255382701180475436641886868678783624543227744434298993623572900060680979017067990077221899049059361499776668856843365761870317864819462428428848922374612219495703536826811251521962115417657764716996599920443771355936808856994611476907846769440705945577948412408098308194247790251551814007405488547607931512528458295294431561075440913232712872386575874523702338843048545387696311167012267393016243499862701702704559182961184393139009670554985993265598484792846589075913709674891472962734815769679185507332710024988728112966765370082378434820660544834153633496561669001904597457934287983634833285858233443830907814288637924228602612202936103591956657280461805355377341594603036055318976423539874466968971622720400344448054825863644910603570330666373214016807494452805187564132062676258921397872976935534785650666466979058203596663964008877239131749538077378553261427912422051571242411749896064698020652408788498399054601940514530604898867419049351496438038779395408661009142554015099651484475265311251583264780006555449353786535571876736192626391724175173600804803164802821449711193065509497976905374647202115518871632987870116904885869297723779451615583994721144940453975894523447005168454654094792512955530467522876206229286935224412977161135850490857061187099569220880490969801731923939968371712015789551373893696433571630232434930844238107438295257090395694148469435787522959391460491063999682320399157149585155220573365774129776211169850925291001405823548706054737610679934077813002757289010852930710833890387897603293202189092351455389213224220200812392861786079572198529046984045111530589932771644921408568949351465102893613740863050867997516831526923647362713692102368506180725202921498997373446137055388695228199734210698224497873308768594575297220521759107033810828350095765628228120152284513992260771237651139305247739659270616280339908733497338427091680415735990262483699211387602084318185900414399619311359472134983218719924998666805502050740906549426901732133211600369364728749393417316913960651023842430959511253264652006272039019440372374464314002683726896273148383941896402669657964060226983277289594026510720250861506182574611925245076873860196820954418487005698506965073242275841765055662272895065533031044216483018490359334981010684150119460032570579963029007065375193852242835591620381410417921655911808679699101792574638397223906183709585980959164320240595763914940916578772074981529105442754965693025026444579715860229807439358682267593669921082325720330651796439555898405980876598479829844298465640244001232596306871221389146172690875418892645048162202327778078851278433613157686380772481696539616794031556767885577380027308862476883800947813971379945924507762564255570966442195922640677432268158193234943248422208020363463924017498973834663895093591825522157827688503799798956822355457941723297439393436585811615367822230560739947438397685416715810717599247434830137898600384248415491280349563802303189361073536367401385203523086130688457063955625439511748867286125836478963188607731003192120083349188717903595076579429799767124404502580731912584575058518902202558354659537257581450704768143656086238404537693737301270764545835428493176034206742679964923389637539562396171219624285232430392133671282455067288971838373684172500972824178311994559519745977773185377274315387612668976397441534881939098559968323401638901357042031758745222318685425870175763581210340825614377239399102156681676756886304126199512477132209661598167513065258796567396244516766667044117769296076233945430288434551388983145956356854054551349043233270185252479304817744547523647489442750388225710640552607871951523222181135987822647479160843575474425232786723635746624017962010441801682460460846911429363958171491000643253046537377592219146819005387665341190415552719452163396674187225971483647197960216167631640203688782849503605151138399519953056223592845930065765020589667028047478555235402729913149859498685868729063983583291781384695081470874399025098701926833100271744846242068023582524050060108933501814997686980612309900254566123795338465882337102638236069457270509138946913421811976791562523400704102948549106032451197653504432853349017333134595228420504674415338093336394471848456363569811978503849071206389386547743012787895694085415358532891712913369286066906727002487638172447907565640414172498327074182250501908413014543889563559417363729989034832947592196482825280790955025439550978361293168022571329210314775804687773638280215386019801405994354558803657261076788491071425202082643783638575084090901655705454664097045389489400799009505346024924745729201182421567301004430571916568576607949169061394726630519011162277327697372959941859397384603824648805733579846217737162375462758461188848821424664212093326156665691469019112829336542913113790202783071641612742430534416926924889644751793603534790540558697161796514596582648358122270207620367742404487043868514971674400430158941877734533743310880649285086576473788391037431011688694806036177790841311961196527311456581911009317143690944647271732040654178076547839684445285591602529693579659384882891493197912230169540994733315399796960250749876936655523749674175502708680570084371697083686982023025890173668649889446225658735966722221404808349220864', -); -test( - macro, - '-5678', - '5678', - '20961103475860397096620198785828544812451875765346411250885842038327056305534831427524235929264523155549200123342202792959619294498356925569029791517054522023286004576806428127901116917137966737875680160041853755979622047280407769716320420049316833329762005532988708704331049532598407081927588476358096106830430346678025737622384646014143458292081444951646455890942404183781454801771092170042167548767143528488456067477683808637020193350086262620837499156780659643514425992677777549276236748838733016855656036767803970531404652487170875923200639888516998895605428441017745101547422412068987348460209115448467644054468275648419404395337331198996639591442581724727811657252555545825531082415497100293537939448249078775822683882777300250359161247892959517197286724099314650422427240434528774639093971213821558552657313136317745703702089009078172440361842759228550114479452733116278009555122957802967528098994386176881771431841384903021658686272530901973786608204786721041117420281569693260260781545794591991815167424486772633334335112935740169814675786293770425639825077094249010948409458543312552634155954058706239948602914517292759521672875666304364312018937594156108424003164485077624655063004963280160357043967713172961937421714852351728786997474570833727073802073151242655465897621077578606223043356016087694305078059542256401820222791125648819317007287481280897846845478489548491210810983350692374049786882713293346324409753707754423018924164908641564327101470836717142930169947476809752607171960867023783880340917424768781396844547673066773609064248651574496288539173939354153931404464270119589133463933821401953922574158938448014272201881447815841632885101526774501650212127008845801189603638355135409486428091715296322188863520347687656551080147975509615440823847444672761184968625278441257265131960174485819064367376310553604561354630629371249798285268189004212654426527594297664248117535729307223651413582559430948950731935053761900974795521089002020414940829028280569419489831414227882285622096763688719827413987472799210647005984076492462922894315598285699105391088926945250813040451821143186871090522965245589172188408143948195834368520199216096394211579483487673484669778106884250996681597133290790739693751847242221100768244023759346750635341703420379801838942511917350863694564847029339158694426890381897099989180224343864523754112539067694526528401217644323654424427231493800150103842858508404600706382916219260256068179635822489248860978198535137682711137174374077990340914136980156334917668955828893820631948604959981643749170072224740493035859834098207411894779743137041606544382898751128407139489082003820804677974180712232039944683681108546158160055498114804222931787517216194961705600600921002101530486944828893320089698663702374771897219653436814633911298888459476136973550537723000547178216062641659170242351858997391600121959716952009812638059726218252540709679474668997724436632309816876295236407595457518507126861860680695750920654652963320254726353162418187659321568071114917619368662094712938035019186605722392484634089048490456834552767036555584677757558574446800534129195021872811546196149505124075849131199605515302266412472075986121981758995616205249141869256646920464095875775897714478203686225976431026856924883709687572948846561956353515691616376669694467094214890998233570175924571354681813611569544223781951920459777052032721788869612973356209611272860999692421601135843006769446060803502108056936952707032803521745669953368947886400455020197982813897023648803789317080479601810246362997281767966345793599493006980728517888764254888947867564213736366873403675906000079828022438134598229588800533119240383617199914137931213183505864880894139667746523030715098472929472302939576875444596462566452370793967057305702473460610483922270628542439793100970761937675746264116065218777391795769254579066163889330331112744733423405142790082465878728322397848857528516220224146420991983558383260828431109792636682987735128999042469763301989217214843757185512109526419275078060717097555288972272391704978646752898865425525925148946610574643747876579415727008374889238583995957880506518609256410087352303549297375442558667992920688803103146202722246249407948046901012612240584683255617396467408314435847004205877168068226283077754365919306242384808777157837278694966451380135919664731764683570386835799307599048703936473275613236972515229396396260958643009818292356066675853792547520081901067916982728871525491998521513382058653551548991210196432125407005261758774055758476265898632777046159129580237974401964271710584580359869876137967244126611356619072305094409440480536976363305436314025755667452127894209347682659916071643846222364653470873175722549995662291210659162334560246843460484181862192208393363077518809836625686572884061772196633797888749892277506502441191600357977013385504776300311259998291033716404492720409291745672289169990906465740353542556271192233542966467378955571662470116771561584749525830836527785451464178352895390807054081934597059639771119622039654129377672203491023057905439106311615960089279769697340091409307248615189012263871246113888420237101222530953693460050751365447872194314346321021252618391674612597521999861167606501984138883750088324174460600828958999555754255610905124642928577815381854757230470329901276588212295301182538623633435542874680576666352264509760450468573897306825844154780925961121512391772395963933139713039190021107996813065298155982705497740394116136786877280826320702315582767519525968812480806822623479009377991272623849572823287103715254262434467196819571876352232869161557710895323643426054024697392936513538931702107731492975713311800736817229334271317993829146513166265221678058872670454757573140530510521990000183590216202544311048834058740149712755109451126122309764879750972847619124852572353750625754484613228115522998750920829289098099554644037180554427993408365441797464370149734104965776213777083810307981642619540386518150159046829445424829754275452381328601724043449450956030748949308969828402680425162361229035418400544619561607296204881691791480090999541515616010212649557063997168853645599579523842619790074716906017775453082500897068436460404332503814365128244826029711441494116174974844655172720999917810103350411225796563189051529716191842251620861664071037527702847381765521782774102962458150055205741141136106439247547142624381556529650433877764934281678531465410529585976763361537124975372339008916161274767618913876519271418713246480667376525939051541144349620741087940031759796162844867538970077387831434344681530487207516991510520912619511583884571364622210013697048350627846600223329500321002977613397306970367590540778783822774812030074816751772184402370029104045385214602610907543748021786280923450646029057709024071335807175590663303554223846464611978030180007569607921318215938216147386594093783432526613610728757005691521557409476530287282519784554821625290605602981175951476074638525315922123873770224286936370399872701299567171494946919326740256775127284475987028437513344512643223731472467390195611228556080275245145240204853439354039812301589775361549206311675316060841046896944990780074886738787814930150748548502907587826876353074588954972282061956250092436604733846523028612361583744352854099913930684272445300389550635728506447056670977566263911578264334619665006859685788546051311606465170520850052292627918870022043421681580681687815285018239742758216968701779554391176904096742556900135151126780776552006315456063734183800063507587324457500426893135954572619126593168091720910428883991975359480482573972151692294245346527271827960866757765591817415445212833405373149434835366091481859076709340699689283099227679095904342934396597071849631503357041827588692207811689619541022987674906772902279361365116008403959183232244277968153717371380870224724601675215395853317076044589055344155303188951949633122037313447319757599917592415992347777664120565677256132176162285933749924410020763498845915345437059932175518550870149266678352583554753248105512643561027254478108520853968547412343074452732048940948337258955528107066091208271688418567950938759541825412737643300318455888061336920776577194225851506408333260918392790229453752287062094219357308185064469699183516806540942085490353756937701017866352051531856798410752966442088040473501761715035453238890231970013529945683188860755904234083724684800512845736719451852683069210468801867201477539348052542015577484072403704037776579238040836520289410747338939580941699344511302194270338381742596661809385741277476102729401334821325398466231955303171814534873887668780922143864823502410049426239526505466585893420380824352949092066404315279591440868891045752500463965898054919547044239119894054717314737895191652981340489644261093020311422889692148710370782648783605622470403387492804891787456729566334392617608021680405626520291926600181533814037514425472456947855714901443112699002508628600214500147437397501520737486276785876992172931265188844659595175189051513909865093560705009962172767282431656449941715794260678036177108296646748595792902478003711079538568560569329362052983611711508572531810948840324314191268617953219086794280506078381146419144518511359337076537668884246531754894520493160189833787323225134536395026232747632921100895318203838170957249192688530720205345436462911312863754388655934052209987748976917630044613649507982963832646361600102327899814182961925247597766558883415426602825642679231108408717356160761811443138678307765670120961632324431937203518098606674451620777129193461079930070445790621797443406995457673007773949240694361732293871256269440702045044042508400041950088476821880075340029625967767429598359971876420730553017036711928950784849486622452639853318381569541989587912394634477936955057149926195818822162073890615735490958836145860064089782477806643629376414359166374954027243086599306339146161006095540567436463505814151437072367936996320385241887273358613933332829151995652505803301556826697804912428850607413334679395180944373755345498960648748382482129209871428353424166735231886964387990779276298346036013789942626283820173524619459795908090658203843828759290932760054102527111538316976316107885329942413386870965936382594101982473536441345366235792871866647413979193839717006298786289046184792740497837459531945129292724622806109963537972595469737226837786127695843373683711177980931771124939231813651067119584047671610562615594610013918906014074965915938697967519291496645151577431294255803269930598594469775759332172418552542909930827665688050144404349648565099431522182800149383324488601033329987788729015603953218570332519940819306386650225037968580102257373618430731324266588124210598703511685751977221929792590346525097022616738437403242628009366426304027403800405332758340415937758762022018256029841471401813518917716264970909993826679020791028595741882041564058061727313588364708255873250181519665032113898406604900457648507873836669075356646954261077641216790353285042630288932760415550082594708503004210469047805667031578982859227123863848155443706073467171101932882914667034131195237741270122375436214181192852781446477601012439563301881420830604554167146333080753008048466060868180919956181803167095012443813370384688061266418807988055127749853292289167056432298804062936653555435002773574758792724801465815463068776612178263548503872068353366422210523694946841803129147625915455142179893256525229164984372164655503046171715680679418354756933948568190062498291382727237063733314557270124601968330877375375302905000458666065115393775985001980241299574368885547201655980200135959471425563854499243977941637298696317480645641835649611961706086308603047338759013980114790118006676458648654934040344142400548899195911697413888327578658688851175449259234204015146825772165610587763768386460010876806660067899144780128980585458498486050060134774086471042255869079733943552895314018768767346670068755253063974621759845733812981050837508917001404433039971743800738940429888879719722032789032572353352744414958968603767414609445925606874565266830823048810770676933082518916615247308650769963520499383636076074952007889469520893094651525307614701445078300776534195271458658643120654661933319467024570788906633360571649837492003799512889247911398553146591016455594218010075513724555874545150086787082537930052790651798957811066300144858455106371826307947479024319648174975420433374959084000626716279569226568594439081586004086396789477140805229043751501120056323542312951737926321877235735914913996771106885471756468685655223612768963960722422730242543178403592512730653108901995129957541586204986193328435470246585569185661237173969190411536963744455489053317973231535816102151692209387506678463166253256748427255152612939374373490497892336019501080931787139480532743574835338284878792836456350443071849124517079708282814044437298390350851907341664119465791873084560904592692890839175621671856709653467138377030657216088346458495003129554331909651018828349471677645970827844610092659017435212835903616196746033025057028617583036181754607527505265145156915470410506790682071708352303854971538714988518380835322105678173900156055910356897513042381483508937842961980161225304561882550956202034776079550133622209227253722849998842871720910727926556496708078296526342129984119761109693088229168055370682490197459698160878225168359328983640522770803808232985893757138451252793719878554146381587949241129832715284164638628327205083947429369577324247974259656591200285342816299760599997325343453887746113000804971059841058142634932629767863224029057643740199869860852268177578424390685549803794805777768828321816077711698044150850387564161363159273195211266593336485672068912471611545555503828635002039882216193749699794930785426172968668007437496372781477721590621442715765093180923013806625623519237937374711524887079886806048451452685056714484012446162628312599653092101079835587808229519810848029768298450707529049027855868594581351120373694968471491325622921276839709147987501499009362126994924173034840891447854850534760007717018397409635389989721942703280358887059064381016959134652333830901444808032621722673636621106845864481104295244621928353536906854484306037465883277840775957049146224492353399079659842861817526312402994884769704689603020779604603739636166608166158691216721969031390843150488617586505783575176219285589177884503871139501493503315056927532546400718168079346521373642983412554286854653491668302783219026411150683690404676506814296062048782453375783985993074773600530807406821508678796048884535057070454725641832804881628290472319378708107612672514958728208415814832848366830770879939252404453831503925587010649860843157237264031863553723731115423243833225146791947855702939079762335792076456959779445036020009496001781800831364672755699695312438929954900086480320360978014700132221039920117199716948333953655007203510534208947542173707336851190033391697173213334983116967278338578042740237971848876445165127559667023731212410332059567408688316981002760859447186074029885560854879276393896939409839546337254074481153175622933159009005807484599017919954851974584592781083821785005276107736054438857737927856937120884899984310863662967573212483017728483751788255634467095976284660372895727900973207840312300428355116015427435590176977077187205781812230534547145024610923191323048599366029697646809970005492711875817316442030817504177259518549452303716064462428946033555861760032856644595430216590534551860765065591027032595210910008411076368147326583568499051675140899438258973699944961369654185169046437778566505363261882513483043961521822263294058027245777275740012119198813520182688767132883689210273201334533673118014437798534485316245391538318773583087415840444449319110606856512447512427810349060960965229304174718418904023965554517483150090227734193870384044342790786375008719255816638434921858068442041606691749879152418145598438590758009228404117127766264078915319545878728346609769951809923039955260523001211528419908084892249955619893908746226668926291220179829726182253315628363003141666323849121632438113963636026816170489507556799521505584106702009070060137446668676003914632974027568315166623356117669864718049566304056730319591969263694104593459765322344772255382701180475436641886868678783624543227744434298993623572900060680979017067990077221899049059361499776668856843365761870317864819462428428848922374612219495703536826811251521962115417657764716996599920443771355936808856994611476907846769440705945577948412408098308194247790251551814007405488547607931512528458295294431561075440913232712872386575874523702338843048545387696311167012267393016243499862701702704559182961184393139009670554985993265598484792846589075913709674891472962734815769679185507332710024988728112966765370082378434820660544834153633496561669001904597457934287983634833285858233443830907814288637924228602612202936103591956657280461805355377341594603036055318976423539874466968971622720400344448054825863644910603570330666373214016807494452805187564132062676258921397872976935534785650666466979058203596663964008877239131749538077378553261427912422051571242411749896064698020652408788498399054601940514530604898867419049351496438038779395408661009142554015099651484475265311251583264780006555449353786535571876736192626391724175173600804803164802821449711193065509497976905374647202115518871632987870116904885869297723779451615583994721144940453975894523447005168454654094792512955530467522876206229286935224412977161135850490857061187099569220880490969801731923939968371712015789551373893696433571630232434930844238107438295257090395694148469435787522959391460491063999682320399157149585155220573365774129776211169850925291001405823548706054737610679934077813002757289010852930710833890387897603293202189092351455389213224220200812392861786079572198529046984045111530589932771644921408568949351465102893613740863050867997516831526923647362713692102368506180725202921498997373446137055388695228199734210698224497873308768594575297220521759107033810828350095765628228120152284513992260771237651139305247739659270616280339908733497338427091680415735990262483699211387602084318185900414399619311359472134983218719924998666805502050740906549426901732133211600369364728749393417316913960651023842430959511253264652006272039019440372374464314002683726896273148383941896402669657964060226983277289594026510720250861506182574611925245076873860196820954418487005698506965073242275841765055662272895065533031044216483018490359334981010684150119460032570579963029007065375193852242835591620381410417921655911808679699101792574638397223906183709585980959164320240595763914940916578772074981529105442754965693025026444579715860229807439358682267593669921082325720330651796439555898405980876598479829844298465640244001232596306871221389146172690875418892645048162202327778078851278433613157686380772481696539616794031556767885577380027308862476883800947813971379945924507762564255570966442195922640677432268158193234943248422208020363463924017498973834663895093591825522157827688503799798956822355457941723297439393436585811615367822230560739947438397685416715810717599247434830137898600384248415491280349563802303189361073536367401385203523086130688457063955625439511748867286125836478963188607731003192120083349188717903595076579429799767124404502580731912584575058518902202558354659537257581450704768143656086238404537693737301270764545835428493176034206742679964923389637539562396171219624285232430392133671282455067288971838373684172500972824178311994559519745977773185377274315387612668976397441534881939098559968323401638901357042031758745222318685425870175763581210340825614377239399102156681676756886304126199512477132209661598167513065258796567396244516766667044117769296076233945430288434551388983145956356854054551349043233270185252479304817744547523647489442750388225710640552607871951523222181135987822647479160843575474425232786723635746624017962010441801682460460846911429363958171491000643253046537377592219146819005387665341190415552719452163396674187225971483647197960216167631640203688782849503605151138399519953056223592845930065765020589667028047478555235402729913149859498685868729063983583291781384695081470874399025098701926833100271744846242068023582524050060108933501814997686980612309900254566123795338465882337102638236069457270509138946913421811976791562523400704102948549106032451197653504432853349017333134595228420504674415338093336394471848456363569811978503849071206389386547743012787895694085415358532891712913369286066906727002487638172447907565640414172498327074182250501908413014543889563559417363729989034832947592196482825280790955025439550978361293168022571329210314775804687773638280215386019801405994354558803657261076788491071425202082643783638575084090901655705454664097045389489400799009505346024924745729201182421567301004430571916568576607949169061394726630519011162277327697372959941859397384603824648805733579846217737162375462758461188848821424664212093326156665691469019112829336542913113790202783071641612742430534416926924889644751793603534790540558697161796514596582648358122270207620367742404487043868514971674400430158941877734533743310880649285086576473788391037431011688694806036177790841311961196527311456581911009317143690944647271732040654178076547839684445285591602529693579659384882891493197912230169540994733315399796960250749876936655523749674175502708680570084371697083686982023025890173668649889446225658735966722221404808349220864', -); -test(macro, '94906265', '0', '1'); -test(macro, '-94906265', '0', '1'); -test(macro, '94906265', '1', '94906265'); -test(macro, '-94906265', '1', '-94906265'); -test(macro, '94906265', '3', '854839628132734960159625'); -test(macro, '-94906265', '3', '-854839628132734960159625'); -test( - macro, - '94906265', - '7', - '69352828108196345571302714548224840368303639678393515625', -); -test( - macro, - '-94906265', - '7', - '-69352828108196345571302714548224840368303639678393515625', -); -test( - macro, - '94906265', - '9', - '624674733432656449761568667443804634246952025778040170044028517447265625', -); -test( - macro, - '-94906265', - '9', - '-624674733432656449761568667443804634246952025778040170044028517447265625', -); -test( - macro, - '94906265', - '11', - '5626569719411962723650415167546096949953068311825856718044176845859638898840742041015625', -); -test( - macro, - '-94906265', - '11', - '-5626569719411962723650415167546096949953068311825856718044176845859638898840742041015625', -); -test( - macro, - '94906265', - '17', - '4111620266471980471028580099675545097434173613002314680540141671482471036233068045322249236629608058990135835756014486176615142822265625', -); -test( - macro, - '-94906265', - '17', - '-4111620266471980471028580099675545097434173613002314680540141671482471036233068045322249236629608058990135835756014486176615142822265625', -); -test( - macro, - '94906265', - '22', - '31658286807403612933666095532663829606917007814138968876951811776281483501242674522295256018683450991389450689602591230724763634593416216499485344394982531093618869781494140625', -); -test( - macro, - '-94906265', - '22', - '31658286807403612933666095532663829606917007814138968876951811776281483501242674522295256018683450991389450689602591230724763634593416216499485344394982531093618869781494140625', -); -test( - macro, - '94906265', - '24', - '285152493586807715635778250040629704568534899170608577332704172832192470586911307092645490980725710064416470215223489215551076054022142237008690911252732817102771522852071313917636871337890625', -); -test( - macro, - '-94906265', - '24', - '285152493586807715635778250040629704568534899170608577332704172832192470586911307092645490980725710064416470215223489215551076054022142237008690911252732817102771522852071313917636871337890625', -); -test( - macro, - '94906265', - '27', - '243759651578868798217281108206623463735490359085472358472465213305940907210363261308064405033766654095672155830024986524275053959211648897667524575409210697695532573441399310923762601838833141075350344181060791015625', -); -test( - macro, - '-94906265', - '27', - '-243759651578868798217281108206623463735490359085472358472465213305940907210363261308064405033766654095672155830024986524275053959211648897667524575409210697695532573441399310923762601838833141075350344181060791015625', -); -test( - macro, - '94906265', - '29', - '2195591723153842833976375183141740537336638451104209452487233269978099251091719201006853085913307473345723364352547986672429911300801268569150014616303465779606927933392093058172884011727748376587183753730532924272119998931884765625', -); -test( - macro, - '-94906265', - '29', - '-2195591723153842833976375183141740537336638451104209452487233269978099251091719201006853085913307473345723364352547986672429911300801268569150014616303465779606927933392093058172884011727748376587183753730532924272119998931884765625', -); -test( - macro, - '94906265', - '1234', - '9591459179410241572856537719704118795351000902900562305249195472196195265555833412754864166507031793587379195925582803572210371959180740848015702606653712794907807842820287303844298057315437721729780551771436713566743567210455419724786856660298500086372804403816338340320302120440930931829619194880300084268951845577897562834735753784665609019198203233048867661024100257335806608791247129540791927592412584156372409767363191327851323280497596039938628887351085641878361348960836551885434816719856675096140100735098153982014533453294086408481103402371073765234498437942986299185804946033932203517281211025355740639164406513819178508651837986562373156333090579411143890235647767492144926855911961561170349672014614629827840596629153866370535524382716502377298033129875940828099612289849768956366119182226196623644421289199029543705885301848203842046242909504136594099983847607871992398930583777526005880060061677287301121641838813359760623338793918913138129119762743481238358717117820874141719166872107856435512751028932079558518104984922747527693664219154086216948208341876460165162264778277923815846538502672245752434229656583577521062954818225701253649577703058999328419908839977797748333637247291496547242568819156256380939652968563081087936133413669763802314091980457139588435626848957026334101428382680905361934063504702859864753961075493938097121116859339830550708349481985667854659071598612299339127950437953067708898374986402646559951120320721708316727933224792697639478435468027888366917714894730680032991635257046230944591272236530617356025218569172482915774764506872033088367335012521246964352262715392596661114331434581419942425209861303052103159737141838118887593079659533118979010073029109419153504531772178157803880524448253232397504700393645418278010150165092760716226444484244727105637368962191673677518823763517102430372508776552119355215943188635023271972752127662635880598372673204814450697064559754199549908021939030958872733672399702043041508144639801430320943357267841707000400404222832758589098605032942287405982133506381460750004675066342262085479385836480909763864598878090750329455982787911478900279885781537417672577623574196534254896533751763619748632866305445903742663767222380368598056346743790273546285474116657619344057407744566063285106302957424998222958334563469530826042006900334894940507739429822757677948670771646446401475234418995859933358243130008180759536136782698587200342015804405083654362794667043715432498830242795494530307701824122299526072682392416883591382466507093702351999216857924284228844163937090047387165802061654658731296376218866164135568360515357769852411309461140876077518669664598359667926801346716090206666283623307095613238020208838579994957805916629319170228853022067994759954669755848747912031498150020489023940497893018969218903299457329957933615236619153547835202992956280530580346188048475327939781542919126773872016959398231243998998083738131590171425213432398708470769525054179511894591276471224027298513771970571872065972609539084087063890507232242147976054307202299424358550001984668194552970122408292816135793651096260341402739670890290539634652749733051936121647220510837557946150318744548419221954103573224004509428899118772854490532692636349984796523606799588426404592878065079890048662999499258496147403823670334749053718615662500854192465254630734735470592657444348319716921656900540143255754066981370219643196580126846207577613002079274870394367728741824995134268682147619610980271981665849912854000586266885293690909808590352073959622797877167704956570701109840686451917212334062294475098780452199147749227206592489248155417621634742859122288908494376684326737988496746942171234696512068034353612026733019551888985186714851252843134718646972681183302261929938130968961934184204726044095752598480264969769942628031493505879722845317398404404766136527772383991566308125162547193990579656303403990650778044081542434937085597660623254423002156634083383451136994840415138061841621305110130354721521708626026722411562666098237182221903896143296122843453808861853136066713710878415727201422848026825971083548440323207872629926360833682353471434194454802487028406023157541739114399209811757523364508775327465775193793901522174053677751397308082689295814009742424096663245256371127275554813138918104588578788434671001200499772731239526998926007344889536787546023840884563161206866436260069860416345332711835403868298476116559997395850081711369707151087016769352210205207119306587204232943367376612943973885522556573557976798795448483847878609300730594170921845018856616294672752170650749875613401771999207041914676357273072487369912122604321957851850328366064475250473555501861497817846228892630981428024352453509525341771499168825703052936994035249193004718133969293658358477955548441418729299358481051187146133695328375103255617003032549133648324739613350912817202951672035960629467437857895034783268578652695648468049772851048371268571371710174944747089771007951326599571977185536818992501092538130016192595691688560212821744518752775149044137729808714578718821728891394252836114476272385593027217713947689935751224213096850232388887355044336182239209673510124360918794427492709842501901193642964413018899346419597569212619882459708253025895167986898921776318809624757908047351541616537635979411987192357052180741057545474523286703219489442558181392097429272725321723344296968214353129336168551540947872360172324488054726452312277329954745258701008482980205872562874886601633986054729698061958995727041136491083854134975456698587824863774357915870320563386104439619169757774004947293513137570115484537992524054976775958147916672384240363706932507971190885901149565024226836664882553925400415432577255921802822503960734813348624446723667186940497582623354541377084135798028997689173921671637556307023496802420683015459505952557023291016881953450025241190194039097347605093809834451182579729476067653116147891893076896501563815659745545701931892765370873530751133774088803218658236918753605920897832799802629346000755537711655733935247075071309299891485974004737759699085619503402054651496887954393777157718744353085477058515846914858988677376890749563402243352948882704897037289535812374920703566055234002365908807572825594074935358170453507404950430786601077339828001741772715701388696819944246064281597875135795560927360428844682508435674499423211270261087659836015113712490214244874535278179921239117786846524745214093518055485811573243729006472733809020482957747407185981860374708684286717665404920163892211997886941891508113407401561122378383848947830545283520019375170240362580261476918548352375204827546060332812320537368384369528982640547689242779683051606032122941971305898624339279930653319150270488626943146630086882906036938913305489203172190549402764186077691788746463406547058650845093618234570304408010293714213219535645841856212002220491279122623456707919822267373205778074418458267976061672627895374645491069976169809979589349440103658324875263502040561446885715685084316663246874940845565163621245764201813071916375863674116631380809138742411055687043053580097915072331808364438230302858541704366985190788328281686095477247372106110289131615169926634773044198632401845844609052201843461377057755829111540009963815904567488874475681740338761441160651590356825801263089126426348110434911655130477948801617551850940401735494663309897855071592787594192797472071274201046444611408640440198255469724942753747645197415207441629405487586039283351014842032997658344919969847875361248802719615209204137908572720005625473028253292534507900617109339302886404737678812367649587493463409620386788766525441243443799986362150864341695101086395523314350910622578929210926494667836577247786854052224561095458041243543570729768588208531982249642560145100850197699673538324491374450242541091046027877347664044916635890341954130056571906109165828535910311660771647040322593424704180434383930722874810909784652987805377576186746140110566133453382033674431223623092747739626762801126711107898439074620801128156500389898936996902615531151609058915444466355837620116136849729671236565382836790985391828355289305589043017696181139493265426855262772003107393380496127707409944678929356424852897833059161296871451390447310222755068231356889186366469835372570926617460311594138251684705497261398939078673207680734548345027894574941971300910638001809666450203958374908000409224916792685389473093574017125721717855356592625547252288452987636361999067948204782699004847095167966877114318996122727724865218771091724949902821421297230591814912641664070615519836632113388811666884300494853790570587470323050363662041264565613231275086236122271260746561199518073931788593225451290704917920481617412178007269106795348325460845539920221204370405830516943074642362921654055465455434800928688359132339475448945798039732615360945805966700833166246956944923319302325595161448667877444353826406797662051236873687719391027503115161380602709771074129428752412878936468150571495391787113477904397126993393779245665340705023574594518096866873547398021846631398029079316126818030712951745225590953502758227266035049083842517044023925565469150691931514472336278473983933149135274596021969827799475964078993259558154187436736832028197629659375815060480641327952346293832946391116546119290464690718192565154980905423079687235355361273794723342189390564486895833368653165830116560978445940636491307093493704382996066787778813694371282496364727933852217652979786611217060627813202623645589310972893162822106395194215667804608020963575035872246400412133950584855358933001394534546590988260881555615516326633872233229193801821674081770373019020873454877625370262143702522777839078500945310035409751056192714470577586167708182037483154162989501269631312341365910403419220972928202706029721636727127333412883747829822332644925037811467375511290618736599996846385043905631496985453310344382771290838718414306640625', -); -test( - macro, - '-94906265', - '1234', - '9591459179410241572856537719704118795351000902900562305249195472196195265555833412754864166507031793587379195925582803572210371959180740848015702606653712794907807842820287303844298057315437721729780551771436713566743567210455419724786856660298500086372804403816338340320302120440930931829619194880300084268951845577897562834735753784665609019198203233048867661024100257335806608791247129540791927592412584156372409767363191327851323280497596039938628887351085641878361348960836551885434816719856675096140100735098153982014533453294086408481103402371073765234498437942986299185804946033932203517281211025355740639164406513819178508651837986562373156333090579411143890235647767492144926855911961561170349672014614629827840596629153866370535524382716502377298033129875940828099612289849768956366119182226196623644421289199029543705885301848203842046242909504136594099983847607871992398930583777526005880060061677287301121641838813359760623338793918913138129119762743481238358717117820874141719166872107856435512751028932079558518104984922747527693664219154086216948208341876460165162264778277923815846538502672245752434229656583577521062954818225701253649577703058999328419908839977797748333637247291496547242568819156256380939652968563081087936133413669763802314091980457139588435626848957026334101428382680905361934063504702859864753961075493938097121116859339830550708349481985667854659071598612299339127950437953067708898374986402646559951120320721708316727933224792697639478435468027888366917714894730680032991635257046230944591272236530617356025218569172482915774764506872033088367335012521246964352262715392596661114331434581419942425209861303052103159737141838118887593079659533118979010073029109419153504531772178157803880524448253232397504700393645418278010150165092760716226444484244727105637368962191673677518823763517102430372508776552119355215943188635023271972752127662635880598372673204814450697064559754199549908021939030958872733672399702043041508144639801430320943357267841707000400404222832758589098605032942287405982133506381460750004675066342262085479385836480909763864598878090750329455982787911478900279885781537417672577623574196534254896533751763619748632866305445903742663767222380368598056346743790273546285474116657619344057407744566063285106302957424998222958334563469530826042006900334894940507739429822757677948670771646446401475234418995859933358243130008180759536136782698587200342015804405083654362794667043715432498830242795494530307701824122299526072682392416883591382466507093702351999216857924284228844163937090047387165802061654658731296376218866164135568360515357769852411309461140876077518669664598359667926801346716090206666283623307095613238020208838579994957805916629319170228853022067994759954669755848747912031498150020489023940497893018969218903299457329957933615236619153547835202992956280530580346188048475327939781542919126773872016959398231243998998083738131590171425213432398708470769525054179511894591276471224027298513771970571872065972609539084087063890507232242147976054307202299424358550001984668194552970122408292816135793651096260341402739670890290539634652749733051936121647220510837557946150318744548419221954103573224004509428899118772854490532692636349984796523606799588426404592878065079890048662999499258496147403823670334749053718615662500854192465254630734735470592657444348319716921656900540143255754066981370219643196580126846207577613002079274870394367728741824995134268682147619610980271981665849912854000586266885293690909808590352073959622797877167704956570701109840686451917212334062294475098780452199147749227206592489248155417621634742859122288908494376684326737988496746942171234696512068034353612026733019551888985186714851252843134718646972681183302261929938130968961934184204726044095752598480264969769942628031493505879722845317398404404766136527772383991566308125162547193990579656303403990650778044081542434937085597660623254423002156634083383451136994840415138061841621305110130354721521708626026722411562666098237182221903896143296122843453808861853136066713710878415727201422848026825971083548440323207872629926360833682353471434194454802487028406023157541739114399209811757523364508775327465775193793901522174053677751397308082689295814009742424096663245256371127275554813138918104588578788434671001200499772731239526998926007344889536787546023840884563161206866436260069860416345332711835403868298476116559997395850081711369707151087016769352210205207119306587204232943367376612943973885522556573557976798795448483847878609300730594170921845018856616294672752170650749875613401771999207041914676357273072487369912122604321957851850328366064475250473555501861497817846228892630981428024352453509525341771499168825703052936994035249193004718133969293658358477955548441418729299358481051187146133695328375103255617003032549133648324739613350912817202951672035960629467437857895034783268578652695648468049772851048371268571371710174944747089771007951326599571977185536818992501092538130016192595691688560212821744518752775149044137729808714578718821728891394252836114476272385593027217713947689935751224213096850232388887355044336182239209673510124360918794427492709842501901193642964413018899346419597569212619882459708253025895167986898921776318809624757908047351541616537635979411987192357052180741057545474523286703219489442558181392097429272725321723344296968214353129336168551540947872360172324488054726452312277329954745258701008482980205872562874886601633986054729698061958995727041136491083854134975456698587824863774357915870320563386104439619169757774004947293513137570115484537992524054976775958147916672384240363706932507971190885901149565024226836664882553925400415432577255921802822503960734813348624446723667186940497582623354541377084135798028997689173921671637556307023496802420683015459505952557023291016881953450025241190194039097347605093809834451182579729476067653116147891893076896501563815659745545701931892765370873530751133774088803218658236918753605920897832799802629346000755537711655733935247075071309299891485974004737759699085619503402054651496887954393777157718744353085477058515846914858988677376890749563402243352948882704897037289535812374920703566055234002365908807572825594074935358170453507404950430786601077339828001741772715701388696819944246064281597875135795560927360428844682508435674499423211270261087659836015113712490214244874535278179921239117786846524745214093518055485811573243729006472733809020482957747407185981860374708684286717665404920163892211997886941891508113407401561122378383848947830545283520019375170240362580261476918548352375204827546060332812320537368384369528982640547689242779683051606032122941971305898624339279930653319150270488626943146630086882906036938913305489203172190549402764186077691788746463406547058650845093618234570304408010293714213219535645841856212002220491279122623456707919822267373205778074418458267976061672627895374645491069976169809979589349440103658324875263502040561446885715685084316663246874940845565163621245764201813071916375863674116631380809138742411055687043053580097915072331808364438230302858541704366985190788328281686095477247372106110289131615169926634773044198632401845844609052201843461377057755829111540009963815904567488874475681740338761441160651590356825801263089126426348110434911655130477948801617551850940401735494663309897855071592787594192797472071274201046444611408640440198255469724942753747645197415207441629405487586039283351014842032997658344919969847875361248802719615209204137908572720005625473028253292534507900617109339302886404737678812367649587493463409620386788766525441243443799986362150864341695101086395523314350910622578929210926494667836577247786854052224561095458041243543570729768588208531982249642560145100850197699673538324491374450242541091046027877347664044916635890341954130056571906109165828535910311660771647040322593424704180434383930722874810909784652987805377576186746140110566133453382033674431223623092747739626762801126711107898439074620801128156500389898936996902615531151609058915444466355837620116136849729671236565382836790985391828355289305589043017696181139493265426855262772003107393380496127707409944678929356424852897833059161296871451390447310222755068231356889186366469835372570926617460311594138251684705497261398939078673207680734548345027894574941971300910638001809666450203958374908000409224916792685389473093574017125721717855356592625547252288452987636361999067948204782699004847095167966877114318996122727724865218771091724949902821421297230591814912641664070615519836632113388811666884300494853790570587470323050363662041264565613231275086236122271260746561199518073931788593225451290704917920481617412178007269106795348325460845539920221204370405830516943074642362921654055465455434800928688359132339475448945798039732615360945805966700833166246956944923319302325595161448667877444353826406797662051236873687719391027503115161380602709771074129428752412878936468150571495391787113477904397126993393779245665340705023574594518096866873547398021846631398029079316126818030712951745225590953502758227266035049083842517044023925565469150691931514472336278473983933149135274596021969827799475964078993259558154187436736832028197629659375815060480641327952346293832946391116546119290464690718192565154980905423079687235355361273794723342189390564486895833368653165830116560978445940636491307093493704382996066787778813694371282496364727933852217652979786611217060627813202623645589310972893162822106395194215667804608020963575035872246400412133950584855358933001394534546590988260881555615516326633872233229193801821674081770373019020873454877625370262143702522777839078500945310035409751056192714470577586167708182037483154162989501269631312341365910403419220972928202706029721636727127333412883747829822332644925037811467375511290618736599996846385043905631496985453310344382771290838718414306640625', -); -test( - macro, - '94906265', - '5678', - '12032097777224921443610910803648284170512319198440026582654592944907996997711020183354851559738136209876116410482775406152550319519617501575389742141362538671375575270130368782344375460094542930957208982333657039900983512378934606414708547255120509688221248878365002162079958544994081468523927315675060726868126226367119441190130650764598697841259026377226201673036205220245238076301842775410518683141308488299366012792925609747073886802877596666532246689317196865573110094049146280756613633385237048709371024252858686340623252312452593430321228085552943679754605680459379364986804128577790131289118408139954294866373981926459619424848669839958145224015329056251464187884540803724925854941893314508739139448540059027532063346594260009340289063635135268446417517177773306225826478834782126901952841733199463653563757819068049198556549112038207670677005457584687670138285992773936407404706326519609992105860062869525897101616064153489988499260854115519937665672793315389915719723184695407552227493961904033933034506875702096849362495327673029771455889030501830242732676146364350412302869011748293967864940422889128153590781271839942018607109535085227963257602139998078826097049418704998656236212402366601095688523413673512998518901468183798514551196413118699461621524416262734189234150826938615238369409717915433788697444341087319545108423271713647606132458422133503476646278312763913773672381574955638642484777319177742615693192492030931928334799325795983171516582124249978689831869160939605527534908432774284025724078112334305143452973560047389979442428241832752514170684582991619064835042076127845136974614077376818874608487426791468373615242293672741372298898215088365221162041567250511944704729950839359617629579145185451647138688599424451528822613292149181525578785717464355469269950910358964367355548167095991226459148148416836033320461350750016925333661337306860380813570244138594176200254338594713997700943753269483275676699592254818599648860765855658967021173586910470760937291362350281087625944947663940083612371308499706464739236243824369828191050651890831355140821021009799707142643546563126154302728058269983835130462112445179485724829519948644797857100978445782729948146775639685486727347085571030457542493031359599157910012477405633462126888771916787753215333242607039830155744016882502462503818969602202111471162936075917294595421685134910453228619713406894527040532782467138493248067630974131210865224589283318665338359787682806475430520542164582197378961886474218909120025123091615456874986351962126541772414045818060094363742441442667036502961807091952360039303360580900852680604055434020409419268918051690557813552959236488040160958755768871367230392867382735702108578451240872919059355437258914588914059658578625910689412928981898994374868014765744048731178533977420205065542882559318334473630109661521143300821787590642741661630560532599207482636782848372575108230527673435955097474563225203600719908173095140979638933646119901238452049016502626977563080111918315881318986264803301054759949431314581482431408037019249299434256675011740150791380650719740873599060034519923061234283942527829654746500679243122868491752528092330799766780299772695603288900967560796775174207884494845966890228277702276659444815563795433225980503597587408498869891219703208161074827864088098815419234882655313426926283791847398673264577617151571464296912550417563804886979853576821080050211194779490844153380677685847777313137638651644748358202947322079765399238487437874318841114773978903668929164955398911903679705111008999142589544437065672589266355348348971511169575378316208327903577552525930641088538955350354489078111990562226354820551745938135022897672457837517586016736813649699772486263689086502957138019177196070312090344215367177632397930739405411088757771866673597796220471619637645139435250941374184393351858539017096692099099345257001920271362387534252371917508119267325168864330673891152067448719178429752412191066355929358566249659077077560550302293786857736765866388524626228805050725063109877803065961191644600499168820792325163292525536974162404755526606943846795314338495539699560103980570000575730832399241743616051296198894674663823826249501962992317559847798100096759179383956869860153118427566631515292600888345422893802197242997389457528273662177569851158066854725418877583679801690209473560655905719642363040982739123254770408905429249758124187443434793269173022194566001870880813212255626734666407333284872705324976206677741658696075649608364892807470963909485110281558432545948579534204538696827102504407100425376019173981304010256984425288381928914573699655169020850451341503052441205769215186509836760430481696523650279090720163816251521349287308560407457609483984181328774565719714613388489095110023571061353122279353104129328013968956403235071785261847838169630745374996406189906650415573552174116649660276541371408913476854939747876731425608814138059458169543823165972801614100937621904382981944188903180205906327482865751979701901540575440519486923023420935041930682172192953852334672415568738221940582193314983240970450000477463045431237229063460109818726294597730994303217381825651493935869034862652936559019431947352777726119926158367810617503147922958376143964979603245915631333786351234314954623412494887023938633377421208202061177648550247361016141144451615061150414512561947705053352442969412639758719469809823355676287459924284669684459858991524522914802929760964195910108664304507593383032621305399692953057899447189106733091012594841503936991785388985322660311685783354745007380474195833316048135155967714601451196311606046191001166178941116722830537202351353675803239601270737264305300314769429948779160815303098446558150519469320909471850141905795161388126098051093418801571231958217059570635407936987518675272606139316846781769414872368547904423404977322742616034539497477291204678516696339549373290014129953927115273383862176648175885100832898131993707682449845814289537783195056908822732162500604957529260337740262458814285530991622691309191620743536827546586516016261289544348330822509040619411107336690611176859744962777081961711988981244490119102057017123472693131597991997040909096393811129374410032160780720267920557429521283544362429347063129854641992658572996108093014481102752542992814642875292835964120599399273647779564854999067324549593959628020136971251523507807754590744694873740047390084491259174712701241947149566007259569113369875274948363558659130833317516389511341744440804095510223434955552652210614743910169826529392899468656662706962138458679700014949089569408033941330187462290588839847072683578505493439388126630655399425769894783841874574481277512426591408213810373551314332889400820073202400253692361444659207630759168415095760789533492551330583140574981012731074049549919118053417150217808638350432013305694321389747006470410615077305764765120127628910927114025496289209479659319746699938956841225054827585736797719039052465086433182830701745898467197621237268086386733129150280583409523728139312677689819712362202660229834226632997964115903142152545104059172086002463963414350578947905947216633376664142189791562053019113774134585010114509991806040543148515641482014416718677876276580431730562587541020555292496453826361453188845475398099905277525052773545411713921648813979140016300112385588170999474985918656553076765214200080620922916851475745553785133089372514034029601819219527045772849932738904614873836099307092123571006738447715320002736785859704861742282537734067792187177608073549859135742645615364728840961736910729008697313304738536298720611573424123582407824500642154138363464791319257510414579292323013964798548950290960997144513319241370751263381191179501838180558724038708020579905145157293231789686223459443044018289699299028761818401590134930047434655260646434988879638156693278024323812521554624956388982330136290167049424094118582772096018451809597401164846924711716262902829627380939680535156293471439360777268668365604921618839689307971611636791474486517596411076810461187507596434260046979222951771970881882637300844957670414379573068900594030059669462435172746064402491699639256585470646371028345111692685583568972301562562922256758180181085480072911408202795425250027969499463641174613001079713276428421215191667447359883645715478755796737199406110184987838747951054762875131236948669154666701738693610353768722184367702584486223362096024384484603104446694719810676365358898796150078397378880308527506601302713337537470154717940902510142689198467640659012705019749229659196945434251394512811731664749976526521575163913656404283679160697284832403491752877439284481271499113105959231314317691378767826586965558827309006336474296703042302766970494721137069514776117071812137188441976088074396467632977148030639633204112209971813503021630520258087179296520213138286076436343573116739144719310772751735156402034501606390456169140121695688607125183103173251813914671347610021351582630598950972263101156473693547645926791369585126525848123770842541512577658666859445930626122772214914414428878443618845511938720224570647898061530301191130932770667765716795587750061205748309356694807519519675049350933068580375053894078242210199468520630330003161545121375796842051755736417199147757963284334866394276249640731433231049313954526161951624809572619652276996303120934045809848958441871638077879356764855185283339151315501229746330405881302263457753882789573262935098772141915955008754732738429440981828735729272802882701434622480077709131642461504208927055033641377102447767720176633847373823944955329314383832782143590012811927685177026789234911929577093962457115800486427160323294733691288587100842884523422947373759687195747031917611825381748929965338560830322621555697476051991779833983757024224308964473525520615691348057039080995096707558993173247103410555911126189269896588730810492029064501420933855518163570985872578414596537490581577386809453787410688705142748561393081836124251051324584698861388478139283569598076892767321443716553246412277259380509438802329441648705346383613734547877712888220362688053129344779935227318331396329401655637306388721745349393876059195313192731747216875912473534083064724394534423226971274516443125664390773514132844684527673669092932331255685956744208760893026251638308006285281531125557486527757107669977234989257848144696133615593927212707645061711788280447683309281341206400131653863420785992756287508115967050826182726890127091142835164557166691300678394990747493429085386293564966123136506231068567056989317384966475475729360339009395818317246772969137113875763412531168727939516546447462848160915288609593976373135718583011204195966912413852164206268427095555948610761307815791560355585910426147327321102341134387395444132445427019438961472388259276810758042673037214059651545259592406090068506838010231567454628094637254355973489738412673187077409391969169545123360596500128359039361514821593508030148522205228449973734972174002553108195263247639174438853119252163722614381071194775578403064409455019374052283926424489955638366392986417357495741112108742236903909428659619606212619900649574073585165166583918297998340673134762427650800452972036533098907970092878703482852833490281729498858731156264911226877099786698157523214591321994816532369903053664184550576973511700913443461257437675437472098084407017674888009625137498476466436818879720524380130001916537522732804698998210196055682123318139008022653778279715652658727340997456249218032227963658719808122825441145385176983894549215846317551213773007016356738334267963377888011544300061222386574258747191915588698617637837212717814756142051324008302080298650994166585880612515919258375738246207644772437177730335392539644865639849308897774064728887770437363216880581815066468852825832858170229658070845319130874032026316629150366399827042959910139581792401984719737440786491444999030986092724355755641888514009652129027999591099530921894279904701093752999885648973445224343373762636465568559928662660225367743242647517117639887521310379396989258168883666755250191993348321142152864927369234668649063028652063843003316973499048911633219208658516326528768740257621395512872408369502229664467552427061041482906643131699241509502631730714053932028098939427452444970068248194791910834306048571684029297039763506306003677920029786132935369270257069918171451215129218456327859444234926254208150987962386182798994154872735035689186439260489113584084457851762452138367055101379588122088844841306204874692945577566193189114109700874804492781437652540985226374341144719703543609354328682925954034266359991157018716516446223344660092640717378693207071014181491854379467954573981289282127187230877577110472130570576015105977305257910229508244095738723967730842098391729083715169089672956523592451123266861612656114937473953741130882127624277059388150081629717639957137442000516378123556553332349275408205751508548209994904127879234614825403357223962515911129518982040378620086754855361296612014949915205044289352069213501405997863521354165348782511867122622716426639791821261702368775506733831743186020155130943146663966007407244597917005719991265853620211871215693990090865326620251912533146988791177682866417571901522812420520954626741756852429297080414669100168753560040054760117697607946028484195290870973497362267381612404260749108299672450420697873731172732775674054385367218094949835013674973757423265370251319346466334678075474375906897432558238767579231146265140826352088422254545690686302743333477665277149035167938674924154842983621768748297426546172809743534122395481353193555875026625899972752500022321576082052828487883396792123138094495203111492864041134795761256726095663499686254762052539889279642048007404275482585612511343844033096850528226343612783861307535354140366802884442274775822100977205037665851810599890007341178775130240696632601594694061697231625625860004620538862779963203630814410243245714819549757828073441407122131050844039240224163642095196215306864657309686247074858678000635402415836405930550459058799511632845758556493533762990549187485016639012256731683580040073341731704082434264243561194791703596206015014846543656970640029940075455836423615054869940691591288967540111562931377745992026685841553681405592390900507543705586848434089001303884903488059141717942395691356277350339460187131843419289217935265295704356916529054605633813938893737767409366779159372882254232836716324580262988115146013874569597106960026911351914668502679283163961953086528727793944040518851106607715147835491925402383222147418855338357535739845538867786357060338435261036202368258020761466669889670691822601560184917436779215254347489960930087319530836518444337988344598187203191595434829132950413104197804486083026745302512606864460474736420264409880729091060010368627194325379608471121667642965001108323387523924855835054547593985702842329940726838791815501738849577938132081507924442944174718597397264098866829822238109143654804816673202408821440775080110551433710513005759571403757096182158076893681914376156120366821040079723970732533775297717113208811739667056486197044324270922989003211680035846379754027311741122863788335461268176688251174205660568758427931660106752538935307255339039355388757057375250425837093302168454705863145996845095042151313295262463259661279787231685169235050323016586688299833499115629856113737828434665438782484735547300584910063985708776012855041724554864958256185127598519785482694466456563490174364083687348114832431925384869094951858531131186801480404938023454443571034693096579794784282688250620550447004592047288521549204059159028509660096017875307950532319742036173203952041761503785819360687983493313089577551873561446412395575710594370027055187478904534143877344909963663735297933632031693194441131986356078620539658905801102236737444661108267332204176723242428802368200731035237320543765666828751910067807455585241166705139054718355894926417783921107593070742530185305927934025258466866218767376534792597033669822057078961298957496217109258353525748391156704355202862658731864850654926248935721796777991022299873209352867958121188810265931762818554937603100731645526362256769968645627563740131303913187747664074382451124596816950157537126085105444310397381169417181279755364952019062060800318321532221104576465370046063753472086774044100444414676557036622159972786835290325849755928597463426695781953163866965969052547199558811862459755929880206105062693162596966564969090523328485578382332426358809045831759393541573654498007053609291367872036111445231279494806931031841205524707641695256162632063010224942774570614275679640385413454072868377460757627086865145342680411059337436108163325287906190993195903620201661214403352143421814822960031390185721117950110818389291340253326486009897862116192130278391424657241044004963932456332370837203044676250871218583290978562214724386902489542748628396358186325956900204476723680860137151218998668021260767109942583224787827906233417831491624545860788315526165511635197037561922517899904690761031753872124042336536173826882605457634858121101471892751287742889625763093890478605491801544520792057578574375773201143929421480324074646141024278246772158921139478563054405229834847395540267665801516476465649906633858677249697918200443907759577085140538201853478765762117960994914145101764724959407470640463811314680073362866017160216055901670762363844476940433763519832222385027792750981080965530232813715566803117769888159323419674153708883977329384943689553768541789213946129813719122880362388613061590039120847635432704222352763497996891937276538781966653887199495265671013361386797466770701748928272976698049303363099194915667274909798041151694131302731875286034428026186929184304362229619692102502128326871687296959400302085212456821262169947535776150082836000223031048009020371350036539197512764290221947644788009144903781547616778821484803103102745494206849074992779830389209747508799417151536020207175883478394172905960788120783232579015657004053498129914455441618389610549539868266323811924818208880604509127630703993255747870363319837810567597787888248562918900718803552796004261069194657586185596777323973185892714770276436504734272537002948160990428552665125608477771575963058090305035115286941440877623389294911460277602637191173693793231079024899815378902648788493885795214168271309254640593363869703425269994239287771226535309826739493886296423210090644214129966601915093662511467744154185692679773644695709701672608468044373005103438648018171096398607426443413194281519283533259981445906676653664312034448007510997631193422830884833006737772887744686368777653538919592111949951373489944710830951650076413715452663964540719349734000663229824949598114271366375624217568372270930581796391817021771734034804435202600593398262992169912934443430494160632096045871344133239156139910775140126053555363620216919941247411877562901224722321989970134286623258958498605964077449818088184783496838986907729353462388738014823594316384752835667377359432034427008829688816033072344951707746090028382556104976370057205866084666487901937011251702362871920843956238611037186048336332441746362113871081603050950760137657339038936536596933851722041992305843336304901453452571715630307405640050171237176240125222557358332930710738041186084749584740450846611590610786726669986270473854160586469256252168384869883596851589288004569216909578136486049118663430702671507574735910444281915534186018197115110593685299825714958042538520471370923783862810373944427764167480823665142849781516572576659578160735209456505359366276175015044857079506949581097412535399513752605101582122333384186945231604776461746644687207899376798357792653596666581824693709787573041587757626825069517113369429081460885782112243077774167939979145984687560083045973141222583991194116736510260934423567193666909628226271067954142670416399861275578343838128155755377702692215310376282921807545085658277051619371602033888713006177339575658405744622442355225853961935039933219714558173292667708157166916833886949301548495619142336871670282820976529735014754467417983365683174117809170080328865238203402509223643245295215135732316886815093541440338066497831425192534469707791058531207292816542931530093442001376701232809955022738734490848042941077563991314157582176472360317911138496886256725677367798535879492979280051355429572780533908274951671490815885229571886451377910940010012673321183872398403321907312091527491690998932778856646700965310668633894463320063118790564548548680468929222591042338228420943806756554406415931090291538143528789629740994863591079711320495984207677768776056308656173482219428268311986921414524482951641166995052008686213317172019535225407298322183791610925122947801778616107589077345869377990653281139028741071735597803862826823503904687705298499157856081719712796392689492483355489380957823523151647371561894369978535447318492691386953116508279327857453984504066238005909847859372464174431153967057270158951933229971026010966691002647873844722520078261307977064543610448466409873414879293871473093770897730342188974916791516079659719631290440856802730239894028254762897599982086201797037774350455318445666421091272654386376102853322186923651805632319156209526417184248540024807358600433160247811092932618503532768368430167126161193398063991915395134237015963224689432846551459273641605647876407353197376326052974132020864262566344092487103313843164740701039613572905063871725731123431656363638983017301386812075627738970033704925617216698715754404765227506689591570815979652750336513064156973513088297698696477005797931273090405805324066030602361512119840369813400472419573729403873434074573160162870936318068249575178675647763166913751293933551646401329625534493843177325624465230372869642679078724392280172358972274796335813356986697385312329187363931167837979111403879151351225430729247112426650129104919284568825235232455725351552224363906641354967564821570365975247995194169878249598512813403591842113734352236034910030599591245451967209058347539059536190947433656585914973072966125316763518711707788780035041883398613275851057398845335005672095171230325334135754312046899114278318582949758025840627034073495122556098906615537245941205241050630832317495323472933706045476448135324622130249061967088040634256046633681463998139104615271598326353633335243659421316638748257095222430616324419633409773550120132726761874278343852462953247386966597193056825342009690607297567265709899931944826256174731047305094081727770841080440016328196894856028563604702780682709363667848710891858610272205043503944199299286748350079640312927864906304355154798671043210363438224540663084637003896566824195029371811104076856777325671062014465716574261539700730333018675634121018453203461781631294981764229198232448947654253783388204297001920517253136683270888989223979423417588630101697507592396076446071605672776440131159545850932553540460963555258875042206253533925856199633623872569538946264824099914287390183680108014685374620969458668067114850551017647802720372476318759518097294889667098388787511578895623400536394696909686982089754739465395458755824025627145860540874654096413723593095786861445483207390022439985873830588574664429664328016256793764664176593210650680088966473569586028063185778696846067901539484777171526008932126642124726149000234264622535507932061596730778639639322994194566230181315095849815600439054976860942354245780811250583700351160679186551987899007553450837968473873566770319473147476749953987063615776202643846558316122703715582310812032981020745887175302830579849877162396208954934582206235358053066687144876586531305671914153856979556448429896161954702428046020131267519937687942784998876608574424998618033186526320893410380410615897192637383212667814571224040666584728535219469735065470507466917541842491727590582415179332124764074275007615003561577219703985592626963898540408123901920954693863945334300894449076898006775718907497203849104045111950488579240549422430862215686448461635287540273933678378844195074450255145986318612166430395304017670650737974685138684856887920372725287537626880802277074988514877737086561392592097851272353742818024979368746610359299993821608029744496422263548547379227059308330732006560207940874965636535953389748254985558222428424330864460444917636632197361629108476540664208138353154832367022269303011778867713003519669926347227092605460218997631456886988546452742315709205780440409392361149984816382171251958377059474144369328217951856030362908523108523320063836177218545129144151675726728971709295080995491115727738994384523099426017049570788092605348295244510790430809310252002021162900702972004743370313805442485273713185126694838015211112954180162169003605131100343992572258878781008043930175009769360708537294998309182845117912092938413455780854377238800073118887421690605050678371370274063825715320860910620948562818451293617405229491236178678754278932510338478945063584831864172120232848867941761893175916936978589066485863729545344061035238414543782144041420795359232419130120814019590644487393845413057769719569362935783498618412118335138847775489214231071866809710199171908881608454495198717226829803613782208248938966092151102736556383497239013516522084118430594971074187519260946766667423607181318562263393260060663288717977893874080349690289502370587468658530985736835159292642558195601284611160860487456916132188445668274130918453531643472494048279511660213922482152284451162576937159479526872950903047337162660821805029600708501290793495192214286757581386114297917781127145691164585515718567911708522043336429297534300930577150477197470794166974719236537212770910044441149771285775283181049923538686195299106209763353070616873255072368061193988813137514561690385137083968163734396360347928328336563595006220960934830733065521338335841965986235454589498682179372157178621143188814181528148836823240009313917239615618819685916460559824760451892578522401207920356914008125649666362232615846019270768411703026907820785686893329687936007326486259085396965025670221843906365927274024874373060432645146595290306316201392153119798490572148328091329727540219633346941261473165756079426541378711351627269272757052944951094355168530350261245111562524094741072397641389854917843735109228705666266863564318304340300463039112532153772402056001825404569674075795960482695655750098767071905821033260887679978762025881061325337213163524622779581816972175555663637210876981896507755878807206231301747997616278339215979267473884231317543544712452852114555647618822488813490625396727766305946129050714786088423305048954173700588940427019522843104010086905515156909811517470970474323555351456229248573825599238197370105299573364893745750391351067788061060527046812509973058875643642096985994846004078611902478115985749938866763374390207356150215198771166488048581440471218124332859752158358015616660187047654002371295814353685889164385419937001586245963586686123227189249339843703303467679680488282425879611225214199203660669304537817806007418484543257294498646404096533225791315505537497715207372656046521498454410484618808462877318221533855177115026118801994635309492636704866960405453702180044263190730170186585393782170839546858732775601817761449580514710578003629573446698223526303276734226490467503004836350690787693180419256606367206975754427565647193757103622172723445912571921412299915576801160624014585320520435926902108223783097157413714400856842549485204781754909051139596113033072378955171738006815746107126582544226522618574999884662865437801703547910979352686377121384449362061338382596983291230994834971550479538621580428614474707245992895951108596353356806792208588625391355419712148342585326639448556448414437163323753111363340625419447936908942309059384977968558654468049438582343818038934475031358918368904553362235318960285027300982643072000467590624020979094167872273398935195854660177797067882015023199367866518380157778613872943331744050423399154264127572590316747837829937185838805929919930426357165171535205844319577554107598132285773629025750828527147869294916738495703358765482635112741426231530287972819515170191843245039795145568805407271280931405842189126545621691903281208244330021380936941534090926737001841378878232358824105952882091391122376983197385863111377095821200758977598655636124137542127167825095347247242493240787156813316762909697688864136617808861689815132468231141188094757116163402600963896457848764885057333264284354504937279338775019887183472529765242120841857211466394385600886129299536196104160966949461244421470876475635289658360673044133988472412908346503168644044604661248748712465204802503052422913247662994388842262879693084905772957000634196203224713014001316324485989167462563998596759472917793384738934828062167583801086989253946454905163667273365009826486005589759567623881215672865627059042146648672881327891063995694457750315379828488812880269962995872715826927673202525599988948924553574496455072613992039779209442466653855719582532255207207153068979266405561447716075597208003386115629512060258961979286373743813337931101772517953360698302031325001844985453129783938956301615754527286888929780663765211591009120443813269934515079913668898214910192754399304618341831453870034267125170721505066917586198732535221716916597559836503614379370118425547846931569036557590812044714028782560536961879256523449737057538949699208081652250218260123107062251099566298529927581162698576168546631586946049600127140987141317674460410902993224596022062324828491276267223741714140055313279819368014780323282408383224067009467800172584303162404423355760504326823431706740776861818994506012773534445613456631600402675225760377368762722021968052635826828120651984513278838416227839164392949867613026178865022522692004106553797610247860158988661216559547229327484286711157186964559739720520556436315158359781162799170405180320792416230576841207330921642427914971360147358390054635718803605053812837473635557695381145693736966197784412835427730682455377495472116907945998421668486206685639652442308850167256008495070585127947385980542764963491704371533238862062927529061728993687103715584617381449133650067934551429741997596233806357685350458313224546984096007149813473419575258362349731564468684291660239721484472043256211659727453894937763642732739820546069887466309796309447539968295322423746786761899588378272444571292371367413474447197434276820309108466176334054973272331173340111659361442337130792855312977415847609894557657244236135360575415882254468739766648258409923847596862145560111671406474246039147740994441351609557249626167418534932138685355488646277447161488690787234126802880936621565723899904615884548341472638437772090419017559362342062609301959534466652230774497315103874040974426330140216732414915907495369817982025864413682320190304402284550455106186758899229547597245258424329265319033989076324859178607488037746916527718266949417024120162124868059437809624404252426704159384001199136240834740094617360560669898139739645400311944527017550131601104533280441817207649685008412565052535179862086175827433761623348775986952355976268937519226183084278136545349291670649785347842730455081487877293986813649230888836033911523597766312541091611558308804656825040751880201229000742627616764846092999606733478252567564690692669504889322114105282631889525319858323705525911497612288157996632667685670674150846432327565528609123127086077539690737908771138085892200113245294049889922704737554162844306763132343665963132039823822365456559043777707552305193196770793605848172893387453594424454474013959098664586068848120392276052089591591308873830873345317112789906683626082510250289631190568481346881428473945619394593511266715086704096809000035241384030443602237087033327542922826698398494829325813183260408718893212433059617843940587229933901382943262992336198408409788514398330434599960440396485182583066248982823883042200111255085981898391448344844015751684471609252769042652840411485899734910885714254073490007645062005967803838338350515620582705664016191350475064132715818275524670604480386741711701135361668073237815153729800159901327889495086187129604447582390156419305608703427826439346018905984357281977986898496611416847526529975227719636005017771483921982957544197799709954130121091633016282666472057665994141283170246327843904936295814914169455433298130711317392343344536477614717883848576748172715876667106217813834587606343570080150703180822107697621328830605698506305609033356175547929890746964404950767451267747106159270327510593755358827880906472517244109777980040119286343261893970180775124057054774158177970221802579963540456256569061867723885060688202164035260408533918104432069412762092767961756595762676589021880178838196631141734156532209197898820016385683655803586282227835323540770476387548613240989563105953577728703740467085125879358539676422989918253524305042736487362952197862376130430552678640237349729018968430033265542780883750558736743752261945449029876696946612108224851115124942879425375009248761228804637428658896795153370852897642290653016040206069997053451309942591115365763315347798585143808043185383293137605133990375187081546565293976821820681678976667143825155588879797300722377840466564345393925544396615896674799718417150813477090500003898193451616746130407776930778672242012416461426697352259907686766455115834355953750908750468801886412209297018951915865714966322975970231743912119114106738120788423635459798468818392838721078133776550259766032933645790131678864392198922153478445210797007411829472852520896641724546528677899228076406095090087054355112053831012039363483887827931984497205305580640089884147850679614566821898948479674022244113913369887487652583123461801329225543373875617324208320681859309093341218594477765154347005165214923914454731564386152568222327274320958552990828960284112884233856381741112323189817039205176818285148223632011326114683897977754234839539859773555387479931478369465852786548627650813853724070487089026934104735632316188699054916850121902617757361251685208213541489423125264663780298582285404482769756412105522055863664088568917771323306300523891885066913901475208601262155693104850152972747067125562727745608865730314711297367302397805250438620696620826528991710532990343302838492054402628712678922427512444061374297112648006020563822297430010181285771385041656979587178970340526369080649857004814587864116807509544571472638333034374444934753562266027341209926917981677891921750897515727238195821470408569780330165534206129720507627843830335242167825939925171230104851587860224644439220292020253252521515829520218725721656441148152957244204914499245531265109309283531415930597420172103218491273772895034798650668137487351895169131869380823743909292549280691725771478618398588851733810124489829934377473370053370068252656647212635214606968547927504809038433155753162266329616429449015410862283066225309223030055256064379392216273751092054318524673355685810347451754467300668773538268859656515445954574923648729683873935557286856820970937068655945793715092808131171747403868732588043215625794798713241960194139927877235454587568468762746272019100094498768878435303678674043109734750924359994293734355746752800574597686230559451123952878914382180299790800323290843096781932073569058248305026863533285657386011004060766594502913168774569065159241049643726694858160418911013311490706738036543681700409684130695301318926665944626256463817919659855204483526903636334206401621354856147973558569067520506511253677092000344997303422716188357301982404683865947269583956684546963367459758762687671678204149310431797725100520798570137927948407559741374061481883367972415208467850517662863773339874292705113236025748070303373436449698506471836270575534367072477137900735911028494106738086952233620846769094804738713039865343227698048631407498839757989365214479653306186066720098433994778082034252601056288009952122283076954922176813820889628483465616421754123937579558193754200095019239139515555511223697405926455097278440331386885178334434554052038015454864241788988257555470096002158416471742411410132996885100140752406174456919083750028326577637466209951318990330737079201943113542966688636484421817970036239203330453206764934536684736355707322326827785876446310370573555594566522654459815454790470955048621062330510444683333038786245129101219361371510125280334401845995354716355081414363331143924307309675133524204853828824109943599655989890178320729881597902725812942771540675060969003063075143063594335159290803487756279512698080233303983448523903763359578020680403822826869215712204567152735947916516836123801571638451477512947633273928861312235512576987086278058220742708761872709578297417052880180662367826500231390634119435668470543727684869857682890608140863953707420877680764412659167163724061796739633033065005264111522515204885857558654834258914573545195512032180353594911695051378068719810556006895666360047309899697571949998411847437091347874733077520204574436565617262186793285390157914385444947163193179238783098002974102908514885479387830864484899289781518304707739376905740671105223300022583960963928395194012317124630264096534995267171526593770055565730102494501137676561913334587750246583294305250495353130891578871532092316372373133107902309220102841925745042896381868642367418745319420730865142002648204585089869986704818966935411839771621427485830775501646076259582071540977268704166605867826554568530493151242347823449624187048865683437944276656029782106486814685177512298790716326796679143241180948696299889708040355541198052387600659238816546438629657921933326303838039366429868607257229153586409564863587715116286506248407497620036497639682708720641591753907274496783732165772299744820271810956549362372807148941506408038206953482379076431012118157117732910126914164048218394564547100247423760878689918169039921521753045153136140852307023421248049548015885572583792382485175500534204824970481492908940320310430809050323007986533558215703588782544545718278427626486375885747827314014521764649075125614840753558736191501676141412501389041086207604364613946110943290698832808350946105405659106878177534966935163165977743784854970520032448041881269436554799191892238890741452952579974686319705933896006655839221952956620159751151666300129475309250350785976428156893784305478622359782685533113861735520731866174351824115841845075091997649633694047866430158123243404433057388021248152371142388316099631832447205081549938790835458611253943435564824171299287489119366707640567857774181325253233507979780771975461697394241257405396956542526065849971304547348847901021479486605612704247767646084737041513530671846138948561060030258907065141688239455904675293200356117950112887673328192319125625450112001441334554826262046043961154178777018566846299911001936816697919963389400196333444219082726126561961439286151423991499109774369393437975616583894807974648514443152564762608988320176773626728380768044611965217042661464062080139705149376171806476488738827250154569276638342192678366431133871111025133072862691969096467500425521305379670524615424717077214067299329167718710591789934002289122069747920433953864968281665817890773234078288875249889546074590578021210045020175846649075388442769801561868206680361142266963414252212701874669272948450859264833052568909056061160609027359184255550131690394077096720368166451553160609833896170781715866268750533758548369182807948608780968625107433984390434235219689740367237885674707704507030700597244015754049856015155058928190915694812731538478889554953381956036083413176999479211030070256296238738351346477023693051810382793957412886791553484931648794808844286324406999962815018551120571300130535112365975815392599766465092145349546061127412046819415225926986188716476056849908748119793304841105307635909081982031362197358414422316767268043098239315181137479061734502360873745508395271506258881998152137286301123636845012754834291165393438286951173209240049799587871290266306404165115829161019204881466233120224197635902895287152465704419993236013589982120474846271345840260611228369146254161192044127219280174741005492699430065610779347520954299270720650387651378861176589218001361087617775409717699262796015976536682841105021059664122075404910323076215802321801490368864524554178452977152697573396110449811096336643650973261681886798344414251669250224998533937199407689970648423521941761037033886551068960149333137371722361296472034150664556620292222683537040127141078291436736093570890846188142373958232245787503986561211010450137490946828402032613144801907279288018920751978234534610262408946310152037618441950323372778709960576820747366052518528388812006417666180087401861373515895458278191176440767682077611697073274163810947190349871592916000621071323440142391532644306688082924938683364588261228996162358510568247905595841766424855277606907075534470052532713604689867684196360667936729004058748210752703690582852587524292351670119901397237694282959815729865739583855822949365306356393915948828577313698981442774794707665584106781286664956274007171084307394120846271084144220384654297665542790977252203936545409559594221915876466565983276517927312109637452041938454476903708734290815286507123649654266467749616718795331528641404301235882753816634993816753568289004479992478192683752604759132474627756612961000581745982917363087175573302426078515416609069164426643196313914584560126544290921166479054390986891864459370224685320335100411031886752698293827320896578394742343752392404174187327761664303245103880308371741165000643275630023932633142124856864613839455387524460883835247056445230671943050578332861499695214574918673021229404253734683027773313743176432192583951191913236970762565695716840327124880325930914779807518816007401993774234221794461913879164577142778140583620285187482254501254780617476909707221619667136778860802714594724530597985286751745300483760149830490374318122069442090705009423973432872916069092401278307983254836657225071642951238528724138838574504391218505180992122754344306417613772561319645961095192874830637228486233492444491904268558980004614112652158744705099772253265288419466337449702012118823493884966713120693120582224051534971354793790579910847464242156789336422637453846505595136532644728156836277997378127893681071581923934505832928373516022575817127739736575756865378797460471263725175192803271851926819917519383686188517784400435220379006466153404705216541111363986878921739723739896607992639335605097808466640645060973299641467192720137922397898565627219164711374815726090587366358047829903172491757500331384309027495081387152401636448384580814486186637697087649689231216276249532384975371921757162088038760829349873080877249706384919119527981958190516873110807572517264983816623232205603988358157912992461349984204628724405823867426023186896007333398519510459422904668181847357590156918607616331138009353807527538592211061653529680787460840337585919547522274221559932006125164812648451392909851693330515235916955355721591013597659403166816081731576169618811781971177795842089107519036325768932298882133054753656397633873210525368153651341260914098941072219830872711334487119709246568789747359480982755252152430402157014447380207090760786408265205545137559732000800203136750199256298419497315924197202893994081817702434459238430923245234575791683932861682945847124118958937423672717813748011917449413425060927640713687024598045661303952113384013415037432914883493033636158000130588759332472546201048166403710080511673970680927719260588960348045228317232803681187031272506450618629138861001275954148566415095600081015308217088430975829661490651423859763132193660525117633388134158638217519049714767119063945723171578151019595179218912729338551682001453030819043454878245408263437500120254435442376334044602833812761305154890870916870343146715245652773283431041407392860250480796803485192806596809855333297772986668103799435700742354867077311314589712272131788641879710793233868427693207194387420730083062528118643285570520825547326752348837863723225294085957046976403282869202911899456522208121620826458236485403829445741128331629382084816009173825727982745362705478457038425615653445181021898078023754297882055318390558568805474809499629743584484479518248026939110990875290364212204536332706626128176468053408407649243109388979549094928082647431373786179467142988191638288941225785348943868854632528599402913545489154484053068978162863823000366160237819716753451310493666848144862930450839567184713588568720601921059768004898348890777169855867038685678689630104228620027696190848737373593115559489316471614742241241080915717759369507297908390256697208628722732076075083433157804018595982216321305273881207658074452046050754827966442452381402017094824435270368061319011125926752655181876954087858148018718169579570729272694811666295639408633390466351259744410532863779156045567748268573798664900319980347698852661715714418485150351971611338457054814071731561010311297700803013892035659824806376504489316277200564467982215399291293815609566984236664361860965342421210479582059584960463891055303905596666930735260688627851937917438369125360883055927544388560027145080571797004532153325269863702949511264830010485917986200317248423836494080716911582330878681178100817517430784215819553290074107638543118831542337780918612111718398640817469867853658537784796684100354795672647383581298428564496194855634992668338556800017467144246309114053233502145105635100954667476387259109043659409570451628107003693334435646437801867855817503020706261095751735198245598952555068326031742238547524726553387803327296382780133921837788043654626876383362945442953469045674139219118842149941525260493144551517231835450076117034756695289843264617957174777984619140625', -); -test( - macro, - '-94906265', - '5678', - '12032097777224921443610910803648284170512319198440026582654592944907996997711020183354851559738136209876116410482775406152550319519617501575389742141362538671375575270130368782344375460094542930957208982333657039900983512378934606414708547255120509688221248878365002162079958544994081468523927315675060726868126226367119441190130650764598697841259026377226201673036205220245238076301842775410518683141308488299366012792925609747073886802877596666532246689317196865573110094049146280756613633385237048709371024252858686340623252312452593430321228085552943679754605680459379364986804128577790131289118408139954294866373981926459619424848669839958145224015329056251464187884540803724925854941893314508739139448540059027532063346594260009340289063635135268446417517177773306225826478834782126901952841733199463653563757819068049198556549112038207670677005457584687670138285992773936407404706326519609992105860062869525897101616064153489988499260854115519937665672793315389915719723184695407552227493961904033933034506875702096849362495327673029771455889030501830242732676146364350412302869011748293967864940422889128153590781271839942018607109535085227963257602139998078826097049418704998656236212402366601095688523413673512998518901468183798514551196413118699461621524416262734189234150826938615238369409717915433788697444341087319545108423271713647606132458422133503476646278312763913773672381574955638642484777319177742615693192492030931928334799325795983171516582124249978689831869160939605527534908432774284025724078112334305143452973560047389979442428241832752514170684582991619064835042076127845136974614077376818874608487426791468373615242293672741372298898215088365221162041567250511944704729950839359617629579145185451647138688599424451528822613292149181525578785717464355469269950910358964367355548167095991226459148148416836033320461350750016925333661337306860380813570244138594176200254338594713997700943753269483275676699592254818599648860765855658967021173586910470760937291362350281087625944947663940083612371308499706464739236243824369828191050651890831355140821021009799707142643546563126154302728058269983835130462112445179485724829519948644797857100978445782729948146775639685486727347085571030457542493031359599157910012477405633462126888771916787753215333242607039830155744016882502462503818969602202111471162936075917294595421685134910453228619713406894527040532782467138493248067630974131210865224589283318665338359787682806475430520542164582197378961886474218909120025123091615456874986351962126541772414045818060094363742441442667036502961807091952360039303360580900852680604055434020409419268918051690557813552959236488040160958755768871367230392867382735702108578451240872919059355437258914588914059658578625910689412928981898994374868014765744048731178533977420205065542882559318334473630109661521143300821787590642741661630560532599207482636782848372575108230527673435955097474563225203600719908173095140979638933646119901238452049016502626977563080111918315881318986264803301054759949431314581482431408037019249299434256675011740150791380650719740873599060034519923061234283942527829654746500679243122868491752528092330799766780299772695603288900967560796775174207884494845966890228277702276659444815563795433225980503597587408498869891219703208161074827864088098815419234882655313426926283791847398673264577617151571464296912550417563804886979853576821080050211194779490844153380677685847777313137638651644748358202947322079765399238487437874318841114773978903668929164955398911903679705111008999142589544437065672589266355348348971511169575378316208327903577552525930641088538955350354489078111990562226354820551745938135022897672457837517586016736813649699772486263689086502957138019177196070312090344215367177632397930739405411088757771866673597796220471619637645139435250941374184393351858539017096692099099345257001920271362387534252371917508119267325168864330673891152067448719178429752412191066355929358566249659077077560550302293786857736765866388524626228805050725063109877803065961191644600499168820792325163292525536974162404755526606943846795314338495539699560103980570000575730832399241743616051296198894674663823826249501962992317559847798100096759179383956869860153118427566631515292600888345422893802197242997389457528273662177569851158066854725418877583679801690209473560655905719642363040982739123254770408905429249758124187443434793269173022194566001870880813212255626734666407333284872705324976206677741658696075649608364892807470963909485110281558432545948579534204538696827102504407100425376019173981304010256984425288381928914573699655169020850451341503052441205769215186509836760430481696523650279090720163816251521349287308560407457609483984181328774565719714613388489095110023571061353122279353104129328013968956403235071785261847838169630745374996406189906650415573552174116649660276541371408913476854939747876731425608814138059458169543823165972801614100937621904382981944188903180205906327482865751979701901540575440519486923023420935041930682172192953852334672415568738221940582193314983240970450000477463045431237229063460109818726294597730994303217381825651493935869034862652936559019431947352777726119926158367810617503147922958376143964979603245915631333786351234314954623412494887023938633377421208202061177648550247361016141144451615061150414512561947705053352442969412639758719469809823355676287459924284669684459858991524522914802929760964195910108664304507593383032621305399692953057899447189106733091012594841503936991785388985322660311685783354745007380474195833316048135155967714601451196311606046191001166178941116722830537202351353675803239601270737264305300314769429948779160815303098446558150519469320909471850141905795161388126098051093418801571231958217059570635407936987518675272606139316846781769414872368547904423404977322742616034539497477291204678516696339549373290014129953927115273383862176648175885100832898131993707682449845814289537783195056908822732162500604957529260337740262458814285530991622691309191620743536827546586516016261289544348330822509040619411107336690611176859744962777081961711988981244490119102057017123472693131597991997040909096393811129374410032160780720267920557429521283544362429347063129854641992658572996108093014481102752542992814642875292835964120599399273647779564854999067324549593959628020136971251523507807754590744694873740047390084491259174712701241947149566007259569113369875274948363558659130833317516389511341744440804095510223434955552652210614743910169826529392899468656662706962138458679700014949089569408033941330187462290588839847072683578505493439388126630655399425769894783841874574481277512426591408213810373551314332889400820073202400253692361444659207630759168415095760789533492551330583140574981012731074049549919118053417150217808638350432013305694321389747006470410615077305764765120127628910927114025496289209479659319746699938956841225054827585736797719039052465086433182830701745898467197621237268086386733129150280583409523728139312677689819712362202660229834226632997964115903142152545104059172086002463963414350578947905947216633376664142189791562053019113774134585010114509991806040543148515641482014416718677876276580431730562587541020555292496453826361453188845475398099905277525052773545411713921648813979140016300112385588170999474985918656553076765214200080620922916851475745553785133089372514034029601819219527045772849932738904614873836099307092123571006738447715320002736785859704861742282537734067792187177608073549859135742645615364728840961736910729008697313304738536298720611573424123582407824500642154138363464791319257510414579292323013964798548950290960997144513319241370751263381191179501838180558724038708020579905145157293231789686223459443044018289699299028761818401590134930047434655260646434988879638156693278024323812521554624956388982330136290167049424094118582772096018451809597401164846924711716262902829627380939680535156293471439360777268668365604921618839689307971611636791474486517596411076810461187507596434260046979222951771970881882637300844957670414379573068900594030059669462435172746064402491699639256585470646371028345111692685583568972301562562922256758180181085480072911408202795425250027969499463641174613001079713276428421215191667447359883645715478755796737199406110184987838747951054762875131236948669154666701738693610353768722184367702584486223362096024384484603104446694719810676365358898796150078397378880308527506601302713337537470154717940902510142689198467640659012705019749229659196945434251394512811731664749976526521575163913656404283679160697284832403491752877439284481271499113105959231314317691378767826586965558827309006336474296703042302766970494721137069514776117071812137188441976088074396467632977148030639633204112209971813503021630520258087179296520213138286076436343573116739144719310772751735156402034501606390456169140121695688607125183103173251813914671347610021351582630598950972263101156473693547645926791369585126525848123770842541512577658666859445930626122772214914414428878443618845511938720224570647898061530301191130932770667765716795587750061205748309356694807519519675049350933068580375053894078242210199468520630330003161545121375796842051755736417199147757963284334866394276249640731433231049313954526161951624809572619652276996303120934045809848958441871638077879356764855185283339151315501229746330405881302263457753882789573262935098772141915955008754732738429440981828735729272802882701434622480077709131642461504208927055033641377102447767720176633847373823944955329314383832782143590012811927685177026789234911929577093962457115800486427160323294733691288587100842884523422947373759687195747031917611825381748929965338560830322621555697476051991779833983757024224308964473525520615691348057039080995096707558993173247103410555911126189269896588730810492029064501420933855518163570985872578414596537490581577386809453787410688705142748561393081836124251051324584698861388478139283569598076892767321443716553246412277259380509438802329441648705346383613734547877712888220362688053129344779935227318331396329401655637306388721745349393876059195313192731747216875912473534083064724394534423226971274516443125664390773514132844684527673669092932331255685956744208760893026251638308006285281531125557486527757107669977234989257848144696133615593927212707645061711788280447683309281341206400131653863420785992756287508115967050826182726890127091142835164557166691300678394990747493429085386293564966123136506231068567056989317384966475475729360339009395818317246772969137113875763412531168727939516546447462848160915288609593976373135718583011204195966912413852164206268427095555948610761307815791560355585910426147327321102341134387395444132445427019438961472388259276810758042673037214059651545259592406090068506838010231567454628094637254355973489738412673187077409391969169545123360596500128359039361514821593508030148522205228449973734972174002553108195263247639174438853119252163722614381071194775578403064409455019374052283926424489955638366392986417357495741112108742236903909428659619606212619900649574073585165166583918297998340673134762427650800452972036533098907970092878703482852833490281729498858731156264911226877099786698157523214591321994816532369903053664184550576973511700913443461257437675437472098084407017674888009625137498476466436818879720524380130001916537522732804698998210196055682123318139008022653778279715652658727340997456249218032227963658719808122825441145385176983894549215846317551213773007016356738334267963377888011544300061222386574258747191915588698617637837212717814756142051324008302080298650994166585880612515919258375738246207644772437177730335392539644865639849308897774064728887770437363216880581815066468852825832858170229658070845319130874032026316629150366399827042959910139581792401984719737440786491444999030986092724355755641888514009652129027999591099530921894279904701093752999885648973445224343373762636465568559928662660225367743242647517117639887521310379396989258168883666755250191993348321142152864927369234668649063028652063843003316973499048911633219208658516326528768740257621395512872408369502229664467552427061041482906643131699241509502631730714053932028098939427452444970068248194791910834306048571684029297039763506306003677920029786132935369270257069918171451215129218456327859444234926254208150987962386182798994154872735035689186439260489113584084457851762452138367055101379588122088844841306204874692945577566193189114109700874804492781437652540985226374341144719703543609354328682925954034266359991157018716516446223344660092640717378693207071014181491854379467954573981289282127187230877577110472130570576015105977305257910229508244095738723967730842098391729083715169089672956523592451123266861612656114937473953741130882127624277059388150081629717639957137442000516378123556553332349275408205751508548209994904127879234614825403357223962515911129518982040378620086754855361296612014949915205044289352069213501405997863521354165348782511867122622716426639791821261702368775506733831743186020155130943146663966007407244597917005719991265853620211871215693990090865326620251912533146988791177682866417571901522812420520954626741756852429297080414669100168753560040054760117697607946028484195290870973497362267381612404260749108299672450420697873731172732775674054385367218094949835013674973757423265370251319346466334678075474375906897432558238767579231146265140826352088422254545690686302743333477665277149035167938674924154842983621768748297426546172809743534122395481353193555875026625899972752500022321576082052828487883396792123138094495203111492864041134795761256726095663499686254762052539889279642048007404275482585612511343844033096850528226343612783861307535354140366802884442274775822100977205037665851810599890007341178775130240696632601594694061697231625625860004620538862779963203630814410243245714819549757828073441407122131050844039240224163642095196215306864657309686247074858678000635402415836405930550459058799511632845758556493533762990549187485016639012256731683580040073341731704082434264243561194791703596206015014846543656970640029940075455836423615054869940691591288967540111562931377745992026685841553681405592390900507543705586848434089001303884903488059141717942395691356277350339460187131843419289217935265295704356916529054605633813938893737767409366779159372882254232836716324580262988115146013874569597106960026911351914668502679283163961953086528727793944040518851106607715147835491925402383222147418855338357535739845538867786357060338435261036202368258020761466669889670691822601560184917436779215254347489960930087319530836518444337988344598187203191595434829132950413104197804486083026745302512606864460474736420264409880729091060010368627194325379608471121667642965001108323387523924855835054547593985702842329940726838791815501738849577938132081507924442944174718597397264098866829822238109143654804816673202408821440775080110551433710513005759571403757096182158076893681914376156120366821040079723970732533775297717113208811739667056486197044324270922989003211680035846379754027311741122863788335461268176688251174205660568758427931660106752538935307255339039355388757057375250425837093302168454705863145996845095042151313295262463259661279787231685169235050323016586688299833499115629856113737828434665438782484735547300584910063985708776012855041724554864958256185127598519785482694466456563490174364083687348114832431925384869094951858531131186801480404938023454443571034693096579794784282688250620550447004592047288521549204059159028509660096017875307950532319742036173203952041761503785819360687983493313089577551873561446412395575710594370027055187478904534143877344909963663735297933632031693194441131986356078620539658905801102236737444661108267332204176723242428802368200731035237320543765666828751910067807455585241166705139054718355894926417783921107593070742530185305927934025258466866218767376534792597033669822057078961298957496217109258353525748391156704355202862658731864850654926248935721796777991022299873209352867958121188810265931762818554937603100731645526362256769968645627563740131303913187747664074382451124596816950157537126085105444310397381169417181279755364952019062060800318321532221104576465370046063753472086774044100444414676557036622159972786835290325849755928597463426695781953163866965969052547199558811862459755929880206105062693162596966564969090523328485578382332426358809045831759393541573654498007053609291367872036111445231279494806931031841205524707641695256162632063010224942774570614275679640385413454072868377460757627086865145342680411059337436108163325287906190993195903620201661214403352143421814822960031390185721117950110818389291340253326486009897862116192130278391424657241044004963932456332370837203044676250871218583290978562214724386902489542748628396358186325956900204476723680860137151218998668021260767109942583224787827906233417831491624545860788315526165511635197037561922517899904690761031753872124042336536173826882605457634858121101471892751287742889625763093890478605491801544520792057578574375773201143929421480324074646141024278246772158921139478563054405229834847395540267665801516476465649906633858677249697918200443907759577085140538201853478765762117960994914145101764724959407470640463811314680073362866017160216055901670762363844476940433763519832222385027792750981080965530232813715566803117769888159323419674153708883977329384943689553768541789213946129813719122880362388613061590039120847635432704222352763497996891937276538781966653887199495265671013361386797466770701748928272976698049303363099194915667274909798041151694131302731875286034428026186929184304362229619692102502128326871687296959400302085212456821262169947535776150082836000223031048009020371350036539197512764290221947644788009144903781547616778821484803103102745494206849074992779830389209747508799417151536020207175883478394172905960788120783232579015657004053498129914455441618389610549539868266323811924818208880604509127630703993255747870363319837810567597787888248562918900718803552796004261069194657586185596777323973185892714770276436504734272537002948160990428552665125608477771575963058090305035115286941440877623389294911460277602637191173693793231079024899815378902648788493885795214168271309254640593363869703425269994239287771226535309826739493886296423210090644214129966601915093662511467744154185692679773644695709701672608468044373005103438648018171096398607426443413194281519283533259981445906676653664312034448007510997631193422830884833006737772887744686368777653538919592111949951373489944710830951650076413715452663964540719349734000663229824949598114271366375624217568372270930581796391817021771734034804435202600593398262992169912934443430494160632096045871344133239156139910775140126053555363620216919941247411877562901224722321989970134286623258958498605964077449818088184783496838986907729353462388738014823594316384752835667377359432034427008829688816033072344951707746090028382556104976370057205866084666487901937011251702362871920843956238611037186048336332441746362113871081603050950760137657339038936536596933851722041992305843336304901453452571715630307405640050171237176240125222557358332930710738041186084749584740450846611590610786726669986270473854160586469256252168384869883596851589288004569216909578136486049118663430702671507574735910444281915534186018197115110593685299825714958042538520471370923783862810373944427764167480823665142849781516572576659578160735209456505359366276175015044857079506949581097412535399513752605101582122333384186945231604776461746644687207899376798357792653596666581824693709787573041587757626825069517113369429081460885782112243077774167939979145984687560083045973141222583991194116736510260934423567193666909628226271067954142670416399861275578343838128155755377702692215310376282921807545085658277051619371602033888713006177339575658405744622442355225853961935039933219714558173292667708157166916833886949301548495619142336871670282820976529735014754467417983365683174117809170080328865238203402509223643245295215135732316886815093541440338066497831425192534469707791058531207292816542931530093442001376701232809955022738734490848042941077563991314157582176472360317911138496886256725677367798535879492979280051355429572780533908274951671490815885229571886451377910940010012673321183872398403321907312091527491690998932778856646700965310668633894463320063118790564548548680468929222591042338228420943806756554406415931090291538143528789629740994863591079711320495984207677768776056308656173482219428268311986921414524482951641166995052008686213317172019535225407298322183791610925122947801778616107589077345869377990653281139028741071735597803862826823503904687705298499157856081719712796392689492483355489380957823523151647371561894369978535447318492691386953116508279327857453984504066238005909847859372464174431153967057270158951933229971026010966691002647873844722520078261307977064543610448466409873414879293871473093770897730342188974916791516079659719631290440856802730239894028254762897599982086201797037774350455318445666421091272654386376102853322186923651805632319156209526417184248540024807358600433160247811092932618503532768368430167126161193398063991915395134237015963224689432846551459273641605647876407353197376326052974132020864262566344092487103313843164740701039613572905063871725731123431656363638983017301386812075627738970033704925617216698715754404765227506689591570815979652750336513064156973513088297698696477005797931273090405805324066030602361512119840369813400472419573729403873434074573160162870936318068249575178675647763166913751293933551646401329625534493843177325624465230372869642679078724392280172358972274796335813356986697385312329187363931167837979111403879151351225430729247112426650129104919284568825235232455725351552224363906641354967564821570365975247995194169878249598512813403591842113734352236034910030599591245451967209058347539059536190947433656585914973072966125316763518711707788780035041883398613275851057398845335005672095171230325334135754312046899114278318582949758025840627034073495122556098906615537245941205241050630832317495323472933706045476448135324622130249061967088040634256046633681463998139104615271598326353633335243659421316638748257095222430616324419633409773550120132726761874278343852462953247386966597193056825342009690607297567265709899931944826256174731047305094081727770841080440016328196894856028563604702780682709363667848710891858610272205043503944199299286748350079640312927864906304355154798671043210363438224540663084637003896566824195029371811104076856777325671062014465716574261539700730333018675634121018453203461781631294981764229198232448947654253783388204297001920517253136683270888989223979423417588630101697507592396076446071605672776440131159545850932553540460963555258875042206253533925856199633623872569538946264824099914287390183680108014685374620969458668067114850551017647802720372476318759518097294889667098388787511578895623400536394696909686982089754739465395458755824025627145860540874654096413723593095786861445483207390022439985873830588574664429664328016256793764664176593210650680088966473569586028063185778696846067901539484777171526008932126642124726149000234264622535507932061596730778639639322994194566230181315095849815600439054976860942354245780811250583700351160679186551987899007553450837968473873566770319473147476749953987063615776202643846558316122703715582310812032981020745887175302830579849877162396208954934582206235358053066687144876586531305671914153856979556448429896161954702428046020131267519937687942784998876608574424998618033186526320893410380410615897192637383212667814571224040666584728535219469735065470507466917541842491727590582415179332124764074275007615003561577219703985592626963898540408123901920954693863945334300894449076898006775718907497203849104045111950488579240549422430862215686448461635287540273933678378844195074450255145986318612166430395304017670650737974685138684856887920372725287537626880802277074988514877737086561392592097851272353742818024979368746610359299993821608029744496422263548547379227059308330732006560207940874965636535953389748254985558222428424330864460444917636632197361629108476540664208138353154832367022269303011778867713003519669926347227092605460218997631456886988546452742315709205780440409392361149984816382171251958377059474144369328217951856030362908523108523320063836177218545129144151675726728971709295080995491115727738994384523099426017049570788092605348295244510790430809310252002021162900702972004743370313805442485273713185126694838015211112954180162169003605131100343992572258878781008043930175009769360708537294998309182845117912092938413455780854377238800073118887421690605050678371370274063825715320860910620948562818451293617405229491236178678754278932510338478945063584831864172120232848867941761893175916936978589066485863729545344061035238414543782144041420795359232419130120814019590644487393845413057769719569362935783498618412118335138847775489214231071866809710199171908881608454495198717226829803613782208248938966092151102736556383497239013516522084118430594971074187519260946766667423607181318562263393260060663288717977893874080349690289502370587468658530985736835159292642558195601284611160860487456916132188445668274130918453531643472494048279511660213922482152284451162576937159479526872950903047337162660821805029600708501290793495192214286757581386114297917781127145691164585515718567911708522043336429297534300930577150477197470794166974719236537212770910044441149771285775283181049923538686195299106209763353070616873255072368061193988813137514561690385137083968163734396360347928328336563595006220960934830733065521338335841965986235454589498682179372157178621143188814181528148836823240009313917239615618819685916460559824760451892578522401207920356914008125649666362232615846019270768411703026907820785686893329687936007326486259085396965025670221843906365927274024874373060432645146595290306316201392153119798490572148328091329727540219633346941261473165756079426541378711351627269272757052944951094355168530350261245111562524094741072397641389854917843735109228705666266863564318304340300463039112532153772402056001825404569674075795960482695655750098767071905821033260887679978762025881061325337213163524622779581816972175555663637210876981896507755878807206231301747997616278339215979267473884231317543544712452852114555647618822488813490625396727766305946129050714786088423305048954173700588940427019522843104010086905515156909811517470970474323555351456229248573825599238197370105299573364893745750391351067788061060527046812509973058875643642096985994846004078611902478115985749938866763374390207356150215198771166488048581440471218124332859752158358015616660187047654002371295814353685889164385419937001586245963586686123227189249339843703303467679680488282425879611225214199203660669304537817806007418484543257294498646404096533225791315505537497715207372656046521498454410484618808462877318221533855177115026118801994635309492636704866960405453702180044263190730170186585393782170839546858732775601817761449580514710578003629573446698223526303276734226490467503004836350690787693180419256606367206975754427565647193757103622172723445912571921412299915576801160624014585320520435926902108223783097157413714400856842549485204781754909051139596113033072378955171738006815746107126582544226522618574999884662865437801703547910979352686377121384449362061338382596983291230994834971550479538621580428614474707245992895951108596353356806792208588625391355419712148342585326639448556448414437163323753111363340625419447936908942309059384977968558654468049438582343818038934475031358918368904553362235318960285027300982643072000467590624020979094167872273398935195854660177797067882015023199367866518380157778613872943331744050423399154264127572590316747837829937185838805929919930426357165171535205844319577554107598132285773629025750828527147869294916738495703358765482635112741426231530287972819515170191843245039795145568805407271280931405842189126545621691903281208244330021380936941534090926737001841378878232358824105952882091391122376983197385863111377095821200758977598655636124137542127167825095347247242493240787156813316762909697688864136617808861689815132468231141188094757116163402600963896457848764885057333264284354504937279338775019887183472529765242120841857211466394385600886129299536196104160966949461244421470876475635289658360673044133988472412908346503168644044604661248748712465204802503052422913247662994388842262879693084905772957000634196203224713014001316324485989167462563998596759472917793384738934828062167583801086989253946454905163667273365009826486005589759567623881215672865627059042146648672881327891063995694457750315379828488812880269962995872715826927673202525599988948924553574496455072613992039779209442466653855719582532255207207153068979266405561447716075597208003386115629512060258961979286373743813337931101772517953360698302031325001844985453129783938956301615754527286888929780663765211591009120443813269934515079913668898214910192754399304618341831453870034267125170721505066917586198732535221716916597559836503614379370118425547846931569036557590812044714028782560536961879256523449737057538949699208081652250218260123107062251099566298529927581162698576168546631586946049600127140987141317674460410902993224596022062324828491276267223741714140055313279819368014780323282408383224067009467800172584303162404423355760504326823431706740776861818994506012773534445613456631600402675225760377368762722021968052635826828120651984513278838416227839164392949867613026178865022522692004106553797610247860158988661216559547229327484286711157186964559739720520556436315158359781162799170405180320792416230576841207330921642427914971360147358390054635718803605053812837473635557695381145693736966197784412835427730682455377495472116907945998421668486206685639652442308850167256008495070585127947385980542764963491704371533238862062927529061728993687103715584617381449133650067934551429741997596233806357685350458313224546984096007149813473419575258362349731564468684291660239721484472043256211659727453894937763642732739820546069887466309796309447539968295322423746786761899588378272444571292371367413474447197434276820309108466176334054973272331173340111659361442337130792855312977415847609894557657244236135360575415882254468739766648258409923847596862145560111671406474246039147740994441351609557249626167418534932138685355488646277447161488690787234126802880936621565723899904615884548341472638437772090419017559362342062609301959534466652230774497315103874040974426330140216732414915907495369817982025864413682320190304402284550455106186758899229547597245258424329265319033989076324859178607488037746916527718266949417024120162124868059437809624404252426704159384001199136240834740094617360560669898139739645400311944527017550131601104533280441817207649685008412565052535179862086175827433761623348775986952355976268937519226183084278136545349291670649785347842730455081487877293986813649230888836033911523597766312541091611558308804656825040751880201229000742627616764846092999606733478252567564690692669504889322114105282631889525319858323705525911497612288157996632667685670674150846432327565528609123127086077539690737908771138085892200113245294049889922704737554162844306763132343665963132039823822365456559043777707552305193196770793605848172893387453594424454474013959098664586068848120392276052089591591308873830873345317112789906683626082510250289631190568481346881428473945619394593511266715086704096809000035241384030443602237087033327542922826698398494829325813183260408718893212433059617843940587229933901382943262992336198408409788514398330434599960440396485182583066248982823883042200111255085981898391448344844015751684471609252769042652840411485899734910885714254073490007645062005967803838338350515620582705664016191350475064132715818275524670604480386741711701135361668073237815153729800159901327889495086187129604447582390156419305608703427826439346018905984357281977986898496611416847526529975227719636005017771483921982957544197799709954130121091633016282666472057665994141283170246327843904936295814914169455433298130711317392343344536477614717883848576748172715876667106217813834587606343570080150703180822107697621328830605698506305609033356175547929890746964404950767451267747106159270327510593755358827880906472517244109777980040119286343261893970180775124057054774158177970221802579963540456256569061867723885060688202164035260408533918104432069412762092767961756595762676589021880178838196631141734156532209197898820016385683655803586282227835323540770476387548613240989563105953577728703740467085125879358539676422989918253524305042736487362952197862376130430552678640237349729018968430033265542780883750558736743752261945449029876696946612108224851115124942879425375009248761228804637428658896795153370852897642290653016040206069997053451309942591115365763315347798585143808043185383293137605133990375187081546565293976821820681678976667143825155588879797300722377840466564345393925544396615896674799718417150813477090500003898193451616746130407776930778672242012416461426697352259907686766455115834355953750908750468801886412209297018951915865714966322975970231743912119114106738120788423635459798468818392838721078133776550259766032933645790131678864392198922153478445210797007411829472852520896641724546528677899228076406095090087054355112053831012039363483887827931984497205305580640089884147850679614566821898948479674022244113913369887487652583123461801329225543373875617324208320681859309093341218594477765154347005165214923914454731564386152568222327274320958552990828960284112884233856381741112323189817039205176818285148223632011326114683897977754234839539859773555387479931478369465852786548627650813853724070487089026934104735632316188699054916850121902617757361251685208213541489423125264663780298582285404482769756412105522055863664088568917771323306300523891885066913901475208601262155693104850152972747067125562727745608865730314711297367302397805250438620696620826528991710532990343302838492054402628712678922427512444061374297112648006020563822297430010181285771385041656979587178970340526369080649857004814587864116807509544571472638333034374444934753562266027341209926917981677891921750897515727238195821470408569780330165534206129720507627843830335242167825939925171230104851587860224644439220292020253252521515829520218725721656441148152957244204914499245531265109309283531415930597420172103218491273772895034798650668137487351895169131869380823743909292549280691725771478618398588851733810124489829934377473370053370068252656647212635214606968547927504809038433155753162266329616429449015410862283066225309223030055256064379392216273751092054318524673355685810347451754467300668773538268859656515445954574923648729683873935557286856820970937068655945793715092808131171747403868732588043215625794798713241960194139927877235454587568468762746272019100094498768878435303678674043109734750924359994293734355746752800574597686230559451123952878914382180299790800323290843096781932073569058248305026863533285657386011004060766594502913168774569065159241049643726694858160418911013311490706738036543681700409684130695301318926665944626256463817919659855204483526903636334206401621354856147973558569067520506511253677092000344997303422716188357301982404683865947269583956684546963367459758762687671678204149310431797725100520798570137927948407559741374061481883367972415208467850517662863773339874292705113236025748070303373436449698506471836270575534367072477137900735911028494106738086952233620846769094804738713039865343227698048631407498839757989365214479653306186066720098433994778082034252601056288009952122283076954922176813820889628483465616421754123937579558193754200095019239139515555511223697405926455097278440331386885178334434554052038015454864241788988257555470096002158416471742411410132996885100140752406174456919083750028326577637466209951318990330737079201943113542966688636484421817970036239203330453206764934536684736355707322326827785876446310370573555594566522654459815454790470955048621062330510444683333038786245129101219361371510125280334401845995354716355081414363331143924307309675133524204853828824109943599655989890178320729881597902725812942771540675060969003063075143063594335159290803487756279512698080233303983448523903763359578020680403822826869215712204567152735947916516836123801571638451477512947633273928861312235512576987086278058220742708761872709578297417052880180662367826500231390634119435668470543727684869857682890608140863953707420877680764412659167163724061796739633033065005264111522515204885857558654834258914573545195512032180353594911695051378068719810556006895666360047309899697571949998411847437091347874733077520204574436565617262186793285390157914385444947163193179238783098002974102908514885479387830864484899289781518304707739376905740671105223300022583960963928395194012317124630264096534995267171526593770055565730102494501137676561913334587750246583294305250495353130891578871532092316372373133107902309220102841925745042896381868642367418745319420730865142002648204585089869986704818966935411839771621427485830775501646076259582071540977268704166605867826554568530493151242347823449624187048865683437944276656029782106486814685177512298790716326796679143241180948696299889708040355541198052387600659238816546438629657921933326303838039366429868607257229153586409564863587715116286506248407497620036497639682708720641591753907274496783732165772299744820271810956549362372807148941506408038206953482379076431012118157117732910126914164048218394564547100247423760878689918169039921521753045153136140852307023421248049548015885572583792382485175500534204824970481492908940320310430809050323007986533558215703588782544545718278427626486375885747827314014521764649075125614840753558736191501676141412501389041086207604364613946110943290698832808350946105405659106878177534966935163165977743784854970520032448041881269436554799191892238890741452952579974686319705933896006655839221952956620159751151666300129475309250350785976428156893784305478622359782685533113861735520731866174351824115841845075091997649633694047866430158123243404433057388021248152371142388316099631832447205081549938790835458611253943435564824171299287489119366707640567857774181325253233507979780771975461697394241257405396956542526065849971304547348847901021479486605612704247767646084737041513530671846138948561060030258907065141688239455904675293200356117950112887673328192319125625450112001441334554826262046043961154178777018566846299911001936816697919963389400196333444219082726126561961439286151423991499109774369393437975616583894807974648514443152564762608988320176773626728380768044611965217042661464062080139705149376171806476488738827250154569276638342192678366431133871111025133072862691969096467500425521305379670524615424717077214067299329167718710591789934002289122069747920433953864968281665817890773234078288875249889546074590578021210045020175846649075388442769801561868206680361142266963414252212701874669272948450859264833052568909056061160609027359184255550131690394077096720368166451553160609833896170781715866268750533758548369182807948608780968625107433984390434235219689740367237885674707704507030700597244015754049856015155058928190915694812731538478889554953381956036083413176999479211030070256296238738351346477023693051810382793957412886791553484931648794808844286324406999962815018551120571300130535112365975815392599766465092145349546061127412046819415225926986188716476056849908748119793304841105307635909081982031362197358414422316767268043098239315181137479061734502360873745508395271506258881998152137286301123636845012754834291165393438286951173209240049799587871290266306404165115829161019204881466233120224197635902895287152465704419993236013589982120474846271345840260611228369146254161192044127219280174741005492699430065610779347520954299270720650387651378861176589218001361087617775409717699262796015976536682841105021059664122075404910323076215802321801490368864524554178452977152697573396110449811096336643650973261681886798344414251669250224998533937199407689970648423521941761037033886551068960149333137371722361296472034150664556620292222683537040127141078291436736093570890846188142373958232245787503986561211010450137490946828402032613144801907279288018920751978234534610262408946310152037618441950323372778709960576820747366052518528388812006417666180087401861373515895458278191176440767682077611697073274163810947190349871592916000621071323440142391532644306688082924938683364588261228996162358510568247905595841766424855277606907075534470052532713604689867684196360667936729004058748210752703690582852587524292351670119901397237694282959815729865739583855822949365306356393915948828577313698981442774794707665584106781286664956274007171084307394120846271084144220384654297665542790977252203936545409559594221915876466565983276517927312109637452041938454476903708734290815286507123649654266467749616718795331528641404301235882753816634993816753568289004479992478192683752604759132474627756612961000581745982917363087175573302426078515416609069164426643196313914584560126544290921166479054390986891864459370224685320335100411031886752698293827320896578394742343752392404174187327761664303245103880308371741165000643275630023932633142124856864613839455387524460883835247056445230671943050578332861499695214574918673021229404253734683027773313743176432192583951191913236970762565695716840327124880325930914779807518816007401993774234221794461913879164577142778140583620285187482254501254780617476909707221619667136778860802714594724530597985286751745300483760149830490374318122069442090705009423973432872916069092401278307983254836657225071642951238528724138838574504391218505180992122754344306417613772561319645961095192874830637228486233492444491904268558980004614112652158744705099772253265288419466337449702012118823493884966713120693120582224051534971354793790579910847464242156789336422637453846505595136532644728156836277997378127893681071581923934505832928373516022575817127739736575756865378797460471263725175192803271851926819917519383686188517784400435220379006466153404705216541111363986878921739723739896607992639335605097808466640645060973299641467192720137922397898565627219164711374815726090587366358047829903172491757500331384309027495081387152401636448384580814486186637697087649689231216276249532384975371921757162088038760829349873080877249706384919119527981958190516873110807572517264983816623232205603988358157912992461349984204628724405823867426023186896007333398519510459422904668181847357590156918607616331138009353807527538592211061653529680787460840337585919547522274221559932006125164812648451392909851693330515235916955355721591013597659403166816081731576169618811781971177795842089107519036325768932298882133054753656397633873210525368153651341260914098941072219830872711334487119709246568789747359480982755252152430402157014447380207090760786408265205545137559732000800203136750199256298419497315924197202893994081817702434459238430923245234575791683932861682945847124118958937423672717813748011917449413425060927640713687024598045661303952113384013415037432914883493033636158000130588759332472546201048166403710080511673970680927719260588960348045228317232803681187031272506450618629138861001275954148566415095600081015308217088430975829661490651423859763132193660525117633388134158638217519049714767119063945723171578151019595179218912729338551682001453030819043454878245408263437500120254435442376334044602833812761305154890870916870343146715245652773283431041407392860250480796803485192806596809855333297772986668103799435700742354867077311314589712272131788641879710793233868427693207194387420730083062528118643285570520825547326752348837863723225294085957046976403282869202911899456522208121620826458236485403829445741128331629382084816009173825727982745362705478457038425615653445181021898078023754297882055318390558568805474809499629743584484479518248026939110990875290364212204536332706626128176468053408407649243109388979549094928082647431373786179467142988191638288941225785348943868854632528599402913545489154484053068978162863823000366160237819716753451310493666848144862930450839567184713588568720601921059768004898348890777169855867038685678689630104228620027696190848737373593115559489316471614742241241080915717759369507297908390256697208628722732076075083433157804018595982216321305273881207658074452046050754827966442452381402017094824435270368061319011125926752655181876954087858148018718169579570729272694811666295639408633390466351259744410532863779156045567748268573798664900319980347698852661715714418485150351971611338457054814071731561010311297700803013892035659824806376504489316277200564467982215399291293815609566984236664361860965342421210479582059584960463891055303905596666930735260688627851937917438369125360883055927544388560027145080571797004532153325269863702949511264830010485917986200317248423836494080716911582330878681178100817517430784215819553290074107638543118831542337780918612111718398640817469867853658537784796684100354795672647383581298428564496194855634992668338556800017467144246309114053233502145105635100954667476387259109043659409570451628107003693334435646437801867855817503020706261095751735198245598952555068326031742238547524726553387803327296382780133921837788043654626876383362945442953469045674139219118842149941525260493144551517231835450076117034756695289843264617957174777984619140625', -); -test(macro, '94906266', '0', '1'); -test(macro, '-94906266', '0', '1'); -test(macro, '94906266', '1', '94906266'); -test(macro, '-94906266', '1', '-94906266'); -test(macro, '94906266', '3', '854839655154332653629096'); -test(macro, '-94906266', '3', '-854839655154332653629096'); -test( - macro, - '94906266', - '7', - '69352833223452036048019660867447049048422594495110435456', -); -test( - macro, - '-94906266', - '7', - '-69352833223452036048019660867447049048422594495110435456', -); -test( - macro, - '94906266', - '9', - '624674792670819892886821348974247157367038441509612832874984853143476736', -); -test( - macro, - '-94906266', - '9', - '-624674792670819892886821348974247157367038441509612832874984853143476736', -); -test( - macro, - '94906266', - '11', - '5626570371553000770366419421961255147770032439589200995227891474434035187239751962044416', -); -test( - macro, - '-94906266', - '11', - '-5626570371553000770366419421961255147770032439589200995227891474434035187239751962044416', -); -test( - macro, - '94906266', - '17', - '4111621002962352544426035475002050767022502971311441626541763763792261198666994629509192961845858718231919984114833985236172441304825856', -); -test( - macro, - '-94906266', - '17', - '-4111621002962352544426035475002050767022502971311441626541763763792261198666994629509192961845858718231919984114833985236172441304825856', -); -test( - macro, - '94906266', - '22', - '31658294146038073140673550517958143193937503699159895257943887308245045293131342388364082990134400198608168678756490519887562990165044958599474575834979005035731090290356781056', -); -test( - macro, - '-94906266', - '22', - '31658294146038073140673550517958143193937503699159895257943887308245045293131342388364082990134400198608168678756490519887562990165044958599474575834979005035731090290356781056', -); -test( - macro, - '94906266', - '24', - '285152565696490625870442272729395647608950351839474257315727256295452252799048325652363949074270810510446637480253626162460689279863201482867682864836827407863087624820569082929394398407950336', -); -test( - macro, - '-94906266', - '24', - '285152565696490625870442272729395647608950351839474257315727256295452252799048325652363949074270810510446637480253626162460689279863201482867682864836827407863087624820569082929394398407950336', -); -test( - macro, - '94906266', - '27', - '243759720926361233482907476667027740766805627065699088178027236643247725320494107064742082561094618490109236612895062687353584665860859991879415575955849317191261917932396860642093944856375991467562330107969332576256', -); -test( - macro, - '-94906266', - '27', - '-243759720926361233482907476667027740766805627065699088178027236643247725320494107064742082561094618490109236612895062687353584665860859991879415575955849317191261917932396860642093944856375991467562330107969332576256', -); -test( - macro, - '94906266', - '29', - '2195592394049166382906227581924066334663790360178733838688076505880403691220571309390729652591082755619543107564008226799137799080033434887927401578673812379447379840039807149661750004725486244752615902332029221197778610238611521536', -); -test( - macro, - '-94906266', - '29', - '-2195592394049166382906227581924066334663790360178733838688076505880403691220571309390729652591082755619543107564008226799137799080033434887927401578673812379447379840039807149661750004725486244752615902332029221197778610238611521536', -); -test( - macro, - '94906266', - '1234', - '9591583891277388505525115654797253189447136886605641096683226693736396854292872290512151998759360923701943145747583511134137237540129219701865806527338039412393513087835762990942813556773080107716234535870561191650361302039829302403412946075446106825412751297892836531217239269776359674130746921131965972537264150037423340241624478540689955102073116137675285513450572840589026258095131250791322081023453951176768841489407000043160535726118339631576838850502482585592200779524367753458287644483993004333076374919449019351020134267799153173432760508245927226301565370359856673809842061641312175092790578128981482583891661097755340718832041897219562172618233303238094263205645877970358113993768074445674320377240792952208045529432335140630061808861188401135379799521387052163956136888910117971768073860253216476475927368994288414942490447092525755875965929318466574353873454174423568978107060092961912237658617656324665296966703692085594297491801246417796157302870670019421897078307859164701722985884435622838840530890375919184262292483249645237441871417071068806838100941596745962353204182500699553236401634245625283851805217533262792073996012743903038338818229229536055186386872511025680807437338096861815569495459484486460365583028341745944192156249359977394771788868182593957987578355313292235026581979280145300928658410955632509870162005244044559296175541745959995285799355003323443377883778100846086239675150873016131996875930350018015992219350113946152537456877585388442767668614805636644492157477034654015002200777424371801710940679802301822648705115099704427481311918749176783544920736529548586139472683949148040458809863320043994900963476851393707718685357960075583333452093866553065546077049928960672319740544152092427005399888194730320253239832076741315219908647683627978170933321554476794379260071113837209591838667536304118212015385101618506499462338145076365933116172453086230618448544984434420121504363011969733490863691026519845481227162596252154043336808666820679272401041855392723131101974634161808347994859566559136073803551874710780721574809835031749728330936601228289711332942475487049804198344632033302735878413333870324928721703861529246383352099214222474224938703923296131257451581782344657338446171822905587284519270798848617615383853637901599987735072168595913644523892204610491256735570544171294439722701186324784813173174483048007173966323269225972341862131385921920832169574095034230665694523080098106542220271445953212355824376796872664899930405078699681023392941095533624834406183151593571978375085934954718772261954055173766598828049519860162686382244143267595319712518638744666104806572606245449198069667116209595882863289884166226287944224244325912368780394022898051057039098547506174697498113971272667929236765997561816214125329832660683430329906332085061140646573555743366393621599195976267935743727788827183517095321230820637742126067889019665213164390290062070086490541490087922889187502866643165223474222152292371630635439138794711457873999619661458114893978180017319683380126983120641424939879059628457874620836535554946801030253436946381021247115406263632484804383695320385114124544559909521290483278475119817164333705567704791958463532021771160857295222557768598737275557446539702002377398605084666447155176033668026697232370808420470009321148824428418389705572556366704189822047227135423662015737971723144128915366318163252037686350939438961105050312976676967329177197952756021289597791397338470443572707715044081895964751092291481135333163500784426335086969222350790452151470682249035744789451673722795644580346446427237748663833724773055738574222477446871501122860335729438705137534047869725490906711494592485106885753816974753130866230360407926506022819960149735054814022037339465954340178612152040319878077106430592659196961703359784146025873205470608826469128543078279531426173587139642452817225181534576963768759115834369507960533557518872119645633087366816494975254571143679899649491717075104399517306160274939826782873377728147095270888144396760865832963585642969396605820937742695276189538284034362525529116594250112268646631014509298531366336740362116463524994112518288361022718725186733909161021464483147766958810416653193317981915259425065001767448497554577639274204071071705244125471084327932064913256116544625655097111357879218899746235180031762344942760169055331365226140925327502639728177654134067427560672144839015071652189807317452445009056094721496371835728117777604974208279421394708930008595905196768223073852631733496851110527349046730941946132098007584486429686144893021869768040494264750853862282987486806138208661684993068425524750265051353734028906190482450851078570663574840036302550770980899456380758967689998731148592509807498959236086788270504035504990430792437032016856376680319178405811261802074955061597795727228291245608975661248511105127641151300865259290562972594488780807006164810445138616615841618866683247778933343790417183231981709585853401070402352247880227834733605154654208405827367703397973124817867577312294892836600548995170550964519017755920491134728378033326750515727791786492541954821643732033152252733475994603308334780140629373474610355068194857748405815128125330220343480629589196619680550886899725922137105216388200442015479933602992398666447348073001184279416147051990832666558273496164807310852154387305610527877711252422415258565032409894506552122659357455434448999509546516876567873333914554650709822738555250110914569231361810681278643896615945548615899639843813666952141996624167611621492507842243902766221696245619381375774605289899874210671753440701163534059875806083218591213612602297792283259653398593217024941897584586879309412954558704641934429167525386399311944692329646781017786882955521326213679515731031183203986702444464679264883058444930210295590055606165224085189224526495039065334701181368385574370869084681514830806912736541133960881470315237742308529215400374398116689039427221492261470641437661432564644402005790004197437786314907560361356740707196128715870019180872806279505931484886218059480821987893092959069213150697966414731390314378598567994448063764696914845544937095976949556292692796483284851190274166372600687071534820393215816026820899675947738834985468497728922675033232726987359807157258554534363387708729838351923974285515021519390503787211158967755318117395341875443593494088249677470509256804069203968911906532856935833859629624953249282547694462129874921376210457781519780672138068580237523242109758156352510154248725657237885230051785607446612712455877439910598727422322236228918026459822218149591970911650199903977933286839068419271139224493809573534424910810569507347636018232048772842840705740610444557659804248321191219347571463409422539969701913590898411004567236097895765842127957787359469025195874392074029652861324112210670977858242810226625126442091294631154867160280576157087207127738748079837969738346736272907326954078228907240806250022030103243471070942620769424250383227664179624295113595650922927103176569104163069362275506704125229083883227741648535784720713916998425594827704884440884048570231868405014498867352517286315804797924811180126154783110497902148043082659366781977209563715381227919869341778767396699280870862522931948944127530770998030252387371682413803951145767257140559728875692368709218878174221849437349204586631919443118989273373652595227172082496817103834248085354242741398581443429002334727240172368808661300231451115291328199507370065934925021969833175256299351306328641830228271353568846058387616229810955704081192557684947405779884509699286099118817298430699433547211009079482595408740285359093432367204533672009970779486719368138866188648840163573708869681067182080546042978337057745453023016747935779322389017812077413454635572131138070447390064042098690495563990815384766717508180920795876792077075958862404761890064984999921424416035664890724207484476976948663181789371914701106962448405463092701988465606503300165084244328789019795067098840871060483436479149382772059422903723115301669510704882112896208019251794996975248024340609600192493149267102552688418448337310468569703642800278151785183841360284358832347643596421881526596665057964053827050804071884062288727904628572069704994983452228398970557246268968220658737939309295962851885135390864007109076454907858176227575944339250250806424963701992166486681083315296440885760692193722152386434371762373410590481977858473872297435270131851901627945492845960665561756900237380050320337739114937222692715636345829089022971742750975497841816680681521790589482652539674743477542852811800520246939928822189145763731846324657221289024648931687399148099267044885671733352094184536756797510551247165871717923549062099764463998166198147288178913216151413981763321707683229249020148234875195737760846468403561985525050842464738232714775172951842741929209903518935372911660933298610653450385567441423081564273457132625038138122267839275539394488317379385537074050425412207154034127084217300615381424425706034294800775550428346687417563346954606915929811701307971860847947436154534973614176016275979962289620596506204146325423963174288918311054000291798070696992896378237251211848896156990492511653866861708727175129743629232669035317239800711664336916352757273273019680964663040723297535426909582937904934585625428123881208162294614263698939436684681006337738069910841585236458607359914206604759267241756962489475530594581950179263984531751086934103867126900494224276800810684669857022045988157595957258035294079410835500711458127756501041160821464860452114868285466846677033681168740753966890869829905162812697068968738906495545558280538657098494992456740410755232449109163731371774089491724693292280219243313432709883187604627083249554581032445654578001281629105731324709943235755260023344512209169158809774752301507192585314852433760106795543790072985084166023044553539415733291732895468679601579454025049341590670709620736', -); -test( - macro, - '-94906266', - '1234', - '9591583891277388505525115654797253189447136886605641096683226693736396854292872290512151998759360923701943145747583511134137237540129219701865806527338039412393513087835762990942813556773080107716234535870561191650361302039829302403412946075446106825412751297892836531217239269776359674130746921131965972537264150037423340241624478540689955102073116137675285513450572840589026258095131250791322081023453951176768841489407000043160535726118339631576838850502482585592200779524367753458287644483993004333076374919449019351020134267799153173432760508245927226301565370359856673809842061641312175092790578128981482583891661097755340718832041897219562172618233303238094263205645877970358113993768074445674320377240792952208045529432335140630061808861188401135379799521387052163956136888910117971768073860253216476475927368994288414942490447092525755875965929318466574353873454174423568978107060092961912237658617656324665296966703692085594297491801246417796157302870670019421897078307859164701722985884435622838840530890375919184262292483249645237441871417071068806838100941596745962353204182500699553236401634245625283851805217533262792073996012743903038338818229229536055186386872511025680807437338096861815569495459484486460365583028341745944192156249359977394771788868182593957987578355313292235026581979280145300928658410955632509870162005244044559296175541745959995285799355003323443377883778100846086239675150873016131996875930350018015992219350113946152537456877585388442767668614805636644492157477034654015002200777424371801710940679802301822648705115099704427481311918749176783544920736529548586139472683949148040458809863320043994900963476851393707718685357960075583333452093866553065546077049928960672319740544152092427005399888194730320253239832076741315219908647683627978170933321554476794379260071113837209591838667536304118212015385101618506499462338145076365933116172453086230618448544984434420121504363011969733490863691026519845481227162596252154043336808666820679272401041855392723131101974634161808347994859566559136073803551874710780721574809835031749728330936601228289711332942475487049804198344632033302735878413333870324928721703861529246383352099214222474224938703923296131257451581782344657338446171822905587284519270798848617615383853637901599987735072168595913644523892204610491256735570544171294439722701186324784813173174483048007173966323269225972341862131385921920832169574095034230665694523080098106542220271445953212355824376796872664899930405078699681023392941095533624834406183151593571978375085934954718772261954055173766598828049519860162686382244143267595319712518638744666104806572606245449198069667116209595882863289884166226287944224244325912368780394022898051057039098547506174697498113971272667929236765997561816214125329832660683430329906332085061140646573555743366393621599195976267935743727788827183517095321230820637742126067889019665213164390290062070086490541490087922889187502866643165223474222152292371630635439138794711457873999619661458114893978180017319683380126983120641424939879059628457874620836535554946801030253436946381021247115406263632484804383695320385114124544559909521290483278475119817164333705567704791958463532021771160857295222557768598737275557446539702002377398605084666447155176033668026697232370808420470009321148824428418389705572556366704189822047227135423662015737971723144128915366318163252037686350939438961105050312976676967329177197952756021289597791397338470443572707715044081895964751092291481135333163500784426335086969222350790452151470682249035744789451673722795644580346446427237748663833724773055738574222477446871501122860335729438705137534047869725490906711494592485106885753816974753130866230360407926506022819960149735054814022037339465954340178612152040319878077106430592659196961703359784146025873205470608826469128543078279531426173587139642452817225181534576963768759115834369507960533557518872119645633087366816494975254571143679899649491717075104399517306160274939826782873377728147095270888144396760865832963585642969396605820937742695276189538284034362525529116594250112268646631014509298531366336740362116463524994112518288361022718725186733909161021464483147766958810416653193317981915259425065001767448497554577639274204071071705244125471084327932064913256116544625655097111357879218899746235180031762344942760169055331365226140925327502639728177654134067427560672144839015071652189807317452445009056094721496371835728117777604974208279421394708930008595905196768223073852631733496851110527349046730941946132098007584486429686144893021869768040494264750853862282987486806138208661684993068425524750265051353734028906190482450851078570663574840036302550770980899456380758967689998731148592509807498959236086788270504035504990430792437032016856376680319178405811261802074955061597795727228291245608975661248511105127641151300865259290562972594488780807006164810445138616615841618866683247778933343790417183231981709585853401070402352247880227834733605154654208405827367703397973124817867577312294892836600548995170550964519017755920491134728378033326750515727791786492541954821643732033152252733475994603308334780140629373474610355068194857748405815128125330220343480629589196619680550886899725922137105216388200442015479933602992398666447348073001184279416147051990832666558273496164807310852154387305610527877711252422415258565032409894506552122659357455434448999509546516876567873333914554650709822738555250110914569231361810681278643896615945548615899639843813666952141996624167611621492507842243902766221696245619381375774605289899874210671753440701163534059875806083218591213612602297792283259653398593217024941897584586879309412954558704641934429167525386399311944692329646781017786882955521326213679515731031183203986702444464679264883058444930210295590055606165224085189224526495039065334701181368385574370869084681514830806912736541133960881470315237742308529215400374398116689039427221492261470641437661432564644402005790004197437786314907560361356740707196128715870019180872806279505931484886218059480821987893092959069213150697966414731390314378598567994448063764696914845544937095976949556292692796483284851190274166372600687071534820393215816026820899675947738834985468497728922675033232726987359807157258554534363387708729838351923974285515021519390503787211158967755318117395341875443593494088249677470509256804069203968911906532856935833859629624953249282547694462129874921376210457781519780672138068580237523242109758156352510154248725657237885230051785607446612712455877439910598727422322236228918026459822218149591970911650199903977933286839068419271139224493809573534424910810569507347636018232048772842840705740610444557659804248321191219347571463409422539969701913590898411004567236097895765842127957787359469025195874392074029652861324112210670977858242810226625126442091294631154867160280576157087207127738748079837969738346736272907326954078228907240806250022030103243471070942620769424250383227664179624295113595650922927103176569104163069362275506704125229083883227741648535784720713916998425594827704884440884048570231868405014498867352517286315804797924811180126154783110497902148043082659366781977209563715381227919869341778767396699280870862522931948944127530770998030252387371682413803951145767257140559728875692368709218878174221849437349204586631919443118989273373652595227172082496817103834248085354242741398581443429002334727240172368808661300231451115291328199507370065934925021969833175256299351306328641830228271353568846058387616229810955704081192557684947405779884509699286099118817298430699433547211009079482595408740285359093432367204533672009970779486719368138866188648840163573708869681067182080546042978337057745453023016747935779322389017812077413454635572131138070447390064042098690495563990815384766717508180920795876792077075958862404761890064984999921424416035664890724207484476976948663181789371914701106962448405463092701988465606503300165084244328789019795067098840871060483436479149382772059422903723115301669510704882112896208019251794996975248024340609600192493149267102552688418448337310468569703642800278151785183841360284358832347643596421881526596665057964053827050804071884062288727904628572069704994983452228398970557246268968220658737939309295962851885135390864007109076454907858176227575944339250250806424963701992166486681083315296440885760692193722152386434371762373410590481977858473872297435270131851901627945492845960665561756900237380050320337739114937222692715636345829089022971742750975497841816680681521790589482652539674743477542852811800520246939928822189145763731846324657221289024648931687399148099267044885671733352094184536756797510551247165871717923549062099764463998166198147288178913216151413981763321707683229249020148234875195737760846468403561985525050842464738232714775172951842741929209903518935372911660933298610653450385567441423081564273457132625038138122267839275539394488317379385537074050425412207154034127084217300615381424425706034294800775550428346687417563346954606915929811701307971860847947436154534973614176016275979962289620596506204146325423963174288918311054000291798070696992896378237251211848896156990492511653866861708727175129743629232669035317239800711664336916352757273273019680964663040723297535426909582937904934585625428123881208162294614263698939436684681006337738069910841585236458607359914206604759267241756962489475530594581950179263984531751086934103867126900494224276800810684669857022045988157595957258035294079410835500711458127756501041160821464860452114868285466846677033681168740753966890869829905162812697068968738906495545558280538657098494992456740410755232449109163731371774089491724693292280219243313432709883187604627083249554581032445654578001281629105731324709943235755260023344512209169158809774752301507192585314852433760106795543790072985084166023044553539415733291732895468679601579454025049341590670709620736', -); -test( - macro, - '94906266', - '5678', - '12032817648505424732206470115984402822087851800458754279636201919240648069545320866560153680915753098175361305527571944284392752569770663535206811189003646879509578656245380134150984700793677615365069140988087774074093292666569225253766058544069550347050527174441848464033769865947958339935711577356378541412264423970226396093645375936214905159261610350242858917417274825574404844112579056015150088968297195170716956710849024033030314901530321313136125969347224049980779583582657176881341711446052030096202772974538698445525008118596374161589518848084436336526803665941965555491104046737440894040963947109593967956480178145670129677453883803551841426177253469183865084475725595826142523985262137749463269279257798034486481726137836527313367452357290671314328438612857618515953366030368261430360540763695870271485039165724885752553866509861096959097856524796407276935782076995718449804132659747765788304047343356811406221119007276554404855974610764195529043031625022180466201811329438874115924370207854394962989072466937684755950839558855381231468598531110161791599549283779948049180898253978038930131391965203934491358832834904237088198978460478436435260346993291323788040533668759476466237387161215852475434944660862309069972151382884427559495414208822804115701913705271785723745174681820409251541457004542480297333724163305849231905385022165131472866706690289906743159860846280981424473469229829927326830076613963484251270728729574503814307791762786013555601416538606549575141032711025523511415888723638864251522238403514209615257991112949184147400897053839753457149809381976922528684839893079020417567683858076689900826568207181631852815210327645775199600779525983840187855012090137702437886138818889991865427565806357553975294746020041388619646758784835829444515981357443648673117967946792507459637166782407266051469231502300232276219189698940875042523547644156383005262958119279161427467899540186226164668917413440447866544343462167108862890696625841719457545138663417647004060269444482339780740345497612893664834632640370620127200676855405941531569747479245411572674091251818894475403815473239183886002466157193530057684670655605573446847521994094849382549641374712884009164471656571372198449910168561787316766669347248358805643837182081303781837240736436136105361562692457596834668246060064085754181237451898863990804515605190388337710712867999191679779786712129894970664010407413944105206949638872966539657011251994137558113271215952893544638320085154429394938826746648785358611940674926917169614084840845838330085461611673093497785528104711054917591387941532664903919365872012413967652428893771254783514729383993987904033719641464047625904368835612214247748109590039950324488045520862407963337473558506985216736383673379753911040520601562793518299011996503309262568208883619152964120357680502143243237914460301562979082299253093538389428819917042632652200784610277098397358002737455993489830854317722387980601693621640290144850488960430945867613445370736462277356198969776749170074469142959139228103077704779948067569593268552335250360809034517777505978089487420438155196173015195413707500749188879413696451279508390758428449841376760780035529721795084992757493136169128293321086137318909063123039058397266188325938039949845723539644433753473294540228295834513955127390193735537175144046212555694020714759166871608060391688382739009845903946202459806666413942788393631458788321174919289511304789355666166018710631603596670860213317167734166889129692249373293565808930204157031991011885528221419033566927244666672894213270515941662085431325595906230594776340409294990273749504264542573465334640502232608314606771517369952134843645398223542989247175132652279714716937433111501880963356885109815217790196450752957228567594353774344623557404477791808889243706743536894781675724627289947304719225770725660654839527433954061516841146022327990899330817724998757824990111295998009049097615922407581255190739491092231346117657541300062685972295196237757295575969914209258890395384934110805224837375196790993957760232726873726409663790983348867817606845992238136671232375378383442128153562558993510087405303974930371982970935436148399729480315961683220510601978266384119209049691241779665749455934311999233053059017638411476295376290561801091208176239186699145687486729178616233651626665713543619439901912710580944645778155158797462852234495229231406539206472287577297378192253982740258520802032184319738335496087808027150192808403729360390814153726899607792522414861087778808864723924610633595805110618744865362177310122714818412795648247881041310195803062313215902474261741174952685814591966714305480767184438698736320248721848847642234552533028696642298731293921638337742568224929679203340715151738759154672955264904729487192815222409704216298143439170015879950939045057249309073969228984931579994969781518397426907617306970452320824844550818387028299796381307177696815835155244322539561008715495766453539759717077193466845576102664991398263517768253493037683951482880594999592487164043876965317780003505760527667863680438637377024026769527929551980088550989890140816338761108689882533404008958689956441208348099517790655163832888672441196339023333523558262873440940381150551323449813051211874782355328615332116487157592812281631495362815861059878771091573384226171301604486063550985885547526084873950124641753676687247950243102682512625690242813329639053488889144642576604385864315139668920318181435129690631047099936094981891064896430786909547908075022480142180945007023530760518540471631799916726591085967028615767603414815858484391191419226449103172750734862583321173181611826808717155895467441107144481818474820145538915123191086233889850661674240080442220814781759930155904531817862470486365345886110364369758405347228549431644962312521692584793216958186300617894642831369657323204177058526995631057099851113254417633669886363824556236862260831309128178167803213227296932516696703169947834651505156750711821678584827987720266958112228898408860533624224495113943886752312598411859670081240718595741432294942764857421091909115884148224555916194806655809926642996956901825501253612530105826618755517164012710830281242388235631527379824843157390117320858596018324726028114634513731910537333745080425512204214923714850269287802358237211241477533384595700504349352943037853153152826576013563379638817785556868194091209215931133480115980056464675106593427706835334947158188177836411830984886508981465689899139213351717298512840062197481925426346012965958263308687858310254839246643736356288094423514700890181531946170936255870492888090106543963957053638462537602324269379083493214926494662001476819723144975153483394390016211234911521305578087159665053195506910683427552629512701423004114557334590767201287380253575889880716924180835742565545587297372230588277744954790269429956487792324583964844408254629753937326834163368789921452639360922619001644423905992054827955523551707437217080870067136099865977482032198335037959434533270675522876697240093272437334734369226923188059535469846991641709332683658104575190444624146274210567461025953960170291512193215781838523322046313242892959796365884825784776849648185822682474064256026698235271594627736075157465861135739641700807125348820678293047370189781363932882694927128285410177891393529704049003357809736578523395638279194743744900566551317265479571829718951144370147604490513174682721505873577926782362538993812368812010097486662549501136198241341798084746545706437440426878375892211248824662555732459007737499801554781654267879320262704068105933519284285796739713621966126525083860893611057628869197088116263187425689411609090653720984344418988835030010895382016374020344833711823116640310985731777663607552620413465337138339866989132413420055538428253299998808303388845963185188581487436300195905101117842154869015140378602684126069213877902049366627282585389279538334206573795995374258165195704570108297045710018639586996443344402990380550529595121860257242747783754028054652596757584727739810928998066179549536463070344995795834380103032675101592624345721957432323326573571256893898028138781425679040966486628547984753574864434930008117523845237304478890899718331660641419486842158394473459007167484277217322766481893195761391938895623708651566392702159311537448090535583956495076752757058074862172390454533499093851240951296540985779357629233421157703016528130291156343737642593244088633852787614747817627060006991669568592280723672383298225466281340956636710431940328427911743530915134552931031391690006021236672575108176444082447291342833803642309708607039528118937917030486917866538554824932145847913873347906410715580065154707297637925304057208331186121542705437629918199561558440077780020149125928636524680160377906904253706618745984744483286494859496634897033537125257750234158366566522768726012073504864415325607039305152748943100533772051166644314150037384337861942612593701611683871218292642963890517076695142661403572711320388033047007398654918216722136161411678662937623850123091604556006551841441589614125921909593939770390437476075298171895573919863135651088828848336011726492799841320111649935389358931258373693459145057553136475922751342605359538155293383583876955561910069358749936951011082089615693841896629336961254394974036986721026940350856347077152772939451280308399363104652576626172429793776211333913295809413213919318285255196490381055544205313396583888277769550637211217647203529389040683316967313521879297011278503165986866646581137787534538214235999303080897442666172258679022325039014548620740672684311806497429047056530576223713193356973396804439208879107248745042555605441287111013049709202762299259851107012441701468738419926890133556245430056477998293002461917643271629591853938120614647619772495115562085600504853146424640985096824494050598829781714618733157799877227971474455616632639023850925729720213591779252776369176312110497936405970870772189359848240927140061006848080799072830556306659756678997694657936924990345096410314626570672149731543628000558026533834459167842889970614149005288838811229513837405392153251553605330473659867312295620005340633564023904208178972115034037935254190823029327420408002622341072381223538257497215682930180996569122652703053739471871654162569414951520531206458862671624276235522538318964461432849995356820683233465138675410827490596964352422796420736525862662409202276892082905745273014755041772993819374747043291676296825571338645605019288235828607460219104472171905393978286058711994994075946946904501719626129891297785262794903831823520324741271326470009925340248044413698893160087471101115598827156017322849926448246890250940872800969912833939106037661646340854638183562189382226457787900923987531877913431946108694947652717492923066187775746930063437977519195800521298729848366280723108648799156318978065768015360592367479405252285966318000015191998608772683676758058031311468294723167697582272502760859874036909801930740974001192058591430098287098021570441654592505727247768282011756726844525801256651444301950079120380718219338329468008534442846077685713544194007524327955071955226200530986913459845314710510719058167265959825133876149104200332459364223361260375456263610906578083438476313348490161343553564484692187424842603773823747426008609267536178919597384345623591288999415207111940819590820240164261067200326676758012794725260339664703418163303398007586421287243859016657962176274532712513078145376826038329107151236318002243613099209970831731135481008172826345298961517973963163916705165676097591487481466079223465813873607872273761995059993093591322303896613664321628779241192911035846341115545622374501606127977756985292882117778296500478276339993749813331078686903702537331445966445686036256887898585809843950252338373839157713280364698259134024338989451358780140559424371687870519586950515334379886144076554360694721608275939343734737390935610438901882220547279311828445041103639111103188607674601360722196695674871077543938123944828376247570522481733445127428507577252676752726828669296273888040688955392452214259080886549295627930544496374040482414174429554699068859457610531632589984450033487991393950194379605142460240622750964605904319347162317103632880464489765441781176775360255307983114046972917021261575999747919513175356289269738252254493902081778863456041493700800804759871388208118144666431845192191907729537903174959385672176640184810677326710369561461912187493932368918706337698762794615949381684820435117964874003383886204354335841513328726838198927086809536254198720567097588143419818644573075112705490751622292191492544793418111741658483532767411666600528233897824313428372479855025933866719301492980684042893544902172403475761202059963960896638007212043160771550410552889811065116740233744236032304871579001993160935959555347073311004243774883544443676731406104831265297661674183379974269379741288515676564618943733469021389351199332674318818115012130962124777380484159115171369334822744164229342075923978372260068788894241149239047819830879098322853736363606047921128478685310683095184709943048770806054769494926160412480736093641419077309213991679052703634396648375610853612922041643781461899880570131047760466065993555093987696077930050904841973329976985820417577209060155514571722895551726144444596204596782453047002156424345570004197583274416101355362390738881463523630967387072211376360805282936674787380880650737793203297867993622101141663905879536696169691639238866186158654641243673999077254707876292273024963076334728546666159776798341058364962760500123648903436613222992540337677988477671022338118694216304682423334130149852860681684099263517683335157344038308938179479603858917811593200169277994326389000742115999246806304045702432487140508819529399245059884575934708946209516322574789907597746226957553035886293114377154459544505608389208459380956440963140789343305699658278203986551812398932069405456026560759534279324948812804513062587167345623977971097453549344764469259507711376402428457076157055436430677764738886674081844106383742912023140510418552281742188746389236111863491148474361612517064934024896521322519834851151242772104556306598929440002152036519490819251376805450957184749544824693635603569605225972053841581004501584100912328333976003102107491085953159226069012834587327259971112025925123819947881840747175767809667062611411996051112013271091350150777864798314871955256044949338844757948457477116889094191094382540558054779516264683712607043026838398910328428087833751980730006443119069122334166099941402646601365567136347123203738359088947443981087204456279328714404539183793412240994826870342095392017313400572110318532747843060607288706258394994682842520556381575601014199010490404397191138445152855809707016425452959778664359588040560748735412597512323836013768239677434435239189168997928071347187463000837985697466045497488955639372562589230908251673255473804486520327695043897071532175037437036938183448706068445520270184271860267785443607757449987645862550853844492488331774133732177529596230056374085739368318799336491781716721031643253122590074871792724944404133795117394685504903169776472613579323786988436816555044871147023821295375315968422237070919604915553260798754019817204005435917338028778866898767783201988249690480208167510788846166868446591501548151404396048081597044050075742974387127512894683131544017091983972922897201447567071326201918658162425054687848305577141613831948331736546313547366384763806330342036329442085133559102820443474867650075586800703988545083847887658720938137520387462853564941611748541059186958982227681935894334481608643024722381659381938989731023292291485815605912701175709672139292877678190348729760666157907954715630362098750256936461038759071141133514628511273752727853532279858408268908582987443368819679334383388270166337798654040644855690261540077459818835228437887729301076041005381936867843411337332815350029407543350462675437781165812720616995958519407473614668214152449569347793047763581660230557418465248972034336442550080954052153006780131714480535397523095413274750723701383225842109411649460720870423187520888470553057940395347526767669497718524603967849112705432812547718499111843247323011841160686418751692868907882025078560674843768816179401584803887200747810776387544791913903025938435744852431951915576190055048231754367790804864233775987695188801541755557892125771674773775596365864929152862381755401283073853655055425091448611697016439954534260814030388938640509188143381711317813476900790628429257746511202468312957230036100116864480097621669013542313504580498125607583068356957065062879843861421422680449125994612477774818757161945326684776971564527300842862017927612360118968033138171953084120164381524148059624459163118084096733232992442581634862069037490046169948238393108530288105627559374357574375901411757444196980563141505220137571144388964279304678461638650126063683382309278978344376529180243251205221507357892280444330744741037298325319700933898637890602101615296398869580920345296280236271953557041411865760773333961802153204654733800918538855539998075391359632003872695291240543210415227135533202642183404859216781849310678370931836038236340074191979283348256435037626347573331738056630737544630627819667754832890022502410501605907042038148659166291897056811128443400490554763520515617080334010077029504407741614050704547796928760915765587321003086708428633478958994497231881728742148146582878333513294577932133195398397292515911616512890368305984393578729868207205694140862127741104528308067361504231110165275192585475375358000676577709244330704876174208560189889742189118009170492691256513264181013828227165086680711420434651576133518693155463307951273683890278139573807332751907304778544307753690835516724244324828301915566152584064392368154012296367388561296655115159377964858217285140994654349136595083503371058992673764518566714682145847493882822893394347204092233214651141128348419317600574953305420152824611858556704207679618775670228729011916634895546083736101005758230326310636673429185051800939052184453293132762586281584909086427718838454160054742974280328396661361347295963302563629881389597757395692922460506227719569272480843843963982294218088153904303273847479651330200041676283719440322315419856051041525940239722748989045813626337663435654703148317669134876847555469792411025033420364193061667681444556983341506990373187827551963387220108573965968914968862001608003924039023517819236072227063268657970009813282109838740945014605897718935027854417422516891716032864362714644753952562246051636958846719430334197522545309124095753712501839140881772202359462149006967535743381987382494199903798783450128864108137711379338678990406261945617986484478017729513417966059143295468448727905734551655932034516014732958476725736677666360745474765405553207731525120976743153206626090160055202221435671053558239271799027644260676893678561236876461169942483963790905593236778663204622182700607533615177816293194243328323059827764195754067310463910960166786833097658112569805863287752396504825639025116157475645847961748673868648985763576921316360028625597643145982378614155913337308072899028630354506317000731973048320498440559655009741229059616821075679153626408071146949434874870710442443607598092254881233946034011674932649197951588391079113646195367873645750872572676353074784800670128148448926212428049339412055475920927927064266795956572600200498190491828386978461485683642086665791764122916337004769909968407222832293743026188332895081447303907350456907104380292438133354568556580913923940135089837451503139566900151184776483065461722434703576835856162451903500950263460660059609102492532142956330352718793762144273337958725209863219465403332730360337994136681320539676141959170028609571573318264331511603324410628374361114137620410932826988141316635961417071437490827691742173260234374302730791524687955576187003866752766949337018264318503626167264228405496153334243531140332510516296899883807675047755079172377866058979779109219361302539854229267521185113459426964212674944243036359083834041693510700598946606285775592307909800370642066904336886030146957671455743670251078744477019985475848795376334708946576839355982663342271782974876971670099428998708971102417217050194310201496909274080129838572650933663158961486164318754012103629249337765151672364719569977796470263610483643241743081238512099346318125509126340730907301902331865609410500322101548902016145028474991172896518663299753954359738145858524256241079822888388025974877315851174825234099588922307983039849059328140405070220292462966857742931975247086268060742036088901447914159791901545682768198127862624633726084182944519076169341611788879344467332624457235181005489161468437468286277927595231710889035229963620976542808014437720825245958218422545401854965717001947936025069441351490369482405131546123008735270958799806732505582384557603513044063735545265173441077422655347016647100822557881227410017918031724818941284851218632476074548990913121757687254853114905647152161232816453294063938585231011698346476850219902049515565302989770984364797494877746871059691242951446947928616748412677311316689309276924328166978373287156127637754250091827262880001580912029087294416597708081303921574616792751138598416609282955474549781919323050366795607116559122995449444513824012921931191554790229338378408917767888764757481247942357523387981462036482918774775255481502617812032424350337757705134963581392988233010269239543026399000590407670292541798141931143957825519431024943808265104606375893000801021372156629170649936482063505577146268662962099488092098200661611049654157290575516049458547343584333829118330105341165469101287828518455011376471874002702126745604311883893741228949110274354393717306210252780458508823091743222111041747254441747473986354767554852139796930960587571954051842952106734815850369832317500044882713313649500485928442503705962330735475241650188479077738536979346401179945139932535355966728284296269303465382689387382904506131090629101374506641285879526447951961592499074899803465202603048622508966269246410248303951769201230670090880245754249900954768059240928580835677018471478117764727507460788000454066509256352049419001433619066501137325877958902450951248012775946853069206507022910965027828695344876662390444745223071764327986092164128821369419529923449745342622529520337107152499452702345241141322434371161845076945400253720116974932841155231559246404477495415318558856170762805541331599037682445748096007207307457259420504514213233031560297159337458934773052943897370160719593071005636639052337398910516328917458761997763791052147675868492052732846056244343846856562859110918170514850638431897116103962577287557650861624128410941073015672545799355272188821573142146157647220592136501403389440498405045979220449287529240951068425759059315541517416653195735778257997109940532355650068087437125593263015404801959966170854247359416368888999714143993665160871834991848566207054598521044690133585142761653289736942697455812090483602711809497731994035628689666322904923368824343322943897077533662696509093532125560433883239720615037830617553062569400982442551469212711958432874003095252511501251544368163946986793533762477996739664587856894977815882349958159300266076187992625866248371863178211081986479246265805496439281433789465210502472287353963749371542009248496304898171325225431490404443696275192260731587223678231773234700501786989060062073372663103468326762818735022839079304658268264383403675611385203208802610883443153396372155598085767531581987651375303196560138048749012301078065330371665264754684135929975327450958445710569685713002470385735812499009271125281912305498904570924803427650562790575789311044993863517834700777416970146268592915939173835339588498234255520467622101245918125290891960721252962341466913538814589814214723753781664749478425706364352461070224233708179564135246880492730639677674623872309076224196922090720446752424962016499908060928640446088590198190025780328393379622363600793252241003767266825105789787022775751765687273282872681784817235974474959304500106923652827770175776376057866784637584218919587715646859185759124581929407837290204615476399831255232642772149604749965883742550558896424909600890318701200878005426405783690223803023797534308676408970377177829432708888482899871770661919987560426133634342816194791652942901002649991930864509397547495136799464971411961885951448364705084776854218557154068032421447791593957493800552595011736497560627402048363722641737191562791467192752850831819871126942696603819688457632571061264341307436496659871052442884327358088521230434779757325515620881755317489614893979565115465466459134952019342787508889329177160466567164607203135727175727007576133217386625201585733132524102256267135974095667268967387808616588507490403645684015340306735062054190431238197422650374750608082120129477961774411707229963815811485877200700501734026677170462507781454324736384494629139100648590234634063450890873793218123159652262636940460561659812567660405111805037271771919133677053378340571763804818663579984080144826950600742568620996921074204543790255158895558727569627833033922369940173618424508834111810651656048535574444567986963711635689671493979686086392051590735412326987468072321026945906095052728783747681972245983868013037928884763904299129826301670561248217272709934758302637217436483609049259979017913572017677999917451517664593806401100830094206113930664869181230286977905241453163705128560161844356057897016629444587321825339889932073812247330853655199279654850681643123911145550445824784071197446536929226480929787125781620877835455757799725872429412183788180777229189273296533362017032457858813870135280647619436731981832381160911893129851064121020987511004669726225726728447523886592540185823062928562680797115677436491664945960425463840352618701257065715147975721913145513121975941816861627415802916250662475683313221460810083733560259082176304656979800876036280685013224264755601477814078188584904150365677219720532288211268983178369847544314641858955739505549156547927819249161988086454580912459896288180831839198694747159727783540431533139780840118503526092188395999937083438859471424422484895173339353662013418404633914278270531257635152842306416202901968927515006838776193126399890861893238570955140721902636602451481280533397113331997181668368168114113211417441091536660280740752073688197951869383500740801485250371189839664555255637862300294894725338807388545090253060968823072953675487974449697590292547112002691372243223615249165249747041660867764509155511159477802075808850762651193636610867311554992969899613510446151689019965900866044828778159525923906714414752885574464308524982926278589922516043567064422228451889411464404645562403027336145425521604775172340420217961207569279554941274837915390099345785110541869546066004279176509714969623554456015482986407451412652305793262123648552417609567710229212341687156454311883528279150390985919008321641915631234630542109381453293097771127251164835846456017032621220535159510911806712579812990017904201396748639648986580416830392353504059649048195263808560060144490097812861709892171321718078141652344634889987253449435365479232110959791057112787715767591956424199236727218939549730947807636035618617124214592974632640888278642920646150269913678711900700105591753932021927544248495416598915245127805617973028286807341594473386206410511414428389049099794186454102765796914905933255458663787331998410234134210186357410895835541247415216366309533445597853759036910747535179357644751896549954802762133472758890605527381638477541022802894735646799360073180253868675653146890507692412609328780793399715860489456638327779713788516054313521050756108383748787190630773384260645245277015038626404267544599526329137987727604904731562738505220497843816310101861170621100872755427778464809073169584368881349788891479628643600529445515580370114613383736664314978973619136220173478287784163951945648158666739841536848953175419910538486514713806203315648665785618237610350582300314779025897090284284080969250933457877228872443367222249154142248644276474288044127432827952859178595732895202190015471726020796066245204963376906354394976290239211712022794927835141158864526574570946923047666699485949903120984263356978168759479817623935013795014196775910220111958690782426346191285770042525098984695899814199136259926824361465285823048578317155487790775485313929046655222874042698387928987865423117119839944817973165334672655644240394784576751152259628370824434663024024418575011518490382064521827913667162089667112747753535124207783675418967511974700275667309012046788487060329223754816307592779170924531501164340119876000139327544408024106973184674625473383812276564724893335841539005571654820183265759775079589751747626589104877587523415006319142401438844584683685256184472651725051979384269512266601971450685653366718533020065953355981712508860345534161752796241189385496331101145400268056092980486470369444513019881534614061799341395392897417347975110433595794498856720510672308772750213294104276272132667497463492787282710357371813082428478468377819129538727211815622333666816660354583565438907819881292081303387043386670876926764469958036489231885191131050114302131977936474847279924851923137714263077854243985023606988127523596289821331500111059950584764623037107983656960989438380956968393260575271072778863957365450795572899629582643385628639710611546711708409238271955614736601631291370395060012833231421354443797341554577170376506036564132217557077652411894117329603768900109332749511859736210742285027560130448468034446432758727729638990040491574996250063104797738677059556962784396811723371443252662772605997510646452758982125426031044458649357552995121303204693338942472794723310009789920455359278131277695870668310315876389946031424494549763773146136063430889417701887448847015328003015451499112860909942403248329916941358489871131665319203260702546158995642204910162911659670018116940727018797217171686323023556118323193198342370803796953278053782977187454671829418430921721985095232819212480102940486000736338657164939674716847410850866338919788038362565117722358348690989096737227059283378387520150072310475969531030512284930329368248541131113766926569221020923296593566377299675247629189109056398144800021591742635347744703956072123890797151089046108298526010507197557242777201909634714422471270603537857950184437259093361956113283048564569574122170292703201825073022983566835511332308338851334507372273081202885655714787807833951944184851958437229989794757451452736941245634812065844048175235449024407397606058411010621436622691612507865446029785762584964939590202876090478392978007566584355372687291804000734909051848660440791202433127588453190203200783903284912792280548420676834695155901857566765932088926634171356382407121102180333281700812579308596278561884268236429082157465746397088329202574170766452511505505609003041124950089258440827042552762430618486885201276510552341532342351164734524285396714462005001978788690975960312082731929333386050252112006807345880064713266643891024391700346350471880262858040712474770262634884317585612572195523131314179386278947285577465324615711086122333531902738278585784646020600313701514942125391959071309667102965885213697839889156290939743771636780743647494786980566347580750783699119643179162204062000548787439490012304199473697303589997900840621652874808426421326071990248127528436949608115779005494179734937511431781806145857785045035166485825750634750296960306410410179563289780730826789234509202931820390586826950654104129396809093876099264731036820798174964438055115624044199738101662825807851197445426685021856220844261848759266200674656511060029362486031624820819678918152181355926111923461166345822665086176145950743789341584980812952752231860843257985965288802261190266665922655937859396637134691957840093532444525473306658768602008060074798781369928554199058085681741549030727173827517234927484381244144270371887360574934364399214113609316363985218988683805111173090608023338304021000410004993333783004263450282560060958459050745590194592895933947062092079507573081523402757767724788144449830636192589330164576778830549052766661774876685632674136307814153444590770266999239828355457576813955421195065159397418434372715876860476997930972151568408519046320497117726447903332629934498123201460718775034315147902361476205883702162559670339483592737874161365824447049081019047867077729938161516575462820068029800463721563526770860295002450363435919771658499908957051051713169210155056685711478948292601652283703664279729412723327993385676972068945177529247890734902739568992396004082005895239640239584914895675194441732990455908284962508388272481664809644013695108530643590237328537639688567194704667459259852194847009346130261141412179411299994375826249494565666674099752312940749960678432841327379608811354294970105991967067932527833097758928415762643944723789054971807292766811411062804902336531718448905647640615296706335520835436041593386648611858094071235308269292644418143791110200993361422914793119640919331990182443330345380585754214640238824260774995215366915341497235208474057031765422776345411042327893101949992571577825558691897895422945443680380208657578495349595586606235401227143323363094432958840171215550050203924175856785197077586124718868813101246599573589030798669834807255201536300814627715056943239448585159116823195136012406495891984611338805585159868346247052637564031114665756371321951326231045738075829116360629934323624216434728253094934162532761445177538547165024471725562255682921126585840210275028026032072889156454737530566706272562834758199753126146886585122828302440171763025247744940890748240827209734322451822354861070551316853275578081420600654807730862579379336164296300651251035620903073641444759072951433003329108395228654468968443998724991943750648399825412774577834064138787246298154005871653201690041161564805619094094950177728315165333892502449398614595846310753261175601850635807705775203998921942871973931019055845469784764447913903988508253744480825540367906677867871057567478493188656741810436755808948879038430592843598118575241573451984420451874438273802788249941071249303464372879792957737080283657705694830680260355087766018017548240826889393233567613079361639516134438559058561470248595710630583243521624876087878849326799727058325744525127686358697175227126042729704763198212221500110961927927031953451726345983879650304506115735253749823992717894744913635383053788207368902228723257035589214660773099731574328578894614609958412257841707173544840654053687963529161718339377820673974804275660397594495763320761934541624154607081082091431381630887662852444276208094195753892541482888964133078632756060019952316521890141964819830541862502886279942861929515434864567266354539499955976735355894393495991004445955069390234829281284926336527704287398385545271066278910515123558177655155124804872688188708038652699563430158718539676417362165324740950301161676147226987091336686975730078772316774484804082212792921345388911884307584665906933970070288913666161767306556816492529686126542330576930427952309859851945687695616787391724886208606078219586577521157997471925755521830252778574776276558662045076936010197431001405073169538271205697390441457933908374685337544753066892359751986805458682161120599250577029450471790531116688637592044725816809350715401468061886209608998308808761053155925047485763330982810135796784437153235684378855933935608225979566539014908874229318867856908106633416008188397781368955225608754496472366002973989622781331076327936906421333836156329940767987829949219414282739937552368742050095369670510834581278968845142676270307586970560344050293627832921967047772968940770231187440894414891611957992234348384361908134992564366682665696510978419367665490400052255968546785818638881481409824051219338973454619317589006191281840488521392932267525779747925510077945960279398495734167739330399574628957203655424637187995438121309889157318399563297897718347938915006476879059728332276590034174776666804805807585137415933903539371546508657211772037063013142093943376911484717585548985036753668986990778732349370860695937442389869679255309585195314500199898018163496806602205369815418049524140539038443752983715573321216713716303309876573223472073494658660387196143966238355254434272031875166654429112534708035265585042313178039140504966786200157779032253018379775395031624177802409362800776274088937204606438009792960229334141357316853027529326270934813060617513040349194939506111829667596679721724554842338458197057324866302813949134291966549465895240393949176765935059682165276533388253260395177273452448414734481084363051946017495590145528378728694589718770632641502417259843086559611204202453814610339462803726715365311373975645333786896813006476033470456391277472796397664318741782445580539265623629643719879907041630801149589490342214249683643075413638713825740975202255710524519005628410890292248754754939152754157107953000785347651731062707781298031248059008088083511571893341447743035315052308357772390705357815401965655229378522974863831081531326498095411458206016343526704502197334552693425313951442693600699979416793419044571047950054591933973470783926474430571876070606494546076496652235432486913277445868254001418092467524424087719936981330245844189018050669626927477561635971967675947936667840573264315222817706208841363096504161459299455789615473844664822043191643886065072888244114235145369904453860898233956764637008735231406874585372559803108174040402975992668970470323458706663340829004120177247777909390407650943557103557176164798280730176947885600023350422406684015217003439639897364954618944020288720946937413542886098604075227026482788702174057857719036625711012261058982176805769679934893705049041439972935657555686872759565537429136163222780629831139827737682328273538007173604361766686339194080863757502388242360541635097206494291599132259373964992477759699130503679859467387685858969458881363954404384016848950761974795313353392698993567078740170008504367063192312102584020548165945222524105239691877251826775214235888083623030633684703867930130650125295968428623742677462191715457239299389032287069336032372302828098382506936703358757555827103340491155787211743066715263418577384309801993728612813203556766993754656540038816495840381520797028440484282254884632112821925210033546824602794396854826423202843726689970480869195071650949154727258460224485143154709172855637969394753939537534842454461823870448127360033316087549390339491932603424096663377705656553981384251344651715053403923964417851970419752086799349480032265992581424000705801737101791445964258963875786190924396690033057790178748531407381054411659092462411237526877645210411022521678216396060020924621034172725054413396654304600511543838181495559908429007654906632941883397253075597857634654462449755501594356663254192887988476758127961551318345779438588059118960711018114915926214069348039421926460721297822408069255012690250178221901583499188663372994201653644081755046119923887957198992066054340294114974546071159657605660183300202102344309467802093991861862965216891368515339833603657760186751215707978850910662690444513903724718434232835066662847876807387275374320546636913075891542321272611108399646743762333862252602882930547232324311990485665318593042026396489306780598510984447945017700408320977028919172057048382181924135570226760960898139417290817645998917756855185172967724992933123052909118247462398492666928951967247431522756106437050491531797002473836449419068540277472068963138393177448233961148030322348372301545504016732072510497336139578845609651207819365400056853303027235062359420018098760449076899084941741369357339039371012080828320780934162749276755522409809098153174862234168142466848375913203535996417859932173938627851656219636450621416451865792169471928789091851626456347026830292184338577370915000158169528450080894744186642838772985819834529563611933373632440708524703027899883434677586606441445529530405836184308602571764765354456106254643446906140012957381572512463660138820345199166078432074790037248546139205726353557158090656959024185745345956546890947422882539337183883406929169297400044137877815260349485959875657881972792337911693367611917919131915027920557706737769810315715359926487713855353321793871564010753738106086321230546595044476485010200470235649943642098272637082343166210803794993910337605136239806876905139720151979070575500255076889855737572108112919425325518445248006933632368025157148533351689787936121880720836116653840743617415571493745387797691042574418704937861768435997110148267844022966899508273305125680545431462825242960113760480968529000760808009707472576440561766071700939806743526995640583592236944120793230124851216017592161718568695361629331621064836815339177400421921220156618102527651553489597482005681543009594232948075392858721451225712296026349598054076571694498983982619415761813379326410749885515537518666751789095081260226732887008501369033072022423311241991556050372244766164397155244356247926874588767338935163683327933554702277547935287703755133035368418595728953591127644725043878325718984441974471692217612825126396314128770579712175562666092567978624210753782825275802681456221191328149519567354816438303073809218496633499815268520022429717046018825658842467015385712669468265707555696525948903227914864246346468870618605734062682911322413808861525616756567945364657325139882917475692209277183304968538734947428728388582797185751925085125363729075173796643775804671009928949220293268670456975658752584332903400349503949011586021175082326448210272758388252815782194585442203117090992668634959462750022443452546012055002758055127454792702255890205631701275211122693794920290417833369691631162589900706279105985583858392017695508708913053733434385675958920310284847781339811291863191093386084475914087239356382800972352347223372355619360570354411451544244307940032823148529609638296958288902010391872278763245256372127500248817419151015466871343223054572424151488837160849087690844793830186151432135847711240614541446439183938044066695316622116741046472939622004638961665608819717101930135624767270181741989733125492003140924411241153224900070754907516184957543551611208022204023968376636880451822691297708293688894074998217185540931850449663735709971989960908519813174658217406440733137654410084264390199313344416298280201059159586221741529060546858446825609039282323617534880583845852642034407748295813317970457691956263225675641685811512670217066518907796204233575773817564814095574905621916350619556603859001230105241016047652273704404479564336649968708539745125105915160022240368627482259079202336430778070946622175011973214230565495684814465576107906033710595350568611341645767396110859401880245617579689883266256409894693280104365291970684730005887925438391662019569596571533373614115187189312356643389006800187024689032302797342271128282171799878713212117329036060371547786892810406560993783700207922558468011335587906261901093629494719347614610784908347727972664981060886160896302867201510015108566161825129634975425024272081557002265941815391290337945136518047397974376034831138219062938133831604578871761305972624279786410979461568839594456833208172319195856872204542603316087926558321489377543723491132201816700479397540948217989075370768230671731249702531673564543406062253586483721876364885815656468440728188332621030006260484399864535626813077449518708844252479808421884652431126530875716970356579193081754594545979226680522690302736699184607929615623142663354132052863597405323796639870431453066308061197943832308479553993128427148101202879692518240366933913835269757022542403389041102563931777385856395150760422381552306943437155154770876052232484595793376372779715779096638669304485249549423986081793893310670696881891161170144901546778001550049111602186286345163199534989815372560517348564641269606632792272652115204168983118001639477232503487517975266466538605885310375386323449185231709798124778365598533541593980958124433491037239259424061787818955206789639301137224039378855362946151869759563140264720906997750013611877360612394880182302599632772460731913224265247765843851870907483675299829361720529022209380906861000458689821676603902075564791012594713699959332168445898305343858211764958004751287406251595999467293204674470870715167851421656776355939143657993736347249925156645471605043233097281630642396809038021750687833536173404097614118680059037340312341605883455235067338752800787033133391707487966849528493075647320868840934380554883195960251773502083727624240339456212211925683490737454112277877641954542607470029658579411795883383494012636284071606370192505278671353911009904407560251382987723241502706898676119014622076654875776162540892477299357715761700750960446391506332058899436675190871956939800022687432780180818392178709073123353331373011315965680280896735755650091675680722007667153708728485188186965653450591919415129897772500704531083484204256009802043625565542287774299566636078316295125113411325583706020566573294986977164698547137703200443022008505653377365378947288543862725055911788727943036314460020086504429170778872386381956215475209306444914466262735267509651875004139279370893320240127688827675054296294093093354920744403327434214120799757340314496705538078219995180518082515428583740839433883842984823268317117814453641785347046845620463915826027190815790559731433923858312882529042132987246860789417898096245935117545754705002593969747758470845487352156660639391962457416095124403612942059946284579486042861317902103275464677157584106545775551518446983441064825708631574744541847215534147110002165755331087323942894411304556036096', -); -test( - macro, - '-94906266', - '5678', - '12032817648505424732206470115984402822087851800458754279636201919240648069545320866560153680915753098175361305527571944284392752569770663535206811189003646879509578656245380134150984700793677615365069140988087774074093292666569225253766058544069550347050527174441848464033769865947958339935711577356378541412264423970226396093645375936214905159261610350242858917417274825574404844112579056015150088968297195170716956710849024033030314901530321313136125969347224049980779583582657176881341711446052030096202772974538698445525008118596374161589518848084436336526803665941965555491104046737440894040963947109593967956480178145670129677453883803551841426177253469183865084475725595826142523985262137749463269279257798034486481726137836527313367452357290671314328438612857618515953366030368261430360540763695870271485039165724885752553866509861096959097856524796407276935782076995718449804132659747765788304047343356811406221119007276554404855974610764195529043031625022180466201811329438874115924370207854394962989072466937684755950839558855381231468598531110161791599549283779948049180898253978038930131391965203934491358832834904237088198978460478436435260346993291323788040533668759476466237387161215852475434944660862309069972151382884427559495414208822804115701913705271785723745174681820409251541457004542480297333724163305849231905385022165131472866706690289906743159860846280981424473469229829927326830076613963484251270728729574503814307791762786013555601416538606549575141032711025523511415888723638864251522238403514209615257991112949184147400897053839753457149809381976922528684839893079020417567683858076689900826568207181631852815210327645775199600779525983840187855012090137702437886138818889991865427565806357553975294746020041388619646758784835829444515981357443648673117967946792507459637166782407266051469231502300232276219189698940875042523547644156383005262958119279161427467899540186226164668917413440447866544343462167108862890696625841719457545138663417647004060269444482339780740345497612893664834632640370620127200676855405941531569747479245411572674091251818894475403815473239183886002466157193530057684670655605573446847521994094849382549641374712884009164471656571372198449910168561787316766669347248358805643837182081303781837240736436136105361562692457596834668246060064085754181237451898863990804515605190388337710712867999191679779786712129894970664010407413944105206949638872966539657011251994137558113271215952893544638320085154429394938826746648785358611940674926917169614084840845838330085461611673093497785528104711054917591387941532664903919365872012413967652428893771254783514729383993987904033719641464047625904368835612214247748109590039950324488045520862407963337473558506985216736383673379753911040520601562793518299011996503309262568208883619152964120357680502143243237914460301562979082299253093538389428819917042632652200784610277098397358002737455993489830854317722387980601693621640290144850488960430945867613445370736462277356198969776749170074469142959139228103077704779948067569593268552335250360809034517777505978089487420438155196173015195413707500749188879413696451279508390758428449841376760780035529721795084992757493136169128293321086137318909063123039058397266188325938039949845723539644433753473294540228295834513955127390193735537175144046212555694020714759166871608060391688382739009845903946202459806666413942788393631458788321174919289511304789355666166018710631603596670860213317167734166889129692249373293565808930204157031991011885528221419033566927244666672894213270515941662085431325595906230594776340409294990273749504264542573465334640502232608314606771517369952134843645398223542989247175132652279714716937433111501880963356885109815217790196450752957228567594353774344623557404477791808889243706743536894781675724627289947304719225770725660654839527433954061516841146022327990899330817724998757824990111295998009049097615922407581255190739491092231346117657541300062685972295196237757295575969914209258890395384934110805224837375196790993957760232726873726409663790983348867817606845992238136671232375378383442128153562558993510087405303974930371982970935436148399729480315961683220510601978266384119209049691241779665749455934311999233053059017638411476295376290561801091208176239186699145687486729178616233651626665713543619439901912710580944645778155158797462852234495229231406539206472287577297378192253982740258520802032184319738335496087808027150192808403729360390814153726899607792522414861087778808864723924610633595805110618744865362177310122714818412795648247881041310195803062313215902474261741174952685814591966714305480767184438698736320248721848847642234552533028696642298731293921638337742568224929679203340715151738759154672955264904729487192815222409704216298143439170015879950939045057249309073969228984931579994969781518397426907617306970452320824844550818387028299796381307177696815835155244322539561008715495766453539759717077193466845576102664991398263517768253493037683951482880594999592487164043876965317780003505760527667863680438637377024026769527929551980088550989890140816338761108689882533404008958689956441208348099517790655163832888672441196339023333523558262873440940381150551323449813051211874782355328615332116487157592812281631495362815861059878771091573384226171301604486063550985885547526084873950124641753676687247950243102682512625690242813329639053488889144642576604385864315139668920318181435129690631047099936094981891064896430786909547908075022480142180945007023530760518540471631799916726591085967028615767603414815858484391191419226449103172750734862583321173181611826808717155895467441107144481818474820145538915123191086233889850661674240080442220814781759930155904531817862470486365345886110364369758405347228549431644962312521692584793216958186300617894642831369657323204177058526995631057099851113254417633669886363824556236862260831309128178167803213227296932516696703169947834651505156750711821678584827987720266958112228898408860533624224495113943886752312598411859670081240718595741432294942764857421091909115884148224555916194806655809926642996956901825501253612530105826618755517164012710830281242388235631527379824843157390117320858596018324726028114634513731910537333745080425512204214923714850269287802358237211241477533384595700504349352943037853153152826576013563379638817785556868194091209215931133480115980056464675106593427706835334947158188177836411830984886508981465689899139213351717298512840062197481925426346012965958263308687858310254839246643736356288094423514700890181531946170936255870492888090106543963957053638462537602324269379083493214926494662001476819723144975153483394390016211234911521305578087159665053195506910683427552629512701423004114557334590767201287380253575889880716924180835742565545587297372230588277744954790269429956487792324583964844408254629753937326834163368789921452639360922619001644423905992054827955523551707437217080870067136099865977482032198335037959434533270675522876697240093272437334734369226923188059535469846991641709332683658104575190444624146274210567461025953960170291512193215781838523322046313242892959796365884825784776849648185822682474064256026698235271594627736075157465861135739641700807125348820678293047370189781363932882694927128285410177891393529704049003357809736578523395638279194743744900566551317265479571829718951144370147604490513174682721505873577926782362538993812368812010097486662549501136198241341798084746545706437440426878375892211248824662555732459007737499801554781654267879320262704068105933519284285796739713621966126525083860893611057628869197088116263187425689411609090653720984344418988835030010895382016374020344833711823116640310985731777663607552620413465337138339866989132413420055538428253299998808303388845963185188581487436300195905101117842154869015140378602684126069213877902049366627282585389279538334206573795995374258165195704570108297045710018639586996443344402990380550529595121860257242747783754028054652596757584727739810928998066179549536463070344995795834380103032675101592624345721957432323326573571256893898028138781425679040966486628547984753574864434930008117523845237304478890899718331660641419486842158394473459007167484277217322766481893195761391938895623708651566392702159311537448090535583956495076752757058074862172390454533499093851240951296540985779357629233421157703016528130291156343737642593244088633852787614747817627060006991669568592280723672383298225466281340956636710431940328427911743530915134552931031391690006021236672575108176444082447291342833803642309708607039528118937917030486917866538554824932145847913873347906410715580065154707297637925304057208331186121542705437629918199561558440077780020149125928636524680160377906904253706618745984744483286494859496634897033537125257750234158366566522768726012073504864415325607039305152748943100533772051166644314150037384337861942612593701611683871218292642963890517076695142661403572711320388033047007398654918216722136161411678662937623850123091604556006551841441589614125921909593939770390437476075298171895573919863135651088828848336011726492799841320111649935389358931258373693459145057553136475922751342605359538155293383583876955561910069358749936951011082089615693841896629336961254394974036986721026940350856347077152772939451280308399363104652576626172429793776211333913295809413213919318285255196490381055544205313396583888277769550637211217647203529389040683316967313521879297011278503165986866646581137787534538214235999303080897442666172258679022325039014548620740672684311806497429047056530576223713193356973396804439208879107248745042555605441287111013049709202762299259851107012441701468738419926890133556245430056477998293002461917643271629591853938120614647619772495115562085600504853146424640985096824494050598829781714618733157799877227971474455616632639023850925729720213591779252776369176312110497936405970870772189359848240927140061006848080799072830556306659756678997694657936924990345096410314626570672149731543628000558026533834459167842889970614149005288838811229513837405392153251553605330473659867312295620005340633564023904208178972115034037935254190823029327420408002622341072381223538257497215682930180996569122652703053739471871654162569414951520531206458862671624276235522538318964461432849995356820683233465138675410827490596964352422796420736525862662409202276892082905745273014755041772993819374747043291676296825571338645605019288235828607460219104472171905393978286058711994994075946946904501719626129891297785262794903831823520324741271326470009925340248044413698893160087471101115598827156017322849926448246890250940872800969912833939106037661646340854638183562189382226457787900923987531877913431946108694947652717492923066187775746930063437977519195800521298729848366280723108648799156318978065768015360592367479405252285966318000015191998608772683676758058031311468294723167697582272502760859874036909801930740974001192058591430098287098021570441654592505727247768282011756726844525801256651444301950079120380718219338329468008534442846077685713544194007524327955071955226200530986913459845314710510719058167265959825133876149104200332459364223361260375456263610906578083438476313348490161343553564484692187424842603773823747426008609267536178919597384345623591288999415207111940819590820240164261067200326676758012794725260339664703418163303398007586421287243859016657962176274532712513078145376826038329107151236318002243613099209970831731135481008172826345298961517973963163916705165676097591487481466079223465813873607872273761995059993093591322303896613664321628779241192911035846341115545622374501606127977756985292882117778296500478276339993749813331078686903702537331445966445686036256887898585809843950252338373839157713280364698259134024338989451358780140559424371687870519586950515334379886144076554360694721608275939343734737390935610438901882220547279311828445041103639111103188607674601360722196695674871077543938123944828376247570522481733445127428507577252676752726828669296273888040688955392452214259080886549295627930544496374040482414174429554699068859457610531632589984450033487991393950194379605142460240622750964605904319347162317103632880464489765441781176775360255307983114046972917021261575999747919513175356289269738252254493902081778863456041493700800804759871388208118144666431845192191907729537903174959385672176640184810677326710369561461912187493932368918706337698762794615949381684820435117964874003383886204354335841513328726838198927086809536254198720567097588143419818644573075112705490751622292191492544793418111741658483532767411666600528233897824313428372479855025933866719301492980684042893544902172403475761202059963960896638007212043160771550410552889811065116740233744236032304871579001993160935959555347073311004243774883544443676731406104831265297661674183379974269379741288515676564618943733469021389351199332674318818115012130962124777380484159115171369334822744164229342075923978372260068788894241149239047819830879098322853736363606047921128478685310683095184709943048770806054769494926160412480736093641419077309213991679052703634396648375610853612922041643781461899880570131047760466065993555093987696077930050904841973329976985820417577209060155514571722895551726144444596204596782453047002156424345570004197583274416101355362390738881463523630967387072211376360805282936674787380880650737793203297867993622101141663905879536696169691639238866186158654641243673999077254707876292273024963076334728546666159776798341058364962760500123648903436613222992540337677988477671022338118694216304682423334130149852860681684099263517683335157344038308938179479603858917811593200169277994326389000742115999246806304045702432487140508819529399245059884575934708946209516322574789907597746226957553035886293114377154459544505608389208459380956440963140789343305699658278203986551812398932069405456026560759534279324948812804513062587167345623977971097453549344764469259507711376402428457076157055436430677764738886674081844106383742912023140510418552281742188746389236111863491148474361612517064934024896521322519834851151242772104556306598929440002152036519490819251376805450957184749544824693635603569605225972053841581004501584100912328333976003102107491085953159226069012834587327259971112025925123819947881840747175767809667062611411996051112013271091350150777864798314871955256044949338844757948457477116889094191094382540558054779516264683712607043026838398910328428087833751980730006443119069122334166099941402646601365567136347123203738359088947443981087204456279328714404539183793412240994826870342095392017313400572110318532747843060607288706258394994682842520556381575601014199010490404397191138445152855809707016425452959778664359588040560748735412597512323836013768239677434435239189168997928071347187463000837985697466045497488955639372562589230908251673255473804486520327695043897071532175037437036938183448706068445520270184271860267785443607757449987645862550853844492488331774133732177529596230056374085739368318799336491781716721031643253122590074871792724944404133795117394685504903169776472613579323786988436816555044871147023821295375315968422237070919604915553260798754019817204005435917338028778866898767783201988249690480208167510788846166868446591501548151404396048081597044050075742974387127512894683131544017091983972922897201447567071326201918658162425054687848305577141613831948331736546313547366384763806330342036329442085133559102820443474867650075586800703988545083847887658720938137520387462853564941611748541059186958982227681935894334481608643024722381659381938989731023292291485815605912701175709672139292877678190348729760666157907954715630362098750256936461038759071141133514628511273752727853532279858408268908582987443368819679334383388270166337798654040644855690261540077459818835228437887729301076041005381936867843411337332815350029407543350462675437781165812720616995958519407473614668214152449569347793047763581660230557418465248972034336442550080954052153006780131714480535397523095413274750723701383225842109411649460720870423187520888470553057940395347526767669497718524603967849112705432812547718499111843247323011841160686418751692868907882025078560674843768816179401584803887200747810776387544791913903025938435744852431951915576190055048231754367790804864233775987695188801541755557892125771674773775596365864929152862381755401283073853655055425091448611697016439954534260814030388938640509188143381711317813476900790628429257746511202468312957230036100116864480097621669013542313504580498125607583068356957065062879843861421422680449125994612477774818757161945326684776971564527300842862017927612360118968033138171953084120164381524148059624459163118084096733232992442581634862069037490046169948238393108530288105627559374357574375901411757444196980563141505220137571144388964279304678461638650126063683382309278978344376529180243251205221507357892280444330744741037298325319700933898637890602101615296398869580920345296280236271953557041411865760773333961802153204654733800918538855539998075391359632003872695291240543210415227135533202642183404859216781849310678370931836038236340074191979283348256435037626347573331738056630737544630627819667754832890022502410501605907042038148659166291897056811128443400490554763520515617080334010077029504407741614050704547796928760915765587321003086708428633478958994497231881728742148146582878333513294577932133195398397292515911616512890368305984393578729868207205694140862127741104528308067361504231110165275192585475375358000676577709244330704876174208560189889742189118009170492691256513264181013828227165086680711420434651576133518693155463307951273683890278139573807332751907304778544307753690835516724244324828301915566152584064392368154012296367388561296655115159377964858217285140994654349136595083503371058992673764518566714682145847493882822893394347204092233214651141128348419317600574953305420152824611858556704207679618775670228729011916634895546083736101005758230326310636673429185051800939052184453293132762586281584909086427718838454160054742974280328396661361347295963302563629881389597757395692922460506227719569272480843843963982294218088153904303273847479651330200041676283719440322315419856051041525940239722748989045813626337663435654703148317669134876847555469792411025033420364193061667681444556983341506990373187827551963387220108573965968914968862001608003924039023517819236072227063268657970009813282109838740945014605897718935027854417422516891716032864362714644753952562246051636958846719430334197522545309124095753712501839140881772202359462149006967535743381987382494199903798783450128864108137711379338678990406261945617986484478017729513417966059143295468448727905734551655932034516014732958476725736677666360745474765405553207731525120976743153206626090160055202221435671053558239271799027644260676893678561236876461169942483963790905593236778663204622182700607533615177816293194243328323059827764195754067310463910960166786833097658112569805863287752396504825639025116157475645847961748673868648985763576921316360028625597643145982378614155913337308072899028630354506317000731973048320498440559655009741229059616821075679153626408071146949434874870710442443607598092254881233946034011674932649197951588391079113646195367873645750872572676353074784800670128148448926212428049339412055475920927927064266795956572600200498190491828386978461485683642086665791764122916337004769909968407222832293743026188332895081447303907350456907104380292438133354568556580913923940135089837451503139566900151184776483065461722434703576835856162451903500950263460660059609102492532142956330352718793762144273337958725209863219465403332730360337994136681320539676141959170028609571573318264331511603324410628374361114137620410932826988141316635961417071437490827691742173260234374302730791524687955576187003866752766949337018264318503626167264228405496153334243531140332510516296899883807675047755079172377866058979779109219361302539854229267521185113459426964212674944243036359083834041693510700598946606285775592307909800370642066904336886030146957671455743670251078744477019985475848795376334708946576839355982663342271782974876971670099428998708971102417217050194310201496909274080129838572650933663158961486164318754012103629249337765151672364719569977796470263610483643241743081238512099346318125509126340730907301902331865609410500322101548902016145028474991172896518663299753954359738145858524256241079822888388025974877315851174825234099588922307983039849059328140405070220292462966857742931975247086268060742036088901447914159791901545682768198127862624633726084182944519076169341611788879344467332624457235181005489161468437468286277927595231710889035229963620976542808014437720825245958218422545401854965717001947936025069441351490369482405131546123008735270958799806732505582384557603513044063735545265173441077422655347016647100822557881227410017918031724818941284851218632476074548990913121757687254853114905647152161232816453294063938585231011698346476850219902049515565302989770984364797494877746871059691242951446947928616748412677311316689309276924328166978373287156127637754250091827262880001580912029087294416597708081303921574616792751138598416609282955474549781919323050366795607116559122995449444513824012921931191554790229338378408917767888764757481247942357523387981462036482918774775255481502617812032424350337757705134963581392988233010269239543026399000590407670292541798141931143957825519431024943808265104606375893000801021372156629170649936482063505577146268662962099488092098200661611049654157290575516049458547343584333829118330105341165469101287828518455011376471874002702126745604311883893741228949110274354393717306210252780458508823091743222111041747254441747473986354767554852139796930960587571954051842952106734815850369832317500044882713313649500485928442503705962330735475241650188479077738536979346401179945139932535355966728284296269303465382689387382904506131090629101374506641285879526447951961592499074899803465202603048622508966269246410248303951769201230670090880245754249900954768059240928580835677018471478117764727507460788000454066509256352049419001433619066501137325877958902450951248012775946853069206507022910965027828695344876662390444745223071764327986092164128821369419529923449745342622529520337107152499452702345241141322434371161845076945400253720116974932841155231559246404477495415318558856170762805541331599037682445748096007207307457259420504514213233031560297159337458934773052943897370160719593071005636639052337398910516328917458761997763791052147675868492052732846056244343846856562859110918170514850638431897116103962577287557650861624128410941073015672545799355272188821573142146157647220592136501403389440498405045979220449287529240951068425759059315541517416653195735778257997109940532355650068087437125593263015404801959966170854247359416368888999714143993665160871834991848566207054598521044690133585142761653289736942697455812090483602711809497731994035628689666322904923368824343322943897077533662696509093532125560433883239720615037830617553062569400982442551469212711958432874003095252511501251544368163946986793533762477996739664587856894977815882349958159300266076187992625866248371863178211081986479246265805496439281433789465210502472287353963749371542009248496304898171325225431490404443696275192260731587223678231773234700501786989060062073372663103468326762818735022839079304658268264383403675611385203208802610883443153396372155598085767531581987651375303196560138048749012301078065330371665264754684135929975327450958445710569685713002470385735812499009271125281912305498904570924803427650562790575789311044993863517834700777416970146268592915939173835339588498234255520467622101245918125290891960721252962341466913538814589814214723753781664749478425706364352461070224233708179564135246880492730639677674623872309076224196922090720446752424962016499908060928640446088590198190025780328393379622363600793252241003767266825105789787022775751765687273282872681784817235974474959304500106923652827770175776376057866784637584218919587715646859185759124581929407837290204615476399831255232642772149604749965883742550558896424909600890318701200878005426405783690223803023797534308676408970377177829432708888482899871770661919987560426133634342816194791652942901002649991930864509397547495136799464971411961885951448364705084776854218557154068032421447791593957493800552595011736497560627402048363722641737191562791467192752850831819871126942696603819688457632571061264341307436496659871052442884327358088521230434779757325515620881755317489614893979565115465466459134952019342787508889329177160466567164607203135727175727007576133217386625201585733132524102256267135974095667268967387808616588507490403645684015340306735062054190431238197422650374750608082120129477961774411707229963815811485877200700501734026677170462507781454324736384494629139100648590234634063450890873793218123159652262636940460561659812567660405111805037271771919133677053378340571763804818663579984080144826950600742568620996921074204543790255158895558727569627833033922369940173618424508834111810651656048535574444567986963711635689671493979686086392051590735412326987468072321026945906095052728783747681972245983868013037928884763904299129826301670561248217272709934758302637217436483609049259979017913572017677999917451517664593806401100830094206113930664869181230286977905241453163705128560161844356057897016629444587321825339889932073812247330853655199279654850681643123911145550445824784071197446536929226480929787125781620877835455757799725872429412183788180777229189273296533362017032457858813870135280647619436731981832381160911893129851064121020987511004669726225726728447523886592540185823062928562680797115677436491664945960425463840352618701257065715147975721913145513121975941816861627415802916250662475683313221460810083733560259082176304656979800876036280685013224264755601477814078188584904150365677219720532288211268983178369847544314641858955739505549156547927819249161988086454580912459896288180831839198694747159727783540431533139780840118503526092188395999937083438859471424422484895173339353662013418404633914278270531257635152842306416202901968927515006838776193126399890861893238570955140721902636602451481280533397113331997181668368168114113211417441091536660280740752073688197951869383500740801485250371189839664555255637862300294894725338807388545090253060968823072953675487974449697590292547112002691372243223615249165249747041660867764509155511159477802075808850762651193636610867311554992969899613510446151689019965900866044828778159525923906714414752885574464308524982926278589922516043567064422228451889411464404645562403027336145425521604775172340420217961207569279554941274837915390099345785110541869546066004279176509714969623554456015482986407451412652305793262123648552417609567710229212341687156454311883528279150390985919008321641915631234630542109381453293097771127251164835846456017032621220535159510911806712579812990017904201396748639648986580416830392353504059649048195263808560060144490097812861709892171321718078141652344634889987253449435365479232110959791057112787715767591956424199236727218939549730947807636035618617124214592974632640888278642920646150269913678711900700105591753932021927544248495416598915245127805617973028286807341594473386206410511414428389049099794186454102765796914905933255458663787331998410234134210186357410895835541247415216366309533445597853759036910747535179357644751896549954802762133472758890605527381638477541022802894735646799360073180253868675653146890507692412609328780793399715860489456638327779713788516054313521050756108383748787190630773384260645245277015038626404267544599526329137987727604904731562738505220497843816310101861170621100872755427778464809073169584368881349788891479628643600529445515580370114613383736664314978973619136220173478287784163951945648158666739841536848953175419910538486514713806203315648665785618237610350582300314779025897090284284080969250933457877228872443367222249154142248644276474288044127432827952859178595732895202190015471726020796066245204963376906354394976290239211712022794927835141158864526574570946923047666699485949903120984263356978168759479817623935013795014196775910220111958690782426346191285770042525098984695899814199136259926824361465285823048578317155487790775485313929046655222874042698387928987865423117119839944817973165334672655644240394784576751152259628370824434663024024418575011518490382064521827913667162089667112747753535124207783675418967511974700275667309012046788487060329223754816307592779170924531501164340119876000139327544408024106973184674625473383812276564724893335841539005571654820183265759775079589751747626589104877587523415006319142401438844584683685256184472651725051979384269512266601971450685653366718533020065953355981712508860345534161752796241189385496331101145400268056092980486470369444513019881534614061799341395392897417347975110433595794498856720510672308772750213294104276272132667497463492787282710357371813082428478468377819129538727211815622333666816660354583565438907819881292081303387043386670876926764469958036489231885191131050114302131977936474847279924851923137714263077854243985023606988127523596289821331500111059950584764623037107983656960989438380956968393260575271072778863957365450795572899629582643385628639710611546711708409238271955614736601631291370395060012833231421354443797341554577170376506036564132217557077652411894117329603768900109332749511859736210742285027560130448468034446432758727729638990040491574996250063104797738677059556962784396811723371443252662772605997510646452758982125426031044458649357552995121303204693338942472794723310009789920455359278131277695870668310315876389946031424494549763773146136063430889417701887448847015328003015451499112860909942403248329916941358489871131665319203260702546158995642204910162911659670018116940727018797217171686323023556118323193198342370803796953278053782977187454671829418430921721985095232819212480102940486000736338657164939674716847410850866338919788038362565117722358348690989096737227059283378387520150072310475969531030512284930329368248541131113766926569221020923296593566377299675247629189109056398144800021591742635347744703956072123890797151089046108298526010507197557242777201909634714422471270603537857950184437259093361956113283048564569574122170292703201825073022983566835511332308338851334507372273081202885655714787807833951944184851958437229989794757451452736941245634812065844048175235449024407397606058411010621436622691612507865446029785762584964939590202876090478392978007566584355372687291804000734909051848660440791202433127588453190203200783903284912792280548420676834695155901857566765932088926634171356382407121102180333281700812579308596278561884268236429082157465746397088329202574170766452511505505609003041124950089258440827042552762430618486885201276510552341532342351164734524285396714462005001978788690975960312082731929333386050252112006807345880064713266643891024391700346350471880262858040712474770262634884317585612572195523131314179386278947285577465324615711086122333531902738278585784646020600313701514942125391959071309667102965885213697839889156290939743771636780743647494786980566347580750783699119643179162204062000548787439490012304199473697303589997900840621652874808426421326071990248127528436949608115779005494179734937511431781806145857785045035166485825750634750296960306410410179563289780730826789234509202931820390586826950654104129396809093876099264731036820798174964438055115624044199738101662825807851197445426685021856220844261848759266200674656511060029362486031624820819678918152181355926111923461166345822665086176145950743789341584980812952752231860843257985965288802261190266665922655937859396637134691957840093532444525473306658768602008060074798781369928554199058085681741549030727173827517234927484381244144270371887360574934364399214113609316363985218988683805111173090608023338304021000410004993333783004263450282560060958459050745590194592895933947062092079507573081523402757767724788144449830636192589330164576778830549052766661774876685632674136307814153444590770266999239828355457576813955421195065159397418434372715876860476997930972151568408519046320497117726447903332629934498123201460718775034315147902361476205883702162559670339483592737874161365824447049081019047867077729938161516575462820068029800463721563526770860295002450363435919771658499908957051051713169210155056685711478948292601652283703664279729412723327993385676972068945177529247890734902739568992396004082005895239640239584914895675194441732990455908284962508388272481664809644013695108530643590237328537639688567194704667459259852194847009346130261141412179411299994375826249494565666674099752312940749960678432841327379608811354294970105991967067932527833097758928415762643944723789054971807292766811411062804902336531718448905647640615296706335520835436041593386648611858094071235308269292644418143791110200993361422914793119640919331990182443330345380585754214640238824260774995215366915341497235208474057031765422776345411042327893101949992571577825558691897895422945443680380208657578495349595586606235401227143323363094432958840171215550050203924175856785197077586124718868813101246599573589030798669834807255201536300814627715056943239448585159116823195136012406495891984611338805585159868346247052637564031114665756371321951326231045738075829116360629934323624216434728253094934162532761445177538547165024471725562255682921126585840210275028026032072889156454737530566706272562834758199753126146886585122828302440171763025247744940890748240827209734322451822354861070551316853275578081420600654807730862579379336164296300651251035620903073641444759072951433003329108395228654468968443998724991943750648399825412774577834064138787246298154005871653201690041161564805619094094950177728315165333892502449398614595846310753261175601850635807705775203998921942871973931019055845469784764447913903988508253744480825540367906677867871057567478493188656741810436755808948879038430592843598118575241573451984420451874438273802788249941071249303464372879792957737080283657705694830680260355087766018017548240826889393233567613079361639516134438559058561470248595710630583243521624876087878849326799727058325744525127686358697175227126042729704763198212221500110961927927031953451726345983879650304506115735253749823992717894744913635383053788207368902228723257035589214660773099731574328578894614609958412257841707173544840654053687963529161718339377820673974804275660397594495763320761934541624154607081082091431381630887662852444276208094195753892541482888964133078632756060019952316521890141964819830541862502886279942861929515434864567266354539499955976735355894393495991004445955069390234829281284926336527704287398385545271066278910515123558177655155124804872688188708038652699563430158718539676417362165324740950301161676147226987091336686975730078772316774484804082212792921345388911884307584665906933970070288913666161767306556816492529686126542330576930427952309859851945687695616787391724886208606078219586577521157997471925755521830252778574776276558662045076936010197431001405073169538271205697390441457933908374685337544753066892359751986805458682161120599250577029450471790531116688637592044725816809350715401468061886209608998308808761053155925047485763330982810135796784437153235684378855933935608225979566539014908874229318867856908106633416008188397781368955225608754496472366002973989622781331076327936906421333836156329940767987829949219414282739937552368742050095369670510834581278968845142676270307586970560344050293627832921967047772968940770231187440894414891611957992234348384361908134992564366682665696510978419367665490400052255968546785818638881481409824051219338973454619317589006191281840488521392932267525779747925510077945960279398495734167739330399574628957203655424637187995438121309889157318399563297897718347938915006476879059728332276590034174776666804805807585137415933903539371546508657211772037063013142093943376911484717585548985036753668986990778732349370860695937442389869679255309585195314500199898018163496806602205369815418049524140539038443752983715573321216713716303309876573223472073494658660387196143966238355254434272031875166654429112534708035265585042313178039140504966786200157779032253018379775395031624177802409362800776274088937204606438009792960229334141357316853027529326270934813060617513040349194939506111829667596679721724554842338458197057324866302813949134291966549465895240393949176765935059682165276533388253260395177273452448414734481084363051946017495590145528378728694589718770632641502417259843086559611204202453814610339462803726715365311373975645333786896813006476033470456391277472796397664318741782445580539265623629643719879907041630801149589490342214249683643075413638713825740975202255710524519005628410890292248754754939152754157107953000785347651731062707781298031248059008088083511571893341447743035315052308357772390705357815401965655229378522974863831081531326498095411458206016343526704502197334552693425313951442693600699979416793419044571047950054591933973470783926474430571876070606494546076496652235432486913277445868254001418092467524424087719936981330245844189018050669626927477561635971967675947936667840573264315222817706208841363096504161459299455789615473844664822043191643886065072888244114235145369904453860898233956764637008735231406874585372559803108174040402975992668970470323458706663340829004120177247777909390407650943557103557176164798280730176947885600023350422406684015217003439639897364954618944020288720946937413542886098604075227026482788702174057857719036625711012261058982176805769679934893705049041439972935657555686872759565537429136163222780629831139827737682328273538007173604361766686339194080863757502388242360541635097206494291599132259373964992477759699130503679859467387685858969458881363954404384016848950761974795313353392698993567078740170008504367063192312102584020548165945222524105239691877251826775214235888083623030633684703867930130650125295968428623742677462191715457239299389032287069336032372302828098382506936703358757555827103340491155787211743066715263418577384309801993728612813203556766993754656540038816495840381520797028440484282254884632112821925210033546824602794396854826423202843726689970480869195071650949154727258460224485143154709172855637969394753939537534842454461823870448127360033316087549390339491932603424096663377705656553981384251344651715053403923964417851970419752086799349480032265992581424000705801737101791445964258963875786190924396690033057790178748531407381054411659092462411237526877645210411022521678216396060020924621034172725054413396654304600511543838181495559908429007654906632941883397253075597857634654462449755501594356663254192887988476758127961551318345779438588059118960711018114915926214069348039421926460721297822408069255012690250178221901583499188663372994201653644081755046119923887957198992066054340294114974546071159657605660183300202102344309467802093991861862965216891368515339833603657760186751215707978850910662690444513903724718434232835066662847876807387275374320546636913075891542321272611108399646743762333862252602882930547232324311990485665318593042026396489306780598510984447945017700408320977028919172057048382181924135570226760960898139417290817645998917756855185172967724992933123052909118247462398492666928951967247431522756106437050491531797002473836449419068540277472068963138393177448233961148030322348372301545504016732072510497336139578845609651207819365400056853303027235062359420018098760449076899084941741369357339039371012080828320780934162749276755522409809098153174862234168142466848375913203535996417859932173938627851656219636450621416451865792169471928789091851626456347026830292184338577370915000158169528450080894744186642838772985819834529563611933373632440708524703027899883434677586606441445529530405836184308602571764765354456106254643446906140012957381572512463660138820345199166078432074790037248546139205726353557158090656959024185745345956546890947422882539337183883406929169297400044137877815260349485959875657881972792337911693367611917919131915027920557706737769810315715359926487713855353321793871564010753738106086321230546595044476485010200470235649943642098272637082343166210803794993910337605136239806876905139720151979070575500255076889855737572108112919425325518445248006933632368025157148533351689787936121880720836116653840743617415571493745387797691042574418704937861768435997110148267844022966899508273305125680545431462825242960113760480968529000760808009707472576440561766071700939806743526995640583592236944120793230124851216017592161718568695361629331621064836815339177400421921220156618102527651553489597482005681543009594232948075392858721451225712296026349598054076571694498983982619415761813379326410749885515537518666751789095081260226732887008501369033072022423311241991556050372244766164397155244356247926874588767338935163683327933554702277547935287703755133035368418595728953591127644725043878325718984441974471692217612825126396314128770579712175562666092567978624210753782825275802681456221191328149519567354816438303073809218496633499815268520022429717046018825658842467015385712669468265707555696525948903227914864246346468870618605734062682911322413808861525616756567945364657325139882917475692209277183304968538734947428728388582797185751925085125363729075173796643775804671009928949220293268670456975658752584332903400349503949011586021175082326448210272758388252815782194585442203117090992668634959462750022443452546012055002758055127454792702255890205631701275211122693794920290417833369691631162589900706279105985583858392017695508708913053733434385675958920310284847781339811291863191093386084475914087239356382800972352347223372355619360570354411451544244307940032823148529609638296958288902010391872278763245256372127500248817419151015466871343223054572424151488837160849087690844793830186151432135847711240614541446439183938044066695316622116741046472939622004638961665608819717101930135624767270181741989733125492003140924411241153224900070754907516184957543551611208022204023968376636880451822691297708293688894074998217185540931850449663735709971989960908519813174658217406440733137654410084264390199313344416298280201059159586221741529060546858446825609039282323617534880583845852642034407748295813317970457691956263225675641685811512670217066518907796204233575773817564814095574905621916350619556603859001230105241016047652273704404479564336649968708539745125105915160022240368627482259079202336430778070946622175011973214230565495684814465576107906033710595350568611341645767396110859401880245617579689883266256409894693280104365291970684730005887925438391662019569596571533373614115187189312356643389006800187024689032302797342271128282171799878713212117329036060371547786892810406560993783700207922558468011335587906261901093629494719347614610784908347727972664981060886160896302867201510015108566161825129634975425024272081557002265941815391290337945136518047397974376034831138219062938133831604578871761305972624279786410979461568839594456833208172319195856872204542603316087926558321489377543723491132201816700479397540948217989075370768230671731249702531673564543406062253586483721876364885815656468440728188332621030006260484399864535626813077449518708844252479808421884652431126530875716970356579193081754594545979226680522690302736699184607929615623142663354132052863597405323796639870431453066308061197943832308479553993128427148101202879692518240366933913835269757022542403389041102563931777385856395150760422381552306943437155154770876052232484595793376372779715779096638669304485249549423986081793893310670696881891161170144901546778001550049111602186286345163199534989815372560517348564641269606632792272652115204168983118001639477232503487517975266466538605885310375386323449185231709798124778365598533541593980958124433491037239259424061787818955206789639301137224039378855362946151869759563140264720906997750013611877360612394880182302599632772460731913224265247765843851870907483675299829361720529022209380906861000458689821676603902075564791012594713699959332168445898305343858211764958004751287406251595999467293204674470870715167851421656776355939143657993736347249925156645471605043233097281630642396809038021750687833536173404097614118680059037340312341605883455235067338752800787033133391707487966849528493075647320868840934380554883195960251773502083727624240339456212211925683490737454112277877641954542607470029658579411795883383494012636284071606370192505278671353911009904407560251382987723241502706898676119014622076654875776162540892477299357715761700750960446391506332058899436675190871956939800022687432780180818392178709073123353331373011315965680280896735755650091675680722007667153708728485188186965653450591919415129897772500704531083484204256009802043625565542287774299566636078316295125113411325583706020566573294986977164698547137703200443022008505653377365378947288543862725055911788727943036314460020086504429170778872386381956215475209306444914466262735267509651875004139279370893320240127688827675054296294093093354920744403327434214120799757340314496705538078219995180518082515428583740839433883842984823268317117814453641785347046845620463915826027190815790559731433923858312882529042132987246860789417898096245935117545754705002593969747758470845487352156660639391962457416095124403612942059946284579486042861317902103275464677157584106545775551518446983441064825708631574744541847215534147110002165755331087323942894411304556036096', -); -test(macro, '1073741824', '0', '1'); -test(macro, '-1073741824', '0', '1'); -test(macro, '1073741824', '1', '1073741824'); -test(macro, '-1073741824', '1', '-1073741824'); -test(macro, '1073741824', '3', '1237940039285380274899124224'); -test(macro, '-1073741824', '3', '-1237940039285380274899124224'); -test( - macro, - '1073741824', - '7', - '1645504557321206042154969182557350504982735865633579863348609024', -); -test( - macro, - '-1073741824', - '7', - '-1645504557321206042154969182557350504982735865633579863348609024', -); -test( - macro, - '1073741824', - '9', - '1897137590064188545819787018382342682267975428761855001222473056385648716020711424', -); -test( - macro, - '-1073741824', - '9', - '-1897137590064188545819787018382342682267975428761855001222473056385648716020711424', -); -test( - macro, - '1073741824', - '11', - '2187250724783011924372502227117621365353169430893212436425770606409952999199375923223513177023053824', -); -test( - macro, - '-1073741824', - '11', - '-2187250724783011924372502227117621365353169430893212436425770606409952999199375923223513177023053824', -); -test( - macro, - '1073741824', - '17', - '3351951982485649274893506249551461531869841455148098344430890360930441007518386744200468574541725856922507964546621512713438470702986642486608412251521024', -); -test( - macro, - '-1073741824', - '17', - '-3351951982485649274893506249551461531869841455148098344430890360930441007518386744200468574541725856922507964546621512713438470702986642486608412251521024', -); -test( - macro, - '1073741824', - '22', - '4784065733063810973581885157618788676291241975216665977767007373648750357731006099232824032039924032894289638403441329240212719241920971274455782595989040464660523567661989180298099889009174801022976', -); -test( - macro, - '-1073741824', - '22', - '4784065733063810973581885157618788676291241975216665977767007373648750357731006099232824032039924032894289638403441329240212719241920971274455782595989040464660523567661989180298099889009174801022976', -); -test( - macro, - '1073741824', - '24', - '5515652263101987298728728207430913795608113109085112352897269396216198887424215820128660001943808587833784893551335930816647064191168732319583111500951066614122648616177179922993422016587311577585463592732098692120576', -); -test( - macro, - '-1073741824', - '24', - '5515652263101987298728728207430913795608113109085112352897269396216198887424215820128660001943808587833784893551335930816647064191168732319583111500951066614122648616177179922993422016587311577585463592732098692120576', -); -test( - macro, - '1073741824', - '27', - '6828046779268970776657768233698567984276232522051489956245767999246374131525255241237946573692471593720760228447675638216590132893818229842292076597586769967201441361422350907866192164773697561322460176523147880429251325990375896362151810433024', -); -test( - macro, - '-1073741824', - '27', - '-6828046779268970776657768233698567984276232522051489956245767999246374131525255241237946573692471593720760228447675638216590132893818229842292076597586769967201441361422350907866192164773697561322460176523147880429251325990375896362151810433024', -); -test( - macro, - '1073741824', - '29', - '7872201966280717348342236651726314522606839627565764220475565031568317153405023507392663596386569558004653379220621715171372109048108541030444785631640845193093816697582678260933332408613360539868835105124282664122403089594119217080450011771426148362301864935424', -); -test( - macro, - '-1073741824', - '29', - '-7872201966280717348342236651726314522606839627565764220475565031568317153405023507392663596386569558004653379220621715171372109048108541030444785631640845193093816697582678260933332408613360539868835105124282664122403089594119217080450011771426148362301864935424', -); -test( - macro, - '1073741824', - '1234', - '135032864495417264161796347776955705785892222817973553418838034178314956028897546684160639856425763595503385824329054755201421463563212980917112733900937587464576847323832924136423515380546856668025289567166571296527646275461473028717333267141003518332467805495676717695347879685792063703697070949206732122179518994434776335316458684468092377731792188239016034485284630253586964894185124335453057822293914949906863158326432012623661553678396250401107915138994915256878813546994860886329001648396962604356523710403969300362981938297962596264354907403355610003410746213618666434661128903020244869263896170471066369182082892608827489848219714660341764073206537992528782425500311374732638679622889592596379830695201794132135693911769551065799954240113610377067376683502257705550961373070910821982440913313765403579054599921224319207778610832609088192808064360990585104697667138615140446175879997439210654552913976627035980457885269693547247688226220637387637045378917414583352542513965899437900025330512737621517111697083031434057763772292768696151657707923184295380055081923115043272032888153271224470285860092716037417011085867348183777640814999517894828296507433835585929567261420420462344313146389909474179332054613893650718599796623059768279453815288538594004374465681087299360879696203325418022962651748866461417173042714747088991460375318785407702300361444578324217092319160985594722221278104937860539603355035209045656876866415381803837578632001346316535288568593998708433385135715755188408423372052774222216062791048328356892426522413633286855317150328892404110603628893696215163566867442031835287126762113760377467604420360968473120576018581379277564986140009067855235173575587538977545428601733720192069320627430054733306784720670681238722112369930138992200505842377717496879786984447202871740228658026814953856942888153479080568126661272713405724755303867126253550104922434031984783644501692789857112933381811554363124855689663968314433936452490388268436076601610796805828686914442925663191706651004835742754007540713785525346442305287873815143574033326807511787052642265739017004565917956613363367471933672846629587711796258007368503719485449080451730511414011638477972141851445718086957116808591931107452359052957804865633522313939899601083954314084664652521357737845635635594429769313821802217558277658299721865464301558666750790259183567098179113274454668640485452931068066002908997277843409635151859336573513012860151545891329235097673549964928547801966932932777277610659955980339629366284864226600662175274920200231799911374929694310790998989788523133581837411706270099109279459393672455713820011546843294753524645198035778900516714217425354013155387659200293566814809279617708397538819427548364362324788662653106656895970337977138117687158105548389244431881662586459290188692191645535827574319724588383784870507646115475296972326304672165083538472785124541284886058416994446142617361494723365850552096782926362377318561314608226102827450344958934465468245954006024257745239912802322669809977564421376969565655823452390561157232875258411436971600411470668202989843565841480016584687122684712266492502542278163229587079707811073162054156571019054961062952927977983554302015866971342580754327070415115073966145426561158662194502911612889959593112256884020821481134001501231980935188947653774740923939867063867862219999510114357601167654576478400771215648552504675553652631911512293697639701046365273307557081624386985153768458592210790101466864820465666077389235557282441554467556137942439039191407590628851042708228500292413849444833651262460968069570764996387290215723393788781245642804553333508408301261343724697551028018989537881749905976076338448452394908535816426586597030779896515482117647557447860634450527101713121746502484479941152499856376739864275419495610691316310634478200363068897623674033337430538837932663020502333882835672567028049270502480555370060999493787391837671108324652717939749490597481250676971715293682844252870745501145551758940066811058992261248151841276017611811411887274572413802287051107702233361626519940861991365151787177732149135343171325963570255705926609298821759763745740605618507883067662117450926227987106288796642374051280660094717537306446983341125766514345467801301022109170850857456333788167674306579695352752143676166869626035002861003680151141687395013408918901196436576953798322233993027260775444170722889022629783177992510442629535947158550432935980049655104057058621049474066059547684213926506563385023004213643849612559790681501591969143956634858312507054320677326538188275884275107886773666192492559052155330294262524555672315514034789884026392912345926416901360808651772382910047100655600280544831642567723450232097407181605364971159781140990727057283670253338705128542777670983899963185946930240111611346828021014300849527667380963493241772072243503208897153563615767202700820461479775801950340023203862180599061144940297631835377016813742279451921894644661911014611402981461194280564179453079023523411900246837570509101994534431957542873784483700881074971158165429546479001645257417913405525852266215205603087742174929432327288507482831107662551472614657976383161884377268463657025482687656063877010334242025290874089994813121457120585350369438678750482445541628164325776911259393529988611879496239373025342855694600744246027039218591404431155722013586923335365589621061845464264820717668612915592171183491557882072775450347227785803371128754402118852662696497779734299037300726805751376345509065452470499771152338656741540759667286001807828234665941391188447950478415299791715469552242795959977483249749098144154729856726398843394843136479906418546581912783694281934186249899746840563706877029836122779488478015849960103559937024687849690515515689170897889503967015459345616938867807167382350934016893152627043030526997853293078436718226621464395154690848550466482856381991831742986166751803513242752173233490694252183014711530077920709629933842242926656727149369031087137074130182692159013533974804462296354847649804625060701458152488648760236684887914355314516265818917796761265782595118181981681044254889996850913972129942574101636910767699459646998565563334934817729091557460304359721174908710624610165520926996466684432035990548126234720976930050635146064837916857286368443462256725410214925359769688795382559406991790923193015325212536964901024443651640395352239064142041323998597222052931115684682639641634800512022146941484482355702865668732720081140181922030567504656879986036737923027379371333794512102069490267986276796423969331880136840719651462034396200061876091366707548763496112346222123232248230388694153688276766328691064711815330435460610088491421888195612048740193844188314932702563544622667512558911661710630118364274196170285674349766269310062034958003334299954120247304438475039760866057864514345508533138628508770723222951065702526427845206142448239674333189634298931074576766130399670656349372266937207854772004314241332793691477905804194502714575051020048862726839370657406000869875185698670555381280201599182665294886015354833856011808620179345081837914124086071187518476483594847918835733763073473814523558994575501588763392130790088638634309767210564561156248614464688514525041131096155150204607020153647966454650761265273455261627425314514074528596787641024836845254467857223858579509706178001258970617383401025827829579991212553362569959842654814709014550315424922111780290827915930414726165818710997646590887384752885393971444427639715814163996840822838498023284380865733129768795804080108863886307701355417615576573589725489445560015923098909783946350493434691086273697821816061793195812770178371503741153108240688178150147461201688003004263999364357199123049902951417798592453452403101562071608640099027564271983356263970688542541011654918968049984647651232137086895404259830149749220416879709959182020123061308112888239461649235275893165452695700741882252283027093045450482557353241644181353530529653471719973518815321814018114021209910092621976503477515448618895747516994954217971534012469546841874151849040054346531026855470552536470226180210581952214311535603720572039239234584559973566186577426541184455268877699457062169502204867831831763139996332553492281719620044008348442819347402916347449063826287493279275546962303367251145148862797186077453729802990592616042296098334476139933758210139481670253798728685880004650690300243587853634793764661363939548941992865429829630011064793643332258817519440699413641147721299779933762272040597516388553460177074372616592967741331217479003988681016928742585365278732728251483499212078891220690889658188156539798384331139356971957782445900967760132357158387747329622665956719786329684268357644498465257273930645057475745581973619803774790375513161774140411043479424601685237941073465868677839867198646929631273490654610573573656534496084196010506741518390113797703827155068331674200699131411229929426209680688487714374805974168983332553493786309966923567293209378744360953393793837125430206186894839350307705730235833717173154106746899348996486996231198585887923276258550483914940308115576604381833814866652308982829995287823135115578881841683647985874625837749874589942687788384192613487693851248999443749739642785826605231657455343877879315308426560948548969337045420424230665445855165336217895834289470720467926611740468031169083110333367765062731740323306977689561405194787701475443626301894061597784690178137908223901264029854714026072728307465863936978689722771921158057199058515421972406268544249165602289029057506413446029967238761073334521038239699127377613786798068608688136455403186419278380623768639967693818903002914091657689851030323485482272515883706497395534650119809423124565836391369793842875038747816600835980202179604622141185688760485442517152962269215524720968096159687665960838433942792005418796157545207812339197623327607879244889471757058218065058047984089888544282248414904169827449234143857530585526799957307705003072573479826497347064437602871900701432264712373284911700095912533127999896443887782038410277845379907218733591984612184226296351103012869133391467968434446494841517603701783596211408280361807750260109809286092555909870372810146591135183334539196312751504033478470726845817388732348939299912436932024285485403024073626586251026026899899295415467127267737038677726809661009108302376683834416191919481724680647658317867588060396025374752516402209355880386153514329598353790340684707527726798504415578402359843949160793333347705630484913082537803617023770261845303091364666015596737350934362512646919111958540171867785831140669826682679983246022184079073759821259756221015486738276522189431610413723028908457172736855850746058294313588226728849768689794812414866669348870741591827776664772445325863669071829320107144423553422120538225532216445443836199238118227392732940295380857114186288402531225261406147809210925336362075376428503158948931501742771923187008514442594711388876951547491075456021295349274877008031010408946253351724911972191625857419453217284075817281481549626955942730030530589242183647212102223686706445886268268877799837073315208919568520733667353137904980761596821645748802852145377472403345961092081642831719685504154626740435161580568576', -); -test( - macro, - '-1073741824', - '1234', - '135032864495417264161796347776955705785892222817973553418838034178314956028897546684160639856425763595503385824329054755201421463563212980917112733900937587464576847323832924136423515380546856668025289567166571296527646275461473028717333267141003518332467805495676717695347879685792063703697070949206732122179518994434776335316458684468092377731792188239016034485284630253586964894185124335453057822293914949906863158326432012623661553678396250401107915138994915256878813546994860886329001648396962604356523710403969300362981938297962596264354907403355610003410746213618666434661128903020244869263896170471066369182082892608827489848219714660341764073206537992528782425500311374732638679622889592596379830695201794132135693911769551065799954240113610377067376683502257705550961373070910821982440913313765403579054599921224319207778610832609088192808064360990585104697667138615140446175879997439210654552913976627035980457885269693547247688226220637387637045378917414583352542513965899437900025330512737621517111697083031434057763772292768696151657707923184295380055081923115043272032888153271224470285860092716037417011085867348183777640814999517894828296507433835585929567261420420462344313146389909474179332054613893650718599796623059768279453815288538594004374465681087299360879696203325418022962651748866461417173042714747088991460375318785407702300361444578324217092319160985594722221278104937860539603355035209045656876866415381803837578632001346316535288568593998708433385135715755188408423372052774222216062791048328356892426522413633286855317150328892404110603628893696215163566867442031835287126762113760377467604420360968473120576018581379277564986140009067855235173575587538977545428601733720192069320627430054733306784720670681238722112369930138992200505842377717496879786984447202871740228658026814953856942888153479080568126661272713405724755303867126253550104922434031984783644501692789857112933381811554363124855689663968314433936452490388268436076601610796805828686914442925663191706651004835742754007540713785525346442305287873815143574033326807511787052642265739017004565917956613363367471933672846629587711796258007368503719485449080451730511414011638477972141851445718086957116808591931107452359052957804865633522313939899601083954314084664652521357737845635635594429769313821802217558277658299721865464301558666750790259183567098179113274454668640485452931068066002908997277843409635151859336573513012860151545891329235097673549964928547801966932932777277610659955980339629366284864226600662175274920200231799911374929694310790998989788523133581837411706270099109279459393672455713820011546843294753524645198035778900516714217425354013155387659200293566814809279617708397538819427548364362324788662653106656895970337977138117687158105548389244431881662586459290188692191645535827574319724588383784870507646115475296972326304672165083538472785124541284886058416994446142617361494723365850552096782926362377318561314608226102827450344958934465468245954006024257745239912802322669809977564421376969565655823452390561157232875258411436971600411470668202989843565841480016584687122684712266492502542278163229587079707811073162054156571019054961062952927977983554302015866971342580754327070415115073966145426561158662194502911612889959593112256884020821481134001501231980935188947653774740923939867063867862219999510114357601167654576478400771215648552504675553652631911512293697639701046365273307557081624386985153768458592210790101466864820465666077389235557282441554467556137942439039191407590628851042708228500292413849444833651262460968069570764996387290215723393788781245642804553333508408301261343724697551028018989537881749905976076338448452394908535816426586597030779896515482117647557447860634450527101713121746502484479941152499856376739864275419495610691316310634478200363068897623674033337430538837932663020502333882835672567028049270502480555370060999493787391837671108324652717939749490597481250676971715293682844252870745501145551758940066811058992261248151841276017611811411887274572413802287051107702233361626519940861991365151787177732149135343171325963570255705926609298821759763745740605618507883067662117450926227987106288796642374051280660094717537306446983341125766514345467801301022109170850857456333788167674306579695352752143676166869626035002861003680151141687395013408918901196436576953798322233993027260775444170722889022629783177992510442629535947158550432935980049655104057058621049474066059547684213926506563385023004213643849612559790681501591969143956634858312507054320677326538188275884275107886773666192492559052155330294262524555672315514034789884026392912345926416901360808651772382910047100655600280544831642567723450232097407181605364971159781140990727057283670253338705128542777670983899963185946930240111611346828021014300849527667380963493241772072243503208897153563615767202700820461479775801950340023203862180599061144940297631835377016813742279451921894644661911014611402981461194280564179453079023523411900246837570509101994534431957542873784483700881074971158165429546479001645257417913405525852266215205603087742174929432327288507482831107662551472614657976383161884377268463657025482687656063877010334242025290874089994813121457120585350369438678750482445541628164325776911259393529988611879496239373025342855694600744246027039218591404431155722013586923335365589621061845464264820717668612915592171183491557882072775450347227785803371128754402118852662696497779734299037300726805751376345509065452470499771152338656741540759667286001807828234665941391188447950478415299791715469552242795959977483249749098144154729856726398843394843136479906418546581912783694281934186249899746840563706877029836122779488478015849960103559937024687849690515515689170897889503967015459345616938867807167382350934016893152627043030526997853293078436718226621464395154690848550466482856381991831742986166751803513242752173233490694252183014711530077920709629933842242926656727149369031087137074130182692159013533974804462296354847649804625060701458152488648760236684887914355314516265818917796761265782595118181981681044254889996850913972129942574101636910767699459646998565563334934817729091557460304359721174908710624610165520926996466684432035990548126234720976930050635146064837916857286368443462256725410214925359769688795382559406991790923193015325212536964901024443651640395352239064142041323998597222052931115684682639641634800512022146941484482355702865668732720081140181922030567504656879986036737923027379371333794512102069490267986276796423969331880136840719651462034396200061876091366707548763496112346222123232248230388694153688276766328691064711815330435460610088491421888195612048740193844188314932702563544622667512558911661710630118364274196170285674349766269310062034958003334299954120247304438475039760866057864514345508533138628508770723222951065702526427845206142448239674333189634298931074576766130399670656349372266937207854772004314241332793691477905804194502714575051020048862726839370657406000869875185698670555381280201599182665294886015354833856011808620179345081837914124086071187518476483594847918835733763073473814523558994575501588763392130790088638634309767210564561156248614464688514525041131096155150204607020153647966454650761265273455261627425314514074528596787641024836845254467857223858579509706178001258970617383401025827829579991212553362569959842654814709014550315424922111780290827915930414726165818710997646590887384752885393971444427639715814163996840822838498023284380865733129768795804080108863886307701355417615576573589725489445560015923098909783946350493434691086273697821816061793195812770178371503741153108240688178150147461201688003004263999364357199123049902951417798592453452403101562071608640099027564271983356263970688542541011654918968049984647651232137086895404259830149749220416879709959182020123061308112888239461649235275893165452695700741882252283027093045450482557353241644181353530529653471719973518815321814018114021209910092621976503477515448618895747516994954217971534012469546841874151849040054346531026855470552536470226180210581952214311535603720572039239234584559973566186577426541184455268877699457062169502204867831831763139996332553492281719620044008348442819347402916347449063826287493279275546962303367251145148862797186077453729802990592616042296098334476139933758210139481670253798728685880004650690300243587853634793764661363939548941992865429829630011064793643332258817519440699413641147721299779933762272040597516388553460177074372616592967741331217479003988681016928742585365278732728251483499212078891220690889658188156539798384331139356971957782445900967760132357158387747329622665956719786329684268357644498465257273930645057475745581973619803774790375513161774140411043479424601685237941073465868677839867198646929631273490654610573573656534496084196010506741518390113797703827155068331674200699131411229929426209680688487714374805974168983332553493786309966923567293209378744360953393793837125430206186894839350307705730235833717173154106746899348996486996231198585887923276258550483914940308115576604381833814866652308982829995287823135115578881841683647985874625837749874589942687788384192613487693851248999443749739642785826605231657455343877879315308426560948548969337045420424230665445855165336217895834289470720467926611740468031169083110333367765062731740323306977689561405194787701475443626301894061597784690178137908223901264029854714026072728307465863936978689722771921158057199058515421972406268544249165602289029057506413446029967238761073334521038239699127377613786798068608688136455403186419278380623768639967693818903002914091657689851030323485482272515883706497395534650119809423124565836391369793842875038747816600835980202179604622141185688760485442517152962269215524720968096159687665960838433942792005418796157545207812339197623327607879244889471757058218065058047984089888544282248414904169827449234143857530585526799957307705003072573479826497347064437602871900701432264712373284911700095912533127999896443887782038410277845379907218733591984612184226296351103012869133391467968434446494841517603701783596211408280361807750260109809286092555909870372810146591135183334539196312751504033478470726845817388732348939299912436932024285485403024073626586251026026899899295415467127267737038677726809661009108302376683834416191919481724680647658317867588060396025374752516402209355880386153514329598353790340684707527726798504415578402359843949160793333347705630484913082537803617023770261845303091364666015596737350934362512646919111958540171867785831140669826682679983246022184079073759821259756221015486738276522189431610413723028908457172736855850746058294313588226728849768689794812414866669348870741591827776664772445325863669071829320107144423553422120538225532216445443836199238118227392732940295380857114186288402531225261406147809210925336362075376428503158948931501742771923187008514442594711388876951547491075456021295349274877008031010408946253351724911972191625857419453217284075817281481549626955942730030530589242183647212102223686706445886268268877799837073315208919568520733667353137904980761596821645748802852145377472403345961092081642831719685504154626740435161580568576', -); -test( - macro, - '1073741824', - '5678', - '28148898337860105994977487045818154315885187098857720123923019503536550068661096672354637598480165134022041984837084308868395452311053157640615896546050985553558586892645700423928507935726495168161698045415140497515602386527627319206488017355554288186119966734541348472345944365178980166309150611812365395806608007167010671798672218072170128957907439061754394300128594626814429645477396628406899347464530711061456854894379095840425674956808441653400041181506139011927908393244086335493121681302022622095101860620829845276309901056671871394201026397395171820873860291913878080280170380979892472296164150372296767377145551512657194585337453691634475382711660977481092241928982823053143625635560423178221937797712042117395219329456302241242041523769729459117196674726421874136677546084294826873902192894352596290458993633922997209073832114653500019746006542685067098597091796593235383026677957632827401939309333387666537839316094357314127534920705674404309028805143966637229018794907522055172849778130036761405770603918926933967928498088220730576083729725145992964744748428164200419463740275487586933626822729962824800560240761474558428430552602958126365583033236298214451648931511755996108094562356049299254807663118738845759260918867850503834415322452603653397365429159370357398957195114808416983753993622244836716555146831907033098694343145327951581021334647653286088313114479559741196437718942355964184601385362964266877652784804939052253222575619622416395426846679242522689602653790030499520892085577500725499201404182852867226125589028845844427853042309885329741850855526415975172436890910632693916719523636332471118794070682433535223602563287248795595868253883675189904726519119448801915261351526420699337492762857231988691678382926943587916545335155283702413750409505677924941689908432596377494319662783929468093868450608410231488451353317560659020100954006099204197631204922322164052615891958008133081819761014762487524836715828049458561031763108536694043217084348793653430411896364791299284106421121855831489687835195476115378899943269695006351002750960984964426672142770799033138424141023720291141340435508636127792984379054343612312021179919125313130082850457997100339188672577640528770106417201838870495993792046104170422555977835287298352499757882230600591394487250631375216854641145304444397854662472195749485109206617330733383898435103350307488437904097790795468490159665178407362104384319804361651012650220132889393331591715558188458831449467209968941910069520056730023723713589013657691484906132221013788386184219197754113246865122654385680123164873741763553852763331300981166654373006819001402186381647154946999554421873268375821628561307292124869782352332192908982894920263895011772173577732089662917292761688897717750366293629569204248484060863934466108937195948443800932184673102763342937824460121045896218443122360882698024688871403860910852370898051562718960418260546695613954738347691519692022893663002976632717861663007580356823097781646192222209252702435357691413104372734064147456843965665955652873096110765830684236182089087886565807972209217987226299585696168982138854941280194328335120626512261001331081248654357371396176501075032152655115462224365334172115688122152776903406306442312011439667376618560819888585728027310382981804901247107028140882078332241335878660689097272500434681089309886067525115434143986130726703706878433743992681042628744048964001570508077876948518135387246241479296880092162188798942915085422997374189631465329853471853984489176174861323479075234363120290867769013702739919612009426292832097099802965008680479851809369240814572285623180146280697670984531193650342503967101652478766807739947358226388629806728654389375296457819784548065774571293116718672409678564611844170365489608651048260596575158516893594390739121659741649999445353536303503061294401994598214548838049962733817701620624687363493549713852174836185700963467241090073849191740103227875513619343224494993071747822732607018496581774525356633102020037794640774098109121417106381829411247224212510736696706825452538654935037259956407630578146638429226378102600142256743099393349884190724617199388463752205790794440451940454605274720879574121263752007572801341506805655067825631941739793740936589208965150634092530408044204662895618653609322262359163887982449970383124228287512441583793977627962068395199273400344976325835945060297779883770211181669216457812349694314847337342309957623761533535923980598873005880875269599846465045392510668257169787436828598047252165951647190114307062027405441868359474835271630041202717715681530050858890904183091778324015733255757236109101580482580441967985828890176389397718041212941356619163330226370976268329734773630524413753494529257754781863229577908457569032718062086750844184472834347570239536056326155201810881038696860481717433476664625621082241586991225812173672952437197866259897373157784743844679729067516736518800101031672599250959815137720332161848205045025007611471141186707050967888154770682560924038751737207811193901992570725369435103201791686524505756647772640472180936813395743439078761800234463478180846516292693783004681080895964724137021083746991000603574423399483472642365997697739565793596648669477318614358267250383134596038860702874813526614432265002227880708968988988737493080405962374293053076826540765411717793130826541346297462776836630777435661531826481318792145062405811198530844655829858226912380798813160973881440163721569917634885574462693105998116146807054360746972666730885604323790569427284253076223964273715359978030815340692680006321945430455280199860142711370872816427712142263431097232719784998704069638989755157328661993441529401194894894909869599801115592481835323158814300011842131902588936147873994871847028405399169811064272549350520174591847212829792438106825404534383049157807382417071716548998177187833979248225968420666706416390190707768457675226123463626193995384720198209759936791376844052254490031460575054413862573529726918023653700705063568941702083630891996044965826722959248558923416329510449787545274111154340053470755669172749024818935495960038271562190088388398068258567446215438429638813416144469861387009096942616760208032476355018814040329680679835588802653484030011247737226987035720770688024054612187818344447061414642220551886870397419965104800759185726414865048332705445586347178339611571166805268460025130817411913319730985020314703929369141828244979458118746350794440972469365515773623521735815053404694400936400473790547133327308952286757212455297814986317480141532831981218157144776502263149001123086063793023408647358626440541879077132102385221082903921513070649860566861228278306927456359858970160082545255406851398044427390606896847739909856033659996912142151062203182419823681576029939545766232546225798544936003488100493795546219182495490312417078545669619133839724414087313221443223560772275469655787068013125130766170757522755288995196083208632760367504798374588838275982584188716625435557712975930208506356967363937122210773117642423759034688847074262569157860691733884420095472655868693804788798853460305074114676050174059869840188238249706756922707852403016294480987516418402809622158722332117912191322396344308046005168529470763240755288495911503467885568547110796443005962189288373077954193026536584426645858119360236884973893893358131236585957253729142968547596265350388138211504681166184873067638534159817198960647922530056737171392998222652344768890440903942958874497053450492657340534404950722261826476694600389620993991121412934627781512375531587430119694418600921042491946241808425609218148001707575278154030998716384895216667657329409014393641864525969281112155349965482510043869560234065512374117610382279304357796353832138535779361023572767566136655174688134341190085638519772716269105777397667544752112308407281551063186641110391181368268011784028035535033180997148034817583725977310854347328290703963033914233260949053078632664379976313477320469323833039980151301644772548530801510197665795747529811668583071320734297978242386191013538568847456151931045213697759408021294424885981327060102359352968094713641880316402184069434459849295665713894902493734764537578851014033582135990357328370745283459359873866508862907217949984436520976291123753201389817868962086019717213048013769401358081253749874316414733761110700403879731481327366128134414614015062028812312964841192776605772461602572237848579751596062846119891809475923058727329328606164325877380198476851130919034536367632484283364665496341548696606675798822283175208724674569561785917038686953070189275754779088627350245328334100342506484849574784279451309720531675563912478225243235012917746633631513142936777117922425886154614922105224375020527023628916774071542994620484847765716560515554737127344964768600124294594714592715001471003807303089010784319406981481509952504990850744144964515173603048334536187116309970688343136766612177268007668348523128350364138371524518071578343144952047467567938905941913593215582743180827679406961185115865886327377643057697587542832729089317101509237763970252435463768975389494971467359397430380888536860037432765702651569010253133830734119885207436369488914639018501744924571605683611573454465059643881519676195549227750953450440893566116496066519058403193663154983497437154203819963260242165229405208778700716060684766534758748916704009916082633385168020080405048885760694176577865460810820723540078488639369178154320241426505293354277745875660846622369288568123133292561261235256785531922213375332813363516492867281651918872071496312751377718845934838314667391677793894714490889453532680855202389134062406106528371557396680459568935062620695390268278489516786937751530412550577162465259150382716339278325770531171352930227692196632869620798522311181142960193953850924687498620070544338109430949277948159507329879155210160241450119748611369522285092212852813824570293032227779647026176189223572123084451190061745506256343264326562147424832561761153522386762221700802908370661822157393320044695725445229989991188431755677388407747966911115439215417944956153478651673184696643896949254524276369957021748106422271849652943735723075220056207411130072896924286451944171527022637264455020523596282445070630771934761579048221305568215457139994617211411085307850660300120371189812200827308583395539820589069061017861328862614076955537014856977190049697039330309651801348304720476087039640721882498623638587478814436784569169724978777030982272340221145046578552827191352546947143035275990939793413754422719012024556590240543018750125119716435776594606691472552962887122631806058400823255622524530384727573782908089505801222820975600456796411789607997183949633694399179379455469571927557602044778175978015388866388477893024649939309704230972907459714140113585529896807765412294459996359442449522528811461650087362667428633366378783346662514627715854569781388778149878012550900142410424032639113511075518363232906427235201384917342979688961765962102151375425532423292393037112830729746922825304316043663626837496782405688495899065655537216405612388901278198928051245924054604064320232470222166534446528962122067805923069489828996675843271638295113384222501506572543452808653339012061245181593399976731212745904191650313808438588548016446126120674226308029977326300360093713369252084641668517986682964017531891894972707847947894703397603382187246975964105692629345413266060528347071427038400660608705761598293765664181968080597125867912583308892435338706392483149232139991310577488003922853083026387762353546878968616781786702320683290245408076838623224983658193002922968799601420269991247101304606880493000638853120262969345837845575632652594203162116188047397369127024269086257206506049305152721408369249824397488170653226655559449775665832715337829296847540526548358288035657313921214610780153539347835226207976076946168876430114358524272233723646988855002094455275840302962666856844081766293291452137772048110790637266536704660807449519739327018721619044684676011960134044956848557708417750475836513642574721735576244762978717150713261667412716273664438107629604313094428969497371965141673202051915817445633979326940820989733688568069901109275117585286470786533583664247227757623461868123616550942380510328263064047797942151063136084100508835563648567547381317493212871351484118995384664462190866589013506449874230637279552571417457669151996916924270409859368135881488538365606716772030232698811184558469064636039865808366906057231656211951193116937650377253371722258540457313473237383533121791937083143459043495393649754643213866611930380243460376842178995100338772584518299046902703748625190488159098692582062884386819474282872980115522829156617371896871414855580179892864231619779226423289057203279126691229766046555328864768267364321578175263384079348441103395394618249025089795196954124821643685972538912223482310109199583464708899243992298931497078502095787511123559987214651034665741434614829428967428333802394306584477458469633359430987362811953453518400356509454058669839297226788372776367280158730642818372182875605917838630804855852420246178189659203437587382007313143987554772337361728272583250185719831437811387405182412368783988197961286391351624156213505940541094805465500164206288920572949611162162113050402038557325431333024558950631067367936611318153854810023507303764110973942973756954917700791836575148652033411756519651474800034591874142970228482783950150557217039469375536911748110596177461367744944289602462137274637274069720165611598466507748445243616769937369465337749866771841938628315536271843426900115553507410869477054081430287053781532316668174001761433261847823250273169400494042990324465308492795796008958697421991828212877366624163731089097149011406345956531300275914140023841183483485265586993192321555157485947797690816166469044557255832260658892615942710042684013595996265472441252752479660126933682227709014013002675508541470117652788250994783969626624171862885916722522793464173019418067898505345599496735174015977358875619968199716219533552738926637031051890494978338580207273924479022246491648620522810980430864243281885381172828258575698372088024439462447934958632586064921165575955786537269481483937723577490467737221720409666604585388204859474442997324805317238786488235195413838346371458154199153397286434670625395599277956221756084293733060481746683886469999967199808248860997598988465769993529406058206112180431991132713457015628241212019583216636957380809911503435447564199491276079636441647078944643232895303344668713941249744967791690209229128883799300994462500424955736495750871431874087322800538276593777301272661937240773237633293854544754939117218573431236413676044727898884777030673570034488739595200946297274238360844588881821427893674692289872719794617552712949171013259904704167278643987743105273334320443413659380726864695786527091362412670288650332875617283949480199386204263527209082186767929892326304543956845184355613429740397723016551419039154318260427281778819523773313505580722929854977110755322952416544942744038661223221183759746326498482668536001557277096914159111874312153517083375211013183593250726321533259140501285618966863802490518474254707070066879721010077181030496698210597599398932161175581512349806140123118157674998684530687977209656109669570842567739926631008487026917889091286956137809901880327742971892768270601951934752109320934869765144253043800750296293513146606452851069332013443570630554704382747449487485536496427956274784905893103873987768740604182379428000525642086938721704335210558279257980735181414966979314982367116027137599914079057701202907012346767620471172401133094852140947507709878927974690819147519376781258916641942410215263854181358354623399721795114283058445754664116386572155146227613060724837022655475289960130851827789796741182786701725436689175126115738951255328459283705735673792038332771275966384139356869886544157959423900159524818315186940605161679257955706740318466678645508179828694369147823415549800070451991820864586919375260489703149506500802123898113416334762997208596193606353010669216102269842389887094552624430998968131186451615404193377168588441373578538825728592377440448612020203066191898235515693843215931480135839738134274029581253133656093204899636776425859689995495873537309952309610072133005212939182414561325696226801098867717882906061991955075678342181331882095542089225604653021264291770836186590776579787363667069660002867694074402468427249988282181175359142889347493588450134025762040336381857980331092417620342654222801867511538594654519800002440876114049836951162662750192372554175899061991906290784393548297931360854697304660217388326454025385317464060515392460270735562634219706400179619734817004536958508273604064174329604012897892903752485301302318494759650641425275359084845658186671712160266483012379281979192335879671133821261746570768835599550683335228772226084199813244119457702012788644482031756025391901885339469726868198018085491130601667643050694626140156924968196367534431524629400571184798126488006430721476852350356305114701192180938078185596501406019121622406459154304979668159832955371593225491929291926247593357479974910111035479049436421729173094079651242582981533593842859642090017067207572422151856331378087765898272716477356116505494492527760323026755374093035374204268993047047278479131391553691647838872720204941034872333171803661000114147594995620657679606204475115479977905970944031101379807757313636918891924602682562733654982817525199083912568378542859662922923704736713241305728532013661459371953714893728644715593769353695924513479019412720277833400288463057686946226328790417273092172568136932546842785412317831005776620608067442091003848742510088030854918907472765326404312356309549410618389906172934527763348333129738356175599668898544090809612543931015042371463710234727490208128449271087498194070337397932790231655494664919249685556900070331820527927700923879904712981785622980056040860293852786608014416839444705794599237330395343625677231165730337929171123427679896358733212313404887778628928451238376200468283542093779290360409735166492249355597416078350393046779330842606201068250136256437582935384024422088122049514231186924987486386922255709770571686751402668463117086056087909722759647760111192263760999074221853531262551997916860630419344885774566813330605196726150306444911793623636315706197278750196545874376400639813558827027494733550174136896390860197943805543393966475454387001187325653165083037204644787454406449433808128377060422465144611339962742733002574791924410578469257487544550966959852204997217505241888127436816371252790120771208092431156862674023113879531236174297777218690854959431629046382150819392457019720688697146956554700635427875989653883984765265971447058319231040626981527727045895977255770905523050300664800936806107450054604610397698279501524594807393099512501267065236510023558743136424070008416804213522349576537960765214664370640100210453084611914479027691656864136391290070746628452999965623824867446732398214983818615825977108668636422441563513003831975312156804175525835009983723583171193533501782236576964961510324559549005090600262768394195823389119794969001830645368080861318691095973101919011548228483763812949239379397626324227241369442235711216350246757630159193695160367142155317905915084581982797609343509326821521911481105188403479863217823202421104691839244143919644602509537137465590142091458129871968626743829025365323860594221268369465152742323854658707635430807412874755583770885944383748932124569993895933658098650493753903580677968213439946116629845206367354440478040241152208147047847884378168346630550895572113154003279420848335567732550380587563785065372446579951171277007080376181880859588508139391302063701382117980942753440726346766393542850829543275168072355642671555135145516266084215524110054708924580833152698259832144444062702113296080126316162775848061402470651419774813974402257085656428945474157242235893836799387584558606751664927393493334857578593093025923033903249925802452928325559868490477635990253074330537697360009102142806389826773193350715830565814882983312166010168578638318113581909715614425901966904069916789058597977766919792967752743913284801516270290058840699327499070875081504588210302710253892626213023043634438957621385860258666727257127841683811540495720040171541891264342129606769050464645389966030356482089900989596777679522985065453229500095190697538100163379643439267150956032532346334280315920319424327896526362404605954432140230470878470882264003739306894517976684362812045551613042852192669772965726304705516783708137205632647644097851889002247751584331244400558203132964873335621281299717509879304619288476150109332057109283431502529001299150493028581031388664548216000769077942923394288901958119435090722574806233751271973249874552746532634460237024563407790213999716314923882457446186579151315812380783168745156472877906107226071419443707680584882191451197597628219448713650209673215406805360654332701478226078972457384732586255866424341772998013397576055716829423544245310237330356105227120287256517184974300181658805985949145921001482457911564043446049296375077517623765343452571128748736683475042340324486422980741771950961157672017460212375000343093255257855859277198951018128053837238080978550325407234199361789853768134577442527702115229975219525718789959045191073349653955820878281896398142889923003479767972076383190379298185808476922809215238314249626074164796021558425557210308754766801631838440222800550783465777015428522380797710835404996664778131573332303144318415473153348891859475225796874442481044462069842108821743637445608331048146899622744287339341798591369054634267513173964115613718772637770100806267461469864702974890809600842718955909073251470396524319777099477171768967587473664352749169748604394124828227185348843004451978265273237048553782545156365567001316028448768834710532422641102380518061679205162015773801588206664244457180510418277261829269152549407626154892937631258492719033672820382433466745502235228363223303303588498621164057491411472890847331713440771748363429011212793517034275378352451698293411530204186563333810558260562682373432930496010859284665817691922432863011084933699996961786462463745048747116470391194990030628015332701370191200450760857094229809065249035739502022559141983819390742711457191605178020143282612262800696462461845326859864102767722533666771388582815245205576926226742350534264234612616163494445478555919018674566723039443492562381116590300549213807725226129072939143803666847794403804034573197127632276495815673691688391776493042924568568460383396331869780349811708739849417094527914268223170364569506352973511214621114908992490959875119891914002201928543340360020016065452018805546551793704705117911784155214540116673803430547871133266630619513912440304683435504710983133680288052313077803153090031854465575440001750060605408581808515948034989770356122583873261823440265390089426304521951729320287328409207700383100123151876966524323583031388935239745236968350327632037316230013986711095983640286158845854503322070918325810361899675959053468566534714906108407864581052288055415062268431577178677164927351157974624449718170551912415953093539272615139170040559982269069144788537260760097258745113985468798064087385257717936930463104173511481167429308423462459460962543960069832104794421579983837186447051182599950438328122680458288337425520120137574451732030637289392014736022854027545044245408438033635786397265945453723332808703182454632061130743471916259007228432728541803309270197500946096444605584853072197436724505877621601824420511356681513957999452264448682983769699343994225768926072658063255358146106163505098999696551897853532925142643283744909834395865851620590128292004057571404777642678387685668703868806130918608461650915274491926100585166495256709407294941727457418325940432516141904359150294292748288413140787948986359366462074746713836604803390213998570822968145438813731705421355204337496672010739199285545674998128780178114493708777570231591229449657604145369857370727860129063567167048674305858866375066717347101711427057387739505853397158515841254093617246606188397586238440372102294736076889840979753873898793143249127390280808824855731104585046537769857330026521552755052259518063241611856641516275156726512986189523254888151278812592686063111446785816181415218227445732930445311585144011106096911480434585749527586559521968949018049836045512020729497009550286634399863511982953971128118927749655951377838933784252855345681378774160557470438174481259093651353914975509617330930104363369097847558011805545516823230152705422673827213285554606402424177535395875396349439257879147269990316570555566363631107873583908853302109598741956597344312363552802425107351220022316890426842094449146094093908848454232919398697089400054268720672186047939476318363153358024503206934420826394819801998769864748411198961176921530138349929123130568849437161791761185855627806231398428339981489989031517554700169925879901481360164293541370512956624760397990743413674286804847840458699624232365464488482648339370331099527120400687180993305421299234942550487704295774851922811662380580543940934664708380776764694636606791934436854233668907969931816983166891497973095943662588130142677860603610047337982454343702508574417771555874499100448295382819121831778816886809637030681464951442852987045658744822323017354193015398929135356947939839140306698866302482879187121853214437761579840307617080110522099185105281184531897202070221182174780155244891343031372681720259990267379551766505422208965641261232230697112205687652134593678103177579970271087834049239379072209949397401559634057001243257514833108769363888955683621052565237599125728261239118022575912894175987408009344745117251993238187747886278888586407900202408943623153890915214818002421838815923966958787049692850878031566893781773464813916368968542781397442084762131956466252849726966494397504673443856343004132647844309750841983656463183520640918053128194362601997214048354393807871873141019891406717655832279814142519576502831792032213339668060138693124678086147323694655541522077131244528253802212257686660195802890422055107005242552590674759212912277749904354621960351337529800061117715230093493340418671330565674438486174036271062712551650355860019081761842688678384695345181209344993751433013590249265630411818871254942665247341590902374863056013659912681932484952788985051121820811227358115551518694832616404366490062429428314767614403471928494311323127965060377740115015320155059011183773686991112928134219938238861942579094187368578097611857130108971701774055507254283957072531780780052063471633303056993180268811324636908498651379339810544455043184362168932560296467858789354987134340096423851366091213584971916411716002520202011394261611806506910717102336647860845390923567597373075328613344631519251210849547351316195902683921154170420914315410594227945953667999824864089646190094752335728668593487864038958074636801121239687073243551314746481125760217832551027923488199932464686665557283280854081782932546169494512387423905425853523327120893410410728807263709579745414874034347298836164872219912390950976376370657059966587673786130299383959548096535839326684422935261597602533478601891806412747416883653296136723782138835982528170764256084886875777597602961751140496094774423625070287438285325047835576946313794396636877736116310029692958421411875762799468941694906926445604500237069120930529645136448763546020507845697850054138785172342116922512128840514349291988431425294645753905990244686733733410385281678970312606729383537299554607797672907990394591796359202264492486835738568186180945133516707434961240365199176036679479430505970223502962244183781380913196804818441600413779120622805317818799661043554644440443705675483765184690435438142246744131509594661229983124492357221608279423279364533295157372659250705441584344308292111187384818184306257974181607894350319552740374868519341191483135283763350477192196383786427703966689423831363409240725954775713154895328593988160732590160054997239929414823714727974826024035217860503862168944433455274636864484104518503915125790030638481521747050177942348449246957290358941785218596751364264136325302012127514536979011995360578526074657060450670609980645092613668861127834866905147761396712739540375500705135160407800946104520181528985815263489926159911880084213321212768952431725838938601672188812651102720142982130177098645113732975494219793752073889227065759762609687893651335914924691660042543013159140121403093465609000857166311112970382917214818048185101582696684107408042143042945014390810480019118356949537099663818754715059209366691270390106111853299655506660134809491448878987832685380104145003045774887739416422218687559783784403589016023706079260754932303246949584114360114089506475306440896925694575031099223891967798964042809303692120072723649900326855730217433709980256225249076797838874125035531112686624813374295588750086023037138555024936706002261539102751472102701168353855022613318138841001365460254229596701129402640443828649877042750795516229713646589327314125732074265431844531268182493212072736085146019842646560868628969743149933436726067266230293919685332063288083684098369674426608064526187772953954892826318674314993417979569039823495888917128289051117477198054203719038275454185022748040457767103249901035731885373830510569953185345260681492090178619428435327767997448105824239005042284690390909455119903699725245439425773459997919739647511506450037183108134359259135471444850889646470849065205304395614092274471027676451130301998192579884981980383331004755985458519740718112147812962705310617555010259274607985705228893551463836617686124231748426817936045494654384933976330192421266623131254582148198369659191509650211552964003305770959771233149223935846202962723117218456932567654472669816733803847092639735772223976250554596127643265710435182191800068647592743527104298607516812775387380003886771219532565745981432787326595836968342349008462815121251789385562875463614831060974949395788692980727720786032761748572416672895325498419331366014371448904732847968285929375551256672205371236319010761607531035489389025830582442491033340311783200278400330573275229324139285691959682207033048166845240280073722049031522270750064451502205702838802314453492907125113196867357626343878692666709910893945062710386453480965984908868928331852364750709250772228522623061255781933618377709440518884675617168771208213362028807000568991336640250325843144807507365386167323430530383757386514877678566741578803351624259009223626044690394968507237740190193077024096179943106691946391713265839010095279092109535492123342892233114535396448888859072578357724845567858023341418639436957064116245382812764104096389861125288235620089839796959708844667271837724791853923155783350300837209697417124820469598763421016230556944144273578255047209140685603269167269642662464781417402044138800193094975708451596078152422131206951630446037496865433989208174418961047669463435692646401380865304211042807149992732461476622644253291650530746199877456840901162470871578154957110644808251440332624321213214254142116691052442993385768448482702905034603814208635913143936488381755746324155738630413306167461255699186732545319102104515653378661263778599973833109965924889965578020478609385756785428483645146480030473312941683848824619427905074772081786032588682913441577171034065769355232243310095044798628461790230246155642424833564029628986053338033122509288271156493098356126356548508541821956447282864237858810739664866039796867178105481303341995681155609103956708352541385258044674233021538488882256047867864755689487264233200251948632434367557411696985908027963208271722356561030717196004391383906360151985343954617673570213543813895091001157665808641175774156333012362213294444222039514585400935738306777816189406291014204426171617177142780096988819473458459887462124401026378144063946634234937478266777216707400466276855252285387625315985860983345555708831049494034215551909856922269254608364369447708759473754568912693844211940774320914411502602340550200223765229096489309938496752456919270003385668591424974211318904032650304107631242385298382914407054967999534142551977432253069569518207821850880260921220586532594795739409805616209429954329604196061909860469006839106493724703640208556506345365382655886368345271812409551029573250054776291206004935504682461872164043783174653715005083196118181680022375451553428281102240058446959296955227821993514685348539842528436786789259135360096841258032925547689013177486729459318947085055431774319351281557368747716393992737693541108230965435660525692480717964031924241664724388845193264670242141356326509471299306016413454162671571381531753658371397956451669887495352630248631157664761965740380082152914081452732415621628375282370868233950168887184531780269004718739099708910660900090201255053397723188285495192828542314394947620483330304687649237120551521237832434525777447953092911201834715259217245519280176880179885337857732604864405057483694102485505256429471768330406332418310295400408419432432940963470934061812695129941627390018523946146290853393677169776503143927133001591974399819542958121940959619409121036386106497029519948200613092346225268222984335952952211870862507812271819553684431413604081858429624556100379315289298469968791166103454024434690367788140204407001004669551371707738311759495150757612726027877731029702306303481073738582347882595922394576946021621186829772467105355572710477124514971906584017529758090618910480942805666401277004037346463984772905375809948144463853491825056157101189240572959686371293182284160480818545596306440473897493917768183499944319205900645179847295735484551449225229261645269968906429508149998138016622129015857135775809846587750617782253958791389940037001143544832241065010658361305409557331037342515976928994199426578267553413249193592307251067458813978078291350669052525953950112448480003624625092254818432528874435095079342421604083110240934432048412320452642368267544141594660095901465974593532827701312505826582575011497446990637441740616567155660949020249228616684830320354314707270016757257201734175571113012610174151094479944413698938350396910278103547991209738636261259356477694949886515282971734718664058449032335352583037449070952755124611382023143401658303667877578519296296527334023449638130475844470991345333618511394777165597830452951636561490737471919475646861928324359374967832521186421053437409487480470461954966554705773855950738645971740817037823241512416093275245345820788368984925734262305322634441156380026457447197182213483013402950350246138649304465256498219312777160525099167726998120704957725403800575045490582281116114994378718817183032439438208226746360325766986720916774835054649560456316259175632867603045141112409889552612372622765216331693789078480741915298207295555848306263838407170482811223590205255671667422964415870641962144241361255726603720198161298973619057586912427934170325155184902616599199143436064767051953442782556327831427853713857411098088989225849680427893366785692117780023838758363675203567047751767933295657237755027185531691483903456972232893961200648229859233228579781125136864313569508852945160079164443773633476981446295403950535828103167719751726784350601629663178850550389728335502140195564260831725188380387307159781158911038797569919167004945795140577149749170901864075423619030300911182620763077511907189012876305215130787412613925421216160360751332520310931569700798283937005333531483817004253266974122408656002783119309246945216360789948717449837131577677922669864583629782440739388630470181967026233829667565773873102079102987908580164142215769036178315875089633501680791005716918960107298151922455023391131279507844863316483788898011992028922935242614044660187284736254085622682834529882590617733762378374747202648059522912576707100472276664571181081828497963723051983320823361890551873317486588183597041968899647405888812769324885665206175649824784331136051942330320955997813290150374169555690598341682414758358005345032263076159951017735855589303019820663937187166738223420643133072273883753060709742405287892650826450075887658352906610591407918098029363694819236430463321771822021175150958737396912367945520530338753965695796553479705539515710152369148055346684802318377472296952509107769076222779644096906583067893946837767792663232669048207226484434581284994990609048194589647870843829686890438595763980976771026423557663089024892131001305788227380520948975891163833166047675665100986690807244435880890604269549826217825523138658314976275936944089547382635813595490748259777205666498345149897846304836074875260873003896477439834091090867636750095043118229481634887286877880618142748512183455056884216089061037969239651354971148328982756655369145281624013806819439797157064508394810115585016956024709722310092594188732446592100117958881002635994259708482658147888287467568985217077229723202214489094759132716574769640290873606782618033552995230016319587100167955339887968922205047010011389063615635451818872082020951265796370440182994059107927214391413065859873935945939866806647249901995379512541102421318646178957796346016199498645184725987268058320037711898529749988840623868356343243014613790813886854385271790938818469590098025543064598325239352259049625770848587072012496241155997192163530260660709931448706553743372471711358996628745306173083673087048269342745699715075360398067471245252833958545215646060059000665959497705967713122400751567337815731755845116818658270900111989799269094832164568929732353735566608022923214255026340432900765571233256796055879631067021720614281128969644791733928937006346217595371531877564139995663256573848449072798997910083484619753891994751816910829518221088342707669386410746832407567737548811686421700767615090296347645343686568901979295358016279996388099431659129877979491614467543895195928365541638941655634949364961607403740873577172023120167622227906175594503905136634860440145452083845427286042679614121738077233331267751337860968115995259442772881335900849426085481298429404772477164459261951878223611738672150293049444078426200516395163393367687521048654041265810615151381063263935652729823202648067856665037222449646098366399836365825764298326138044202049679510635928460540367467980830027780617634593554463824431146300071372144602579306617234168891833603527083083269873328058909495444334975114655549063249720495617631057572031874245243997961001300513101362881251642646541467566216418471740031857891367923431107308911790203560135760701742446161244397707823612390132206932904487297474667708365158321867415005381327784224688971310518664331206516637603593863201168061905577055537633677360364992716387876270201457406093693672211367026066251359512820184684258506560590497065152819145724007871945726278627820342047898093019876389613692251293554098133528921703415241378403497988370527212999054917321986991814063285400208883044316721908821428731628645291282887066115443721552877170570604616124348447368192516248043205025944481980530204535986716383404018559523989983031812399260867758441326518650885918827088514421998934133330104671880369209347348081232645725979472839249731922910513395615257747541668539314925713185740795246049806364284790354471628315103815173988609118640232034770300847089190756094694855291947481048264317280061195943077860015918935087735267314720428607580533653591482200744245764521762708826753820707439580086465928632736043303848285308853903855332348614871305843065583952661440745127334275983316524983354636338311850616828793114631386447872731549903896191810618225811994194258543856474840852403622495390802298101905113183569217747553051194324637039769564669265685730461935387485745474548531803797420197881185660590162228866272412460152679622021094012535010728078962481494326411253419325936549782831143489394327333139421162015929032280145593875719333520986496480401015368469256210183619123828239613847237761325489122341426463456792867754427053754130540233036035263170583560480037008121865434631069654336463838256630571872029280200897225456315873962517477987515356054666388335880482803738335843281234886361107822104373467807207148152456587769815724600397786335996139383096925464081053403190812702627052226018164361018089519728465893624253132229741126080320799891756070655845964271557907548948044677077363863257868119670264756034808085525933006104325450582318119445844371631130489034386859999641254958672328012330708972446485735538272452812683116142324976642281414157806727682979925482140939388726958044973071808687704736117992808583199418428491405610310555841404113412524512607651482794741704104508555513921174117909699949944138077122359611486542282513706246826158111267704327564719834230477914342600808913796656021750262931585150361150826736050413848790484905133275593843111446885863249713473516993295032625202150709018861820843089366420307862925612315011763286059087359702646725316162907318251933248352262736009240653208822499846306085714364841289204210934994061604517285057191437038278296329720531577065146776291030097029355798319414150197610941914453739920532379971545817364964168876652813969275610223555143453902384109425782195979757650614340946753732503697778300949396933922189195629933830643427842357993425928608221704765171398421314049866443720720332523788140277791693319134495238776754114249069486675919919115524635059068477480012114318640538800382974854180294512160755863961496844546963247293230634774004814278524154396815808981949969899661609677131701008847067152145047651867360230416267953917241882452727879680761316075541059208603633056503562463652855050253493849478608019628492062758037223414401417765687997128882287982851856003322488026022040865006856147528873435385875797540153930164571391471671391160042539309854941702496529294867154798015788742502152230116550540162661693692539273155844284794665714954330600878709559778016078241522501246825227935293632552928387677803748341379225975660508623451899520006550271647002585568931118574545455659515660038345490294841747607977013620826761777237291808944805985937922773779602164771924014259621421398152048641717356805328377078270519526709847397617420484043908676504757819931941243041177123618041199834460478895183606359631910158614297021460961506443641195117499315571630596201425150181128388605065882437056059202356631642243208507714451165052845415067097808080851672441966218691001993587878740388639996683623023734138001598565353767664950990981120035086276433367022305016868201908444769762114808566372599134247909095865960176282379704629611831845169982707258625668463208361346123275876520219495822276097730472791775307022937656401471570150603123068394019432703602830427629891416112019683710380141408360658819167165008669555364748658228361388799129393430801106411036742406503306803992584318621042791299946447585114169600357210438157957095528391813802687194266709630039430263970789169155406821880784658555589183142366431661016710970043339646209991971708490052667399949393124645885563312313000565256168576816471242098741078655616401684618105443606700332167319459199324804559567998844314002622600802628881188006088161891775688908776969324799915484922813295198723011775033753773984506158063112672102525281790176367584254556349673906995336472433972094889433283905354468728810249741810297092250546619901076403998845317693420655635133057775389193863669306991834605425655868705164472180005264501435736678480521635938716050416503207778590785511538467619550627020032108893492813556129597923638223179897023498575923081788821088015804957415400699801583142361538757925647242388065271363797533919781055008828224632453178217449526824788604797672702208962436493342699356518705273202494331071951221069318730689993098592688654567904468057095325225333473423398110323034834929517178574105226269026108740903170496491984283872607251986315802385098293436390674754854459924659801591397981418582800158623004657928930499141495824770952134245875818682387530291630027075762725947865821227819368622145724985158466580099763293854618850180801176478217411245219876559766971294143696106113612302343864027910528445943043133916663267112690598511400033628218370711265166997699353177108131047643498369142260604016608498278071054060236977815657846742243817272015351033515462368642825223680361745623868563711420294182888855363490410712215539677378212792938504001171148596659381275262256682730800334574549206704438125823923904766613486206013683813771293988827994751308475891995988301215387152574419412381447476226068834648858706639617162206593451235290457471618073014725679837379893842150101611995440452298353244439201356304245337965099464541409401494998025031536565597836490234188808696463603490112721627711519596821915331825959575551885212518211442269003344859271286227913506007307492776291453029668960179359667440503179328412171436131912330530510150770695249381710538279056954140700591999368475200255875436698833909225866367218550888340455501359261125896501916510656688648535225387182212843221884399211433135403492193025160357801967177079276486051857093141011025001336496825522387474808295736361392021889554180981081598463622614232871932724282534643030508717884192962595416173373901132147755094503249975052901677902751297694205366921037547465221635547109834317374178362148899395469037802172487094585186770930012509897916799608892358494351340358146933481155823397177111871069488870844726702308338279055819352376060712105984288779181524985526892916898169771532756305479326497428699889380770355624262738057395122369955283094631409213654957473184032227153342629154545066740409513258489251745894951453040542909925854317157799562581760030422099105501627694451657079935138142010860784796990853862871522191280775790778371590639687771159316980947819357536812939905863927717243432556756272342151545076411956132389217805472604221690864013707763682018315188952607119946758811062148170296556777942812437533627450340974634326975205472489671702387269156909914717782582977963643216463960975465090627229265120385884158666145053132529879199674915773930220784503882143864875273224940706693965405173279072485994435371203100135615211846813669839874064050008341057733642309562593482175302832142539877643154259022027570686612027858107329925902923992533804455918636701337810809181701161499325971154106538957803193456380395910615088491686184579554366213353862404529468229005466380181873403409584627731219911460708898848941094056348224778795961427666141965047354825879067952211675767220530116000295439261008669342189007742280071068070049356315167614419942532751651005774976056088498859079183494367859475921643977167294332870981630985883183324300422297953590981162371465213620389531664792862643382599634861925000395120572493802624931228823781014097594009428931662915167760327883521129852617756650413448593360913038295175844623203494974914165179908375706734492901224902529747574979742050002106663406003731866003308390615816816885072065325693182794964309658585406733281728826923008660251012331523873157425596492124889226549015883614419445399308078104363183239762732476535449006179002325229065282571464204281914919738887388806093573140020542097502020482802396957530453128838606753183180413618231714722120716858511620673458780848212762689022503174722516119261588243338767449952444434492732505531744736476097910021749893176437861458807350602081308059329158498808470348829171596127767256507414629365764148529834296644442209403194238593555813227361493776673378092377609835480829848834776365785714688656577506221151558342984932908100108088372100268085844151793490975148337058265267421349296237603497728123188032647729521086794670644515840940201571775430350624975038471658580078746878268495164463287848960878856056346450934896163169743105045165581323819513175905223706128682491544237639104590089628822641723836875903418320273003356617592635747925184879866743725876316742503710595986069001288762512476804118154783404812514751164897754250989522763124616991870608224785876468099785756699995690777785521839922485175041682536651172403481264582149129122640889832309992014062260099244291268883993005187894563801642518228414478270295351387046868187081518459838095851978514656128229212018856271178656781951865372510349741871729755268077300762982107262353653936518893638816222941960957234072662945228277096588212009569956941412021462076133412738736146790862165840981502021144402381041280424251250883937325527577117337986616772117322486188058793070661939091520797904347760947648229902630915645259852652351426082406577287674223134756799727233169989521419114425894731716176653550245770496344605597265572794815166192064124403378151092763885978383102009455257854519465550301246995381640601210343662742827682420934279626373395652395999817378249059327854481350431454370932564627625133649242512820576486994269314077980997512181283650077115840159571482838806660739273917501233904422474377532434136501025892293378909898783835997744621072578866963094511489842039592491140393655505817457506101458107717258837998857511634160292786691167461904365591738425550323512909380910134644272821236782228219560211903524789255642834093938631309207016144273343561768392015946096695071260787134006919955539723059270708621799610107543927526866927300423827447908075410338089761911335554236211607220959786761543017923621639938468989547957660767931657662555862328888341958281025006331151526846302872456080086024493507245030108230400783031595576151219819834046954989509826434061777922015202698717273136926158519899556374615974574751476743761878619405436331799448199218707421684180814768572994000075233007328760708771469685534860487027489184792709249535333983754626094433733032515199669313204947984860617843400446621737370155244778071837898583388336317051871475231701394053764483680409312689893186371509520310162182341717820195936661217314875571498709625015897265778525908426192975934981499327876012898297481801302513955401656740742216850342293182123512761948372907243591709809867936260493428885126511278718652820255574252494032278725612072481843951172165236478241369093618112853011844718845683244161791308969305441124717285732154355994917446499020686931075617421667334186609165302628815065613660124919531779983740755489097111398429642375934585615080318880945851714180064949364535973649030877678201116971542188813985546353470746080703026718628888167099094905487828127808372458317234986212227785960019744988804796058282310039384459545585269109729037178184648276479018986182113845519243079489398133256876630653378351331911274848188248662596501979226917582116118414287306394568957790733295371259982778148292520276396147454871187308323855969429534148144661681789463134733719964597750987783364244289405724721486331025051689631320360354172622130078192112932513759893682282761898438094232952668404869672405207574076058791075187428450213304735992945688679113077409644110920248046893065024931964522048240938556520005706710005859495886813562695510970268577213963715728820134124358408738944689728844164577395064088737288423942837489012346099566084287150267414187495425649479841848385871962820959477885446374521648256438103084109135495704911087255494677079761801565634611237266318594849791726944047395235607649191909852897356458928629738104459452802907338153775097668122498603398192996423582181648082577188518353374547684930803109595187299401366263822653454162234774772311308453961738397188217257178280423339056239809467587898119899705455896748544161972100059530059884503731622192443130376572006764511595596363774526764097092375628909773455008189308634710975487576532392383165983021315524343179231843380356936802680309074711077530643449857659333638389866129257243516335469244971824181245127687203135672398351564301811199850315776', -); -test( - macro, - '-1073741824', - '5678', - '28148898337860105994977487045818154315885187098857720123923019503536550068661096672354637598480165134022041984837084308868395452311053157640615896546050985553558586892645700423928507935726495168161698045415140497515602386527627319206488017355554288186119966734541348472345944365178980166309150611812365395806608007167010671798672218072170128957907439061754394300128594626814429645477396628406899347464530711061456854894379095840425674956808441653400041181506139011927908393244086335493121681302022622095101860620829845276309901056671871394201026397395171820873860291913878080280170380979892472296164150372296767377145551512657194585337453691634475382711660977481092241928982823053143625635560423178221937797712042117395219329456302241242041523769729459117196674726421874136677546084294826873902192894352596290458993633922997209073832114653500019746006542685067098597091796593235383026677957632827401939309333387666537839316094357314127534920705674404309028805143966637229018794907522055172849778130036761405770603918926933967928498088220730576083729725145992964744748428164200419463740275487586933626822729962824800560240761474558428430552602958126365583033236298214451648931511755996108094562356049299254807663118738845759260918867850503834415322452603653397365429159370357398957195114808416983753993622244836716555146831907033098694343145327951581021334647653286088313114479559741196437718942355964184601385362964266877652784804939052253222575619622416395426846679242522689602653790030499520892085577500725499201404182852867226125589028845844427853042309885329741850855526415975172436890910632693916719523636332471118794070682433535223602563287248795595868253883675189904726519119448801915261351526420699337492762857231988691678382926943587916545335155283702413750409505677924941689908432596377494319662783929468093868450608410231488451353317560659020100954006099204197631204922322164052615891958008133081819761014762487524836715828049458561031763108536694043217084348793653430411896364791299284106421121855831489687835195476115378899943269695006351002750960984964426672142770799033138424141023720291141340435508636127792984379054343612312021179919125313130082850457997100339188672577640528770106417201838870495993792046104170422555977835287298352499757882230600591394487250631375216854641145304444397854662472195749485109206617330733383898435103350307488437904097790795468490159665178407362104384319804361651012650220132889393331591715558188458831449467209968941910069520056730023723713589013657691484906132221013788386184219197754113246865122654385680123164873741763553852763331300981166654373006819001402186381647154946999554421873268375821628561307292124869782352332192908982894920263895011772173577732089662917292761688897717750366293629569204248484060863934466108937195948443800932184673102763342937824460121045896218443122360882698024688871403860910852370898051562718960418260546695613954738347691519692022893663002976632717861663007580356823097781646192222209252702435357691413104372734064147456843965665955652873096110765830684236182089087886565807972209217987226299585696168982138854941280194328335120626512261001331081248654357371396176501075032152655115462224365334172115688122152776903406306442312011439667376618560819888585728027310382981804901247107028140882078332241335878660689097272500434681089309886067525115434143986130726703706878433743992681042628744048964001570508077876948518135387246241479296880092162188798942915085422997374189631465329853471853984489176174861323479075234363120290867769013702739919612009426292832097099802965008680479851809369240814572285623180146280697670984531193650342503967101652478766807739947358226388629806728654389375296457819784548065774571293116718672409678564611844170365489608651048260596575158516893594390739121659741649999445353536303503061294401994598214548838049962733817701620624687363493549713852174836185700963467241090073849191740103227875513619343224494993071747822732607018496581774525356633102020037794640774098109121417106381829411247224212510736696706825452538654935037259956407630578146638429226378102600142256743099393349884190724617199388463752205790794440451940454605274720879574121263752007572801341506805655067825631941739793740936589208965150634092530408044204662895618653609322262359163887982449970383124228287512441583793977627962068395199273400344976325835945060297779883770211181669216457812349694314847337342309957623761533535923980598873005880875269599846465045392510668257169787436828598047252165951647190114307062027405441868359474835271630041202717715681530050858890904183091778324015733255757236109101580482580441967985828890176389397718041212941356619163330226370976268329734773630524413753494529257754781863229577908457569032718062086750844184472834347570239536056326155201810881038696860481717433476664625621082241586991225812173672952437197866259897373157784743844679729067516736518800101031672599250959815137720332161848205045025007611471141186707050967888154770682560924038751737207811193901992570725369435103201791686524505756647772640472180936813395743439078761800234463478180846516292693783004681080895964724137021083746991000603574423399483472642365997697739565793596648669477318614358267250383134596038860702874813526614432265002227880708968988988737493080405962374293053076826540765411717793130826541346297462776836630777435661531826481318792145062405811198530844655829858226912380798813160973881440163721569917634885574462693105998116146807054360746972666730885604323790569427284253076223964273715359978030815340692680006321945430455280199860142711370872816427712142263431097232719784998704069638989755157328661993441529401194894894909869599801115592481835323158814300011842131902588936147873994871847028405399169811064272549350520174591847212829792438106825404534383049157807382417071716548998177187833979248225968420666706416390190707768457675226123463626193995384720198209759936791376844052254490031460575054413862573529726918023653700705063568941702083630891996044965826722959248558923416329510449787545274111154340053470755669172749024818935495960038271562190088388398068258567446215438429638813416144469861387009096942616760208032476355018814040329680679835588802653484030011247737226987035720770688024054612187818344447061414642220551886870397419965104800759185726414865048332705445586347178339611571166805268460025130817411913319730985020314703929369141828244979458118746350794440972469365515773623521735815053404694400936400473790547133327308952286757212455297814986317480141532831981218157144776502263149001123086063793023408647358626440541879077132102385221082903921513070649860566861228278306927456359858970160082545255406851398044427390606896847739909856033659996912142151062203182419823681576029939545766232546225798544936003488100493795546219182495490312417078545669619133839724414087313221443223560772275469655787068013125130766170757522755288995196083208632760367504798374588838275982584188716625435557712975930208506356967363937122210773117642423759034688847074262569157860691733884420095472655868693804788798853460305074114676050174059869840188238249706756922707852403016294480987516418402809622158722332117912191322396344308046005168529470763240755288495911503467885568547110796443005962189288373077954193026536584426645858119360236884973893893358131236585957253729142968547596265350388138211504681166184873067638534159817198960647922530056737171392998222652344768890440903942958874497053450492657340534404950722261826476694600389620993991121412934627781512375531587430119694418600921042491946241808425609218148001707575278154030998716384895216667657329409014393641864525969281112155349965482510043869560234065512374117610382279304357796353832138535779361023572767566136655174688134341190085638519772716269105777397667544752112308407281551063186641110391181368268011784028035535033180997148034817583725977310854347328290703963033914233260949053078632664379976313477320469323833039980151301644772548530801510197665795747529811668583071320734297978242386191013538568847456151931045213697759408021294424885981327060102359352968094713641880316402184069434459849295665713894902493734764537578851014033582135990357328370745283459359873866508862907217949984436520976291123753201389817868962086019717213048013769401358081253749874316414733761110700403879731481327366128134414614015062028812312964841192776605772461602572237848579751596062846119891809475923058727329328606164325877380198476851130919034536367632484283364665496341548696606675798822283175208724674569561785917038686953070189275754779088627350245328334100342506484849574784279451309720531675563912478225243235012917746633631513142936777117922425886154614922105224375020527023628916774071542994620484847765716560515554737127344964768600124294594714592715001471003807303089010784319406981481509952504990850744144964515173603048334536187116309970688343136766612177268007668348523128350364138371524518071578343144952047467567938905941913593215582743180827679406961185115865886327377643057697587542832729089317101509237763970252435463768975389494971467359397430380888536860037432765702651569010253133830734119885207436369488914639018501744924571605683611573454465059643881519676195549227750953450440893566116496066519058403193663154983497437154203819963260242165229405208778700716060684766534758748916704009916082633385168020080405048885760694176577865460810820723540078488639369178154320241426505293354277745875660846622369288568123133292561261235256785531922213375332813363516492867281651918872071496312751377718845934838314667391677793894714490889453532680855202389134062406106528371557396680459568935062620695390268278489516786937751530412550577162465259150382716339278325770531171352930227692196632869620798522311181142960193953850924687498620070544338109430949277948159507329879155210160241450119748611369522285092212852813824570293032227779647026176189223572123084451190061745506256343264326562147424832561761153522386762221700802908370661822157393320044695725445229989991188431755677388407747966911115439215417944956153478651673184696643896949254524276369957021748106422271849652943735723075220056207411130072896924286451944171527022637264455020523596282445070630771934761579048221305568215457139994617211411085307850660300120371189812200827308583395539820589069061017861328862614076955537014856977190049697039330309651801348304720476087039640721882498623638587478814436784569169724978777030982272340221145046578552827191352546947143035275990939793413754422719012024556590240543018750125119716435776594606691472552962887122631806058400823255622524530384727573782908089505801222820975600456796411789607997183949633694399179379455469571927557602044778175978015388866388477893024649939309704230972907459714140113585529896807765412294459996359442449522528811461650087362667428633366378783346662514627715854569781388778149878012550900142410424032639113511075518363232906427235201384917342979688961765962102151375425532423292393037112830729746922825304316043663626837496782405688495899065655537216405612388901278198928051245924054604064320232470222166534446528962122067805923069489828996675843271638295113384222501506572543452808653339012061245181593399976731212745904191650313808438588548016446126120674226308029977326300360093713369252084641668517986682964017531891894972707847947894703397603382187246975964105692629345413266060528347071427038400660608705761598293765664181968080597125867912583308892435338706392483149232139991310577488003922853083026387762353546878968616781786702320683290245408076838623224983658193002922968799601420269991247101304606880493000638853120262969345837845575632652594203162116188047397369127024269086257206506049305152721408369249824397488170653226655559449775665832715337829296847540526548358288035657313921214610780153539347835226207976076946168876430114358524272233723646988855002094455275840302962666856844081766293291452137772048110790637266536704660807449519739327018721619044684676011960134044956848557708417750475836513642574721735576244762978717150713261667412716273664438107629604313094428969497371965141673202051915817445633979326940820989733688568069901109275117585286470786533583664247227757623461868123616550942380510328263064047797942151063136084100508835563648567547381317493212871351484118995384664462190866589013506449874230637279552571417457669151996916924270409859368135881488538365606716772030232698811184558469064636039865808366906057231656211951193116937650377253371722258540457313473237383533121791937083143459043495393649754643213866611930380243460376842178995100338772584518299046902703748625190488159098692582062884386819474282872980115522829156617371896871414855580179892864231619779226423289057203279126691229766046555328864768267364321578175263384079348441103395394618249025089795196954124821643685972538912223482310109199583464708899243992298931497078502095787511123559987214651034665741434614829428967428333802394306584477458469633359430987362811953453518400356509454058669839297226788372776367280158730642818372182875605917838630804855852420246178189659203437587382007313143987554772337361728272583250185719831437811387405182412368783988197961286391351624156213505940541094805465500164206288920572949611162162113050402038557325431333024558950631067367936611318153854810023507303764110973942973756954917700791836575148652033411756519651474800034591874142970228482783950150557217039469375536911748110596177461367744944289602462137274637274069720165611598466507748445243616769937369465337749866771841938628315536271843426900115553507410869477054081430287053781532316668174001761433261847823250273169400494042990324465308492795796008958697421991828212877366624163731089097149011406345956531300275914140023841183483485265586993192321555157485947797690816166469044557255832260658892615942710042684013595996265472441252752479660126933682227709014013002675508541470117652788250994783969626624171862885916722522793464173019418067898505345599496735174015977358875619968199716219533552738926637031051890494978338580207273924479022246491648620522810980430864243281885381172828258575698372088024439462447934958632586064921165575955786537269481483937723577490467737221720409666604585388204859474442997324805317238786488235195413838346371458154199153397286434670625395599277956221756084293733060481746683886469999967199808248860997598988465769993529406058206112180431991132713457015628241212019583216636957380809911503435447564199491276079636441647078944643232895303344668713941249744967791690209229128883799300994462500424955736495750871431874087322800538276593777301272661937240773237633293854544754939117218573431236413676044727898884777030673570034488739595200946297274238360844588881821427893674692289872719794617552712949171013259904704167278643987743105273334320443413659380726864695786527091362412670288650332875617283949480199386204263527209082186767929892326304543956845184355613429740397723016551419039154318260427281778819523773313505580722929854977110755322952416544942744038661223221183759746326498482668536001557277096914159111874312153517083375211013183593250726321533259140501285618966863802490518474254707070066879721010077181030496698210597599398932161175581512349806140123118157674998684530687977209656109669570842567739926631008487026917889091286956137809901880327742971892768270601951934752109320934869765144253043800750296293513146606452851069332013443570630554704382747449487485536496427956274784905893103873987768740604182379428000525642086938721704335210558279257980735181414966979314982367116027137599914079057701202907012346767620471172401133094852140947507709878927974690819147519376781258916641942410215263854181358354623399721795114283058445754664116386572155146227613060724837022655475289960130851827789796741182786701725436689175126115738951255328459283705735673792038332771275966384139356869886544157959423900159524818315186940605161679257955706740318466678645508179828694369147823415549800070451991820864586919375260489703149506500802123898113416334762997208596193606353010669216102269842389887094552624430998968131186451615404193377168588441373578538825728592377440448612020203066191898235515693843215931480135839738134274029581253133656093204899636776425859689995495873537309952309610072133005212939182414561325696226801098867717882906061991955075678342181331882095542089225604653021264291770836186590776579787363667069660002867694074402468427249988282181175359142889347493588450134025762040336381857980331092417620342654222801867511538594654519800002440876114049836951162662750192372554175899061991906290784393548297931360854697304660217388326454025385317464060515392460270735562634219706400179619734817004536958508273604064174329604012897892903752485301302318494759650641425275359084845658186671712160266483012379281979192335879671133821261746570768835599550683335228772226084199813244119457702012788644482031756025391901885339469726868198018085491130601667643050694626140156924968196367534431524629400571184798126488006430721476852350356305114701192180938078185596501406019121622406459154304979668159832955371593225491929291926247593357479974910111035479049436421729173094079651242582981533593842859642090017067207572422151856331378087765898272716477356116505494492527760323026755374093035374204268993047047278479131391553691647838872720204941034872333171803661000114147594995620657679606204475115479977905970944031101379807757313636918891924602682562733654982817525199083912568378542859662922923704736713241305728532013661459371953714893728644715593769353695924513479019412720277833400288463057686946226328790417273092172568136932546842785412317831005776620608067442091003848742510088030854918907472765326404312356309549410618389906172934527763348333129738356175599668898544090809612543931015042371463710234727490208128449271087498194070337397932790231655494664919249685556900070331820527927700923879904712981785622980056040860293852786608014416839444705794599237330395343625677231165730337929171123427679896358733212313404887778628928451238376200468283542093779290360409735166492249355597416078350393046779330842606201068250136256437582935384024422088122049514231186924987486386922255709770571686751402668463117086056087909722759647760111192263760999074221853531262551997916860630419344885774566813330605196726150306444911793623636315706197278750196545874376400639813558827027494733550174136896390860197943805543393966475454387001187325653165083037204644787454406449433808128377060422465144611339962742733002574791924410578469257487544550966959852204997217505241888127436816371252790120771208092431156862674023113879531236174297777218690854959431629046382150819392457019720688697146956554700635427875989653883984765265971447058319231040626981527727045895977255770905523050300664800936806107450054604610397698279501524594807393099512501267065236510023558743136424070008416804213522349576537960765214664370640100210453084611914479027691656864136391290070746628452999965623824867446732398214983818615825977108668636422441563513003831975312156804175525835009983723583171193533501782236576964961510324559549005090600262768394195823389119794969001830645368080861318691095973101919011548228483763812949239379397626324227241369442235711216350246757630159193695160367142155317905915084581982797609343509326821521911481105188403479863217823202421104691839244143919644602509537137465590142091458129871968626743829025365323860594221268369465152742323854658707635430807412874755583770885944383748932124569993895933658098650493753903580677968213439946116629845206367354440478040241152208147047847884378168346630550895572113154003279420848335567732550380587563785065372446579951171277007080376181880859588508139391302063701382117980942753440726346766393542850829543275168072355642671555135145516266084215524110054708924580833152698259832144444062702113296080126316162775848061402470651419774813974402257085656428945474157242235893836799387584558606751664927393493334857578593093025923033903249925802452928325559868490477635990253074330537697360009102142806389826773193350715830565814882983312166010168578638318113581909715614425901966904069916789058597977766919792967752743913284801516270290058840699327499070875081504588210302710253892626213023043634438957621385860258666727257127841683811540495720040171541891264342129606769050464645389966030356482089900989596777679522985065453229500095190697538100163379643439267150956032532346334280315920319424327896526362404605954432140230470878470882264003739306894517976684362812045551613042852192669772965726304705516783708137205632647644097851889002247751584331244400558203132964873335621281299717509879304619288476150109332057109283431502529001299150493028581031388664548216000769077942923394288901958119435090722574806233751271973249874552746532634460237024563407790213999716314923882457446186579151315812380783168745156472877906107226071419443707680584882191451197597628219448713650209673215406805360654332701478226078972457384732586255866424341772998013397576055716829423544245310237330356105227120287256517184974300181658805985949145921001482457911564043446049296375077517623765343452571128748736683475042340324486422980741771950961157672017460212375000343093255257855859277198951018128053837238080978550325407234199361789853768134577442527702115229975219525718789959045191073349653955820878281896398142889923003479767972076383190379298185808476922809215238314249626074164796021558425557210308754766801631838440222800550783465777015428522380797710835404996664778131573332303144318415473153348891859475225796874442481044462069842108821743637445608331048146899622744287339341798591369054634267513173964115613718772637770100806267461469864702974890809600842718955909073251470396524319777099477171768967587473664352749169748604394124828227185348843004451978265273237048553782545156365567001316028448768834710532422641102380518061679205162015773801588206664244457180510418277261829269152549407626154892937631258492719033672820382433466745502235228363223303303588498621164057491411472890847331713440771748363429011212793517034275378352451698293411530204186563333810558260562682373432930496010859284665817691922432863011084933699996961786462463745048747116470391194990030628015332701370191200450760857094229809065249035739502022559141983819390742711457191605178020143282612262800696462461845326859864102767722533666771388582815245205576926226742350534264234612616163494445478555919018674566723039443492562381116590300549213807725226129072939143803666847794403804034573197127632276495815673691688391776493042924568568460383396331869780349811708739849417094527914268223170364569506352973511214621114908992490959875119891914002201928543340360020016065452018805546551793704705117911784155214540116673803430547871133266630619513912440304683435504710983133680288052313077803153090031854465575440001750060605408581808515948034989770356122583873261823440265390089426304521951729320287328409207700383100123151876966524323583031388935239745236968350327632037316230013986711095983640286158845854503322070918325810361899675959053468566534714906108407864581052288055415062268431577178677164927351157974624449718170551912415953093539272615139170040559982269069144788537260760097258745113985468798064087385257717936930463104173511481167429308423462459460962543960069832104794421579983837186447051182599950438328122680458288337425520120137574451732030637289392014736022854027545044245408438033635786397265945453723332808703182454632061130743471916259007228432728541803309270197500946096444605584853072197436724505877621601824420511356681513957999452264448682983769699343994225768926072658063255358146106163505098999696551897853532925142643283744909834395865851620590128292004057571404777642678387685668703868806130918608461650915274491926100585166495256709407294941727457418325940432516141904359150294292748288413140787948986359366462074746713836604803390213998570822968145438813731705421355204337496672010739199285545674998128780178114493708777570231591229449657604145369857370727860129063567167048674305858866375066717347101711427057387739505853397158515841254093617246606188397586238440372102294736076889840979753873898793143249127390280808824855731104585046537769857330026521552755052259518063241611856641516275156726512986189523254888151278812592686063111446785816181415218227445732930445311585144011106096911480434585749527586559521968949018049836045512020729497009550286634399863511982953971128118927749655951377838933784252855345681378774160557470438174481259093651353914975509617330930104363369097847558011805545516823230152705422673827213285554606402424177535395875396349439257879147269990316570555566363631107873583908853302109598741956597344312363552802425107351220022316890426842094449146094093908848454232919398697089400054268720672186047939476318363153358024503206934420826394819801998769864748411198961176921530138349929123130568849437161791761185855627806231398428339981489989031517554700169925879901481360164293541370512956624760397990743413674286804847840458699624232365464488482648339370331099527120400687180993305421299234942550487704295774851922811662380580543940934664708380776764694636606791934436854233668907969931816983166891497973095943662588130142677860603610047337982454343702508574417771555874499100448295382819121831778816886809637030681464951442852987045658744822323017354193015398929135356947939839140306698866302482879187121853214437761579840307617080110522099185105281184531897202070221182174780155244891343031372681720259990267379551766505422208965641261232230697112205687652134593678103177579970271087834049239379072209949397401559634057001243257514833108769363888955683621052565237599125728261239118022575912894175987408009344745117251993238187747886278888586407900202408943623153890915214818002421838815923966958787049692850878031566893781773464813916368968542781397442084762131956466252849726966494397504673443856343004132647844309750841983656463183520640918053128194362601997214048354393807871873141019891406717655832279814142519576502831792032213339668060138693124678086147323694655541522077131244528253802212257686660195802890422055107005242552590674759212912277749904354621960351337529800061117715230093493340418671330565674438486174036271062712551650355860019081761842688678384695345181209344993751433013590249265630411818871254942665247341590902374863056013659912681932484952788985051121820811227358115551518694832616404366490062429428314767614403471928494311323127965060377740115015320155059011183773686991112928134219938238861942579094187368578097611857130108971701774055507254283957072531780780052063471633303056993180268811324636908498651379339810544455043184362168932560296467858789354987134340096423851366091213584971916411716002520202011394261611806506910717102336647860845390923567597373075328613344631519251210849547351316195902683921154170420914315410594227945953667999824864089646190094752335728668593487864038958074636801121239687073243551314746481125760217832551027923488199932464686665557283280854081782932546169494512387423905425853523327120893410410728807263709579745414874034347298836164872219912390950976376370657059966587673786130299383959548096535839326684422935261597602533478601891806412747416883653296136723782138835982528170764256084886875777597602961751140496094774423625070287438285325047835576946313794396636877736116310029692958421411875762799468941694906926445604500237069120930529645136448763546020507845697850054138785172342116922512128840514349291988431425294645753905990244686733733410385281678970312606729383537299554607797672907990394591796359202264492486835738568186180945133516707434961240365199176036679479430505970223502962244183781380913196804818441600413779120622805317818799661043554644440443705675483765184690435438142246744131509594661229983124492357221608279423279364533295157372659250705441584344308292111187384818184306257974181607894350319552740374868519341191483135283763350477192196383786427703966689423831363409240725954775713154895328593988160732590160054997239929414823714727974826024035217860503862168944433455274636864484104518503915125790030638481521747050177942348449246957290358941785218596751364264136325302012127514536979011995360578526074657060450670609980645092613668861127834866905147761396712739540375500705135160407800946104520181528985815263489926159911880084213321212768952431725838938601672188812651102720142982130177098645113732975494219793752073889227065759762609687893651335914924691660042543013159140121403093465609000857166311112970382917214818048185101582696684107408042143042945014390810480019118356949537099663818754715059209366691270390106111853299655506660134809491448878987832685380104145003045774887739416422218687559783784403589016023706079260754932303246949584114360114089506475306440896925694575031099223891967798964042809303692120072723649900326855730217433709980256225249076797838874125035531112686624813374295588750086023037138555024936706002261539102751472102701168353855022613318138841001365460254229596701129402640443828649877042750795516229713646589327314125732074265431844531268182493212072736085146019842646560868628969743149933436726067266230293919685332063288083684098369674426608064526187772953954892826318674314993417979569039823495888917128289051117477198054203719038275454185022748040457767103249901035731885373830510569953185345260681492090178619428435327767997448105824239005042284690390909455119903699725245439425773459997919739647511506450037183108134359259135471444850889646470849065205304395614092274471027676451130301998192579884981980383331004755985458519740718112147812962705310617555010259274607985705228893551463836617686124231748426817936045494654384933976330192421266623131254582148198369659191509650211552964003305770959771233149223935846202962723117218456932567654472669816733803847092639735772223976250554596127643265710435182191800068647592743527104298607516812775387380003886771219532565745981432787326595836968342349008462815121251789385562875463614831060974949395788692980727720786032761748572416672895325498419331366014371448904732847968285929375551256672205371236319010761607531035489389025830582442491033340311783200278400330573275229324139285691959682207033048166845240280073722049031522270750064451502205702838802314453492907125113196867357626343878692666709910893945062710386453480965984908868928331852364750709250772228522623061255781933618377709440518884675617168771208213362028807000568991336640250325843144807507365386167323430530383757386514877678566741578803351624259009223626044690394968507237740190193077024096179943106691946391713265839010095279092109535492123342892233114535396448888859072578357724845567858023341418639436957064116245382812764104096389861125288235620089839796959708844667271837724791853923155783350300837209697417124820469598763421016230556944144273578255047209140685603269167269642662464781417402044138800193094975708451596078152422131206951630446037496865433989208174418961047669463435692646401380865304211042807149992732461476622644253291650530746199877456840901162470871578154957110644808251440332624321213214254142116691052442993385768448482702905034603814208635913143936488381755746324155738630413306167461255699186732545319102104515653378661263778599973833109965924889965578020478609385756785428483645146480030473312941683848824619427905074772081786032588682913441577171034065769355232243310095044798628461790230246155642424833564029628986053338033122509288271156493098356126356548508541821956447282864237858810739664866039796867178105481303341995681155609103956708352541385258044674233021538488882256047867864755689487264233200251948632434367557411696985908027963208271722356561030717196004391383906360151985343954617673570213543813895091001157665808641175774156333012362213294444222039514585400935738306777816189406291014204426171617177142780096988819473458459887462124401026378144063946634234937478266777216707400466276855252285387625315985860983345555708831049494034215551909856922269254608364369447708759473754568912693844211940774320914411502602340550200223765229096489309938496752456919270003385668591424974211318904032650304107631242385298382914407054967999534142551977432253069569518207821850880260921220586532594795739409805616209429954329604196061909860469006839106493724703640208556506345365382655886368345271812409551029573250054776291206004935504682461872164043783174653715005083196118181680022375451553428281102240058446959296955227821993514685348539842528436786789259135360096841258032925547689013177486729459318947085055431774319351281557368747716393992737693541108230965435660525692480717964031924241664724388845193264670242141356326509471299306016413454162671571381531753658371397956451669887495352630248631157664761965740380082152914081452732415621628375282370868233950168887184531780269004718739099708910660900090201255053397723188285495192828542314394947620483330304687649237120551521237832434525777447953092911201834715259217245519280176880179885337857732604864405057483694102485505256429471768330406332418310295400408419432432940963470934061812695129941627390018523946146290853393677169776503143927133001591974399819542958121940959619409121036386106497029519948200613092346225268222984335952952211870862507812271819553684431413604081858429624556100379315289298469968791166103454024434690367788140204407001004669551371707738311759495150757612726027877731029702306303481073738582347882595922394576946021621186829772467105355572710477124514971906584017529758090618910480942805666401277004037346463984772905375809948144463853491825056157101189240572959686371293182284160480818545596306440473897493917768183499944319205900645179847295735484551449225229261645269968906429508149998138016622129015857135775809846587750617782253958791389940037001143544832241065010658361305409557331037342515976928994199426578267553413249193592307251067458813978078291350669052525953950112448480003624625092254818432528874435095079342421604083110240934432048412320452642368267544141594660095901465974593532827701312505826582575011497446990637441740616567155660949020249228616684830320354314707270016757257201734175571113012610174151094479944413698938350396910278103547991209738636261259356477694949886515282971734718664058449032335352583037449070952755124611382023143401658303667877578519296296527334023449638130475844470991345333618511394777165597830452951636561490737471919475646861928324359374967832521186421053437409487480470461954966554705773855950738645971740817037823241512416093275245345820788368984925734262305322634441156380026457447197182213483013402950350246138649304465256498219312777160525099167726998120704957725403800575045490582281116114994378718817183032439438208226746360325766986720916774835054649560456316259175632867603045141112409889552612372622765216331693789078480741915298207295555848306263838407170482811223590205255671667422964415870641962144241361255726603720198161298973619057586912427934170325155184902616599199143436064767051953442782556327831427853713857411098088989225849680427893366785692117780023838758363675203567047751767933295657237755027185531691483903456972232893961200648229859233228579781125136864313569508852945160079164443773633476981446295403950535828103167719751726784350601629663178850550389728335502140195564260831725188380387307159781158911038797569919167004945795140577149749170901864075423619030300911182620763077511907189012876305215130787412613925421216160360751332520310931569700798283937005333531483817004253266974122408656002783119309246945216360789948717449837131577677922669864583629782440739388630470181967026233829667565773873102079102987908580164142215769036178315875089633501680791005716918960107298151922455023391131279507844863316483788898011992028922935242614044660187284736254085622682834529882590617733762378374747202648059522912576707100472276664571181081828497963723051983320823361890551873317486588183597041968899647405888812769324885665206175649824784331136051942330320955997813290150374169555690598341682414758358005345032263076159951017735855589303019820663937187166738223420643133072273883753060709742405287892650826450075887658352906610591407918098029363694819236430463321771822021175150958737396912367945520530338753965695796553479705539515710152369148055346684802318377472296952509107769076222779644096906583067893946837767792663232669048207226484434581284994990609048194589647870843829686890438595763980976771026423557663089024892131001305788227380520948975891163833166047675665100986690807244435880890604269549826217825523138658314976275936944089547382635813595490748259777205666498345149897846304836074875260873003896477439834091090867636750095043118229481634887286877880618142748512183455056884216089061037969239651354971148328982756655369145281624013806819439797157064508394810115585016956024709722310092594188732446592100117958881002635994259708482658147888287467568985217077229723202214489094759132716574769640290873606782618033552995230016319587100167955339887968922205047010011389063615635451818872082020951265796370440182994059107927214391413065859873935945939866806647249901995379512541102421318646178957796346016199498645184725987268058320037711898529749988840623868356343243014613790813886854385271790938818469590098025543064598325239352259049625770848587072012496241155997192163530260660709931448706553743372471711358996628745306173083673087048269342745699715075360398067471245252833958545215646060059000665959497705967713122400751567337815731755845116818658270900111989799269094832164568929732353735566608022923214255026340432900765571233256796055879631067021720614281128969644791733928937006346217595371531877564139995663256573848449072798997910083484619753891994751816910829518221088342707669386410746832407567737548811686421700767615090296347645343686568901979295358016279996388099431659129877979491614467543895195928365541638941655634949364961607403740873577172023120167622227906175594503905136634860440145452083845427286042679614121738077233331267751337860968115995259442772881335900849426085481298429404772477164459261951878223611738672150293049444078426200516395163393367687521048654041265810615151381063263935652729823202648067856665037222449646098366399836365825764298326138044202049679510635928460540367467980830027780617634593554463824431146300071372144602579306617234168891833603527083083269873328058909495444334975114655549063249720495617631057572031874245243997961001300513101362881251642646541467566216418471740031857891367923431107308911790203560135760701742446161244397707823612390132206932904487297474667708365158321867415005381327784224688971310518664331206516637603593863201168061905577055537633677360364992716387876270201457406093693672211367026066251359512820184684258506560590497065152819145724007871945726278627820342047898093019876389613692251293554098133528921703415241378403497988370527212999054917321986991814063285400208883044316721908821428731628645291282887066115443721552877170570604616124348447368192516248043205025944481980530204535986716383404018559523989983031812399260867758441326518650885918827088514421998934133330104671880369209347348081232645725979472839249731922910513395615257747541668539314925713185740795246049806364284790354471628315103815173988609118640232034770300847089190756094694855291947481048264317280061195943077860015918935087735267314720428607580533653591482200744245764521762708826753820707439580086465928632736043303848285308853903855332348614871305843065583952661440745127334275983316524983354636338311850616828793114631386447872731549903896191810618225811994194258543856474840852403622495390802298101905113183569217747553051194324637039769564669265685730461935387485745474548531803797420197881185660590162228866272412460152679622021094012535010728078962481494326411253419325936549782831143489394327333139421162015929032280145593875719333520986496480401015368469256210183619123828239613847237761325489122341426463456792867754427053754130540233036035263170583560480037008121865434631069654336463838256630571872029280200897225456315873962517477987515356054666388335880482803738335843281234886361107822104373467807207148152456587769815724600397786335996139383096925464081053403190812702627052226018164361018089519728465893624253132229741126080320799891756070655845964271557907548948044677077363863257868119670264756034808085525933006104325450582318119445844371631130489034386859999641254958672328012330708972446485735538272452812683116142324976642281414157806727682979925482140939388726958044973071808687704736117992808583199418428491405610310555841404113412524512607651482794741704104508555513921174117909699949944138077122359611486542282513706246826158111267704327564719834230477914342600808913796656021750262931585150361150826736050413848790484905133275593843111446885863249713473516993295032625202150709018861820843089366420307862925612315011763286059087359702646725316162907318251933248352262736009240653208822499846306085714364841289204210934994061604517285057191437038278296329720531577065146776291030097029355798319414150197610941914453739920532379971545817364964168876652813969275610223555143453902384109425782195979757650614340946753732503697778300949396933922189195629933830643427842357993425928608221704765171398421314049866443720720332523788140277791693319134495238776754114249069486675919919115524635059068477480012114318640538800382974854180294512160755863961496844546963247293230634774004814278524154396815808981949969899661609677131701008847067152145047651867360230416267953917241882452727879680761316075541059208603633056503562463652855050253493849478608019628492062758037223414401417765687997128882287982851856003322488026022040865006856147528873435385875797540153930164571391471671391160042539309854941702496529294867154798015788742502152230116550540162661693692539273155844284794665714954330600878709559778016078241522501246825227935293632552928387677803748341379225975660508623451899520006550271647002585568931118574545455659515660038345490294841747607977013620826761777237291808944805985937922773779602164771924014259621421398152048641717356805328377078270519526709847397617420484043908676504757819931941243041177123618041199834460478895183606359631910158614297021460961506443641195117499315571630596201425150181128388605065882437056059202356631642243208507714451165052845415067097808080851672441966218691001993587878740388639996683623023734138001598565353767664950990981120035086276433367022305016868201908444769762114808566372599134247909095865960176282379704629611831845169982707258625668463208361346123275876520219495822276097730472791775307022937656401471570150603123068394019432703602830427629891416112019683710380141408360658819167165008669555364748658228361388799129393430801106411036742406503306803992584318621042791299946447585114169600357210438157957095528391813802687194266709630039430263970789169155406821880784658555589183142366431661016710970043339646209991971708490052667399949393124645885563312313000565256168576816471242098741078655616401684618105443606700332167319459199324804559567998844314002622600802628881188006088161891775688908776969324799915484922813295198723011775033753773984506158063112672102525281790176367584254556349673906995336472433972094889433283905354468728810249741810297092250546619901076403998845317693420655635133057775389193863669306991834605425655868705164472180005264501435736678480521635938716050416503207778590785511538467619550627020032108893492813556129597923638223179897023498575923081788821088015804957415400699801583142361538757925647242388065271363797533919781055008828224632453178217449526824788604797672702208962436493342699356518705273202494331071951221069318730689993098592688654567904468057095325225333473423398110323034834929517178574105226269026108740903170496491984283872607251986315802385098293436390674754854459924659801591397981418582800158623004657928930499141495824770952134245875818682387530291630027075762725947865821227819368622145724985158466580099763293854618850180801176478217411245219876559766971294143696106113612302343864027910528445943043133916663267112690598511400033628218370711265166997699353177108131047643498369142260604016608498278071054060236977815657846742243817272015351033515462368642825223680361745623868563711420294182888855363490410712215539677378212792938504001171148596659381275262256682730800334574549206704438125823923904766613486206013683813771293988827994751308475891995988301215387152574419412381447476226068834648858706639617162206593451235290457471618073014725679837379893842150101611995440452298353244439201356304245337965099464541409401494998025031536565597836490234188808696463603490112721627711519596821915331825959575551885212518211442269003344859271286227913506007307492776291453029668960179359667440503179328412171436131912330530510150770695249381710538279056954140700591999368475200255875436698833909225866367218550888340455501359261125896501916510656688648535225387182212843221884399211433135403492193025160357801967177079276486051857093141011025001336496825522387474808295736361392021889554180981081598463622614232871932724282534643030508717884192962595416173373901132147755094503249975052901677902751297694205366921037547465221635547109834317374178362148899395469037802172487094585186770930012509897916799608892358494351340358146933481155823397177111871069488870844726702308338279055819352376060712105984288779181524985526892916898169771532756305479326497428699889380770355624262738057395122369955283094631409213654957473184032227153342629154545066740409513258489251745894951453040542909925854317157799562581760030422099105501627694451657079935138142010860784796990853862871522191280775790778371590639687771159316980947819357536812939905863927717243432556756272342151545076411956132389217805472604221690864013707763682018315188952607119946758811062148170296556777942812437533627450340974634326975205472489671702387269156909914717782582977963643216463960975465090627229265120385884158666145053132529879199674915773930220784503882143864875273224940706693965405173279072485994435371203100135615211846813669839874064050008341057733642309562593482175302832142539877643154259022027570686612027858107329925902923992533804455918636701337810809181701161499325971154106538957803193456380395910615088491686184579554366213353862404529468229005466380181873403409584627731219911460708898848941094056348224778795961427666141965047354825879067952211675767220530116000295439261008669342189007742280071068070049356315167614419942532751651005774976056088498859079183494367859475921643977167294332870981630985883183324300422297953590981162371465213620389531664792862643382599634861925000395120572493802624931228823781014097594009428931662915167760327883521129852617756650413448593360913038295175844623203494974914165179908375706734492901224902529747574979742050002106663406003731866003308390615816816885072065325693182794964309658585406733281728826923008660251012331523873157425596492124889226549015883614419445399308078104363183239762732476535449006179002325229065282571464204281914919738887388806093573140020542097502020482802396957530453128838606753183180413618231714722120716858511620673458780848212762689022503174722516119261588243338767449952444434492732505531744736476097910021749893176437861458807350602081308059329158498808470348829171596127767256507414629365764148529834296644442209403194238593555813227361493776673378092377609835480829848834776365785714688656577506221151558342984932908100108088372100268085844151793490975148337058265267421349296237603497728123188032647729521086794670644515840940201571775430350624975038471658580078746878268495164463287848960878856056346450934896163169743105045165581323819513175905223706128682491544237639104590089628822641723836875903418320273003356617592635747925184879866743725876316742503710595986069001288762512476804118154783404812514751164897754250989522763124616991870608224785876468099785756699995690777785521839922485175041682536651172403481264582149129122640889832309992014062260099244291268883993005187894563801642518228414478270295351387046868187081518459838095851978514656128229212018856271178656781951865372510349741871729755268077300762982107262353653936518893638816222941960957234072662945228277096588212009569956941412021462076133412738736146790862165840981502021144402381041280424251250883937325527577117337986616772117322486188058793070661939091520797904347760947648229902630915645259852652351426082406577287674223134756799727233169989521419114425894731716176653550245770496344605597265572794815166192064124403378151092763885978383102009455257854519465550301246995381640601210343662742827682420934279626373395652395999817378249059327854481350431454370932564627625133649242512820576486994269314077980997512181283650077115840159571482838806660739273917501233904422474377532434136501025892293378909898783835997744621072578866963094511489842039592491140393655505817457506101458107717258837998857511634160292786691167461904365591738425550323512909380910134644272821236782228219560211903524789255642834093938631309207016144273343561768392015946096695071260787134006919955539723059270708621799610107543927526866927300423827447908075410338089761911335554236211607220959786761543017923621639938468989547957660767931657662555862328888341958281025006331151526846302872456080086024493507245030108230400783031595576151219819834046954989509826434061777922015202698717273136926158519899556374615974574751476743761878619405436331799448199218707421684180814768572994000075233007328760708771469685534860487027489184792709249535333983754626094433733032515199669313204947984860617843400446621737370155244778071837898583388336317051871475231701394053764483680409312689893186371509520310162182341717820195936661217314875571498709625015897265778525908426192975934981499327876012898297481801302513955401656740742216850342293182123512761948372907243591709809867936260493428885126511278718652820255574252494032278725612072481843951172165236478241369093618112853011844718845683244161791308969305441124717285732154355994917446499020686931075617421667334186609165302628815065613660124919531779983740755489097111398429642375934585615080318880945851714180064949364535973649030877678201116971542188813985546353470746080703026718628888167099094905487828127808372458317234986212227785960019744988804796058282310039384459545585269109729037178184648276479018986182113845519243079489398133256876630653378351331911274848188248662596501979226917582116118414287306394568957790733295371259982778148292520276396147454871187308323855969429534148144661681789463134733719964597750987783364244289405724721486331025051689631320360354172622130078192112932513759893682282761898438094232952668404869672405207574076058791075187428450213304735992945688679113077409644110920248046893065024931964522048240938556520005706710005859495886813562695510970268577213963715728820134124358408738944689728844164577395064088737288423942837489012346099566084287150267414187495425649479841848385871962820959477885446374521648256438103084109135495704911087255494677079761801565634611237266318594849791726944047395235607649191909852897356458928629738104459452802907338153775097668122498603398192996423582181648082577188518353374547684930803109595187299401366263822653454162234774772311308453961738397188217257178280423339056239809467587898119899705455896748544161972100059530059884503731622192443130376572006764511595596363774526764097092375628909773455008189308634710975487576532392383165983021315524343179231843380356936802680309074711077530643449857659333638389866129257243516335469244971824181245127687203135672398351564301811199850315776', -); -test(macro, '51676101935731', '0', '1'); -test(macro, '-51676101935731', '0', '1'); -test(macro, '51676101935731', '1', '51676101935731'); -test(macro, '-51676101935731', '1', '-51676101935731'); -test( - macro, - '51676101935731', - '3', - '137996870875659993023030601717979081222891', -); -test( - macro, - '-51676101935731', - '3', - '-137996870875659993023030601717979081222891', -); -test( - macro, - '51676101935731', - '7', - '984075056308295134728924301613024127189711420386591471717924665943308236455086452620716372586011', -); -test( - macro, - '-51676101935731', - '7', - '-984075056308295134728924301613024127189711420386591471717924665943308236455086452620716372586011', -); -test( - macro, - '51676101935731', - '9', - '2627893230921823604806622170301238567075367550796577156262388588821361374710043228118573957775035487173592314570495647093971', -); -test( - macro, - '-51676101935731', - '9', - '-2627893230921823604806622170301238567075367550796577156262388588821361374710043228118573957775035487173592314570495647093971', -); -test( - macro, - '51676101935731', - '11', - '7017577357393414069660702103810709794111639796715410950809665871416156554402226865497006924403635139554341331701687118636537520158096482611987596307531', -); -test( - macro, - '-51676101935731', - '11', - '-7017577357393414069660702103810709794111639796715410950809665871416156554402226865497006924403635139554341331701687118636537520158096482611987596307531', -); -test( - macro, - '51676101935731', - '17', - '133636682614207953928748833850325980733386921434321011865528143804403832298431098135380464855882180500142250108938933037601304663280771463018430933459134652554649625077355814284452093494072216581175752265212265439075492239388118741811', -); -test( - macro, - '-51676101935731', - '17', - '-133636682614207953928748833850325980733386921434321011865528143804403832298431098135380464855882180500142250108938933037601304663280771463018430933459134652554649625077355814284452093494072216581175752265212265439075492239388118741811', -); -test( - macro, - '51676101935731', - '22', - '49246391967000732783507102143055596698062541496879424569521554617507032914914454137461679988278650797334594157775094696043090861230475376194375316521688783968615512922433798610465048085885649879473134467691860598529596944970613815754223330498710317737303087189649634312376508482500446153530865527315961', -); -test( - macro, - '-51676101935731', - '22', - '49246391967000732783507102143055596698062541496879424569521554617507032914914454137461679988278650797334594157775094696043090861230475376194375316521688783968615512922433798610465048085885649879473134467691860598529596944970613815754223330498710317737303087189649634312376508482500446153530865527315961', -); -test( - macro, - '51676101935731', - '24', - '131508525968430457729352665685966579498949401101062972415020772435432844742532822029053861945108891212811973673289631212054118103889130601356311755368990255559386038292351210647400499145803946225847945057201109848257891860310495954779113656786197608913596258321184172812660728137089758780590575321178923726688892590199481699405921', -); -test( - macro, - '-51676101935731', - '24', - '131508525968430457729352665685966579498949401101062972415020772435432844742532822029053861945108891212811973673289631212054118103889130601356311755368990255559386038292351210647400499145803946225847945057201109848257891860310495954779113656786197608913596258321184172812660728137089758780590575321178923726688892590199481699405921', -); -test( - macro, - '51676101935731', - '27', - '18147765077113876911302828311188973140568509988864514321318950227295742688037464926647103633287511191936183601316483196589434477469945433422640225075158236638385320220491900270340310290917462596573996639230442725247179360636496672307042746911978502976958429476017502296658675079086344867081673179346751656568649207060344721536870325119505423628920139126455081000886137611', -); -test( - macro, - '-51676101935731', - '27', - '-18147765077113876911302828311188973140568509988864514321318950227295742688037464926647103633287511191936183601316483196589434477469945433422640225075158236638385320220491900270340310290917462596573996639230442725247179360636496672307042746911978502976958429476017502296658675079086344867081673179346751656568649207060344721536870325119505423628920139126455081000886137611', -); -test( - macro, - '51676101935731', - '29', - '48462145947906619312350693780921922040423061718629753751200616100444307162466564390962728897898203939025561944853542772935543250149935950441420073115202129685015069493947975962419875285445358970303515733347425597885530386757928989657327135942306712537754584065199854414524879131878269249276451508346267360984001689290919795053747833808800804304207297975041606946075388009728565472578248141445621571', -); -test( - macro, - '-51676101935731', - '29', - '-48462145947906619312350693780921922040423061718629753751200616100444307162466564390962728897898203939025561944853542772935543250149935950441420073115202129685015069493947975962419875285445358970303515733347425597885530386757928989657327135942306712537754584065199854414524879131878269249276451508346267360984001689290919795053747833808800804304207297975041606946075388009728565472578248141445621571', -); -test( - macro, - '51676101935731', - '1234', - '158324042278377313925303658781524871614898748673989982468397056801513262659968003390685627949704258611320160536626820028889962136800384219988465148278031573450509106387239568116863743081510112367947744316933204800345240432247765898932280221777380025886378197115150023156888075592661959629600638394821303250632425654059380834813385429980578207356778680885151122557244823021413539337390766886386023683774012622502869673441546686299110751211243381992933447873142802156806866162053801684285033755846634081232710212999710106103508622919082329128210235683603138941762803368001142605648619008990425285579947768914521571612053244135664040468206471912029995462838737725025722037780961352097655556940963081046269689524507058695919021145649857025466601631832206335908714770892218847010797983061128886699295778458908026100799624592058868604507879625795059341788256071347226801293035257896677449812101619168410274645467937698072600485973695316558617078697826464067560685120905997944243512191651052772680067894809080799438615784588878741144055738313954890688400429893361117159935248693696396627137695916187850803885204391372040167551605832355933919492494203181745050697494649819656173693467296980021705890813609884785517604611253528819574733690077002295678785343609499106604869068180574890180024198538158171783307883610859971770618231149618665209136576442748277494550519027415619444394250603341387572991349015145136953473904476495181684188774626834750617818472938996987683214283309439924103189995535468277303822947364785117218431807701765196665481474819809014739483414625184823572545931155707708389629548395519118401609231979035135464875664607469901894710597734005254396315648601392217921679551086702353136339520705796471641431879666411557946264230276753464580691493861591875142232836387168105624036383384304939623273671227663421382364346405035511757097384178188343056871496957008430970719845337135563975023000121180003910787544177586770185372939136428614465285828597849364223527930973569574297409565906234014152140399051264908028037854285065695691516894764306741200445258651130079726633055035454707400264143396200125546607001935250751700196849819373198663005937089255142210331719097533030824267705354302579492394252054624819810635910772930818973501002381509037985751201262426338686073137167777790210884526513502529974672754561818929196841359487503116806374857279102032619499735463547437917873852231188627313193995709278200744560332235099781528906681845236757294232939540840501710793402651215365559223726732901232304332589555728463490815104762256836437378942770237781171541242665277050803400441103245698206078424116844542305855433985742997194723110120559706402361837255518215431654983113821256777518566578007246638117303300813282471059695780960937192471342720483093022397272639388862609111334563922759362521380716417092672083635856258692643635802385292897608203124530755925272475970099885482900647144339393451148660375139200420049453396533433237007433364495099843124339385777936467767832834097532992680258633382504023134945528051080162773976630522027388364871860673885601145463850278499705365785873574057496070902362590690329163430582931012722823339673749687448879341947128478168108948119496075857326371621272158040967590212259705607234109590371908430237962275467620195565091210074536958791316104893306127805978301999920209853998214358942944312450676988966603743669909381196873223441882204064076740792698565324619823892332131678341250397203399047128712276865053621353068705821363484016988865027435388961661676827059827201761588689945100159628259798636637114887843908407692866645165407556635346270470882762478678318748969509612841224405192451391751679491699159481451781132856593225478798461105500650078302736522399508859604061090018430782371103406780095793970327199466172644652070455424994736654900037878682536762730674188797509195743679412902718668219372565376042254451189328399930173247680691539750124735316777490200616789118915166628770213641217493993403209087930983866118739242363270739641673142095457606027878252411764298206871520866755170134693811548956683565065642028688637479006103660374113920609307215137832756503673451270374534771904030303590041498702749217222999004759003357602091152034722604948534571885348781516114248627593361371966083846505528180094830427733303359954633778102329930129088225944419675472344592340947633203426100068451070062748913329381430835928677944810202891752490896892126540425812163639252121628049481160408647454747378481685454865724857469700081698360897592285719829250458270700796398492146131941376976151305748227248367443062739785389412243719697174747793918305844429511703312893537458763839752259611393771379620065253777610623533134188428935625387641575540926717563311541862831476044794518109895950317069739650023453809779525953218406298837457049987396316333779299477763690386671808883206738746473461031527288187096362547392481733828192703691811275652684091878491782335647464304090599317117223713118270154362644379673966875526023251794033742058280817715606901272370694953811351940143399555738367916981834656631234106492867315013462578161451861851222727927484978513364472656866134489436147990440601567348247368143427992571647342689311925448855042244915814046156681924587686088299035248256687768173138305271776131448783660494290452155267493170780209088260573726810563594020164626876894543544776117725891695956937655222596747253562951739070430520784626532005865397891770599810947915766027843984225809506465099491726669647675836542704925940472862292458103317707001664851510631632483368333519166567495603149523436655902927352564469259379326902513957700266530203095978420437621994997883942015182535685373952581674954526368979534376580657019506688748132488994259649481602782027268796321496293234619922858621277867678825491370164615078298949196552511455124851536133799925473329405250474593913924912551804901403390831450711740501508314471344016110507593788337973582789067759260879539344607152262224215382333489330153894940009834586533901180095846730855291500939551837669345284373711184756405666180209071363312585030301685774779292178313316406602373255646327348281134955048336338727490454877812787617492427362023670761057324483134159661968729511955276617697409266496712072219753283729016198339234913450671856683431220026361896256233229763483100008432120294903953687352831503401656888244700073250811277269623445793796563405171676855616924791868998241051758600745245397052440394156686933344580101379617401437696817984459028218921041977399588148719347919096302390719921087960315851964586936208155974897770793714626502400010799023394074901830556484876564044019461148646704484745692998552151910298131789877533559303845220138187074792203552289300587811989652204054350569388609355366352079539773210398305281469358542324938107197041217218595947653381833043778081164511742732935680326233241131641428417476654793443376871059887960714321380031930204997295874730540407682218645410154547363569726463842192519870398072169036254497989626119475346195254734474880846366685010394270094459050207503355330015842707449098167167948112211428609169028462215066248890291708247636295839908593225052889285032180148515349175791108452276764174092593481970638911935180284154383805459092545680971655577656000718287895404174650864444487637275330486618588627887913198091137313600079403324248364944559239416972594744134017813214704259974060248545972845617599594908395004708799034010940349453335426733467851508855124434739037794790113915284799938282633515926124039300489403274166512016144314450767050504019696951073496152282334971591755531534918527658116356766005810018865387036502835277104484897521399845192578397217389066546258015343671781439530194484186424336132467982739290593716534087153430243415506786743021432802857971661907233602499902567387941782564166386342672410874812089691799529503443000488843767817702945159240603649832489196454539442081235188719658702765814391130506231315568011273524165094617918503831867012569022324402969461007866076655261544955353941677901200948344001405059672259174534803855786509381749106901797774448058734457124149367609992922544375497404889378084258630248150919968340293441413856717836345219286003180349374207341129088557493435423239964391016550727225456481162350628594289395184071310300179756589174536625319150383798785373066376691658528761564820534618453895379491843182268871603588369275077855410841475816916672608469381494765293579645251398504292250764825206147001031380918536905798997324364665442675157885496504116737588881183129820652811664336805124175412738167561167253417906013601281586840716605226757932860034772050966241473341886952885772364434302876604236880399216981777408544673261443252042495657687251968928902101306694702738065723310727043271924859335698667952366365883749591917139742105118753077931026478251365210693917236917159155967697763044367201149926693443948539699579913602708706722711432838021246855315885038460450756859122906583939756348652891700451630407133090901515174232078445554725093208016341426376158610309666955884603433032223065165852248565738599860177261970078536206931153975848971431287001632805433404957578207772941765098112799264026267445074698665059729145576674938934608054531809788773719961126616990316210326818453980080321988760982334379271531791369297582640574651520702873403331880456606970974892343433336446248718921846000086640006680764293893307983492389270379130633842798650803348158429980408513212973097444321318667389109611955924135884714672638284288772566998005211664934734547822982660638379730254204195834897865492728459422863551908452096176425627547324850175172784662840168613264736639310780854731722004175205456083684478275667370139311794044918888433282117891203786131932421524201946630405904103705604352951344094166243627023050380063835187325378976884921927883069821201742308833558695341662261151498959733037164633952848288492505505197499859566019268823236129754425893906449877905855504081397182635782376853937776733107007960687910397361651834577002303143087866448497366428780519572180278375369679225575668491891544012967905489645541044473614128660244742603437904495496004459121145000204660640788761369040236852666481807337266045681038338455762663801212249239773760849573135339910245942472057741897143798714888511942994856977741299663716890747044572844810556164536063761986767836402140711391146026318746472684683736517628592458110701485687350372867786408697530159165580262455780381579264667555447984957739182385760977780225061084004806106049112388374908757400568145385583888461889658540915335972493538978104321154519123769320702224831927212063777898343511469299130626487155185875277476235831577797403193411734525969805530291201270196761046479780099300862785898294670735985568048204412072182439508001601125949813004653714414454010147969834379658692070731355494945150892188648577526049837658909733330381505835664398796899002686901365148731947521928717964471059772305071463737374874406416651278356408918633301449776192835629215568915731374744480004571009884843731735476903477562446584279323243628329043070154171111030416954029897290949469967976161666719811003325138761099757410714225754805089491754951146648993331480859725730046281101542321018226211161218032808157377990274486574775247295293446271999216933362071677144037958846938035870357017121382946099997460180182187217217820316108638070949402341509021488404838623964004697749860791584971181351855741948571771355034517420282039098468418778809673122690363103723019689210278682644736222976118509622284207375261241784528558945409584782281603428222482076644739841708067658443152632760947992710970595496336571116020117920899681972595692145247586867390993275854296221489381933037318139292360281964291441764499495760508673368168379423816602792242572983422830229937308653522404847350290384106194221461480553536360110558204157177392001034747822538121785134044265222471502565785788526018168367500851854368644667069187608053339694123467967831636497181955436837184144618605482450617195904135269079047201637007435156663520051298601126128369945944529481020638321516198582623214543218826748293953436296165935049635820455993901167665818294125029492356440701038244166842363513621908344320848585686797979439878826598478637355993217261347336958935084397089381198078856022083300330117262456180993049915148012467532881768933263035840131555093550707791000541507741393303110968532024193273602133335942404611643551498070626757534418055263575760282736414364452938769778575091320674432871296496661879381856396240520797406048137637370857663757380205251562705321737487489618016878804542225487729084746708529820375811443132907266237938994474813800033631766739207459417966080119828341415764580961209459326665346025307463631064586254511715110933308682061703769489020980806855962724479591125787395163620658259594004092166562170516032834000268855499213998125944650816177533565867482786957117566835113604843003762380044014420897831990140335889989942967539299895614370850827546132043892135670514224732115622279448086834055661975850510059575409653558505225706327368788238605905950679120827356203968736553949603508567674941011900196065319763868748440255691811431275690300510418853466423120699880274299502906401428179717337224051460708185153900592946400931539055519213456766111907891650507124264750664276520240241037246834114060324514820797852416016033426385928748625138008254308550145235061493199996695892684482660951996875137704256478179472342925959911345035957714418554051230886742531878578912441446768201652221881141572325507385719459138517136751018669079028246205826509211255942319179978511691727159374093169411671988666216994674771387581235589884768273625075469787220620863887485675316340301843253576693265829584060863611223658502419013220705349254141879296678287934598990177839246206875955136263946160336147575157943154184876112942552766291737477532772806816444968335075758603052677831616530597162083339994792052192524435339516491271771018617304228747316364353881326364901896898510732593688984287402238373219422623300832304655724736690619601526746558520579969086684975110249886471858004298619330841151157594042888413560753001085286164089989253446994193592178607918900886160044643360093127301377281151260181516816234448235332218822653468714779419621593045561237278383012807110518306356320302829822203975624356719898344296257410860244073851008991224738267988788643891504893485173066765606602131746590564072891775528764778009114601909601715732204601099651995466171422428561778738906387340637322539207184732852648369340774890627245756174444189797920171705224195397835012801944668568199244460984454556749562726348626755008071045094089456543538334719344496279903285819785473638260950225191989064998217546604935254843644830354787903047294704085156710060314626981157703292007319217920772059875929487108231502602963313451208908800123467770051210962134514589094511232458059331648208202240238411255010578542406383889733905056465012899219382378659412932505825923945018151275013771662079650082951456689539196985442677624790938978370091323150932644989813926815926713764846502628535537778970161281065391987916405930855478432409513765364564416242604015243337740020591190036055281150381447998127901685806875751795496258487587782150231045731795366439544769654743511101346187573916565954617871601220556806571910322664035856441943067590583463139288226902843506064510903232434224397360091696338842373040990564260619541435411792673618388777689980307230201828335309818088702867877855077758454325070909742544384843822430367944236208743002020404743158305208417720634625853803097299728910140526037383656368066889205000542592984418496643069772107977370892309483087973050493056264411495806490399183836440009935339770300091372817892264236279135289290245333645902675314110412649989844978340728685671821112290828829269519229582863992855788155443525507663925117628911796188678980556041341513060132014775432709153262923597668710862496337413472675889360137051840453387185317746367448685333562536587961087795964381494602518709912953530990322369678697647756220485903298571233830750815526500393713347618692958695894950510589138728887035609091986740671003066902402415899517198377159897977346749717804687344625438051024990052589164200510168556411467500390153089322228903919050120669166638660142562191207450620162728156493213454482792702092126905050509757880809402415274410795695253751046401154902184294192597738198949251837113299325218278871891594334354748578529416161681277186999781125923908898170603590196546728188587904407695359656110397019078754943031963775608531765690045741190503521917787960634065347919180851301558862438424029407982357071724159087489759092692094168623631500220272025560981867388778272041688773757867813778995307938836220728347748425397447066334129722102586996109604827849770056592342207245854658461155777410922160788502132706011423014788196149318932156333527262500699228183533489815176386063167069054855402190127471059557044073327189922247461125984452832296717571418178543557996289436839762935964681924754366975350149396326998775147547939177889984004415721', -); -test( - macro, - '-51676101935731', - '1234', - '158324042278377313925303658781524871614898748673989982468397056801513262659968003390685627949704258611320160536626820028889962136800384219988465148278031573450509106387239568116863743081510112367947744316933204800345240432247765898932280221777380025886378197115150023156888075592661959629600638394821303250632425654059380834813385429980578207356778680885151122557244823021413539337390766886386023683774012622502869673441546686299110751211243381992933447873142802156806866162053801684285033755846634081232710212999710106103508622919082329128210235683603138941762803368001142605648619008990425285579947768914521571612053244135664040468206471912029995462838737725025722037780961352097655556940963081046269689524507058695919021145649857025466601631832206335908714770892218847010797983061128886699295778458908026100799624592058868604507879625795059341788256071347226801293035257896677449812101619168410274645467937698072600485973695316558617078697826464067560685120905997944243512191651052772680067894809080799438615784588878741144055738313954890688400429893361117159935248693696396627137695916187850803885204391372040167551605832355933919492494203181745050697494649819656173693467296980021705890813609884785517604611253528819574733690077002295678785343609499106604869068180574890180024198538158171783307883610859971770618231149618665209136576442748277494550519027415619444394250603341387572991349015145136953473904476495181684188774626834750617818472938996987683214283309439924103189995535468277303822947364785117218431807701765196665481474819809014739483414625184823572545931155707708389629548395519118401609231979035135464875664607469901894710597734005254396315648601392217921679551086702353136339520705796471641431879666411557946264230276753464580691493861591875142232836387168105624036383384304939623273671227663421382364346405035511757097384178188343056871496957008430970719845337135563975023000121180003910787544177586770185372939136428614465285828597849364223527930973569574297409565906234014152140399051264908028037854285065695691516894764306741200445258651130079726633055035454707400264143396200125546607001935250751700196849819373198663005937089255142210331719097533030824267705354302579492394252054624819810635910772930818973501002381509037985751201262426338686073137167777790210884526513502529974672754561818929196841359487503116806374857279102032619499735463547437917873852231188627313193995709278200744560332235099781528906681845236757294232939540840501710793402651215365559223726732901232304332589555728463490815104762256836437378942770237781171541242665277050803400441103245698206078424116844542305855433985742997194723110120559706402361837255518215431654983113821256777518566578007246638117303300813282471059695780960937192471342720483093022397272639388862609111334563922759362521380716417092672083635856258692643635802385292897608203124530755925272475970099885482900647144339393451148660375139200420049453396533433237007433364495099843124339385777936467767832834097532992680258633382504023134945528051080162773976630522027388364871860673885601145463850278499705365785873574057496070902362590690329163430582931012722823339673749687448879341947128478168108948119496075857326371621272158040967590212259705607234109590371908430237962275467620195565091210074536958791316104893306127805978301999920209853998214358942944312450676988966603743669909381196873223441882204064076740792698565324619823892332131678341250397203399047128712276865053621353068705821363484016988865027435388961661676827059827201761588689945100159628259798636637114887843908407692866645165407556635346270470882762478678318748969509612841224405192451391751679491699159481451781132856593225478798461105500650078302736522399508859604061090018430782371103406780095793970327199466172644652070455424994736654900037878682536762730674188797509195743679412902718668219372565376042254451189328399930173247680691539750124735316777490200616789118915166628770213641217493993403209087930983866118739242363270739641673142095457606027878252411764298206871520866755170134693811548956683565065642028688637479006103660374113920609307215137832756503673451270374534771904030303590041498702749217222999004759003357602091152034722604948534571885348781516114248627593361371966083846505528180094830427733303359954633778102329930129088225944419675472344592340947633203426100068451070062748913329381430835928677944810202891752490896892126540425812163639252121628049481160408647454747378481685454865724857469700081698360897592285719829250458270700796398492146131941376976151305748227248367443062739785389412243719697174747793918305844429511703312893537458763839752259611393771379620065253777610623533134188428935625387641575540926717563311541862831476044794518109895950317069739650023453809779525953218406298837457049987396316333779299477763690386671808883206738746473461031527288187096362547392481733828192703691811275652684091878491782335647464304090599317117223713118270154362644379673966875526023251794033742058280817715606901272370694953811351940143399555738367916981834656631234106492867315013462578161451861851222727927484978513364472656866134489436147990440601567348247368143427992571647342689311925448855042244915814046156681924587686088299035248256687768173138305271776131448783660494290452155267493170780209088260573726810563594020164626876894543544776117725891695956937655222596747253562951739070430520784626532005865397891770599810947915766027843984225809506465099491726669647675836542704925940472862292458103317707001664851510631632483368333519166567495603149523436655902927352564469259379326902513957700266530203095978420437621994997883942015182535685373952581674954526368979534376580657019506688748132488994259649481602782027268796321496293234619922858621277867678825491370164615078298949196552511455124851536133799925473329405250474593913924912551804901403390831450711740501508314471344016110507593788337973582789067759260879539344607152262224215382333489330153894940009834586533901180095846730855291500939551837669345284373711184756405666180209071363312585030301685774779292178313316406602373255646327348281134955048336338727490454877812787617492427362023670761057324483134159661968729511955276617697409266496712072219753283729016198339234913450671856683431220026361896256233229763483100008432120294903953687352831503401656888244700073250811277269623445793796563405171676855616924791868998241051758600745245397052440394156686933344580101379617401437696817984459028218921041977399588148719347919096302390719921087960315851964586936208155974897770793714626502400010799023394074901830556484876564044019461148646704484745692998552151910298131789877533559303845220138187074792203552289300587811989652204054350569388609355366352079539773210398305281469358542324938107197041217218595947653381833043778081164511742732935680326233241131641428417476654793443376871059887960714321380031930204997295874730540407682218645410154547363569726463842192519870398072169036254497989626119475346195254734474880846366685010394270094459050207503355330015842707449098167167948112211428609169028462215066248890291708247636295839908593225052889285032180148515349175791108452276764174092593481970638911935180284154383805459092545680971655577656000718287895404174650864444487637275330486618588627887913198091137313600079403324248364944559239416972594744134017813214704259974060248545972845617599594908395004708799034010940349453335426733467851508855124434739037794790113915284799938282633515926124039300489403274166512016144314450767050504019696951073496152282334971591755531534918527658116356766005810018865387036502835277104484897521399845192578397217389066546258015343671781439530194484186424336132467982739290593716534087153430243415506786743021432802857971661907233602499902567387941782564166386342672410874812089691799529503443000488843767817702945159240603649832489196454539442081235188719658702765814391130506231315568011273524165094617918503831867012569022324402969461007866076655261544955353941677901200948344001405059672259174534803855786509381749106901797774448058734457124149367609992922544375497404889378084258630248150919968340293441413856717836345219286003180349374207341129088557493435423239964391016550727225456481162350628594289395184071310300179756589174536625319150383798785373066376691658528761564820534618453895379491843182268871603588369275077855410841475816916672608469381494765293579645251398504292250764825206147001031380918536905798997324364665442675157885496504116737588881183129820652811664336805124175412738167561167253417906013601281586840716605226757932860034772050966241473341886952885772364434302876604236880399216981777408544673261443252042495657687251968928902101306694702738065723310727043271924859335698667952366365883749591917139742105118753077931026478251365210693917236917159155967697763044367201149926693443948539699579913602708706722711432838021246855315885038460450756859122906583939756348652891700451630407133090901515174232078445554725093208016341426376158610309666955884603433032223065165852248565738599860177261970078536206931153975848971431287001632805433404957578207772941765098112799264026267445074698665059729145576674938934608054531809788773719961126616990316210326818453980080321988760982334379271531791369297582640574651520702873403331880456606970974892343433336446248718921846000086640006680764293893307983492389270379130633842798650803348158429980408513212973097444321318667389109611955924135884714672638284288772566998005211664934734547822982660638379730254204195834897865492728459422863551908452096176425627547324850175172784662840168613264736639310780854731722004175205456083684478275667370139311794044918888433282117891203786131932421524201946630405904103705604352951344094166243627023050380063835187325378976884921927883069821201742308833558695341662261151498959733037164633952848288492505505197499859566019268823236129754425893906449877905855504081397182635782376853937776733107007960687910397361651834577002303143087866448497366428780519572180278375369679225575668491891544012967905489645541044473614128660244742603437904495496004459121145000204660640788761369040236852666481807337266045681038338455762663801212249239773760849573135339910245942472057741897143798714888511942994856977741299663716890747044572844810556164536063761986767836402140711391146026318746472684683736517628592458110701485687350372867786408697530159165580262455780381579264667555447984957739182385760977780225061084004806106049112388374908757400568145385583888461889658540915335972493538978104321154519123769320702224831927212063777898343511469299130626487155185875277476235831577797403193411734525969805530291201270196761046479780099300862785898294670735985568048204412072182439508001601125949813004653714414454010147969834379658692070731355494945150892188648577526049837658909733330381505835664398796899002686901365148731947521928717964471059772305071463737374874406416651278356408918633301449776192835629215568915731374744480004571009884843731735476903477562446584279323243628329043070154171111030416954029897290949469967976161666719811003325138761099757410714225754805089491754951146648993331480859725730046281101542321018226211161218032808157377990274486574775247295293446271999216933362071677144037958846938035870357017121382946099997460180182187217217820316108638070949402341509021488404838623964004697749860791584971181351855741948571771355034517420282039098468418778809673122690363103723019689210278682644736222976118509622284207375261241784528558945409584782281603428222482076644739841708067658443152632760947992710970595496336571116020117920899681972595692145247586867390993275854296221489381933037318139292360281964291441764499495760508673368168379423816602792242572983422830229937308653522404847350290384106194221461480553536360110558204157177392001034747822538121785134044265222471502565785788526018168367500851854368644667069187608053339694123467967831636497181955436837184144618605482450617195904135269079047201637007435156663520051298601126128369945944529481020638321516198582623214543218826748293953436296165935049635820455993901167665818294125029492356440701038244166842363513621908344320848585686797979439878826598478637355993217261347336958935084397089381198078856022083300330117262456180993049915148012467532881768933263035840131555093550707791000541507741393303110968532024193273602133335942404611643551498070626757534418055263575760282736414364452938769778575091320674432871296496661879381856396240520797406048137637370857663757380205251562705321737487489618016878804542225487729084746708529820375811443132907266237938994474813800033631766739207459417966080119828341415764580961209459326665346025307463631064586254511715110933308682061703769489020980806855962724479591125787395163620658259594004092166562170516032834000268855499213998125944650816177533565867482786957117566835113604843003762380044014420897831990140335889989942967539299895614370850827546132043892135670514224732115622279448086834055661975850510059575409653558505225706327368788238605905950679120827356203968736553949603508567674941011900196065319763868748440255691811431275690300510418853466423120699880274299502906401428179717337224051460708185153900592946400931539055519213456766111907891650507124264750664276520240241037246834114060324514820797852416016033426385928748625138008254308550145235061493199996695892684482660951996875137704256478179472342925959911345035957714418554051230886742531878578912441446768201652221881141572325507385719459138517136751018669079028246205826509211255942319179978511691727159374093169411671988666216994674771387581235589884768273625075469787220620863887485675316340301843253576693265829584060863611223658502419013220705349254141879296678287934598990177839246206875955136263946160336147575157943154184876112942552766291737477532772806816444968335075758603052677831616530597162083339994792052192524435339516491271771018617304228747316364353881326364901896898510732593688984287402238373219422623300832304655724736690619601526746558520579969086684975110249886471858004298619330841151157594042888413560753001085286164089989253446994193592178607918900886160044643360093127301377281151260181516816234448235332218822653468714779419621593045561237278383012807110518306356320302829822203975624356719898344296257410860244073851008991224738267988788643891504893485173066765606602131746590564072891775528764778009114601909601715732204601099651995466171422428561778738906387340637322539207184732852648369340774890627245756174444189797920171705224195397835012801944668568199244460984454556749562726348626755008071045094089456543538334719344496279903285819785473638260950225191989064998217546604935254843644830354787903047294704085156710060314626981157703292007319217920772059875929487108231502602963313451208908800123467770051210962134514589094511232458059331648208202240238411255010578542406383889733905056465012899219382378659412932505825923945018151275013771662079650082951456689539196985442677624790938978370091323150932644989813926815926713764846502628535537778970161281065391987916405930855478432409513765364564416242604015243337740020591190036055281150381447998127901685806875751795496258487587782150231045731795366439544769654743511101346187573916565954617871601220556806571910322664035856441943067590583463139288226902843506064510903232434224397360091696338842373040990564260619541435411792673618388777689980307230201828335309818088702867877855077758454325070909742544384843822430367944236208743002020404743158305208417720634625853803097299728910140526037383656368066889205000542592984418496643069772107977370892309483087973050493056264411495806490399183836440009935339770300091372817892264236279135289290245333645902675314110412649989844978340728685671821112290828829269519229582863992855788155443525507663925117628911796188678980556041341513060132014775432709153262923597668710862496337413472675889360137051840453387185317746367448685333562536587961087795964381494602518709912953530990322369678697647756220485903298571233830750815526500393713347618692958695894950510589138728887035609091986740671003066902402415899517198377159897977346749717804687344625438051024990052589164200510168556411467500390153089322228903919050120669166638660142562191207450620162728156493213454482792702092126905050509757880809402415274410795695253751046401154902184294192597738198949251837113299325218278871891594334354748578529416161681277186999781125923908898170603590196546728188587904407695359656110397019078754943031963775608531765690045741190503521917787960634065347919180851301558862438424029407982357071724159087489759092692094168623631500220272025560981867388778272041688773757867813778995307938836220728347748425397447066334129722102586996109604827849770056592342207245854658461155777410922160788502132706011423014788196149318932156333527262500699228183533489815176386063167069054855402190127471059557044073327189922247461125984452832296717571418178543557996289436839762935964681924754366975350149396326998775147547939177889984004415721', -); -test( - macro, - '51676101935731', - '5678', - '114598568890558892351277519655251349170512457301108169122918046980237508383487307624081510756564677550336178477302154205298849988621620086922824241203952845169587118918761676702275886803533985126048599159621880798222780212304246817740927997329598603522333259993676023070883723250177300932925278631685866750044996349161018487418710787156824698743699059007370890842841419231416436426583294134280327799008795618556337681789763639042135318458712688112601941846586049438371804926113126508996078777819094310659599757182791807946793330068376689258887811689995072195331087218152210579989587318167100041773383622122477291943850218476496927044272842237554951357422835645664516760841149829622887677523325405719345978782256416220091760753375551941881093250856520343277787117543740369641738849743550250267305042707228709682744788048246753481687183391246480490101912653586013524077299683599506874945043746289984496657526568247754108757916023746860823651106704947454023630829841108532968959604789557821034558282678387782274892400435740522133769190575725840235412871894976415960900858952703549298673487135436478720837173606603965003749202465844411925396601850697464037386444381718980799446621464654550821206321596000370929647608427450678602369409467488634567676260749990886237210425012278562172533337907188794399372225626872733254924000975445679212294865582779159284739536067574648674948637306603357526281158214867606477582551408107503527328338793768794019922917887582376894908153461450324195019808790951956266885107461973925559489970262966079308484289377245650607102408136209843678657317031621605407118233165024507780188477008776626376774732469991901945525053633560386998290497433245057356518070213620275700745654781100039839338506451450577013486892471483552928409289830016271158248107951963293890564868178813169793288638609421552999187733984144553406615257602536512368045676140620190929856992488533649322354718067519310329366233012095782513367770623099210385145306068882019668219811962909945944938303357412007436455159207921731034641005985972731076872404481351411053559046816512985501762256787820371273853296301441525251524961854980951466415757745095790408750111233498938399843328976884101167576106332111369898329073992906185716431137905217592404057225277504661400556077285374257237710751164948498254228336520906926692000699164318088485138209956632046211769172737818805518350576876409911238994857621609965737246540747228915599832803850235006646505920161663461782710578007459880127628658300436718162035702759857413264686037450843066618529962777161180564480610570194083990996868348589497339967832525631952114004244381394862686005465286457021469621822619867151692227701982207711240403754089139160258204655040380941387512320543125847873280531581254727837191059980870831091122923417959861596435814654220789276907248261882603123131749272763005899889970210586720440187361168097472073369327028087807891921073775186041480435653913681928394558065224090076679384591070891307475995293653429635959202548503686994214508788450093243004124213718944072946348546273490462900925735733454594192759136002496877104912413694566063277128709834235803795521599955020375102449787917179385948650401410782450535088196592336719230363010532216782360997264383385827672744353408971592600267691136637128647179666091641390767353626655629610767925329336924814212570169908132079298822259312790776336192539171954812142459076936946385158760440753962659197081868092892356974717649297318187816581273710002222637822422625907248946609177471022616696078166962638903351786881559353388016022793559059422611570772104441502159519678683680896440534678482697361220573057326321241467487140124612227021769519132788278891261578500937493023431494800715316974572061757711388338850673314696559686053949631600706217179936149359062760652855148968218517603478406764660079773518392515740066557654365463358812116383920109518376511927056859803872276659655935142427958378419267026204993883734671725916631060714088945987606306190400841739343960163767980632636951807150346899488246361701225858275512527213850024197265932454942520600005445974264278700061722886358112352180245501375011619481895903494024525948428278732709789878138429844599672738323876521649110855277792436882821166942741738868002576408435397753753580116182952236210916267829966145925028378437875898705477022525397608430772386789943421906088726337517286361167325374608638664447743003669920203279685500192102212678244500280945163720924806258942015670529098264965727843346426114488713290334508104318728502382771728945872501553223396187212916235118458655838036585541800475260873636577479118287025217430116350907433315459696137904514955307303089701947453368286386613774098275500676250943657017383834720061347722825211956235385743059349300184053076658159489552304525616565099968774334572359425467321345729237028949216589829910496148348266399952259506966453084807497614865786568010359718381755280552030450357482091573325492727231276923993244258612115652943501643076670607096916922788985244717748167425031600866371091539018747314619844176434458885344303041217826099156483212620631712885522804065144269853819342281878739269471469710167419263261298426536005724710899328976253518828717132656525336398408521558604682092666618949049723934689800847063844761671282296978918952554214898709123610631472079549040944065036271515445762211638184670207178784047672153843595557392899022269520772862968918684932700339559357972321385437515253951979000296108897236060608128673387896445773358382692008138068938089087965375939805087660261553154170365883140110004255362850999174312472258828659845801114248663995523535651080385407122403810220614699534394862199070170516370529573724426277383249873364882798357333666601674798052228774948816335992020369901620508453181317972153011582161807177844672456985443467954652113777013601630746866436183732233279064589871750135148960495813527709288884229866780850817394534670003825516127760071436525331020214654659944097612888206044199184355427079633744822550780458499778237357353947422296038656940932241020563615278249555508480330508674120678052089502789507188213274173100770916834969313508824784364056056402134407244119638598785990062688861144654163575302227468770905464187883181134822725915136640612107272892247282302709032318098895359710245013039285473099721463792717954735326941637258027020359449474131956608190956922971406645107469617185652049606430376373658432400056414731724407005001708692411063413271177513212657905468790370163043951258130982778875673922295809518571866979572550249035569072335930443175450876647946083312614092963535991789686984682545283358632371449413497269427928750522476008103850277182197862744717478903974777451339726925492684847344667201465331748104805481572363883196797787778153950751138898727728375184289353676704124928349416752637531102490310279351764714073405197836749014690395282266606472002997382187295402889448513435174099451342568509159453242120888320839737697049616714431772174331671258229322246266889685257316038839337528724509464509575560371587287218382144584572419703181295877602278221106570930586664027065311454892200273818659381311150404756262029418161040565111664447264252108585981706307591881047374954123445586938599411011096620619274323216164888259706949545584064116931697419880810232135950719390350713062967911958144149654637677624682217905237402682589189689936992002791828405957862158911334297099480655817390013698092780805866900709190383307511190456176470564094830491741371514412781382471608566016857542175626271815830825751173841300134557318244910059728166314923856198690466209098544666893459074761870150034083238014245526074209050076925214228138545561830243367680472907455390358950492305796631316420731434125187536810546887612854361525903826549660077385607201642040850831267699276814362171286190066768458981549632902853741404667094999899553250446338548089645534133891269993883172431804704263925215719942166060373843805638153594804487097561950457231382850176704556278355177741960834256932103041468108431421024565688930277277827204256767781041934083737995080790793709338041932760953129953324240749245316117068345243350389721646548464456799564122538803508302280206449283869830911336778221946967418555187670963441198271217790496259964780654563445592505556519078267175564184094236772289072470230033320640614537275025449633888698376301092731992965463666856043698716302806693885087426713749261988769556429463390046244837567904659070225420983410009710978888428520162826187731324371494738964988237894717677430862117281326863913479208553025891950712021033737482821762882285969238709814995624715621242460823465809517565513365312665098952226387532971101201851401611211767107556328808562154195909528062579532668678860849786353548436978596941540803973584469644923040177756384343881496136104278613378924581962143710807219315022833887527431763513942927784402594506818541221504288809623165972198540933669494785758163834650407164355749575134198337788610507044159766150241794499149571096051559220223878817602912552525929282957515181558545301005606558272154807998739024160863626434649314036466134847629318039975100093407373104577388406981878656175843258194717523909092875616040477453623785051493436611595002796440848161148666254022016142475461311658387441335732482745839024940608008050016971556249565896984096952364713943123112125591933258703693851493005494192677788993225349131525711396145903045479052901233399936977821783416065979989065328839546014013831203847910851373499087681269273873808794681827032455802487324933071462267161585550348497079770547563318071210788547323150873537668915925365865275006606032948938992420253484030285899801624037645490546643734003092212092762896778094831579400704783040331797648705647138803684988666221643282949518185294231209149700862655885675685742587977247470742881671606128975518282142621174602709267031158360580359120233235473997243785917055987801766020914435512416873713285800875063783960692674329948345063193713090346106430960233900220471049512359484540660252000207287048940904649627356855235310748631701290142334022573624657571685050543054539462593343925120666965564304346218619573761401243630815566172421336337019044921825132743027076074431860266381081919439461501518228192067428154599552061956522454587058878725629423271121973055948964177586675025613775553459402756099732937841164187693906160490012428728615553281749083877569856034002578003805619108603440019554292851568931421048023066958052204343883372931130679073105823557408875100214126784759475874110505599354169570696609784560599958215019928598013718187402289676120592754363058386217976480889644579627120147953445090187876503616327911008391800184735093377883625195033462470489375923507822652512086242908850264792687042789386655227831819214938281104644932640292609019834942621395608142214243559409841197661527772521605594271433534022197568992584336382425215293816118135415822763659169694051345319875623274091939751368133997813845916207449451701850545644437368283792955041875417825002650183812267921554071554148141810545261132326348765749042696757503149872630966032411848943742788719959766685423336348908720532382273782455044811025224688005258724128117375301877446615463103917254847301569577217661986908844517236064250159012321706048888909681124601158873187553237768719599661206118675972473809098983711387501122615038573963236084013215429847727184258992906237874964751406104681742937670985077393504140518585378445945934961441800684055554038233956351167210957484786967705794592308352175762541752214854817124986107384580167149061884866946918670005168162259392927744148326558953622056499756057865517495516987090419182627739373939985152189775038553115538646471075934221909696916621433427020321907211290750366847722032569885358324304825748519823761695735069483610277833391784268305687555417321060681254063601376044472764727209479821068239831947119222642427588604524821548797463869612449236554848366936415329635310834448639523331032214535561193061625240491292472959421415693842751590387163835477828542899873873355067539845115993799752754206275423338217062076744831694087595991582736550683224860678822779524670167708708091493709146151122212285091313848566637581973054913102622054948327816252692080182215324465447499805634653027067312991605368041127365270645100770232874469104024167016075695806268258050422993127312933128697504418653934394765893583568834878949604860449521880438659616802122657499696711371950669696088698654540203231615696906652300496120780993861295366389568887602126999373711575248980111463126737434199999923186123228140458802135764964497499211839068795147064258579583962890520656631190772155927073711649314137404718303647113380977808317817846980386481066453326264620161085488324738434460460038866634635020866393862469381723564361661779993116516911788408702482058657042742027085322886734485737469665890653383965527251028179320635401480247183169549776451102905415564180956069929150480364980253864993561144620337603341026450280648329108363155941423746477676441226330763778143302558927254074511454873470596647216773968167693426794670205504808306963783432036244979681725783341795616208450760202661124160076951242290485270351100016293179519729579532961953093883990623843703845911016699084294413469034800124849706899721051849479889146370628964206263232509984714695180238067877770898591308982070720120248367443358203058594410980465031081259361282748294276045466637842578800793537425693971319078319720309483472991281827652766395632559627448449322724455935973458554816112349560437316476772468508305512367513982203113683319867051472957794682903830326933115041030819168485955295547194534592544854770444190167625774242882339856600323988117721872329621119307065210242378471925603855682602511342933926964022027574473668074767250277614350240898114804833628233917590283331643902799593247663848733995782588708639967040765878261594144333897235212151312166170400673009191876880782817897642797305674083214304116001846541558880139343876729547122660589815784784823845573389037426438950965231475933765920983976255357185318394294462939870923725191627253724661104724674152692069584822984507668895796308777450228162744501914688617738288423774855905509153854844523303840957562160021954437904572106375782764718235463296636952021626993854683250625366396838736958893686683145675963239492023700157535671554883718959215653559018684790556050406047348053882167970909777535677010769091602244371438842557331819164644414366880048931933080199464775719509620992644091954275270680288884109813652088838217429569522796724565190899510248605280475710488565214118916127660760240741412774854958523464875335791354333554221114105991785983393823020076734058183927249261932463022507518378417531613595367008713063568456526553921055526758039628801741635831559596552015920057728581873824235567176123583511244661921620535917294970250780006254560913313662765305807933366774232072453360650960008438817118037078045098657774617616105096015011390156583453754385678396291801322575711617682706241038506687001234836301806498523163010650449912433471614658213754184557683081702691883198005157762869533426985772871548066409461102566074482585186196172527568428897050456306066648582770036459460511184764057517774896339386592062506459252579461592560474665528416239792702809524368229823156443879848127098290936890568640344899841675398255520835326531345996368545121081712559676548972073976307843066272299578779899750067849171423314509815187548244077378329796193933542997364333804995452518983295374300579841041477430234285996531274115737469223410436044734098218596575261885585549688086844423068789246324166549747789727265524050455962780001580710226770900533745079189013929659478693513587745539578848213377469358275467176678200951122297705749503306698574297410712427125825591862363276134686251235055301972061105661224639007183964902695034424436437936253659197166818614429825626676264111882581783852335169138950280191270126993381055654149481441296522956835357856587690439122868336488948939918429473181311497573245935858058048846043815567877289011167331444931953925754671240134069623866836792786186011879777990158691547401988209088233436138946304596662211246080716963940999419458347032733075551690030530582476791228961785738428344668271954394260631144673445131619681560910288236163257493867850591921101601774216283724826035337528992934585854238509545972201306935022486046021526186153884783616668536070352766884410433501411997774544944294529752318683967218547747054919125920723787453768874396140732374376069661038491913390225584336932342777315761255948878551294079902768864779706744004767497971699010857817837320331732586562556917485670513125539936647354410777628785488698349835379591475098154799827267570479952391820096174179651670850574284042676840011853046780858800494312309921469703542619592726263073590976462669364922795234207666005686292826903212848877481605826947453296687451059719061958356539720636942722901955175023641714596609837815361932183405821894237560762724700527878714340752426908901818205438166928697623647899633610409766731686872645318577714032460894835086863906305213902132263709453953046543560314104677422693777305934218298526734878837051106284119542143667788585456657142746665427084921846682769309335227479860142774263718482271045462438363768361342074577613689416306245388036366588228918750297891553343601271116018104061166106299788463499404576467234680999408128685491495431444663757432415240164158488210900819745907723117930120695685024585064625587827493034169505631321361629073305032453650015121172416455507667013522455054423012824659556913170191784272134013229862167933357870440372597009868509136667331096909772244774497523425649971713882182557907497459362685468864499900443106554956344003403877683026526745408126870149084364211072799881433860076306106247851979718211066568293397639539451283955573658564108776175764110532523449193170074167594375276229899521780717952518583208904105756371686598266057406647087463129407379439591678526118563375375353708424759178126712588851088358543556455828259242229752207982655534691287505400579846562914613465114055818872346386918363454946173595045963724905520868541270473697264250446046089642748190999453356935960747546554692305385529475044104740895111094053981210797991140570926872891670773814468169522981197767273686316613791050298552624472953601064874491619431515581298483094974434200152544999972253615705670333910064258013397051190672327809649449512231521002044431168670777665701194943318920142732683570462533039523306263620225871545457775764770604929953997570625951936899909518438534435970611071611463871839879758260799824991623563429811928499039440771973070864273967278618870976632376075488071575461144561219935848976261991995743418626824010282377472581361028454622921441883252823380473535980635040675347266665813701114359254871281962513087998501938848746260785427396775049514168562612073137570353309933421182587431285208099490235882059772793358564991437202016800963518589761455026124188003465061263343783842908952238749299315855490241309786950824004062760976904187502795945035840704763791629996479207882802190639214588281672075545825412562820832491492193486742631064101780835395570244051743402738881730159768458032350492340983945389655058528481715594070179000970782625156057915320413986266019990172337946416918557063800133747641604183437713060443142402624891881249459030992935793527950409840201343706778667031036382270368309922120727685173156943536928765918297523291556499898745165164935596868942828843358938043957961029987646769997740718353298902113509786945580718208991358463177836638025806577481206139581029605232343390118748079783839195843230044920030000293609262840245610181309358224141510030238251805707053062432073731984040628183721390347726139606685474826304883630174052769377584217789247910727483325946473633314792666461326212634921565119552168762472730204002086252124424937891781185484626212876955436221477165360031020231430386214870054108295007899715254119071513260472470230202533983791307938408960011206611455326096801350655243853398472597807466586200601253211741913149771316966742972424796953362829778527691461619646698652901365907319538496395153314189223850326377266970571724729299225616643375250610943592593231827466075999846471798767809815413033084807935411432143738782707086800700249890892016781300755462774204025643372850935993536835930431474211275360661334909180169369108705004893833932685971810039967903674985151600881858004723253102936206563045825118090129751111068119272073957023228117535946104197559484455044224813743551400684035958704844910240433782794543523046179137502988175588334343929604010655262873143788409800103840149709367769678272389350632655653061526909944375166865821226676124073718040169866120459345622225584107723626981527594409083885799002170436455111357966813110193233521883524236223930189338177788877617266977925443568413998134839137304794431773484057275907471161083605792371548269896511232018878269590877998951467990708359705970388117405757636229559483770009754679879169950634139569036627493168743252032958240435946744381139249473095508589299567208080597578309780705860706366590038525752672682617991285144702659613402563158938705017883355247903759797019472262560188954212310667319942679244018502332473572330860141285275142567616352011441717389434820775671752035498192835097210704346762871785843394366619830754655068315068021943501597109761283722605580646118265029950836645428880355482809418017207519930746525482467660956501946286248673803148678778320154527985484392151772657071003568822396992334569447439518931797472794360893625913323930637936123592307936959744134660419379541520223856359015281561124867120268443532762202836358157067397969523277941814805842994278790015196862449348685333746940835406048087120468705315737810814851006986239662973395622981892417635797361552255577200093154926399160041205233526050099942113585424767102462092543693848903032320176365611859456909911464662553394222492702361972492589328743134628042819438985147526265136537852840491772207661691558509954371067469519662258250666590165226871146827599529979187274127942586949484821499948977145043677342942737229631023377843981185400933835831423767351371476191843662990866109519730716132126804072070640870780628344547744782396291260010070383315973397408134147633405837121702299828479485082965001168058308660534087429710071643832112134185681191355797031035640660674171124608581811772720944526748929882880981531600483484334329258782080131950152990379792064594496526209604646130807483497903997981366660814109367081501493013317987778423970445235345262451162417303194219408843842138074967028470582769901836866713822445861935378961772248421345450181825317803057793865331808243999032870740776976064805740571853847337064834310551096634478336669042763136704807586517365797136211624710257953267355206084531695186978286706442628626395149607414222118992574163280333685823680906473269108560879550907146951083501973652650163620691173614434376022074343663278172616794365354028350879611668170977299413329242853102242731460245981931645393086566419168095714547735636341109457537424127013466092829987029469225005609148935719219627886553517060926819156103842061184103249786722102357857380363966877195050686029417164805540813780785634440605334896258106006438094052913691329158675367290141201254618676773332219794175088755775479718673883939486154200593603203954816323103020616423867397093710839615897871898114553682658447075458783118190023366087506978374367440207438924966819405213686487476793825253259734471325657957108673156552118127808366008364042860528540535034950176612182005881123405988511608306144849231503055132715499943836726775291396811671741107037864808220275570128503090451498085660993674239141408137294509508916040084880385126052374726220832131130118877249390053885190862016620304127338330822376885177520007162660545308168910551027048206864259306643403258146047122775364888620470370521404458837255123240697440311548296630455328683555320575028845668660604051631191978861891344050450146706574218145025744150912515431643639763471496084616921691588906643318094161772942444267813744245201380387655455570994259537781139991672727963630401572633729986361556875282295744688790419550042115325815066901167830915280249317272239032336428833326465165088029450553351265755331884109528200193953474902952152924946185562536338925534826199411100653632718279533909714213316643228976513653756607679272611930525331509533360676882289504637968260788530354999017751472236832783844855905587554729452514767314824700008649155270346776891167316609312798908304391728180382885705826358462049930067611387677311125159653938052767644809094689360554558540305110248935812740648171186350593122648008331898865084081910232912772214306873277181550887217911939282490833562582253824958566304651212513938680716752798136384903060676496603824306844521424474974798402169651179277198301900928835877874551786318031213157816266052352420958386807745919890178528945692073978829824318254828803767836945769264370965570278955420236563465318633087533589358061430931666035989509802975402163642667940061694906307745403336415888401856273908779094219374541395289779919505811512398727811277052044628889676576204347887155453152137381991361998780634451422237710883316724087265275331735893833197129258839234716392342611646952816033259950054307629463527993424446629554718055401467323011537168845330459671616005062986429892433717372769708986976311304603813694466876866558852113339228482279288771725065980107614730689732508546319518769065056680957782914367866215918590112732510471009325001837807792226514983632349787121937850873634795369167442047937893608233634609666703704587131733723929085811244615783860405178507877859666805690049528538712275243036223309707838878743093968440740186365488240924198311296922550429467362803938321202544305084030232602891812533837834720169281029831388109862088373636124595410033526477352125408960443495710872004466944740504181430539375974997235191384764262912442475167562557149784655839519095519656973612676149775555468394211684073546313305136429488931374979941004482067517955299494545191338214275004688648850080625425657255697031851628472826812878438128524708409359692881087063253264481220907184058301090967458080899506347453532002995200234316121374098161410900539135981863658581370995732911051446451138998982787447971905437800015184192194998890428219996377737564767442914336298428740825412724669981656100409516386221832151219625497417581073077338087294189592180026420910118672014596652061567734369839911877944565035730463100962767041999720431147498003871428186236484743508773318443952371300988256662194348824041466733754460943324754187692906063468991068425866078952725816706806990970194721942596702352590797837064926809786719427373172154689565613653917663261933894602724198203854026358029130198575484449317765398657516813791597967078843130547339469073783524497382496877243498441684162650928487855937959542776542381517702580219111410239373945791463335216468817891797159897821504141336134011961229585863213744116868341898479921270173994357042490280766042368231306294592305816034402114190442648210070915119128632526643207927399206403270502196136290923785508894091611892797999732479898770027343898906937912932694388260729491337611804903421576030209232881941209677305990236485778758568570909511203847749727139447140750017842138051158739164470079822994287470311711455580863809119499634431231542924995363573544534166199416944524373140000391672173343392584556167540657516390123765234814227550308964579212558077778186821292704585207362004093356520798803551721188807088087772466898440741018646115406804612936758076828507023774182209672664449988128724902414993501219401001765370672317191401925997949428670713449531376719892790107292559315329271665439517184073930078672355080717529913180235718999452728793715874798090520042529997304171394608223665519403070588265928559013346665409955899514815287087015895503845612331949334663867288844709249699760870154746576067740617109411671360905733205915721144812868914282146396418963599623786016511558301453135637971753217719122740923575115844689612181585533098056418282958853896584799967463642188879073429673984966106974767322904274930921304431241275791867912140260586098638979591977302253507591795249943499668854219091401728091291240324419097106670936334674554710470587846998580373319693822832186125663563662227300196033318571309952940878063796339388257833300085483835132481959803926226375922877243938995147684343099551037900344498227926589430544888103232468580078181742899166208452521226468017225770159292796370494628221608659705311860880457610945893698767024912686130786102451619763311388742213622180967440266735615377707064630432362851346787104938266503146626301826386009911001332410273267944348625003805191824863507525729321246269404084347151934903222130472688695181142909993054528914728385212132736819895913661164653395636100392775995046821116359166052147490259673545652512579506858292074086966566678148092233349090670531856554153436180220853767903100802098585062424675371471614926784976597351943926464759004842764683915776120276735116378854746819555607095002547606392301607456201613727812460712017149291083250455836242558225613747332670029560146313664626625184108408526435551075760616558918639998468694149252839714828173433759651731790585540238768981676874286013596872690278563046650509425213768568600827027602310874261454666959825912534982207381304504165906647669730083754622626706293980961379228599568320787109947615111949624856762702790577996604294851650710262744819536909560241872405354015195815901368973088718316821955357398270458847336192054118678494760800661846422575105028339264471032443221584848296622560987616922442031578568960816859233700095456702725652471996634621805360039904773049493081061117890447026080993179208164914084001561137279717964474457910822698800571370948730739574958519456023949553713352403879552609629342711187222946890885571493932420920963889812746152759211771233710658321471894667865836881256359416902697886305637566565270511589302949804123378578009588741245234061360202559864224187793107140310370774238991415782896268860247160087221743398632360201329490179060521461387097002495616922113269135683217341549840373435949057182322394943783472872058473593126858273723016989321497958715693848778260916053432892608850153974019086350180056263354802687994169752296797729166187979142462997664638545934162928193655800594073599868087694021711982073641040542199591089911339670166122773835431930957664741772458832249655277342309784943306925485650386363310465509184262852528967556488981679969063781668502292160178629319257109918089175245793016717386236635810518592787953993726687773744355504320944066168920405278890106620954397703842075409790585293639502140471672275176364054469159930595251498121123000632836929940035415174800963695560911591519351305097536056757497122738733247223334299439795964416272756974788281452938919543919179780495830578105176873022791010237618749182041436120814538747344362413981166492880532981408473122438956024899704764414827372680888359069383203084252482710559799658759140471216458496005546408675587772142479513233766094809931909320095433919996718551768358151589619518928107632509757299346855803242881198506144473507763036827161335579895814696687756797267492473907511129330448610059311031697081944370716803795577518487360501045579868709621241757229741722143091970632237708849516805918096189012758100919518522581134272755075309636666228932838080599671285408828093511202116961319849653073610668505654418211025373854469615185587420505700575888261495326807192713148159720874106763838858514416282535260626452514445199386144279460790374332488395321942092245696971633409779711403667148196791467370350138794216664252879537117245964416540374786812119366723571213640039312537831206990870490421854920889257491088284125753811729442672269609411252776690642554159109624124410614773690847589962809481591267437473683970316925645103066449528952833136986667526561057302938060806717705640347372758940854559438090824022934117904362128241289781935585414469223058188520370422811243860774239667131292667503614480954661643166021094263565562954650536478763836171348484291106790718789951482491353812912872996022446709005369204478525205413817559888660494002070759867343020833304262695786258762182090471108517478008062047916158342858928375981008630590361530730991533337103005007767024431048399846363323604547570763844498393678827412313502948266613097046593733067129592808782764829082779540513431895899823748129703286439371900576065601753249715130145551395611158446136282331860450878473803949375391163105048460542796053348711044126190850489694720890621885113977651566300965967733708467656571181095189043634361442938460620424892828907311518705548399259321673290854432989232402033427695505537391672297800738391325014683049620765825976502001490715724896015980764535931939727448433948695121642423627605318724132757699110767075442641487063525797598420578507881625322631258275225375353312907827229233991901973469958877318300954825891826980150082560409853023435179352929576326184297304876469260675852353214336752697472278921785590185472893192209568387192363535612736411827177789230687431274148917049359515220791900149954463891144855694570764248287491511795465355571647974077067810042898359708679406723077456168802915159985106685165278844446272185418039624433414989676529360733224196806303027701699401813246007448367635711560091194638564196215462750260469722895057683130186655197563435087042456745552261726792507936708788382778795714813046436130676422706429620437824366040216140317789120666296561961817276627472468337572371444709160465057566385526105800512406353089397311243525990809771719833722278531018522388436675146455281597431804631523542433155277652876622739675563673188640006742892639445098465242739506308240042149149884627632749060858136523029010127328467486160496136970964099609404485275485587599287991078550382891153951255006778605902787210807236763823509705570383045418472207043091603551691808413012509993628114628175790641442073599128028234496708954756607086944124895421408720862402696781696349037884497396953950073338348468396830752927901597524196430868111165262332019170855492271790130827789573109557139053285109689778332545958693287355659898640515042491550628028917049986801903913280115785942913725572192146862247809512151632511954616445305241282672393782775249991259990268401573895663033422145829424653742257468572830795144571447217172170344390171558138444299290663385049414552445567639181283014510290419785983701505834195674761038613042562189128641343318579288380854262613061171426518448419053079528551126733990801837900708461500681574188884795165426161291709564074295450881956626201918302402436945381093124745577171671312225963759197527876184346331791160454187021677119481282452140937671112699410475067112269611894574476316058950214818972540215691086743676782333339834793090049695579827352673705992602098532938745690406929370454895121406852644336817988310511018606485003687435377377880357687101549923752753870842331086890020957072110482921078203892582825430743853678938678845171550824421056075012746445684719777935620199933697201020688921671515732288023709159460020579281422206200660770662136186411119039464511246972567849083853953974560152919983727889703872145059312940206651954534823197197456037124574320069154489362428152384518561176908584188017896443196497458965211081852296712793505164224540578823521427317961999439433840947679261853070347008183355600509419881301091737467053884095017880299752423221585377626802533750299111687354685486159204618103044084872599593910681436894070175869895284548114007698177881132942381244912110629421844127353550884486951712261822154242410334674508400867284003116207597789041715421899510712174705598161680472160639854366218120520371025267080822589762082721234822899143897023722519527191182967187424707516302075467248142839624551051489916072253973677889265488627584976956960720624875569085896430625668405496389507310955276293395519901278703982054295957616190481642061914557057918641411590376116837069898283627310675729905679075315341752230316326873798944842338809064711121830318844994995728478247554519759647479833188840882272330805936564717875937759645466235877959356774680757359186747964855850779950002190153225827761646716858046423788030255771497227479049063699882556523239832981578690856832572914858098641904135700095112492548076201483334658215008902573568715728628589777880228112444674918240096125221488915805020859677852091654966635145651388632847300280396301961059638194991615057652714347324569091348372183877979671140165075401908204991585820352573960135268809787675490861799359172749390316567281411205233112473050152264568898538213889610052662413601412411722965122929820314537969307515359259003169193350947717065852529386538881686267170773291846400688708486999155003104663586382344290816318064759978010654953537866623711446364570626969502173544423423074929404208942616624720195343641583097741467031833905383231234374060924479894152342878888888587110637396276339544946001358888192005723471164751936785560384570786894012343324076324959874814196843505410918926079285183879707107430170210495856306080442455608822862122117572876456630741312672784076158322593594055019414285422443235678980565689755317999308802910505961137210498567710018536735289083212063487672806707334546206404814261141369706196328862821461886994687577175390043169221020130498162026839862458973943014519368318441838195560100295968496734198518495996314945289548715598718870583552621401683863581183106851205684154635910380524563847117217821212106128722162524253763046827147151974918777923681784807700970624766909477312166760595507462337125669968044357089923070482883709634106122062070766308810712735710624862438926613157497959226806833188459480017662980172063360634178971275611314406393895211433271861436947760659023345158492960047345295499295662853340265551685535599800744092303711269544719828803680436916119091632263364533324661266862974434455516831152632639373435575795104537875888710518410020589958339879959822445451353658029443025792509752253551525308255741984775779270729019138683637750829888081844708006890211552146344622614088468708319389319850769307851285942767252474785352358559267431807815209013706262561029595478897605034763527896789052350336340918526657057958081872287341591904736173950725836194473696707391163580393299902911848791441413850082003693596935427471422729646162077763129389201152696915172964938281148555040979580355711393742641390964747263809506784813646753925737960500015999521599040534422500550634111212967036120707920863177566166569229503234057262633077041307108981897403699595707664375223053442154801646621952674073998016018204114207792322619912823001873411899291943544289433976296710950251614937569204757779765928995747738757818760854802038762304982286305288261345463881107741394409631520373874750233139799838650413255743318875470620818472533845161123753583328874495241216906348859022307736592331867789432771689184631548324581181882547915784645287665908939251778029107639157159289196176127518723121751560070469290085609343869257334092947393223315517614003002467048702184847384690761234900833286623358455281883757151812237381345516686955628191314036123519539678665398336254286303408505084714763392222044018726750547293413234050365413766358316654410953551281819431995257295975108311779909520303889212337450841246936324792672921730951765343962514538205080555856311467242150053436496567701001851431642012883560394627048117888153808553859689392563362831101945847612823435569999360628749362849396263121141428978393706694610773760753498445233988754224335605409426064724465150571453306140168263830877100622522054887364455754048830624591098148199844437954318671983054725473714673721746781284214097106750134651020281137856143339404661336097397401255849460415338500002693898912492847012546892053061780546003055285372933509996259190318553322495887219489025100141803027682285498654701158621266627181173588718688738389808332699617026792423659913858117693296106288197971001919395880629554677187346338125838160292486198360147729979871273120571322032028504575690735750011778046083231651989085708906682400875964848727543577767320694907469192930438894927009743546491436041357955549348300042338360759281377236265892227047663620196806664771980284507347099402902967733697999621184233818138249990684015970535495278317959125975524991795957531505015611136002871680310533093786875108515066706678620823077849432976257275439747172137699295045174649617946011443989552460583705965135899024689374640564101925298778186797415025378969912635036062934209463477387146111182074864014263939109691429255035354418183096283089143643718609144817465350868728368487526110304341902202363658329806583404243426301929038999413811963719928900533075863880385638026377355762024440421846082611952343954020299294254318741900205024128317877368328956627168050002516703106370642969704283772358296461093955291187494644342390316988195849776128675653911509104542124861217280772932996221537953310962029452657975182251689107870392012504852892547316032463597681300089847160255250462914104176616050444245028613939373851574524967337186933259018554428928015559462061881262235852459856089108099770130466183985887436588873773243601088860550229426153384432008657567689985229925644560273502542282381742604579927654137058837459574794972575192961456785170540640531904771432931209781137337286211239818317844041106915878514399961654100374566986719879295231727712111771772229486027185802483882395198074790128622402561348121667919956756920273231028898988580958707002246439749981244065925735360676364733954118132106641155299199544857249592009103053430934913609249297653361487158248749289098935130229734152531034647060511392685477854761239602786254479061019382441139667288410559126176759142054940087896465268370081054931187899275164499441058030518288371926823323313797222058155222896466033422597096415435116962085378815549492184638325958401951721290473197241670371516491881467203347875585007359331254528344449459950467758875267278189820752127439854852566552803870490438503143232653957782922118685816688148722781734903296936610500471173522177161064283024894888579788472305995091180282414062431445897622125893030305492825543169066044111330888912781754024348338736557326750833574402747013630048297404805583748083230530028596408741040030162350741781079342392865246051725408625341045214944667618371021284914091497257188761924767939637028534628334759882175770670772289957481292738316309937728650022513231422234754422579929841855985946451468684350390314845273621075639131390824319325380971724618039332427557919436402942528867210146505840229198062530002639445641553444719681044247172959043190866680070064196331063863914130249071095131248563606711066426848149947420902504927075034868938069205285471610210028557331474791661084008529287736898562988280474609439222101768158060840395982029394044056801641541171538945243610104322534200730204315260865284828953604535787727385628812968114791370986014951254706844185451923929072881468774586758820306110885474794911532141074138864914763733541384283976740191875378571118515523438069807588777000827782446489266182050245346558837361947434377809680600377844482788019840369988901856492040146378437457195604765771763497148753529247674438388594397093126205511452264943420149474713408497012302647389453439359384872233770236640360026013633256865164883566645637992031106481526435623633931034222232355213509370961371765010288817762179693552242379775216656260241135497573014130795564397554787053584387187656853711857623431937857471939579985035081848718829777316272176681052612968630380592713032967004361608181691291430592912818088530249261471767125961629681696763811424116391066373303384993152768280740948118781184558104319987675542498579919858166065158389793255707776743744116436672753184816598112104831674522931550279998771106215597545399479437343520773636597563675211447481439779932609623982600338971268883683768790803057118303171340769493891379059633504014432705976380151918797310743478564409243233539718255459610193420711760557630156927018163410042030919328901263062660290810416055096762283837210531454115711704392214764971534200239720890924410613605239216073127851967270391325506751978212863009614699353698989489629129966825662563519386134716961129383146386288035146250197315211925553022512173302931962094722039477374774504846268505683930350343868458784422880640500784492844169201589431927903016379662303396527872095562568156390966362645360971925681857871968341995483947410283964766743270092620340260322997257237091573993613689320984290367200247030533720027280038417097783212839273035096338938542591727622575162362022599685496500554429222347884038006453190248400027743775341348801335215989938742326080054254247170602001952079080816650302245176710604093355842163642360723052540350943441654273802237051128416322439426475234583967057527446258480482041840231234842602058417412378587528062618463131988655226053150118765238820025342051914431270624521243139110536045516721557341224477691444072542250943379523540914610979701581620559268793412031737790984636977046879757487332724442490312397606565039366925463662967999702808542773925468580692839991293056392310917374429934951347005612307226284322964209030221618750098429366099194983439477136694496857689442264881224914039910670322116288372730289047738573108522450033816672394101565965048622910696973855813020101016596778492150524524163597858951412311844796147364899117621449468760602813472330721658608635506930727103404682194935368589333167590774588214751222713377251630553526943871411102693132298087279434996411605103626921829523837922181308665640485185328298412378683376130991261907022373866335460773339455678784703129263634716537532090282547777127534019418852120934212233684269568396133976431366342292873151938449479967788561358899533463702974267094796359284987637751201598974404152475871775040728557820818028482149140963098586410453529806961657287735738138755712151598174425380024951275335199558910669206209576113284903353418478945780694878129790034895748753362050781539824584920892084749347087235642519520452342493927793799776786136198617469969693126983224168201909587877154725998407004749212713544394340278146389166186340477628969995703328593195001704673717058025352438357468612946242018587325606773986648467186870072551528951891526255461310771157406650956757785133396326012890387635813591423184033135516070805571730845080137132045429491261012978403015641430817512666681469843066257060720964098086648402611312090715751833710679060879766494555066896257649913350023260836668751637428823100349524601403601892419159189925922959275820633937990644299249271169988339019515965180613573895432999894831577608592304848155696364198541694025900829134781366210991417472495148139315405572913400497872095116583163635740301688579861226084476006780263453790933289131487409161550962668826089637489553038837859879843790532691421980575061315224117692153481092599586056471601215629186621130434664996556516932298784329307022398027011414332176083277481254566740985113591763468957331875643736921355329794098131053487627474682120881562550550881428255655602726301461818701211939805917586146895437388795911816068375606614039394049767168461259001949273538210144048916666534903327280258028482616623798309398413700586176634115625829647911232227507375334923375588614078459209835676422299267049663923396700676273951091983057302624288416865668362779855525365118686744053391254580621393591196711448438077488551738236403307762952589858684493455657463478117126363062783121291423235729455410918637867035685633113782220139687642412165249598360509878714727491849673012334378180463831584187354582895646400179807708658382550667724914138565820039682009987745157792741850123714960764039841065734298623591290702110380779922504349890524389320347890308828719589040376100679017864219311467557598930026491189345663675214233027772264878374490381972865809240289051249348258334250741010764402699448241367513588990261100526633287903176928198197677117933055092254550168988385755711184604062724032969041641602920344983239296376314963817502741923901882100981471281443446703980599875657083621988880973620719138197772524100421922113549246894114245414372112090493791692600291606869049421927806267868540149608572744342888343192125058473363971742076638014712200975997813876869820888826654477230072783335769094726343439363924451093740799160365246814221521418251509165560016088242931176476666040166149409617751387959304000667838298475779617451435521971107542909535756971647840211114967059219572740619358273317825413217697042690085081762346191097822496311788562562031626726216116215298679994354658456828777010935958029126216060917819707341303406969946319555176649237050902062556966761241375058739571292436871898013175671381669805507508696910381959470264039318613075638568464398580077833659887720496385166104378193365458881086843156468468523490854549529450710965680147266392003581831969193933659362316072852675420800357125522249098898054570353965505168107882852864529840652677935931955087124815626428567901773577880059003707684993021595642820310207853594456286754132723969857923337469252202259735727997751116848764487235601899102596111514927141978064206334037406646670461524244267294399389563489619484717324536636445719285643430736881017478756148754273773852289888136125549801175894395271495950395640707601607104562785797592351715554623869028246265577155348990843423689483732331337719099850118433499218006218421240299027208453829439559447186342420117431465432792072288988488740343057267417723708067738577852233243672319230819937439683915440649582059516544561598623280971773789120893086121672269536624083598033868209624720281605641588278852741452020860395156344376951038233934553306218241725396467724828107444994633708693546367123495314361476105770109803860472148239644683473596101653816933207579295804239795231250209707489881769264862491580478053842336543358337010193843107143139943833585292436929169794827683225645488250493758065708204332690153429283252246824483410972045997105029219491200004356064388873493046364077650981091839516620395962650712687713049420813661020164790060026130112716818875580888149422706314230708204130100772098049184062203228041362580051800921206280742731510572822623376036459787961780882292249221002031736456366826421727834687640584814053632480791830200948413810861443283626261692032040972578925220311877455650049930685081104107394628130349553352694618261578823385706710078304466022726537115509158412710129375703385879757237284539292895988728180490390220496139617988669206437315385861127520716472864870732451423836516235084903022716386874198709556735053670824221685660220728278626961642949943462735737024852061880916852346905339456156753923289238892045090888056432159120268216479709411830925161705073727852182241843774144994444796800812422381396128011433956107925125566938292728894518495205656479288798467478295768971565046605743380817683675039276816505508751212423949926029841364819217401250701049413854705548216151519699389827283019852789171293382302732747354572335967904262121679778835809536307205684993347760735860485162352359870983946965085935681532501893160966722375508805057199214927917795853333092263437505359039352967087492413012955087698529172665198805420638824693085516459299213503601188841365820793247308338096862952405825957815923600207308796364681882565126559078649360912095932577475791841991368526488425858095470521872452183848155746479635949126054100759873565047420408657908196467861088860745823440200596937137469726554619440021533471197651802029945746028546114454400341137146234850866902640999835474619226352406181906965593958219260459751945218547186010136586725824330239183847055787095688060314095111184685688138832308190665361771520893357047382326528633906357935617076387165550366027262811769099959556389802647692621844549401990735569529998624105286253926755935055719547875890932694340554447107616689228089562066086569944905859544518038840788528630069102190204691632172591973746465885214629803758001818354722671577554377946458675180639189931170900056297193465314174724380797003889515935304761631926385152267377564862725712122407042606969044731545405432011544768262989326191733481446407893297863327714256422001628622845256022926722039032858852550966980793417370766719350671793803838423609435455646884754065033709502751899071375163169890856762230034353248802768786910964565926739703092124666704198303948460691736963253713870119591703313690617965257847769243951364137415307103859326650169756472734611428216414046385745227023184773573317555077165126936736741629792481292498743205155835997683268172359371347012456091212295887484642867877578646795751622965835785463864395557880638259410281317519825410588466995700288346083450655637106260214808311406178732561340081016232526189760751886271379564740782676263559705973541667456189291443581212424404676011914816089260905831619643542553993402039798670408163878137967461241701829503692199517679672763486035252098113450580438489510602779967538406778194913724886699243032503589895316658938365078639346817966446042366971598315102456226149656515684119923736039138700680083951001771224019777161575827820297993227494571953532246936982900599366416589787251517727463895146269431106027269854190552230633092628014821482309609635823553388474087969696520047538050162437487064672959995402543841470139970706134643073875937981889199695346910796106300932889981171735045657785459463379515938396509980647441968924682241853711106019941292568600206670508573236766497716210397782410983939914467015508129203700417353471801331728912556922317624644415889241609181001149181985321743941473620491460989210711065194784149182976559106558188134333708873913801535240126355571162155611895528080568951526554987444334536731499537753528195430833779794624656681766785270140096283044140898051247012255419499146558168259139756529674323772834587323355629868317816780292113528663119722680719024978280040818470547128362669379424806012577422038887191868631883448040020015452134369307399895551088373207616043579965759272959559449403269879855598910900010706024392636484042799046911831117069348975342142583017574911456602802451624070688915906429274072763654290623835166951367071267497654861627881666298541483065726588427718084629534053816735134742365841971731795029103239286268275708328610899135163422402889934113026131852180686527150505983759002779807773566223011788941689719454712179344607326254690287120395766024482256671418388078554228023784784496201187429256077058990150435615351155216101657438309215090638315321592936537200580321910657657215666815341247654573083731344740394722638474346512544521661792980002338816800181577838361703000507770721899400195844878004251805255464724701063911083619487594713834381627924257067711581105282570735802353540652641183829634997288735297250112282208477996416073074851093528870765045321232820222921439911099170191434612580973635919820391541809473112124075733876951153040686421981760730940392248786343513079856829965044538757787037942418740284997136502228750221662928279924265870962201635314064803827203966095428887928130337192039410759247169242739168498523247197273121591784250520458251462557288339313896397732661534729027052493515404201580059981956608905079272892706164790429218771081619749768508639849339364643058661360212160610191272076371006352322980097730083536900596908930188252920677441148336565335213544052062940677350237569694340838070570449158815512736492862139779132213211843388066176862669989419112198876291824452684702959605871999341982491423024679580081630979799600019718579349756991631102855467872079017699044841433689138792070082691245858860091100747333527615921285623074522312582760989162946865573374037829302178739225575289042659045727978291390647109321424303936944279972788242891964130377157310772605953533486292992603361085012572105175885943335595705321341456889458117518989992036681091968371021602143621382567898278967201088486661538826229576844449884230327889089656416829054301277201456616051237734474662164978054102538036494621644430726212087953103526033051131027386921359383088225533719150606934884972757665515341103897402690521343519506346008077717938429482549626794547576980199283223676534407717065157853712801659521185640516453515871565192484321804442962765733972699330046829989406888341627015358639514826801677079021155478293962619923778866000228101968771938334162366469804573202014667190358534377215482330962923275262634963671825984637003914633619143396330500521755888969843386922843589872134400996113166528653861650963770197465796117647298541079103250256973646631652580593033941058305941438443670583302078961092385000096028004387250797639227058729182855207638716095753795885220489180587608501087576665670950961102068748473102397688480068745397125317899151900803171836227422289946173194639475472087332607221032204172993718739866807063991965434685529724874290316386815414750536825089647609755324478912829208542640630837182428790314967707466436030120046677693513719304754091874591925748831794738661935209325972784637836372417065832634101495661541702552237720067651495419730409007777535110394473910436455762333458257497687020560780560125766474028996604483310845299656108458520836187635944075062965164082259016665860024741824447869072154938884824126520956717610359345956570059031363334002503160837760160190522749970822199550294007333039256459130986258366814988498652039570467430857270936255566922917138875176546035640770701881537448577626102002317298447304080275355918518719943682484835725447927289531637629163866387981244986227932821777092957191598008618007108755043196577493390795743913791435300045489842318803840629056604453508622889454329052961581308249435966212373719648882667006349214657094779879673766929203239990406226893937690672818422017388165317029813987140416820890222156353954178254095413385973580442456560445558499420284582912636669611387427404451225546415356155838383066957787260635657953616728518750757252485659572480629089199805995107320554322842323926689320663451184520268687258689886344606068388694479162354509096941490038433598847203104301976611951445601852362544266638679678290075412941302729162013553313728522646010957992606699109069616544863135068561276755095781547242671190932783722064505309964908887877840158912914910105346231151775487613772792899879678519963830591786250997836698271218528501056595898076691114631296567610559849673121473718916782416581126344147631655121086933981180869415987776601838722614534041581254100451763340221780549086746753938766610289735053241990894606197687789239665605165716452187952517064149162738755920000811374455502914943892262459729586085538415828908694331245193074260696566568387741004970586046250406779678496790295648201386486985620162529677519187045200318621917855086482423481330608007219543743506802384438536607353392218691697424857241893460152387618386782325153321432760552484142145781862136735387766492081605376589501268788700420050453317070218115339201229440765302660291694287227700950440380765107112761096963572158992801291875003909086676778623232366690994533299491222168137364267573039455654289904047646814229327801683590630142563153751747079457858925522910205111288353935603204598220411265610249301465496049605100661153637159888807908902323782288115917266030548928229073591717694655741521631460966838791102199409138425309485441867582737071365301751525547942825571779776968661573074132570848279551828767121886018701878619280272422103259889312657193875315049837541388659071098765055026282156387486107899591956053135772784100496825157507016394803644582281562465844931202245768097460360009083034532364442320183540873202417639221501463884395812838717474792815470457888288508076821945174144028105860328866061726727674515030087857289847427613927570162848467465868388369591904690837471560863827694337872032073339132310877824074716599328692954368440290176778939622098606562704309952427724800739407743083724696349092602202149637692306858199125713600548864386864010917928499351492615039593355117890366131905372145092198636688161883816483303851872238717415106454350355132051773548989777552757443255371566372474534435441848412809716879074979241665690375961387244267989469704939164542096816857631992943353367922943450974577981735513285980794037989658748077626750133198955052583318759656463244526191339847597578899938757558196148864075073244250467261088756301070340776077937405119970413498591233848696140017565253179511771575795275131945857256304538740165986955527162558693404651982237870681250364694679537863190584566503257017428760056979496904352580609209111103053294614675377385059624280899965796306324467850909780831489026318753391745970785291441580820547774726329434556660527022852038096530229629083381153469692319673185432212788337117250065774907249107252485740348419082835779774814914168825271376969001094340761377648487418731698243293622743693716904170881810872101742928109037100000977309557903344136643273367808231025012640831073700517532261466072965558652756539975841935786806116867047742157426598876286995997384905698693761028030005126905217313490141907445119240485586174004947125072513293761190201760157186724092851713785477603552145995848354307689575140731563893520272232436224697297570996577403366115446408204985059861276880231146593632332116664047060124406837360322379955207563026996917043872020612169132773506149751543096030902910862068818208029741138639192386867608762741997860087946363183791825619263211533747157596191757134157369834295405013020010499759058170439698811648143980733751968237686573164454534211394206136959587926718539689642312494935570859665860568612537475919659068040072420100618936747953737753705749383127291409003383837688855841053309435892404414955527379658360309647135313289366129538476897703162917189354281206164435348255552192776966124707287270272355902245433955885751207009741227994192134495378305063561634794407295832195458144059625112222238732508215922805408792621363851812950739715101715283572373388069309775291979566994423956314498349376967149231461962778062765502443563061034611737001968423504862603967799669087117588804859019639157112753414649335925988454052986607957770870482923146856099244325494894435569370404603972409346620158075409396512099348903782562196646067345376443663877635728814318418090231549113721533373625163581574526840997161673119389664334579356556456354401159515864788956168788481450985197215201467974181561001940631241149619657961920795580250374263473722428593232378725810430245637202518132904531251551627240821059617789024316527079137041828262423203999027718050493278416463558083739015666535614730630528564883352138943172947828201962484672894006650945217851258824311228840838756059704734974004156889921429014908926432337401389537678225680966329782263719847506238362967059541391051250329777158461686302483375117714795942380458251770588312881492313634727768589869682161697321291504228940601873619348996292388777724630285389255078462577634963779959329989151426153404562174906613363783607243267517210079578320766293154362152207280832251485579899573303194771526628078798007578233062417352061348072159821545393566054519332770028296707118564344742106657936278687268732675617734737178056510690046607762220209746122648008510436643666435541902320142352415694782992027493364828745928747851672282706320889132159909846882540327746849007379809382050344297894224907120550708900023237802233950487712523780018161507312354618054223609497536035163494093928091032767640336242711088275287685948003533785270118743240118979225026796544540327468208658559416238357927216565224536669218251472645443651889081645564816245005362169954201386198950135410692688457725430323102706392241999820836165265276591679465060858160505568568712438796347024605304900308450966553605733042168429732916370172195896437974642297090857585959129744911909686268599809774528624601994610190665878857027337811884181381233078873788158373359983366672234669655911799888726805731249876450737363254821569278028649052801255401131062341913855820271583117070719273865683054999663069013111249121297160457447041240423061246140642426490959698720730873511722072350750404737742430572024048268685119133667530568425561907620950064557291163632179554525056907363270277399640559645834440273363853661188000047234146519397763559239145260412600704968936012028106894549688440479900267973574869188916898200795990111065008878815333729179214937996646495852784883698591027255166736443038004395574418572899294370967551529143179055369802934328561669594406191593608936964899070486635648836640763029576597160034720166645043990534279613912479497024231544925793613084992394121484803964852738532840786244112636713504212176390740168740010064318423771759800182571206639184134636335947786714976994584189825206727396176883875524645479643946415113644023798932248203117158653341801005086972304051184189910711151723320637594773150678911124405222765005192822545537671036184314807662167004590802562833162356684840697492521011525880952899271472039977820122616771265024357322419282091459744940443106332422973501916691938329374288973886386034592918524051364182398592764975688780001997803671401869838010577270717330444418407603271989346719916686888680593245148354943447462721033986270080485900155124951082963992792987842114837857821508811758170325737210523836242819698681325151023148163454095321894993683800138795128096101389801313982043237028325779746911915430218574372464407978667515942327600656822134915485630059582718562671520698991302473350312566427091102259532338314893989689756822401425548363478786325343080669902177859287335109626530228527804055908960006937280662896796945405843803882948848124047942281965182397536936457929889578255794210593948378679524919234465908033421164868438416051929819069131125432441300566879775210550054157419483806784214653243093753518480506741715472803332755990227351462034161722520909347730060870649660727422118067613395865270827693082504392270738618254811116949038529595723094576904555387646766194045214126185045174967881222625225420294995105078164391170749628652025184869718810057932904459780474128600044356721564987537843310493494303165385746459512014483412377153293124606805820556680644340261399666836315845102022850213187298338640077707077917127911385849411484173150612304233608674207467083445888214784873006838124326048603420520398039994672066938235732542051375164474479235433550682373983123832947238416282024613236150041949833072908669815550674617589673248615861702017780769184080195436695753443836861503161723295315725658560497271219460777837509040504799004521018029935893811387189517865310399566336628995254428616900954602946642481835104052723177763215261081807631624720322398654828944688261281379543513838399159096503176110145561673340859375841223007298962049354231684731456119013370627451653372101952784150843366485718683154707759266001380413461198030059470241851889381598790912932175523398760753164627792920260871619044331651516812323419790246774100510382849642369445921137356415332559100571402192386504324237600586223716858020906861290616574468722975254000616033200134525382789948233703766721713913420053378522189534440356774167756989838340371683053339160303712468122195094451323769643603060107933336317574884600660754013122975875644836292687447653875456366671633406699749727233770775602930171119873713327502029649301339157436902586985805804661850651842865010512710599579744907900725568864758808468315496153957143231085273655909832339900927873362328571917762632399121621719422136842073993822309314300099352877919729663183063706089857543103711226019781257589533875565388292807852373328379571498654743595708116126805997489585227762613411374287400898540454081729983600454020975504859445623078574230082737441934713309411334435977095406278491948107490251001075326160260816166141665828764940536675366409103075438140950942363295087616474038594568300076749067398262609892149434246290522082284867369996747369036618212558758764999033240531377456820933035653514739288807506785309262157018155354164246038618753605910751171596544451629138375154996561231768056352944122861796274432731602355764359001440423701221314110232709724507824830537580539309136187075390125804621374052404104186962215577145031687226391307500214048177954438873320863455884008371509806523844996560156955171721235083443685969318160004631899389556155154887502954567874337030723431693153231859698126685897895105095148228879264170688790144046095670747756454596689425959992788755978477536636909986217025002679023725302120269168121827137745844016745136986531559713305374725826662884442853078675832269357444922580319812405402267749674742781956841448786497782251691834976002692470785895021703704858388868515265760165621177267080605919982230358195653707487049616510340265334858744325169430110779016508192911580225932171227930158137898121057272065802163804143176177861748042060613560746270301387882517734888125466322091023046199189071897531864764481596203251883661383342557380251629906535720631765398761130171689454545284542849138949012752571883712193005628020569517371873637657312815325305329151583778151502917902733190305271744684958622121010306471264222608732792916887491000707158866999254047913786054611810141366817747429490945735777114365311619138196776056638249387208249599690279274158972264263533482913699417066232424301052566108557105882321860415953995261011470246610385777123349945013365720795738329033328267790338461440694253915947579607200765511873466671258279119860920470033646635678259287228565899281046026195224102321794080074560857019502214981683804045378001236533286039783959384004974440166902266486137702679291194779601542349226685477920055280270194687371379891364308309741325341794454848006333434887621180433722346253849620431677039433650809755697980501277777113845268685091187424823340812151151597036955214920274705302810590187488774145471376334439641472564400585203279952036644952915857362994275837591364735007137899752917263254850243740999519067606448557348572716000678300808919766778877206053237007230414810898261174192999230284869838903138569158526989803738366062311867394482801934669491046627645436363276196627877141926295125717141746847349260139498229621952941926164899210479487462540920845674239802557539445478424605466878288948565437238163965174286067026364536764787585857086934460845630429301475483163588819083876568053843919529815202317165149427461863268394120150501380274794164226549074722497966714770269857429653319371853947557581888330894630187929986442821810999712432279880515190220225825103925627914262396261528127570244033580516736900703944157759769468332776781478170997801067263584947564578699956407063202560483281763769954234650000264770866320237533750709170825618178829121555348484981912976077434644897683103996518259302203185739168355670343119920701453229307854524542846194775780342354148147108371829689841186079764946697999961540609342917861302618236089580266302442813911419612144783451058076754515595931540231562270809029227064151150119300956423560999465999653837045524948746983692965835699733590149297182040483811117450935081926236794221159650071490425720958495747811724299488339537170111127932294679341722267132041146536871343639598304001759956917134651127380387343487435851780856522271135939193895628494326974660699269244961652914573600667083355775273620390457210060853612580746188269631693582473145445281407145308991224674238036221680829298174220621860798197137043727200723464659535963188623974496505669454742056367794214902540739842325758539378897401139581409478646694538433617227363033864822552034428500528123827744206093078356383899501146590774355751444444996321829960061275708179358728977432374068967803416414619266061210292307970707626315000351235693107429383685067164757433404492504794750614444438344268104672144761836840853236978233062403887482344558895359341454623603202631096561293380806547311399902028110050717415339231618537126224678146138703245509801626065686426890214790932004293128602116907695945906954418031458955572518471438409956497985277462584714340876550751083482988783963757153324906662143577507370210340928704211200056560771784033654183722097707039082998185723278388513255915407843806226096942825934133693270436473297298053131414410673096167498440524501223865224580163159731941779290670475905774711449587324396052040903560867749633607269786383362511207050385233066787151038662750888189396417820848864094163550696516989046092304161178546471108800040333177562861096097669402728598019472317127433242097596374209926949769666919449022650020469268773013778291584111777734801678122336199306707466885245484440238800072649836711310342917062136424156843313918053232383983078468123706545170731937525394324743353102231318881796761219340335058271096924509959581007125101692341639032718526132731465816895432810824251550267187134476525004805214087356728063163982776436973281937480367061490759085981747339946738833819701910602521740453589700326016152713271589647731441404281010739627169860256321696918143984628976348066263640404724742103943068890300262217919407490294185056643193778672788621514872444857040570417491743083668801820211916799180279149123365031855739327527333088498161734020418254440569737292101091210357772958736197407944977294083500388828156900799618885648926774368028577963627085062949536784319273455247935719907179765485929514896555210085742609479677331538755145823312735881427161972974752998566400151194369472948682330746237551435896015230533986496331433897402923227963168267620139539062424101002664413774030587496049713880031234957424411170400692461605233008783471512801605298659812776385852174133626209981186918938358345653057146829280758503052663152684412143145572569203330345681676854169401128235623310323455220016266200412727026684927816836926266791942439320137398200185642991418955464718939675339859727226028984577768619596135554459532721055935991298244358265061294663738057242475692460861527669477565237601695691691877575077509877316632375206719112645395824232996123929118615660776830180353162751919847202804452994454045882395557025233387374545070083797953533868365884599308144877121224106120864464121937933917213846371733319958318928844743660588628753216510072394367819660276153579065026923320200465135622260332133326790916912968206896304595976989601528304064458567050884821874068569327242388967568172502936668476374070466511317019575209348088040354641188892289787348206240433877593443377351012788990782745082720418094253843066182615519009334935552955266684858475485494938494967552976557793389120050509603720244080853334662123762719793723288604484467147679471941170534997419483368784944658587229478672681938138968282221403428105437551913127361355898698289624008368882129842599996702944503383544658955991070462640172667935141602759653551368815776369942044583995137647829628663131001221231534965839399461463026651772976511526811468953158755101980388687271069507127424565908828648868313976235679953426838583195080029733092861157150407331246858177025938607115915623640069410010572713698395553642613995001507855911638582456822041072917198751686674415946936002316231579585375014210379780938502025242931562025826376153063786386677390155167472847163910141829719442198145128316851168493735526463730798576431768575701484236408740789352058681668788075735862455978596131420928977008662021317085139495607926794154839643638696960646064044825882368579418247614851405354060662705787252435746949859486068833695557311397454945200620586897382572493191047700347322661176946901552848619336843851237375520485128070259328150932433696874607136164590619330725124114051944408510453107152694912451523749776692224397142477111739160271001055661493257893822390736623648614862400268263497424561751004005831896928283068703198441436303294281620983292409389164251515600756093175861284494043497224235994824226709698917461917863787094372023594255212399834252267422936777442893986231106470680422080051493723415218391429320112757538538152722308570014027075530844822501991820874404857371262082276060042328948543302599518455335980198371870313013246335949291371848114991467063678242040592349751000085649630969728832751513083136617133164475700823575348532001183443076306074233894249336445788755808856138636225218959783400429992989436381421511961005832721133631275549113641226868484408007284898058005197058362236770869886182300061523332360237274414046733500673667538411330822614792668451105454556192218178234854687567453892043600237068992115945877699734273688549462432595826857808760858752097166448743979126536642225144766853882164897991219139703135886522295432375281686953025665774373025556138491930286406006798907600465458206946206559399603295541764326024991786904949110480071204024813493511561562807263177679249625023722645669629485182963500555510003335448887796367378236138310691157566684115092107052582867873880273394459968866636536467871590867185180009580075210563577153824342282110770314631151974145511413151112232582017775144045997964536000603811954043472225003066247455557263394762082853850116658090037261991247692211882538771190182621125886615683314903791497925118251236601408921425321372440272474308166026376566103285492314773620130839791355348313991833920577761293186161487443714546368334266843700926550269914013363603933096481736261401808646916666943053625645047277738712426916089523675260346358278950869126866196618323149946519669426092399385520071822088538968327620951347854373933736478358464833341988758379440954439546160099695643379929492941368487698245794174994884303415895408845403336262531882986477376183597159377008643623592744228955744851179963996057437998203792488734880620325546390780235577360282627691738879284350348303931706658969021190228577090613214548879403331887319146436620250981113501638403068994314100847127956423998146619152481508119331358228736762915421760355153676599027887866998088313007968660592865811707769576845589411213031205772873869932186264820028102066026067911651743403664004162278364920630216801991357759335718017897355535376875992900410463543711577972110530813339952464979263630750562505388948802268679332820101592290211794529137334659869207531837711768969445037532706728557894994806768360107989358484976663557718022193801196136210942917405780671537338138341560189293146145018854550800490363261289124650531215691866178661123946688832836387910091158318626391704067701909442417173700506691173895530421379380710863913241518828902128499464067152291584149084550831801244343608041746464087808753602870085445324097573012361069010422206760722613567966626449015641', -); -test( - macro, - '-51676101935731', - '5678', - '114598568890558892351277519655251349170512457301108169122918046980237508383487307624081510756564677550336178477302154205298849988621620086922824241203952845169587118918761676702275886803533985126048599159621880798222780212304246817740927997329598603522333259993676023070883723250177300932925278631685866750044996349161018487418710787156824698743699059007370890842841419231416436426583294134280327799008795618556337681789763639042135318458712688112601941846586049438371804926113126508996078777819094310659599757182791807946793330068376689258887811689995072195331087218152210579989587318167100041773383622122477291943850218476496927044272842237554951357422835645664516760841149829622887677523325405719345978782256416220091760753375551941881093250856520343277787117543740369641738849743550250267305042707228709682744788048246753481687183391246480490101912653586013524077299683599506874945043746289984496657526568247754108757916023746860823651106704947454023630829841108532968959604789557821034558282678387782274892400435740522133769190575725840235412871894976415960900858952703549298673487135436478720837173606603965003749202465844411925396601850697464037386444381718980799446621464654550821206321596000370929647608427450678602369409467488634567676260749990886237210425012278562172533337907188794399372225626872733254924000975445679212294865582779159284739536067574648674948637306603357526281158214867606477582551408107503527328338793768794019922917887582376894908153461450324195019808790951956266885107461973925559489970262966079308484289377245650607102408136209843678657317031621605407118233165024507780188477008776626376774732469991901945525053633560386998290497433245057356518070213620275700745654781100039839338506451450577013486892471483552928409289830016271158248107951963293890564868178813169793288638609421552999187733984144553406615257602536512368045676140620190929856992488533649322354718067519310329366233012095782513367770623099210385145306068882019668219811962909945944938303357412007436455159207921731034641005985972731076872404481351411053559046816512985501762256787820371273853296301441525251524961854980951466415757745095790408750111233498938399843328976884101167576106332111369898329073992906185716431137905217592404057225277504661400556077285374257237710751164948498254228336520906926692000699164318088485138209956632046211769172737818805518350576876409911238994857621609965737246540747228915599832803850235006646505920161663461782710578007459880127628658300436718162035702759857413264686037450843066618529962777161180564480610570194083990996868348589497339967832525631952114004244381394862686005465286457021469621822619867151692227701982207711240403754089139160258204655040380941387512320543125847873280531581254727837191059980870831091122923417959861596435814654220789276907248261882603123131749272763005899889970210586720440187361168097472073369327028087807891921073775186041480435653913681928394558065224090076679384591070891307475995293653429635959202548503686994214508788450093243004124213718944072946348546273490462900925735733454594192759136002496877104912413694566063277128709834235803795521599955020375102449787917179385948650401410782450535088196592336719230363010532216782360997264383385827672744353408971592600267691136637128647179666091641390767353626655629610767925329336924814212570169908132079298822259312790776336192539171954812142459076936946385158760440753962659197081868092892356974717649297318187816581273710002222637822422625907248946609177471022616696078166962638903351786881559353388016022793559059422611570772104441502159519678683680896440534678482697361220573057326321241467487140124612227021769519132788278891261578500937493023431494800715316974572061757711388338850673314696559686053949631600706217179936149359062760652855148968218517603478406764660079773518392515740066557654365463358812116383920109518376511927056859803872276659655935142427958378419267026204993883734671725916631060714088945987606306190400841739343960163767980632636951807150346899488246361701225858275512527213850024197265932454942520600005445974264278700061722886358112352180245501375011619481895903494024525948428278732709789878138429844599672738323876521649110855277792436882821166942741738868002576408435397753753580116182952236210916267829966145925028378437875898705477022525397608430772386789943421906088726337517286361167325374608638664447743003669920203279685500192102212678244500280945163720924806258942015670529098264965727843346426114488713290334508104318728502382771728945872501553223396187212916235118458655838036585541800475260873636577479118287025217430116350907433315459696137904514955307303089701947453368286386613774098275500676250943657017383834720061347722825211956235385743059349300184053076658159489552304525616565099968774334572359425467321345729237028949216589829910496148348266399952259506966453084807497614865786568010359718381755280552030450357482091573325492727231276923993244258612115652943501643076670607096916922788985244717748167425031600866371091539018747314619844176434458885344303041217826099156483212620631712885522804065144269853819342281878739269471469710167419263261298426536005724710899328976253518828717132656525336398408521558604682092666618949049723934689800847063844761671282296978918952554214898709123610631472079549040944065036271515445762211638184670207178784047672153843595557392899022269520772862968918684932700339559357972321385437515253951979000296108897236060608128673387896445773358382692008138068938089087965375939805087660261553154170365883140110004255362850999174312472258828659845801114248663995523535651080385407122403810220614699534394862199070170516370529573724426277383249873364882798357333666601674798052228774948816335992020369901620508453181317972153011582161807177844672456985443467954652113777013601630746866436183732233279064589871750135148960495813527709288884229866780850817394534670003825516127760071436525331020214654659944097612888206044199184355427079633744822550780458499778237357353947422296038656940932241020563615278249555508480330508674120678052089502789507188213274173100770916834969313508824784364056056402134407244119638598785990062688861144654163575302227468770905464187883181134822725915136640612107272892247282302709032318098895359710245013039285473099721463792717954735326941637258027020359449474131956608190956922971406645107469617185652049606430376373658432400056414731724407005001708692411063413271177513212657905468790370163043951258130982778875673922295809518571866979572550249035569072335930443175450876647946083312614092963535991789686984682545283358632371449413497269427928750522476008103850277182197862744717478903974777451339726925492684847344667201465331748104805481572363883196797787778153950751138898727728375184289353676704124928349416752637531102490310279351764714073405197836749014690395282266606472002997382187295402889448513435174099451342568509159453242120888320839737697049616714431772174331671258229322246266889685257316038839337528724509464509575560371587287218382144584572419703181295877602278221106570930586664027065311454892200273818659381311150404756262029418161040565111664447264252108585981706307591881047374954123445586938599411011096620619274323216164888259706949545584064116931697419880810232135950719390350713062967911958144149654637677624682217905237402682589189689936992002791828405957862158911334297099480655817390013698092780805866900709190383307511190456176470564094830491741371514412781382471608566016857542175626271815830825751173841300134557318244910059728166314923856198690466209098544666893459074761870150034083238014245526074209050076925214228138545561830243367680472907455390358950492305796631316420731434125187536810546887612854361525903826549660077385607201642040850831267699276814362171286190066768458981549632902853741404667094999899553250446338548089645534133891269993883172431804704263925215719942166060373843805638153594804487097561950457231382850176704556278355177741960834256932103041468108431421024565688930277277827204256767781041934083737995080790793709338041932760953129953324240749245316117068345243350389721646548464456799564122538803508302280206449283869830911336778221946967418555187670963441198271217790496259964780654563445592505556519078267175564184094236772289072470230033320640614537275025449633888698376301092731992965463666856043698716302806693885087426713749261988769556429463390046244837567904659070225420983410009710978888428520162826187731324371494738964988237894717677430862117281326863913479208553025891950712021033737482821762882285969238709814995624715621242460823465809517565513365312665098952226387532971101201851401611211767107556328808562154195909528062579532668678860849786353548436978596941540803973584469644923040177756384343881496136104278613378924581962143710807219315022833887527431763513942927784402594506818541221504288809623165972198540933669494785758163834650407164355749575134198337788610507044159766150241794499149571096051559220223878817602912552525929282957515181558545301005606558272154807998739024160863626434649314036466134847629318039975100093407373104577388406981878656175843258194717523909092875616040477453623785051493436611595002796440848161148666254022016142475461311658387441335732482745839024940608008050016971556249565896984096952364713943123112125591933258703693851493005494192677788993225349131525711396145903045479052901233399936977821783416065979989065328839546014013831203847910851373499087681269273873808794681827032455802487324933071462267161585550348497079770547563318071210788547323150873537668915925365865275006606032948938992420253484030285899801624037645490546643734003092212092762896778094831579400704783040331797648705647138803684988666221643282949518185294231209149700862655885675685742587977247470742881671606128975518282142621174602709267031158360580359120233235473997243785917055987801766020914435512416873713285800875063783960692674329948345063193713090346106430960233900220471049512359484540660252000207287048940904649627356855235310748631701290142334022573624657571685050543054539462593343925120666965564304346218619573761401243630815566172421336337019044921825132743027076074431860266381081919439461501518228192067428154599552061956522454587058878725629423271121973055948964177586675025613775553459402756099732937841164187693906160490012428728615553281749083877569856034002578003805619108603440019554292851568931421048023066958052204343883372931130679073105823557408875100214126784759475874110505599354169570696609784560599958215019928598013718187402289676120592754363058386217976480889644579627120147953445090187876503616327911008391800184735093377883625195033462470489375923507822652512086242908850264792687042789386655227831819214938281104644932640292609019834942621395608142214243559409841197661527772521605594271433534022197568992584336382425215293816118135415822763659169694051345319875623274091939751368133997813845916207449451701850545644437368283792955041875417825002650183812267921554071554148141810545261132326348765749042696757503149872630966032411848943742788719959766685423336348908720532382273782455044811025224688005258724128117375301877446615463103917254847301569577217661986908844517236064250159012321706048888909681124601158873187553237768719599661206118675972473809098983711387501122615038573963236084013215429847727184258992906237874964751406104681742937670985077393504140518585378445945934961441800684055554038233956351167210957484786967705794592308352175762541752214854817124986107384580167149061884866946918670005168162259392927744148326558953622056499756057865517495516987090419182627739373939985152189775038553115538646471075934221909696916621433427020321907211290750366847722032569885358324304825748519823761695735069483610277833391784268305687555417321060681254063601376044472764727209479821068239831947119222642427588604524821548797463869612449236554848366936415329635310834448639523331032214535561193061625240491292472959421415693842751590387163835477828542899873873355067539845115993799752754206275423338217062076744831694087595991582736550683224860678822779524670167708708091493709146151122212285091313848566637581973054913102622054948327816252692080182215324465447499805634653027067312991605368041127365270645100770232874469104024167016075695806268258050422993127312933128697504418653934394765893583568834878949604860449521880438659616802122657499696711371950669696088698654540203231615696906652300496120780993861295366389568887602126999373711575248980111463126737434199999923186123228140458802135764964497499211839068795147064258579583962890520656631190772155927073711649314137404718303647113380977808317817846980386481066453326264620161085488324738434460460038866634635020866393862469381723564361661779993116516911788408702482058657042742027085322886734485737469665890653383965527251028179320635401480247183169549776451102905415564180956069929150480364980253864993561144620337603341026450280648329108363155941423746477676441226330763778143302558927254074511454873470596647216773968167693426794670205504808306963783432036244979681725783341795616208450760202661124160076951242290485270351100016293179519729579532961953093883990623843703845911016699084294413469034800124849706899721051849479889146370628964206263232509984714695180238067877770898591308982070720120248367443358203058594410980465031081259361282748294276045466637842578800793537425693971319078319720309483472991281827652766395632559627448449322724455935973458554816112349560437316476772468508305512367513982203113683319867051472957794682903830326933115041030819168485955295547194534592544854770444190167625774242882339856600323988117721872329621119307065210242378471925603855682602511342933926964022027574473668074767250277614350240898114804833628233917590283331643902799593247663848733995782588708639967040765878261594144333897235212151312166170400673009191876880782817897642797305674083214304116001846541558880139343876729547122660589815784784823845573389037426438950965231475933765920983976255357185318394294462939870923725191627253724661104724674152692069584822984507668895796308777450228162744501914688617738288423774855905509153854844523303840957562160021954437904572106375782764718235463296636952021626993854683250625366396838736958893686683145675963239492023700157535671554883718959215653559018684790556050406047348053882167970909777535677010769091602244371438842557331819164644414366880048931933080199464775719509620992644091954275270680288884109813652088838217429569522796724565190899510248605280475710488565214118916127660760240741412774854958523464875335791354333554221114105991785983393823020076734058183927249261932463022507518378417531613595367008713063568456526553921055526758039628801741635831559596552015920057728581873824235567176123583511244661921620535917294970250780006254560913313662765305807933366774232072453360650960008438817118037078045098657774617616105096015011390156583453754385678396291801322575711617682706241038506687001234836301806498523163010650449912433471614658213754184557683081702691883198005157762869533426985772871548066409461102566074482585186196172527568428897050456306066648582770036459460511184764057517774896339386592062506459252579461592560474665528416239792702809524368229823156443879848127098290936890568640344899841675398255520835326531345996368545121081712559676548972073976307843066272299578779899750067849171423314509815187548244077378329796193933542997364333804995452518983295374300579841041477430234285996531274115737469223410436044734098218596575261885585549688086844423068789246324166549747789727265524050455962780001580710226770900533745079189013929659478693513587745539578848213377469358275467176678200951122297705749503306698574297410712427125825591862363276134686251235055301972061105661224639007183964902695034424436437936253659197166818614429825626676264111882581783852335169138950280191270126993381055654149481441296522956835357856587690439122868336488948939918429473181311497573245935858058048846043815567877289011167331444931953925754671240134069623866836792786186011879777990158691547401988209088233436138946304596662211246080716963940999419458347032733075551690030530582476791228961785738428344668271954394260631144673445131619681560910288236163257493867850591921101601774216283724826035337528992934585854238509545972201306935022486046021526186153884783616668536070352766884410433501411997774544944294529752318683967218547747054919125920723787453768874396140732374376069661038491913390225584336932342777315761255948878551294079902768864779706744004767497971699010857817837320331732586562556917485670513125539936647354410777628785488698349835379591475098154799827267570479952391820096174179651670850574284042676840011853046780858800494312309921469703542619592726263073590976462669364922795234207666005686292826903212848877481605826947453296687451059719061958356539720636942722901955175023641714596609837815361932183405821894237560762724700527878714340752426908901818205438166928697623647899633610409766731686872645318577714032460894835086863906305213902132263709453953046543560314104677422693777305934218298526734878837051106284119542143667788585456657142746665427084921846682769309335227479860142774263718482271045462438363768361342074577613689416306245388036366588228918750297891553343601271116018104061166106299788463499404576467234680999408128685491495431444663757432415240164158488210900819745907723117930120695685024585064625587827493034169505631321361629073305032453650015121172416455507667013522455054423012824659556913170191784272134013229862167933357870440372597009868509136667331096909772244774497523425649971713882182557907497459362685468864499900443106554956344003403877683026526745408126870149084364211072799881433860076306106247851979718211066568293397639539451283955573658564108776175764110532523449193170074167594375276229899521780717952518583208904105756371686598266057406647087463129407379439591678526118563375375353708424759178126712588851088358543556455828259242229752207982655534691287505400579846562914613465114055818872346386918363454946173595045963724905520868541270473697264250446046089642748190999453356935960747546554692305385529475044104740895111094053981210797991140570926872891670773814468169522981197767273686316613791050298552624472953601064874491619431515581298483094974434200152544999972253615705670333910064258013397051190672327809649449512231521002044431168670777665701194943318920142732683570462533039523306263620225871545457775764770604929953997570625951936899909518438534435970611071611463871839879758260799824991623563429811928499039440771973070864273967278618870976632376075488071575461144561219935848976261991995743418626824010282377472581361028454622921441883252823380473535980635040675347266665813701114359254871281962513087998501938848746260785427396775049514168562612073137570353309933421182587431285208099490235882059772793358564991437202016800963518589761455026124188003465061263343783842908952238749299315855490241309786950824004062760976904187502795945035840704763791629996479207882802190639214588281672075545825412562820832491492193486742631064101780835395570244051743402738881730159768458032350492340983945389655058528481715594070179000970782625156057915320413986266019990172337946416918557063800133747641604183437713060443142402624891881249459030992935793527950409840201343706778667031036382270368309922120727685173156943536928765918297523291556499898745165164935596868942828843358938043957961029987646769997740718353298902113509786945580718208991358463177836638025806577481206139581029605232343390118748079783839195843230044920030000293609262840245610181309358224141510030238251805707053062432073731984040628183721390347726139606685474826304883630174052769377584217789247910727483325946473633314792666461326212634921565119552168762472730204002086252124424937891781185484626212876955436221477165360031020231430386214870054108295007899715254119071513260472470230202533983791307938408960011206611455326096801350655243853398472597807466586200601253211741913149771316966742972424796953362829778527691461619646698652901365907319538496395153314189223850326377266970571724729299225616643375250610943592593231827466075999846471798767809815413033084807935411432143738782707086800700249890892016781300755462774204025643372850935993536835930431474211275360661334909180169369108705004893833932685971810039967903674985151600881858004723253102936206563045825118090129751111068119272073957023228117535946104197559484455044224813743551400684035958704844910240433782794543523046179137502988175588334343929604010655262873143788409800103840149709367769678272389350632655653061526909944375166865821226676124073718040169866120459345622225584107723626981527594409083885799002170436455111357966813110193233521883524236223930189338177788877617266977925443568413998134839137304794431773484057275907471161083605792371548269896511232018878269590877998951467990708359705970388117405757636229559483770009754679879169950634139569036627493168743252032958240435946744381139249473095508589299567208080597578309780705860706366590038525752672682617991285144702659613402563158938705017883355247903759797019472262560188954212310667319942679244018502332473572330860141285275142567616352011441717389434820775671752035498192835097210704346762871785843394366619830754655068315068021943501597109761283722605580646118265029950836645428880355482809418017207519930746525482467660956501946286248673803148678778320154527985484392151772657071003568822396992334569447439518931797472794360893625913323930637936123592307936959744134660419379541520223856359015281561124867120268443532762202836358157067397969523277941814805842994278790015196862449348685333746940835406048087120468705315737810814851006986239662973395622981892417635797361552255577200093154926399160041205233526050099942113585424767102462092543693848903032320176365611859456909911464662553394222492702361972492589328743134628042819438985147526265136537852840491772207661691558509954371067469519662258250666590165226871146827599529979187274127942586949484821499948977145043677342942737229631023377843981185400933835831423767351371476191843662990866109519730716132126804072070640870780628344547744782396291260010070383315973397408134147633405837121702299828479485082965001168058308660534087429710071643832112134185681191355797031035640660674171124608581811772720944526748929882880981531600483484334329258782080131950152990379792064594496526209604646130807483497903997981366660814109367081501493013317987778423970445235345262451162417303194219408843842138074967028470582769901836866713822445861935378961772248421345450181825317803057793865331808243999032870740776976064805740571853847337064834310551096634478336669042763136704807586517365797136211624710257953267355206084531695186978286706442628626395149607414222118992574163280333685823680906473269108560879550907146951083501973652650163620691173614434376022074343663278172616794365354028350879611668170977299413329242853102242731460245981931645393086566419168095714547735636341109457537424127013466092829987029469225005609148935719219627886553517060926819156103842061184103249786722102357857380363966877195050686029417164805540813780785634440605334896258106006438094052913691329158675367290141201254618676773332219794175088755775479718673883939486154200593603203954816323103020616423867397093710839615897871898114553682658447075458783118190023366087506978374367440207438924966819405213686487476793825253259734471325657957108673156552118127808366008364042860528540535034950176612182005881123405988511608306144849231503055132715499943836726775291396811671741107037864808220275570128503090451498085660993674239141408137294509508916040084880385126052374726220832131130118877249390053885190862016620304127338330822376885177520007162660545308168910551027048206864259306643403258146047122775364888620470370521404458837255123240697440311548296630455328683555320575028845668660604051631191978861891344050450146706574218145025744150912515431643639763471496084616921691588906643318094161772942444267813744245201380387655455570994259537781139991672727963630401572633729986361556875282295744688790419550042115325815066901167830915280249317272239032336428833326465165088029450553351265755331884109528200193953474902952152924946185562536338925534826199411100653632718279533909714213316643228976513653756607679272611930525331509533360676882289504637968260788530354999017751472236832783844855905587554729452514767314824700008649155270346776891167316609312798908304391728180382885705826358462049930067611387677311125159653938052767644809094689360554558540305110248935812740648171186350593122648008331898865084081910232912772214306873277181550887217911939282490833562582253824958566304651212513938680716752798136384903060676496603824306844521424474974798402169651179277198301900928835877874551786318031213157816266052352420958386807745919890178528945692073978829824318254828803767836945769264370965570278955420236563465318633087533589358061430931666035989509802975402163642667940061694906307745403336415888401856273908779094219374541395289779919505811512398727811277052044628889676576204347887155453152137381991361998780634451422237710883316724087265275331735893833197129258839234716392342611646952816033259950054307629463527993424446629554718055401467323011537168845330459671616005062986429892433717372769708986976311304603813694466876866558852113339228482279288771725065980107614730689732508546319518769065056680957782914367866215918590112732510471009325001837807792226514983632349787121937850873634795369167442047937893608233634609666703704587131733723929085811244615783860405178507877859666805690049528538712275243036223309707838878743093968440740186365488240924198311296922550429467362803938321202544305084030232602891812533837834720169281029831388109862088373636124595410033526477352125408960443495710872004466944740504181430539375974997235191384764262912442475167562557149784655839519095519656973612676149775555468394211684073546313305136429488931374979941004482067517955299494545191338214275004688648850080625425657255697031851628472826812878438128524708409359692881087063253264481220907184058301090967458080899506347453532002995200234316121374098161410900539135981863658581370995732911051446451138998982787447971905437800015184192194998890428219996377737564767442914336298428740825412724669981656100409516386221832151219625497417581073077338087294189592180026420910118672014596652061567734369839911877944565035730463100962767041999720431147498003871428186236484743508773318443952371300988256662194348824041466733754460943324754187692906063468991068425866078952725816706806990970194721942596702352590797837064926809786719427373172154689565613653917663261933894602724198203854026358029130198575484449317765398657516813791597967078843130547339469073783524497382496877243498441684162650928487855937959542776542381517702580219111410239373945791463335216468817891797159897821504141336134011961229585863213744116868341898479921270173994357042490280766042368231306294592305816034402114190442648210070915119128632526643207927399206403270502196136290923785508894091611892797999732479898770027343898906937912932694388260729491337611804903421576030209232881941209677305990236485778758568570909511203847749727139447140750017842138051158739164470079822994287470311711455580863809119499634431231542924995363573544534166199416944524373140000391672173343392584556167540657516390123765234814227550308964579212558077778186821292704585207362004093356520798803551721188807088087772466898440741018646115406804612936758076828507023774182209672664449988128724902414993501219401001765370672317191401925997949428670713449531376719892790107292559315329271665439517184073930078672355080717529913180235718999452728793715874798090520042529997304171394608223665519403070588265928559013346665409955899514815287087015895503845612331949334663867288844709249699760870154746576067740617109411671360905733205915721144812868914282146396418963599623786016511558301453135637971753217719122740923575115844689612181585533098056418282958853896584799967463642188879073429673984966106974767322904274930921304431241275791867912140260586098638979591977302253507591795249943499668854219091401728091291240324419097106670936334674554710470587846998580373319693822832186125663563662227300196033318571309952940878063796339388257833300085483835132481959803926226375922877243938995147684343099551037900344498227926589430544888103232468580078181742899166208452521226468017225770159292796370494628221608659705311860880457610945893698767024912686130786102451619763311388742213622180967440266735615377707064630432362851346787104938266503146626301826386009911001332410273267944348625003805191824863507525729321246269404084347151934903222130472688695181142909993054528914728385212132736819895913661164653395636100392775995046821116359166052147490259673545652512579506858292074086966566678148092233349090670531856554153436180220853767903100802098585062424675371471614926784976597351943926464759004842764683915776120276735116378854746819555607095002547606392301607456201613727812460712017149291083250455836242558225613747332670029560146313664626625184108408526435551075760616558918639998468694149252839714828173433759651731790585540238768981676874286013596872690278563046650509425213768568600827027602310874261454666959825912534982207381304504165906647669730083754622626706293980961379228599568320787109947615111949624856762702790577996604294851650710262744819536909560241872405354015195815901368973088718316821955357398270458847336192054118678494760800661846422575105028339264471032443221584848296622560987616922442031578568960816859233700095456702725652471996634621805360039904773049493081061117890447026080993179208164914084001561137279717964474457910822698800571370948730739574958519456023949553713352403879552609629342711187222946890885571493932420920963889812746152759211771233710658321471894667865836881256359416902697886305637566565270511589302949804123378578009588741245234061360202559864224187793107140310370774238991415782896268860247160087221743398632360201329490179060521461387097002495616922113269135683217341549840373435949057182322394943783472872058473593126858273723016989321497958715693848778260916053432892608850153974019086350180056263354802687994169752296797729166187979142462997664638545934162928193655800594073599868087694021711982073641040542199591089911339670166122773835431930957664741772458832249655277342309784943306925485650386363310465509184262852528967556488981679969063781668502292160178629319257109918089175245793016717386236635810518592787953993726687773744355504320944066168920405278890106620954397703842075409790585293639502140471672275176364054469159930595251498121123000632836929940035415174800963695560911591519351305097536056757497122738733247223334299439795964416272756974788281452938919543919179780495830578105176873022791010237618749182041436120814538747344362413981166492880532981408473122438956024899704764414827372680888359069383203084252482710559799658759140471216458496005546408675587772142479513233766094809931909320095433919996718551768358151589619518928107632509757299346855803242881198506144473507763036827161335579895814696687756797267492473907511129330448610059311031697081944370716803795577518487360501045579868709621241757229741722143091970632237708849516805918096189012758100919518522581134272755075309636666228932838080599671285408828093511202116961319849653073610668505654418211025373854469615185587420505700575888261495326807192713148159720874106763838858514416282535260626452514445199386144279460790374332488395321942092245696971633409779711403667148196791467370350138794216664252879537117245964416540374786812119366723571213640039312537831206990870490421854920889257491088284125753811729442672269609411252776690642554159109624124410614773690847589962809481591267437473683970316925645103066449528952833136986667526561057302938060806717705640347372758940854559438090824022934117904362128241289781935585414469223058188520370422811243860774239667131292667503614480954661643166021094263565562954650536478763836171348484291106790718789951482491353812912872996022446709005369204478525205413817559888660494002070759867343020833304262695786258762182090471108517478008062047916158342858928375981008630590361530730991533337103005007767024431048399846363323604547570763844498393678827412313502948266613097046593733067129592808782764829082779540513431895899823748129703286439371900576065601753249715130145551395611158446136282331860450878473803949375391163105048460542796053348711044126190850489694720890621885113977651566300965967733708467656571181095189043634361442938460620424892828907311518705548399259321673290854432989232402033427695505537391672297800738391325014683049620765825976502001490715724896015980764535931939727448433948695121642423627605318724132757699110767075442641487063525797598420578507881625322631258275225375353312907827229233991901973469958877318300954825891826980150082560409853023435179352929576326184297304876469260675852353214336752697472278921785590185472893192209568387192363535612736411827177789230687431274148917049359515220791900149954463891144855694570764248287491511795465355571647974077067810042898359708679406723077456168802915159985106685165278844446272185418039624433414989676529360733224196806303027701699401813246007448367635711560091194638564196215462750260469722895057683130186655197563435087042456745552261726792507936708788382778795714813046436130676422706429620437824366040216140317789120666296561961817276627472468337572371444709160465057566385526105800512406353089397311243525990809771719833722278531018522388436675146455281597431804631523542433155277652876622739675563673188640006742892639445098465242739506308240042149149884627632749060858136523029010127328467486160496136970964099609404485275485587599287991078550382891153951255006778605902787210807236763823509705570383045418472207043091603551691808413012509993628114628175790641442073599128028234496708954756607086944124895421408720862402696781696349037884497396953950073338348468396830752927901597524196430868111165262332019170855492271790130827789573109557139053285109689778332545958693287355659898640515042491550628028917049986801903913280115785942913725572192146862247809512151632511954616445305241282672393782775249991259990268401573895663033422145829424653742257468572830795144571447217172170344390171558138444299290663385049414552445567639181283014510290419785983701505834195674761038613042562189128641343318579288380854262613061171426518448419053079528551126733990801837900708461500681574188884795165426161291709564074295450881956626201918302402436945381093124745577171671312225963759197527876184346331791160454187021677119481282452140937671112699410475067112269611894574476316058950214818972540215691086743676782333339834793090049695579827352673705992602098532938745690406929370454895121406852644336817988310511018606485003687435377377880357687101549923752753870842331086890020957072110482921078203892582825430743853678938678845171550824421056075012746445684719777935620199933697201020688921671515732288023709159460020579281422206200660770662136186411119039464511246972567849083853953974560152919983727889703872145059312940206651954534823197197456037124574320069154489362428152384518561176908584188017896443196497458965211081852296712793505164224540578823521427317961999439433840947679261853070347008183355600509419881301091737467053884095017880299752423221585377626802533750299111687354685486159204618103044084872599593910681436894070175869895284548114007698177881132942381244912110629421844127353550884486951712261822154242410334674508400867284003116207597789041715421899510712174705598161680472160639854366218120520371025267080822589762082721234822899143897023722519527191182967187424707516302075467248142839624551051489916072253973677889265488627584976956960720624875569085896430625668405496389507310955276293395519901278703982054295957616190481642061914557057918641411590376116837069898283627310675729905679075315341752230316326873798944842338809064711121830318844994995728478247554519759647479833188840882272330805936564717875937759645466235877959356774680757359186747964855850779950002190153225827761646716858046423788030255771497227479049063699882556523239832981578690856832572914858098641904135700095112492548076201483334658215008902573568715728628589777880228112444674918240096125221488915805020859677852091654966635145651388632847300280396301961059638194991615057652714347324569091348372183877979671140165075401908204991585820352573960135268809787675490861799359172749390316567281411205233112473050152264568898538213889610052662413601412411722965122929820314537969307515359259003169193350947717065852529386538881686267170773291846400688708486999155003104663586382344290816318064759978010654953537866623711446364570626969502173544423423074929404208942616624720195343641583097741467031833905383231234374060924479894152342878888888587110637396276339544946001358888192005723471164751936785560384570786894012343324076324959874814196843505410918926079285183879707107430170210495856306080442455608822862122117572876456630741312672784076158322593594055019414285422443235678980565689755317999308802910505961137210498567710018536735289083212063487672806707334546206404814261141369706196328862821461886994687577175390043169221020130498162026839862458973943014519368318441838195560100295968496734198518495996314945289548715598718870583552621401683863581183106851205684154635910380524563847117217821212106128722162524253763046827147151974918777923681784807700970624766909477312166760595507462337125669968044357089923070482883709634106122062070766308810712735710624862438926613157497959226806833188459480017662980172063360634178971275611314406393895211433271861436947760659023345158492960047345295499295662853340265551685535599800744092303711269544719828803680436916119091632263364533324661266862974434455516831152632639373435575795104537875888710518410020589958339879959822445451353658029443025792509752253551525308255741984775779270729019138683637750829888081844708006890211552146344622614088468708319389319850769307851285942767252474785352358559267431807815209013706262561029595478897605034763527896789052350336340918526657057958081872287341591904736173950725836194473696707391163580393299902911848791441413850082003693596935427471422729646162077763129389201152696915172964938281148555040979580355711393742641390964747263809506784813646753925737960500015999521599040534422500550634111212967036120707920863177566166569229503234057262633077041307108981897403699595707664375223053442154801646621952674073998016018204114207792322619912823001873411899291943544289433976296710950251614937569204757779765928995747738757818760854802038762304982286305288261345463881107741394409631520373874750233139799838650413255743318875470620818472533845161123753583328874495241216906348859022307736592331867789432771689184631548324581181882547915784645287665908939251778029107639157159289196176127518723121751560070469290085609343869257334092947393223315517614003002467048702184847384690761234900833286623358455281883757151812237381345516686955628191314036123519539678665398336254286303408505084714763392222044018726750547293413234050365413766358316654410953551281819431995257295975108311779909520303889212337450841246936324792672921730951765343962514538205080555856311467242150053436496567701001851431642012883560394627048117888153808553859689392563362831101945847612823435569999360628749362849396263121141428978393706694610773760753498445233988754224335605409426064724465150571453306140168263830877100622522054887364455754048830624591098148199844437954318671983054725473714673721746781284214097106750134651020281137856143339404661336097397401255849460415338500002693898912492847012546892053061780546003055285372933509996259190318553322495887219489025100141803027682285498654701158621266627181173588718688738389808332699617026792423659913858117693296106288197971001919395880629554677187346338125838160292486198360147729979871273120571322032028504575690735750011778046083231651989085708906682400875964848727543577767320694907469192930438894927009743546491436041357955549348300042338360759281377236265892227047663620196806664771980284507347099402902967733697999621184233818138249990684015970535495278317959125975524991795957531505015611136002871680310533093786875108515066706678620823077849432976257275439747172137699295045174649617946011443989552460583705965135899024689374640564101925298778186797415025378969912635036062934209463477387146111182074864014263939109691429255035354418183096283089143643718609144817465350868728368487526110304341902202363658329806583404243426301929038999413811963719928900533075863880385638026377355762024440421846082611952343954020299294254318741900205024128317877368328956627168050002516703106370642969704283772358296461093955291187494644342390316988195849776128675653911509104542124861217280772932996221537953310962029452657975182251689107870392012504852892547316032463597681300089847160255250462914104176616050444245028613939373851574524967337186933259018554428928015559462061881262235852459856089108099770130466183985887436588873773243601088860550229426153384432008657567689985229925644560273502542282381742604579927654137058837459574794972575192961456785170540640531904771432931209781137337286211239818317844041106915878514399961654100374566986719879295231727712111771772229486027185802483882395198074790128622402561348121667919956756920273231028898988580958707002246439749981244065925735360676364733954118132106641155299199544857249592009103053430934913609249297653361487158248749289098935130229734152531034647060511392685477854761239602786254479061019382441139667288410559126176759142054940087896465268370081054931187899275164499441058030518288371926823323313797222058155222896466033422597096415435116962085378815549492184638325958401951721290473197241670371516491881467203347875585007359331254528344449459950467758875267278189820752127439854852566552803870490438503143232653957782922118685816688148722781734903296936610500471173522177161064283024894888579788472305995091180282414062431445897622125893030305492825543169066044111330888912781754024348338736557326750833574402747013630048297404805583748083230530028596408741040030162350741781079342392865246051725408625341045214944667618371021284914091497257188761924767939637028534628334759882175770670772289957481292738316309937728650022513231422234754422579929841855985946451468684350390314845273621075639131390824319325380971724618039332427557919436402942528867210146505840229198062530002639445641553444719681044247172959043190866680070064196331063863914130249071095131248563606711066426848149947420902504927075034868938069205285471610210028557331474791661084008529287736898562988280474609439222101768158060840395982029394044056801641541171538945243610104322534200730204315260865284828953604535787727385628812968114791370986014951254706844185451923929072881468774586758820306110885474794911532141074138864914763733541384283976740191875378571118515523438069807588777000827782446489266182050245346558837361947434377809680600377844482788019840369988901856492040146378437457195604765771763497148753529247674438388594397093126205511452264943420149474713408497012302647389453439359384872233770236640360026013633256865164883566645637992031106481526435623633931034222232355213509370961371765010288817762179693552242379775216656260241135497573014130795564397554787053584387187656853711857623431937857471939579985035081848718829777316272176681052612968630380592713032967004361608181691291430592912818088530249261471767125961629681696763811424116391066373303384993152768280740948118781184558104319987675542498579919858166065158389793255707776743744116436672753184816598112104831674522931550279998771106215597545399479437343520773636597563675211447481439779932609623982600338971268883683768790803057118303171340769493891379059633504014432705976380151918797310743478564409243233539718255459610193420711760557630156927018163410042030919328901263062660290810416055096762283837210531454115711704392214764971534200239720890924410613605239216073127851967270391325506751978212863009614699353698989489629129966825662563519386134716961129383146386288035146250197315211925553022512173302931962094722039477374774504846268505683930350343868458784422880640500784492844169201589431927903016379662303396527872095562568156390966362645360971925681857871968341995483947410283964766743270092620340260322997257237091573993613689320984290367200247030533720027280038417097783212839273035096338938542591727622575162362022599685496500554429222347884038006453190248400027743775341348801335215989938742326080054254247170602001952079080816650302245176710604093355842163642360723052540350943441654273802237051128416322439426475234583967057527446258480482041840231234842602058417412378587528062618463131988655226053150118765238820025342051914431270624521243139110536045516721557341224477691444072542250943379523540914610979701581620559268793412031737790984636977046879757487332724442490312397606565039366925463662967999702808542773925468580692839991293056392310917374429934951347005612307226284322964209030221618750098429366099194983439477136694496857689442264881224914039910670322116288372730289047738573108522450033816672394101565965048622910696973855813020101016596778492150524524163597858951412311844796147364899117621449468760602813472330721658608635506930727103404682194935368589333167590774588214751222713377251630553526943871411102693132298087279434996411605103626921829523837922181308665640485185328298412378683376130991261907022373866335460773339455678784703129263634716537532090282547777127534019418852120934212233684269568396133976431366342292873151938449479967788561358899533463702974267094796359284987637751201598974404152475871775040728557820818028482149140963098586410453529806961657287735738138755712151598174425380024951275335199558910669206209576113284903353418478945780694878129790034895748753362050781539824584920892084749347087235642519520452342493927793799776786136198617469969693126983224168201909587877154725998407004749212713544394340278146389166186340477628969995703328593195001704673717058025352438357468612946242018587325606773986648467186870072551528951891526255461310771157406650956757785133396326012890387635813591423184033135516070805571730845080137132045429491261012978403015641430817512666681469843066257060720964098086648402611312090715751833710679060879766494555066896257649913350023260836668751637428823100349524601403601892419159189925922959275820633937990644299249271169988339019515965180613573895432999894831577608592304848155696364198541694025900829134781366210991417472495148139315405572913400497872095116583163635740301688579861226084476006780263453790933289131487409161550962668826089637489553038837859879843790532691421980575061315224117692153481092599586056471601215629186621130434664996556516932298784329307022398027011414332176083277481254566740985113591763468957331875643736921355329794098131053487627474682120881562550550881428255655602726301461818701211939805917586146895437388795911816068375606614039394049767168461259001949273538210144048916666534903327280258028482616623798309398413700586176634115625829647911232227507375334923375588614078459209835676422299267049663923396700676273951091983057302624288416865668362779855525365118686744053391254580621393591196711448438077488551738236403307762952589858684493455657463478117126363062783121291423235729455410918637867035685633113782220139687642412165249598360509878714727491849673012334378180463831584187354582895646400179807708658382550667724914138565820039682009987745157792741850123714960764039841065734298623591290702110380779922504349890524389320347890308828719589040376100679017864219311467557598930026491189345663675214233027772264878374490381972865809240289051249348258334250741010764402699448241367513588990261100526633287903176928198197677117933055092254550168988385755711184604062724032969041641602920344983239296376314963817502741923901882100981471281443446703980599875657083621988880973620719138197772524100421922113549246894114245414372112090493791692600291606869049421927806267868540149608572744342888343192125058473363971742076638014712200975997813876869820888826654477230072783335769094726343439363924451093740799160365246814221521418251509165560016088242931176476666040166149409617751387959304000667838298475779617451435521971107542909535756971647840211114967059219572740619358273317825413217697042690085081762346191097822496311788562562031626726216116215298679994354658456828777010935958029126216060917819707341303406969946319555176649237050902062556966761241375058739571292436871898013175671381669805507508696910381959470264039318613075638568464398580077833659887720496385166104378193365458881086843156468468523490854549529450710965680147266392003581831969193933659362316072852675420800357125522249098898054570353965505168107882852864529840652677935931955087124815626428567901773577880059003707684993021595642820310207853594456286754132723969857923337469252202259735727997751116848764487235601899102596111514927141978064206334037406646670461524244267294399389563489619484717324536636445719285643430736881017478756148754273773852289888136125549801175894395271495950395640707601607104562785797592351715554623869028246265577155348990843423689483732331337719099850118433499218006218421240299027208453829439559447186342420117431465432792072288988488740343057267417723708067738577852233243672319230819937439683915440649582059516544561598623280971773789120893086121672269536624083598033868209624720281605641588278852741452020860395156344376951038233934553306218241725396467724828107444994633708693546367123495314361476105770109803860472148239644683473596101653816933207579295804239795231250209707489881769264862491580478053842336543358337010193843107143139943833585292436929169794827683225645488250493758065708204332690153429283252246824483410972045997105029219491200004356064388873493046364077650981091839516620395962650712687713049420813661020164790060026130112716818875580888149422706314230708204130100772098049184062203228041362580051800921206280742731510572822623376036459787961780882292249221002031736456366826421727834687640584814053632480791830200948413810861443283626261692032040972578925220311877455650049930685081104107394628130349553352694618261578823385706710078304466022726537115509158412710129375703385879757237284539292895988728180490390220496139617988669206437315385861127520716472864870732451423836516235084903022716386874198709556735053670824221685660220728278626961642949943462735737024852061880916852346905339456156753923289238892045090888056432159120268216479709411830925161705073727852182241843774144994444796800812422381396128011433956107925125566938292728894518495205656479288798467478295768971565046605743380817683675039276816505508751212423949926029841364819217401250701049413854705548216151519699389827283019852789171293382302732747354572335967904262121679778835809536307205684993347760735860485162352359870983946965085935681532501893160966722375508805057199214927917795853333092263437505359039352967087492413012955087698529172665198805420638824693085516459299213503601188841365820793247308338096862952405825957815923600207308796364681882565126559078649360912095932577475791841991368526488425858095470521872452183848155746479635949126054100759873565047420408657908196467861088860745823440200596937137469726554619440021533471197651802029945746028546114454400341137146234850866902640999835474619226352406181906965593958219260459751945218547186010136586725824330239183847055787095688060314095111184685688138832308190665361771520893357047382326528633906357935617076387165550366027262811769099959556389802647692621844549401990735569529998624105286253926755935055719547875890932694340554447107616689228089562066086569944905859544518038840788528630069102190204691632172591973746465885214629803758001818354722671577554377946458675180639189931170900056297193465314174724380797003889515935304761631926385152267377564862725712122407042606969044731545405432011544768262989326191733481446407893297863327714256422001628622845256022926722039032858852550966980793417370766719350671793803838423609435455646884754065033709502751899071375163169890856762230034353248802768786910964565926739703092124666704198303948460691736963253713870119591703313690617965257847769243951364137415307103859326650169756472734611428216414046385745227023184773573317555077165126936736741629792481292498743205155835997683268172359371347012456091212295887484642867877578646795751622965835785463864395557880638259410281317519825410588466995700288346083450655637106260214808311406178732561340081016232526189760751886271379564740782676263559705973541667456189291443581212424404676011914816089260905831619643542553993402039798670408163878137967461241701829503692199517679672763486035252098113450580438489510602779967538406778194913724886699243032503589895316658938365078639346817966446042366971598315102456226149656515684119923736039138700680083951001771224019777161575827820297993227494571953532246936982900599366416589787251517727463895146269431106027269854190552230633092628014821482309609635823553388474087969696520047538050162437487064672959995402543841470139970706134643073875937981889199695346910796106300932889981171735045657785459463379515938396509980647441968924682241853711106019941292568600206670508573236766497716210397782410983939914467015508129203700417353471801331728912556922317624644415889241609181001149181985321743941473620491460989210711065194784149182976559106558188134333708873913801535240126355571162155611895528080568951526554987444334536731499537753528195430833779794624656681766785270140096283044140898051247012255419499146558168259139756529674323772834587323355629868317816780292113528663119722680719024978280040818470547128362669379424806012577422038887191868631883448040020015452134369307399895551088373207616043579965759272959559449403269879855598910900010706024392636484042799046911831117069348975342142583017574911456602802451624070688915906429274072763654290623835166951367071267497654861627881666298541483065726588427718084629534053816735134742365841971731795029103239286268275708328610899135163422402889934113026131852180686527150505983759002779807773566223011788941689719454712179344607326254690287120395766024482256671418388078554228023784784496201187429256077058990150435615351155216101657438309215090638315321592936537200580321910657657215666815341247654573083731344740394722638474346512544521661792980002338816800181577838361703000507770721899400195844878004251805255464724701063911083619487594713834381627924257067711581105282570735802353540652641183829634997288735297250112282208477996416073074851093528870765045321232820222921439911099170191434612580973635919820391541809473112124075733876951153040686421981760730940392248786343513079856829965044538757787037942418740284997136502228750221662928279924265870962201635314064803827203966095428887928130337192039410759247169242739168498523247197273121591784250520458251462557288339313896397732661534729027052493515404201580059981956608905079272892706164790429218771081619749768508639849339364643058661360212160610191272076371006352322980097730083536900596908930188252920677441148336565335213544052062940677350237569694340838070570449158815512736492862139779132213211843388066176862669989419112198876291824452684702959605871999341982491423024679580081630979799600019718579349756991631102855467872079017699044841433689138792070082691245858860091100747333527615921285623074522312582760989162946865573374037829302178739225575289042659045727978291390647109321424303936944279972788242891964130377157310772605953533486292992603361085012572105175885943335595705321341456889458117518989992036681091968371021602143621382567898278967201088486661538826229576844449884230327889089656416829054301277201456616051237734474662164978054102538036494621644430726212087953103526033051131027386921359383088225533719150606934884972757665515341103897402690521343519506346008077717938429482549626794547576980199283223676534407717065157853712801659521185640516453515871565192484321804442962765733972699330046829989406888341627015358639514826801677079021155478293962619923778866000228101968771938334162366469804573202014667190358534377215482330962923275262634963671825984637003914633619143396330500521755888969843386922843589872134400996113166528653861650963770197465796117647298541079103250256973646631652580593033941058305941438443670583302078961092385000096028004387250797639227058729182855207638716095753795885220489180587608501087576665670950961102068748473102397688480068745397125317899151900803171836227422289946173194639475472087332607221032204172993718739866807063991965434685529724874290316386815414750536825089647609755324478912829208542640630837182428790314967707466436030120046677693513719304754091874591925748831794738661935209325972784637836372417065832634101495661541702552237720067651495419730409007777535110394473910436455762333458257497687020560780560125766474028996604483310845299656108458520836187635944075062965164082259016665860024741824447869072154938884824126520956717610359345956570059031363334002503160837760160190522749970822199550294007333039256459130986258366814988498652039570467430857270936255566922917138875176546035640770701881537448577626102002317298447304080275355918518719943682484835725447927289531637629163866387981244986227932821777092957191598008618007108755043196577493390795743913791435300045489842318803840629056604453508622889454329052961581308249435966212373719648882667006349214657094779879673766929203239990406226893937690672818422017388165317029813987140416820890222156353954178254095413385973580442456560445558499420284582912636669611387427404451225546415356155838383066957787260635657953616728518750757252485659572480629089199805995107320554322842323926689320663451184520268687258689886344606068388694479162354509096941490038433598847203104301976611951445601852362544266638679678290075412941302729162013553313728522646010957992606699109069616544863135068561276755095781547242671190932783722064505309964908887877840158912914910105346231151775487613772792899879678519963830591786250997836698271218528501056595898076691114631296567610559849673121473718916782416581126344147631655121086933981180869415987776601838722614534041581254100451763340221780549086746753938766610289735053241990894606197687789239665605165716452187952517064149162738755920000811374455502914943892262459729586085538415828908694331245193074260696566568387741004970586046250406779678496790295648201386486985620162529677519187045200318621917855086482423481330608007219543743506802384438536607353392218691697424857241893460152387618386782325153321432760552484142145781862136735387766492081605376589501268788700420050453317070218115339201229440765302660291694287227700950440380765107112761096963572158992801291875003909086676778623232366690994533299491222168137364267573039455654289904047646814229327801683590630142563153751747079457858925522910205111288353935603204598220411265610249301465496049605100661153637159888807908902323782288115917266030548928229073591717694655741521631460966838791102199409138425309485441867582737071365301751525547942825571779776968661573074132570848279551828767121886018701878619280272422103259889312657193875315049837541388659071098765055026282156387486107899591956053135772784100496825157507016394803644582281562465844931202245768097460360009083034532364442320183540873202417639221501463884395812838717474792815470457888288508076821945174144028105860328866061726727674515030087857289847427613927570162848467465868388369591904690837471560863827694337872032073339132310877824074716599328692954368440290176778939622098606562704309952427724800739407743083724696349092602202149637692306858199125713600548864386864010917928499351492615039593355117890366131905372145092198636688161883816483303851872238717415106454350355132051773548989777552757443255371566372474534435441848412809716879074979241665690375961387244267989469704939164542096816857631992943353367922943450974577981735513285980794037989658748077626750133198955052583318759656463244526191339847597578899938757558196148864075073244250467261088756301070340776077937405119970413498591233848696140017565253179511771575795275131945857256304538740165986955527162558693404651982237870681250364694679537863190584566503257017428760056979496904352580609209111103053294614675377385059624280899965796306324467850909780831489026318753391745970785291441580820547774726329434556660527022852038096530229629083381153469692319673185432212788337117250065774907249107252485740348419082835779774814914168825271376969001094340761377648487418731698243293622743693716904170881810872101742928109037100000977309557903344136643273367808231025012640831073700517532261466072965558652756539975841935786806116867047742157426598876286995997384905698693761028030005126905217313490141907445119240485586174004947125072513293761190201760157186724092851713785477603552145995848354307689575140731563893520272232436224697297570996577403366115446408204985059861276880231146593632332116664047060124406837360322379955207563026996917043872020612169132773506149751543096030902910862068818208029741138639192386867608762741997860087946363183791825619263211533747157596191757134157369834295405013020010499759058170439698811648143980733751968237686573164454534211394206136959587926718539689642312494935570859665860568612537475919659068040072420100618936747953737753705749383127291409003383837688855841053309435892404414955527379658360309647135313289366129538476897703162917189354281206164435348255552192776966124707287270272355902245433955885751207009741227994192134495378305063561634794407295832195458144059625112222238732508215922805408792621363851812950739715101715283572373388069309775291979566994423956314498349376967149231461962778062765502443563061034611737001968423504862603967799669087117588804859019639157112753414649335925988454052986607957770870482923146856099244325494894435569370404603972409346620158075409396512099348903782562196646067345376443663877635728814318418090231549113721533373625163581574526840997161673119389664334579356556456354401159515864788956168788481450985197215201467974181561001940631241149619657961920795580250374263473722428593232378725810430245637202518132904531251551627240821059617789024316527079137041828262423203999027718050493278416463558083739015666535614730630528564883352138943172947828201962484672894006650945217851258824311228840838756059704734974004156889921429014908926432337401389537678225680966329782263719847506238362967059541391051250329777158461686302483375117714795942380458251770588312881492313634727768589869682161697321291504228940601873619348996292388777724630285389255078462577634963779959329989151426153404562174906613363783607243267517210079578320766293154362152207280832251485579899573303194771526628078798007578233062417352061348072159821545393566054519332770028296707118564344742106657936278687268732675617734737178056510690046607762220209746122648008510436643666435541902320142352415694782992027493364828745928747851672282706320889132159909846882540327746849007379809382050344297894224907120550708900023237802233950487712523780018161507312354618054223609497536035163494093928091032767640336242711088275287685948003533785270118743240118979225026796544540327468208658559416238357927216565224536669218251472645443651889081645564816245005362169954201386198950135410692688457725430323102706392241999820836165265276591679465060858160505568568712438796347024605304900308450966553605733042168429732916370172195896437974642297090857585959129744911909686268599809774528624601994610190665878857027337811884181381233078873788158373359983366672234669655911799888726805731249876450737363254821569278028649052801255401131062341913855820271583117070719273865683054999663069013111249121297160457447041240423061246140642426490959698720730873511722072350750404737742430572024048268685119133667530568425561907620950064557291163632179554525056907363270277399640559645834440273363853661188000047234146519397763559239145260412600704968936012028106894549688440479900267973574869188916898200795990111065008878815333729179214937996646495852784883698591027255166736443038004395574418572899294370967551529143179055369802934328561669594406191593608936964899070486635648836640763029576597160034720166645043990534279613912479497024231544925793613084992394121484803964852738532840786244112636713504212176390740168740010064318423771759800182571206639184134636335947786714976994584189825206727396176883875524645479643946415113644023798932248203117158653341801005086972304051184189910711151723320637594773150678911124405222765005192822545537671036184314807662167004590802562833162356684840697492521011525880952899271472039977820122616771265024357322419282091459744940443106332422973501916691938329374288973886386034592918524051364182398592764975688780001997803671401869838010577270717330444418407603271989346719916686888680593245148354943447462721033986270080485900155124951082963992792987842114837857821508811758170325737210523836242819698681325151023148163454095321894993683800138795128096101389801313982043237028325779746911915430218574372464407978667515942327600656822134915485630059582718562671520698991302473350312566427091102259532338314893989689756822401425548363478786325343080669902177859287335109626530228527804055908960006937280662896796945405843803882948848124047942281965182397536936457929889578255794210593948378679524919234465908033421164868438416051929819069131125432441300566879775210550054157419483806784214653243093753518480506741715472803332755990227351462034161722520909347730060870649660727422118067613395865270827693082504392270738618254811116949038529595723094576904555387646766194045214126185045174967881222625225420294995105078164391170749628652025184869718810057932904459780474128600044356721564987537843310493494303165385746459512014483412377153293124606805820556680644340261399666836315845102022850213187298338640077707077917127911385849411484173150612304233608674207467083445888214784873006838124326048603420520398039994672066938235732542051375164474479235433550682373983123832947238416282024613236150041949833072908669815550674617589673248615861702017780769184080195436695753443836861503161723295315725658560497271219460777837509040504799004521018029935893811387189517865310399566336628995254428616900954602946642481835104052723177763215261081807631624720322398654828944688261281379543513838399159096503176110145561673340859375841223007298962049354231684731456119013370627451653372101952784150843366485718683154707759266001380413461198030059470241851889381598790912932175523398760753164627792920260871619044331651516812323419790246774100510382849642369445921137356415332559100571402192386504324237600586223716858020906861290616574468722975254000616033200134525382789948233703766721713913420053378522189534440356774167756989838340371683053339160303712468122195094451323769643603060107933336317574884600660754013122975875644836292687447653875456366671633406699749727233770775602930171119873713327502029649301339157436902586985805804661850651842865010512710599579744907900725568864758808468315496153957143231085273655909832339900927873362328571917762632399121621719422136842073993822309314300099352877919729663183063706089857543103711226019781257589533875565388292807852373328379571498654743595708116126805997489585227762613411374287400898540454081729983600454020975504859445623078574230082737441934713309411334435977095406278491948107490251001075326160260816166141665828764940536675366409103075438140950942363295087616474038594568300076749067398262609892149434246290522082284867369996747369036618212558758764999033240531377456820933035653514739288807506785309262157018155354164246038618753605910751171596544451629138375154996561231768056352944122861796274432731602355764359001440423701221314110232709724507824830537580539309136187075390125804621374052404104186962215577145031687226391307500214048177954438873320863455884008371509806523844996560156955171721235083443685969318160004631899389556155154887502954567874337030723431693153231859698126685897895105095148228879264170688790144046095670747756454596689425959992788755978477536636909986217025002679023725302120269168121827137745844016745136986531559713305374725826662884442853078675832269357444922580319812405402267749674742781956841448786497782251691834976002692470785895021703704858388868515265760165621177267080605919982230358195653707487049616510340265334858744325169430110779016508192911580225932171227930158137898121057272065802163804143176177861748042060613560746270301387882517734888125466322091023046199189071897531864764481596203251883661383342557380251629906535720631765398761130171689454545284542849138949012752571883712193005628020569517371873637657312815325305329151583778151502917902733190305271744684958622121010306471264222608732792916887491000707158866999254047913786054611810141366817747429490945735777114365311619138196776056638249387208249599690279274158972264263533482913699417066232424301052566108557105882321860415953995261011470246610385777123349945013365720795738329033328267790338461440694253915947579607200765511873466671258279119860920470033646635678259287228565899281046026195224102321794080074560857019502214981683804045378001236533286039783959384004974440166902266486137702679291194779601542349226685477920055280270194687371379891364308309741325341794454848006333434887621180433722346253849620431677039433650809755697980501277777113845268685091187424823340812151151597036955214920274705302810590187488774145471376334439641472564400585203279952036644952915857362994275837591364735007137899752917263254850243740999519067606448557348572716000678300808919766778877206053237007230414810898261174192999230284869838903138569158526989803738366062311867394482801934669491046627645436363276196627877141926295125717141746847349260139498229621952941926164899210479487462540920845674239802557539445478424605466878288948565437238163965174286067026364536764787585857086934460845630429301475483163588819083876568053843919529815202317165149427461863268394120150501380274794164226549074722497966714770269857429653319371853947557581888330894630187929986442821810999712432279880515190220225825103925627914262396261528127570244033580516736900703944157759769468332776781478170997801067263584947564578699956407063202560483281763769954234650000264770866320237533750709170825618178829121555348484981912976077434644897683103996518259302203185739168355670343119920701453229307854524542846194775780342354148147108371829689841186079764946697999961540609342917861302618236089580266302442813911419612144783451058076754515595931540231562270809029227064151150119300956423560999465999653837045524948746983692965835699733590149297182040483811117450935081926236794221159650071490425720958495747811724299488339537170111127932294679341722267132041146536871343639598304001759956917134651127380387343487435851780856522271135939193895628494326974660699269244961652914573600667083355775273620390457210060853612580746188269631693582473145445281407145308991224674238036221680829298174220621860798197137043727200723464659535963188623974496505669454742056367794214902540739842325758539378897401139581409478646694538433617227363033864822552034428500528123827744206093078356383899501146590774355751444444996321829960061275708179358728977432374068967803416414619266061210292307970707626315000351235693107429383685067164757433404492504794750614444438344268104672144761836840853236978233062403887482344558895359341454623603202631096561293380806547311399902028110050717415339231618537126224678146138703245509801626065686426890214790932004293128602116907695945906954418031458955572518471438409956497985277462584714340876550751083482988783963757153324906662143577507370210340928704211200056560771784033654183722097707039082998185723278388513255915407843806226096942825934133693270436473297298053131414410673096167498440524501223865224580163159731941779290670475905774711449587324396052040903560867749633607269786383362511207050385233066787151038662750888189396417820848864094163550696516989046092304161178546471108800040333177562861096097669402728598019472317127433242097596374209926949769666919449022650020469268773013778291584111777734801678122336199306707466885245484440238800072649836711310342917062136424156843313918053232383983078468123706545170731937525394324743353102231318881796761219340335058271096924509959581007125101692341639032718526132731465816895432810824251550267187134476525004805214087356728063163982776436973281937480367061490759085981747339946738833819701910602521740453589700326016152713271589647731441404281010739627169860256321696918143984628976348066263640404724742103943068890300262217919407490294185056643193778672788621514872444857040570417491743083668801820211916799180279149123365031855739327527333088498161734020418254440569737292101091210357772958736197407944977294083500388828156900799618885648926774368028577963627085062949536784319273455247935719907179765485929514896555210085742609479677331538755145823312735881427161972974752998566400151194369472948682330746237551435896015230533986496331433897402923227963168267620139539062424101002664413774030587496049713880031234957424411170400692461605233008783471512801605298659812776385852174133626209981186918938358345653057146829280758503052663152684412143145572569203330345681676854169401128235623310323455220016266200412727026684927816836926266791942439320137398200185642991418955464718939675339859727226028984577768619596135554459532721055935991298244358265061294663738057242475692460861527669477565237601695691691877575077509877316632375206719112645395824232996123929118615660776830180353162751919847202804452994454045882395557025233387374545070083797953533868365884599308144877121224106120864464121937933917213846371733319958318928844743660588628753216510072394367819660276153579065026923320200465135622260332133326790916912968206896304595976989601528304064458567050884821874068569327242388967568172502936668476374070466511317019575209348088040354641188892289787348206240433877593443377351012788990782745082720418094253843066182615519009334935552955266684858475485494938494967552976557793389120050509603720244080853334662123762719793723288604484467147679471941170534997419483368784944658587229478672681938138968282221403428105437551913127361355898698289624008368882129842599996702944503383544658955991070462640172667935141602759653551368815776369942044583995137647829628663131001221231534965839399461463026651772976511526811468953158755101980388687271069507127424565908828648868313976235679953426838583195080029733092861157150407331246858177025938607115915623640069410010572713698395553642613995001507855911638582456822041072917198751686674415946936002316231579585375014210379780938502025242931562025826376153063786386677390155167472847163910141829719442198145128316851168493735526463730798576431768575701484236408740789352058681668788075735862455978596131420928977008662021317085139495607926794154839643638696960646064044825882368579418247614851405354060662705787252435746949859486068833695557311397454945200620586897382572493191047700347322661176946901552848619336843851237375520485128070259328150932433696874607136164590619330725124114051944408510453107152694912451523749776692224397142477111739160271001055661493257893822390736623648614862400268263497424561751004005831896928283068703198441436303294281620983292409389164251515600756093175861284494043497224235994824226709698917461917863787094372023594255212399834252267422936777442893986231106470680422080051493723415218391429320112757538538152722308570014027075530844822501991820874404857371262082276060042328948543302599518455335980198371870313013246335949291371848114991467063678242040592349751000085649630969728832751513083136617133164475700823575348532001183443076306074233894249336445788755808856138636225218959783400429992989436381421511961005832721133631275549113641226868484408007284898058005197058362236770869886182300061523332360237274414046733500673667538411330822614792668451105454556192218178234854687567453892043600237068992115945877699734273688549462432595826857808760858752097166448743979126536642225144766853882164897991219139703135886522295432375281686953025665774373025556138491930286406006798907600465458206946206559399603295541764326024991786904949110480071204024813493511561562807263177679249625023722645669629485182963500555510003335448887796367378236138310691157566684115092107052582867873880273394459968866636536467871590867185180009580075210563577153824342282110770314631151974145511413151112232582017775144045997964536000603811954043472225003066247455557263394762082853850116658090037261991247692211882538771190182621125886615683314903791497925118251236601408921425321372440272474308166026376566103285492314773620130839791355348313991833920577761293186161487443714546368334266843700926550269914013363603933096481736261401808646916666943053625645047277738712426916089523675260346358278950869126866196618323149946519669426092399385520071822088538968327620951347854373933736478358464833341988758379440954439546160099695643379929492941368487698245794174994884303415895408845403336262531882986477376183597159377008643623592744228955744851179963996057437998203792488734880620325546390780235577360282627691738879284350348303931706658969021190228577090613214548879403331887319146436620250981113501638403068994314100847127956423998146619152481508119331358228736762915421760355153676599027887866998088313007968660592865811707769576845589411213031205772873869932186264820028102066026067911651743403664004162278364920630216801991357759335718017897355535376875992900410463543711577972110530813339952464979263630750562505388948802268679332820101592290211794529137334659869207531837711768969445037532706728557894994806768360107989358484976663557718022193801196136210942917405780671537338138341560189293146145018854550800490363261289124650531215691866178661123946688832836387910091158318626391704067701909442417173700506691173895530421379380710863913241518828902128499464067152291584149084550831801244343608041746464087808753602870085445324097573012361069010422206760722613567966626449015641', -); -test(macro, '717897987691852588770249', '0', '1'); -test(macro, '-717897987691852588770249', '0', '1'); -test(macro, '717897987691852588770249', '1', '717897987691852588770249'); -test(macro, '-717897987691852588770249', '1', '-717897987691852588770249'); -test( - macro, - '717897987691852588770249', - '3', - '369988485035126972924700782451696644186473100389722973815184405301748249', -); -test( - macro, - '-717897987691852588770249', - '3', - '-369988485035126972924700782451696644186473100389722973815184405301748249', -); -test( - macro, - '717897987691852588770249', - '7', - '98274117348321974353044780928022697503543794108996224149902690255438168118107927224939057895356483251830948245334782867413814443266637838233302304694183773324275704249', -); -test( - macro, - '-717897987691852588770249', - '7', - '-98274117348321974353044780928022697503543794108996224149902690255438168118107927224939057895356483251830948245334782867413814443266637838233302304694183773324275704249', -); -test( - macro, - '717897987691852588770249', - '9', - '50648270951104922750154368051586870571131493195253277558448154467572398239992609359412793847046346201052022004762903721738077206909720257557511103348958535839847634617934011064335949101435909492826285656394536682249', -); -test( - macro, - '-717897987691852588770249', - '9', - '-50648270951104922750154368051586870571131493195253277558448154467572398239992609359412793847046346201052022004762903721738077206909720257557511103348958535839847634617934011064335949101435909492826285656394536682249', -); -test( - macro, - '717897987691852588770249', - '11', - '26102980312143604580379781426139335779091260301758026221495303393196039344305009624874488017227324790317412920525253886011853217074287636537729904547128731845728160914486066244742089352609334182138245049106257642108402738856230144495829015803277090696341313660249', -); -test( - macro, - '-717897987691852588770249', - '11', - '-26102980312143604580379781426139335779091260301758026221495303393196039344305009624874488017227324790317412920525253886011853217074287636537729904547128731845728160914486066244742089352609334182138245049106257642108402738856230144495829015803277090696341313660249', -); -test( - macro, - '717897987691852588770249', - '17', - '3573275582766550916421412995798134382789703709314385104884818112662852238582986404829924618616654726489613490560634610856652852433199412781955936605818387336430363300497297843489165805533270350826963139013723342117143973258213022730407788251463239302985363622895194233407234360656339752537037204386160966863282760795179386609783329264325715584866656109211813856395434440166721187549981532749010960740594249', -); -test( - macro, - '-717897987691852588770249', - '17', - '-3573275582766550916421412995798134382789703709314385104884818112662852238582986404829924618616654726489613490560634610856652852433199412781955936605818387336430363300497297843489165805533270350826963139013723342117143973258213022730407788251463239302985363622895194233407234360656339752537037204386160966863282760795179386609783329264325715584866656109211813856395434440166721187549981532749010960740594249', -); -test( - macro, - '717897987691852588770249', - '22', - '681365581176156632412753534374262781125282012419825049087724194682872335055219639396310501297264530289064963157507569861612948673702326507540305843556830845144470742979453946547899015520738361534628988759199748641145113940154534539818775453262688963129311220968303038658465790258784846759677427047794151246302947777449489906933250186470399660798890218035218608642881019130459098257182422713814006185934129977355115289444874704561056766143547053999767907222964203241196702396756209771576441224761301925355900901280569802742001', -); -test( - macro, - '-717897987691852588770249', - '22', - '681365581176156632412753534374262781125282012419825049087724194682872335055219639396310501297264530289064963157507569861612948673702326507540305843556830845144470742979453946547899015520738361534628988759199748641145113940154534539818775453262688963129311220968303038658465790258784846759677427047794151246302947777449489906933250186470399660798890218035218608642881019130459098257182422713814006185934129977355115289444874704561056766143547053999767907222964203241196702396756209771576441224761301925355900901280569802742001', -); -test( - macro, - '717897987691852588770249', - '24', - '351160503938693614343626853747071562171016188034295260095490111881784318374960146045355120758560422119505624375491533176393589903573845466689382216842197981277867514717013259791763929689440964343969395781792087124646063583944648684169111729145300510135702655848244592583122673432949987979858826614906829469635537237525614665196540272658828569629679791428934101079072719564710584542576589075082850692588439679596816834818341802539921621995225917260921044846812391894365530686773081140839348912145464664288336497209664739248364322768319800659209785240272285297767697234264001', -); -test( - macro, - '-717897987691852588770249', - '24', - '351160503938693614343626853747071562171016188034295260095490111881784318374960146045355120758560422119505624375491533176393589903573845466689382216842197981277867514717013259791763929689440964343969395781792087124646063583944648684169111729145300510135702655848244592583122673432949987979858826614906829469635537237525614665196540272658828569629679791428934101079072719564710584542576589075082850692588439679596816834818341802539921621995225917260921044846812391894365530686773081140839348912145464664288336497209664739248364322768319800659209785240272285297767697234264001', -); -test( - macro, - '717897987691852588770249', - '27', - '129925342856448988764251542089065045786155911790890516647657119087489042404899060228369392822075223183739765014052360206502536732276242266222695367972367328452765284427361172142362321443004910207800039177476242301577150613859831776093328430566500496443594413224371824361420410550048411417760224137393585174427565041635390932623375118187728586008978789234310569306311929614122033949249592316841971560046372431039697669234018577505272948749285774218193495971402810317470288145379703055809020802321420732619980008200661347545521210303094880943536506460031092224160192777095197322219385161928995729071382072812239062743558406558464517305710105484249', -); -test( - macro, - '-717897987691852588770249', - '27', - '-129925342856448988764251542089065045786155911790890516647657119087489042404899060228369392822075223183739765014052360206502536732276242266222695367972367328452765284427361172142362321443004910207800039177476242301577150613859831776093328430566500496443594413224371824361420410550048411417760224137393585174427565041635390932623375118187728586008978789234310569306311929614122033949249592316841971560046372431039697669234018577505272948749285774218193495971402810317470288145379703055809020802321420732619980008200661347545521210303094880943536506460031092224160192777095197322219385161928995729071382072812239062743558406558464517305710105484249', -); -test( - macro, - '717897987691852588770249', - '29', - '66960601081613218995545615402693600374639583627057873894478996761235534940521876203825851640372285281121028022306706156922783036648760227593129124026972625933013798555768937762460772142044797003957960219229519539565564116948220691395428662251667454449762970671596782912888080349684772071024984546225188460055852555657228531306371662448557023517396895942248714935653633379580289509781187157995620922388883890668691615375469973820302219060616733583757178470584754927697520205194864258128911605585342110346435691476086856952623133602717988980966508297658793357400697431392332924229866368079543112854041068400435054566433206423406557876970185985505776428441038078323222858222598473938385526462249', -); -test( - macro, - '-717897987691852588770249', - '29', - '-66960601081613218995545615402693600374639583627057873894478996761235534940521876203825851640372285281121028022306706156922783036648760227593129124026972625933013798555768937762460772142044797003957960219229519539565564116948220691395428662251667454449762970671596782912888080349684772071024984546225188460055852555657228531306371662448557023517396895942248714935653633379580289509781187157995620922388883890668691615375469973820302219060616733583757178470584754927697520205194864258128911605585342110346435691476086856952623133602717988980966508297658793357400697431392332924229866368079543112854041068400435054566433206423406557876970185985505776428441038078323222858222598473938385526462249', -); -test( - macro, - '717897987691852588770249', - '1234', - '240666810925796631497300464125793793876153875629096662520743987128655138300518806793333863505002370424150325835897522997035758513508393749421313311380386678245885529902936330574270897824424068780701595312024191583797781168159472099893770860328570371993646844140203799118143686616439077080118602046330501107174223757814456182746333086177504034894868587120939461313455507702811247120286468199645215838215144781536578745753923838005482894245501661797497042343390617151204343021554518498735362447358070369090432988690834865403291509113944458407089222159417866640525805032080821319406442026747974929325112928921447323232212274973452975883062343094212146738595192633791120734889354763869347495932575155161944862722200405955280366430399276362677049013925041871227530264219143440107033389736110114624783260190579707152045014476353193813168715289380838132597179842738854542064339183902073367485289715584943627672587668112192162491400086760878390153498140343600949752356890781346460139220027272654766196351251998753435700609187724419282733374517073505387635776141937057086008339977487598351396266355557385114078610220987097361567756363195532914764004598634407992908600646589647778700597919884751054929681098369460031512377150901578312180257824087931889292083387179002094560172630492173743471238348161722683402811331621904068461649853237649098667186022410987655766907338482317060412259815938817187300402820360378490149991171370482329371650505043884192332467954232225473438096361196485730615702706338896803459544893784510590248023379843299267561024474106199710926586300140256218142748793677805122624858592543944305974549597571554026676016225109087448889480206990407910658105566060532854331549685512672824252906121631110818833232354043403137418311925998804066986754875440423240222092764003746250623404175411263344414954113517360947070716557546634100780648355973690014553189027477234402720353402501541699079073208241754265407813302554719501911786154879576504690648777330790234360752380718909924776795870591070461878764685781345393089291677007084060723076292423331888969906994889802559722805557544432185305096822014262735051471669354024897723343139333199330147964590265703488059466191857192410897868609291384108526636429139154008874646743040881795937998168293882623621583556584500036772108578773075747899050834512563302362032542587715210166387236382275419681547020073143476402676839032589356933008399060939093631291937107000000043323532799137849647405096232083364392703455257640562906669605316805575467472071569944146598547468221559924113348400144610716847685364347467929073894879899123491301645104075537984420168183636199226629624957989433534137128744185230344994592856898029628268331117744171243766865397230810342464227680605486409079213386036803957679866952104779315664126405241076356017313310476722815126991777729855840510871727519397893209033487330193378894526790670497601404262388611693537246084432220039998668497909914891728825779959838738394310285580938434539221810042937887451215631212371491462951157863268559393019049906492412696634901678674798328369463166268199126370427527431576741235550771195727247585539256417952853329478914515539806021976444112084626581019338193239617668568672517993467174255845823702683834750228698628538106052353376750716489661771727612994518487692989696065706319916267876683157185246663635313221904866416368381426519462074273529104434353847460205734702566140847713395645548499357551950806690743433954202058581687009317012817649884159064284249335591683480037524895848927954651846952405664224327697084573143825212146169786019851375852570935645324673501437526819689862546523710166522763874255457046134768878318504847569562740775920029079242062671507739909787305724552670012633097279820790400444955953186180036141498111027556284782611831968632960254971585279229009517389124640521071182508552930150093115185298823230740659868195268121798981841121508518238922062146832778512233130516701388382270437021078314304384358232872632935033731255504313450018207186652992855974803423357233611324893304082721355054709451741004386686923054310723261481499154665026674935888222845457736324171023246366147102994195305848085588996476494973007973902151008585594112156233214360569556745482837925015827621067498561246812344514749188513286706401554080345967322077722072126008109427433431070325726521163012868148649582784383995723396360310319509595957738338411942892357400728388524308685812413893999404967999249813865349937751377717926369301101787921984260122186159989136656801540380770978320766045936205592959488163833618604355519117056970124007977963289037930079739906574432060855963578944486246793175242282673514112660912407087562188397053739993885193130818225601480302627529684348527769410385079008546741019828845532655444621234451156249631617457720152180989156738006670404506338571918208165921758803413253593685587469101580701192606017766650438994704981870117413061535622136601016979952697317238276873256779729419028069631432675219491767318800339045855442030264560075159056776340091166641523596359578961807101748144945138318607039052076486075699577782685718970588115246184745849474239861848227033647872319200256588719967644217877454602724612457063846122996574940120482768446762101146242787977449369937867250832112867230692912468970042855717280755106531667961937332446742078258774278002352847604203619178315262206430766732415004556722421674647346648829974839968356832918027747760706008251337997576672550889603071310089578634747901944072670071985016123486885045817879153495396347705516599056944513760289619758242073133217108261158438678792867348399912643882264938522086425924074531699941057823129668543509614970599670225949760759593973290456515031451150061095408009491932533974765354150005121720734711745252878859000575558573436139695813170049848899622852245653141171375285116196880631468001421360473881187149476805269342296424485310215470494796178401944348619754324798206578015187379609260920882768561974442771209643829629212007051116346637625763873106848673476948458383017883010996340518563860345530523780019175023658557801658436627673907676975971882109751635784820139654624656191522441490775749907596367211611579452627181067685977845460985237049896675479606151704752856005151770161591738112961723993454693092539303522485285732895462643804740701516376964927670122135657823916458074535855817547513841507607015010962514867231406668733574660708546812140757605323461188423370665178218323843285796646737709047020502755313516962625148241570458025214707284812497971943815765595261077725596928727447148413360293693704268976245064190940961850889245136042407154085469838297857292187347035492359540055492227822512458140269037567546119976309595685267059328503097802601274596051953728897555043442182432638912118214086596792857025735173692744450906559633901069848611000152694981799908562674080212673483483714535683816021391478836663467848746594481778215255545090822995407416235269774848665232107297962031453869358953402040347982467139283098108055610285820589613275368865515242210501491361858362122708451547647239066214844062386833772040444917284525202881555120247439897055373293814403955325754500816079489668326796664509455821614956472480002144936394671934338050270783459361214210050599756870439116283220868124998006625761895550396584389321270476762755086709308051601531689562716830791751872883137993455070471233464948461931211369790177531373113631239997994291418256714478265196669753238257830553539691807842745455955136875773828554605336260805640377757640862870194935776092004134130289520896834858656317913097532957724133151945092000859020920237096913664009534675855229755344172129957141641791984538395100720317980525185769142781585509930975604069100811643163009360481907738801078884830886276286316858755498443168347068032348883021378746194698784811802339515331441830238719175466597762050420975691354490653471436861965025398816127746666639354864324232964949049300538005293308845940271700888627199662903120034287206034687813252949705816491402178398645719387809539644872118409461401883654312922279080211009210189799876128819902719937084606802972639337531957278291820852311932551591955350790335928152884811433450537315845604917323956883583239480347219971438941586085711934485815121967398164101784083619826265891401802416571741345090544188799381856839432343498457496360597455526238460117589115787753968612657150077978004530794321967803330389249425352563744925321708518378671586645666604614530902858059020840074105043307623670946950043194604176031013849727052783428735689851667778432798381033674827978887751236650974118849759189503239625343304532523005839417475498961072873029640889256489519703706344292253527801297251124450502273288023521577486079679697498402526688946738210589004011833446500132651961861200853340654900269802660034733678942996167533210265105504648979731317667399933165040919109758988751189548962159739945527299915654716346246041095050960741515495587998776985363865506374140224005340645853795347072152325663672271845064723399857372941894460100333264447275387920605177410030429482678126703784114018103844023345892034742213333395468046660012665242882251447818527188389084106839211601891516465629590896364692175169015105701572123182161899801710734441225139364024469426754491100056297212476895075865513734972712990677136692220035091504362225897411284355159962673082264518469172649285965322881981348609178818294743174542244219819932183490365756919330710479957613508601495497295676950329757448944977362883166111823279769434700959568955927643656859063742327008267599164937006804048910677286568538933031439840564237461535941197796390759052457284051017778672694027120426633268111056448896881308374127555545225553090822535510692077989067554686838662757792829768851773704480230259292642841141429771977100764471997993102274545765814837384547498350869645999651843659166200886176115555346289903469340446739207010577645167542297460407137062960215028382415884570633157792532691792641314278905490923087079766067798937780659109451731519734592939579025164926515523248807352103381305168229367358321432773551392789398713507962778942820119469523225162863178680183911570348027961700553229115316563272964376101119188825605514991804081027954389921141273219285131032169547368944389824308436381941175515798111830481000043636844809228835704445068305252750582078049987152297826581119584963878880864201441342341314647264252390676175707582693479476352854352886370525502607349886832362596404647139600857534060227964743860211405500060294329186630176879724051222152101141867575359408008501674175606199047463432213378831599134528934108281929480497040842200684432006775368915613194065693056672838195707429303679749464784054705434213357415294902116744802057352193718342238545126703326661042546563491168121691269341550977021406438785288342043569889077634089317033122541296230748114388665029044499469546397108299753200706114193470635536895967048169021873576306364846257373205822028138269759764442484817509279075026743603019509097159849066563284407999202539936119877761212471543147933987133791650432393675308321559611393751092509456575599446737432047081189236910050329727334141146991725988700140584975269036834508080148636316737184199462112708124889925362377529178344014590919552819769657577672702978011641143673156015114065926314546589192090878523676668017033871729579063980669673546335286849239147941679867288782496042348838505520661208416542384402601836938516863582808398758530009389050063886699985783925267497452701039388970042411071173551559121683897134217799905956381777617760035612136975496448360169358472611166991247066660361258257792717955895802886807621142240955311727190733860080248699104145339409596193747533219052958194006816842395395133815227958447183027408201887154248055155515252489593725880002915429087346780489686173993006485543412786317161927405570384085201230519902078033355645726810161924247926196020315576428292022629241922920330634879366713250236205513546588717366123436426532878032863695637071735051269224304497931038322951508526569846253683590423751042200651378810558188601895181845187598166177418938407685219535673829472096697071612870362277436920342738049215807079089141509386167010651751786772439419974350420945450780317330425760939076658378846814831229353170269675745570687143370733413098798744099031911520221044007327256897909622230050896081391104380973572938318409605238511264413423963577109959485446578175113776603615777667633293449071495602382745493460804765597670064823587149295646560929042625803334777303751883329502685780494009410515987822344496036156411290474009548223625232450188758230491801781290987433426377664288677071271225318178134265723090953908487368210301890173799337794414289839164334384499838476694064042562380923392170814007209797114936223969923288492450317383650369779029731134714434936391643766311336738629884184770965675076449262359336759950385687723231779915621937147640435620959355327348891883061403815008875737737458441613654230046515389312374996035407943181440498220354304355266414125515658969508581407533490313522890987856883087879602650008064327529989955508937331955239874722401238624800305487314538069958888480061378318398494570408743929545890698144755401436645575305635886766888309290821752239252465276109182753977002117165726763101082508643896734872331680782581238479701159334042497390606376542941582331808271248759018721187949059390620081627947668715490802983617888543466920624132979650708704245244736734577571335364024219584348266021595514151130896017976378599765662306270194051912298827281348333359149495872248207397081180112660679500488646194492335713944553578485524340274065812575443967506816413669283541021458439360404721464264498869630723885583385346819805722244341238149657763492548458459521747402931332148061021522859079768700468052335856043104242388423745990751764752080395046941015982884875151539581000878641435603583824562615084914225729901628394177372130985466208762313918008648944381048427957163858317218102829834343833633544901126931143569398807905684970202348964194612275298885061923925145525774876352222523781858372282001957198274173098329010279847291113009852613678253123199322917136025127117154756978089704874006129913373888341731677935563427208491533468982839070555222905600716758864558055015455443368534003989339266991496574749087456141207063618250411241902141164015442390891110956633395370303166431966298954503533779086717784121585666343471909838926386599682823714314774096149220614537617503626682222182615668880281733598355987215201453863347388340090921698878129884976286937514133684565405410347549261471700192037533086493793953508999824708254409983739425082813111045769624535087578645427477116700686622592971553298713236705554924227547844058030634294043977065066654988266829751374105278390824121371044031181008428048205223923243651098135005092948487395324912456217052331950187603567228183420265978222659169332375919592362911152011838702189535847577763714114425190514299564739774757564037598485982927812147173140747827430978393017504243724684098500167685714749941846120533181791178220367836024729909146669128836477415610531307171288054524223649506374655503312084693854015857030163886937766181098823169023181572231477404931598733389102380674704591127778547890467262756173574558080654790642471369332640892203135294330237246272074631760017202872694312963325722611729402358297429077465902624984852437593479190867737167006749083009854670384065327519801302083242691293439616132893416660268947919201637739258769771607084518793369204312869826490193716352930819450570212844033786667236068075375941453964216107149779664323628747272497685794971849040594638565097670630010455310220514277785818284186463200618441748478788591987616681646033755321959251953987293706031605827100615706433378711983560088154239750803537349035070283423517350889381534886372817293834165533055835445256823942303051891255521175486827650886133221071633589921707722114526609240665260264492305806982431844042679579783582551609283040246523428581845720374540737897789979786180180579009825935175015723992444590406056732840128165816199908483281974729283159640149821021618151095300252407271226953926728439712096665201813821962143089789720545389677608391629805852569311950851389264151131224953921752017840922075938093985062781184787646406285721393870539756657767030925030053022461302204093227393963491255643017235236360807076699601286868224950349231983608760919780584266842953210668067889511328397050532424837545546721403509681669483144282692231815703147470176852156718005759125673967988457229048839619145997585270368102435074595029990094324102493737818970275642575407600875588537013441673454455861497898836728065291478392070865090189959309947742444986923526745948057899128034232868017159368271694223700039666236730894705407231009389857561190687139334624948051152611495443371208819706799382667564652218904459544669746954713753183826624347921466724650586905939136598547335012617702607014113794591546834254696563524548343500981096958481191991323022742758572702244370470464413665803392605126994943740602380225661619992335366449312159389272554547255369597536289533017879667844179574297853538262473990737634615419535991688218597561417950967595509116168022993443293531295365421530990278428579503023488689022645550899786226625323338180515144059213727584521215321722089993299184212218054163465777614637889378688685803879328452385390951350548924489120271418100487678768868428228212387228503799518279495595264908243662176970443975028752029355061454695157141184819938299926947437018478957044395662391617808375468649007600370172940115843761412592237460566795143736348519450988859101853660296226210668299394693230720927858276964586740548558363904065214488088226818002415057852903743836014126022876012254536312345404960062753442098036019060443237049994545797682297235099797863438436593216207403158412477892107575374686442179451430350704320791891708254315536860892520182634206456725864813704568320562591782038671811141093425946482688159934297090882997856490197026962532578625837338928755211465291529523683918247460452910194710972484675179153177104097104259910518268539520304289744878391349554947980543388976876106090112798575825073980240911865137171222653996955929253877954855333315507869969643594964229605539468134884245036416894025484737992830203554155653978459691014928198149428959910752989307071317377965664300905553289327994588549850950284644007080706241112418494862133916539297959029131158062514264923394985650739154621700845808120916284537924609624030443114218948985698358239949762635499673659005627824880546112922811671183977198549908295009183673236341667156736650377361061056737332063403410177715559814144656394550604447538215779823278536104712565326761405690441339115296210030702222989203489845948281369398678770779363415632864910236794328437692624022552548328392842615492736782204301768665965365930746241254165608754964908497067499545759985298460945344650446835792542841082131510112938961881927693248231120221756864036707731726487325938077272576650743798183544800139162905157445216386915371613768879264078891644381253089581539609558090983181521395649500355526541811118635730569046931361684921810261207373485062516626873625896376115969793729107031511621422445382850451172374270682693053568648031104008891817274572963359437128249991844891468313131004074851541435190896882353764875480896554449408432067645595533709041759932190996007431454089967656531249566609171679862639011907239936167049017771581006836981063193553563613522749187290893357797646951653930745484252566662895227296365515537656517639786730623586151975310765480540289532531601949395336304927562830700960037825411985561643821347883034995939999815320371904489018486314948455952559263146409710068471713259502647267478001977847611896061825935753950424233795977832748562746151379388667659849662204204370582406208836832264614999774576849343391530101628342373099807709619251009982948420174200692400576186926512032915961194241973580587141742017725523177905799155980685544702998175691236820149021743148908860959473955326805004843786317283255788228027783973963775307044681831745418957729607897287660450576165731690039127804414511168095180765758455897687743007250305015608713824106966239837615772559788333446260389735144551194566097856159222619045281993121036130544888850748533209105902290817972040683491743672438537427407555076754103740470470519996488106893988963679893402926779777315510136748292964498716616387480928391333727613516511458687653975670170800714203116160576633121381876444223289818335512535646590900478008372238152919598466400554972447258395277820369798167170321756327919408066285581702239995204777287480387161536727459448442509762680258106041535327214632697312513497219121039425133532472242095253942361432227842877340347922588175651734262339738440446492272637919578131157514237627203984698773116783796765212222546280365874311759355831644675241116934493294688108999510961605213084570721687715849450396639049106141887860856148954550750471455629931627105000620532269066137825781316017603220973433261333991034567108467510498624962642488699169465874363399488868154638948242465984577292633553735556852420099382096738662832127104872725881996505036610995572650123609241043781086883738614012464955179446535377004978611118562176293167638027449612637695085975726247778121052711332364566219200112876185845464416120363602708440087210524126961712756204182189211477418943839212507448032291316566737926226650207942465800405168687099249273393069060646360798873617365864441322829730079901581793477840461467290903920089953743513557150545457465001493281676469801544541444627173505187869563691796834575745981341826378231855942604285683577230974772727095310465725871392788376171498988325165587658459242478209763818343931715246275249033847544355256625769712507232847344158590312425822454135201105768865080501413412277647350979797597165322409320114702032426981288520271353130012171484594553991124856728942246176555811779216453894275972582641573921036716718553318429096852951098778309232081644343337035691135410384601765183315931601762146264393426528312050751636769212945201832547953844492774251628393141343106226795356284876139469403273284444586014152400694986734961594079272858809061960949904448174959103909564433761703907276125412354892775335876415272646526126192989549857858930065881045254576136386486138517438556555308338685607210816131204906145887848650892144421256413442786428159719389978047391109134257790046140655520758094636923303925473166438103154754510983147606737926330885845999568999353851276202586739695128035976057952375907156376600975164048300965313860942704588148212587962879654957903805340177854247259711308541551603503567837780970461451995771047865665783511661730311276567901518165972850520986636796137347177492175264790310493561351654339295597668712467832251955744640272444007155359474048804304065788982945928352532307632627576930665303670890426050955025688528627309916477125616012512925234970728304675990574496468777227069085170298364495254489068034897491392933909636369331527636742699013284766902371352506091776350995292002731244023865757006858780469293597018620342571723772179977093125789699475496105523743724832176529540068144093345882387953940656084217900519955099464578748726508611651485516665622261135808230656113185935758123090731435124996047414425279597354359574378856570913306377601759010157157490619551740940998388274502844305091669547119876233489292751989516078837544062423667004292912251992330172087279616497346882233046859736081564275972335625958254887035338484716664189318473872485695845339136606272315059741608927734938768821670382249825317380542046557829438761966527834167384855716224439462405323266438326536377961771823507569459750423103138290848070089339750740358977330113970497456562209782789816756431729085281442325129945131381329920983439892601873489278892739994343671536564003094063601168102358102060511646184488836555280866265439572865577916493719868641514516664261116535122724396782278955528978764063014169535540654859120299172230842177436210545014476071475600058330214022044195137271228882609806962913480150447375885450575324750279251402851061941914287093134507336790423199888450218824466412490267199774666086468918833734387337497335144015840693004008549890781493464193192460097751739334161380017888359443004786038046374825235310856409598367802175188078401652900630883502414596986630872311085261238505708931003788068325087199867279768495262956883650359670743609352716895125122349956601558456299500231541599105539315180746997839621279353395686142155700423447977269222089468138684489318419154262504409821198761325705465328527695537157420782082354078175035903462010430134986159387812646272750962009925857083492829567970790332465325289206689049063764087436241829439763284627544144883357167770069639466367471860398862788075053410539365200406384307372970511564096399841314435051459484946899992507044444836354985269418541366246616097379154763081470481918007310765539689731840724466167823996718641044946480569623102013135147003272739284086213587006083417239308558779132947952435879189833909533561483821067431049890268359556509392353401539333788301678145208658937272723188794578112686709909491108016192828130703303524780820687044001344046854958188080136806595303293237463476504011920463204562731540166037081435695648333493988584792808470211132901764592133330530980096778425332932212735837577215893864016217901368345444882023496497506785629435246203379531538457462340173890359032774939687844147198184957025212849427638320378720167398909916718917724985900920192030214246493573397230398365110417352778733527631095124650992710118667623539554692566783429394136221716928121159143717386855853984409631021985053790618629812165917024946228153251349408767853192940114553370189242241369551007994010028856078603666746043453656590118761983375709654169884658816846754918144899815282484040063735003947309015844941305847294632029009712335365639096408778574091927109550299652681981479767150215206743081866358869114610816772333138477417708074433283279303532825808874057642839515755856791048739006988848065926839028819778433988669939558066650036824490486884666934262276513630175045822348774690095228540301868104997197326328212569850060274724529767914857676420841256961349265084840795236300841400994212367633572991161913691050780025455347823394988202788101768864502813390202856859126972599856839543990159365234030538827346354126800097285185924007284964690706128142631879645458992663766048427439769100788649351932617465546902567125707865370814068813860587244367746419075848390538678832569432671471062986454254204755506074801888029161552920066319891531957945773273477214975812022453730709392776469844678661783580960787047698418293376308118134867752848112612486402593064704496634807094220104296663754040709636340404817455410880891536467187831977983640996849951650389805873899168181319390054320789631028913388232046260307268390249991322854583613804193446810865918674501358892715568404694072865540886401726893184784714501860380117604550931574048136798023258513596201002070068810852653249151000051456727886861808962487581377647552163976398924881561622659417081146106665646072744668498044426052522804636851043773834785399184804744620318835737108437901882030516095623037578335280017150548691261342926746197516595593226496924022045173580598481046504353473187019615999528239277638114058438415735028254220037867803763085393466530484468108461280119649653140359265924176687880191882252356096667279055875924399802049955390469540917907333623282921659561338713671919571784854447264751582461161121608220632552535539574811239491907977080055351867435082725503419467499187011802283659752233542349669207811280081047966667824818523441274660618920625130919101015888482026053951969439894711895548441586107366790258898741612638693297959237922447608589158095992135723952461923994687823650465896764883667052137155194576002906847524103760645387180490146865124538922972372819826875923731390254431637342915817358546048808767134126047097505431381328118991195760134187889545091844395783645096128280496313025953970498006602276712809536127205652543720418045709969402565206329936420465311999349099261495766939883753463147455929093001269063984253071712863023553747896664603639453734132845027589712104259060427174009223665700657893713650553018587778453891754253151543028835750947685193000377825566600933648482508779760768199662372049766387638985631992100720003474151721375703211133912952407983355924232680111677587187241552829353741946423917448296404338549819202048685814597880693735805572741960307139515943152276365487150482922514045581253293812970267225644349179074560531877646062461313500613224648092931335926366379056886844623491593907009953911828052093623916145953431995773150699039217050325951921320241782503621522257361377451082489605564890402097866814491505081488150019983296575499211151451554027366425864934924114301930078755148355932268605394003602081353485970925801149654213968714040128138987924299507789192344817388231539104117379617054404077042219865132840948934920651343894411168095993753287475595036673571212995962900134686846347787877484062299240326083529798662229832353356661104190733708040289237334415143318464007457016765783370725688178760684007631997290723697308539152704845065598303686071945621892934023531809446634995403272958391058435649685487542623361855343322082521933633876027950702259029069185899906864695622617535870612593631958372152800863964775616329570345552185613467025464216600056930056849030169878244758163240995914072907600096163507820815348734058513665059114508068178367617804243332753749239571295040855080590873111579164335770288383740923440579367884707497712423043388562508100574697765074001', -); -test( - macro, - '-717897987691852588770249', - '1234', - '240666810925796631497300464125793793876153875629096662520743987128655138300518806793333863505002370424150325835897522997035758513508393749421313311380386678245885529902936330574270897824424068780701595312024191583797781168159472099893770860328570371993646844140203799118143686616439077080118602046330501107174223757814456182746333086177504034894868587120939461313455507702811247120286468199645215838215144781536578745753923838005482894245501661797497042343390617151204343021554518498735362447358070369090432988690834865403291509113944458407089222159417866640525805032080821319406442026747974929325112928921447323232212274973452975883062343094212146738595192633791120734889354763869347495932575155161944862722200405955280366430399276362677049013925041871227530264219143440107033389736110114624783260190579707152045014476353193813168715289380838132597179842738854542064339183902073367485289715584943627672587668112192162491400086760878390153498140343600949752356890781346460139220027272654766196351251998753435700609187724419282733374517073505387635776141937057086008339977487598351396266355557385114078610220987097361567756363195532914764004598634407992908600646589647778700597919884751054929681098369460031512377150901578312180257824087931889292083387179002094560172630492173743471238348161722683402811331621904068461649853237649098667186022410987655766907338482317060412259815938817187300402820360378490149991171370482329371650505043884192332467954232225473438096361196485730615702706338896803459544893784510590248023379843299267561024474106199710926586300140256218142748793677805122624858592543944305974549597571554026676016225109087448889480206990407910658105566060532854331549685512672824252906121631110818833232354043403137418311925998804066986754875440423240222092764003746250623404175411263344414954113517360947070716557546634100780648355973690014553189027477234402720353402501541699079073208241754265407813302554719501911786154879576504690648777330790234360752380718909924776795870591070461878764685781345393089291677007084060723076292423331888969906994889802559722805557544432185305096822014262735051471669354024897723343139333199330147964590265703488059466191857192410897868609291384108526636429139154008874646743040881795937998168293882623621583556584500036772108578773075747899050834512563302362032542587715210166387236382275419681547020073143476402676839032589356933008399060939093631291937107000000043323532799137849647405096232083364392703455257640562906669605316805575467472071569944146598547468221559924113348400144610716847685364347467929073894879899123491301645104075537984420168183636199226629624957989433534137128744185230344994592856898029628268331117744171243766865397230810342464227680605486409079213386036803957679866952104779315664126405241076356017313310476722815126991777729855840510871727519397893209033487330193378894526790670497601404262388611693537246084432220039998668497909914891728825779959838738394310285580938434539221810042937887451215631212371491462951157863268559393019049906492412696634901678674798328369463166268199126370427527431576741235550771195727247585539256417952853329478914515539806021976444112084626581019338193239617668568672517993467174255845823702683834750228698628538106052353376750716489661771727612994518487692989696065706319916267876683157185246663635313221904866416368381426519462074273529104434353847460205734702566140847713395645548499357551950806690743433954202058581687009317012817649884159064284249335591683480037524895848927954651846952405664224327697084573143825212146169786019851375852570935645324673501437526819689862546523710166522763874255457046134768878318504847569562740775920029079242062671507739909787305724552670012633097279820790400444955953186180036141498111027556284782611831968632960254971585279229009517389124640521071182508552930150093115185298823230740659868195268121798981841121508518238922062146832778512233130516701388382270437021078314304384358232872632935033731255504313450018207186652992855974803423357233611324893304082721355054709451741004386686923054310723261481499154665026674935888222845457736324171023246366147102994195305848085588996476494973007973902151008585594112156233214360569556745482837925015827621067498561246812344514749188513286706401554080345967322077722072126008109427433431070325726521163012868148649582784383995723396360310319509595957738338411942892357400728388524308685812413893999404967999249813865349937751377717926369301101787921984260122186159989136656801540380770978320766045936205592959488163833618604355519117056970124007977963289037930079739906574432060855963578944486246793175242282673514112660912407087562188397053739993885193130818225601480302627529684348527769410385079008546741019828845532655444621234451156249631617457720152180989156738006670404506338571918208165921758803413253593685587469101580701192606017766650438994704981870117413061535622136601016979952697317238276873256779729419028069631432675219491767318800339045855442030264560075159056776340091166641523596359578961807101748144945138318607039052076486075699577782685718970588115246184745849474239861848227033647872319200256588719967644217877454602724612457063846122996574940120482768446762101146242787977449369937867250832112867230692912468970042855717280755106531667961937332446742078258774278002352847604203619178315262206430766732415004556722421674647346648829974839968356832918027747760706008251337997576672550889603071310089578634747901944072670071985016123486885045817879153495396347705516599056944513760289619758242073133217108261158438678792867348399912643882264938522086425924074531699941057823129668543509614970599670225949760759593973290456515031451150061095408009491932533974765354150005121720734711745252878859000575558573436139695813170049848899622852245653141171375285116196880631468001421360473881187149476805269342296424485310215470494796178401944348619754324798206578015187379609260920882768561974442771209643829629212007051116346637625763873106848673476948458383017883010996340518563860345530523780019175023658557801658436627673907676975971882109751635784820139654624656191522441490775749907596367211611579452627181067685977845460985237049896675479606151704752856005151770161591738112961723993454693092539303522485285732895462643804740701516376964927670122135657823916458074535855817547513841507607015010962514867231406668733574660708546812140757605323461188423370665178218323843285796646737709047020502755313516962625148241570458025214707284812497971943815765595261077725596928727447148413360293693704268976245064190940961850889245136042407154085469838297857292187347035492359540055492227822512458140269037567546119976309595685267059328503097802601274596051953728897555043442182432638912118214086596792857025735173692744450906559633901069848611000152694981799908562674080212673483483714535683816021391478836663467848746594481778215255545090822995407416235269774848665232107297962031453869358953402040347982467139283098108055610285820589613275368865515242210501491361858362122708451547647239066214844062386833772040444917284525202881555120247439897055373293814403955325754500816079489668326796664509455821614956472480002144936394671934338050270783459361214210050599756870439116283220868124998006625761895550396584389321270476762755086709308051601531689562716830791751872883137993455070471233464948461931211369790177531373113631239997994291418256714478265196669753238257830553539691807842745455955136875773828554605336260805640377757640862870194935776092004134130289520896834858656317913097532957724133151945092000859020920237096913664009534675855229755344172129957141641791984538395100720317980525185769142781585509930975604069100811643163009360481907738801078884830886276286316858755498443168347068032348883021378746194698784811802339515331441830238719175466597762050420975691354490653471436861965025398816127746666639354864324232964949049300538005293308845940271700888627199662903120034287206034687813252949705816491402178398645719387809539644872118409461401883654312922279080211009210189799876128819902719937084606802972639337531957278291820852311932551591955350790335928152884811433450537315845604917323956883583239480347219971438941586085711934485815121967398164101784083619826265891401802416571741345090544188799381856839432343498457496360597455526238460117589115787753968612657150077978004530794321967803330389249425352563744925321708518378671586645666604614530902858059020840074105043307623670946950043194604176031013849727052783428735689851667778432798381033674827978887751236650974118849759189503239625343304532523005839417475498961072873029640889256489519703706344292253527801297251124450502273288023521577486079679697498402526688946738210589004011833446500132651961861200853340654900269802660034733678942996167533210265105504648979731317667399933165040919109758988751189548962159739945527299915654716346246041095050960741515495587998776985363865506374140224005340645853795347072152325663672271845064723399857372941894460100333264447275387920605177410030429482678126703784114018103844023345892034742213333395468046660012665242882251447818527188389084106839211601891516465629590896364692175169015105701572123182161899801710734441225139364024469426754491100056297212476895075865513734972712990677136692220035091504362225897411284355159962673082264518469172649285965322881981348609178818294743174542244219819932183490365756919330710479957613508601495497295676950329757448944977362883166111823279769434700959568955927643656859063742327008267599164937006804048910677286568538933031439840564237461535941197796390759052457284051017778672694027120426633268111056448896881308374127555545225553090822535510692077989067554686838662757792829768851773704480230259292642841141429771977100764471997993102274545765814837384547498350869645999651843659166200886176115555346289903469340446739207010577645167542297460407137062960215028382415884570633157792532691792641314278905490923087079766067798937780659109451731519734592939579025164926515523248807352103381305168229367358321432773551392789398713507962778942820119469523225162863178680183911570348027961700553229115316563272964376101119188825605514991804081027954389921141273219285131032169547368944389824308436381941175515798111830481000043636844809228835704445068305252750582078049987152297826581119584963878880864201441342341314647264252390676175707582693479476352854352886370525502607349886832362596404647139600857534060227964743860211405500060294329186630176879724051222152101141867575359408008501674175606199047463432213378831599134528934108281929480497040842200684432006775368915613194065693056672838195707429303679749464784054705434213357415294902116744802057352193718342238545126703326661042546563491168121691269341550977021406438785288342043569889077634089317033122541296230748114388665029044499469546397108299753200706114193470635536895967048169021873576306364846257373205822028138269759764442484817509279075026743603019509097159849066563284407999202539936119877761212471543147933987133791650432393675308321559611393751092509456575599446737432047081189236910050329727334141146991725988700140584975269036834508080148636316737184199462112708124889925362377529178344014590919552819769657577672702978011641143673156015114065926314546589192090878523676668017033871729579063980669673546335286849239147941679867288782496042348838505520661208416542384402601836938516863582808398758530009389050063886699985783925267497452701039388970042411071173551559121683897134217799905956381777617760035612136975496448360169358472611166991247066660361258257792717955895802886807621142240955311727190733860080248699104145339409596193747533219052958194006816842395395133815227958447183027408201887154248055155515252489593725880002915429087346780489686173993006485543412786317161927405570384085201230519902078033355645726810161924247926196020315576428292022629241922920330634879366713250236205513546588717366123436426532878032863695637071735051269224304497931038322951508526569846253683590423751042200651378810558188601895181845187598166177418938407685219535673829472096697071612870362277436920342738049215807079089141509386167010651751786772439419974350420945450780317330425760939076658378846814831229353170269675745570687143370733413098798744099031911520221044007327256897909622230050896081391104380973572938318409605238511264413423963577109959485446578175113776603615777667633293449071495602382745493460804765597670064823587149295646560929042625803334777303751883329502685780494009410515987822344496036156411290474009548223625232450188758230491801781290987433426377664288677071271225318178134265723090953908487368210301890173799337794414289839164334384499838476694064042562380923392170814007209797114936223969923288492450317383650369779029731134714434936391643766311336738629884184770965675076449262359336759950385687723231779915621937147640435620959355327348891883061403815008875737737458441613654230046515389312374996035407943181440498220354304355266414125515658969508581407533490313522890987856883087879602650008064327529989955508937331955239874722401238624800305487314538069958888480061378318398494570408743929545890698144755401436645575305635886766888309290821752239252465276109182753977002117165726763101082508643896734872331680782581238479701159334042497390606376542941582331808271248759018721187949059390620081627947668715490802983617888543466920624132979650708704245244736734577571335364024219584348266021595514151130896017976378599765662306270194051912298827281348333359149495872248207397081180112660679500488646194492335713944553578485524340274065812575443967506816413669283541021458439360404721464264498869630723885583385346819805722244341238149657763492548458459521747402931332148061021522859079768700468052335856043104242388423745990751764752080395046941015982884875151539581000878641435603583824562615084914225729901628394177372130985466208762313918008648944381048427957163858317218102829834343833633544901126931143569398807905684970202348964194612275298885061923925145525774876352222523781858372282001957198274173098329010279847291113009852613678253123199322917136025127117154756978089704874006129913373888341731677935563427208491533468982839070555222905600716758864558055015455443368534003989339266991496574749087456141207063618250411241902141164015442390891110956633395370303166431966298954503533779086717784121585666343471909838926386599682823714314774096149220614537617503626682222182615668880281733598355987215201453863347388340090921698878129884976286937514133684565405410347549261471700192037533086493793953508999824708254409983739425082813111045769624535087578645427477116700686622592971553298713236705554924227547844058030634294043977065066654988266829751374105278390824121371044031181008428048205223923243651098135005092948487395324912456217052331950187603567228183420265978222659169332375919592362911152011838702189535847577763714114425190514299564739774757564037598485982927812147173140747827430978393017504243724684098500167685714749941846120533181791178220367836024729909146669128836477415610531307171288054524223649506374655503312084693854015857030163886937766181098823169023181572231477404931598733389102380674704591127778547890467262756173574558080654790642471369332640892203135294330237246272074631760017202872694312963325722611729402358297429077465902624984852437593479190867737167006749083009854670384065327519801302083242691293439616132893416660268947919201637739258769771607084518793369204312869826490193716352930819450570212844033786667236068075375941453964216107149779664323628747272497685794971849040594638565097670630010455310220514277785818284186463200618441748478788591987616681646033755321959251953987293706031605827100615706433378711983560088154239750803537349035070283423517350889381534886372817293834165533055835445256823942303051891255521175486827650886133221071633589921707722114526609240665260264492305806982431844042679579783582551609283040246523428581845720374540737897789979786180180579009825935175015723992444590406056732840128165816199908483281974729283159640149821021618151095300252407271226953926728439712096665201813821962143089789720545389677608391629805852569311950851389264151131224953921752017840922075938093985062781184787646406285721393870539756657767030925030053022461302204093227393963491255643017235236360807076699601286868224950349231983608760919780584266842953210668067889511328397050532424837545546721403509681669483144282692231815703147470176852156718005759125673967988457229048839619145997585270368102435074595029990094324102493737818970275642575407600875588537013441673454455861497898836728065291478392070865090189959309947742444986923526745948057899128034232868017159368271694223700039666236730894705407231009389857561190687139334624948051152611495443371208819706799382667564652218904459544669746954713753183826624347921466724650586905939136598547335012617702607014113794591546834254696563524548343500981096958481191991323022742758572702244370470464413665803392605126994943740602380225661619992335366449312159389272554547255369597536289533017879667844179574297853538262473990737634615419535991688218597561417950967595509116168022993443293531295365421530990278428579503023488689022645550899786226625323338180515144059213727584521215321722089993299184212218054163465777614637889378688685803879328452385390951350548924489120271418100487678768868428228212387228503799518279495595264908243662176970443975028752029355061454695157141184819938299926947437018478957044395662391617808375468649007600370172940115843761412592237460566795143736348519450988859101853660296226210668299394693230720927858276964586740548558363904065214488088226818002415057852903743836014126022876012254536312345404960062753442098036019060443237049994545797682297235099797863438436593216207403158412477892107575374686442179451430350704320791891708254315536860892520182634206456725864813704568320562591782038671811141093425946482688159934297090882997856490197026962532578625837338928755211465291529523683918247460452910194710972484675179153177104097104259910518268539520304289744878391349554947980543388976876106090112798575825073980240911865137171222653996955929253877954855333315507869969643594964229605539468134884245036416894025484737992830203554155653978459691014928198149428959910752989307071317377965664300905553289327994588549850950284644007080706241112418494862133916539297959029131158062514264923394985650739154621700845808120916284537924609624030443114218948985698358239949762635499673659005627824880546112922811671183977198549908295009183673236341667156736650377361061056737332063403410177715559814144656394550604447538215779823278536104712565326761405690441339115296210030702222989203489845948281369398678770779363415632864910236794328437692624022552548328392842615492736782204301768665965365930746241254165608754964908497067499545759985298460945344650446835792542841082131510112938961881927693248231120221756864036707731726487325938077272576650743798183544800139162905157445216386915371613768879264078891644381253089581539609558090983181521395649500355526541811118635730569046931361684921810261207373485062516626873625896376115969793729107031511621422445382850451172374270682693053568648031104008891817274572963359437128249991844891468313131004074851541435190896882353764875480896554449408432067645595533709041759932190996007431454089967656531249566609171679862639011907239936167049017771581006836981063193553563613522749187290893357797646951653930745484252566662895227296365515537656517639786730623586151975310765480540289532531601949395336304927562830700960037825411985561643821347883034995939999815320371904489018486314948455952559263146409710068471713259502647267478001977847611896061825935753950424233795977832748562746151379388667659849662204204370582406208836832264614999774576849343391530101628342373099807709619251009982948420174200692400576186926512032915961194241973580587141742017725523177905799155980685544702998175691236820149021743148908860959473955326805004843786317283255788228027783973963775307044681831745418957729607897287660450576165731690039127804414511168095180765758455897687743007250305015608713824106966239837615772559788333446260389735144551194566097856159222619045281993121036130544888850748533209105902290817972040683491743672438537427407555076754103740470470519996488106893988963679893402926779777315510136748292964498716616387480928391333727613516511458687653975670170800714203116160576633121381876444223289818335512535646590900478008372238152919598466400554972447258395277820369798167170321756327919408066285581702239995204777287480387161536727459448442509762680258106041535327214632697312513497219121039425133532472242095253942361432227842877340347922588175651734262339738440446492272637919578131157514237627203984698773116783796765212222546280365874311759355831644675241116934493294688108999510961605213084570721687715849450396639049106141887860856148954550750471455629931627105000620532269066137825781316017603220973433261333991034567108467510498624962642488699169465874363399488868154638948242465984577292633553735556852420099382096738662832127104872725881996505036610995572650123609241043781086883738614012464955179446535377004978611118562176293167638027449612637695085975726247778121052711332364566219200112876185845464416120363602708440087210524126961712756204182189211477418943839212507448032291316566737926226650207942465800405168687099249273393069060646360798873617365864441322829730079901581793477840461467290903920089953743513557150545457465001493281676469801544541444627173505187869563691796834575745981341826378231855942604285683577230974772727095310465725871392788376171498988325165587658459242478209763818343931715246275249033847544355256625769712507232847344158590312425822454135201105768865080501413412277647350979797597165322409320114702032426981288520271353130012171484594553991124856728942246176555811779216453894275972582641573921036716718553318429096852951098778309232081644343337035691135410384601765183315931601762146264393426528312050751636769212945201832547953844492774251628393141343106226795356284876139469403273284444586014152400694986734961594079272858809061960949904448174959103909564433761703907276125412354892775335876415272646526126192989549857858930065881045254576136386486138517438556555308338685607210816131204906145887848650892144421256413442786428159719389978047391109134257790046140655520758094636923303925473166438103154754510983147606737926330885845999568999353851276202586739695128035976057952375907156376600975164048300965313860942704588148212587962879654957903805340177854247259711308541551603503567837780970461451995771047865665783511661730311276567901518165972850520986636796137347177492175264790310493561351654339295597668712467832251955744640272444007155359474048804304065788982945928352532307632627576930665303670890426050955025688528627309916477125616012512925234970728304675990574496468777227069085170298364495254489068034897491392933909636369331527636742699013284766902371352506091776350995292002731244023865757006858780469293597018620342571723772179977093125789699475496105523743724832176529540068144093345882387953940656084217900519955099464578748726508611651485516665622261135808230656113185935758123090731435124996047414425279597354359574378856570913306377601759010157157490619551740940998388274502844305091669547119876233489292751989516078837544062423667004292912251992330172087279616497346882233046859736081564275972335625958254887035338484716664189318473872485695845339136606272315059741608927734938768821670382249825317380542046557829438761966527834167384855716224439462405323266438326536377961771823507569459750423103138290848070089339750740358977330113970497456562209782789816756431729085281442325129945131381329920983439892601873489278892739994343671536564003094063601168102358102060511646184488836555280866265439572865577916493719868641514516664261116535122724396782278955528978764063014169535540654859120299172230842177436210545014476071475600058330214022044195137271228882609806962913480150447375885450575324750279251402851061941914287093134507336790423199888450218824466412490267199774666086468918833734387337497335144015840693004008549890781493464193192460097751739334161380017888359443004786038046374825235310856409598367802175188078401652900630883502414596986630872311085261238505708931003788068325087199867279768495262956883650359670743609352716895125122349956601558456299500231541599105539315180746997839621279353395686142155700423447977269222089468138684489318419154262504409821198761325705465328527695537157420782082354078175035903462010430134986159387812646272750962009925857083492829567970790332465325289206689049063764087436241829439763284627544144883357167770069639466367471860398862788075053410539365200406384307372970511564096399841314435051459484946899992507044444836354985269418541366246616097379154763081470481918007310765539689731840724466167823996718641044946480569623102013135147003272739284086213587006083417239308558779132947952435879189833909533561483821067431049890268359556509392353401539333788301678145208658937272723188794578112686709909491108016192828130703303524780820687044001344046854958188080136806595303293237463476504011920463204562731540166037081435695648333493988584792808470211132901764592133330530980096778425332932212735837577215893864016217901368345444882023496497506785629435246203379531538457462340173890359032774939687844147198184957025212849427638320378720167398909916718917724985900920192030214246493573397230398365110417352778733527631095124650992710118667623539554692566783429394136221716928121159143717386855853984409631021985053790618629812165917024946228153251349408767853192940114553370189242241369551007994010028856078603666746043453656590118761983375709654169884658816846754918144899815282484040063735003947309015844941305847294632029009712335365639096408778574091927109550299652681981479767150215206743081866358869114610816772333138477417708074433283279303532825808874057642839515755856791048739006988848065926839028819778433988669939558066650036824490486884666934262276513630175045822348774690095228540301868104997197326328212569850060274724529767914857676420841256961349265084840795236300841400994212367633572991161913691050780025455347823394988202788101768864502813390202856859126972599856839543990159365234030538827346354126800097285185924007284964690706128142631879645458992663766048427439769100788649351932617465546902567125707865370814068813860587244367746419075848390538678832569432671471062986454254204755506074801888029161552920066319891531957945773273477214975812022453730709392776469844678661783580960787047698418293376308118134867752848112612486402593064704496634807094220104296663754040709636340404817455410880891536467187831977983640996849951650389805873899168181319390054320789631028913388232046260307268390249991322854583613804193446810865918674501358892715568404694072865540886401726893184784714501860380117604550931574048136798023258513596201002070068810852653249151000051456727886861808962487581377647552163976398924881561622659417081146106665646072744668498044426052522804636851043773834785399184804744620318835737108437901882030516095623037578335280017150548691261342926746197516595593226496924022045173580598481046504353473187019615999528239277638114058438415735028254220037867803763085393466530484468108461280119649653140359265924176687880191882252356096667279055875924399802049955390469540917907333623282921659561338713671919571784854447264751582461161121608220632552535539574811239491907977080055351867435082725503419467499187011802283659752233542349669207811280081047966667824818523441274660618920625130919101015888482026053951969439894711895548441586107366790258898741612638693297959237922447608589158095992135723952461923994687823650465896764883667052137155194576002906847524103760645387180490146865124538922972372819826875923731390254431637342915817358546048808767134126047097505431381328118991195760134187889545091844395783645096128280496313025953970498006602276712809536127205652543720418045709969402565206329936420465311999349099261495766939883753463147455929093001269063984253071712863023553747896664603639453734132845027589712104259060427174009223665700657893713650553018587778453891754253151543028835750947685193000377825566600933648482508779760768199662372049766387638985631992100720003474151721375703211133912952407983355924232680111677587187241552829353741946423917448296404338549819202048685814597880693735805572741960307139515943152276365487150482922514045581253293812970267225644349179074560531877646062461313500613224648092931335926366379056886844623491593907009953911828052093623916145953431995773150699039217050325951921320241782503621522257361377451082489605564890402097866814491505081488150019983296575499211151451554027366425864934924114301930078755148355932268605394003602081353485970925801149654213968714040128138987924299507789192344817388231539104117379617054404077042219865132840948934920651343894411168095993753287475595036673571212995962900134686846347787877484062299240326083529798662229832353356661104190733708040289237334415143318464007457016765783370725688178760684007631997290723697308539152704845065598303686071945621892934023531809446634995403272958391058435649685487542623361855343322082521933633876027950702259029069185899906864695622617535870612593631958372152800863964775616329570345552185613467025464216600056930056849030169878244758163240995914072907600096163507820815348734058513665059114508068178367617804243332753749239571295040855080590873111579164335770288383740923440579367884707497712423043388562508100574697765074001', -); -test( - macro, - '717897987691852588770249', - '5678', - '52992561458966917842048333229403244806917799627848421877881735070477262881098520765035249624964340882038688516377409835187369665592703958080735736766945912536313709777389461793817187662953548213601180992839097018162700540199444811234129652849225410276267930982552729151588039493817422762367215695837880393501083343614940195379176805915010804690716402053261575165097342342740863670719437568773682027047862479103787981449864557595411550480691451690239227939258640148661525627569354056573032574365819474479753874049318092332197860174730296445988139873008708564407683788184545625049358109338930604072043506368501486476015294370204931967091112231708457059830732539826223797283205277978138098770871113585235612923319080860928191126542635460138797782729492896291235430456696065935768220494159845006073392139110350323314505384289055017134916876163400462621881373937156047111273516233295024171469513762593244072341275620852077848874899582624269495895402815765777547424606219477655639449216632626280672365511304216574465048481409555551898153578798780997838187598030296504499299634026846370222734083675507056188173301287819190008251323703160735842279757966250463716342218905187576189745969039286653568566712245083192424309450098888181155360995569923237384829100088794333552637537227162177479701619093609870600007097257152299648831715938521942096231520452892461541884420652580871321292450318548928985510277252222535133365388202103209163165539197901552072608710284236732915850819518113234646115533291363606803403675185089565146698511010652775061073223214261491866092146057590474879116664838288380912194992229955697790523281474198511681898554287250127257584177956384808694445714111240128709963424475982531545945446204678284012510035965008794769324049843450109531060002528540713991395046933182699881232634176242677648962206607631738502280973898290005462656772264590786129579181328545465308696435762205327818322165386961509403474972525469518547542068305372202808432048462319049469153118249646785678722142597199696100956128198604501655682922926268156814400446792306656470188135722009834179368221149303323894575881803165080171867765138413350984666824885942458943042705023835971675031330773162756179573615771369921528023990741381103617964140627847781113773752668975380722356219881474606884340999916287255829002765995657643610750292167091336372823055491725335254964911991918866523018470993631691434109295300263601212125887194770564215757107756618621927605011672982388667069376436126257785256735035080395442838012293011886480858182971214107329249888540878170831338663664497081571648293369670697492303978168090750719696674347255594774732019346186950722015778265861706529434650218922964570378758677250144083322218433388621419998372158607084870550629095764769864396578302522198678754554607834625544465903300910375218946617943281021263817868702534903565965515996857490410905151194367951674404671401634726316031502775424938708095480058006939655833612970659151929020021108105677362480187576212239598103259569657352323481949129023622185672875961306339733885857708982104417776147428446169851035372923120375171782152648094932708525562623063044339202972582525453779487351603066880013958145443211731768489287736596200008852460116803737486674746320357688425959700168747470090109849460232048475582033235140686903423628462653109627172118888613705624945389644912331260448674882803772456442287538433120812454253132443354729068891796527676701606716457913622114298779919239138678095658602599035272101050540631199171079787674726148712746094500511958909309383648848324958153313684693020237870128517588375127269029825997693115614438073154312047924340357482412336581044347428383345931096734448615207346214924813291025243318597445591410601657643923497289883965796840775243249869681469920755474682727417587202159996646531840273727959008935890037688256043389201553466973472089962210203795891910446649680901883560841094031991763415446185012636385884139521383390919645656949585657311438685339885917614078799309904047978363483036838818577158746493373606130783588041171423001575976326332942068212106971788178296357879590268289870554895714998398477383074091612380803534549439364991095989289183083877933651758973534265032552397343750530201088858666516716202042806877592785968359618297523122663345711107589355569471982996246008945010788125903082708965247233856493295495884971617005159683177020951059046089360849718770603433176136962787644988761679786793574894146198596283619577589492917433648008790154607904592377489003959969338300144125428308936896784361334723137983098924994947562038207668868190447389976840741447171621269619747614678405424544476952607756858007392925674149003932269670585532289548230838340609191813200074864347826444440499651323577336653937195827618989214774650052553204749548153719625554328240930029474674929792915810450109353297164695948404332144143911830336116561122587580838323433271508758381427202886466864203006769876629040113309536126898286439306875888068434906684986109839807912211044229574073513385256008653277622489509139402265793326372569157760069106457217990235011506430988742050031863394618171218562494463476850191629255740324446363242993320648668718706796758945218459365076583628726166585648610786131608405727805072734696605117814467304269584486848714577856278821187639674139091420868276683680482402061170964129020179849417226407523345979683703744990934601753619379872634811616761518185857620947821097797023780246814812679446740501132957939033231020697754175111520932341860938863741889626558269454453009814222388294592392173794599397585978687451892813356296473121549635013676249164244665043044957101593039072361182135678926932958876432422873012810178205318591023576753916592920079031115341838800740563121977641772239560122596720253059357199257880604788460448454541912874334474110048318114397597184518307140986163690693584548192536813827180198436161154497288570678489493883807773676094581689577716104059811574599177659911227887188217401978474514757553745261264218832355099235158560242297233406180137292308698109610071281861640728221129462482399191931254988997403297870669677165754913546299432301037504530872073067858354779137558761312187986108590108671713663509463849235645441069025317032282653619885664511756487047824929057588473863132476505639554060087119089853326292527491890156165208813193528270287317866931952302862861082174087615226626147432099575255480389022327072418068332438673738233637882790315683455450464590709105784350178739780127964769969011026088597219619472341103459382289201174496483005244865985320414773065969458214373055466663167449827644842719260068316989039810368349530823214414315840300587086860582920441160086337872788129994593466901398749881456816893076117420457023093235142704769500472838381750950452685686468352355934718793080770041896266326591193598230038726258131382339638465090689033062834104050137121528398579502285618016610064410178458485780348478662846002089852720537701136965653853259363332024728436379986256649234691293765971251875100216741285408346246009343410757983483597963489740851123818712786795291798837714819930591978286010640687992692756495314962784887224591285887831740631885066445063662149099404455330521550962587381135521874864351037529468684827186997370955447481995887639571571525702373403403761671748587109161571183805369675426792116895119621582920253789699657615500011890976403807282199844302806272514657032217062946033211042074109494896045803992953473587506222506781346147810525891832442558813747914920938494195556975736956239077078403047716108873401240720217398379985768790248880164667538691286461771920136462983631359473029704858507306794650707316446091278308009089124701630706210560168792994743974642056525288870381921514176601924996181921908722977903765494032218635205563065562888264623205077967964252752702442201464476030020851153648989654374063092609825139716406169830702732441666788603492696815334157061439959989046789065423318960712201089688946540796678378497252260148940700296093007934347669870770800342086190913566676064617891161093655936605836899446861184700094847166382869925437304928565010472625277681782787551544062045311275114543518096882812611825710549053207666530027825046311534181156975603474991929909024388711945463808425263464957653237271591373069179547100808683091655216330416092310214397175383390044315163696300849781070219134615015219064302516596226701912265613020932966925428815092790344445459519486710818501491744578229686083894654498423852571127489975219254353172438337650602238280223597768220243105815348527252142824365262184240072688609964102457657199429178311502128276669149947703560777240739423309436247534508874804401314162274740915591635435183346939875420896409168143366133287003880010386186641170364265028042141513465453408101841921842528837600797310807883817569665409313593668849776576983790985321325237847569765650823790815463692017963395752927945155773792906513914253930342695948572439951274479143533256050317996678589637630517043566370062714774155238038673228364852986154012293796986173903941816772421914136811088242656279247112124439226958945034478877984596864873339798554814421219750181744221681578059062457004925780474249073437168128231790400216332672320703915847426463055894401088311795843457416623717000078714687159781995749578194250354449880164141903126715398601118555657753088212238422071158309996360998060316430904776007237664213238747361809842176066931627956726802459178808505394046664002938285314488362839317461527679372532822934704704470253690263875879702240062788026418261529389183596155698524599722228817999108140672748144745689714554812265041175714545225389990781353970530998752805250297945973556929670870774946985404265424068777800150897438843100570165412465536409965604362377295700424297999045416603027704210682281919437502308628718607989662408388051610908664802514940396058178295301888644151245892936386802507105326053427738255325180381762764389027620113283759653480743839809992357496074117200755535328327778239627950809058337055235742086687019858930046083297050726069315089882694837254737886800564117843966144822575643639731768343937069600705061564770014386059309401600994691145418984296800446891914436526504588487235668560512126375658106759961423238985938919327850368124270203404746108520903433047821070462173699752058768991623911437121303926263567247275258743101051399711951304774969904872170431870967998534905416515742768485058006433022048620528364549739197129869684349063800961670793383545725472346808561542828191153302612521938569967207547584404136442698715207952729855421979521420559878331433668100753209636435675712543276009510142074799136997641192447567079334735530723873493925022491212344710076896739154338361999719913499831623432329457641993249784570344228676317925346610689759322653659928903365020471696174639950909615303515965200146660518282411647170608800939660621685552950249611706475325198479518423077155301209371280575534360462938867984963297040183736104969929190183531952577283379234782953108926401989267488044466794228043770347285979888837421775091151607628072534183685174245345816369526145717126891495096063726823540297588186575358585981265343937095373338996442251138594460569709569806492449609367188654079820152455364920624125030761646597005088999711445807387895998396475835641806955712083403146532371590752368935420985233735695950492134965346564198873831201899225738635547303457400703163201429850285547082772143821844313238723456259228759115534200528631507109400219431734564426566942208047195491924187286616903223592310617985108600082628611087567285767001840566153820546701939593194433998024938689773662808625697973543664837705457336677737765607746286815865891347597385126417092248398027369133671804532615511954414419259304523253807140857494548560843072982788068686101289767274829556337961469578050554176149354133487258534215364379154660461310427570189912699705529950514413147328168458631103249872388038937376864265012237965847164952284836681545396080247290559401291604967701175723121502236181093388323626875423056619719092568232717945805103108385877791944344245670750247392343384296108323807858305055418400741553693700502565024106126585636797090774279356316370509236531508263353733878156923208632989404619022265962263865918260332262005803614050713268964027332085964017902372988449905870060050221522451244273428597501098201640739856281753377806262510621286335117441922221183997764738785835690806964058090618523209727153455617620262903964419882379089412045613968114570967614290250244897455062121766814873521607883867929237291112681395681208806316115052463955424369530957702703335301336133507196464013784297392355963686577412082487656646900727164897539211910515592015131790757084187802478999731058868779493827694303480414208944059771372285831516411891131036856120211199256880755033121745020506905940385581282403448035169726911436826243069847201133079363947969342361067328363441956715292529385906162072082866885762473853872136917177105248829462003088491198093528321254844293731158494353309329359943621539173472646030822664165537362617032785562181639419716789150739604369299294852110605262082459555983084488041202822751327819978152651961662242916641572040409255879415966668785223872853617095739101441693844227787889967257101619837706529517298805962370005920305999407921230127760675120172113782634335023130691310728800481538764425860624015422603351785485421993634219805565282967254634644843789616543323341653341146495092459321686531162492849751882105121323719768549112911144880654693888232614646653956763580397332567522797083319499426431434148243989859609258432804222067142397999063441042035277929314828603521084355742771233471852499158339778603981017500121847933601889420815095445410655577708991650898864592139988828909325847690688265292963327637387564935819554712076627813142907683346250203958929989323689935059457421263112380235019472983111424135581186825910973214910699149667710959563181536691099143613233601161732666745012245211307688622118221683809456064734882630698593204467656990257941572412614139802715394281994293120883156362501711873082011731962032490574884682131178885924065895059613017568119400856466320056952350332528728576467215637026738604714597593759418177681274482897193349099377791845071840865476390482509958300517175834887188010180465835340333367167368967646066303894894949259012937252758312734808329709232360933894530979086189948266744307651572635781288044544893571461370440118431167905294073527312254045244808871450613885567599305888413740007585647252065620950569327491405356998305146429471623136661921767554001049077582559141269075807726942292324962879195004849835063558899374919319497877100701211206496709025329275359077524423372451805882088092879051313263439053059246113586757853983808973560033255079821096458791208111949975520419973969738539460358523519982416915144979569986992658895580772468544281855421641228395656106360926287526507440986113241371749929933626943002948875469110027470912266294656790428857661799285796092963253692751518091473958954584426686863281912392953724819538676197544419608647219428371546066604565530829571887668487791705473466987941636508397417037367030291035726974209122929822977256282776129310660064280234827050717329256768834139633843952427070535536323343517859928713869623513480175609016408364304241592622958594443056559986989106563619631715224662514109451710877519669377700137922914878226108875076080968720985553774478319079858681651339801277697214672775772710298769965771899451131005224958432124257866462047576738776398467445567954900257927297206412032651048753538257470550748950042956467383856098326990699095531754983730997777376855850204059808381527746257418211558497066091371508074576455448794073221457106194028764995140574406949894779285509688637508122002763143590113564857465357157613251821223444359965532981305922833468097064802147367022534931051008695237039566704201353988540866088741667038552935423161581934287462404348346959712557410094417500120546248110357270320222372208679677188804508939856387875484398668973720610306440393165985553874361652311139176073072642232364301455756578533325673397255829115802632064375030488532724282480941523096056375612516691335273199076868478063949077979981834693199226789642526467313758886727034664155374708233413052241176017997770755357925454917422006910044558649830410441042783912087181440912216816911418077643846400706686847762348581058766312240711484387486718123588654129529313123730637305855816034535443508751239517641963906747738873083589048844951039924094554710311263734798500241327075231542378920749258310205825922008644493121370590192760015148501273427214461014155067372554805948839297269789248975606338557054691632614937241901458805041012227038978979812168094150773239740200926858206670986309560725257896194349092782159293694188307081347049188661030610107456715733073715420873434056971119630761658470234370438116245797515154771525887334083368102698399109278569996061959700658346646955565093203139925211068688479012109279872461395639869548120204532938913593022473786111209373901721432107297071448742770742412159279076830118439645403061943303917551223288001014702113659615663577592748103708841776873178445568235386839518530066675979433748005530615064885650866749177914061788524262808081456736332733040493983863214714692393115801670972860894965741349096171975727706157112301169070137414347667759125039407153467452265210719726714985635420293189470049637210766042254751512445609291095350283495503549502917353512206358756772848829158151755615008365723008445582823523075844725615067686956618810366284960890688672135540705475984841760373827462101875128799270857413282580082072800739904057148821354442778410810970050701431502851594089320392059591004827037030949407048303186582849254894900004175510461919883551638536839489510245449220044773071872011316439740663014720019722095387628672305811492191697738078092246616407460689410223935009608878423391167281114435298028095665936771603627090834937282850979762786426899134362341889415374040340896380252725754909908018401107333556100522040895675585460969780799009744922983914153517048037312468584877909733205649413029335540211297879068656419387807383048842494215387689331649844934805491180381285929557990551329032335758734597115389529509449814729908343459195813101027114347572133759851590325554983005153111501432758813072569701126690781490951740575825405497526335840722010023321789428374242548378889836216282253171286247053640123351326348638420215428018887341486150219038345363430704186782773219435948195386840643853198799818242098668338179745226151996534978279230096399308636037991368814207217507069935928147009785676785160027497317009001777550195024132691150567507011354412329032340603521157466518995650811670602491853174280204852628446269615787322879786482369408633164257134657023953228812362587592950746528121453810577970418765900895068401958324820738606431245080063027400254319882177028368653741793457795068935169938691425211024828792631933230877447721276360612404169065676636411366175986321744222814400246758586497722397143948714428396712767471630538898122410697568130170950184011778819880862316215372642601335542980464853249009026580690749759635033913834129498173805649521698922073038683841857811453879318495594875910979538327284780569733959417673964124812143583018523970514641401891081019284489763221082086325354879697385907787761049442665031058490028534622149846137905767487116029644971254430227080575349336243717394801443483839458265798732710051462772605466482812641037899172879970734427748668316293777647496909333662168116654868712457269032630974156741200422999141171874097340818602076458352626593605494845936264195396202806647904404677157734745652872270210704027405978135714048673747336292778720101960923698684395527092073172044177213818544969591585627238532808299570223371536372799012875224234778370905326852914976423861886454350497565400489482872955448045615907842220173649212448684979945647349079756570932865476086046458864652043811750235877344393220429343034415180297212581588145608747445493372426999318493938150343775786331056194752510426503166230913186538526760445807413799806204051029905931303093836872257279463684631738363832006044614840509662858475110814261755496445327276173263161251358809092006580985277059802629992110919876640778599238851224190806234298093499859897877945279235571464696627205637879325947667945367188005248720580469836926696939939415121732586533901411675573681854304269524168392617282088535658385037701299391440541334384518081022468387518749703363096233963804922423094068395126707285054702218861778016173542392815212283678372323848563282862826760297013819812339131493327915541965803998097384090951244169643369018641096219195430772492922432677413755019687006516340030964660067215342977430274756427296622985672207880091256161463966745535322513359262081324439248033434926360421216544044746832762555450035219016309931057323669695525075977196214861598745789848117118689974917406963326147153664733948922010644259043986576126492884735748201429479293157327397169116086340829373474447532461009810536262731597451754627874681161347317493618449699664690398390949643587566379695090443777568885944452505841199312483422475407319328641366974092114345516068535284073079980141067468263817385977308228962318323609469322490263507101669512786080642752319574742157425134152748843756299008728152305538809501024125010339213159780735824709099108882350824446352596024291069384003047531175618027373859127640704478972526885889432610483189753615050833681837753536005311543749368107499347315534545941713644730273702333948596900145557971505509367959108594407502948243020888234056853650963187076323765146652614211207546354464881645918117204811380635728429776867963381852884230518246631190131825530206787122927542913920281579736988824992521073962274953252144927376468933425658712672597384028057932228407070530265731165980966598601076506604289064934821557949717410539761505040873308406110474412692271216992858783788017692940669126619626790274625702146919817133167454141020585503777417647004018422961010432475942591656281157554753543866527442721860074055221343919493702427083052905183704806054896861313080853192781874338774353472175893928663360488609634784890485560515252214309637081204987618424027884591397424067625820413547165571090593288097729180898304860943714385424978418160835850877717027658521907629768814727424695191227358428401962885565649381238098204936255938797308193040643227676416950981533713051600283871175312807406414172316740879617172963584690587789848239482341701897688268557616992035582225306531638164023604262595670103263609695362798739463036593927714273709560324792380672245014432684528132529510597382659551239028729153767533108869546101650464606517031212471681999067256252173869702628620955732415793090541749027540473718940312552425322149119344958406002437705982398992267252296771928467559404038212669370252790729353944780711661881552113249584403769083480856475063987837244029373948596829428019040641426569984762280646821052726889241697080032561970596779105934595957656757479131467410030344286211442477923310898646446342650046369081113562118381113974544065289731235914381813526415129034466320886690781519982064571162447720218016309577515552126698701486349767343461948090842618080712299219097673966015228424172663889427342731020122066675346414052340618598182609249461329861211149036514914521730088889300616712047373574894553971526437268977130623792336839865094059220733603108966045443149552683777916379609517221061627320405151444134819286421255392382822364134687682168786843209394288411699746863444889434411414485519234492407599434325668997799101520066221602884158226756336984242409440361323534712903377984364440121709955882861088033253565408769726596294534478786779815095706073686709431442168829090896416212535563746063403950198043478906364003836786350526095004964058916984298874819382063723661497266846181942426357905013650755458667314604787157987764491101741899567408074361392569794087507924311908229702294763769391197478812554522186741135262551897352184690374471893073000220162512552332060179402611785987981834888043869118074160633762440696320006275857520907876405364367283599977809702429809327633774811777287837997929063319088643981288504577794563897734368357724456507233435413578168544122187905557510349163877892031860938380863700212457499941173051991635044055263541028899765559085615828388330183855986870987907204189354310066588413218192874980402116441641033329112521433352585269389744561428992772734752313702102338324264613628379476243754122969786509425444725576325781027140066964089023790292891876331352393285001370386695304261889280274262043056322796927733119572711356326685350484589411334123538058781520196877872573359539914258371620972518600167848136853804940166949001046871343046124149316149555200621260500187812862150026333455832936133319251080100944562462138196424435420637124060278270301200807655723626316279314677989720701526760643271100348145148124820564605091911779855169535418882307665289900355017573800822546237397396616805582194694056466899912723329771183008166619132092740342879643527581402206500436271851742975104495236263710329645094452343102310844177958838929699065716898974352408381283451421410089914102753296005962431058406067303947323833242313152680641247938380343115958860199956778403253209323348645070739497071952928327376353617380302386451510499726403590049039220125741769453186556766459550919922603305625386150812873799214104365798370292908598658060494523919882837028108696230018764525326479800889430827403509641329404504108584175416299778457550149516420306914056180810908889377149438217925739822836731498632998974190671944437651733816831832102819701452336948218481443109835371939006988086201718924066189320116586181314358289815550824203560990687366887222969587068618783822844334383574224286655847585666103020816988760101669647856537819653647348642372860462072094399934119806713804526340303858796726062832597308487962786568628209393365116177313500258916696602298504935899488231886983956122931761650910471751605728341369214793135444893690581825560582275170663803345907902656817500959962305071703161844221586272436733043463590790972533783408461905472360665984339275927320721268991984362793905235237928358401214308908599626975869024433459897721710178957512745942114341723971665941816834394308329806825884356070709685761638881841811423881417063972638317949761209293108884169157244310554120522091867059525129565074635172821024753666469843554970503238670636464476697226613787178875812109508162171406085559173637604564435642338746751084270357452547638347056148137732031656248286326291618903398185758507933313960978162364875292581607458217158798787916676003226916398811579605403809873107421485543087852003080885632791018542669430381491298441535109732809291308440227122322919323520142248717203062944396531767516101348669545805257723994808980312479264837725492136882355862941108451810186385271944727323937476421051113190387402775727960536639091788137833258176311969569961943551611853786770670960071652604792541940305956411115347733415222667549394453865233071674925052111317188727005402659672862870124353044134138940763586559553241714723475928344653659170671048092842027797901483049343811224941954463977298856433740106969036666079845988063391903825032855950193013788243789490182350376071702678007109765795706678377357340602031572982332824123773826221420577356000773691991307382149359100536109508425616929397580550980381697733400694828091467008203408893560621735626409474184799062207420684997475127497499271462600004670205579497645152495972389782480775949584706612600406180867943792941868858006175201936307008047616757589672523735789473093905193759863364945186628110590148829061593580057092925835363208545182849585868221368570360897560213869098865474255930740671657540215219483723251702391679084671148858456387364281103663462079699683913175189821329916045361853985054542513239589981629807348515391518514157410480876717317086568995965776721883816029400496479881361209069153709752129572198334892249502748191465310837081561861610032985534309285339681126580547626611304860810381677502832262489332934346926301205586228829998320869739620904253982155600321208706995102261899336727019317570934776614228279624359270351092121785581627705454815208145814747270980169200427592287264446298455337451867154675225312599671885696403119745068812877999940157697775260282173718338630223097905166067171605705202669147542203111329964484204150252769374041699642264247344682780556183768647043088086067328086717187740722470761010716276890826844033820289730485347275758989422619495961781370981845507287224106646612891699787304991489991450237892608587094959507431025121524157532996055387813931382902218941327406937104535120623519125622928074921413343511233341463048114587623180196119633871033128642353961758736942162376474650866446500486254254052378915783117942846877531394483736296707763850427149576406806692201719207270711640436539293214966734241103817572475879693972994529271225318511005262619518630808170022848370992692989178376091827819432746605823278836088860098280229785555789098175025591438486997677754831517943543494195444780421155712600231315338591816992539029327290383750279259408507030866894281949592643856951856970260492648859191372445722757560829643128598473999963495915365217562729260899176033339914368657427490270587754614627221314473523385599772728811860813438436363568535104917622395452899623639754284218650275206353695145264760567105459178562491882032831507849731082780751290549815090526014153248389638366562779197588704003763886554458980922773564631738946671358670002437792609926532640853858166371833689910006342371227521888985462256616595134913448753896321572610914451983732905554764025205460856114907835462908762361867725808829101494129427887010484807824575634192790958596192835856035642229775443466803753619433447559913956011510527564464490362903893004175699539657818550413774129471722988670400259357614877806334270973688298172787849219764510531270431348031231230366988119457069574129982095326123736732280724513806554712464556176030636815599985296475879329526942793809334154537286409720616279737748877805830625972559290659320870467177007699656878854930950374408662534796671508779289654115928497876570228294960433889385643701335793908755514074473749964759488535101951927148371376246782141759279753146527867175256859600371220723263087493647651934107824747038684956089218459994098442077055339542213286639575013424597339692639209982667429839922996745194919443742101455841754629560994904267305390310619195510596711795233359996984129886409644969307626193230100243445176341224116774838302230433293550887983785529668376917774923810049977020766265752226119147869678480128953266773825987624533026602499804124858105127910152228288680919984865137490347059505127939634012785058380116016158201512139929087364709693014634031763687342662706605079791983804043837557045973734575431521833043317763655587404678815578341748648519218701877257148921016285162472607623283323249556573753034374795565710904057626708068152251494257423269988884212986826103841847235290434753139713588793284927733100788323782464581521308771041340355123219181562733669769963813626654980259896667571531426558561083021853772568029181635433012078770849834446674149991209906653073314199262005928322117392615818629566430413616987317922057832297584265671398209566291140412705971275976266486649851786135002249020062965980087138574535447132363958635609925366757622786251073626356537120620726163351028366500669047752276806994698670175421508941444055686927449826465211114309355867990655881671257209904683585254426503206543491199687267119577128778582396178926678946290201534745035364519018795390246746811766723584255073984715970376061829082762752016704470773798620997166862372135899943680412430608608549449361762094538339329299440793971638832722944360033468293012144165093312313114839006029476318874961592758500904627465226488109581697907382066846687530136534632837946481815741937620620154295350284380932563345904144633726510177800611951790431250878298814044606538474701064227373555412349001233072133083235347487459787376279403703807888154514448002202951245397248869293062600560134295500105008538576207064629412523316530627112626565186270777090318018659291403078286535004079092813364057772695524445708298445548622123608796436695854008220295952906804796979613002284502190226292523908476214322919392774132723010892233879221455324852691358984021386299602980995708394090452538155116048679915227979809152112372669411580872195011069091512211098837265014358497390191374862378298332979828589280675262431318918898318225215446376722107524363251975033827569456312898080064881381141772242054225493451609900958323016634712370823083984626439009976816172490877077263224311036942854664827302424290250141379316709351675690520061130683735321311996496187247021962293994184343787870574057794627801215642399757391689423643087425702078241032082171429850853657783936393491748921202257137973536585938902448803265913705675751505623829853836767351048275120136814974429359820277661179090491547020218952518317240856799497902090061811729297871492235273099451994560780849999017077268810932708025581118347013333023449244901948116998051103180964193421409328454794534892399934923614215588057091032039363419930676743779898364001040849687155406279816603303339546771517073573996877517822995705129876831722490952428194724842099930819145094619254525540759400392691443317175946185255495513754986746278892496030387565394365588879946177842768690923727638413659745835806393996818031833024802300235446835796085570745553032228525815450531967652475109305456596317989530038989405999117072923810555284059845086948523349452739911967441605727895585516463617479813514316281381343200540684480647554584918667587044879862223471871709991329936110666394849738825285286263958437079344497666129723469849274424451217808101012327262154782486868475696579972204483320055712556519479118501769492253109282648803982799956007070413969057766641895108542980107519788443327966941933926975271423626274088356029953637857404994029785121788713172223066847502903458085949291823486875993171596694026412513484348659991282842807440540512919421580435830982886747148859097314781713081716943137837514388166635564093209988083853631966764152001236937201021272205337526464980001923248970935051413391014325982735295720169702781387326630373314301750994939700432204266441734849243617137063200743900861763556953331088533375662647974513214949950360582587461449318953013746171392411021921268719401083870455409243782703438717812520258803044022398736843362885510789738025682748439023460396397947226212022325837892155810227799539254487217780142395057860256227526753652355653439544898392544874518721260751136602267606533517775781758994893256983747903520154900084664232199826595227499066488170533660614570516974168882282194703476740231831764399346962406995812197194307712384356275327126581811963829857081764545583491933201665655011341750864389214260118093942175688349922926371415338795911538883608650663492494285079393689588623801351274317524162255546872032205137602055977698588526953067919577657802157230724010580762546282119676770146073279290190567417587379003247680752947289021207629278566655115192835788767007491592173561216460960732338187214850961468821550647703718319006714895171928841330718580062654702438419600965779600185378625085906358134551760230035403561105143710833508540322391028617424456041890440768192600260326521458091222064446938238524580192166531189004653013760970323476986163112729146041847368155310536930201842388100514907989986285028152232579121250243087183900990150304104081116859121286448239243348357354426439332087091013606470363706785376906184268755539296047766065167508797445567080041967876599818349026917276210630616917313061541554664359090008971749776374922888008224470479856127371383520079697079481864438879042548335953589849253380664920899400066389165030020576281747877494368823642902286149859757979430259416772186621524014692936483589683321666232231917198657382422968512537393374246432506459315712945887280161525313402564412785562279688402776014658097920177207595566191984505720566032171980817248093432499471573407422741267535537792190907867772310470192246974486242409294991646564339659296311172821487691415387361518368358002232126427175348186260983285915013630462489800994709039714768490653776139921591148425560513222581914691269099627882433950238366744049435126864696551517102338574990439051014288641107331775276925590557112123848552944123712559927798767656060604001870745831020943534367217710806627918743824819528778901432361132400874522503036881964803363227725213671319249255588338379558944373081448848288914340029381563870874199421074704225053940653263054076372331153673021564933861085136777463657122583608153245145603654759564012552343708794221112376282396672216677067893583529685387362866085958575144207549201885063634649664356022770450599025073193635589697904649689742659731140870664049705909529992131119908451169523625982480852065130458048303330783267873632661502527296193654564481985949017941867590637521370248661759842942985486580506523527905415291993129997589693562083571993824525692390012764335534053818968643292421277387911598443675823895632044862101929611888494601135784807263444029447043613253239718910969875605613576775133853633741165480175557199106843404370509722920321859723309901527892004815816154454240322704330590162893392597841258761159890728628197646144967822207646701728736399384331473403587477868423279416635027533248541770967263778198842567490190381802603584303232553124123738656775047738687142923133780711030685516297965124193566037052352262354539607323266508361484876586175823446779222126520889533051136757982925713629289751952089225590370193731715841445105382621870755409206256938181565226769507387707852521144122034388075830457994525416533663962455970297774911851804521911035459353309532169948020448427333167113803415885128164774439258952605402088109777145211067039266101515402978544740570697381766558881546774239387495303310021282368800400514079555621371851412626774730245176141487171901398964327496365698995566554278753549639947813610318041843322486236707793661756645237618569985152051174050866426218945874684052954853332216442206370490833124972712199887443585954028942543566576436008194402325554516608853398435525073932650524074286205850550540531543625550602818516054893310255606074691613285654709269754001340023163558376144694499945698271995324998769772391227717778525548481765287382012664202138451078614644891981447633443984616961062704113987629899385435093671888725031427992000013446048294556079409188916356329263861385119483041778470111323934672117382552154014552689712635622044067335585091419078549572685722517799853945139066113116557823200991839478980485148139756437276310315585052962711094520823502876017799162004452308825294752903780143322159163359216776682795639765675024359141047188281889450388835463485151185055730257857244956639772765885901407478608833348764219975332660938410968229409406088016572970425472041832771272378171279797797035736576275270098485254500981153781872753941048954786738308270916748413503252625251966120660459010356765817802826429045068657112315950170987790686087303575594630278186797170965451147353365942405760693758157024450678772714436915222715682621542648328393696771847903632197735143219253117775874065572827559278669061592703292357856712182245702829796197056320474383079124060345835424419150979181507698302000007069045583234865337926621992623375749971204642446990777626632490383499047710478578862245179305716165431024544308084192556089479503354600043311566543487429471050399741986074927517309966574629189828300270254631391989455006206141157242311958987861149970781306061082396476609746044799676946433313570016028171027821734752039087742788832856846639871795304172840764319177762201671679871703331176399614205812745806594113056822213610394374595550171039503669220580872124167464169590577829197969856928840564473147431728291951743418213909020891248139717532829309139307324676418134145138999363155157666822088563424974605011214474234561958644068385566981590500191642959522021800166068563481044756233678800379514457696678176805627254751999892080533501886765304008355851853948156310423934798610892860385518158372125742586604990037334390212148772332920836540413171820995316460503362722328438872099507648776358269375088834055987113695732969353422819649914493670628253189886707685826733188098490064699162769196462197178091601033240633742092060902726567598519786428036312494443148817711021658763571536644924743944370048324568741512735789195923635121797799038653592749525637165000255493407622344594232313502271601912269778165783446812278845417457586538145675618091493526724848167114864548061108275777820993568273138069570417876796279053044809083376787522011494624546074909061660691640637286419682093499212330107661282280374851441004473097968359669954161836104289719705649964194654369452812111646977860340985060266188051868138264924697766217093257796481229661635130361603763575209317631745373236794727193007345895568742625048392643535752017720886976385547006530147162370985119567662827452345951611661122285345274467812187128152772828198044470287829483436630828621443834283933061869973426636841662503174938088958731532564136006533111241497517080811026547277241069801619368046197038254330917315025484354794049944205979487352155731523443985515670321446995279071915493012622438463701624086676046991036641665468428667863243481438144104997475129384407937791753089800722213988580814506420181828434464111345849729424096408245260118164415180606108341818909452188841412079787980645835501934806620697807291698253154706727593807361760609508840206608172948784237440941360116633737918646533724288158512019153861656684310632599855068395383404299612799388078946939439804726113661786432879308541638420957312446608450673637732399682300434221464859925923221506390466698969039225502809581860888180763430173987356554433665298962587119505406649522644887130093859157162141940270620429317071422670076888270015287432039353142292463201458311748039953024013036300157681289307831534247803967378524151269240623018079511894898426335179627535676928729840275620799295814291986056942345428344453545269535794124327345707388409443474582974771283667398460633838739913858003572434702047552352950879994724952355013458855725485470732726133558254542140241633844025957105365419313572521406256164016462372080325523482769734126885228449084718164714605387688663314237773503394896942177771487500288657934065953470677148012467516329412866843212947650541393396631386347555804426102036080289255754843634434329602817459750576423199736486570021428392611373877893467131270574799604435726228651959220155729187266319233386485777943988660811844393451428256717646755716254300083904773522205309371240685190676214538753207966844645134821197918259003182495235479846985293701759492154378658914612708682142567444147095497018617281359110902117920725531122469148975703268958203323016883831569236133529003603833362202853118400173131984771412931859271574480640448580883928197270433178482028973090531595725903261739123015610187695736065475604480716148290769317072346477291109395091443012208320879788331725598789382708448112357055474285327626461197894056314208119696290296871946392825764203702558293596084592330063422640815063526516709219894586212199245909945107086110527318146202939164664570138496089256131319667582023030903220338472809679989900075966190134720802260549733743988009810716784814967132808315697037229066016638783617803049541403814297797063504097571959601223859618220236460435365468876273616964977582199141192717139286886479366882946601855885523540939542911001721165181303035250295757804176416487538695267810352135675174637329741832437202038317518501153696331084859275436546896784758870744418504221637131581695470043451607111498383586197039434557677809493753161844551986777183528706928317708570047213682844575429346154967850073774018951110599706445779164048664056208523721691779348621942136050587382152008824636852587867072370504325971481960878918898595254980293982721591693440821999279481942233518649498707717083882102011010920568111932250810913249902342481472764561569756057047564387676395955386968088987048250789547613391325196480282398866643140635374540815498886375692701566620478926327386180090314769809070586546850483645016414930149011180928072625396135675547919261758488905962683028189154974348858839670607559911538799594215181566419664461648293512903197378392772465968575275924040207070331647259700136865792916743805636460060225022009555911506758744722703329764833376608884035244776681807079272059851958248969103955274321981361055653095030882610383596652083951976626946931369787729556364440715932097751242497500001584071338920490837692185167860605115070019549822090122604643634410262326319800746320962802835287034390354111115865790874939042813949509988832911268012219132145696181195882383952958868481795589403551825711445660055304159790661413008365913113607195310961659663716376009165695349750905934408643499052196577976419823962941950712959992212234788580725813670158180525202141811656107580848620353789727923453309609949287741837902512599149154339176262431563817727378679677652789586189907215092360394745291315315178280769752824178866136127120364844360843686570666924377391665188451950415163418019008550860833335991205615992745172384110734413150392823334652249716284396986055940980014856009188306532585605420519999060408247632994088479770891700298117903439944095625163759805013608980060771557434355471774895250923968185127614872473437277089861855286234820208542123288985527978805250685814884921559427896393702833660533784695823628880970072319349073259978716833968468179590572694799891627034479004070759376277217793391752209577997711609243576249426419043330333248714674522314937604818018967788378992728856961524893134453753720792091904689980700491208047979392621587263636601034393317517058140153695430456108047489091988799433658727319727603208464797159018320689274278962431580710268611873345082042650017311093587316737506047072564104601699540422208265285367519250051097876841814985282642872180071842394128862870024131550427158424470800953331106953095712690997421000768047945089087663231635404628237322206056194051230418812268915485268026095537420507465353167347945777910402999486556725081524841236691353551068809229611287678981310879402131425967814033549233559647486789458759659524816156257785428046357885788728798334726449873717622126595441912361442030013584241365584775303418366701542287195829230746483209292971621640713714120962019145289378780969314257595128370406067557489678645404458053687082712789287239312499629853769537574070273969474157449684007131644293612697622540605642045541405898737405461999281923424705046372116343888909788638977762339671372562117660223660695670784812600612056762192717861277640703396725012445752647660972755926419081291679166524667260979795012933256505922882790031660146080407763031478392867425713264775858816101821915969759500481246145397674060323709892952582602767900235601067846724543572473980966420366855192885879180614548283832841466665075996354149725301338358519169323717267254062579184541615446217563552842801325876467818631048968727579042055430766829056006240108948018339677305715364169866474021158726443045415282083577876330771922441471903310208177751083536690365995902758865071635759854772834694926455251271950341529608500788151798625090215572084029028380951507817448298079939298183520695590038747651635996543349440728664825713158380373219558529466057128032322906043454271320772921500287417319365976168419625624605115776262120980985923226829065963505843252914585540909170419599634277050723038933433924966297553342377580579351310874515911272119419209407790850494402102776888845698141493104421164929231199034729805606023201679897060290278578720809957791951623105561111133441647850732477421840889254450727982538571816636875200828789909673369478549612505123453026030215697838939324904100215648041600048460039211128583146953718878628701163065895128903772760366897751078368367149449860760323482919313636639333077112532263506484449628903562140910917184883359776685061477491947729628529940226933346422619715834114167408979784271108750432262839890447106483996662801874672678069833459187503127812301867619501888954744651596042888493821496812330875953213277829557379428092928030401078060596211030759341486094758152719531736557706698181800703577011933959623488542790769609795754171725493159747905511760096118476672312212214368328427513637719899441014615290328882809796585736312071114005119700172543463579423776006423420286785176042602478265390069956838609562249314263338461011350408175605961013927967017552360420813070363697740897703263694257754856012654337464403965817533944829983303847137943128996206061949794495555772350381966455640399658960314931510072397034602157188468414498235332005390066923861865352437171408532901795023023963305004538478595986842966576827375616876814560462321033161451137536544148847560393613737181536328819284288283654494839769934062928897803037442335381073377792138665249528844845017487627988924712134129833878665284628767176241405461020337739105966169340002371434437030992017569093264600981712234552096820682678182956004241998659956895146005707847390853503811705773368682511571235504699508351848211408274201762880277944793124322084314104623005572039931534794296111644783972369615224022661119722029047041665683970708585749056976393919847203913389066146411665473936057926195115695695372679013803092665461271109469924054694941918792327473598367085225448873229547450901639248463592556312744455603370397515050475356724383915330376573631292372402745732770801947701519132781347983632063172159675682339097266427478373480515275484903594400622175573994679551026905871042323165045382475029142779227145853127831067763040180729594761438319420585431546444900131105212053283280444109163920317054623845778114784577652681377523891236283117469043861099922393013973145606449737426020400959335723260763918132824769576181564972959353534565137763089779652100094511330446364797507184259503543793453450700361208294282937345258864388186370815590043966329954654849125677177327740604000767897331162108194915690616287252972595860248117617268977717440000074061968313794506703892623292525804480259861766805425912512279877433662083855611776315705013366749522257941448775139795054547860959739810400803175328510521654357751870807142781191563107709530016678215888193691287437297082541468231278653445347712336543897189813930534546163421054102145489580924669226658179842336331091598641340097439471837720432580138626610040040257095582924562504785423881749020155620716033485839761416339278967015865325282388487004257267088252026526083144317305666263332820011765688760660248950414043569433347527093520428825842731654779513418611057685506312236998762941492403138134130278628895223957785888951153773377278219125362017598290832241727107181732628628969099360075180094934523410329138135442828417419667660450020302725791226991835309309904350519775277169896695751012666612484996123705824658061230636549341946353772353847256502559299230059708672205806258078192365971229407426411100522203370801883360978801045660422495415498395392435169201553938998447359782907217478259097827470124954127685902024144358350312650572612101443964768748398651928890056650901122614041238234484827589365452085753800901291898609505330030279920549391725529609085950104393364051410163218270357861744280293822046879547215661467548620526839159988042187655020925238897459763039384102623956395291728187832665657676191301309167658030267202643710625509623416068746532059528983901144863435882231708345398017370764455523600539902232933592756840568086521273281265548544166869155189217769253547646162274698681904982234866298619169147606728419531849753765787033118972568320216833418202898103877938830638735413399030740564216566952884545843561312568965256410100307415769201396847369236405710036800927520184308720379877462570422389272530968336374888153750668030474213183276584156135282037084306452805350387567036817741427086657772348793596448591205056211475960654991794579079509727749744145381046319701859330950696301434310162412623394533581040768155023230373375367951934091941241165048796250062129299057998101829846308428031549873308933439874652060342146147487112567741122821920746044030465493346166046949934759667809163747600240109859253313224534523318272414115305989077622667597620194386096109434183389241552231538271746064990361981994758480643400109172872094736135632452901332851948137971314553706055023957966448686966821991071157048343122334001260237583112954121317179044296283918200831396802298468845835281830105166394193289527823526663377548771320675672435904302829506965065381751997283437772160841249722003409268884062102256196782344983409233009570294135858257059097270907739258344911489341204245278111169086281184455973633769673687311268585203110806661036758146943995527693971279945008388466314779754691489727612537392064606860749506761615404385929028920080939532208104450150030102765923748624515319131703319720895752546614973524876482149732609293236236247273777247682281412717649106363575287531179493828389605764658808933368078871183171217047349880988574824325448372362610802218446169817070746575905701523040744440387553885188323723297560118413455086687428020491756241547694681510237054642664561138533959873257613324391861408301343062755145453231896143425698238618820153199341060086040582767420305271235520616347786529138839814469999702896131238637423238457679536703133536334614066610801078208632267460386521332681908693272437495162368891180048919544538231408211021882239835055241719820614932102560630354408793308986702893896750522314290296683540293827484505905300023101114992678464105412926567451101220289034894056181353733141385555104182626617264287068129416704930481819217760443171667541407462632641111979636261208100709624085412270249731273141538595684501410362538480004359104643319518414061525957275846423061937152965946901155002156142045064539496986370236697651210737114979925333838233483192299783546734471866931551536263459780264970260754449708918898646840741976940696392398098349093164620481102695289878324157316315265067700879853313949779009728011413535569426979582389581110912157244737931259265697284970217655135182755148621789122423740790275289578800695567912194172232381437001835055296422752802918477505980017007907830328996730968596231403288779932382828401789209564023214626352152557846773852252722874386407429775877571315794193926987712301114758359459503977627104506796335065315210696845619852741005843152072857586021494712277348477454941140247292113886806982524284931523693052325966127425300967746893055139725681250453767381048254515620100529385732505537575705833592952363980135107610728887764666569723973048108451266554589176904835207707227061181003264797909809603964010740136778165330131636080406736628862983444586970582772349185817537741391488455814718914037828201228379025106991928961877954472191162771803243900838963413363540922360099635689809501854005721083471139343422463302132347161478224568573755012232757654186967083217823591384926492065733104917127987001845373958949362819097899361570859947150307057739759117086549735298283819946900303841606500062502318918356952336582639401806122557399912051397857458771314546873219089182093197569434149084560114632323348457092797433851092597638983214843267901257463663134781314617308650305690845449700988250818658679957942716416638441577123155235542071894931406458086716314074927818884112642886658753625509830302008526793083053660843091515069802823880052816971852890353005110913111226709140643938928883849361969638411929899250818485685497351413304912979628343794926690672319498774771835144880126905945243021432825265901074072219675205421551379944471783809347780511228363292693403155051134265892661797569449245517472868660920599174127187787266072773703505077452795402984339284890109683702584921296131737245478223242813633895009345139605954330605487395849639794196025882962585218410041041429164367732771713486946842899444326395469338024741363056416431094423601582895344849458557569072143815600281853202226854482541926313966220609663653863085267317512426610902406967587585145668827935607177770167562516200765317627419446873064701802764040551347065283472151903752719308428159105984289801003877027690073436219093706923712506639592307178568316033439073153303229391098307418523745556949162370839618754825331714657520945252013875481051845919728709239722269244770125576684572285165138692025972298962448488064282487593614865073188125074142887636760634331369470666365999529301391916359895775328977931402715320155854718004339702657310779570651367343411980684708960460486854085813610752944735823372229719711477975083318919444329411604351499806575223073087721623022082458857799250279934773245731569510756715017313617596479814682740942606042680619141077209118785093772744481092324182153082120461148314509548822990848713228383587947163388561905319606931240687609278063872344362746752319253909833481608694446649396658474584472355022720916237042652989203977511744555535046390355716747577476430768291790028136110008828218535184055926064540415942043081374080942301716267577776825913761241698826441242707207132111082549055297779800869982368478064129006255786388275389167279944085935618049212708094398002773133828203282452806125310544290636953095062867364164973356884934487769366520655412414671998178217851002471623636416831521977100539461389358348201695611378431285352130979354332581354421771886107996693593322598686163173091956900566100319732711910014276847848482784607549460708071287982503797286563627735864685203387781411711447488662580506919074616983249559689439820043740266093359451795279470837398893812510457712164918416267341168526716387812302708234976506100956892054099586007977404466522826031043604785853756197203659574797542326864743641930696275983938639039383976918529453645314080185326049716458396631545041942484131324627562348361695524825293457752765911242135039196794110091975825747570795386505568799966389696249682246280342966618524092015699346105263218024163990791087132083482297903130763979613473913387176208922928712094682675515949616267443388284705478374658029384543881572979624256705070684391120324441805258828422852509250787864822604748651961772908816194380783959811159097025994482453404926919796944922483742026319123452985413278017571278566886309150358857124522190490885881345265863704746228263588956571919236644608937090368268874303754973376288862484085353465640115041462926017035394130089878665138771334776409467909158695157752579971217718909443837122861551887220981191484052592382920068292711250569816439601772572259768012623447983369317370268885112258821014795706180517495609583877032038048223764780202857829613900087634097949867241477820722398981112549887784310561560787017925696945478944574899189450789104776948969124427698064774021771308210774498675118083848377140246948789789200127922544042988206918987941080213229730827690255539103739275582043076502307615545309193623059515142968291118529600993950169553663464472074240224949614572614109928901068324130068211147114566598653975234575260644389185930565044366393116001108968881017090742771477265223806396303581603252017467829710954822985343413521574441176308265778385626082663160908651082450850219494390316261203030852320657614703993356424039212793921477017152023812702975090180642248767216176787186820146640075049858959179489141898945811981166766767170808958417303432764811446543595418634015844195047934691554050223561608312574096058566460662719383507164351661101386660993035073313069955716804706013822525515533056761110682353978362144060302654190404145577230935702804278403687876413224776226002198161508963623553291372473425796690649269790459891949449662734434497162619543058824618041217236890350648441493035341339677722497236966734545138008331189365802094164092973437751412787668677178386372246386901815475375282245813809318446288294605920682942075072774629822880638169371477662359989082379276962773285629649665570212988295554230364047191993415244940920604530986966933515031262488004170410349415695604383630856473825495652469190529276541843602095979249080866386859816410557433030131120597006919307418842721380676606492045017393675143982663469887726869561867405220787200566946232894314890798822098147226028444874947376198263353641501588628128443875786381112926797179439990922916825839092357124168749174656866448968685552166470253991097450460836745665776472567072345311249003579071254220431847829346190277916865241513339550320580978949242251407171309508801142462524615167545251923953553812812796260665256935971137006909979688518557390466617284338472954227671934777936276788589891063819758889652011751278052432598139972244722591673113941914651135780718062103411861458368484552768493818792461621795938862063507451763056325760717280557051015665570040719485293645791748867210332743309567807945264041911552088112683723606891810553846521465344581837340337575816983786603970147034983592476490445618714709223745252830335030049582105783537791929412139077666889615999658819848049169039429437562782426105040077835870008683383707489836861848947846519033195580928067520781916779357919581684434751406228043820330757395441949923732785636347709074020264905031104602407841853676929169108066940640934182483936811287487300187931038293402458787582994845693268663457343886526115370317989144981530950100566693608492368194385097064324657539024043053941959974602378726196174219543946708813954653192301733919067704673869912462150060977427632515602398636678171393136327767037299342951693778873671329147637095788215580934326288840911910852018852545035243020530629293621139561443932574144697089598068829122935731776730489045717358325562473156966942186455302127002114022039974608747779644709489115244797796589906384418770997189567851284837589695124739467392960938675720763779185299900011086163519213780957046726615385324925492817408567133339731588076377367093080077926628622522134161015406886491016458182682593162761762379998002418582226999896385410590275161171583552341286538648885208081413890952551752752797152221884999513693097781447598139937479799584372915499176297136232836731630374010313502043942856037083079284572855603421118286922603912225520993199838422159918448395641159089305976756705607255697017154184132277599592427392938983213868915348765539995943077594858133294717775720439621772454892132175003496794944803486399576292334316087142198570183000261767196592083498937714834808242405965785655310308867240264750725084240104837398367051824521123066238391904852929941093000718163245431136851931524669736901982562996216814232339219187517362249544143838108073634560101557169614027499080920897378574498357297870125151949273252611161270439044500436215339165600634590130638837538406159637912104127317075279667888957046588281010056971189276119613442952242095845370940420408785438221448450917300404499485015618821325815982156305406684467854915034867591295681736123801644123903472484880982695945490420745637844789016272486813545684665580677166106400066529378041174791179705123454191196373928042558220338091435619540304355802434014630796745807381153118372758265098581751614693253118459658201085261240929239816470742412216818546733542986999607169421929800394326943465975730067446356260970304813476771890576978631310520918610986809549213489461855270160970352221518582845449240776827108303819094494349973652345765519749649310958102444092065522056161957615174661219101969136249516408701120946402626071662270491861796002047372616649580878748688354792295293871534443385552049753198229230272437336753678022532393043874055184367911111756841551329365459321352608483315813334374337310568596237612671310603149703958105283852010022577250217733701047198419667300512304972779175103484703105288038490648270726239725182927861156936432252693896147533649924016941277794467332256579075124762539427709667169335313670086668318029176967310803557640237231328476703794053310311820101309395685542141383864830782211759227453232247222599993480652705495692598122075926249149059025080339063266945367639035599443590872363729278907201041022180650203892026357573097811468229412919246771523165703253446140387755383761517408100583680263192942088900969832791145099411098175243011028495152388183916902688052544899401372205613020195513891997531637831222041877674524454439472945945212254095374591974227370351556447699278732972179879420749801974327671114047748851166038416940672866245738532130035162815316105688928284265191769628703870398388478524535797061411200689742531616776934946758693566097915215363781852121921266589221146009676114370113880990427548952197197793587964394675135785553969275488255012991794910026117762758243938305646893882803367448467823194897238658298949353783762585384450212168523959099319015548041035269244644024724153384295951342588169331291340066513552922950611042664665784552557527329526991222642332215088273248516866665361603520835955238201517248244853520194287825971728930306223831381541107286874995748916814798772743186221871346550267849457341258409383121259355173215564802573398512742704407407353903309711766205739603005850572880227927179705863585546462587859618635376158672896533233699549913407067756479576671402085350179079209249233543131557488175982125732060048551988337610948620176856392229720122234214910003609592928397806655297646929652255915926843451405045566792524234905885047768125291074726237865711707059430190638416289880363751650390879052030444196453432195347346546471973595196025067314493203517091225798046431962802290239671550536465115332623149980169153056475053547607860207391885581969225821190724446164347656307844194594110576792306538361726391459536687379047485098306982872205684718711398869858317294785706246042607703321866399929168556274085551900157149582074858798858927963962886642316870029583741380775822184803732565395060022164330511870278833384757665789177983496628191962352707765946493535189857347970687549875458419045145213049730996897937959794156202605143810611598713734230136901890281412728525398320287477523443561838173293818292316049345833632539136167226924039140406480460644135895289197019166310421168967015930147894946958187321911099505281897711988711986440711206781762152755466176871831112451052660929435148527879081317378330218707839157868046840119670787750254465819236549430724723180882781380800498009997681913741209779008348640190124094824911594977145019009747796649127544460467428600868260071783252436776499503307448874271267037441639349631669659614339079901183854967640661714971402324716688608371364540073251883464247008581361272298946073942177695211713468753824764056219306029960615714963478676063271289460377364780779908789119694374694948721756119137458611220931626554435268407506342063623259853423754193831196822960510641939047408041517463239276398036147791768823711124554469403650924174273895189888261773301296597176093238168673898602284494223265973033503023529023169812999040854518427316573312766087472511745078594697118939720977713302594750217872938788577622688281692810911636801747417784941249725383961109844305428477014392159551331431076168788988569290084440324079103589355431543999281199292075106877733449820167248665228704540250235452159420892950731047234328569696921783329007157636061574786939467398213664407458777725098055171191943136064714165161316072512894042066104560945492786017799288070461971906640229475346422951137664902689538880023720233208657917884402752519306741337770701896574672161185533453422328642339907867753444909885936388031154743698567644292878171602323173273194876934667058056987393758751001171478861250884636993226549158207023070147724477550431365239144561160487466568984511452077444385275342682659058686754277070638882719331385445448903571853607535211471856374412735709013764283377436284460290231937342006032339701827707922817442089847588744750494996349517641320120671806850677834301397403339936324196914179019238540804491813927635863888947846261154343056708076375323933598767814935726758167789515936496642310804474947475865687661340840217148070121244073595708069268852618981241845239625501954372889470019480473741407998604411900951037029193441263418405020994094303361480076149295100962624745446550467217847414473500041749715164653532302920687277804823616802221784964851015064347929101622179630648327637687380603612754752974970029149053744377497534328571746960809258496336943458129317117108749110943530231269560651773367664239430832362186295189004611440592803547913033137146900023343642270506956296218655251529600728827340284662917217550133975294701804836435603468062751800831292702336291596085862177615293016738724534504884272841122349359660602202190360922370551132725799910004522848934386417702739100885687810909977641047143363695788010064393522909865656672138344979003352840989665576735791189768139643655400593235417439345892545613635058062893557581403178518529678550854034011830876857075004332710375269005275398156726238886594609684164522894656666643117415552255406921470418708233253877054918082927050214470427530282060399553781104384375329931827341236247969602131021426032878342743245861195045306133939322074780233254643933422730663181976488755094378227681335718503138551807719931614750344541719384731755237076027863556146460738410843506758494102586700860138868618715321908492007126865589707875689858105219292094170543344099565493690834388075882098724877634249396705111127634773665575252350634275462563176731500256038365869233021602990256900032352927488655490124416903452271837447299576242220639010907061858064097277856086727174377391537703531304601984931766854839949112775796533738980020917645130808081778526229854568799545636474153830960355056110667221970651174118436424704955422926114611808924206118633986104009778463930878802091271348693806759042132848977432544907839407229894124083874975784340941411789865437199229987857679079972812278866111383228117434403231935742412951943355777337320738797039792870381403337389249836994358066884293071110536418096095489031736481868834142904129262251299674149240088681775282677536767206682131494660086697105301879195912692669752737013459414707875332326832316805520209926198362044238796117915453474668621065495507685425295760656476351263333253557053579391889347869918730826586903927618911562012746134707451077209085361192437234954620077993720817707292652708920276099798204463859903235184577063288658339775658030543696920328358660586443711471963490741241704808567130613058265648429056733041283618448067490882859963365870952030401758438815166830096400653200589361857914073145024511257892789282012220366162507932778645783796644097201418760841458244803535271505188446325364600228373038329001148344983727415780410763608177474534085659766722855438779553141472201463883660140533273604776967204250729068893701780448002308249402131898895961276065230462135625138814289282424482034365894100618732231319262029630825600077324878984657127034891232398030151880850241090275223242683618285738275138652335488836850092016887233957720005123868359875312327017035129899936666445612378536864845904651190457646440643419208135324042038936473647725455300569901618785250323245030220455885019543920298770089651967385349965131986410066329735724022730291043988913669457208725464761438891007894401376051232101305572947867492280324821625860898937283773095038586551924151489767910591860630091629894310383726671100588154173294223723532094395594361641772465744163614789556332071501898580910681585287558325199372423177803751934338469445772702432876660006353837836703326676911276499512012962582693758329854966142867564873486417870035100330795449024284598485149429540972856737011140039980827119239141453802229603530372324417112527376064694011108981738030056876113314966941924915704431558708610086023561762708054622649049338521931180300209671257547211129794234628485633664404045197995878735616750046586846414924027073838323950629857186400659775611342196592070598169552997720795851864641489120086666175562439645778515180160384529046359837419156435243229978218877327828099325455308008277836672418275750435346665325739671985506750834857577562045612641496395264482426347660689847274946791804353362366051874308617906390474552359039812115785633662445482431920223051425348154020780114779718873485466160750066983756633375027947280911825376031437610838390417455312417927418478813239767795436873710212137850412494991847465160047196051375938686881233218288388039855640742456557676359641088365920800229589580739998212276979988060059286433886029676374980065493978457898258899695626513870863967195189417628051186051143850527902484536697960050092080018734068164574345216950905142467408231172362206509108459790789900935688249765506819076585037292263329658400840334443703911651918318863206224084506177979352979979285550048957452854769917110802987647100565140080883702332581718307479417361622995966993017794884062651434505397196069395116054966387078372208286495937249742717634708016775907594277259435004301089035868485896786714358190271668478971333623690298798338050336370164705382206735887598487705212548608557462124012177788808319104211003460062057906595584891542518494477419946177808481450736030647936524026490478748604770354459201268694152330901493672916895616887540284078399037382994770715721275703971619812251168155469894038647837135488907360139008313193339134501666772312541329083212102053108202297680534247758836007215220486139071741091128638505452260822036101738481918768120578834529930885032843468332338214627474749848240644896029175385104045688659856645221426062024389308831897432888911414414944316010763331281262581235973890151347909426838718615554968270002332886411059869219763135610736692850809498283104418349888858763568626218359772693675365334335478813100341812132988089348275392076257605274171608160729989915222663996382159687340262377596184844167241877430499467266696525961873922792118255327000888738216608308731076862754700201872012123299536865580913664556003609198864693989255054400782510467971752863106194886628216151529602069027034319849447481284632401402237915640524566126561377818427940870089696647162768112040175042203777960661383494935285891145967925288239477168587336692115864894200011358348022914538241180031723440081229178541616281104862485893862931314781580929099849929790025723663385256738050541378141257540675818027576504555692856993175194886865046922723986839223166952291510690890165099157192201938772180073744361395520795773414273656501934718321083650656676350516063046085473676585281605009155309372032971540546011226179858420919660100034986158006779424245268971529623483525659750103449182862259059710785618881444488273733830185781054259823531070834521256848926296318580901514461365294130225580731088689780519225535627633596308381077143519930759854675257282942009805297410267669201305522661882855813495497652520497056053749341782487262654372295554021810241157615877726221411357389852569916914983039078011639115242061369651371401013692164044884974391754028877524959096257867901994221198623002816636508756310729679857551117387731256752689642880393660681171598157168842922124970023435776343451437495070027872413143136382052730545706647770154682968890759108065134153342367104434332811695524280188861318426064822703530749854578337218868094306156272452304474994533083367209766079100311153501642596737484121665343039295709715162425462481765140610641555838017962917754230969231794114357430700387322717740738700586105183786602763547733814371035174551077017360266838442258888747614643313397379662416429156052575407391376193894937027042516265648175002807819642603937857799995239621182362330573252823250875082493043588960464387981115975753794299806069252212548430384332671093753746804835254281830285779599456875555812405004701236669125054076108557987921717995111107562970578244152387726255085686848362480641995183322918564509299994938762357299373267298403967538867641015301737963037778935533677014535475081011324338102251375453801006253492365919689556561806644926238039334003165876996374577216681658198479696434174576239983489285798119562279428430558802982138691171545290362097942755344284308392470149696692385008832170298237602126371562027732535865155136205379622116039954181782634415852155025443272581908624586124718784401841161075490255822610513885381104394407242095324645046737970945278053048720938057263899032107869608840684733339344162087061315569141541690358031957803785560435492216633041206749563324626493755605530361499281079517131761927349415342519441964635054465887408014195734522524559152447637762736882907199165483902875080669207754106332336256502832340626975864600210262400101441051902364927900090207197793645715907214990645793468082625989637516323092550321713708619296231930612607825968554907168407524424310608239531294860686660184589407429093110615079805651419178750377809588496473618838710537934025083717492051238501689615871861837795819859955137418083137190691464237122867857076941113699916940827867146546635155598183891552561999272509207582038186215300842416270615518293669136213077130202556885240270140233207568925519285405771849714349471020896876819018560735591774498811447805373682376709486718830434425059480764671062008087684322053388648762910271810955868607713741226069257158205406990492338283398598719259050095358273501618694951416638366242854951116180369522536621635584125214368967250494375705502954384661673054380970138541985618333307703413139071875739741609451613880135268595475819406443893674820007777916208203877574152238813569011666641007250697809462612754152291481878329339085734557254848138124936556185175334404245302932807118460919917012991472799316658902876636875604608849255271382448180701117467463509579827179311312155647669973918331820253398718845511467390114875450661531306595628856340586820203397692389477774363747053287232618196637648971073255115453659333031131019093837523754490397623506257940717326344758993739373009238759217149207727342988082941988655737337424383671105894614626266075399694177676862204501649525445460526198676572751698707949663525811638304723613463002135975787275725219470228977700513200757408099214966882862640139754551084791362693587493746696253240644150216789661628399342329702628214903408580361406044014865241815646434858794634740793744505042692975348467389001436204130244618877930798247365606706702153056279968717165902109591520761795948311965675398848465582109509788726131456674473360619242298493294306142893529140284629321460464139719168132403285421872814168793663610126392388471464309607701426225262223971884231211723241178528251170093721871534270061933311595498730543615131823936392577568967539517223475649003844997070368418613474674308765914208900631304862392751757847981277864004326705435717501130544568703269262181355349929067903403360424878045142937824589905520457189140714116930371407937881364516096680848055029622052790141508054303412531022029881056493817180956519513504013831135447586861323098418168321323757426239151245839501767790833857439105288430536520736402976318014980944312078301338747341912237683935233667387056271874000661136024717667617300205568593418411197402206628045098944517305843697594277739425160369909705027815638484482958311632383602361876126761221791635737974614019349604656322329612011064354929806407903660084039298666417004372296693731604322471838653582941761393122932124245459427083911147218652760745724866541400780804430839314587578113265531861843024870552342479925640847791089732550690026132077594543080636376137051201361452908792574156595525593276359496205983398608460565235736958415647552120820624337542814051703358253495253346020518449244995570377607785573434495947148424224572744751333165970865223005975038198457701646057586609251267367198979242242018515250637248688088871295146174992472816153707592002816226506493229697005533132193458466936497983217095620954670749188705355212240606036419133669480054626067267215568269605394789349499180845560667795288877079118365476136004044472585959458435736732884420822122890055697499620834968636670013561346785109748994354356515605620136568323207434115673380351968083658867696759771496500802578150156205511916453484276295580223652617612841420795331185687514955890841972539396331337316916351046072476706623699657385491293952910671198152781372078025150413035333790575059925316323076926234904691078439693919503812227253037319722474445107099146554139139585293136217432533683023927670384608882517657875687679367688826802695940687804841146418106685395001137486599604050942632173426026287127546531963762849816204839507096419762831052044956594159855004016940136789708720248178961350768270834378321868474677540495878377199733504049533538772454398417964054190556459785157395626879579992047816425017023482764979268964008018829532737403651620554211646915489164186182798316074919088977587575253262157720481892314821402725214316039005468056289053399124229893419377122172234826209868816665230233616502919564441257594581002453851979454393138900571698717665775892740867944879706667133985387529742552504368290666490233018000734096980479808073945050477005629620854568828395501105762860460748314986895073828914679474789748527513182033344638134277887902612963472901444517018438143417821376462657187420280605697389887995845254366288678659909456591066483923766921200942698991230878027491810036505479997723983042656597143100832318711397560932673606500607519587893898968006511950931308681524097327560388960449834255195599188432513217605952122193310060569405443670914525358791994638454429432326366615887989248283154920673603470580706613831867548250046983629614530832844894203115195024594470646988053908339618926329288307421635764352491973317395839783857928097959775462224577413155778815280270140280183489248197763398347358664975682943231645235787590879860390876066246240379451402426464566223188847688056924183288654691332901016380627219840395868061686735569710546245018166634138876378118656412460912988305033297231269719605327649849145386179128799275341959272146560632299549028810907091312356730423946815705261442498829696311632781749438332180642260451002539535926743011856879965684711808678271008917936930854554716587677417568858142399652272251496972961508077595477789735977166069206523904688265871486630416729839097194434388762595270762952480989071480850435073905871744681266533585665209763017293860317850306798448933509154741534217851834293717229819114541440577969862986380475729358654211570390196288226634588777383624005694618664604870482825275085166715081846966912011861668904757769629316542538464272966966702546856591634179170709790375852721660931710156886246555638054452364617443736259004578487317781662207444596091645029647595952532876958226373385749776121833977179892556808444531368422986141522654432213299872447682929801506860334099132784318954437215905328766159443181948841547946909751109178351160298054745607824597883460815700319418238597794230052904049854114762246201612608843569776717411765428764240033085327597705212634848400300748421128101784787599628399531772422652689523483453978463030948044199270373213609678688893993034604283598130447131074079839261197575844478543836718669148410596408518698649459932637590029734297837119733638416379734691214400231064602461058933789261762335312910074998462409709331485382264652492013791865251784211461623485811942971957458982269248373677379612275941200724619920657380899508626812125097502369559452314833258864413444720065537952020975396495991850901486731351518109598195687443139747651552324013557805886418933529947085566865372077889287252337948184687538937257038729540045045833436319085659052025791360048431816233635756387365413718971976625464688697596872128350645949087909756974073666125132452461233459265630928358888029908714397813123863792474307470691350937641561754523107565386801177756340991837065258690416650489911759226201293310124738536232750688214749827030955510983784128325372475161469965488404257495219056316372602483751466340010554492025083921368942015863898425791246738845851872718854832637858632363569243155707638645306391476136889149752807275946394403861412170215765362418180470323040380570108221370431503601899546230178315197685525715751551466151447719649094281690954346804349549315803597832004615651346211887077409928332658606628047657899854892509258886520396187956748336897332390926965463883841175378026821488605835558124650258632093049329910306812195104846742621837268128757419047426852922265868309214297082105469372575975176929180118434696948478735635004350260201072124473173510817529991708783527540203507444126568487182014012707333059916456897528833512138866463890054511850816447254550449860466339675370632744853836099597683423899729790361675693473167044458084656898049689383627760480335392379511841670954300312096099484678253036901110456621552286014981635335946702031364827302207937992625799382112541273652331824416795506012521275422939402357983947734074160692210440586935413034290060455485616966151091517939235565251322529005706626616399840747556161292409265342001828229214224771889207206563499360255538814431913796473292313626240757295374922151541505481486161439447708184391503375595637129668920933750343455058857906266102795051632484347517785978295775323313411556403338574996054791232512815178829995016073083615911762912807140943265709421880676954040922156791249216105364614646174270237019981464259861076961147343871418287024208577454102744157251374605807559652989668103983522331773005856798736211784358073721485893715199859942143076831892246250938439460795076346481880361828367706783175298020954885880573255887648742217293879553030687797055720059330561244848166263936991471959611810810988600032990009574880224663426077308171049142086505869148868192698897864934503622373256781630869980093411805561454357990857799965478299502781275790717707902607222618674689348285072030524157074910082856597144675664428920309135370902987523038654736312562578641361947882296467413488060279839437488088867599828236051930534701304652672217445735590772535403370902678093448222682680053593274050927198651958864999928587927875397210715075391153809797413174486913411766000980892551332294603430136868166360279931872592391424354929275993507786607438760277234827033453019219188269528949249774088459798992834262074116509659699273948423691240298934697772845831203728284342734080440582279279449385500813880860469186297615049748852512933782219769723482671459702540254235044536179822421216874614525001775749713947605392725371515410220051017826506129249370210074713215702646718970176529713529170846693381051341914295151409449535274191100251786675606588089286740192896220173361061377707404659207467549180382211210880569761422139184898779660299310669338557566288780097323071845964934545679097449303139272190049957007922314583636747895359566529361116457007403202909831940409008408006455189265916040115644007700978224902795314347419690556022233793451243422812163267353732124081552859052790805333444858580117846540174528080705596298960709801527940509275683218397940646245808634695942020582766084267011458198139134217769109493631186188584034555691133503811542411654924031597346116788156563936844605336064630810599891078683964173599911243401859150132908382095509344410768769312197988782293593537198007096111765417917288730733276028826279830984888069336133917241494472894000984748321005289428136407417143383750862604881892027565094938513244107402464312659770144751611495298642336640575468116437589335038757968609333810029938311287642384822983177956957457919821467535466615144194479940271281199097752277123252119610598482866706058077704801683207381237291016268712673697468663510162172182951210923396488561245335863030883344219370043264835426428832682045085253755391670342298510101240791652815282178053877948977154259387833692525521791097260735254755618317567726589263934090236977898070488889533001768033080964352020515624465895005372854060191248104423340744299475277063476859885100620036971367756235206040881659896008808970295379153880140188652519053561359286184993498714652572977374716481459400154748588295102164232072066728177279872344476533302549821537503226858890572258422159433131778568064332111856079614287771157174759861565675947119039965526059445784239886587228092494363643338630209966115619657624250037371779165687655095648387588685585792363772629008898474154430690326056968717544653041367105232246651558722455468732326955756053401047309862796011602372894278565100868637091089758266599361238734206663049144555150539070595637588187554293181813486405153628836709662862512993035807782770529389089919949664542622271445208193476990560947875444134292560734053337063940557698527728823901527391674988890430190248277740962123437623771908281171405783186441817996291976810993186075556557998226961899670505172503176970478318494381174105275028007164338657876084119897513726133620867213265307058021024183986849152145662738263711400764695322920097385398830140165112304853506792641405855223258965232350377597738969524234776253945915473091909670635824951733894422842441690890589660074437808252302182164094347365335981091810165325498936236852670961537328994524144662622431693237259802425553316465647703219931940096947383304113797575355299426165435216249264901202435937549720565760272838440903152626779553219325273970382404419424587985859846781540788635587515948941100411778748944502650203511973915518963080129984974652062938675447263343703802103216183312660101358702610588424035217529640766864782156402917035720017055514736724330170550520652178702579779484955594393385996288966604084534992808757887299465721086827531800822034503669206341119390769408551044063234359031185562305536043937417842317487170226200062346072656604035728764188813684832337862573503838491030861586594880626236663590941386623327835927321717242261635468987759100931389908205337030770125738718912435770089268772646148830404363784732440617363888102030072243083955413007193831439679970456749005959094031979836487634126392952125001974832070209779717836871185108707618032380023315277752035894893300486819522695218370814949896932469516548422492744407152604262917839754341539982172145176473319158732484361020100096843159572114232745239469462523284332950336060642864278383011730314933243463477469646126012777763143946081809278161847363459726085802082993954311369716895213259145683275933972210865623028510820734195492283984272237171447600320627621860145163832082725642648053305440108558000290856661858612943374585011721473586332779871910908665438633411015793112979556722608816324261617218240188630575982778748753216923065833352233711992412960663285551058869264633439446795915954686294614812267851897476985265416264653881588951986235110499785126886178087546621762307192867904079329799033213058893242834314134564638404027209296264546084794193282406062348821824423155096768904504497061310235195168378920891210746365273129740636575425724775096719685973840576077625549226389290134994901861591563708501023107317433094683524423566926509537438379112112112658879915751136317409207119917901667329649860100149711346557414843299024723560695387656137649394843018433478356786091791751305745282035536083934703526256356798287317181098199795831694546370237474853953650490965856766206827600821037559521394063663183057061934454436641882284337706578013703943005306609352594266289781854950351898955694436213541830663431623291621695983012038496943108637122750855537092780036012131708176091919272216046545333582484727067579416840034091823452982412452608419924000653635798647992947937057854184661089608239599508185063613570334829533970740227350035397393155717000491010204512679354461400115671394772335434139709506541341677872172226232919488944890308313364141651038254765895622435753193383680251800772959113895329441321721859304347096223992276458699860095587401063244938903631524427854527566729843925507208921156170380241316676078047203333145097818042063695366164952250125868882199360300793348864318938743538350779520736015874513241645425213979256676823982493109630427250526950543131849623812953265194125672661660564722217583709880675198616844293991683931488262348199697465820163923974650871923890267949940031368580963834738838382045223106716399600585770193305784153142999204994212344264185603545510277282390117483700082920984635953011329815361699580130063349632704773033869225243280908569596520924798977694322277132318091865693169389910910818137796930753149498399877281880235453475339256418983891401212406155809988252657479354535872175784013808059440368582374626977844863590704640726364297744401319292782694774852043441693789987538844035071829495800277347848392945872711029439190143738835446051406882570211233732353055205031785601381001751490539891533463476060914684491865795302793124812634292938729258908548785949974381609026349427257680016784008319822904823431224402746515750618877298990789566549591167421981146525982486041286695660346918649040893890529952835320375384828169153724378204160041109679640628149360050340719362200395015558988046003444392907438562636648996672619995607099011884690679787327881837494215470994195935009191107945020127290308719121239731563844162352311262518412437733499009201665458264015815084041372907673911545500186625364412514055512709567948836632239882862499529369150873406945635957430892689287223897788917209404656390186123754643704792312526659721911710831620882926714044399797932937935874846204682834735444913029508832604600747171792330300686670068879045983191414914556440968290589354551936445290932282717284780345437528663826658911009721234328805723634742252808426175723315214034767241558579691071299808539939227912672632135448482769304015962884348742552654461754813556572068845625918388293019201590573776635466348340225490519233570427113140964091080026750991318428149521130592552801650429338683804247951667750614813969302526367422406457815563011843737461106370447413823835929427571149495806735636579636505246039196761251582998379113194960798374548881126167046083541577264690350164040695374390403760483232487426907969264701730604605917641115872186492751601401540768096893232247106816237370071431262516928009116525918031071732149607695717330287664400388449004944403498864333360834519927216481199359488483600349580811081108803258488028117205380233106944766633970369772033836667500635856303866070883281834303457907185374443436889871019188538271949884260374458219127304807439449908032641760467442676895825187712284759765538892708197843487425672698947785306797456136861074026466056025262726253521599259674374717153826626922252778432014097817849155420887280472049764295288679353452257281475683610989060632309587905680120375957627610190163630854609626389444794718618646337790455190841902049220437390756944540835564472841204458038075119485233019599800644385006444878260393031248453798817756948921281426853927876203467130843966604509890604936184239397768012564657747251009692110704436962950828733238200269704213001973708578284212609185512288364053406427420303718076236718966075921928082423103412412810073729438174264930535115279310370809436535349704372122092772808311205709694838483480566612422178866540874830727924909126015149114122361383532493824266615853045739591845281785115924981801565811135432910818553666710891431263810106402449405293846623437189678807007567580086177116082086508543729472080209244417461996105698618463632958636895512937468286886682404553092230351494222523983785368113123054100219201694508508160335783567635083767105664768942661296097468283896289743762752819459804356761526930363403745840765716926799790752853383204561001290717065254048726204539116643589665766760207503852419405772018558805297914315650481025104791231536384841908392109956913137298910477627531090150672724521128080344094934375618956437285199128164017185489864055505480273524163381538021863534274161007995170494627712376739573174171577949643459882973059466169081648635125606820015220192986268562363724238995378028616673102128718868859658319934729971451370770952241624919178579880792404688510246051074486244400907290665535504891210734791442862664527925011154938086489761748830213420041441410795441427287670967734944140175009830148176010626330199995334445025129924805020099189346881861627509479431811633412006466439570334316748863076684188151895455803823629487713358007691599760014770387051723147876917505701098914898156122133031445729257132348607973498863402998273351611396186096977683334633642642475919666944082526369731541662808000659382179410786966504805500337258129350693101053207255202279770041500327998007405564901936828562060547815868627270776451890278957005689876700179680660140928575716108494803686725737227355919718772745097589449324636885629611882714228876922922654727015549270728493342955748787958683652293011241684802436474270400250339991796631824618261137921681148269031570836386231758265876473874785409074213192879447679603339755275165096464233516262846292240987012113005142402910732427670326800972269997556931810321969623075167947349664420039190015168031606911955116810359733062178050525928264724932867089085518874155222323826592938411100883237239419184717929853250063224262081910303242946266965212686054995542914328193708056213167768755029525425228121730715134066039136166913974313475237170559641391942930559556154768506208515234225281915601010429907045194668938269933118586223266628686524560667715561982855423538455341489501453565071388554543413749648778431986954572055748058525780086179666897015651026699461670974852804355186180055286280122388273709964778105732046855525585709331418308186257861378324726572970321067236186259757164365173062037174367307490246762922896153572456886183623969935172618995367851903065774032456161997373528485650562680301728277393976085706730015645692751763089210426842212469752577387265542210891229336053451882108895436093074719896835353915251316716889023128918198142247183496249375669742767821529802640336650566896509306560107164502860459284808453346020497140593686897163253179398741826121969231913899808762316510754425254214527198383609803492073431918205384313892349547927187330484542497846422247526867514548760491877160241712023567624788494434928841060712611775246913294873725213093415321346717577035639780758614167683275903632702235317671179998350358779664152708154826805626435810369727777705898847828223156530818093922760967429057841723216560880367472838031056702612438620596147962493894376430630634116658168081135637041043896498551610069029594620049986471482218095442076018635583292167262827239525881900914642855602062909618153167647301300257865177260440887047235966117406219906959148898946796785265630682107773324332816340438606462744761386084650946327756033944718602019303703826129060200685372385470410133550988380528141702110978409620807711997699979439215477794486894243415014562775659596501840302648309615813601078200240905076464301671678264357564791487825545492125005154563158399916778472384307047774025570427119515500850043845083569416806784433720974794127733799440155379312546033451236785670015641768344045426759121074314580788072339328233175418935760151263459569043791957344628793101241465836126365790826768941084010864182013856048108214272807421492723962155717422052392349992253004762661603830133636670865974026200369994082612122983027641984627467154924303293174679552820647120298635038596422626633367131070921212257380172519157892095091006266106336238865213631462749009201939446412199279992873912379794575302535380996591374368875867370683269214009907039303435258154034127358427240703569235722463117102489618311505265338894364396016170821820757424555729645751950938013045267030484071132579919704000383695297637175849308803685050271199402133951319424587426894270817726814085078707537025481185285217124747104571388430808225434616852501972955318332785066003160125045393202099220242221786632325664086168705178937882742242277165746617028186480005318789740910675334686262814998827237874071631478811776664224908230911808824944065082991981015553822387296404044844386735156296816936867251534686678253214752937639262632738482524494801384379332337480470709169945386371509647614941509343253879599228405683359341651150369200331627869129155068673882533164331711203264432784443794776075453809372085505973211287995413910137967773765035075707572416004974965375019430059449672115197114300308341296634363994018174330297705356895856527977484502082739452667191333702984833554618443509315932958410103837594032571605948350008824847778370755659616793205222944442367310107768568426622743058753667993503486152316260847004083332330934165984957571364648033739868094656854766500386094226118684316127496335727719622159618075553247931102450101054149694376997536689230943684015239637005008436776961362604652305250764577945044856588556303130337937637584568226098090221625852840065007874359290321320280588570788290885914502093892780043884142856683543161582956314949949293426434596312557816405452813904309919340117762606091291396350276557361466960427486323083036243880609805853987508200972976388861815215602054945816834928203725847667673945028734389184344497300002237854372859747728736574566265858956786353570529323722805481645627762807379385975585544049928360987093531707819283823266536710961820867633924800590269133451145478524723280221339382378445922687713943891845750409806611868670907219748024381644678781086851605483002667174026633942147115787092007842782089215280932470301448694378940120771506628624553222556977274369136892021197129214123263594672095597217355486420574693213184565388870349400407812238002050221101397933292440154429190620445874493260329716007771129191303341536040030592428787830710953329225322053382433402794995593643743855620097211156641499198323985531338448063465927345270793522844317122045095552926565677044820428094261462968855508105089039793320121397450575464235778223558550701675483599212849144814888133652970620146615312291602056113346547334646776467996624798663764467372375580618750128640544861527721799710886350650036297025492806666030463115163910449108678407169818833956842794038931950535234731256377643639809891076870027413672509017278335449342724752031217068013036299854864486679298821254140700140508370654161486627989944339229164887984150478813186460524403077637832381364584373993133638828939106376978010829730086696447469524751600169514925248184909347552458371906402894112143342913042425119075991498804897744279855393295019487193322201900767227385856948221965134031470815752979578234072872870864061610195683636663998136823702282925492401514502031130436657684615954108211084629706091437805772721273839178639131717887443026589301934722580722282264602230721192844748786432122622694374886983998153642178727677253887329096529940391620545690681265076676045454676208253215929693285211021809327343955990867532051223585898112036475970871713426656434583507474132880978383694284993881783628246832043836734870487600118712075146229509088907333216562883425010474157959519802753737353207074615734359950917633034041867497697849394985536732586580997316744690441713867540958059446378852789930297620222604833786957027197184006698392559628539458758277975628750775171072662357262156099911422044199119776211668331641095917636420244676259499477748560348602202823573665983770426282922735568820780900244211134532936029986419370700261488011130066473681600843990864279445635536649030253558266681746134732163994916058042638442347875574571919294921314038478195707704847242887613666027599240203590166042241934340471174690849959178248913783842199708330094706059766141282204703771349261845465467303949686774733804213775764864721402325034567509568877330744461204344698138303194549623159225216894758100480008789347237834635276279450652193595454415121670770058993190908223195136491307771401008770891360107630083958316519855924342524280718239245765071497107790470268951510947850084898361951159837168287131598618856023948505123054067976955802164238423731900524591132981388533153613275526318590113074530233657968268278701964894939858312848555329420551346758763412603037648991945626571950767817366711356065267604903640125757089182806339341468885796378166403252061915963576346584214070960520321235843301919111542224330257078627857685831760336918405043623623218177322286607121028025353816376982875087437289188692242440448124529064238399893918617384521476474527290475856945769548940414733949928109239080949364363998094818608866216883201409871009567794548425101533234569090375516630089610312693060075013396845329775390573341511572845753442124574506855139857087672290632520712822836898675653699908618283594666925898009548939833508608607260599779909008815361203081003227157528415246740299200554995948799831259966967806525309956398417425352543861623538307011474134635803745731847267250875746770766982302626792659921211234941731833882053196324508227865888959093887982719859970809616249967455654558771431045850598961881187639794534438030685376039310828691341548451406951017195388733834499617507054365137344410662419697760348536748426469448604793483530932640750916469203634994632111695419146368359339833746929053805269210488100993581075171407008234382621736446155623650688385406664750263808383762293216297895345148809644306105202242490456731839143553416517872397784142627170207117616546800488510968748159534050146410010900225410460505272717611800300176174751886985947613572282512798560845822104300231710375396317277094328371470734178310033428183218610039541143092072548258959267043864464067019986182140080743256758222364998974188269708680978061703088007330850301817979954406980309944743153559891729237589541344018176990147496150015837818215855483607900022663732655686300110093239694453332639499744272024497667341832341518261996223270150217325539338388475444196708640955072180280866107249608125454281286619085805121430852989367325716034183142321846736567033177166764958622722078083381202042487964418622425320574164505509217667075489286611913040599708716195534534575866921679871342975350542397202975526974957753497844993170014618854346782804011500877397090911335389729777688425147425653707225659768549265335006445942228732041557055574363071671478315218985234976551488390132425423807503054634266265542137826213300655078857699962239752567691950051475299821394882915795308134086830649337794708684433794705369036429172880274031644626953416473124875929802116738429300846368258041108589443155064127547730578769498657997299214316929898935573100095777193327343666456136807739936208212526323179690927158138732929201188422171096903075703929226961371897912656149953213489477096201294742738385902136137967167055346799290500698397301715510874102818517964855215115172099528516768891486769291346230843087259403358807539071183504277202836323683179078265380290655140041083740719498772639494011706018523988193688596387804837137717786509367084073068391855320094340208363746054252695211873108044187555617609150757296353758504243240978194894253561488051648399185550325409817923941633018831897300169815827459443001516839520793289738300462307725198142286148951142478439440317937819911800743416221271375057013264558879247432237718340532156058990251445907985761617469374174049678441215679716738971752972094145855349507157006920996807623674653318376939138922242997007311089636286145640685321012699136080416760311519093495183273488320240136224855610240134003134626860317310814142381469445745744312988970092743783644851419704393831404193089809870336977181337096190347252542337246633577184269223080133659191757033533670445433368346875296299597712382816252387319226452809710623121348465020836521844818866184432708251643138892691346300397967516905108567723009576758783140251278160521197786504211118003803877658280629033901085979269565501357187891176745582524331542155000436234325332651773064604028627338774142790245242183923664463705762075155544467497176172763469820054986252146724511695147486423691645218403742894405229905590313564067061881281936147158516087644390217739145563590052556448005684212375509470449959832354588039994963950899048481525477275883542383419590884309029779786306296038796100137911094697557722558499278494833301800755207967534234274887248989499965603683949638931118762378569545423932834137939138021647616118285271041532031479967768967462808938358947703060275473914250749974237751018161294576026327190979017858527604259806672994861552349980466179473571652046506342195244663206688176556106240872502147025613296682721844457249268312486837310823230261360564387698331214742713878609427817727747014502988707165820279954505779956773797633115663620397397289508489929230073829872744566111631572338222471484278324491268058258977023497243998988844939067198209483010356271863466864726221166286092829190808860962867602907791265041424348316701049279913939388016706714493232090945822681407566101660625138000793051663759617024346749625055889316850459372609378181761805626424927044621708514952079284031715105093449061273621226386882727965380249642434080605888446776533493338058135061734807525410509222833360336289595102939226655200812022605140049324644218351814904241332076450281003498689306907751777566101994377544114969360082451954596671173255725992859952119981246044186943505451985484433714684204234607713930938280777325979074551646211563456576877418149487019493256147325630113073449915110046253186604961336164705987026471007687253247036526105011083795161210599213425560459092290947785338107951611009854710399684225861046708990969462210054298677268685138827493436368017381290491823802175884434858199763060018402455043639347525831184432193636078822342855272045714074737369255993115783930109736819090487924888661206532460152000335168141422972804477193676562839111651217927275006871239204489224560659499951882162445251561519251541248698539440557530254984069771032438283335078495458321119998635017531513927437392901084739392972242542692195276630589584769378343518462089531228431076626920567680291911716197358785828771504571705365988485439338455687452361582509297690532338080100239588158759601890869057946746760040728484613767290873389593701930186035809192800969562487800035954203504649282600218351160276500359007615300515757508898779709877246512623459434858447146969974708619341633908471726486305914339279858862338017846384694050699293616338270067608418255741154878091279432910863846947853495266842413245686736164003947230214150059728260677166998592152224446922722452662753747553137462434046326231320967634891045845244598715834085735563556630887023572750027903905856709684257476157704227887757124631483082575613673921608702672850353548863884440900066221903279112207312376948419523363518890952580963345764362987689019978287277952578086509868522185854654213618794096811802407819350928688707440238724062879588975043085326106396878515638060391081322698344181591025607591793497200486019243990420559792338398268709614517166098033509667819207870694670445052964510380048754656246144268720559930338804756155067939792354864468392917295248902411941414395004555151105274496092565798501994597445334832292324136115789201898749628600240683858562935279953952763525046396599512968205865885738109875833622381771863255911903200835095037665281452075692485455860174792407834667524564755230285139131803587488375127641654069323952591318391877310092234823466809945560512533544279271701158598689104477558802992722469475457343409971488630110503021626875573525751934778139174961643122972879514029762422373759765314287522934382892975362750581751132453671903657267884376036661342843964219541887566119884579693381298937901406563419516192474661306516511725267669323609419087733340690450558165213454487297074862553371635331581087738855095802330159523967268648400713750438601474834235330437085390227380449117576988953079133406811397562588492545284394178380123683157531767298914314054054266990963190681914906510208311130377896728687657942468534543011606591877413631321762198303416289445543557360297724554881458955418542210450999122832422240671256313535578227419398806196547685103176356379705213628453476087647191624882510939310918226676457010246503649076887174058871800489062109983884602249535444174934077227481562851572448302453765047321847532378940907877851143226417167207865271313548633238344810072504878677344464081608772771449481960020157980944682498260587592717763415996642278042914584234546121362414297976133124187195363825151679773423909103521409278990450682793503356406863155407032340671391506418478690860575345041992163225409754423164352434991500264140292956147699696135281539726892935453106876852742287916824480432608704463478624349069682252057662741054671106465204178936003473244014157701024500525111785668386033963806047470587868478677866005941018778147625395184562630317637358327298263546058429323574557986170934591291167804403130173996890297165284394825291332954976005579513856860519351140890707453397241952980145879886978105344437928598187338219021315887361960592742773315472002853239408397789239344686421601638980426095208234422381784439647101937884365289752765795163630751895935377213417194091471158931428412311647990508749331887496749119177625623516517274409813373547097884797343831223446489714488277146796704707528417151005177758584705360452208655868043224502154261560328310031904546602778549929217020935777114230574433742647869213136054226574013575310385064398286790589577389246677367491487536907339515858623562466719142440369524996637703770985252803613777816346232435468253332516733074960201249413720878443642861735790578481437239478915479884748129025766655262300741908124515803036992955037147164379926226167619218381593549727846720152665688420845010280046156910091842431075734179979783749230883487520580468055061820398994057860895824863813246156474145956952950257440684073664889904226040560602079193578678161126084813574082600007829756702414971176685873724094152073889241847585711465880388970146267953322313509070101452690127057210105779022277343195276782480856529188340361561348550929855796859839712262320837313667484421485838926042660191699304201533766491830909468499432157653212172381580140823486192736058717317466163847683264531184832681703369211623877310612543643962337345035839522545922383698407681015377194206583397155612108653083191645988670212720030129762880942895247190983775045851394570956574880254102538475085951906008554776417154677487089697871874700602935649391122591469261263511710087692787102960769193239654139233235563061366787913078401419567070881356320830880213526970725503189214741870398652371928414023072687812809490256436240867996383840921607586376700609603866327956945454200216914054497140193729992601076381319927344795034858657960779221356583223536408862834118876504409798505054654654340618816822304137332216455898377580961438429059850323819755090293443799336410337513679189169504960056663576720505647998532197059594358470817219206875917266453374606287085863099056469497814288864827362802618046077223206196839764684021703896226885242604920443377925672122905761457061866837202922236817090556108848373230317984179859950962146699137111763195890862038319018061032059854841643758537559118461458584528636882655994870662977243594811242593731963776359913818723798612690418725118495457562018917042825869646026822042170164938176626617811529465195189729743965577948535312848582920828318037995320941088406331146501838211945555989460999499266195976995452899102082423620367295339270261124959008335815158764211599728620891355269369880777066243495576565602414466461313951949093817390758101911627280585346834490256559339783660736784597741875456385440960717762071157152054663841375517012505847417609854817536768451158381471816080654008826680154523338651980071906453012628196539678057912794047592200584891296694888963217168962672527132555070744099176536736468323874720058609140609125633443807501075614691579295085050547070656868116338927157780046853815222838857263960105057058243307334956179789792708461912072633112251197557082335365279102007024268161463397894521512991183827518360244054304112902681963889699612182085241809012781165396831190827645273329640058674414682090257661164073139455063771453745016860874539922946234522818828837496340942470763000717491170722821267660042795470521180204638104755668948924724039745847695888633985075452182680439794593084627425060093791510138248701420978485908934470218315026316537964710422414848508953653174885833202738382864411676022315464960073515324718648310766369966940592029950073626018052003382192830878675968406343999421251846765507910757723562376860823556630936746998493392075127302143459749574953145597189522407961223123553409134909993234776071487196398726480243384457525538908352522657598897188751829310731782947814194860357498926797639375692780897942649640984709512814089650303781983675097553142351844585048052518999108785885084128715673248602784852202625103212672429865661527695246604319778947900124911930886867136656012397500815427149001629595311461521909491378190818735821252571605128316359578846573762774931071481719546509212499934584164870580273389017244188393954501649198066523773617773603148318070338133033338972591051988165809681695447229880713273435088736826826770722034381291341169095581164119393086610843233071610442261294455334123815147843960365561837877205018038913232670227465189079832876850186118464035832178304638050199921558206268148596626835738621220408323149112415323716735712682952546582245705117230412997688385500025680894367542856812391925356804836843226527830989696461401860946353979452432274274964920385141721059486526602561621700757001951723017250514112376787574823102663139662690924447844096274279748103136259643012732398383704025649960014459222375208937377135086960530601311256939481230368773686301164318462671604583327430309190082530180667483584749343753766607113653497482984301901089950970913459388149100613517153938432877737734771821280254447470438819087196192237223304078940382387097398511730500403660027910360212920875397242062759420082766066071073341577474795254519604098132952303380378722701930037663925484469314023785380625108348136087828800437117299693827825611561606438539305841566582411873588437947478804984065159864435345076088007997181939891110871504386314503554946209094365654392650941459734437752499801655609105275249481281179902173573014492328741267556064260298802557836413692016016617669748043542306072551697935735746825089695874826948731881544269818023315400606701953197215378857346583566060188867877883402696009264891214523761321850570390767193931751146569912952896078615794446670090410139420800171065178067033197994516163258550311481959276610659074044524985800229299228966543054067588746481449229311460408549457355981220577363061921476421011073334112714243475459628100874153150699878674569108206416345365903297922921012380381007569387269116011092957834426860655788441475726921085179645009860474953277920185440079838954484886707511916628030508605658217777697998220345113976466651924617025416334341044221145733295408504392807954396151307885264705378477983896727073836856837620235140207456693911087053479132411488788790158615971668352740445806936367038922357337268462210096916521348168176682743961853038638673061119918119187716359164169444571406379455424290874419543670817530677676541875022056511296774022477450002728679040664986471899711013362194181815184472591061447488424875027349454680510566851684048259975803596168445168373243003982331546478158041588277779460034850719864600409493977640398092361316514907508342421422902139051990165573319189692423186174767104600600148134265471179386165793927640354534589543137690424787165731974481919188300904505418400996882308154835099253666611841538312312998231819699109801429636853713921345260197299766841937950906406548032602340054884977654139891095815240233234467133442021495220744851782237688425688959031252711264762708767338357468592642121004081137201237521417098050822536684007206712882631152148490890523814401714196984944804679489675174776184049404631094279956737122753825775748085792754776105710867256129753274940581094794847870606374893196903901621417734653625666077403420493919792655024777067311768016577482896998471910716852097033010898010186445031926303162374116046753551168125391955617905343365937938089282722859914768508181201172867540470665654742948597222563280678451402182626324367627789943262937705557087265579856057809551086296577566990613910362180278129785662042808063521713920147250640452588776439271155252643537150490630447948841296952179190073624651786379689854808868529795126378890858504242865541942872273056884845871457476143153314718677063731935291546180195217512217731081929119956154340451468735032164383282109523299782542573539172290016513396984876017270183825894574556108791029901424155246809340828709852267349158535664375031049444588500491485483180968913365990395654771006567422899781917903880556974077808484614702490694200671838213724208851280759884631990288078363988372431080994688444143679764701359755518252438059867085825863935412502662727657199067541943193285433812175474512578521148274909532958863395251951656595291321511692041940837930800910247884453729889188341633145491480408091982281173152722432780262445509782321678235044878025855705718538907483505898554256099969620966130090965658274503055056304302205589701600825504127756601491826803917988196135982155843447379573702413895350487644347515252532802411844463140907913400762357692797913754689226884736149676856077439534956014628788995262183121832769384699326248204543358092547676462813616252866002903472891134064144250270608421664146813965398780967700813244277543465345874410359433720560138908410081960804386664051419536311000388461950017124667515147440366134559808879788950521931999172295176273037788753694443728709322519027105308073803344250662527867491541720713646960403245267328210151103865256574620291837156086589496185518608531139968035120710186676603591051690907519688103777386210264556171179825957862984636184672745364037121364433025001866944845893062929771460245708428537857217531391554082579635931071315989384210450732463188365244921677970430073450551852731279385366659239344190124417726744852219108768490083445392411318877611652510551507575859804011711680935050414745944483162589233546375855776767002031155304479918355861115050998041016086837193337357975553651024649345386759740045299465443507262891914362838579825472072300373383314140809137622653162428553463542462300076344744853432331717707644082936407500448460168077342282673654690211705120825871739934721949817495250924250726925642789857144682543911295027774569440308524614307137969039330836064040018859177956858262686679114699075516215713058458238926200549247748286076368766901533212848354177289041468683550109704090524777537298208489933703135462881564099431841848525123082824584262118062924394370484670057600731014483833794809349939449513215416659281982338744013219843698812101653169164961442714143245482547387629724500143589118257677641415351286224243126644694731445894464907012370826536309474640534463336976668148365069960714298144682556320014978368933051669087408158855984456703270505669128365644980537540195891176195932619380439852108327520574536278469874845019532470297825798400478093569804309947662567686031949573083415953921209066913357170933142936795525992559921024120101313417481679563312303503160869343508168983778370718810001468711081456752658660638884619648395491000804102621263814323434264516893555329375430827852957296723644138547682740396981624166189947325058111521969662924312118815724801397142272873868447289013964235982967010968586926180105408495917618647401412474267934889758834498858014189818668698566257552425115133889558784816299389496397417033311988726873131528027212434926334053497309720298910228004908373296479534316950778781520725900232954876062179302157414640607899306414205889014396961918180959152949138198462355194937194456512982188462378681558730644868873850415529812634340472775726538865787580204790312618484890551873888725947776814785942928251702376169625542673210477924328163129048539475711728834200324746845178811691006259463580546059295237249941449674655889780033821763324072532714591843213015032197235641764896047227129055747346130958417293148044805889632654064150538697516962493630444716415940433176064306038719972147798773892848955893028582296350937617680827682919135911466714042777926514452512292960800340786722340541320649179899342782139190630921424731548524409813721719049277450147536299714482855123942922188882872165823371928562075908049597357931836592697073626866846662967056473414696012289054649334216959657450094861720796723399048221426950965351576190183628497897472913885974861195482287233272330631073272906238657963912961558017968672419636993357507327926654753450832552123516981295456326013018790230598241273242036157017241368719980083222349838069075595238052192860532054572107246906693777913015221780039950986575108200809776528168571461898916911635158704269356305188550156111768320987228764381341870572861116475331926890642183771521971835146026562830353905646181730936806570256764236706591127446751335707108810195680022570551336875595585544273574341544072591447472845400028098970682853724683437493734410851193196097453241753890472845085958747424602856097878528545187775407997154621177303031339100172669288976201057951121885825950956918526102107090036450824200069159718001599236330078833562106398636742717199392085787672934536134885946613681541796565247637961760715070517432423497976271253568381906775894367733653120631963151801986593531388967149711435973775550871188943713859848091954630234668612328899619278198946718625627630057172226198717255668223923904890768146987080707751220177091609648770120434768279559338063610192024519833268119705454153308595651538813921780342498141963164905511260143454931265701556562158264090824648351579043435702893453635054819012476149728370681444278505199006903212896548769236882909068546671150995589760754891507625492685131792418299782542728547778448453461101792924207968158552174577602546294984095234678192840960476386210024350185606609410667690932843429705931268359659552164788030824711745176610929643714782697763464025941436376119883442043651405819785395750254618094489169401030013543819259121122854238722988776519602373221724050916405650079014770648187623734031750235491964410642041932852871687936595663020518293155034697291267571007407824355433018154958785858475434507850904892164905683726569122392614760515053956908698779269999187649883835020011034268265026969018909896424000140656288941654229991152436190033893023874485198177367035859326595056483973691102528528964240238162690169769797872053924417306882145869496570622068064152567048641672910089034466482148259576598883675676559305620962774588428084766784414116997805736320364832583212662721001886011390639353175491376666606897406774841966431435260003955902744717191497660803060479889578097868601071357264140408520715503208109783638446056461520984027952828516557607719738796731794525772221096980949945273561032910012006494033523485945355873048645021280439047580017537220142423121774893185173329466211269176408088586862489556539533649460684315877915679859150495016361992776208222457743409154600833608278358758581453060018874654806158469935209424129086588097007658952952942711111315126687583428566179129561920536410044079683799872613222554918639288601507650870472774003701806254718086876319171696486793614727732979757046379755146280328266354020758820986430077712971580486344586381703953969346321181169192104636494630154711153619666625612026906439506854218786812240993780516646058740408377608389717211889712944024277671668754396479044681943854146770948657994287785792979803623008497859770742430848349599307423855758769983547158184688235373094032850678988103388739359527893501071404914173640804862181613420873011412458842231120289553227515291208261892442680444656692441590713999797893022991343828360615540663044391445778085139945599094074239762612456772578548076328639557450793670916499825916076795474644981946658952214795605488453772955033488494865214498815920404443957690438775163101524744668822878389148182995253640866407630244850888822773889814481442580382544887918223306200047057093191744017116590681555324789182407775866665100435926469674592435181453789517497170913007733429647167891477189372321676652882834647772070310297542094397523932163345722780599675988114774549208494809224706159973495073321478676741593210626463245533420320135047805255300115734651077808653087217338440136071977085011680526600480673446362453506269853330351107802011024714941904163599640702033334178009708280027243676240239632839833190086800100058785505242035602151193311212381125806324264054598875454442839222700398014359114677186893678295446859099994129657734990682460457444371064184692311755752541422151199708105198384237430802858411911034947006709981625809080232934922144135663658449085571277501979917843893240809260006508919841301015540362593229032108072689825169873993483717822344427052288062898849905137744969579079629178617645467526962720055032628667023552336797726063643852366606175531613341317196197864392121268769055177347789594578286793751698667802479410433905992805940732000255661814631962700778143239536096104701729340494466620042894434699772502523362436113819044501776630394960920395546918993072887803159200038513497548607143872818383086380817680722559842374631006953530567999908324197175226060014824313203037348268169926095288097144322551789684890648663457922550958843785072651487101659277551662918941361681291844882428584914633290399404985318303936955530378939063462556418941415029264319234049598323408367493224900433835477731924409751183050397065819857193854143426088211957823771085106209820471610682278689620969757921676775517314616530623257688107672947682658597173652390580624930436511108825021373017722979145548745526360319873068471900353622658246145403431408136194441206504994577360905054778745696917584830341379595574153259059234508991895104113725321454131921375733178112506607565288638393093800774772362121100123864093486021508415014831723894064495994297265569568730807876269888569731031755846775128444574553397997813792654431921834421363070757915775647019542518885598183471508749639882165975381022375915486437492344074425523139962629180384112629956456129401567847766137658011123670830980985007918997025977030110831796067951569965572007575902702144061044911452833206811316731088885223390097768175624261207932093558751202518412009102502007023386813814634972054308310984171324107369665562496654937381813957760624019775704510736176400350162938954403024939727373854471651438233295189222680764895418150428010246315726137001519913632525676047478506575714031274113457537113188910649703107854178914089554130455302878654582163342569616634049525997099279447905529226719538257258587393274130154916630672048328356066972804687652587441088521105876230763044801393780365032533142790361470708396485178111545244300098858104533794718403395346580859879503012075351566479135465214976248731740221718399842254842989306171139607700220638169440749741888701799889068347341403175965274567786320642727227656038739437174585149316301185870988806202046350716742616122073255219743263265181032576138673817502982223737574646083182965575011782438275471222775799172556149461261270904660505267167223932500389201907340426107384301197825454396941178367831034191888309584133979272805382546626473199829417047335138373106220916975733273156589158399416510189572510284174693874373753133185652978668579739303451944894907199782629217544087253869509690256364913361662649103302968370399404779514747755870330411967687050772107617321483418530312001893714042946479603145311350066416700023524669310259433718669444400963997152321649187814086836681368125870117467589428150519860600640710086475174958709157959905729767405260915067140443398013208738176994367507976640722447299842158803184305897947861652814216645807199421852517436374675233515223073367877374551529844461509573192306345037036313453322168768871805379018319904446550904855025013177324986195190433459157524173696890570121205948432263283565890164054944492494351263003114712693604264490550542501889653141667181313000917724453608551190885106698104041467588804923153077182674791076853804068398921227580309702149594473809868273473312340587938036654043442190717164560665129378355602095649072482648351965488556846296156897637715040962462010579776075850857781777376501426558909658580563413806753500690392254667257452261154877591099601883907846796078591115005269420617357121701976371785105596442959618559023720438391967628002735526981355323275637931672939282477623932022778544033100210379546063147023481872886415248211452729969152894850131780271188121472084090813830635493161325791646756216819484619434213399002311094007368175499040105370285459703462333608878126345166364275991309512708416171091252888271665752450769886751300197665033144009722236940513663503005517281624212062955587593905225204836125872420287156842497966510035381857017390496082026717117234446921374861682933593570817241106919584808267765255054877674327988929228526399335672320294573301001520843029197879539804218174400897658113932684317529388849754954547596665544635912594206180442533467344212032289410055743489598571841851117728886296883795457231078767117936640524239691929950908446099602437176001623544091050434889834488714558740591334803757508108213516471546244015687292725425961643005362084352528358998024484653362422817109599601827699239352698885776941029330533541192182033534815267864184300550859195484210442525809817478579086995239359572577878359857446016518293777772864837474595440203648840299944295003769029699812826670409448793305461680584150168511183561532408798094923463652836206847759544700761192784929675948448992774264756317901512710819515240377741714381578912318556683115599448809641013883431262041387895097129237574051734778907972947159713776030845364618737701437543788226417693517009464573693269163629836955181552453496432755298484707463786288236903178335220459845956025360838502442970340189970392285865395671330968107511680246013657146012292592726485990026067413336342912103988713654170966139605163811546859346092725013904046570958813090147586439690356080526002237067236208245581181104709820327435557479421048052102582945221727461079444883918690338568109856888473513216220902224916728774326675355246632875935193968645350659198408253015704540743454421175757722114992310792258682019154490386219338234855437019047513801817401966723441526965608853765796515819930902713986177822928103138866085869256177002823453937381750059810088988044992163878606494194942003728500483586733358419306065079413977546321632519557047405447758733069812177634710857655153708861398629124189882384961710471521696214316529809386737702792483019120104057983961636647935371498532955879072997143024922657859098831534282291039354692521854358932834033079077749660374347639359192129174608455854501478303286948350836377823786093757486840385379733704303180151630575572859840539517606670680890940314761502410867637720572494875842467283500906724147538683524285131521824679772373745705655291821841553636624574535994728495285140266712799463114681763773933801244847002709448323561838029381738291966632458552074655518389534127169628384377734519284699241471083404269760700018182204794404287701819691216381554007876115119366692872982493573130991180381561849948696022256167794093781010683628532555609969925503390052027633657135364055586665400097666209196786378997827923885723733291301616727422693871941122400000852137552752735919034668718884001271277947100817035228006279688274415192053253373855168093694549786789710733924396709597311514345638326570413189498231548126537259395975675283269228288437973242922424415919423396209042686615963781323856273642608141820472118230036648391889539721693265027529331515394513993428691615334165115485101112923744798941721691321577793251660840054500252718711487093865529781654778907992517365552078125868472676816797487586252427646134096661776029377149391080559672415449995426515067850638413525415089100674005993952074787337038441672320733134525556389880446580080915750147942037139997249753619127876102451083024162313175339423890521136479018002018284869981683123004832474627600914139214330016395652367362789835704364262039618514932181766121720953319121045210670266874090641919066784531915512931161152675968995662200513952927276870774262354013616729425606192170846845084136763603683726050134796690309333172432767501077016178941879137036576410003615620374169634228827967205498547282836561829082987166479810334518370009378884652334426945447921995955901150236225598284371072480043530582240830473314363170265028896465972017758373959256362854059666662550126674583687965776797215056816760067845756991797032721491730412298066456848713671526919843460994186809763222427245889347264252765604238690439311764137594322453250858384001622021750225328190551116273623414797841749098958001', -); -test( - macro, - '-717897987691852588770249', - '5678', - '52992561458966917842048333229403244806917799627848421877881735070477262881098520765035249624964340882038688516377409835187369665592703958080735736766945912536313709777389461793817187662953548213601180992839097018162700540199444811234129652849225410276267930982552729151588039493817422762367215695837880393501083343614940195379176805915010804690716402053261575165097342342740863670719437568773682027047862479103787981449864557595411550480691451690239227939258640148661525627569354056573032574365819474479753874049318092332197860174730296445988139873008708564407683788184545625049358109338930604072043506368501486476015294370204931967091112231708457059830732539826223797283205277978138098770871113585235612923319080860928191126542635460138797782729492896291235430456696065935768220494159845006073392139110350323314505384289055017134916876163400462621881373937156047111273516233295024171469513762593244072341275620852077848874899582624269495895402815765777547424606219477655639449216632626280672365511304216574465048481409555551898153578798780997838187598030296504499299634026846370222734083675507056188173301287819190008251323703160735842279757966250463716342218905187576189745969039286653568566712245083192424309450098888181155360995569923237384829100088794333552637537227162177479701619093609870600007097257152299648831715938521942096231520452892461541884420652580871321292450318548928985510277252222535133365388202103209163165539197901552072608710284236732915850819518113234646115533291363606803403675185089565146698511010652775061073223214261491866092146057590474879116664838288380912194992229955697790523281474198511681898554287250127257584177956384808694445714111240128709963424475982531545945446204678284012510035965008794769324049843450109531060002528540713991395046933182699881232634176242677648962206607631738502280973898290005462656772264590786129579181328545465308696435762205327818322165386961509403474972525469518547542068305372202808432048462319049469153118249646785678722142597199696100956128198604501655682922926268156814400446792306656470188135722009834179368221149303323894575881803165080171867765138413350984666824885942458943042705023835971675031330773162756179573615771369921528023990741381103617964140627847781113773752668975380722356219881474606884340999916287255829002765995657643610750292167091336372823055491725335254964911991918866523018470993631691434109295300263601212125887194770564215757107756618621927605011672982388667069376436126257785256735035080395442838012293011886480858182971214107329249888540878170831338663664497081571648293369670697492303978168090750719696674347255594774732019346186950722015778265861706529434650218922964570378758677250144083322218433388621419998372158607084870550629095764769864396578302522198678754554607834625544465903300910375218946617943281021263817868702534903565965515996857490410905151194367951674404671401634726316031502775424938708095480058006939655833612970659151929020021108105677362480187576212239598103259569657352323481949129023622185672875961306339733885857708982104417776147428446169851035372923120375171782152648094932708525562623063044339202972582525453779487351603066880013958145443211731768489287736596200008852460116803737486674746320357688425959700168747470090109849460232048475582033235140686903423628462653109627172118888613705624945389644912331260448674882803772456442287538433120812454253132443354729068891796527676701606716457913622114298779919239138678095658602599035272101050540631199171079787674726148712746094500511958909309383648848324958153313684693020237870128517588375127269029825997693115614438073154312047924340357482412336581044347428383345931096734448615207346214924813291025243318597445591410601657643923497289883965796840775243249869681469920755474682727417587202159996646531840273727959008935890037688256043389201553466973472089962210203795891910446649680901883560841094031991763415446185012636385884139521383390919645656949585657311438685339885917614078799309904047978363483036838818577158746493373606130783588041171423001575976326332942068212106971788178296357879590268289870554895714998398477383074091612380803534549439364991095989289183083877933651758973534265032552397343750530201088858666516716202042806877592785968359618297523122663345711107589355569471982996246008945010788125903082708965247233856493295495884971617005159683177020951059046089360849718770603433176136962787644988761679786793574894146198596283619577589492917433648008790154607904592377489003959969338300144125428308936896784361334723137983098924994947562038207668868190447389976840741447171621269619747614678405424544476952607756858007392925674149003932269670585532289548230838340609191813200074864347826444440499651323577336653937195827618989214774650052553204749548153719625554328240930029474674929792915810450109353297164695948404332144143911830336116561122587580838323433271508758381427202886466864203006769876629040113309536126898286439306875888068434906684986109839807912211044229574073513385256008653277622489509139402265793326372569157760069106457217990235011506430988742050031863394618171218562494463476850191629255740324446363242993320648668718706796758945218459365076583628726166585648610786131608405727805072734696605117814467304269584486848714577856278821187639674139091420868276683680482402061170964129020179849417226407523345979683703744990934601753619379872634811616761518185857620947821097797023780246814812679446740501132957939033231020697754175111520932341860938863741889626558269454453009814222388294592392173794599397585978687451892813356296473121549635013676249164244665043044957101593039072361182135678926932958876432422873012810178205318591023576753916592920079031115341838800740563121977641772239560122596720253059357199257880604788460448454541912874334474110048318114397597184518307140986163690693584548192536813827180198436161154497288570678489493883807773676094581689577716104059811574599177659911227887188217401978474514757553745261264218832355099235158560242297233406180137292308698109610071281861640728221129462482399191931254988997403297870669677165754913546299432301037504530872073067858354779137558761312187986108590108671713663509463849235645441069025317032282653619885664511756487047824929057588473863132476505639554060087119089853326292527491890156165208813193528270287317866931952302862861082174087615226626147432099575255480389022327072418068332438673738233637882790315683455450464590709105784350178739780127964769969011026088597219619472341103459382289201174496483005244865985320414773065969458214373055466663167449827644842719260068316989039810368349530823214414315840300587086860582920441160086337872788129994593466901398749881456816893076117420457023093235142704769500472838381750950452685686468352355934718793080770041896266326591193598230038726258131382339638465090689033062834104050137121528398579502285618016610064410178458485780348478662846002089852720537701136965653853259363332024728436379986256649234691293765971251875100216741285408346246009343410757983483597963489740851123818712786795291798837714819930591978286010640687992692756495314962784887224591285887831740631885066445063662149099404455330521550962587381135521874864351037529468684827186997370955447481995887639571571525702373403403761671748587109161571183805369675426792116895119621582920253789699657615500011890976403807282199844302806272514657032217062946033211042074109494896045803992953473587506222506781346147810525891832442558813747914920938494195556975736956239077078403047716108873401240720217398379985768790248880164667538691286461771920136462983631359473029704858507306794650707316446091278308009089124701630706210560168792994743974642056525288870381921514176601924996181921908722977903765494032218635205563065562888264623205077967964252752702442201464476030020851153648989654374063092609825139716406169830702732441666788603492696815334157061439959989046789065423318960712201089688946540796678378497252260148940700296093007934347669870770800342086190913566676064617891161093655936605836899446861184700094847166382869925437304928565010472625277681782787551544062045311275114543518096882812611825710549053207666530027825046311534181156975603474991929909024388711945463808425263464957653237271591373069179547100808683091655216330416092310214397175383390044315163696300849781070219134615015219064302516596226701912265613020932966925428815092790344445459519486710818501491744578229686083894654498423852571127489975219254353172438337650602238280223597768220243105815348527252142824365262184240072688609964102457657199429178311502128276669149947703560777240739423309436247534508874804401314162274740915591635435183346939875420896409168143366133287003880010386186641170364265028042141513465453408101841921842528837600797310807883817569665409313593668849776576983790985321325237847569765650823790815463692017963395752927945155773792906513914253930342695948572439951274479143533256050317996678589637630517043566370062714774155238038673228364852986154012293796986173903941816772421914136811088242656279247112124439226958945034478877984596864873339798554814421219750181744221681578059062457004925780474249073437168128231790400216332672320703915847426463055894401088311795843457416623717000078714687159781995749578194250354449880164141903126715398601118555657753088212238422071158309996360998060316430904776007237664213238747361809842176066931627956726802459178808505394046664002938285314488362839317461527679372532822934704704470253690263875879702240062788026418261529389183596155698524599722228817999108140672748144745689714554812265041175714545225389990781353970530998752805250297945973556929670870774946985404265424068777800150897438843100570165412465536409965604362377295700424297999045416603027704210682281919437502308628718607989662408388051610908664802514940396058178295301888644151245892936386802507105326053427738255325180381762764389027620113283759653480743839809992357496074117200755535328327778239627950809058337055235742086687019858930046083297050726069315089882694837254737886800564117843966144822575643639731768343937069600705061564770014386059309401600994691145418984296800446891914436526504588487235668560512126375658106759961423238985938919327850368124270203404746108520903433047821070462173699752058768991623911437121303926263567247275258743101051399711951304774969904872170431870967998534905416515742768485058006433022048620528364549739197129869684349063800961670793383545725472346808561542828191153302612521938569967207547584404136442698715207952729855421979521420559878331433668100753209636435675712543276009510142074799136997641192447567079334735530723873493925022491212344710076896739154338361999719913499831623432329457641993249784570344228676317925346610689759322653659928903365020471696174639950909615303515965200146660518282411647170608800939660621685552950249611706475325198479518423077155301209371280575534360462938867984963297040183736104969929190183531952577283379234782953108926401989267488044466794228043770347285979888837421775091151607628072534183685174245345816369526145717126891495096063726823540297588186575358585981265343937095373338996442251138594460569709569806492449609367188654079820152455364920624125030761646597005088999711445807387895998396475835641806955712083403146532371590752368935420985233735695950492134965346564198873831201899225738635547303457400703163201429850285547082772143821844313238723456259228759115534200528631507109400219431734564426566942208047195491924187286616903223592310617985108600082628611087567285767001840566153820546701939593194433998024938689773662808625697973543664837705457336677737765607746286815865891347597385126417092248398027369133671804532615511954414419259304523253807140857494548560843072982788068686101289767274829556337961469578050554176149354133487258534215364379154660461310427570189912699705529950514413147328168458631103249872388038937376864265012237965847164952284836681545396080247290559401291604967701175723121502236181093388323626875423056619719092568232717945805103108385877791944344245670750247392343384296108323807858305055418400741553693700502565024106126585636797090774279356316370509236531508263353733878156923208632989404619022265962263865918260332262005803614050713268964027332085964017902372988449905870060050221522451244273428597501098201640739856281753377806262510621286335117441922221183997764738785835690806964058090618523209727153455617620262903964419882379089412045613968114570967614290250244897455062121766814873521607883867929237291112681395681208806316115052463955424369530957702703335301336133507196464013784297392355963686577412082487656646900727164897539211910515592015131790757084187802478999731058868779493827694303480414208944059771372285831516411891131036856120211199256880755033121745020506905940385581282403448035169726911436826243069847201133079363947969342361067328363441956715292529385906162072082866885762473853872136917177105248829462003088491198093528321254844293731158494353309329359943621539173472646030822664165537362617032785562181639419716789150739604369299294852110605262082459555983084488041202822751327819978152651961662242916641572040409255879415966668785223872853617095739101441693844227787889967257101619837706529517298805962370005920305999407921230127760675120172113782634335023130691310728800481538764425860624015422603351785485421993634219805565282967254634644843789616543323341653341146495092459321686531162492849751882105121323719768549112911144880654693888232614646653956763580397332567522797083319499426431434148243989859609258432804222067142397999063441042035277929314828603521084355742771233471852499158339778603981017500121847933601889420815095445410655577708991650898864592139988828909325847690688265292963327637387564935819554712076627813142907683346250203958929989323689935059457421263112380235019472983111424135581186825910973214910699149667710959563181536691099143613233601161732666745012245211307688622118221683809456064734882630698593204467656990257941572412614139802715394281994293120883156362501711873082011731962032490574884682131178885924065895059613017568119400856466320056952350332528728576467215637026738604714597593759418177681274482897193349099377791845071840865476390482509958300517175834887188010180465835340333367167368967646066303894894949259012937252758312734808329709232360933894530979086189948266744307651572635781288044544893571461370440118431167905294073527312254045244808871450613885567599305888413740007585647252065620950569327491405356998305146429471623136661921767554001049077582559141269075807726942292324962879195004849835063558899374919319497877100701211206496709025329275359077524423372451805882088092879051313263439053059246113586757853983808973560033255079821096458791208111949975520419973969738539460358523519982416915144979569986992658895580772468544281855421641228395656106360926287526507440986113241371749929933626943002948875469110027470912266294656790428857661799285796092963253692751518091473958954584426686863281912392953724819538676197544419608647219428371546066604565530829571887668487791705473466987941636508397417037367030291035726974209122929822977256282776129310660064280234827050717329256768834139633843952427070535536323343517859928713869623513480175609016408364304241592622958594443056559986989106563619631715224662514109451710877519669377700137922914878226108875076080968720985553774478319079858681651339801277697214672775772710298769965771899451131005224958432124257866462047576738776398467445567954900257927297206412032651048753538257470550748950042956467383856098326990699095531754983730997777376855850204059808381527746257418211558497066091371508074576455448794073221457106194028764995140574406949894779285509688637508122002763143590113564857465357157613251821223444359965532981305922833468097064802147367022534931051008695237039566704201353988540866088741667038552935423161581934287462404348346959712557410094417500120546248110357270320222372208679677188804508939856387875484398668973720610306440393165985553874361652311139176073072642232364301455756578533325673397255829115802632064375030488532724282480941523096056375612516691335273199076868478063949077979981834693199226789642526467313758886727034664155374708233413052241176017997770755357925454917422006910044558649830410441042783912087181440912216816911418077643846400706686847762348581058766312240711484387486718123588654129529313123730637305855816034535443508751239517641963906747738873083589048844951039924094554710311263734798500241327075231542378920749258310205825922008644493121370590192760015148501273427214461014155067372554805948839297269789248975606338557054691632614937241901458805041012227038978979812168094150773239740200926858206670986309560725257896194349092782159293694188307081347049188661030610107456715733073715420873434056971119630761658470234370438116245797515154771525887334083368102698399109278569996061959700658346646955565093203139925211068688479012109279872461395639869548120204532938913593022473786111209373901721432107297071448742770742412159279076830118439645403061943303917551223288001014702113659615663577592748103708841776873178445568235386839518530066675979433748005530615064885650866749177914061788524262808081456736332733040493983863214714692393115801670972860894965741349096171975727706157112301169070137414347667759125039407153467452265210719726714985635420293189470049637210766042254751512445609291095350283495503549502917353512206358756772848829158151755615008365723008445582823523075844725615067686956618810366284960890688672135540705475984841760373827462101875128799270857413282580082072800739904057148821354442778410810970050701431502851594089320392059591004827037030949407048303186582849254894900004175510461919883551638536839489510245449220044773071872011316439740663014720019722095387628672305811492191697738078092246616407460689410223935009608878423391167281114435298028095665936771603627090834937282850979762786426899134362341889415374040340896380252725754909908018401107333556100522040895675585460969780799009744922983914153517048037312468584877909733205649413029335540211297879068656419387807383048842494215387689331649844934805491180381285929557990551329032335758734597115389529509449814729908343459195813101027114347572133759851590325554983005153111501432758813072569701126690781490951740575825405497526335840722010023321789428374242548378889836216282253171286247053640123351326348638420215428018887341486150219038345363430704186782773219435948195386840643853198799818242098668338179745226151996534978279230096399308636037991368814207217507069935928147009785676785160027497317009001777550195024132691150567507011354412329032340603521157466518995650811670602491853174280204852628446269615787322879786482369408633164257134657023953228812362587592950746528121453810577970418765900895068401958324820738606431245080063027400254319882177028368653741793457795068935169938691425211024828792631933230877447721276360612404169065676636411366175986321744222814400246758586497722397143948714428396712767471630538898122410697568130170950184011778819880862316215372642601335542980464853249009026580690749759635033913834129498173805649521698922073038683841857811453879318495594875910979538327284780569733959417673964124812143583018523970514641401891081019284489763221082086325354879697385907787761049442665031058490028534622149846137905767487116029644971254430227080575349336243717394801443483839458265798732710051462772605466482812641037899172879970734427748668316293777647496909333662168116654868712457269032630974156741200422999141171874097340818602076458352626593605494845936264195396202806647904404677157734745652872270210704027405978135714048673747336292778720101960923698684395527092073172044177213818544969591585627238532808299570223371536372799012875224234778370905326852914976423861886454350497565400489482872955448045615907842220173649212448684979945647349079756570932865476086046458864652043811750235877344393220429343034415180297212581588145608747445493372426999318493938150343775786331056194752510426503166230913186538526760445807413799806204051029905931303093836872257279463684631738363832006044614840509662858475110814261755496445327276173263161251358809092006580985277059802629992110919876640778599238851224190806234298093499859897877945279235571464696627205637879325947667945367188005248720580469836926696939939415121732586533901411675573681854304269524168392617282088535658385037701299391440541334384518081022468387518749703363096233963804922423094068395126707285054702218861778016173542392815212283678372323848563282862826760297013819812339131493327915541965803998097384090951244169643369018641096219195430772492922432677413755019687006516340030964660067215342977430274756427296622985672207880091256161463966745535322513359262081324439248033434926360421216544044746832762555450035219016309931057323669695525075977196214861598745789848117118689974917406963326147153664733948922010644259043986576126492884735748201429479293157327397169116086340829373474447532461009810536262731597451754627874681161347317493618449699664690398390949643587566379695090443777568885944452505841199312483422475407319328641366974092114345516068535284073079980141067468263817385977308228962318323609469322490263507101669512786080642752319574742157425134152748843756299008728152305538809501024125010339213159780735824709099108882350824446352596024291069384003047531175618027373859127640704478972526885889432610483189753615050833681837753536005311543749368107499347315534545941713644730273702333948596900145557971505509367959108594407502948243020888234056853650963187076323765146652614211207546354464881645918117204811380635728429776867963381852884230518246631190131825530206787122927542913920281579736988824992521073962274953252144927376468933425658712672597384028057932228407070530265731165980966598601076506604289064934821557949717410539761505040873308406110474412692271216992858783788017692940669126619626790274625702146919817133167454141020585503777417647004018422961010432475942591656281157554753543866527442721860074055221343919493702427083052905183704806054896861313080853192781874338774353472175893928663360488609634784890485560515252214309637081204987618424027884591397424067625820413547165571090593288097729180898304860943714385424978418160835850877717027658521907629768814727424695191227358428401962885565649381238098204936255938797308193040643227676416950981533713051600283871175312807406414172316740879617172963584690587789848239482341701897688268557616992035582225306531638164023604262595670103263609695362798739463036593927714273709560324792380672245014432684528132529510597382659551239028729153767533108869546101650464606517031212471681999067256252173869702628620955732415793090541749027540473718940312552425322149119344958406002437705982398992267252296771928467559404038212669370252790729353944780711661881552113249584403769083480856475063987837244029373948596829428019040641426569984762280646821052726889241697080032561970596779105934595957656757479131467410030344286211442477923310898646446342650046369081113562118381113974544065289731235914381813526415129034466320886690781519982064571162447720218016309577515552126698701486349767343461948090842618080712299219097673966015228424172663889427342731020122066675346414052340618598182609249461329861211149036514914521730088889300616712047373574894553971526437268977130623792336839865094059220733603108966045443149552683777916379609517221061627320405151444134819286421255392382822364134687682168786843209394288411699746863444889434411414485519234492407599434325668997799101520066221602884158226756336984242409440361323534712903377984364440121709955882861088033253565408769726596294534478786779815095706073686709431442168829090896416212535563746063403950198043478906364003836786350526095004964058916984298874819382063723661497266846181942426357905013650755458667314604787157987764491101741899567408074361392569794087507924311908229702294763769391197478812554522186741135262551897352184690374471893073000220162512552332060179402611785987981834888043869118074160633762440696320006275857520907876405364367283599977809702429809327633774811777287837997929063319088643981288504577794563897734368357724456507233435413578168544122187905557510349163877892031860938380863700212457499941173051991635044055263541028899765559085615828388330183855986870987907204189354310066588413218192874980402116441641033329112521433352585269389744561428992772734752313702102338324264613628379476243754122969786509425444725576325781027140066964089023790292891876331352393285001370386695304261889280274262043056322796927733119572711356326685350484589411334123538058781520196877872573359539914258371620972518600167848136853804940166949001046871343046124149316149555200621260500187812862150026333455832936133319251080100944562462138196424435420637124060278270301200807655723626316279314677989720701526760643271100348145148124820564605091911779855169535418882307665289900355017573800822546237397396616805582194694056466899912723329771183008166619132092740342879643527581402206500436271851742975104495236263710329645094452343102310844177958838929699065716898974352408381283451421410089914102753296005962431058406067303947323833242313152680641247938380343115958860199956778403253209323348645070739497071952928327376353617380302386451510499726403590049039220125741769453186556766459550919922603305625386150812873799214104365798370292908598658060494523919882837028108696230018764525326479800889430827403509641329404504108584175416299778457550149516420306914056180810908889377149438217925739822836731498632998974190671944437651733816831832102819701452336948218481443109835371939006988086201718924066189320116586181314358289815550824203560990687366887222969587068618783822844334383574224286655847585666103020816988760101669647856537819653647348642372860462072094399934119806713804526340303858796726062832597308487962786568628209393365116177313500258916696602298504935899488231886983956122931761650910471751605728341369214793135444893690581825560582275170663803345907902656817500959962305071703161844221586272436733043463590790972533783408461905472360665984339275927320721268991984362793905235237928358401214308908599626975869024433459897721710178957512745942114341723971665941816834394308329806825884356070709685761638881841811423881417063972638317949761209293108884169157244310554120522091867059525129565074635172821024753666469843554970503238670636464476697226613787178875812109508162171406085559173637604564435642338746751084270357452547638347056148137732031656248286326291618903398185758507933313960978162364875292581607458217158798787916676003226916398811579605403809873107421485543087852003080885632791018542669430381491298441535109732809291308440227122322919323520142248717203062944396531767516101348669545805257723994808980312479264837725492136882355862941108451810186385271944727323937476421051113190387402775727960536639091788137833258176311969569961943551611853786770670960071652604792541940305956411115347733415222667549394453865233071674925052111317188727005402659672862870124353044134138940763586559553241714723475928344653659170671048092842027797901483049343811224941954463977298856433740106969036666079845988063391903825032855950193013788243789490182350376071702678007109765795706678377357340602031572982332824123773826221420577356000773691991307382149359100536109508425616929397580550980381697733400694828091467008203408893560621735626409474184799062207420684997475127497499271462600004670205579497645152495972389782480775949584706612600406180867943792941868858006175201936307008047616757589672523735789473093905193759863364945186628110590148829061593580057092925835363208545182849585868221368570360897560213869098865474255930740671657540215219483723251702391679084671148858456387364281103663462079699683913175189821329916045361853985054542513239589981629807348515391518514157410480876717317086568995965776721883816029400496479881361209069153709752129572198334892249502748191465310837081561861610032985534309285339681126580547626611304860810381677502832262489332934346926301205586228829998320869739620904253982155600321208706995102261899336727019317570934776614228279624359270351092121785581627705454815208145814747270980169200427592287264446298455337451867154675225312599671885696403119745068812877999940157697775260282173718338630223097905166067171605705202669147542203111329964484204150252769374041699642264247344682780556183768647043088086067328086717187740722470761010716276890826844033820289730485347275758989422619495961781370981845507287224106646612891699787304991489991450237892608587094959507431025121524157532996055387813931382902218941327406937104535120623519125622928074921413343511233341463048114587623180196119633871033128642353961758736942162376474650866446500486254254052378915783117942846877531394483736296707763850427149576406806692201719207270711640436539293214966734241103817572475879693972994529271225318511005262619518630808170022848370992692989178376091827819432746605823278836088860098280229785555789098175025591438486997677754831517943543494195444780421155712600231315338591816992539029327290383750279259408507030866894281949592643856951856970260492648859191372445722757560829643128598473999963495915365217562729260899176033339914368657427490270587754614627221314473523385599772728811860813438436363568535104917622395452899623639754284218650275206353695145264760567105459178562491882032831507849731082780751290549815090526014153248389638366562779197588704003763886554458980922773564631738946671358670002437792609926532640853858166371833689910006342371227521888985462256616595134913448753896321572610914451983732905554764025205460856114907835462908762361867725808829101494129427887010484807824575634192790958596192835856035642229775443466803753619433447559913956011510527564464490362903893004175699539657818550413774129471722988670400259357614877806334270973688298172787849219764510531270431348031231230366988119457069574129982095326123736732280724513806554712464556176030636815599985296475879329526942793809334154537286409720616279737748877805830625972559290659320870467177007699656878854930950374408662534796671508779289654115928497876570228294960433889385643701335793908755514074473749964759488535101951927148371376246782141759279753146527867175256859600371220723263087493647651934107824747038684956089218459994098442077055339542213286639575013424597339692639209982667429839922996745194919443742101455841754629560994904267305390310619195510596711795233359996984129886409644969307626193230100243445176341224116774838302230433293550887983785529668376917774923810049977020766265752226119147869678480128953266773825987624533026602499804124858105127910152228288680919984865137490347059505127939634012785058380116016158201512139929087364709693014634031763687342662706605079791983804043837557045973734575431521833043317763655587404678815578341748648519218701877257148921016285162472607623283323249556573753034374795565710904057626708068152251494257423269988884212986826103841847235290434753139713588793284927733100788323782464581521308771041340355123219181562733669769963813626654980259896667571531426558561083021853772568029181635433012078770849834446674149991209906653073314199262005928322117392615818629566430413616987317922057832297584265671398209566291140412705971275976266486649851786135002249020062965980087138574535447132363958635609925366757622786251073626356537120620726163351028366500669047752276806994698670175421508941444055686927449826465211114309355867990655881671257209904683585254426503206543491199687267119577128778582396178926678946290201534745035364519018795390246746811766723584255073984715970376061829082762752016704470773798620997166862372135899943680412430608608549449361762094538339329299440793971638832722944360033468293012144165093312313114839006029476318874961592758500904627465226488109581697907382066846687530136534632837946481815741937620620154295350284380932563345904144633726510177800611951790431250878298814044606538474701064227373555412349001233072133083235347487459787376279403703807888154514448002202951245397248869293062600560134295500105008538576207064629412523316530627112626565186270777090318018659291403078286535004079092813364057772695524445708298445548622123608796436695854008220295952906804796979613002284502190226292523908476214322919392774132723010892233879221455324852691358984021386299602980995708394090452538155116048679915227979809152112372669411580872195011069091512211098837265014358497390191374862378298332979828589280675262431318918898318225215446376722107524363251975033827569456312898080064881381141772242054225493451609900958323016634712370823083984626439009976816172490877077263224311036942854664827302424290250141379316709351675690520061130683735321311996496187247021962293994184343787870574057794627801215642399757391689423643087425702078241032082171429850853657783936393491748921202257137973536585938902448803265913705675751505623829853836767351048275120136814974429359820277661179090491547020218952518317240856799497902090061811729297871492235273099451994560780849999017077268810932708025581118347013333023449244901948116998051103180964193421409328454794534892399934923614215588057091032039363419930676743779898364001040849687155406279816603303339546771517073573996877517822995705129876831722490952428194724842099930819145094619254525540759400392691443317175946185255495513754986746278892496030387565394365588879946177842768690923727638413659745835806393996818031833024802300235446835796085570745553032228525815450531967652475109305456596317989530038989405999117072923810555284059845086948523349452739911967441605727895585516463617479813514316281381343200540684480647554584918667587044879862223471871709991329936110666394849738825285286263958437079344497666129723469849274424451217808101012327262154782486868475696579972204483320055712556519479118501769492253109282648803982799956007070413969057766641895108542980107519788443327966941933926975271423626274088356029953637857404994029785121788713172223066847502903458085949291823486875993171596694026412513484348659991282842807440540512919421580435830982886747148859097314781713081716943137837514388166635564093209988083853631966764152001236937201021272205337526464980001923248970935051413391014325982735295720169702781387326630373314301750994939700432204266441734849243617137063200743900861763556953331088533375662647974513214949950360582587461449318953013746171392411021921268719401083870455409243782703438717812520258803044022398736843362885510789738025682748439023460396397947226212022325837892155810227799539254487217780142395057860256227526753652355653439544898392544874518721260751136602267606533517775781758994893256983747903520154900084664232199826595227499066488170533660614570516974168882282194703476740231831764399346962406995812197194307712384356275327126581811963829857081764545583491933201665655011341750864389214260118093942175688349922926371415338795911538883608650663492494285079393689588623801351274317524162255546872032205137602055977698588526953067919577657802157230724010580762546282119676770146073279290190567417587379003247680752947289021207629278566655115192835788767007491592173561216460960732338187214850961468821550647703718319006714895171928841330718580062654702438419600965779600185378625085906358134551760230035403561105143710833508540322391028617424456041890440768192600260326521458091222064446938238524580192166531189004653013760970323476986163112729146041847368155310536930201842388100514907989986285028152232579121250243087183900990150304104081116859121286448239243348357354426439332087091013606470363706785376906184268755539296047766065167508797445567080041967876599818349026917276210630616917313061541554664359090008971749776374922888008224470479856127371383520079697079481864438879042548335953589849253380664920899400066389165030020576281747877494368823642902286149859757979430259416772186621524014692936483589683321666232231917198657382422968512537393374246432506459315712945887280161525313402564412785562279688402776014658097920177207595566191984505720566032171980817248093432499471573407422741267535537792190907867772310470192246974486242409294991646564339659296311172821487691415387361518368358002232126427175348186260983285915013630462489800994709039714768490653776139921591148425560513222581914691269099627882433950238366744049435126864696551517102338574990439051014288641107331775276925590557112123848552944123712559927798767656060604001870745831020943534367217710806627918743824819528778901432361132400874522503036881964803363227725213671319249255588338379558944373081448848288914340029381563870874199421074704225053940653263054076372331153673021564933861085136777463657122583608153245145603654759564012552343708794221112376282396672216677067893583529685387362866085958575144207549201885063634649664356022770450599025073193635589697904649689742659731140870664049705909529992131119908451169523625982480852065130458048303330783267873632661502527296193654564481985949017941867590637521370248661759842942985486580506523527905415291993129997589693562083571993824525692390012764335534053818968643292421277387911598443675823895632044862101929611888494601135784807263444029447043613253239718910969875605613576775133853633741165480175557199106843404370509722920321859723309901527892004815816154454240322704330590162893392597841258761159890728628197646144967822207646701728736399384331473403587477868423279416635027533248541770967263778198842567490190381802603584303232553124123738656775047738687142923133780711030685516297965124193566037052352262354539607323266508361484876586175823446779222126520889533051136757982925713629289751952089225590370193731715841445105382621870755409206256938181565226769507387707852521144122034388075830457994525416533663962455970297774911851804521911035459353309532169948020448427333167113803415885128164774439258952605402088109777145211067039266101515402978544740570697381766558881546774239387495303310021282368800400514079555621371851412626774730245176141487171901398964327496365698995566554278753549639947813610318041843322486236707793661756645237618569985152051174050866426218945874684052954853332216442206370490833124972712199887443585954028942543566576436008194402325554516608853398435525073932650524074286205850550540531543625550602818516054893310255606074691613285654709269754001340023163558376144694499945698271995324998769772391227717778525548481765287382012664202138451078614644891981447633443984616961062704113987629899385435093671888725031427992000013446048294556079409188916356329263861385119483041778470111323934672117382552154014552689712635622044067335585091419078549572685722517799853945139066113116557823200991839478980485148139756437276310315585052962711094520823502876017799162004452308825294752903780143322159163359216776682795639765675024359141047188281889450388835463485151185055730257857244956639772765885901407478608833348764219975332660938410968229409406088016572970425472041832771272378171279797797035736576275270098485254500981153781872753941048954786738308270916748413503252625251966120660459010356765817802826429045068657112315950170987790686087303575594630278186797170965451147353365942405760693758157024450678772714436915222715682621542648328393696771847903632197735143219253117775874065572827559278669061592703292357856712182245702829796197056320474383079124060345835424419150979181507698302000007069045583234865337926621992623375749971204642446990777626632490383499047710478578862245179305716165431024544308084192556089479503354600043311566543487429471050399741986074927517309966574629189828300270254631391989455006206141157242311958987861149970781306061082396476609746044799676946433313570016028171027821734752039087742788832856846639871795304172840764319177762201671679871703331176399614205812745806594113056822213610394374595550171039503669220580872124167464169590577829197969856928840564473147431728291951743418213909020891248139717532829309139307324676418134145138999363155157666822088563424974605011214474234561958644068385566981590500191642959522021800166068563481044756233678800379514457696678176805627254751999892080533501886765304008355851853948156310423934798610892860385518158372125742586604990037334390212148772332920836540413171820995316460503362722328438872099507648776358269375088834055987113695732969353422819649914493670628253189886707685826733188098490064699162769196462197178091601033240633742092060902726567598519786428036312494443148817711021658763571536644924743944370048324568741512735789195923635121797799038653592749525637165000255493407622344594232313502271601912269778165783446812278845417457586538145675618091493526724848167114864548061108275777820993568273138069570417876796279053044809083376787522011494624546074909061660691640637286419682093499212330107661282280374851441004473097968359669954161836104289719705649964194654369452812111646977860340985060266188051868138264924697766217093257796481229661635130361603763575209317631745373236794727193007345895568742625048392643535752017720886976385547006530147162370985119567662827452345951611661122285345274467812187128152772828198044470287829483436630828621443834283933061869973426636841662503174938088958731532564136006533111241497517080811026547277241069801619368046197038254330917315025484354794049944205979487352155731523443985515670321446995279071915493012622438463701624086676046991036641665468428667863243481438144104997475129384407937791753089800722213988580814506420181828434464111345849729424096408245260118164415180606108341818909452188841412079787980645835501934806620697807291698253154706727593807361760609508840206608172948784237440941360116633737918646533724288158512019153861656684310632599855068395383404299612799388078946939439804726113661786432879308541638420957312446608450673637732399682300434221464859925923221506390466698969039225502809581860888180763430173987356554433665298962587119505406649522644887130093859157162141940270620429317071422670076888270015287432039353142292463201458311748039953024013036300157681289307831534247803967378524151269240623018079511894898426335179627535676928729840275620799295814291986056942345428344453545269535794124327345707388409443474582974771283667398460633838739913858003572434702047552352950879994724952355013458855725485470732726133558254542140241633844025957105365419313572521406256164016462372080325523482769734126885228449084718164714605387688663314237773503394896942177771487500288657934065953470677148012467516329412866843212947650541393396631386347555804426102036080289255754843634434329602817459750576423199736486570021428392611373877893467131270574799604435726228651959220155729187266319233386485777943988660811844393451428256717646755716254300083904773522205309371240685190676214538753207966844645134821197918259003182495235479846985293701759492154378658914612708682142567444147095497018617281359110902117920725531122469148975703268958203323016883831569236133529003603833362202853118400173131984771412931859271574480640448580883928197270433178482028973090531595725903261739123015610187695736065475604480716148290769317072346477291109395091443012208320879788331725598789382708448112357055474285327626461197894056314208119696290296871946392825764203702558293596084592330063422640815063526516709219894586212199245909945107086110527318146202939164664570138496089256131319667582023030903220338472809679989900075966190134720802260549733743988009810716784814967132808315697037229066016638783617803049541403814297797063504097571959601223859618220236460435365468876273616964977582199141192717139286886479366882946601855885523540939542911001721165181303035250295757804176416487538695267810352135675174637329741832437202038317518501153696331084859275436546896784758870744418504221637131581695470043451607111498383586197039434557677809493753161844551986777183528706928317708570047213682844575429346154967850073774018951110599706445779164048664056208523721691779348621942136050587382152008824636852587867072370504325971481960878918898595254980293982721591693440821999279481942233518649498707717083882102011010920568111932250810913249902342481472764561569756057047564387676395955386968088987048250789547613391325196480282398866643140635374540815498886375692701566620478926327386180090314769809070586546850483645016414930149011180928072625396135675547919261758488905962683028189154974348858839670607559911538799594215181566419664461648293512903197378392772465968575275924040207070331647259700136865792916743805636460060225022009555911506758744722703329764833376608884035244776681807079272059851958248969103955274321981361055653095030882610383596652083951976626946931369787729556364440715932097751242497500001584071338920490837692185167860605115070019549822090122604643634410262326319800746320962802835287034390354111115865790874939042813949509988832911268012219132145696181195882383952958868481795589403551825711445660055304159790661413008365913113607195310961659663716376009165695349750905934408643499052196577976419823962941950712959992212234788580725813670158180525202141811656107580848620353789727923453309609949287741837902512599149154339176262431563817727378679677652789586189907215092360394745291315315178280769752824178866136127120364844360843686570666924377391665188451950415163418019008550860833335991205615992745172384110734413150392823334652249716284396986055940980014856009188306532585605420519999060408247632994088479770891700298117903439944095625163759805013608980060771557434355471774895250923968185127614872473437277089861855286234820208542123288985527978805250685814884921559427896393702833660533784695823628880970072319349073259978716833968468179590572694799891627034479004070759376277217793391752209577997711609243576249426419043330333248714674522314937604818018967788378992728856961524893134453753720792091904689980700491208047979392621587263636601034393317517058140153695430456108047489091988799433658727319727603208464797159018320689274278962431580710268611873345082042650017311093587316737506047072564104601699540422208265285367519250051097876841814985282642872180071842394128862870024131550427158424470800953331106953095712690997421000768047945089087663231635404628237322206056194051230418812268915485268026095537420507465353167347945777910402999486556725081524841236691353551068809229611287678981310879402131425967814033549233559647486789458759659524816156257785428046357885788728798334726449873717622126595441912361442030013584241365584775303418366701542287195829230746483209292971621640713714120962019145289378780969314257595128370406067557489678645404458053687082712789287239312499629853769537574070273969474157449684007131644293612697622540605642045541405898737405461999281923424705046372116343888909788638977762339671372562117660223660695670784812600612056762192717861277640703396725012445752647660972755926419081291679166524667260979795012933256505922882790031660146080407763031478392867425713264775858816101821915969759500481246145397674060323709892952582602767900235601067846724543572473980966420366855192885879180614548283832841466665075996354149725301338358519169323717267254062579184541615446217563552842801325876467818631048968727579042055430766829056006240108948018339677305715364169866474021158726443045415282083577876330771922441471903310208177751083536690365995902758865071635759854772834694926455251271950341529608500788151798625090215572084029028380951507817448298079939298183520695590038747651635996543349440728664825713158380373219558529466057128032322906043454271320772921500287417319365976168419625624605115776262120980985923226829065963505843252914585540909170419599634277050723038933433924966297553342377580579351310874515911272119419209407790850494402102776888845698141493104421164929231199034729805606023201679897060290278578720809957791951623105561111133441647850732477421840889254450727982538571816636875200828789909673369478549612505123453026030215697838939324904100215648041600048460039211128583146953718878628701163065895128903772760366897751078368367149449860760323482919313636639333077112532263506484449628903562140910917184883359776685061477491947729628529940226933346422619715834114167408979784271108750432262839890447106483996662801874672678069833459187503127812301867619501888954744651596042888493821496812330875953213277829557379428092928030401078060596211030759341486094758152719531736557706698181800703577011933959623488542790769609795754171725493159747905511760096118476672312212214368328427513637719899441014615290328882809796585736312071114005119700172543463579423776006423420286785176042602478265390069956838609562249314263338461011350408175605961013927967017552360420813070363697740897703263694257754856012654337464403965817533944829983303847137943128996206061949794495555772350381966455640399658960314931510072397034602157188468414498235332005390066923861865352437171408532901795023023963305004538478595986842966576827375616876814560462321033161451137536544148847560393613737181536328819284288283654494839769934062928897803037442335381073377792138665249528844845017487627988924712134129833878665284628767176241405461020337739105966169340002371434437030992017569093264600981712234552096820682678182956004241998659956895146005707847390853503811705773368682511571235504699508351848211408274201762880277944793124322084314104623005572039931534794296111644783972369615224022661119722029047041665683970708585749056976393919847203913389066146411665473936057926195115695695372679013803092665461271109469924054694941918792327473598367085225448873229547450901639248463592556312744455603370397515050475356724383915330376573631292372402745732770801947701519132781347983632063172159675682339097266427478373480515275484903594400622175573994679551026905871042323165045382475029142779227145853127831067763040180729594761438319420585431546444900131105212053283280444109163920317054623845778114784577652681377523891236283117469043861099922393013973145606449737426020400959335723260763918132824769576181564972959353534565137763089779652100094511330446364797507184259503543793453450700361208294282937345258864388186370815590043966329954654849125677177327740604000767897331162108194915690616287252972595860248117617268977717440000074061968313794506703892623292525804480259861766805425912512279877433662083855611776315705013366749522257941448775139795054547860959739810400803175328510521654357751870807142781191563107709530016678215888193691287437297082541468231278653445347712336543897189813930534546163421054102145489580924669226658179842336331091598641340097439471837720432580138626610040040257095582924562504785423881749020155620716033485839761416339278967015865325282388487004257267088252026526083144317305666263332820011765688760660248950414043569433347527093520428825842731654779513418611057685506312236998762941492403138134130278628895223957785888951153773377278219125362017598290832241727107181732628628969099360075180094934523410329138135442828417419667660450020302725791226991835309309904350519775277169896695751012666612484996123705824658061230636549341946353772353847256502559299230059708672205806258078192365971229407426411100522203370801883360978801045660422495415498395392435169201553938998447359782907217478259097827470124954127685902024144358350312650572612101443964768748398651928890056650901122614041238234484827589365452085753800901291898609505330030279920549391725529609085950104393364051410163218270357861744280293822046879547215661467548620526839159988042187655020925238897459763039384102623956395291728187832665657676191301309167658030267202643710625509623416068746532059528983901144863435882231708345398017370764455523600539902232933592756840568086521273281265548544166869155189217769253547646162274698681904982234866298619169147606728419531849753765787033118972568320216833418202898103877938830638735413399030740564216566952884545843561312568965256410100307415769201396847369236405710036800927520184308720379877462570422389272530968336374888153750668030474213183276584156135282037084306452805350387567036817741427086657772348793596448591205056211475960654991794579079509727749744145381046319701859330950696301434310162412623394533581040768155023230373375367951934091941241165048796250062129299057998101829846308428031549873308933439874652060342146147487112567741122821920746044030465493346166046949934759667809163747600240109859253313224534523318272414115305989077622667597620194386096109434183389241552231538271746064990361981994758480643400109172872094736135632452901332851948137971314553706055023957966448686966821991071157048343122334001260237583112954121317179044296283918200831396802298468845835281830105166394193289527823526663377548771320675672435904302829506965065381751997283437772160841249722003409268884062102256196782344983409233009570294135858257059097270907739258344911489341204245278111169086281184455973633769673687311268585203110806661036758146943995527693971279945008388466314779754691489727612537392064606860749506761615404385929028920080939532208104450150030102765923748624515319131703319720895752546614973524876482149732609293236236247273777247682281412717649106363575287531179493828389605764658808933368078871183171217047349880988574824325448372362610802218446169817070746575905701523040744440387553885188323723297560118413455086687428020491756241547694681510237054642664561138533959873257613324391861408301343062755145453231896143425698238618820153199341060086040582767420305271235520616347786529138839814469999702896131238637423238457679536703133536334614066610801078208632267460386521332681908693272437495162368891180048919544538231408211021882239835055241719820614932102560630354408793308986702893896750522314290296683540293827484505905300023101114992678464105412926567451101220289034894056181353733141385555104182626617264287068129416704930481819217760443171667541407462632641111979636261208100709624085412270249731273141538595684501410362538480004359104643319518414061525957275846423061937152965946901155002156142045064539496986370236697651210737114979925333838233483192299783546734471866931551536263459780264970260754449708918898646840741976940696392398098349093164620481102695289878324157316315265067700879853313949779009728011413535569426979582389581110912157244737931259265697284970217655135182755148621789122423740790275289578800695567912194172232381437001835055296422752802918477505980017007907830328996730968596231403288779932382828401789209564023214626352152557846773852252722874386407429775877571315794193926987712301114758359459503977627104506796335065315210696845619852741005843152072857586021494712277348477454941140247292113886806982524284931523693052325966127425300967746893055139725681250453767381048254515620100529385732505537575705833592952363980135107610728887764666569723973048108451266554589176904835207707227061181003264797909809603964010740136778165330131636080406736628862983444586970582772349185817537741391488455814718914037828201228379025106991928961877954472191162771803243900838963413363540922360099635689809501854005721083471139343422463302132347161478224568573755012232757654186967083217823591384926492065733104917127987001845373958949362819097899361570859947150307057739759117086549735298283819946900303841606500062502318918356952336582639401806122557399912051397857458771314546873219089182093197569434149084560114632323348457092797433851092597638983214843267901257463663134781314617308650305690845449700988250818658679957942716416638441577123155235542071894931406458086716314074927818884112642886658753625509830302008526793083053660843091515069802823880052816971852890353005110913111226709140643938928883849361969638411929899250818485685497351413304912979628343794926690672319498774771835144880126905945243021432825265901074072219675205421551379944471783809347780511228363292693403155051134265892661797569449245517472868660920599174127187787266072773703505077452795402984339284890109683702584921296131737245478223242813633895009345139605954330605487395849639794196025882962585218410041041429164367732771713486946842899444326395469338024741363056416431094423601582895344849458557569072143815600281853202226854482541926313966220609663653863085267317512426610902406967587585145668827935607177770167562516200765317627419446873064701802764040551347065283472151903752719308428159105984289801003877027690073436219093706923712506639592307178568316033439073153303229391098307418523745556949162370839618754825331714657520945252013875481051845919728709239722269244770125576684572285165138692025972298962448488064282487593614865073188125074142887636760634331369470666365999529301391916359895775328977931402715320155854718004339702657310779570651367343411980684708960460486854085813610752944735823372229719711477975083318919444329411604351499806575223073087721623022082458857799250279934773245731569510756715017313617596479814682740942606042680619141077209118785093772744481092324182153082120461148314509548822990848713228383587947163388561905319606931240687609278063872344362746752319253909833481608694446649396658474584472355022720916237042652989203977511744555535046390355716747577476430768291790028136110008828218535184055926064540415942043081374080942301716267577776825913761241698826441242707207132111082549055297779800869982368478064129006255786388275389167279944085935618049212708094398002773133828203282452806125310544290636953095062867364164973356884934487769366520655412414671998178217851002471623636416831521977100539461389358348201695611378431285352130979354332581354421771886107996693593322598686163173091956900566100319732711910014276847848482784607549460708071287982503797286563627735864685203387781411711447488662580506919074616983249559689439820043740266093359451795279470837398893812510457712164918416267341168526716387812302708234976506100956892054099586007977404466522826031043604785853756197203659574797542326864743641930696275983938639039383976918529453645314080185326049716458396631545041942484131324627562348361695524825293457752765911242135039196794110091975825747570795386505568799966389696249682246280342966618524092015699346105263218024163990791087132083482297903130763979613473913387176208922928712094682675515949616267443388284705478374658029384543881572979624256705070684391120324441805258828422852509250787864822604748651961772908816194380783959811159097025994482453404926919796944922483742026319123452985413278017571278566886309150358857124522190490885881345265863704746228263588956571919236644608937090368268874303754973376288862484085353465640115041462926017035394130089878665138771334776409467909158695157752579971217718909443837122861551887220981191484052592382920068292711250569816439601772572259768012623447983369317370268885112258821014795706180517495609583877032038048223764780202857829613900087634097949867241477820722398981112549887784310561560787017925696945478944574899189450789104776948969124427698064774021771308210774498675118083848377140246948789789200127922544042988206918987941080213229730827690255539103739275582043076502307615545309193623059515142968291118529600993950169553663464472074240224949614572614109928901068324130068211147114566598653975234575260644389185930565044366393116001108968881017090742771477265223806396303581603252017467829710954822985343413521574441176308265778385626082663160908651082450850219494390316261203030852320657614703993356424039212793921477017152023812702975090180642248767216176787186820146640075049858959179489141898945811981166766767170808958417303432764811446543595418634015844195047934691554050223561608312574096058566460662719383507164351661101386660993035073313069955716804706013822525515533056761110682353978362144060302654190404145577230935702804278403687876413224776226002198161508963623553291372473425796690649269790459891949449662734434497162619543058824618041217236890350648441493035341339677722497236966734545138008331189365802094164092973437751412787668677178386372246386901815475375282245813809318446288294605920682942075072774629822880638169371477662359989082379276962773285629649665570212988295554230364047191993415244940920604530986966933515031262488004170410349415695604383630856473825495652469190529276541843602095979249080866386859816410557433030131120597006919307418842721380676606492045017393675143982663469887726869561867405220787200566946232894314890798822098147226028444874947376198263353641501588628128443875786381112926797179439990922916825839092357124168749174656866448968685552166470253991097450460836745665776472567072345311249003579071254220431847829346190277916865241513339550320580978949242251407171309508801142462524615167545251923953553812812796260665256935971137006909979688518557390466617284338472954227671934777936276788589891063819758889652011751278052432598139972244722591673113941914651135780718062103411861458368484552768493818792461621795938862063507451763056325760717280557051015665570040719485293645791748867210332743309567807945264041911552088112683723606891810553846521465344581837340337575816983786603970147034983592476490445618714709223745252830335030049582105783537791929412139077666889615999658819848049169039429437562782426105040077835870008683383707489836861848947846519033195580928067520781916779357919581684434751406228043820330757395441949923732785636347709074020264905031104602407841853676929169108066940640934182483936811287487300187931038293402458787582994845693268663457343886526115370317989144981530950100566693608492368194385097064324657539024043053941959974602378726196174219543946708813954653192301733919067704673869912462150060977427632515602398636678171393136327767037299342951693778873671329147637095788215580934326288840911910852018852545035243020530629293621139561443932574144697089598068829122935731776730489045717358325562473156966942186455302127002114022039974608747779644709489115244797796589906384418770997189567851284837589695124739467392960938675720763779185299900011086163519213780957046726615385324925492817408567133339731588076377367093080077926628622522134161015406886491016458182682593162761762379998002418582226999896385410590275161171583552341286538648885208081413890952551752752797152221884999513693097781447598139937479799584372915499176297136232836731630374010313502043942856037083079284572855603421118286922603912225520993199838422159918448395641159089305976756705607255697017154184132277599592427392938983213868915348765539995943077594858133294717775720439621772454892132175003496794944803486399576292334316087142198570183000261767196592083498937714834808242405965785655310308867240264750725084240104837398367051824521123066238391904852929941093000718163245431136851931524669736901982562996216814232339219187517362249544143838108073634560101557169614027499080920897378574498357297870125151949273252611161270439044500436215339165600634590130638837538406159637912104127317075279667888957046588281010056971189276119613442952242095845370940420408785438221448450917300404499485015618821325815982156305406684467854915034867591295681736123801644123903472484880982695945490420745637844789016272486813545684665580677166106400066529378041174791179705123454191196373928042558220338091435619540304355802434014630796745807381153118372758265098581751614693253118459658201085261240929239816470742412216818546733542986999607169421929800394326943465975730067446356260970304813476771890576978631310520918610986809549213489461855270160970352221518582845449240776827108303819094494349973652345765519749649310958102444092065522056161957615174661219101969136249516408701120946402626071662270491861796002047372616649580878748688354792295293871534443385552049753198229230272437336753678022532393043874055184367911111756841551329365459321352608483315813334374337310568596237612671310603149703958105283852010022577250217733701047198419667300512304972779175103484703105288038490648270726239725182927861156936432252693896147533649924016941277794467332256579075124762539427709667169335313670086668318029176967310803557640237231328476703794053310311820101309395685542141383864830782211759227453232247222599993480652705495692598122075926249149059025080339063266945367639035599443590872363729278907201041022180650203892026357573097811468229412919246771523165703253446140387755383761517408100583680263192942088900969832791145099411098175243011028495152388183916902688052544899401372205613020195513891997531637831222041877674524454439472945945212254095374591974227370351556447699278732972179879420749801974327671114047748851166038416940672866245738532130035162815316105688928284265191769628703870398388478524535797061411200689742531616776934946758693566097915215363781852121921266589221146009676114370113880990427548952197197793587964394675135785553969275488255012991794910026117762758243938305646893882803367448467823194897238658298949353783762585384450212168523959099319015548041035269244644024724153384295951342588169331291340066513552922950611042664665784552557527329526991222642332215088273248516866665361603520835955238201517248244853520194287825971728930306223831381541107286874995748916814798772743186221871346550267849457341258409383121259355173215564802573398512742704407407353903309711766205739603005850572880227927179705863585546462587859618635376158672896533233699549913407067756479576671402085350179079209249233543131557488175982125732060048551988337610948620176856392229720122234214910003609592928397806655297646929652255915926843451405045566792524234905885047768125291074726237865711707059430190638416289880363751650390879052030444196453432195347346546471973595196025067314493203517091225798046431962802290239671550536465115332623149980169153056475053547607860207391885581969225821190724446164347656307844194594110576792306538361726391459536687379047485098306982872205684718711398869858317294785706246042607703321866399929168556274085551900157149582074858798858927963962886642316870029583741380775822184803732565395060022164330511870278833384757665789177983496628191962352707765946493535189857347970687549875458419045145213049730996897937959794156202605143810611598713734230136901890281412728525398320287477523443561838173293818292316049345833632539136167226924039140406480460644135895289197019166310421168967015930147894946958187321911099505281897711988711986440711206781762152755466176871831112451052660929435148527879081317378330218707839157868046840119670787750254465819236549430724723180882781380800498009997681913741209779008348640190124094824911594977145019009747796649127544460467428600868260071783252436776499503307448874271267037441639349631669659614339079901183854967640661714971402324716688608371364540073251883464247008581361272298946073942177695211713468753824764056219306029960615714963478676063271289460377364780779908789119694374694948721756119137458611220931626554435268407506342063623259853423754193831196822960510641939047408041517463239276398036147791768823711124554469403650924174273895189888261773301296597176093238168673898602284494223265973033503023529023169812999040854518427316573312766087472511745078594697118939720977713302594750217872938788577622688281692810911636801747417784941249725383961109844305428477014392159551331431076168788988569290084440324079103589355431543999281199292075106877733449820167248665228704540250235452159420892950731047234328569696921783329007157636061574786939467398213664407458777725098055171191943136064714165161316072512894042066104560945492786017799288070461971906640229475346422951137664902689538880023720233208657917884402752519306741337770701896574672161185533453422328642339907867753444909885936388031154743698567644292878171602323173273194876934667058056987393758751001171478861250884636993226549158207023070147724477550431365239144561160487466568984511452077444385275342682659058686754277070638882719331385445448903571853607535211471856374412735709013764283377436284460290231937342006032339701827707922817442089847588744750494996349517641320120671806850677834301397403339936324196914179019238540804491813927635863888947846261154343056708076375323933598767814935726758167789515936496642310804474947475865687661340840217148070121244073595708069268852618981241845239625501954372889470019480473741407998604411900951037029193441263418405020994094303361480076149295100962624745446550467217847414473500041749715164653532302920687277804823616802221784964851015064347929101622179630648327637687380603612754752974970029149053744377497534328571746960809258496336943458129317117108749110943530231269560651773367664239430832362186295189004611440592803547913033137146900023343642270506956296218655251529600728827340284662917217550133975294701804836435603468062751800831292702336291596085862177615293016738724534504884272841122349359660602202190360922370551132725799910004522848934386417702739100885687810909977641047143363695788010064393522909865656672138344979003352840989665576735791189768139643655400593235417439345892545613635058062893557581403178518529678550854034011830876857075004332710375269005275398156726238886594609684164522894656666643117415552255406921470418708233253877054918082927050214470427530282060399553781104384375329931827341236247969602131021426032878342743245861195045306133939322074780233254643933422730663181976488755094378227681335718503138551807719931614750344541719384731755237076027863556146460738410843506758494102586700860138868618715321908492007126865589707875689858105219292094170543344099565493690834388075882098724877634249396705111127634773665575252350634275462563176731500256038365869233021602990256900032352927488655490124416903452271837447299576242220639010907061858064097277856086727174377391537703531304601984931766854839949112775796533738980020917645130808081778526229854568799545636474153830960355056110667221970651174118436424704955422926114611808924206118633986104009778463930878802091271348693806759042132848977432544907839407229894124083874975784340941411789865437199229987857679079972812278866111383228117434403231935742412951943355777337320738797039792870381403337389249836994358066884293071110536418096095489031736481868834142904129262251299674149240088681775282677536767206682131494660086697105301879195912692669752737013459414707875332326832316805520209926198362044238796117915453474668621065495507685425295760656476351263333253557053579391889347869918730826586903927618911562012746134707451077209085361192437234954620077993720817707292652708920276099798204463859903235184577063288658339775658030543696920328358660586443711471963490741241704808567130613058265648429056733041283618448067490882859963365870952030401758438815166830096400653200589361857914073145024511257892789282012220366162507932778645783796644097201418760841458244803535271505188446325364600228373038329001148344983727415780410763608177474534085659766722855438779553141472201463883660140533273604776967204250729068893701780448002308249402131898895961276065230462135625138814289282424482034365894100618732231319262029630825600077324878984657127034891232398030151880850241090275223242683618285738275138652335488836850092016887233957720005123868359875312327017035129899936666445612378536864845904651190457646440643419208135324042038936473647725455300569901618785250323245030220455885019543920298770089651967385349965131986410066329735724022730291043988913669457208725464761438891007894401376051232101305572947867492280324821625860898937283773095038586551924151489767910591860630091629894310383726671100588154173294223723532094395594361641772465744163614789556332071501898580910681585287558325199372423177803751934338469445772702432876660006353837836703326676911276499512012962582693758329854966142867564873486417870035100330795449024284598485149429540972856737011140039980827119239141453802229603530372324417112527376064694011108981738030056876113314966941924915704431558708610086023561762708054622649049338521931180300209671257547211129794234628485633664404045197995878735616750046586846414924027073838323950629857186400659775611342196592070598169552997720795851864641489120086666175562439645778515180160384529046359837419156435243229978218877327828099325455308008277836672418275750435346665325739671985506750834857577562045612641496395264482426347660689847274946791804353362366051874308617906390474552359039812115785633662445482431920223051425348154020780114779718873485466160750066983756633375027947280911825376031437610838390417455312417927418478813239767795436873710212137850412494991847465160047196051375938686881233218288388039855640742456557676359641088365920800229589580739998212276979988060059286433886029676374980065493978457898258899695626513870863967195189417628051186051143850527902484536697960050092080018734068164574345216950905142467408231172362206509108459790789900935688249765506819076585037292263329658400840334443703911651918318863206224084506177979352979979285550048957452854769917110802987647100565140080883702332581718307479417361622995966993017794884062651434505397196069395116054966387078372208286495937249742717634708016775907594277259435004301089035868485896786714358190271668478971333623690298798338050336370164705382206735887598487705212548608557462124012177788808319104211003460062057906595584891542518494477419946177808481450736030647936524026490478748604770354459201268694152330901493672916895616887540284078399037382994770715721275703971619812251168155469894038647837135488907360139008313193339134501666772312541329083212102053108202297680534247758836007215220486139071741091128638505452260822036101738481918768120578834529930885032843468332338214627474749848240644896029175385104045688659856645221426062024389308831897432888911414414944316010763331281262581235973890151347909426838718615554968270002332886411059869219763135610736692850809498283104418349888858763568626218359772693675365334335478813100341812132988089348275392076257605274171608160729989915222663996382159687340262377596184844167241877430499467266696525961873922792118255327000888738216608308731076862754700201872012123299536865580913664556003609198864693989255054400782510467971752863106194886628216151529602069027034319849447481284632401402237915640524566126561377818427940870089696647162768112040175042203777960661383494935285891145967925288239477168587336692115864894200011358348022914538241180031723440081229178541616281104862485893862931314781580929099849929790025723663385256738050541378141257540675818027576504555692856993175194886865046922723986839223166952291510690890165099157192201938772180073744361395520795773414273656501934718321083650656676350516063046085473676585281605009155309372032971540546011226179858420919660100034986158006779424245268971529623483525659750103449182862259059710785618881444488273733830185781054259823531070834521256848926296318580901514461365294130225580731088689780519225535627633596308381077143519930759854675257282942009805297410267669201305522661882855813495497652520497056053749341782487262654372295554021810241157615877726221411357389852569916914983039078011639115242061369651371401013692164044884974391754028877524959096257867901994221198623002816636508756310729679857551117387731256752689642880393660681171598157168842922124970023435776343451437495070027872413143136382052730545706647770154682968890759108065134153342367104434332811695524280188861318426064822703530749854578337218868094306156272452304474994533083367209766079100311153501642596737484121665343039295709715162425462481765140610641555838017962917754230969231794114357430700387322717740738700586105183786602763547733814371035174551077017360266838442258888747614643313397379662416429156052575407391376193894937027042516265648175002807819642603937857799995239621182362330573252823250875082493043588960464387981115975753794299806069252212548430384332671093753746804835254281830285779599456875555812405004701236669125054076108557987921717995111107562970578244152387726255085686848362480641995183322918564509299994938762357299373267298403967538867641015301737963037778935533677014535475081011324338102251375453801006253492365919689556561806644926238039334003165876996374577216681658198479696434174576239983489285798119562279428430558802982138691171545290362097942755344284308392470149696692385008832170298237602126371562027732535865155136205379622116039954181782634415852155025443272581908624586124718784401841161075490255822610513885381104394407242095324645046737970945278053048720938057263899032107869608840684733339344162087061315569141541690358031957803785560435492216633041206749563324626493755605530361499281079517131761927349415342519441964635054465887408014195734522524559152447637762736882907199165483902875080669207754106332336256502832340626975864600210262400101441051902364927900090207197793645715907214990645793468082625989637516323092550321713708619296231930612607825968554907168407524424310608239531294860686660184589407429093110615079805651419178750377809588496473618838710537934025083717492051238501689615871861837795819859955137418083137190691464237122867857076941113699916940827867146546635155598183891552561999272509207582038186215300842416270615518293669136213077130202556885240270140233207568925519285405771849714349471020896876819018560735591774498811447805373682376709486718830434425059480764671062008087684322053388648762910271810955868607713741226069257158205406990492338283398598719259050095358273501618694951416638366242854951116180369522536621635584125214368967250494375705502954384661673054380970138541985618333307703413139071875739741609451613880135268595475819406443893674820007777916208203877574152238813569011666641007250697809462612754152291481878329339085734557254848138124936556185175334404245302932807118460919917012991472799316658902876636875604608849255271382448180701117467463509579827179311312155647669973918331820253398718845511467390114875450661531306595628856340586820203397692389477774363747053287232618196637648971073255115453659333031131019093837523754490397623506257940717326344758993739373009238759217149207727342988082941988655737337424383671105894614626266075399694177676862204501649525445460526198676572751698707949663525811638304723613463002135975787275725219470228977700513200757408099214966882862640139754551084791362693587493746696253240644150216789661628399342329702628214903408580361406044014865241815646434858794634740793744505042692975348467389001436204130244618877930798247365606706702153056279968717165902109591520761795948311965675398848465582109509788726131456674473360619242298493294306142893529140284629321460464139719168132403285421872814168793663610126392388471464309607701426225262223971884231211723241178528251170093721871534270061933311595498730543615131823936392577568967539517223475649003844997070368418613474674308765914208900631304862392751757847981277864004326705435717501130544568703269262181355349929067903403360424878045142937824589905520457189140714116930371407937881364516096680848055029622052790141508054303412531022029881056493817180956519513504013831135447586861323098418168321323757426239151245839501767790833857439105288430536520736402976318014980944312078301338747341912237683935233667387056271874000661136024717667617300205568593418411197402206628045098944517305843697594277739425160369909705027815638484482958311632383602361876126761221791635737974614019349604656322329612011064354929806407903660084039298666417004372296693731604322471838653582941761393122932124245459427083911147218652760745724866541400780804430839314587578113265531861843024870552342479925640847791089732550690026132077594543080636376137051201361452908792574156595525593276359496205983398608460565235736958415647552120820624337542814051703358253495253346020518449244995570377607785573434495947148424224572744751333165970865223005975038198457701646057586609251267367198979242242018515250637248688088871295146174992472816153707592002816226506493229697005533132193458466936497983217095620954670749188705355212240606036419133669480054626067267215568269605394789349499180845560667795288877079118365476136004044472585959458435736732884420822122890055697499620834968636670013561346785109748994354356515605620136568323207434115673380351968083658867696759771496500802578150156205511916453484276295580223652617612841420795331185687514955890841972539396331337316916351046072476706623699657385491293952910671198152781372078025150413035333790575059925316323076926234904691078439693919503812227253037319722474445107099146554139139585293136217432533683023927670384608882517657875687679367688826802695940687804841146418106685395001137486599604050942632173426026287127546531963762849816204839507096419762831052044956594159855004016940136789708720248178961350768270834378321868474677540495878377199733504049533538772454398417964054190556459785157395626879579992047816425017023482764979268964008018829532737403651620554211646915489164186182798316074919088977587575253262157720481892314821402725214316039005468056289053399124229893419377122172234826209868816665230233616502919564441257594581002453851979454393138900571698717665775892740867944879706667133985387529742552504368290666490233018000734096980479808073945050477005629620854568828395501105762860460748314986895073828914679474789748527513182033344638134277887902612963472901444517018438143417821376462657187420280605697389887995845254366288678659909456591066483923766921200942698991230878027491810036505479997723983042656597143100832318711397560932673606500607519587893898968006511950931308681524097327560388960449834255195599188432513217605952122193310060569405443670914525358791994638454429432326366615887989248283154920673603470580706613831867548250046983629614530832844894203115195024594470646988053908339618926329288307421635764352491973317395839783857928097959775462224577413155778815280270140280183489248197763398347358664975682943231645235787590879860390876066246240379451402426464566223188847688056924183288654691332901016380627219840395868061686735569710546245018166634138876378118656412460912988305033297231269719605327649849145386179128799275341959272146560632299549028810907091312356730423946815705261442498829696311632781749438332180642260451002539535926743011856879965684711808678271008917936930854554716587677417568858142399652272251496972961508077595477789735977166069206523904688265871486630416729839097194434388762595270762952480989071480850435073905871744681266533585665209763017293860317850306798448933509154741534217851834293717229819114541440577969862986380475729358654211570390196288226634588777383624005694618664604870482825275085166715081846966912011861668904757769629316542538464272966966702546856591634179170709790375852721660931710156886246555638054452364617443736259004578487317781662207444596091645029647595952532876958226373385749776121833977179892556808444531368422986141522654432213299872447682929801506860334099132784318954437215905328766159443181948841547946909751109178351160298054745607824597883460815700319418238597794230052904049854114762246201612608843569776717411765428764240033085327597705212634848400300748421128101784787599628399531772422652689523483453978463030948044199270373213609678688893993034604283598130447131074079839261197575844478543836718669148410596408518698649459932637590029734297837119733638416379734691214400231064602461058933789261762335312910074998462409709331485382264652492013791865251784211461623485811942971957458982269248373677379612275941200724619920657380899508626812125097502369559452314833258864413444720065537952020975396495991850901486731351518109598195687443139747651552324013557805886418933529947085566865372077889287252337948184687538937257038729540045045833436319085659052025791360048431816233635756387365413718971976625464688697596872128350645949087909756974073666125132452461233459265630928358888029908714397813123863792474307470691350937641561754523107565386801177756340991837065258690416650489911759226201293310124738536232750688214749827030955510983784128325372475161469965488404257495219056316372602483751466340010554492025083921368942015863898425791246738845851872718854832637858632363569243155707638645306391476136889149752807275946394403861412170215765362418180470323040380570108221370431503601899546230178315197685525715751551466151447719649094281690954346804349549315803597832004615651346211887077409928332658606628047657899854892509258886520396187956748336897332390926965463883841175378026821488605835558124650258632093049329910306812195104846742621837268128757419047426852922265868309214297082105469372575975176929180118434696948478735635004350260201072124473173510817529991708783527540203507444126568487182014012707333059916456897528833512138866463890054511850816447254550449860466339675370632744853836099597683423899729790361675693473167044458084656898049689383627760480335392379511841670954300312096099484678253036901110456621552286014981635335946702031364827302207937992625799382112541273652331824416795506012521275422939402357983947734074160692210440586935413034290060455485616966151091517939235565251322529005706626616399840747556161292409265342001828229214224771889207206563499360255538814431913796473292313626240757295374922151541505481486161439447708184391503375595637129668920933750343455058857906266102795051632484347517785978295775323313411556403338574996054791232512815178829995016073083615911762912807140943265709421880676954040922156791249216105364614646174270237019981464259861076961147343871418287024208577454102744157251374605807559652989668103983522331773005856798736211784358073721485893715199859942143076831892246250938439460795076346481880361828367706783175298020954885880573255887648742217293879553030687797055720059330561244848166263936991471959611810810988600032990009574880224663426077308171049142086505869148868192698897864934503622373256781630869980093411805561454357990857799965478299502781275790717707902607222618674689348285072030524157074910082856597144675664428920309135370902987523038654736312562578641361947882296467413488060279839437488088867599828236051930534701304652672217445735590772535403370902678093448222682680053593274050927198651958864999928587927875397210715075391153809797413174486913411766000980892551332294603430136868166360279931872592391424354929275993507786607438760277234827033453019219188269528949249774088459798992834262074116509659699273948423691240298934697772845831203728284342734080440582279279449385500813880860469186297615049748852512933782219769723482671459702540254235044536179822421216874614525001775749713947605392725371515410220051017826506129249370210074713215702646718970176529713529170846693381051341914295151409449535274191100251786675606588089286740192896220173361061377707404659207467549180382211210880569761422139184898779660299310669338557566288780097323071845964934545679097449303139272190049957007922314583636747895359566529361116457007403202909831940409008408006455189265916040115644007700978224902795314347419690556022233793451243422812163267353732124081552859052790805333444858580117846540174528080705596298960709801527940509275683218397940646245808634695942020582766084267011458198139134217769109493631186188584034555691133503811542411654924031597346116788156563936844605336064630810599891078683964173599911243401859150132908382095509344410768769312197988782293593537198007096111765417917288730733276028826279830984888069336133917241494472894000984748321005289428136407417143383750862604881892027565094938513244107402464312659770144751611495298642336640575468116437589335038757968609333810029938311287642384822983177956957457919821467535466615144194479940271281199097752277123252119610598482866706058077704801683207381237291016268712673697468663510162172182951210923396488561245335863030883344219370043264835426428832682045085253755391670342298510101240791652815282178053877948977154259387833692525521791097260735254755618317567726589263934090236977898070488889533001768033080964352020515624465895005372854060191248104423340744299475277063476859885100620036971367756235206040881659896008808970295379153880140188652519053561359286184993498714652572977374716481459400154748588295102164232072066728177279872344476533302549821537503226858890572258422159433131778568064332111856079614287771157174759861565675947119039965526059445784239886587228092494363643338630209966115619657624250037371779165687655095648387588685585792363772629008898474154430690326056968717544653041367105232246651558722455468732326955756053401047309862796011602372894278565100868637091089758266599361238734206663049144555150539070595637588187554293181813486405153628836709662862512993035807782770529389089919949664542622271445208193476990560947875444134292560734053337063940557698527728823901527391674988890430190248277740962123437623771908281171405783186441817996291976810993186075556557998226961899670505172503176970478318494381174105275028007164338657876084119897513726133620867213265307058021024183986849152145662738263711400764695322920097385398830140165112304853506792641405855223258965232350377597738969524234776253945915473091909670635824951733894422842441690890589660074437808252302182164094347365335981091810165325498936236852670961537328994524144662622431693237259802425553316465647703219931940096947383304113797575355299426165435216249264901202435937549720565760272838440903152626779553219325273970382404419424587985859846781540788635587515948941100411778748944502650203511973915518963080129984974652062938675447263343703802103216183312660101358702610588424035217529640766864782156402917035720017055514736724330170550520652178702579779484955594393385996288966604084534992808757887299465721086827531800822034503669206341119390769408551044063234359031185562305536043937417842317487170226200062346072656604035728764188813684832337862573503838491030861586594880626236663590941386623327835927321717242261635468987759100931389908205337030770125738718912435770089268772646148830404363784732440617363888102030072243083955413007193831439679970456749005959094031979836487634126392952125001974832070209779717836871185108707618032380023315277752035894893300486819522695218370814949896932469516548422492744407152604262917839754341539982172145176473319158732484361020100096843159572114232745239469462523284332950336060642864278383011730314933243463477469646126012777763143946081809278161847363459726085802082993954311369716895213259145683275933972210865623028510820734195492283984272237171447600320627621860145163832082725642648053305440108558000290856661858612943374585011721473586332779871910908665438633411015793112979556722608816324261617218240188630575982778748753216923065833352233711992412960663285551058869264633439446795915954686294614812267851897476985265416264653881588951986235110499785126886178087546621762307192867904079329799033213058893242834314134564638404027209296264546084794193282406062348821824423155096768904504497061310235195168378920891210746365273129740636575425724775096719685973840576077625549226389290134994901861591563708501023107317433094683524423566926509537438379112112112658879915751136317409207119917901667329649860100149711346557414843299024723560695387656137649394843018433478356786091791751305745282035536083934703526256356798287317181098199795831694546370237474853953650490965856766206827600821037559521394063663183057061934454436641882284337706578013703943005306609352594266289781854950351898955694436213541830663431623291621695983012038496943108637122750855537092780036012131708176091919272216046545333582484727067579416840034091823452982412452608419924000653635798647992947937057854184661089608239599508185063613570334829533970740227350035397393155717000491010204512679354461400115671394772335434139709506541341677872172226232919488944890308313364141651038254765895622435753193383680251800772959113895329441321721859304347096223992276458699860095587401063244938903631524427854527566729843925507208921156170380241316676078047203333145097818042063695366164952250125868882199360300793348864318938743538350779520736015874513241645425213979256676823982493109630427250526950543131849623812953265194125672661660564722217583709880675198616844293991683931488262348199697465820163923974650871923890267949940031368580963834738838382045223106716399600585770193305784153142999204994212344264185603545510277282390117483700082920984635953011329815361699580130063349632704773033869225243280908569596520924798977694322277132318091865693169389910910818137796930753149498399877281880235453475339256418983891401212406155809988252657479354535872175784013808059440368582374626977844863590704640726364297744401319292782694774852043441693789987538844035071829495800277347848392945872711029439190143738835446051406882570211233732353055205031785601381001751490539891533463476060914684491865795302793124812634292938729258908548785949974381609026349427257680016784008319822904823431224402746515750618877298990789566549591167421981146525982486041286695660346918649040893890529952835320375384828169153724378204160041109679640628149360050340719362200395015558988046003444392907438562636648996672619995607099011884690679787327881837494215470994195935009191107945020127290308719121239731563844162352311262518412437733499009201665458264015815084041372907673911545500186625364412514055512709567948836632239882862499529369150873406945635957430892689287223897788917209404656390186123754643704792312526659721911710831620882926714044399797932937935874846204682834735444913029508832604600747171792330300686670068879045983191414914556440968290589354551936445290932282717284780345437528663826658911009721234328805723634742252808426175723315214034767241558579691071299808539939227912672632135448482769304015962884348742552654461754813556572068845625918388293019201590573776635466348340225490519233570427113140964091080026750991318428149521130592552801650429338683804247951667750614813969302526367422406457815563011843737461106370447413823835929427571149495806735636579636505246039196761251582998379113194960798374548881126167046083541577264690350164040695374390403760483232487426907969264701730604605917641115872186492751601401540768096893232247106816237370071431262516928009116525918031071732149607695717330287664400388449004944403498864333360834519927216481199359488483600349580811081108803258488028117205380233106944766633970369772033836667500635856303866070883281834303457907185374443436889871019188538271949884260374458219127304807439449908032641760467442676895825187712284759765538892708197843487425672698947785306797456136861074026466056025262726253521599259674374717153826626922252778432014097817849155420887280472049764295288679353452257281475683610989060632309587905680120375957627610190163630854609626389444794718618646337790455190841902049220437390756944540835564472841204458038075119485233019599800644385006444878260393031248453798817756948921281426853927876203467130843966604509890604936184239397768012564657747251009692110704436962950828733238200269704213001973708578284212609185512288364053406427420303718076236718966075921928082423103412412810073729438174264930535115279310370809436535349704372122092772808311205709694838483480566612422178866540874830727924909126015149114122361383532493824266615853045739591845281785115924981801565811135432910818553666710891431263810106402449405293846623437189678807007567580086177116082086508543729472080209244417461996105698618463632958636895512937468286886682404553092230351494222523983785368113123054100219201694508508160335783567635083767105664768942661296097468283896289743762752819459804356761526930363403745840765716926799790752853383204561001290717065254048726204539116643589665766760207503852419405772018558805297914315650481025104791231536384841908392109956913137298910477627531090150672724521128080344094934375618956437285199128164017185489864055505480273524163381538021863534274161007995170494627712376739573174171577949643459882973059466169081648635125606820015220192986268562363724238995378028616673102128718868859658319934729971451370770952241624919178579880792404688510246051074486244400907290665535504891210734791442862664527925011154938086489761748830213420041441410795441427287670967734944140175009830148176010626330199995334445025129924805020099189346881861627509479431811633412006466439570334316748863076684188151895455803823629487713358007691599760014770387051723147876917505701098914898156122133031445729257132348607973498863402998273351611396186096977683334633642642475919666944082526369731541662808000659382179410786966504805500337258129350693101053207255202279770041500327998007405564901936828562060547815868627270776451890278957005689876700179680660140928575716108494803686725737227355919718772745097589449324636885629611882714228876922922654727015549270728493342955748787958683652293011241684802436474270400250339991796631824618261137921681148269031570836386231758265876473874785409074213192879447679603339755275165096464233516262846292240987012113005142402910732427670326800972269997556931810321969623075167947349664420039190015168031606911955116810359733062178050525928264724932867089085518874155222323826592938411100883237239419184717929853250063224262081910303242946266965212686054995542914328193708056213167768755029525425228121730715134066039136166913974313475237170559641391942930559556154768506208515234225281915601010429907045194668938269933118586223266628686524560667715561982855423538455341489501453565071388554543413749648778431986954572055748058525780086179666897015651026699461670974852804355186180055286280122388273709964778105732046855525585709331418308186257861378324726572970321067236186259757164365173062037174367307490246762922896153572456886183623969935172618995367851903065774032456161997373528485650562680301728277393976085706730015645692751763089210426842212469752577387265542210891229336053451882108895436093074719896835353915251316716889023128918198142247183496249375669742767821529802640336650566896509306560107164502860459284808453346020497140593686897163253179398741826121969231913899808762316510754425254214527198383609803492073431918205384313892349547927187330484542497846422247526867514548760491877160241712023567624788494434928841060712611775246913294873725213093415321346717577035639780758614167683275903632702235317671179998350358779664152708154826805626435810369727777705898847828223156530818093922760967429057841723216560880367472838031056702612438620596147962493894376430630634116658168081135637041043896498551610069029594620049986471482218095442076018635583292167262827239525881900914642855602062909618153167647301300257865177260440887047235966117406219906959148898946796785265630682107773324332816340438606462744761386084650946327756033944718602019303703826129060200685372385470410133550988380528141702110978409620807711997699979439215477794486894243415014562775659596501840302648309615813601078200240905076464301671678264357564791487825545492125005154563158399916778472384307047774025570427119515500850043845083569416806784433720974794127733799440155379312546033451236785670015641768344045426759121074314580788072339328233175418935760151263459569043791957344628793101241465836126365790826768941084010864182013856048108214272807421492723962155717422052392349992253004762661603830133636670865974026200369994082612122983027641984627467154924303293174679552820647120298635038596422626633367131070921212257380172519157892095091006266106336238865213631462749009201939446412199279992873912379794575302535380996591374368875867370683269214009907039303435258154034127358427240703569235722463117102489618311505265338894364396016170821820757424555729645751950938013045267030484071132579919704000383695297637175849308803685050271199402133951319424587426894270817726814085078707537025481185285217124747104571388430808225434616852501972955318332785066003160125045393202099220242221786632325664086168705178937882742242277165746617028186480005318789740910675334686262814998827237874071631478811776664224908230911808824944065082991981015553822387296404044844386735156296816936867251534686678253214752937639262632738482524494801384379332337480470709169945386371509647614941509343253879599228405683359341651150369200331627869129155068673882533164331711203264432784443794776075453809372085505973211287995413910137967773765035075707572416004974965375019430059449672115197114300308341296634363994018174330297705356895856527977484502082739452667191333702984833554618443509315932958410103837594032571605948350008824847778370755659616793205222944442367310107768568426622743058753667993503486152316260847004083332330934165984957571364648033739868094656854766500386094226118684316127496335727719622159618075553247931102450101054149694376997536689230943684015239637005008436776961362604652305250764577945044856588556303130337937637584568226098090221625852840065007874359290321320280588570788290885914502093892780043884142856683543161582956314949949293426434596312557816405452813904309919340117762606091291396350276557361466960427486323083036243880609805853987508200972976388861815215602054945816834928203725847667673945028734389184344497300002237854372859747728736574566265858956786353570529323722805481645627762807379385975585544049928360987093531707819283823266536710961820867633924800590269133451145478524723280221339382378445922687713943891845750409806611868670907219748024381644678781086851605483002667174026633942147115787092007842782089215280932470301448694378940120771506628624553222556977274369136892021197129214123263594672095597217355486420574693213184565388870349400407812238002050221101397933292440154429190620445874493260329716007771129191303341536040030592428787830710953329225322053382433402794995593643743855620097211156641499198323985531338448063465927345270793522844317122045095552926565677044820428094261462968855508105089039793320121397450575464235778223558550701675483599212849144814888133652970620146615312291602056113346547334646776467996624798663764467372375580618750128640544861527721799710886350650036297025492806666030463115163910449108678407169818833956842794038931950535234731256377643639809891076870027413672509017278335449342724752031217068013036299854864486679298821254140700140508370654161486627989944339229164887984150478813186460524403077637832381364584373993133638828939106376978010829730086696447469524751600169514925248184909347552458371906402894112143342913042425119075991498804897744279855393295019487193322201900767227385856948221965134031470815752979578234072872870864061610195683636663998136823702282925492401514502031130436657684615954108211084629706091437805772721273839178639131717887443026589301934722580722282264602230721192844748786432122622694374886983998153642178727677253887329096529940391620545690681265076676045454676208253215929693285211021809327343955990867532051223585898112036475970871713426656434583507474132880978383694284993881783628246832043836734870487600118712075146229509088907333216562883425010474157959519802753737353207074615734359950917633034041867497697849394985536732586580997316744690441713867540958059446378852789930297620222604833786957027197184006698392559628539458758277975628750775171072662357262156099911422044199119776211668331641095917636420244676259499477748560348602202823573665983770426282922735568820780900244211134532936029986419370700261488011130066473681600843990864279445635536649030253558266681746134732163994916058042638442347875574571919294921314038478195707704847242887613666027599240203590166042241934340471174690849959178248913783842199708330094706059766141282204703771349261845465467303949686774733804213775764864721402325034567509568877330744461204344698138303194549623159225216894758100480008789347237834635276279450652193595454415121670770058993190908223195136491307771401008770891360107630083958316519855924342524280718239245765071497107790470268951510947850084898361951159837168287131598618856023948505123054067976955802164238423731900524591132981388533153613275526318590113074530233657968268278701964894939858312848555329420551346758763412603037648991945626571950767817366711356065267604903640125757089182806339341468885796378166403252061915963576346584214070960520321235843301919111542224330257078627857685831760336918405043623623218177322286607121028025353816376982875087437289188692242440448124529064238399893918617384521476474527290475856945769548940414733949928109239080949364363998094818608866216883201409871009567794548425101533234569090375516630089610312693060075013396845329775390573341511572845753442124574506855139857087672290632520712822836898675653699908618283594666925898009548939833508608607260599779909008815361203081003227157528415246740299200554995948799831259966967806525309956398417425352543861623538307011474134635803745731847267250875746770766982302626792659921211234941731833882053196324508227865888959093887982719859970809616249967455654558771431045850598961881187639794534438030685376039310828691341548451406951017195388733834499617507054365137344410662419697760348536748426469448604793483530932640750916469203634994632111695419146368359339833746929053805269210488100993581075171407008234382621736446155623650688385406664750263808383762293216297895345148809644306105202242490456731839143553416517872397784142627170207117616546800488510968748159534050146410010900225410460505272717611800300176174751886985947613572282512798560845822104300231710375396317277094328371470734178310033428183218610039541143092072548258959267043864464067019986182140080743256758222364998974188269708680978061703088007330850301817979954406980309944743153559891729237589541344018176990147496150015837818215855483607900022663732655686300110093239694453332639499744272024497667341832341518261996223270150217325539338388475444196708640955072180280866107249608125454281286619085805121430852989367325716034183142321846736567033177166764958622722078083381202042487964418622425320574164505509217667075489286611913040599708716195534534575866921679871342975350542397202975526974957753497844993170014618854346782804011500877397090911335389729777688425147425653707225659768549265335006445942228732041557055574363071671478315218985234976551488390132425423807503054634266265542137826213300655078857699962239752567691950051475299821394882915795308134086830649337794708684433794705369036429172880274031644626953416473124875929802116738429300846368258041108589443155064127547730578769498657997299214316929898935573100095777193327343666456136807739936208212526323179690927158138732929201188422171096903075703929226961371897912656149953213489477096201294742738385902136137967167055346799290500698397301715510874102818517964855215115172099528516768891486769291346230843087259403358807539071183504277202836323683179078265380290655140041083740719498772639494011706018523988193688596387804837137717786509367084073068391855320094340208363746054252695211873108044187555617609150757296353758504243240978194894253561488051648399185550325409817923941633018831897300169815827459443001516839520793289738300462307725198142286148951142478439440317937819911800743416221271375057013264558879247432237718340532156058990251445907985761617469374174049678441215679716738971752972094145855349507157006920996807623674653318376939138922242997007311089636286145640685321012699136080416760311519093495183273488320240136224855610240134003134626860317310814142381469445745744312988970092743783644851419704393831404193089809870336977181337096190347252542337246633577184269223080133659191757033533670445433368346875296299597712382816252387319226452809710623121348465020836521844818866184432708251643138892691346300397967516905108567723009576758783140251278160521197786504211118003803877658280629033901085979269565501357187891176745582524331542155000436234325332651773064604028627338774142790245242183923664463705762075155544467497176172763469820054986252146724511695147486423691645218403742894405229905590313564067061881281936147158516087644390217739145563590052556448005684212375509470449959832354588039994963950899048481525477275883542383419590884309029779786306296038796100137911094697557722558499278494833301800755207967534234274887248989499965603683949638931118762378569545423932834137939138021647616118285271041532031479967768967462808938358947703060275473914250749974237751018161294576026327190979017858527604259806672994861552349980466179473571652046506342195244663206688176556106240872502147025613296682721844457249268312486837310823230261360564387698331214742713878609427817727747014502988707165820279954505779956773797633115663620397397289508489929230073829872744566111631572338222471484278324491268058258977023497243998988844939067198209483010356271863466864726221166286092829190808860962867602907791265041424348316701049279913939388016706714493232090945822681407566101660625138000793051663759617024346749625055889316850459372609378181761805626424927044621708514952079284031715105093449061273621226386882727965380249642434080605888446776533493338058135061734807525410509222833360336289595102939226655200812022605140049324644218351814904241332076450281003498689306907751777566101994377544114969360082451954596671173255725992859952119981246044186943505451985484433714684204234607713930938280777325979074551646211563456576877418149487019493256147325630113073449915110046253186604961336164705987026471007687253247036526105011083795161210599213425560459092290947785338107951611009854710399684225861046708990969462210054298677268685138827493436368017381290491823802175884434858199763060018402455043639347525831184432193636078822342855272045714074737369255993115783930109736819090487924888661206532460152000335168141422972804477193676562839111651217927275006871239204489224560659499951882162445251561519251541248698539440557530254984069771032438283335078495458321119998635017531513927437392901084739392972242542692195276630589584769378343518462089531228431076626920567680291911716197358785828771504571705365988485439338455687452361582509297690532338080100239588158759601890869057946746760040728484613767290873389593701930186035809192800969562487800035954203504649282600218351160276500359007615300515757508898779709877246512623459434858447146969974708619341633908471726486305914339279858862338017846384694050699293616338270067608418255741154878091279432910863846947853495266842413245686736164003947230214150059728260677166998592152224446922722452662753747553137462434046326231320967634891045845244598715834085735563556630887023572750027903905856709684257476157704227887757124631483082575613673921608702672850353548863884440900066221903279112207312376948419523363518890952580963345764362987689019978287277952578086509868522185854654213618794096811802407819350928688707440238724062879588975043085326106396878515638060391081322698344181591025607591793497200486019243990420559792338398268709614517166098033509667819207870694670445052964510380048754656246144268720559930338804756155067939792354864468392917295248902411941414395004555151105274496092565798501994597445334832292324136115789201898749628600240683858562935279953952763525046396599512968205865885738109875833622381771863255911903200835095037665281452075692485455860174792407834667524564755230285139131803587488375127641654069323952591318391877310092234823466809945560512533544279271701158598689104477558802992722469475457343409971488630110503021626875573525751934778139174961643122972879514029762422373759765314287522934382892975362750581751132453671903657267884376036661342843964219541887566119884579693381298937901406563419516192474661306516511725267669323609419087733340690450558165213454487297074862553371635331581087738855095802330159523967268648400713750438601474834235330437085390227380449117576988953079133406811397562588492545284394178380123683157531767298914314054054266990963190681914906510208311130377896728687657942468534543011606591877413631321762198303416289445543557360297724554881458955418542210450999122832422240671256313535578227419398806196547685103176356379705213628453476087647191624882510939310918226676457010246503649076887174058871800489062109983884602249535444174934077227481562851572448302453765047321847532378940907877851143226417167207865271313548633238344810072504878677344464081608772771449481960020157980944682498260587592717763415996642278042914584234546121362414297976133124187195363825151679773423909103521409278990450682793503356406863155407032340671391506418478690860575345041992163225409754423164352434991500264140292956147699696135281539726892935453106876852742287916824480432608704463478624349069682252057662741054671106465204178936003473244014157701024500525111785668386033963806047470587868478677866005941018778147625395184562630317637358327298263546058429323574557986170934591291167804403130173996890297165284394825291332954976005579513856860519351140890707453397241952980145879886978105344437928598187338219021315887361960592742773315472002853239408397789239344686421601638980426095208234422381784439647101937884365289752765795163630751895935377213417194091471158931428412311647990508749331887496749119177625623516517274409813373547097884797343831223446489714488277146796704707528417151005177758584705360452208655868043224502154261560328310031904546602778549929217020935777114230574433742647869213136054226574013575310385064398286790589577389246677367491487536907339515858623562466719142440369524996637703770985252803613777816346232435468253332516733074960201249413720878443642861735790578481437239478915479884748129025766655262300741908124515803036992955037147164379926226167619218381593549727846720152665688420845010280046156910091842431075734179979783749230883487520580468055061820398994057860895824863813246156474145956952950257440684073664889904226040560602079193578678161126084813574082600007829756702414971176685873724094152073889241847585711465880388970146267953322313509070101452690127057210105779022277343195276782480856529188340361561348550929855796859839712262320837313667484421485838926042660191699304201533766491830909468499432157653212172381580140823486192736058717317466163847683264531184832681703369211623877310612543643962337345035839522545922383698407681015377194206583397155612108653083191645988670212720030129762880942895247190983775045851394570956574880254102538475085951906008554776417154677487089697871874700602935649391122591469261263511710087692787102960769193239654139233235563061366787913078401419567070881356320830880213526970725503189214741870398652371928414023072687812809490256436240867996383840921607586376700609603866327956945454200216914054497140193729992601076381319927344795034858657960779221356583223536408862834118876504409798505054654654340618816822304137332216455898377580961438429059850323819755090293443799336410337513679189169504960056663576720505647998532197059594358470817219206875917266453374606287085863099056469497814288864827362802618046077223206196839764684021703896226885242604920443377925672122905761457061866837202922236817090556108848373230317984179859950962146699137111763195890862038319018061032059854841643758537559118461458584528636882655994870662977243594811242593731963776359913818723798612690418725118495457562018917042825869646026822042170164938176626617811529465195189729743965577948535312848582920828318037995320941088406331146501838211945555989460999499266195976995452899102082423620367295339270261124959008335815158764211599728620891355269369880777066243495576565602414466461313951949093817390758101911627280585346834490256559339783660736784597741875456385440960717762071157152054663841375517012505847417609854817536768451158381471816080654008826680154523338651980071906453012628196539678057912794047592200584891296694888963217168962672527132555070744099176536736468323874720058609140609125633443807501075614691579295085050547070656868116338927157780046853815222838857263960105057058243307334956179789792708461912072633112251197557082335365279102007024268161463397894521512991183827518360244054304112902681963889699612182085241809012781165396831190827645273329640058674414682090257661164073139455063771453745016860874539922946234522818828837496340942470763000717491170722821267660042795470521180204638104755668948924724039745847695888633985075452182680439794593084627425060093791510138248701420978485908934470218315026316537964710422414848508953653174885833202738382864411676022315464960073515324718648310766369966940592029950073626018052003382192830878675968406343999421251846765507910757723562376860823556630936746998493392075127302143459749574953145597189522407961223123553409134909993234776071487196398726480243384457525538908352522657598897188751829310731782947814194860357498926797639375692780897942649640984709512814089650303781983675097553142351844585048052518999108785885084128715673248602784852202625103212672429865661527695246604319778947900124911930886867136656012397500815427149001629595311461521909491378190818735821252571605128316359578846573762774931071481719546509212499934584164870580273389017244188393954501649198066523773617773603148318070338133033338972591051988165809681695447229880713273435088736826826770722034381291341169095581164119393086610843233071610442261294455334123815147843960365561837877205018038913232670227465189079832876850186118464035832178304638050199921558206268148596626835738621220408323149112415323716735712682952546582245705117230412997688385500025680894367542856812391925356804836843226527830989696461401860946353979452432274274964920385141721059486526602561621700757001951723017250514112376787574823102663139662690924447844096274279748103136259643012732398383704025649960014459222375208937377135086960530601311256939481230368773686301164318462671604583327430309190082530180667483584749343753766607113653497482984301901089950970913459388149100613517153938432877737734771821280254447470438819087196192237223304078940382387097398511730500403660027910360212920875397242062759420082766066071073341577474795254519604098132952303380378722701930037663925484469314023785380625108348136087828800437117299693827825611561606438539305841566582411873588437947478804984065159864435345076088007997181939891110871504386314503554946209094365654392650941459734437752499801655609105275249481281179902173573014492328741267556064260298802557836413692016016617669748043542306072551697935735746825089695874826948731881544269818023315400606701953197215378857346583566060188867877883402696009264891214523761321850570390767193931751146569912952896078615794446670090410139420800171065178067033197994516163258550311481959276610659074044524985800229299228966543054067588746481449229311460408549457355981220577363061921476421011073334112714243475459628100874153150699878674569108206416345365903297922921012380381007569387269116011092957834426860655788441475726921085179645009860474953277920185440079838954484886707511916628030508605658217777697998220345113976466651924617025416334341044221145733295408504392807954396151307885264705378477983896727073836856837620235140207456693911087053479132411488788790158615971668352740445806936367038922357337268462210096916521348168176682743961853038638673061119918119187716359164169444571406379455424290874419543670817530677676541875022056511296774022477450002728679040664986471899711013362194181815184472591061447488424875027349454680510566851684048259975803596168445168373243003982331546478158041588277779460034850719864600409493977640398092361316514907508342421422902139051990165573319189692423186174767104600600148134265471179386165793927640354534589543137690424787165731974481919188300904505418400996882308154835099253666611841538312312998231819699109801429636853713921345260197299766841937950906406548032602340054884977654139891095815240233234467133442021495220744851782237688425688959031252711264762708767338357468592642121004081137201237521417098050822536684007206712882631152148490890523814401714196984944804679489675174776184049404631094279956737122753825775748085792754776105710867256129753274940581094794847870606374893196903901621417734653625666077403420493919792655024777067311768016577482896998471910716852097033010898010186445031926303162374116046753551168125391955617905343365937938089282722859914768508181201172867540470665654742948597222563280678451402182626324367627789943262937705557087265579856057809551086296577566990613910362180278129785662042808063521713920147250640452588776439271155252643537150490630447948841296952179190073624651786379689854808868529795126378890858504242865541942872273056884845871457476143153314718677063731935291546180195217512217731081929119956154340451468735032164383282109523299782542573539172290016513396984876017270183825894574556108791029901424155246809340828709852267349158535664375031049444588500491485483180968913365990395654771006567422899781917903880556974077808484614702490694200671838213724208851280759884631990288078363988372431080994688444143679764701359755518252438059867085825863935412502662727657199067541943193285433812175474512578521148274909532958863395251951656595291321511692041940837930800910247884453729889188341633145491480408091982281173152722432780262445509782321678235044878025855705718538907483505898554256099969620966130090965658274503055056304302205589701600825504127756601491826803917988196135982155843447379573702413895350487644347515252532802411844463140907913400762357692797913754689226884736149676856077439534956014628788995262183121832769384699326248204543358092547676462813616252866002903472891134064144250270608421664146813965398780967700813244277543465345874410359433720560138908410081960804386664051419536311000388461950017124667515147440366134559808879788950521931999172295176273037788753694443728709322519027105308073803344250662527867491541720713646960403245267328210151103865256574620291837156086589496185518608531139968035120710186676603591051690907519688103777386210264556171179825957862984636184672745364037121364433025001866944845893062929771460245708428537857217531391554082579635931071315989384210450732463188365244921677970430073450551852731279385366659239344190124417726744852219108768490083445392411318877611652510551507575859804011711680935050414745944483162589233546375855776767002031155304479918355861115050998041016086837193337357975553651024649345386759740045299465443507262891914362838579825472072300373383314140809137622653162428553463542462300076344744853432331717707644082936407500448460168077342282673654690211705120825871739934721949817495250924250726925642789857144682543911295027774569440308524614307137969039330836064040018859177956858262686679114699075516215713058458238926200549247748286076368766901533212848354177289041468683550109704090524777537298208489933703135462881564099431841848525123082824584262118062924394370484670057600731014483833794809349939449513215416659281982338744013219843698812101653169164961442714143245482547387629724500143589118257677641415351286224243126644694731445894464907012370826536309474640534463336976668148365069960714298144682556320014978368933051669087408158855984456703270505669128365644980537540195891176195932619380439852108327520574536278469874845019532470297825798400478093569804309947662567686031949573083415953921209066913357170933142936795525992559921024120101313417481679563312303503160869343508168983778370718810001468711081456752658660638884619648395491000804102621263814323434264516893555329375430827852957296723644138547682740396981624166189947325058111521969662924312118815724801397142272873868447289013964235982967010968586926180105408495917618647401412474267934889758834498858014189818668698566257552425115133889558784816299389496397417033311988726873131528027212434926334053497309720298910228004908373296479534316950778781520725900232954876062179302157414640607899306414205889014396961918180959152949138198462355194937194456512982188462378681558730644868873850415529812634340472775726538865787580204790312618484890551873888725947776814785942928251702376169625542673210477924328163129048539475711728834200324746845178811691006259463580546059295237249941449674655889780033821763324072532714591843213015032197235641764896047227129055747346130958417293148044805889632654064150538697516962493630444716415940433176064306038719972147798773892848955893028582296350937617680827682919135911466714042777926514452512292960800340786722340541320649179899342782139190630921424731548524409813721719049277450147536299714482855123942922188882872165823371928562075908049597357931836592697073626866846662967056473414696012289054649334216959657450094861720796723399048221426950965351576190183628497897472913885974861195482287233272330631073272906238657963912961558017968672419636993357507327926654753450832552123516981295456326013018790230598241273242036157017241368719980083222349838069075595238052192860532054572107246906693777913015221780039950986575108200809776528168571461898916911635158704269356305188550156111768320987228764381341870572861116475331926890642183771521971835146026562830353905646181730936806570256764236706591127446751335707108810195680022570551336875595585544273574341544072591447472845400028098970682853724683437493734410851193196097453241753890472845085958747424602856097878528545187775407997154621177303031339100172669288976201057951121885825950956918526102107090036450824200069159718001599236330078833562106398636742717199392085787672934536134885946613681541796565247637961760715070517432423497976271253568381906775894367733653120631963151801986593531388967149711435973775550871188943713859848091954630234668612328899619278198946718625627630057172226198717255668223923904890768146987080707751220177091609648770120434768279559338063610192024519833268119705454153308595651538813921780342498141963164905511260143454931265701556562158264090824648351579043435702893453635054819012476149728370681444278505199006903212896548769236882909068546671150995589760754891507625492685131792418299782542728547778448453461101792924207968158552174577602546294984095234678192840960476386210024350185606609410667690932843429705931268359659552164788030824711745176610929643714782697763464025941436376119883442043651405819785395750254618094489169401030013543819259121122854238722988776519602373221724050916405650079014770648187623734031750235491964410642041932852871687936595663020518293155034697291267571007407824355433018154958785858475434507850904892164905683726569122392614760515053956908698779269999187649883835020011034268265026969018909896424000140656288941654229991152436190033893023874485198177367035859326595056483973691102528528964240238162690169769797872053924417306882145869496570622068064152567048641672910089034466482148259576598883675676559305620962774588428084766784414116997805736320364832583212662721001886011390639353175491376666606897406774841966431435260003955902744717191497660803060479889578097868601071357264140408520715503208109783638446056461520984027952828516557607719738796731794525772221096980949945273561032910012006494033523485945355873048645021280439047580017537220142423121774893185173329466211269176408088586862489556539533649460684315877915679859150495016361992776208222457743409154600833608278358758581453060018874654806158469935209424129086588097007658952952942711111315126687583428566179129561920536410044079683799872613222554918639288601507650870472774003701806254718086876319171696486793614727732979757046379755146280328266354020758820986430077712971580486344586381703953969346321181169192104636494630154711153619666625612026906439506854218786812240993780516646058740408377608389717211889712944024277671668754396479044681943854146770948657994287785792979803623008497859770742430848349599307423855758769983547158184688235373094032850678988103388739359527893501071404914173640804862181613420873011412458842231120289553227515291208261892442680444656692441590713999797893022991343828360615540663044391445778085139945599094074239762612456772578548076328639557450793670916499825916076795474644981946658952214795605488453772955033488494865214498815920404443957690438775163101524744668822878389148182995253640866407630244850888822773889814481442580382544887918223306200047057093191744017116590681555324789182407775866665100435926469674592435181453789517497170913007733429647167891477189372321676652882834647772070310297542094397523932163345722780599675988114774549208494809224706159973495073321478676741593210626463245533420320135047805255300115734651077808653087217338440136071977085011680526600480673446362453506269853330351107802011024714941904163599640702033334178009708280027243676240239632839833190086800100058785505242035602151193311212381125806324264054598875454442839222700398014359114677186893678295446859099994129657734990682460457444371064184692311755752541422151199708105198384237430802858411911034947006709981625809080232934922144135663658449085571277501979917843893240809260006508919841301015540362593229032108072689825169873993483717822344427052288062898849905137744969579079629178617645467526962720055032628667023552336797726063643852366606175531613341317196197864392121268769055177347789594578286793751698667802479410433905992805940732000255661814631962700778143239536096104701729340494466620042894434699772502523362436113819044501776630394960920395546918993072887803159200038513497548607143872818383086380817680722559842374631006953530567999908324197175226060014824313203037348268169926095288097144322551789684890648663457922550958843785072651487101659277551662918941361681291844882428584914633290399404985318303936955530378939063462556418941415029264319234049598323408367493224900433835477731924409751183050397065819857193854143426088211957823771085106209820471610682278689620969757921676775517314616530623257688107672947682658597173652390580624930436511108825021373017722979145548745526360319873068471900353622658246145403431408136194441206504994577360905054778745696917584830341379595574153259059234508991895104113725321454131921375733178112506607565288638393093800774772362121100123864093486021508415014831723894064495994297265569568730807876269888569731031755846775128444574553397997813792654431921834421363070757915775647019542518885598183471508749639882165975381022375915486437492344074425523139962629180384112629956456129401567847766137658011123670830980985007918997025977030110831796067951569965572007575902702144061044911452833206811316731088885223390097768175624261207932093558751202518412009102502007023386813814634972054308310984171324107369665562496654937381813957760624019775704510736176400350162938954403024939727373854471651438233295189222680764895418150428010246315726137001519913632525676047478506575714031274113457537113188910649703107854178914089554130455302878654582163342569616634049525997099279447905529226719538257258587393274130154916630672048328356066972804687652587441088521105876230763044801393780365032533142790361470708396485178111545244300098858104533794718403395346580859879503012075351566479135465214976248731740221718399842254842989306171139607700220638169440749741888701799889068347341403175965274567786320642727227656038739437174585149316301185870988806202046350716742616122073255219743263265181032576138673817502982223737574646083182965575011782438275471222775799172556149461261270904660505267167223932500389201907340426107384301197825454396941178367831034191888309584133979272805382546626473199829417047335138373106220916975733273156589158399416510189572510284174693874373753133185652978668579739303451944894907199782629217544087253869509690256364913361662649103302968370399404779514747755870330411967687050772107617321483418530312001893714042946479603145311350066416700023524669310259433718669444400963997152321649187814086836681368125870117467589428150519860600640710086475174958709157959905729767405260915067140443398013208738176994367507976640722447299842158803184305897947861652814216645807199421852517436374675233515223073367877374551529844461509573192306345037036313453322168768871805379018319904446550904855025013177324986195190433459157524173696890570121205948432263283565890164054944492494351263003114712693604264490550542501889653141667181313000917724453608551190885106698104041467588804923153077182674791076853804068398921227580309702149594473809868273473312340587938036654043442190717164560665129378355602095649072482648351965488556846296156897637715040962462010579776075850857781777376501426558909658580563413806753500690392254667257452261154877591099601883907846796078591115005269420617357121701976371785105596442959618559023720438391967628002735526981355323275637931672939282477623932022778544033100210379546063147023481872886415248211452729969152894850131780271188121472084090813830635493161325791646756216819484619434213399002311094007368175499040105370285459703462333608878126345166364275991309512708416171091252888271665752450769886751300197665033144009722236940513663503005517281624212062955587593905225204836125872420287156842497966510035381857017390496082026717117234446921374861682933593570817241106919584808267765255054877674327988929228526399335672320294573301001520843029197879539804218174400897658113932684317529388849754954547596665544635912594206180442533467344212032289410055743489598571841851117728886296883795457231078767117936640524239691929950908446099602437176001623544091050434889834488714558740591334803757508108213516471546244015687292725425961643005362084352528358998024484653362422817109599601827699239352698885776941029330533541192182033534815267864184300550859195484210442525809817478579086995239359572577878359857446016518293777772864837474595440203648840299944295003769029699812826670409448793305461680584150168511183561532408798094923463652836206847759544700761192784929675948448992774264756317901512710819515240377741714381578912318556683115599448809641013883431262041387895097129237574051734778907972947159713776030845364618737701437543788226417693517009464573693269163629836955181552453496432755298484707463786288236903178335220459845956025360838502442970340189970392285865395671330968107511680246013657146012292592726485990026067413336342912103988713654170966139605163811546859346092725013904046570958813090147586439690356080526002237067236208245581181104709820327435557479421048052102582945221727461079444883918690338568109856888473513216220902224916728774326675355246632875935193968645350659198408253015704540743454421175757722114992310792258682019154490386219338234855437019047513801817401966723441526965608853765796515819930902713986177822928103138866085869256177002823453937381750059810088988044992163878606494194942003728500483586733358419306065079413977546321632519557047405447758733069812177634710857655153708861398629124189882384961710471521696214316529809386737702792483019120104057983961636647935371498532955879072997143024922657859098831534282291039354692521854358932834033079077749660374347639359192129174608455854501478303286948350836377823786093757486840385379733704303180151630575572859840539517606670680890940314761502410867637720572494875842467283500906724147538683524285131521824679772373745705655291821841553636624574535994728495285140266712799463114681763773933801244847002709448323561838029381738291966632458552074655518389534127169628384377734519284699241471083404269760700018182204794404287701819691216381554007876115119366692872982493573130991180381561849948696022256167794093781010683628532555609969925503390052027633657135364055586665400097666209196786378997827923885723733291301616727422693871941122400000852137552752735919034668718884001271277947100817035228006279688274415192053253373855168093694549786789710733924396709597311514345638326570413189498231548126537259395975675283269228288437973242922424415919423396209042686615963781323856273642608141820472118230036648391889539721693265027529331515394513993428691615334165115485101112923744798941721691321577793251660840054500252718711487093865529781654778907992517365552078125868472676816797487586252427646134096661776029377149391080559672415449995426515067850638413525415089100674005993952074787337038441672320733134525556389880446580080915750147942037139997249753619127876102451083024162313175339423890521136479018002018284869981683123004832474627600914139214330016395652367362789835704364262039618514932181766121720953319121045210670266874090641919066784531915512931161152675968995662200513952927276870774262354013616729425606192170846845084136763603683726050134796690309333172432767501077016178941879137036576410003615620374169634228827967205498547282836561829082987166479810334518370009378884652334426945447921995955901150236225598284371072480043530582240830473314363170265028896465972017758373959256362854059666662550126674583687965776797215056816760067845756991797032721491730412298066456848713671526919843460994186809763222427245889347264252765604238690439311764137594322453250858384001622021750225328190551116273623414797841749098958001', -); diff --git a/test/src/integer/arithmetic/pown.js b/test/src/integer/arithmetic/pown.js deleted file mode 100644 index 5cc93f6..0000000 --- a/test/src/integer/arithmetic/pown.js +++ /dev/null @@ -1,1304 +0,0 @@ -import test from 'ava'; -import {parse, stringify, pown} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const c = pown(a, B); - t.is(stringify(a), A); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `pown(${fmt(A)},${B}) = ${fmt(C)}`; - -test(macro, '0', 0, '1'); -test(macro, '0', 1, '0'); -test(macro, '0', 3, '0'); -test(macro, '0', 7, '0'); -test(macro, '0', 9, '0'); -test(macro, '0', 11, '0'); -test(macro, '0', 17, '0'); -test(macro, '0', 22, '0'); -test(macro, '0', 24, '0'); -test(macro, '0', 27, '0'); -test(macro, '0', 29, '0'); -test(macro, '0', 1234, '0'); -test(macro, '0', 5678, '0'); -test(macro, '1', 0, '1'); -test(macro, '-1', 0, '1'); -test(macro, '1', 1, '1'); -test(macro, '-1', 1, '-1'); -test(macro, '1', 3, '1'); -test(macro, '-1', 3, '-1'); -test(macro, '1', 7, '1'); -test(macro, '-1', 7, '-1'); -test(macro, '1', 9, '1'); -test(macro, '-1', 9, '-1'); -test(macro, '1', 11, '1'); -test(macro, '-1', 11, '-1'); -test(macro, '1', 17, '1'); -test(macro, '-1', 17, '-1'); -test(macro, '1', 22, '1'); -test(macro, '-1', 22, '1'); -test(macro, '1', 24, '1'); -test(macro, '-1', 24, '1'); -test(macro, '1', 27, '1'); -test(macro, '-1', 27, '-1'); -test(macro, '1', 29, '1'); -test(macro, '-1', 29, '-1'); -test(macro, '1', 1234, '1'); -test(macro, '-1', 1234, '1'); -test(macro, '1', 5678, '1'); -test(macro, '-1', 5678, '1'); -test(macro, '3', 0, '1'); -test(macro, '-3', 0, '1'); -test(macro, '3', 1, '3'); -test(macro, '-3', 1, '-3'); -test(macro, '3', 3, '27'); -test(macro, '-3', 3, '-27'); -test(macro, '3', 7, '2187'); -test(macro, '-3', 7, '-2187'); -test(macro, '3', 9, '19683'); -test(macro, '-3', 9, '-19683'); -test(macro, '3', 11, '177147'); -test(macro, '-3', 11, '-177147'); -test(macro, '3', 17, '129140163'); -test(macro, '-3', 17, '-129140163'); -test(macro, '3', 22, '31381059609'); -test(macro, '-3', 22, '31381059609'); -test(macro, '3', 24, '282429536481'); -test(macro, '-3', 24, '282429536481'); -test(macro, '3', 27, '7625597484987'); -test(macro, '-3', 27, '-7625597484987'); -test(macro, '3', 29, '68630377364883'); -test(macro, '-3', 29, '-68630377364883'); -test( - macro, - '3', - 1234, - '5856367529932071269049608726415028439757143623443063785468784843536946634255003858796842453459905186846046851774292445753149532138648409140561593823222428559200283816367593571556942770711203894947318922509986128995034233177140247221695941679146171215675158154358685224309073135481486540427499644363484815218991488230440687359021965115067678545212365725678242878485920885436927030372580147256775788882374301866845441065076726499613479868210410548366056401445912760529623658838510267592199677099676046090140514526228797525926977514932394954796457727416398081482661262807288229389463819882569', -); -test( - macro, - '-3', - 1234, - '5856367529932071269049608726415028439757143623443063785468784843536946634255003858796842453459905186846046851774292445753149532138648409140561593823222428559200283816367593571556942770711203894947318922509986128995034233177140247221695941679146171215675158154358685224309073135481486540427499644363484815218991488230440687359021965115067678545212365725678242878485920885436927030372580147256775788882374301866845441065076726499613479868210410548366056401445912760529623658838510267592199677099676046090140514526228797525926977514932394954796457727416398081482661262807288229389463819882569', -); -test( - macro, - '3', - 5678, - '1243037693463227949112091519279672492044687354501434200945857669926116693806746194857301400780233995488733257302119315313384942062399372466241771979139200777946071311247293019863313186668415340857975663750784195666817545404528999322911175416479945350848509815821523649497472945192185204394061354208077647593251971659190791580018094752316074849512115300952408135740274415868364936851842971492114222395071837019898407594635391436897273675376020860228061632238135757402157534256820528991141884997213617990932313869139157767548368622729617821353870622703296087570908735603155999125081727743790083245652659362145288136145004020964445403739551815349944634978429930196370344630107979223204102936646371908266047485583735925127513544821868443751038578347212600335097321876283836508599321409432666223344497759612113922437886158316317309321756691709644342882638785970256967423622312748711462021869668719494868133737340936529693827973449768289569618616959110477938348069764446874172549277166445629673389323537570721499025892871401583780718566334141146891444372056720167238580106004294588023983408110949068925676634600934614407326236494754543604668091196426889487866586253683006497687344805244551116811415322677755309138100217606582159711957778349675405780924725098248165734440609725859923557227882624090733819954748607788759286778393117307486567713449414531253242799336048793898512587416922351072249862379979496346075333842525402457713987512962241151801408088747602541118319602580139543049458650772613553099704696427391659934847692973786316292223944739381848786388556341954241622083310642850447813219607073326408041563486733069853816257896789324045551319755037088618442131331146423713621289638493891684978150596496763780207895660476795481533699694118004797315688020850843758776485972938923432434495440069418445343215420341280042711847572084403785495272596239611718358057479206763407758265413312407824846381133395192898456506473229225136787314930144756882252451305634473881426309641144171713785689008872861781376574439959633987648643018576130215542337839481438388884082264677560703461771690165647753395118399310441168972645259556152700302308180192341217336414601260891209846568563921259501135353991491621201855991355185034869242032403371115547965465483990269048544429538087341589568713744694551680574689237237491011280632994211265728601046457084272149460827390761878382623695568170089082824214781471624419349859426165335950948736550329484315091462220430038109528301488465151597001587458695626672091775630841370920667673089484634221309873986915635179460410766176505308693753040761858823435567699379069230334377993680841390907035222598330539569286394567432603810064443684500211286790765380067016868875864059604528460045303289', -); -test( - macro, - '-3', - 5678, - '1243037693463227949112091519279672492044687354501434200945857669926116693806746194857301400780233995488733257302119315313384942062399372466241771979139200777946071311247293019863313186668415340857975663750784195666817545404528999322911175416479945350848509815821523649497472945192185204394061354208077647593251971659190791580018094752316074849512115300952408135740274415868364936851842971492114222395071837019898407594635391436897273675376020860228061632238135757402157534256820528991141884997213617990932313869139157767548368622729617821353870622703296087570908735603155999125081727743790083245652659362145288136145004020964445403739551815349944634978429930196370344630107979223204102936646371908266047485583735925127513544821868443751038578347212600335097321876283836508599321409432666223344497759612113922437886158316317309321756691709644342882638785970256967423622312748711462021869668719494868133737340936529693827973449768289569618616959110477938348069764446874172549277166445629673389323537570721499025892871401583780718566334141146891444372056720167238580106004294588023983408110949068925676634600934614407326236494754543604668091196426889487866586253683006497687344805244551116811415322677755309138100217606582159711957778349675405780924725098248165734440609725859923557227882624090733819954748607788759286778393117307486567713449414531253242799336048793898512587416922351072249862379979496346075333842525402457713987512962241151801408088747602541118319602580139543049458650772613553099704696427391659934847692973786316292223944739381848786388556341954241622083310642850447813219607073326408041563486733069853816257896789324045551319755037088618442131331146423713621289638493891684978150596496763780207895660476795481533699694118004797315688020850843758776485972938923432434495440069418445343215420341280042711847572084403785495272596239611718358057479206763407758265413312407824846381133395192898456506473229225136787314930144756882252451305634473881426309641144171713785689008872861781376574439959633987648643018576130215542337839481438388884082264677560703461771690165647753395118399310441168972645259556152700302308180192341217336414601260891209846568563921259501135353991491621201855991355185034869242032403371115547965465483990269048544429538087341589568713744694551680574689237237491011280632994211265728601046457084272149460827390761878382623695568170089082824214781471624419349859426165335950948736550329484315091462220430038109528301488465151597001587458695626672091775630841370920667673089484634221309873986915635179460410766176505308693753040761858823435567699379069230334377993680841390907035222598330539569286394567432603810064443684500211286790765380067016868875864059604528460045303289', -); -test(macro, '7', 0, '1'); -test(macro, '-7', 0, '1'); -test(macro, '7', 1, '7'); -test(macro, '-7', 1, '-7'); -test(macro, '7', 3, '343'); -test(macro, '-7', 3, '-343'); -test(macro, '7', 7, '823543'); -test(macro, '-7', 7, '-823543'); -test(macro, '7', 9, '40353607'); -test(macro, '-7', 9, '-40353607'); -test(macro, '7', 11, '1977326743'); -test(macro, '-7', 11, '-1977326743'); -test(macro, '7', 17, '232630513987207'); -test(macro, '-7', 17, '-232630513987207'); -test(macro, '7', 22, '3909821048582988049'); -test(macro, '-7', 22, '3909821048582988049'); -test(macro, '7', 24, '191581231380566414401'); -test(macro, '-7', 24, '191581231380566414401'); -test(macro, '7', 27, '65712362363534280139543'); -test(macro, '-7', 27, '-65712362363534280139543'); -test(macro, '7', 29, '3219905755813179726837607'); -test(macro, '-7', 29, '-3219905755813179726837607'); -test( - macro, - '7', - 1234, - '70954734215028011240104595141498929070420289200365254864883100224459061531095964535961424752183918983389834714345883085722594630104327570484382813454950959834721299254363358098967399048133489131401375954827777487240689332659684949614116231197346793510695402301156840458057925504143947679213040737846060014251249690928324441226158708348216074516368113070768675494487327714367821662938661080440834970823376650216081882744143161592962823478851621834726159007802788609981541818975600270503709811145869971874252832721423453899821462438727851069669041332053765106227148570291872998008674128627485981069824533343176007316751497280494057995201432198045575691194828311578763776024467116028227768366827683004790939265568398432923069244698164607404132404210543306184313774389935234011995625090611727226388755028092996618090667295922698497975515840710550500258575437750076719351206138149202280453034232757583405474400100672191700332560347912741669538744924043142095605796598736664375513698661239721232174697654768024941266796370339939780641017369634940849', -); -test( - macro, - '-7', - 1234, - '70954734215028011240104595141498929070420289200365254864883100224459061531095964535961424752183918983389834714345883085722594630104327570484382813454950959834721299254363358098967399048133489131401375954827777487240689332659684949614116231197346793510695402301156840458057925504143947679213040737846060014251249690928324441226158708348216074516368113070768675494487327714367821662938661080440834970823376650216081882744143161592962823478851621834726159007802788609981541818975600270503709811145869971874252832721423453899821462438727851069669041332053765106227148570291872998008674128627485981069824533343176007316751497280494057995201432198045575691194828311578763776024467116028227768366827683004790939265568398432923069244698164607404132404210543306184313774389935234011995625090611727226388755028092996618090667295922698497975515840710550500258575437750076719351206138149202280453034232757583405474400100672191700332560347912741669538744924043142095605796598736664375513698661239721232174697654768024941266796370339939780641017369634940849', -); -test( - macro, - '7', - 5678, - '29286751415147620247012304773980453114296677803073891717128731934016701215974044080405159393233326470923575961142799138193074871298378636445798628179207951349293982721295278501959247567396219037376513091082530976510046931578018252332911963395881855502229529277894696192062382498205446451330821264508660060350680978703632399146027439892583747910260252573283992801340972629278229559465911897286605725711901509827250224363194810593341410557007928980446292059141174553339348167116022054072976080669663383423876445574623259565705649860557328656767872910853528973163262527221058274477371143012479363191542123347184358086644971892976333589967255121778587469470892635729379036729236304281800433959466187506663459515828468608307875018665592185468341433713422202882333951754002984232398322608180776700835785085017756319924590206151470700716667835012667869936677506199082647415474168800484943151012348606524534006652121876222361977658821488777239683223567987622345303322949601239794141770292343853950382720459690070362230065991442547398307358472021289622300608069384246841369764420640724519271620643375180877746823736826186226120840335052438117942436533089511127752752776144826427488391781629757387931931866819313611113838895192595153612697562710052857839705947750975715806160854609794879295166494370393332625817992461823676698792102936528543520961016844260805703577116507427610889086939384974782917847235365828889115833315047177125587286162340061433341091371954086793250119039573579409345450985100916248737095737635113804291080478497302622719151600453447616115190282792195268648972132196212717229671264933006034401449925954728380766566809709129051085718977633841056681750845701567687767262960074466629251941876310059953363356531903058045532738271892988757147772703584798866501751770352083540196100803611978925296332203675077547295577020941062653460756395909170345723103094148861314777405742548532625701646810183666329500365537037837796381818770012342811563068087864026587087965941993420061262519506075499730518978585216724282264266842476339924360204070092387081062271166294076464986173214296883414741128262228746457873862297729461562411250198067094652357764260127419648002555197136786444971264851853928282497021712573900531648560775269275620991652740780298232021457075682576160866924920643357459760230060837118671529811745348483144053263057167731433439790093453587845785289839653966318286353544985756786138017559281729742760365436559566020930901853363600729656253961774820405787066019640729410826090870703799290454880306581230282510738087113753806619350425640320369895844610395585664858869947128190822130577054035661501630309320241329765059393323789228824376116472207943909200787598356625424332899455771232035169336714551998000090274179880982976417171021168670556482314198238096787861626550887693327061858177712413982165608873492233854569701565615054215981574912415571024874796636058468882371352130950473473787764998548443335260725529010774114177855533290850946155316766268951403608859645495518354455415922245608492259889927964017924837101397067268070099225030817739186510992894635323450695473383790259049745811723535604236057509473976199273919932581197631717736843031016857549306106108894545373734030577486454218738603892987604028992432585288674498003102110839666180973964000647771786878484450905268467447862314262776221757175689654294334472018305832948254130011534914626821150798633758257956359485409097758800820518855504265570934089990834849940809640817750881113810307074278330447454706136884709705076100153948256437849665146298178253907766151956875148887880704088418959235408519102084994845764532487122261171084690258639078929318849083005320788264786818741497152218531813309049735082217246480998356792356423468690812689741878405570775329789967268544118775265597533519971689880183688879583268069589841484628003686747384622711287138558207298669062173888449730536222746981830761436411638918704083993605529775430511215721624379386418171517300661716804853921368534386259059328549100166544678556092078039125431284837120330424638877929381377386822642410570351497645327464806551308709476717189758730145852636898776648068485630182784186320600350425256211486828867199336911598081431699804028420689319751310314229065511569912938919887605558610237415833117670117720398090281760742873925225005809250637733443636498423237903430070501472467711563994554631346830772764419040383097667651843091497767178561922112757100189347867151512651676504135813782377307832677229924200900337767048640550254889564573280195779350492199790482755320611128427773224927972518754103462948342397056029050310063164777386764680047944172099837029881521262503568821175159785856887995352684696513864645799309539055373624021324611634320733523909093966797454147058520418465164134584379979514639416027197229802081214558290831868642024962672375789914449', -); -test( - macro, - '-7', - 5678, - '29286751415147620247012304773980453114296677803073891717128731934016701215974044080405159393233326470923575961142799138193074871298378636445798628179207951349293982721295278501959247567396219037376513091082530976510046931578018252332911963395881855502229529277894696192062382498205446451330821264508660060350680978703632399146027439892583747910260252573283992801340972629278229559465911897286605725711901509827250224363194810593341410557007928980446292059141174553339348167116022054072976080669663383423876445574623259565705649860557328656767872910853528973163262527221058274477371143012479363191542123347184358086644971892976333589967255121778587469470892635729379036729236304281800433959466187506663459515828468608307875018665592185468341433713422202882333951754002984232398322608180776700835785085017756319924590206151470700716667835012667869936677506199082647415474168800484943151012348606524534006652121876222361977658821488777239683223567987622345303322949601239794141770292343853950382720459690070362230065991442547398307358472021289622300608069384246841369764420640724519271620643375180877746823736826186226120840335052438117942436533089511127752752776144826427488391781629757387931931866819313611113838895192595153612697562710052857839705947750975715806160854609794879295166494370393332625817992461823676698792102936528543520961016844260805703577116507427610889086939384974782917847235365828889115833315047177125587286162340061433341091371954086793250119039573579409345450985100916248737095737635113804291080478497302622719151600453447616115190282792195268648972132196212717229671264933006034401449925954728380766566809709129051085718977633841056681750845701567687767262960074466629251941876310059953363356531903058045532738271892988757147772703584798866501751770352083540196100803611978925296332203675077547295577020941062653460756395909170345723103094148861314777405742548532625701646810183666329500365537037837796381818770012342811563068087864026587087965941993420061262519506075499730518978585216724282264266842476339924360204070092387081062271166294076464986173214296883414741128262228746457873862297729461562411250198067094652357764260127419648002555197136786444971264851853928282497021712573900531648560775269275620991652740780298232021457075682576160866924920643357459760230060837118671529811745348483144053263057167731433439790093453587845785289839653966318286353544985756786138017559281729742760365436559566020930901853363600729656253961774820405787066019640729410826090870703799290454880306581230282510738087113753806619350425640320369895844610395585664858869947128190822130577054035661501630309320241329765059393323789228824376116472207943909200787598356625424332899455771232035169336714551998000090274179880982976417171021168670556482314198238096787861626550887693327061858177712413982165608873492233854569701565615054215981574912415571024874796636058468882371352130950473473787764998548443335260725529010774114177855533290850946155316766268951403608859645495518354455415922245608492259889927964017924837101397067268070099225030817739186510992894635323450695473383790259049745811723535604236057509473976199273919932581197631717736843031016857549306106108894545373734030577486454218738603892987604028992432585288674498003102110839666180973964000647771786878484450905268467447862314262776221757175689654294334472018305832948254130011534914626821150798633758257956359485409097758800820518855504265570934089990834849940809640817750881113810307074278330447454706136884709705076100153948256437849665146298178253907766151956875148887880704088418959235408519102084994845764532487122261171084690258639078929318849083005320788264786818741497152218531813309049735082217246480998356792356423468690812689741878405570775329789967268544118775265597533519971689880183688879583268069589841484628003686747384622711287138558207298669062173888449730536222746981830761436411638918704083993605529775430511215721624379386418171517300661716804853921368534386259059328549100166544678556092078039125431284837120330424638877929381377386822642410570351497645327464806551308709476717189758730145852636898776648068485630182784186320600350425256211486828867199336911598081431699804028420689319751310314229065511569912938919887605558610237415833117670117720398090281760742873925225005809250637733443636498423237903430070501472467711563994554631346830772764419040383097667651843091497767178561922112757100189347867151512651676504135813782377307832677229924200900337767048640550254889564573280195779350492199790482755320611128427773224927972518754103462948342397056029050310063164777386764680047944172099837029881521262503568821175159785856887995352684696513864645799309539055373624021324611634320733523909093966797454147058520418465164134584379979514639416027197229802081214558290831868642024962672375789914449', -); -test(macro, '9', 0, '1'); -test(macro, '-9', 0, '1'); -test(macro, '9', 1, '9'); -test(macro, '-9', 1, '-9'); -test(macro, '9', 3, '729'); -test(macro, '-9', 3, '-729'); -test(macro, '9', 7, '4782969'); -test(macro, '-9', 7, '-4782969'); -test(macro, '9', 9, '387420489'); -test(macro, '-9', 9, '-387420489'); -test(macro, '9', 11, '31381059609'); -test(macro, '-9', 11, '-31381059609'); -test(macro, '9', 17, '16677181699666569'); -test(macro, '-9', 17, '-16677181699666569'); -test(macro, '9', 22, '984770902183611232881'); -test(macro, '-9', 22, '984770902183611232881'); -test(macro, '9', 24, '79766443076872509863361'); -test(macro, '-9', 24, '79766443076872509863361'); -test(macro, '9', 27, '58149737003040059690390169'); -test(macro, '-9', 27, '-58149737003040059690390169'); -test(macro, '9', 29, '4710128697246244834921603689'); -test(macro, '-9', 29, '-4710128697246244834921603689'); -test( - macro, - '9', - 1234, - '34297040645642669671420659321651782362579256907010306825298584320017224909034295065159266732166824736588968016033381896847023243099736344433210097854593507161679850671932155017203599500044609298345843661231598352934672574000630755280719247078658076071069504371210453795997193380141459822909472292250049962822082559318856309665763195373936160408297178132724501864611562349337209033935902601202229170588203644970751513231529370646017342084334943445632338625406001819417100075123659123153934372275946883429572960429182400235833979860757127508599030945874737763438221696224240363286973695769026948553357192210469914347532288838793872337455361841599848707950096810738215169875752378946944496071085184269469689190048414428631904103213703000348839546159132360494448224371361413782868923322232033859714664315449006669237525993661192066307764695656412997620762143868465614936957887460078238297229855499508020184426374192732713213787351302551235717525464575349122336444905826195262672337776865803043472081042136085365758586709594709588874980188963624351301943558778230597943000313246648597648327615323559497393534626812152826795197456515853598831232826676446660986298958124148320950039761', -); -test( - macro, - '-9', - 1234, - '34297040645642669671420659321651782362579256907010306825298584320017224909034295065159266732166824736588968016033381896847023243099736344433210097854593507161679850671932155017203599500044609298345843661231598352934672574000630755280719247078658076071069504371210453795997193380141459822909472292250049962822082559318856309665763195373936160408297178132724501864611562349337209033935902601202229170588203644970751513231529370646017342084334943445632338625406001819417100075123659123153934372275946883429572960429182400235833979860757127508599030945874737763438221696224240363286973695769026948553357192210469914347532288838793872337455361841599848707950096810738215169875752378946944496071085184269469689190048414428631904103213703000348839546159132360494448224371361413782868923322232033859714664315449006669237525993661192066307764695656412997620762143868465614936957887460078238297229855499508020184426374192732713213787351302551235717525464575349122336444905826195262672337776865803043472081042136085365758586709594709588874980188963624351301943558778230597943000313246648597648327615323559497393534626812152826795197456515853598831232826676446660986298958124148320950039761', -); -test( - macro, - '9', - 5678, - '1545142707370381851609411413899132682778575844549055737803770782486638374123987237714505350031063863696419362246215324259025872807818706708567475641777221524486469451542665562456475991411669945011588061933033043990285593410736303684531491655090341501196320194664020232558795638543041629641355998266033548545684015858096482700688284981448066016292615109699224816361227721744941140103885809784889737995411688872156490144707451483247506723486569306623432455131502484848152542555905761267826576308873877093265177335466304892722841390706005314223149855304965697484723009003003632083696007411617084581327217056398066426605090819508953675656967992469076739615155228601392777535817633074609994606291164127882587611790074634314684395235695951310867816046457022429685001454352432479391043233372844749832834475133612310166159430096724033853202779978343792803241815105520473343882963270232006318108101172487652645037890933800756420196027281412374330156942298809917864681543862000700290148757672140417762608153842991450104537691398458724848347134986905461646720926318916004759872555232117444680320721345188614171935657721162922772487571124238457660530591028220098993082424798607063347980184136709298769413926930349712815088173558675750389256644773436235100564071786607781876607264630905026348034479999782657445944748011068965501487523392800451597712231719881642976802003901339999399734075058637765277161028644547435177576795907751332319356126994328383614000959809721439665568650348697207647555316250229874630972224221714533827025501634911141684146186203253767040684930463940464377863490189848093370410257333803061200409882588601608120045438839772858741664177165757415118862088960994925276210066381127080570557851385479331042246570187178836367072105659557298025995994432154607547760881911528513006072722679351100800384912243076415109378562053413427675008822161639569146618213571005063105134152183592318763191892403562862300332002443513358137733609305717552536116534529456800098568792487873742228833784937429502805597130286226862975217006199009586805130712898326268708779958470992748082915469591083119179614842245665430602770992134692732918676506143472628731074803946929989696665115780648730022856841984172068021565899431168771658079365019826787122767864320410003659006630243236082123473778365296923504448099879355899093296587407124679743539714668629739203451409169220276915270710072344374154805355451447610334870077107520916084363778625558453362830867729338005614696548674280966101030920025275289509398227466089735040095294432049245365579301293649947590752813026695775305108512549093425827168709309153164964518435002803203260297748051469146218834794141288192941465904821437732646224427502122761116109084100303184096830143400182874440330465783102621606891257024121143498202107903258018086176991251634730153737114344138284105389641830312676972930646347797776529968734739053219753095634106865389392731865073020060739843556848436924296264365174038915119777825322849472657573916448107560433792653801959610188502511534981700386973496144694841422884340132779103883906981191026922867395953990063126834152580234552204739961906926767894178052760711620116507790314554396528396871813365687210073019525832824479961834155693623848039441214108218991798316931852715586106991173419636671902754236049107585921303060877716511803128895869667091654139705002524900507762082934568975954418238682291841910718982426145152686903351718809457762642345982881924850372358154935832556134320066020200965922897806724341248914397224558268067799442480589425192305345138246146351317529543861709892659099510408182947241066305485992782013056611600088525469992301128153504386277775010761258678532453273506462144848662004743034850060677824385240850588592267171443255754150565279560373497193659947780285389694817090742653506541905415465147664245703555755319506569259093273234477472175250215865923275863458053491886242823523838048453699851299857579772170676938286642988817887754472081798505839390455625598352142445901032306662849749227441402540484189893049732970070242662289545041240186274540855527695224386798038802847716909643228838071712328328843306868604223267430082476250031289111386554075507235619140890749226586960627425891165027575773899527151843957100604729050655499468273965365676635425643512622568877104991613143416548361882289872531929492966266589241390435796283886856494108038015908593659759442649289267891231233370864787216502985947587427499976015148867290521443540972183144322560989287993403276257505450903566910878200950050498748138177006078421885399215834679055363231796024572637313051142809997975829383113593886842905030615548365187334414986576626572709945335218302316974585860218354236627526789998871983242318007851112973254711384763164130812368517530397568357211122447291577632411868201330873749770649724664584931910689209273266716237972155094521293509679679188639121028673703592870439365985904787534978888232064234185884332728603718178498587929582594411733908808682843871136010409164159211147954735782608477209486374278676903968217823052983733854225085207900133055681775964179915225898467500534275504778286018191192185134700062560159814398118843013372902422075816271217441168393867803438088703366735453642092957869537542911086888294098076857636181045592676382529427459580323398060295400592579156848598273806304984575515978899816201496154375306741429141182134037640643883635820658781752675039083634856662576936007793352035809688183925957066262267994217521', -); -test( - macro, - '-9', - 5678, - '1545142707370381851609411413899132682778575844549055737803770782486638374123987237714505350031063863696419362246215324259025872807818706708567475641777221524486469451542665562456475991411669945011588061933033043990285593410736303684531491655090341501196320194664020232558795638543041629641355998266033548545684015858096482700688284981448066016292615109699224816361227721744941140103885809784889737995411688872156490144707451483247506723486569306623432455131502484848152542555905761267826576308873877093265177335466304892722841390706005314223149855304965697484723009003003632083696007411617084581327217056398066426605090819508953675656967992469076739615155228601392777535817633074609994606291164127882587611790074634314684395235695951310867816046457022429685001454352432479391043233372844749832834475133612310166159430096724033853202779978343792803241815105520473343882963270232006318108101172487652645037890933800756420196027281412374330156942298809917864681543862000700290148757672140417762608153842991450104537691398458724848347134986905461646720926318916004759872555232117444680320721345188614171935657721162922772487571124238457660530591028220098993082424798607063347980184136709298769413926930349712815088173558675750389256644773436235100564071786607781876607264630905026348034479999782657445944748011068965501487523392800451597712231719881642976802003901339999399734075058637765277161028644547435177576795907751332319356126994328383614000959809721439665568650348697207647555316250229874630972224221714533827025501634911141684146186203253767040684930463940464377863490189848093370410257333803061200409882588601608120045438839772858741664177165757415118862088960994925276210066381127080570557851385479331042246570187178836367072105659557298025995994432154607547760881911528513006072722679351100800384912243076415109378562053413427675008822161639569146618213571005063105134152183592318763191892403562862300332002443513358137733609305717552536116534529456800098568792487873742228833784937429502805597130286226862975217006199009586805130712898326268708779958470992748082915469591083119179614842245665430602770992134692732918676506143472628731074803946929989696665115780648730022856841984172068021565899431168771658079365019826787122767864320410003659006630243236082123473778365296923504448099879355899093296587407124679743539714668629739203451409169220276915270710072344374154805355451447610334870077107520916084363778625558453362830867729338005614696548674280966101030920025275289509398227466089735040095294432049245365579301293649947590752813026695775305108512549093425827168709309153164964518435002803203260297748051469146218834794141288192941465904821437732646224427502122761116109084100303184096830143400182874440330465783102621606891257024121143498202107903258018086176991251634730153737114344138284105389641830312676972930646347797776529968734739053219753095634106865389392731865073020060739843556848436924296264365174038915119777825322849472657573916448107560433792653801959610188502511534981700386973496144694841422884340132779103883906981191026922867395953990063126834152580234552204739961906926767894178052760711620116507790314554396528396871813365687210073019525832824479961834155693623848039441214108218991798316931852715586106991173419636671902754236049107585921303060877716511803128895869667091654139705002524900507762082934568975954418238682291841910718982426145152686903351718809457762642345982881924850372358154935832556134320066020200965922897806724341248914397224558268067799442480589425192305345138246146351317529543861709892659099510408182947241066305485992782013056611600088525469992301128153504386277775010761258678532453273506462144848662004743034850060677824385240850588592267171443255754150565279560373497193659947780285389694817090742653506541905415465147664245703555755319506569259093273234477472175250215865923275863458053491886242823523838048453699851299857579772170676938286642988817887754472081798505839390455625598352142445901032306662849749227441402540484189893049732970070242662289545041240186274540855527695224386798038802847716909643228838071712328328843306868604223267430082476250031289111386554075507235619140890749226586960627425891165027575773899527151843957100604729050655499468273965365676635425643512622568877104991613143416548361882289872531929492966266589241390435796283886856494108038015908593659759442649289267891231233370864787216502985947587427499976015148867290521443540972183144322560989287993403276257505450903566910878200950050498748138177006078421885399215834679055363231796024572637313051142809997975829383113593886842905030615548365187334414986576626572709945335218302316974585860218354236627526789998871983242318007851112973254711384763164130812368517530397568357211122447291577632411868201330873749770649724664584931910689209273266716237972155094521293509679679188639121028673703592870439365985904787534978888232064234185884332728603718178498587929582594411733908808682843871136010409164159211147954735782608477209486374278676903968217823052983733854225085207900133055681775964179915225898467500534275504778286018191192185134700062560159814398118843013372902422075816271217441168393867803438088703366735453642092957869537542911086888294098076857636181045592676382529427459580323398060295400592579156848598273806304984575515978899816201496154375306741429141182134037640643883635820658781752675039083634856662576936007793352035809688183925957066262267994217521', -); -test(macro, '11', 0, '1'); -test(macro, '-11', 0, '1'); -test(macro, '11', 1, '11'); -test(macro, '-11', 1, '-11'); -test(macro, '11', 3, '1331'); -test(macro, '-11', 3, '-1331'); -test(macro, '11', 7, '19487171'); -test(macro, '-11', 7, '-19487171'); -test(macro, '11', 9, '2357947691'); -test(macro, '-11', 9, '-2357947691'); -test(macro, '11', 11, '285311670611'); -test(macro, '-11', 11, '-285311670611'); -test(macro, '11', 17, '505447028499293771'); -test(macro, '-11', 17, '-505447028499293771'); -test(macro, '11', 22, '81402749386839761113321'); -test(macro, '-11', 22, '81402749386839761113321'); -test(macro, '11', 24, '9849732675807611094711841'); -test(macro, '-11', 24, '9849732675807611094711841'); -test(macro, '11', 27, '13109994191499930367061460371'); -test(macro, '-11', 27, '-13109994191499930367061460371'); -test(macro, '11', 29, '1586309297171491574414436704891'); -test(macro, '-11', 29, '-1586309297171491574414436704891'); -test( - macro, - '11', - 1234, - '11983218693353866267692684359194000502433893845480769112172251205188147262289354049461429172488569661122876033605557421170789272790102054304092511689341645557874249802952871767405284987003806187594928847518777345850099915863264078051816617440620669835924344622459557434141694081118718006962588499405658476477809584051185924057025464163718833076869861008662963948775457304791091957146272768229564713967630639094659383688489828857998385412406001934065445969895732784144880158564496904866299896753946773061123748947095350178138399329492711931118102507186743010708942286629969813642204878306198565914755078983880064808436574100979762259478493960140042607880569732036310833444310215790281432505720437714904537904767412626253808859682743392379188494787465177304942343204339576610614978528053711125948630650946573610344095512008508992625585490923211491629695497720992580178320146672152256706875056491678710723022609578354722578101061602454247010516142562468962308895384683137775859149496917496435957009023897662611266558969297452444733968450168403551460556237438931715240285963118359275426150086656493777954817140258639584026557409436805416478575578840073580647683266895284248911727092735184253994397858925804638577468716770187699083797737507027525458211673613162334364880959262660197607632441', -); -test( - macro, - '-11', - 1234, - '11983218693353866267692684359194000502433893845480769112172251205188147262289354049461429172488569661122876033605557421170789272790102054304092511689341645557874249802952871767405284987003806187594928847518777345850099915863264078051816617440620669835924344622459557434141694081118718006962588499405658476477809584051185924057025464163718833076869861008662963948775457304791091957146272768229564713967630639094659383688489828857998385412406001934065445969895732784144880158564496904866299896753946773061123748947095350178138399329492711931118102507186743010708942286629969813642204878306198565914755078983880064808436574100979762259478493960140042607880569732036310833444310215790281432505720437714904537904767412626253808859682743392379188494787465177304942343204339576610614978528053711125948630650946573610344095512008508992625585490923211491629695497720992580178320146672152256706875056491678710723022609578354722578101061602454247010516142562468962308895384683137775859149496917496435957009023897662611266558969297452444733968450168403551460556237438931715240285963118359275426150086656493777954817140258639584026557409436805416478575578840073580647683266895284248911727092735184253994397858925804638577468716770187699083797737507027525458211673613162334364880959262660197607632441', -); -test( - macro, - '11', - 5678, - '1065776962422733390099998701350852375306774582971639100309613498738018463297402426284028524738823271322985272649725948115092991253107878527781609210894707854772049951003472314067831553881895690939206687522352568657440321602968389543267780665609966988582230996295164519798616549566676379590692798762716905683941763340478583251178705357020162093767335382720674351919299433767565974669460608726103203480874707475235760946929885758550631464242176556080700621170771150306343987986469041228052005627284421145796887853536588932524692770319694218582474445761213162153365490914843340179888987594736119906310580976352820314588543355972619484459495220871689392023112857825597955459918887431929154224173483293504587547665399509030344942605272570136172447400900121488107719512383240606334221292626608823849332333400482253520345477235442179195426136234693064612259799609047549032234897003107500108465053915738728979810144514094776056483728190563804640721019604885909118861940983487407937039944554294878572669564050159687664895605736084313761462824024676968707517184596167351978713169868322481182055851502456062238802586269146612231272427522079499528515959498333263466983785280259161881502475046417048213519584900610678927089224215919039112968768072827818708306560616332850558578446752780273726465248390043011232866170085126505517422418551900039852406583243467144607754086873525143407052846262179499389679942347532000823560325207132685549949066558071494494427946598444312782804755853495210071597142876358782604358201649556061239418307323404601244967442012437515731329817926308824617354000382199156471760900683632471277324956810127590967837960592617262960312465376355316455915879176664759553277776308042310559423721792898442749222107490339293940127243016498854242115145167447996864142048792438738560578225455082147842584858075118284318490977553362786437651112857419381043628238857484819676978075445230762210380626626912004719898874366572155465547173520667309054225283981508791442674778656040035468907369752869408514185313704067350389223145645763194281830994949130563721534905420232142720998287316636023688674050985251378185009914925807988317225071216640027871716722483316868791467166847104807602861728042597469553982173934183881854721408118637488166739219019898807239930452080477028419451221482169218590941548470167987081105665128401656215589475541679937253196949254758234290186798375277113144758530616146671086378878587968488456069580463733501978709324650086157580838543304059737187837840172970261310651170220832783959402177878176227431050767112633358910621278034506978615256025290080266327386921789544837403448128169941411317755734221724534993423771737584328270941785681037187637148965847831330028884230742250527433592894233763159902534751780862175154629552102145945586119235764832272990067006647822901592710351066659902000064017329218952050761426811476157880640667065247449451972208247978421550456277234547741925058712547416503369256196211239680164366047864051968708570583351534285698926517869625895514771976844313520579796558965092576627465235658048719487760146348808931495565346847366003973304701007063054233684522192162343464740701950442784465797167708293183479944132342976405589996322951258093432243177899159394041673341432298028719356007636825480992284923970510736838942942304796113387801478681602920972896373837595385277191717576279392952761700936522637224711546691229425008983033605153229822416869513005954335605693170930885249832778368398645533597288302148018420434619254347639616385151984552960650830068954346104302987832610586471252692718122275927836615526059882116390127451028052550923092000111263140958227160206219707410977980611517826815099866318452865266839478499873605810527128458400682829266213047212490751292505412839799091839878790386710181065160084894230231280531312918673011117069898789068313484780627491574837836376088397252997015833464534344451570629480561635620053916519436130021805563621848179479920844707168181116371097043308074403627884022121921874913710872985556815638427086651333779751907556934770310989869843884425304798400423634711778163856020448720206496290069493745603962153577775093497572698365374594076591461904206049396452233781439591258104765917225718355977433822381572720392535330998593120939566841352057738311318719931927026631838006769672045108443992445284929970269294270278680743013077174180453305089917742058685731225366141765610284466364224239657923316122018028323771071925305776184392902004619136458183176936490831946840938417871887775288789743276992617406109612755025092558440576560761222878309756084815155667190192960921003385227785262941734093931704345512521132798515611547442925571295279505831931283715748549845669395353133931794747206486070337327303879615849380818093267141506586465834431904895759614006956917248763890815129377994441625824333049728355566141085538225755137382489951163889065597959637090364281160499433447909053653936224421624718741987104354218067585258083011422152546594719663896981399037561028385236732212486414059132101618529606220469363058220156329055224342467340925139139929630506131648767286858276792072149267144670692471130323158321566298623976468399937857216321372392619400998408839149950057518963808345869653309993310768299116776379707325175676054902275922736269241390641779960744489235538753789112847068524247966967539956729499733460342777803955793449997285158138613067762195702203432660309455273766440576594246410536265644453872508630612565356986609709760894462294180493818840739169368085369286699229156832130169858213118001196840078980080715876252447472429116934369285480649794242527428955233670068043503668172668283633933776143476087412305215113096021310601587105393061779999730415570592566016145834001225399284902644145953391096153151308606014346031294960654945643001133160678398141361376867996289493175381235832216759220680742166229263430190948116635508223815277449847445410032258317401960451466607747028200896253295257428236276899079754883495683081', -); -test( - macro, - '-11', - 5678, - '1065776962422733390099998701350852375306774582971639100309613498738018463297402426284028524738823271322985272649725948115092991253107878527781609210894707854772049951003472314067831553881895690939206687522352568657440321602968389543267780665609966988582230996295164519798616549566676379590692798762716905683941763340478583251178705357020162093767335382720674351919299433767565974669460608726103203480874707475235760946929885758550631464242176556080700621170771150306343987986469041228052005627284421145796887853536588932524692770319694218582474445761213162153365490914843340179888987594736119906310580976352820314588543355972619484459495220871689392023112857825597955459918887431929154224173483293504587547665399509030344942605272570136172447400900121488107719512383240606334221292626608823849332333400482253520345477235442179195426136234693064612259799609047549032234897003107500108465053915738728979810144514094776056483728190563804640721019604885909118861940983487407937039944554294878572669564050159687664895605736084313761462824024676968707517184596167351978713169868322481182055851502456062238802586269146612231272427522079499528515959498333263466983785280259161881502475046417048213519584900610678927089224215919039112968768072827818708306560616332850558578446752780273726465248390043011232866170085126505517422418551900039852406583243467144607754086873525143407052846262179499389679942347532000823560325207132685549949066558071494494427946598444312782804755853495210071597142876358782604358201649556061239418307323404601244967442012437515731329817926308824617354000382199156471760900683632471277324956810127590967837960592617262960312465376355316455915879176664759553277776308042310559423721792898442749222107490339293940127243016498854242115145167447996864142048792438738560578225455082147842584858075118284318490977553362786437651112857419381043628238857484819676978075445230762210380626626912004719898874366572155465547173520667309054225283981508791442674778656040035468907369752869408514185313704067350389223145645763194281830994949130563721534905420232142720998287316636023688674050985251378185009914925807988317225071216640027871716722483316868791467166847104807602861728042597469553982173934183881854721408118637488166739219019898807239930452080477028419451221482169218590941548470167987081105665128401656215589475541679937253196949254758234290186798375277113144758530616146671086378878587968488456069580463733501978709324650086157580838543304059737187837840172970261310651170220832783959402177878176227431050767112633358910621278034506978615256025290080266327386921789544837403448128169941411317755734221724534993423771737584328270941785681037187637148965847831330028884230742250527433592894233763159902534751780862175154629552102145945586119235764832272990067006647822901592710351066659902000064017329218952050761426811476157880640667065247449451972208247978421550456277234547741925058712547416503369256196211239680164366047864051968708570583351534285698926517869625895514771976844313520579796558965092576627465235658048719487760146348808931495565346847366003973304701007063054233684522192162343464740701950442784465797167708293183479944132342976405589996322951258093432243177899159394041673341432298028719356007636825480992284923970510736838942942304796113387801478681602920972896373837595385277191717576279392952761700936522637224711546691229425008983033605153229822416869513005954335605693170930885249832778368398645533597288302148018420434619254347639616385151984552960650830068954346104302987832610586471252692718122275927836615526059882116390127451028052550923092000111263140958227160206219707410977980611517826815099866318452865266839478499873605810527128458400682829266213047212490751292505412839799091839878790386710181065160084894230231280531312918673011117069898789068313484780627491574837836376088397252997015833464534344451570629480561635620053916519436130021805563621848179479920844707168181116371097043308074403627884022121921874913710872985556815638427086651333779751907556934770310989869843884425304798400423634711778163856020448720206496290069493745603962153577775093497572698365374594076591461904206049396452233781439591258104765917225718355977433822381572720392535330998593120939566841352057738311318719931927026631838006769672045108443992445284929970269294270278680743013077174180453305089917742058685731225366141765610284466364224239657923316122018028323771071925305776184392902004619136458183176936490831946840938417871887775288789743276992617406109612755025092558440576560761222878309756084815155667190192960921003385227785262941734093931704345512521132798515611547442925571295279505831931283715748549845669395353133931794747206486070337327303879615849380818093267141506586465834431904895759614006956917248763890815129377994441625824333049728355566141085538225755137382489951163889065597959637090364281160499433447909053653936224421624718741987104354218067585258083011422152546594719663896981399037561028385236732212486414059132101618529606220469363058220156329055224342467340925139139929630506131648767286858276792072149267144670692471130323158321566298623976468399937857216321372392619400998408839149950057518963808345869653309993310768299116776379707325175676054902275922736269241390641779960744489235538753789112847068524247966967539956729499733460342777803955793449997285158138613067762195702203432660309455273766440576594246410536265644453872508630612565356986609709760894462294180493818840739169368085369286699229156832130169858213118001196840078980080715876252447472429116934369285480649794242527428955233670068043503668172668283633933776143476087412305215113096021310601587105393061779999730415570592566016145834001225399284902644145953391096153151308606014346031294960654945643001133160678398141361376867996289493175381235832216759220680742166229263430190948116635508223815277449847445410032258317401960451466607747028200896253295257428236276899079754883495683081', -); -test(macro, '17', 0, '1'); -test(macro, '-17', 0, '1'); -test(macro, '17', 1, '17'); -test(macro, '-17', 1, '-17'); -test(macro, '17', 3, '4913'); -test(macro, '-17', 3, '-4913'); -test(macro, '17', 7, '410338673'); -test(macro, '-17', 7, '-410338673'); -test(macro, '17', 9, '118587876497'); -test(macro, '-17', 9, '-118587876497'); -test(macro, '17', 11, '34271896307633'); -test(macro, '-17', 11, '-34271896307633'); -test(macro, '17', 17, '827240261886336764177'); -test(macro, '-17', 17, '-827240261886336764177'); -test(macro, '17', 22, '1174562876521148458974062689'); -test(macro, '-17', 22, '1174562876521148458974062689'); -test(macro, '17', 24, '339448671314611904643504117121'); -test(macro, '-17', 24, '339448671314611904643504117121'); -test(macro, '17', 27, '1667711322168688287513535727415473'); -test(macro, '-17', 27, '-1667711322168688287513535727415473'); -test(macro, '17', 29, '481968572106750915091411825223071697'); -test(macro, '-17', 29, '-481968572106750915091411825223071697'); -test( - macro, - '17', - 1234, - '2365750719195418700959936173439221488331849554433443272309037789270912117133978206777246165583614280813095899236078594286552848472860457643580615017539717857048793304325119681053421007826013802905479250885212839793760101742612296877478711932287387420109262614158330630362237192202151123468592153560375572873151822947436950242912080157786888545384847518810574795754691976973525697429044294851654461713242307440541746159573098284837473930094049306091573440131975480886198509578012017892791103610676499734889373927818577887242310104551008535893775377108954649457429588226369074071331951078940909959401201709240381177136083510255280740550175339832084572676328794889199725393235934601424964165016988318210336776289444267654575587266337284861333685818972410304844379843215873568783484299285855710739185984313729162892241201484427793478780366719828354369198742105822244711994746358620164097425507697349511284930229811697252220792819650825560346717292110648932265899796733644188721108873119505172872099646531092906043987147572277125354950545394615532850018465975565730363029206743959014462690377536775695776234592924640448812639061038539121473894456471681658974744379159553490945761899997224178778022075766625329855978704429033291722506766694214979844269409520158332260044608648267713490710210601126307243035021020433002092628988274703326841291915973218749244960354639698612598420531573152776417281665548298330678827921029701549454503621900176615327265802134551424622450618795022965384601079468969005231566796416059429914871329', -); -test( - macro, - '-17', - 1234, - '2365750719195418700959936173439221488331849554433443272309037789270912117133978206777246165583614280813095899236078594286552848472860457643580615017539717857048793304325119681053421007826013802905479250885212839793760101742612296877478711932287387420109262614158330630362237192202151123468592153560375572873151822947436950242912080157786888545384847518810574795754691976973525697429044294851654461713242307440541746159573098284837473930094049306091573440131975480886198509578012017892791103610676499734889373927818577887242310104551008535893775377108954649457429588226369074071331951078940909959401201709240381177136083510255280740550175339832084572676328794889199725393235934601424964165016988318210336776289444267654575587266337284861333685818972410304844379843215873568783484299285855710739185984313729162892241201484427793478780366719828354369198742105822244711994746358620164097425507697349511284930229811697252220792819650825560346717292110648932265899796733644188721108873119505172872099646531092906043987147572277125354950545394615532850018465975565730363029206743959014462690377536775695776234592924640448812639061038539121473894456471681658974744379159553490945761899997224178778022075766625329855978704429033291722506766694214979844269409520158332260044608648267713490710210601126307243035021020433002092628988274703326841291915973218749244960354639698612598420531573152776417281665548298330678827921029701549454503621900176615327265802134551424622450618795022965384601079468969005231566796416059429914871329', -); -test( - macro, - '17', - 5678, - '308301463160662792592974191225677550213805858865919919735981762675623786601714250489696698804852341045297420123063243922100400196696349793305072692507353336241216967013579955338321444377099377319922539877186220868052446496202732277247371505550502651392252286935974933884151213108283554369258213425365822337513947069960567344400310797289631047757394436944996398072856708476570135250826251807398908611346753721594187395239741456589520555880152964355709918481651414281037119345031864349473612190232783371634279010028835470052200853299387882937134502672486160490325572916770961984349270782004601755602396869480289583861432077292039522042728544628472407886559019506167070189042096361924625145764203394220016152058200833752782786135860272071163220664632628957715045743868317244354995167227549385742687044952230405548258021083955544683907569599512046698283062653360884689200605347962098694683370357258724260056117352725577527325470851942851786836586694378752609414985480451815306391204834718631347771140575410484669506656818267247739857567770208151137491950666879071411531164773778999066561543024242136809243170757624965045375519201614760897620552430403133361040466722500087079354845734867920025285926879314249326848120872229945829401869885167283900122714895079076317869209094125931991982545556531488000512974612556335371838867029549796298764189897495724664237888752067198837966134423345547661571313151671040573897238403514602328827651572079820723701139609625952452387726428497198778814867224019443231895553458612781145096614872436875589042063008282687051858429092860711826018500930659407306718573155390037651077626487553235826051751992178074784247327240446763311187915496267026614485771849109815253713934148711216787298996520671468152820643885099705983302989002284908552857617520501529946390075868206425878082496708806322673513995979106164216776193616172985959907688824822708649852983817019144075028883180470899174789547764945602382526461092533221644053611458447978077780558970501641646067073622734477217735505282263211128124481305514353186357540419010992434002107768783355740756446187324942325654652625852412169287153813508608016280113952446920176296614253376950196475669316351020403077722724490519629898377036323360129820529281045109963371249894530276099561144042482626338772593989844316087710972792550257456128886470019096822479564940726737877698151825386119418309553408271231027478809647742899313908009933334462963092648575508695193735333743379173370627653867407320126715177974457764503548774713620560056196952152990116210197349898408972339742529128594321078656213131646113348021113593500434299052367891502628806326549121118207042607447479186463436915417026432303558853528036464975473796918542444020373057871946369301364258538966068868254352995619682873466974346238932655967123889634837113714800967760011350882223310353543059601985301931618545990512349177473607469589077686942177079271505612848872737004531036693137411376221188948435205746764410417572244552151115770898205429797968294734548429417278840745724261982834336050319128899682414411262548690370173790043028979845800173387057519576117961404309649305131253106853311405290729585498843142932710693864698111280652528337779798996371020065243801932085317018569183094721517622383953097502437063509905231723076848695664475891217676900061772996514510444773379828633675940309305355017384694473467108649959260135277673044625735731445353762845612054986937722179046658335121624623887140876084354281345305162356789678255300384384362221940169560849412314449721012605468584753472048939293608001304951329291978795373421372496969569792459269771201979081563170756324976549131692045507222783153489641325969541556371425701402301211477683080268682892338248206661170350045844352061951383330942281351775350666794898243271686809285942972250079237128202766005910057022811233073148416980300503195301226425284939582119267754559346938405839108209948260224741026519729353522763156183432819133601211163851967797956224605731130210254259956239010777634280103656590161967025286273834863275135448484296586047436588377498080471091688749259494163596420313099632079876409348525630028055176035711873634035464870888160379725751723195018099253375258568577967864792488387641817874998840468383878650374885021482953160299619530112289571703664629650689171966549636405214013448300445958738210047255092576641861296921647468062688837053654674936187674808709795653883608126278103976777614235428024410406774617308906840440399533093675542694404899247309187944909110631946845342610548908241677763415814807299529431331306295147372426206682600091831666916348144604753853633093752578611067563482135824231785498536893195996043663278185036145372756479240008651658799543396796498313843752029567365904330978277771584083764680985424357979370673048412336161600105590795221468539510721486414696405244842077338791619491047555626214572469854774642809583879845753149299202220239018392390206481186381875779757172402492713818647299968359129028554409153515978523967576074137219417098042854838667104016609738651022464948341424258581649824364793277410362004657346730312486772187893045818208465017592301709242049247100206034557497898122997305711805266614983374701841598496819251246442389163596781052495386660654519709452526951157596940799622382556542978303127167636912967999455236012568054985444079556177250723837365747957344490952925271966201701550593265443332902956508294939313094240833285876555046619359268191001846635259161706865131541180784321186186894945212300349221818709758522540187015314739189058530961568234354902922125914842193133460218438518962244238370699624523924419568327136723141811138403931677301481592189660339567894761665454562699685520993156044186932965753836572801390460509640488798964928095419008854900677851241358987176646501215201974659363616049261017603457999596184581511549579905438019185941637728665384585389583535891202008231419334008863423647112514312757047826028932882729541950746057232359164344651932902110039997136484675561126583054833776169478582845219207488207389196029054365227406667723162110887854915641006891303598854753903506554856041472945272356941328283818164784067726584990924119024325130661086148657987548771738842769797564552756354942918282971676618299580653036928287938534922839104145089706750975511251679142746672018472326704754194244955633025397110493863802050335540295002732461604260398261242352490448735856721475625306260022338327634579483863218960189713021604374058340162879817478268896311320400935427024907872299937115878667674458494570901082210791903147151206004364128850910892512190179733983576746853124510692834110403304378183988508805646983947420299974549209519662950763156097018733065661357905142120460779273146947254095926981543175326111475835364495732470677817188832146552441552139930332238086701277874221108259025888256128861209127658043159023987114966310186989910006136268267279080051772647893114806659477299459033328734671642634822948069793513975896907315793907807201218951810262212834206364838330104666470691976814742557318317590520995786209', -); -test( - macro, - '-17', - 5678, - '308301463160662792592974191225677550213805858865919919735981762675623786601714250489696698804852341045297420123063243922100400196696349793305072692507353336241216967013579955338321444377099377319922539877186220868052446496202732277247371505550502651392252286935974933884151213108283554369258213425365822337513947069960567344400310797289631047757394436944996398072856708476570135250826251807398908611346753721594187395239741456589520555880152964355709918481651414281037119345031864349473612190232783371634279010028835470052200853299387882937134502672486160490325572916770961984349270782004601755602396869480289583861432077292039522042728544628472407886559019506167070189042096361924625145764203394220016152058200833752782786135860272071163220664632628957715045743868317244354995167227549385742687044952230405548258021083955544683907569599512046698283062653360884689200605347962098694683370357258724260056117352725577527325470851942851786836586694378752609414985480451815306391204834718631347771140575410484669506656818267247739857567770208151137491950666879071411531164773778999066561543024242136809243170757624965045375519201614760897620552430403133361040466722500087079354845734867920025285926879314249326848120872229945829401869885167283900122714895079076317869209094125931991982545556531488000512974612556335371838867029549796298764189897495724664237888752067198837966134423345547661571313151671040573897238403514602328827651572079820723701139609625952452387726428497198778814867224019443231895553458612781145096614872436875589042063008282687051858429092860711826018500930659407306718573155390037651077626487553235826051751992178074784247327240446763311187915496267026614485771849109815253713934148711216787298996520671468152820643885099705983302989002284908552857617520501529946390075868206425878082496708806322673513995979106164216776193616172985959907688824822708649852983817019144075028883180470899174789547764945602382526461092533221644053611458447978077780558970501641646067073622734477217735505282263211128124481305514353186357540419010992434002107768783355740756446187324942325654652625852412169287153813508608016280113952446920176296614253376950196475669316351020403077722724490519629898377036323360129820529281045109963371249894530276099561144042482626338772593989844316087710972792550257456128886470019096822479564940726737877698151825386119418309553408271231027478809647742899313908009933334462963092648575508695193735333743379173370627653867407320126715177974457764503548774713620560056196952152990116210197349898408972339742529128594321078656213131646113348021113593500434299052367891502628806326549121118207042607447479186463436915417026432303558853528036464975473796918542444020373057871946369301364258538966068868254352995619682873466974346238932655967123889634837113714800967760011350882223310353543059601985301931618545990512349177473607469589077686942177079271505612848872737004531036693137411376221188948435205746764410417572244552151115770898205429797968294734548429417278840745724261982834336050319128899682414411262548690370173790043028979845800173387057519576117961404309649305131253106853311405290729585498843142932710693864698111280652528337779798996371020065243801932085317018569183094721517622383953097502437063509905231723076848695664475891217676900061772996514510444773379828633675940309305355017384694473467108649959260135277673044625735731445353762845612054986937722179046658335121624623887140876084354281345305162356789678255300384384362221940169560849412314449721012605468584753472048939293608001304951329291978795373421372496969569792459269771201979081563170756324976549131692045507222783153489641325969541556371425701402301211477683080268682892338248206661170350045844352061951383330942281351775350666794898243271686809285942972250079237128202766005910057022811233073148416980300503195301226425284939582119267754559346938405839108209948260224741026519729353522763156183432819133601211163851967797956224605731130210254259956239010777634280103656590161967025286273834863275135448484296586047436588377498080471091688749259494163596420313099632079876409348525630028055176035711873634035464870888160379725751723195018099253375258568577967864792488387641817874998840468383878650374885021482953160299619530112289571703664629650689171966549636405214013448300445958738210047255092576641861296921647468062688837053654674936187674808709795653883608126278103976777614235428024410406774617308906840440399533093675542694404899247309187944909110631946845342610548908241677763415814807299529431331306295147372426206682600091831666916348144604753853633093752578611067563482135824231785498536893195996043663278185036145372756479240008651658799543396796498313843752029567365904330978277771584083764680985424357979370673048412336161600105590795221468539510721486414696405244842077338791619491047555626214572469854774642809583879845753149299202220239018392390206481186381875779757172402492713818647299968359129028554409153515978523967576074137219417098042854838667104016609738651022464948341424258581649824364793277410362004657346730312486772187893045818208465017592301709242049247100206034557497898122997305711805266614983374701841598496819251246442389163596781052495386660654519709452526951157596940799622382556542978303127167636912967999455236012568054985444079556177250723837365747957344490952925271966201701550593265443332902956508294939313094240833285876555046619359268191001846635259161706865131541180784321186186894945212300349221818709758522540187015314739189058530961568234354902922125914842193133460218438518962244238370699624523924419568327136723141811138403931677301481592189660339567894761665454562699685520993156044186932965753836572801390460509640488798964928095419008854900677851241358987176646501215201974659363616049261017603457999596184581511549579905438019185941637728665384585389583535891202008231419334008863423647112514312757047826028932882729541950746057232359164344651932902110039997136484675561126583054833776169478582845219207488207389196029054365227406667723162110887854915641006891303598854753903506554856041472945272356941328283818164784067726584990924119024325130661086148657987548771738842769797564552756354942918282971676618299580653036928287938534922839104145089706750975511251679142746672018472326704754194244955633025397110493863802050335540295002732461604260398261242352490448735856721475625306260022338327634579483863218960189713021604374058340162879817478268896311320400935427024907872299937115878667674458494570901082210791903147151206004364128850910892512190179733983576746853124510692834110403304378183988508805646983947420299974549209519662950763156097018733065661357905142120460779273146947254095926981543175326111475835364495732470677817188832146552441552139930332238086701277874221108259025888256128861209127658043159023987114966310186989910006136268267279080051772647893114806659477299459033328734671642634822948069793513975896907315793907807201218951810262212834206364838330104666470691976814742557318317590520995786209', -); -test(macro, '22', 0, '1'); -test(macro, '-22', 0, '1'); -test(macro, '22', 1, '22'); -test(macro, '-22', 1, '-22'); -test(macro, '22', 3, '10648'); -test(macro, '-22', 3, '-10648'); -test(macro, '22', 7, '2494357888'); -test(macro, '-22', 7, '-2494357888'); -test(macro, '22', 9, '1207269217792'); -test(macro, '-22', 9, '-1207269217792'); -test(macro, '22', 11, '584318301411328'); -test(macro, '-22', 11, '-584318301411328'); -test(macro, '22', 17, '66249952919459433152512'); -test(macro, '-22', 17, '-66249952919459433152512'); -test(macro, '22', 22, '341427877364219557396646723584'); -test(macro, '-22', 22, '341427877364219557396646723584'); -test(macro, '22', 24, '165251092644282265779977014214656'); -test(macro, '-22', 24, '165251092644282265779977014214656'); -test(macro, '22', 27, '1759593634476317566025195247357657088'); -test(macro, '-22', 27, '-1759593634476317566025195247357657088'); -test(macro, '22', 29, '851643319086537701956194499721106030592'); -test(macro, '-22', 29, '-851643319086537701956194499721106030592'); -test( - macro, - '22', - 1234, - '3544770596427666704933670825514058656840289167033434034813245091750883162270446675859397841986880345238161021960809170374322988214534191585053363506454126462213757244784862172250548800355120891239982462620296434675754206726427100313150523472266151826654642293138772262710079764335312817589977974888511704681598808553789636057965795110640986410281597921902662990963638641278281253781683699119666661945433104346601274970659774893661365968347766707077408549681767565454620843792569318870542401828729517938364411892509820193464655128629664809734022850771731500407885408815335930002147542787627415049845408189806745107445132307539157002401311183617949986742914159513317593667951549591942294545010053084686720365553135398975223690151357594502438362943103211174888290826883518964968656962099365383745446040058868947352605005471883468803102923319135160194367582819156826127917537651473185148386098880353425069599001396856273342875688276177114278359156141134393159654758637663041409089129911594364800818125391217718986756939362789014002086984204053324062930069928284955781180175025313587891151051182531528712430068603601480445127763661852050046817311966022046189931948955290807404661752447837636846919052423707195121151844536365697282035619507227238494415828142354268295050195101293247644044457267714935452707723243836958166570458923766194943739329318567831418083291367602614610628703776858094904109993034272453854415127335371407800891291417423473199819581953311554881626790599515656538382928587235599730899217327975918421664202906795230685640597210322674275525454392606193005351353121325240801341129111396762030413616120113277356128432334929643219670987389108486144', -); -test( - macro, - '-22', - 1234, - '3544770596427666704933670825514058656840289167033434034813245091750883162270446675859397841986880345238161021960809170374322988214534191585053363506454126462213757244784862172250548800355120891239982462620296434675754206726427100313150523472266151826654642293138772262710079764335312817589977974888511704681598808553789636057965795110640986410281597921902662990963638641278281253781683699119666661945433104346601274970659774893661365968347766707077408549681767565454620843792569318870542401828729517938364411892509820193464655128629664809734022850771731500407885408815335930002147542787627415049845408189806745107445132307539157002401311183617949986742914159513317593667951549591942294545010053084686720365553135398975223690151357594502438362943103211174888290826883518964968656962099365383745446040058868947352605005471883468803102923319135160194367582819156826127917537651473185148386098880353425069599001396856273342875688276177114278359156141134393159654758637663041409089129911594364800818125391217718986756939362789014002086984204053324062930069928284955781180175025313587891151051182531528712430068603601480445127763661852050046817311966022046189931948955290807404661752447837636846919052423707195121151844536365697282035619507227238494415828142354268295050195101293247644044457267714935452707723243836958166570458923766194943739329318567831418083291367602614610628703776858094904109993034272453854415127335371407800891291417423473199819581953311554881626790599515656538382928587235599730899217327975918421664202906795230685640597210322674275525454392606193005351353121325240801341129111396762030413616120113277356128432334929643219670987389108486144', -); -test( - macro, - '22', - 5678, - '188791183279459428032979917309231847200926168850386143505884770467168693375931895922274556902557057349070006829787284038833847205657221323086778299516173672693704766555252528139265360902778722183082662200078678453997329891537034422822575803367053904655840627755946766693757142547502052565953996363335560763158268551572751512866106778431138820615713754627823698314270698590631138259164788157389001919104523833942391091963057065922406993273787102400618472074518275818851551644852629873956788856970633475366447672782530547865741999862312938533203178291710002234858638631656516476317172691637416817888111298556457298999099751473928302529193993166300867967794207259256002142542750751106986007283388678487258401453058580610853029932752094378405105178931730860876546015936460719383487738652762837137015685750382657573311754947701500407222582281566094817174073472144811366744070419797423798544094403873094199877877853150049457040475968921734523430878675521293370360945777794830877356184006978877091885754906917991440962876015220987468233257346287046662479844768237469373754719329682306024899040352120465381043236796342435914139828201123414926711331244145922850129403791095391423842253313316894102060772814826064451102647169447140443080993464221839521726629053885287095964136013255179000177247350196068604054496565177879080513643431866167726634133898846619131635347475126027711691279901001090402999384232358268658557899584767972188754606811562218767608264930824961710835118809206445233999791639003838245009290187741328535591220360093897367352614744829186871911800346161094937089356183566076527889043149104246450652971623538711614388121183532572879725745001292012401206003161879654577991659939731216517542635503622655459132088797820236545384884194315725633695427351662866125654652037894893851700035152604437639749253793788001370984215018294940417131355604149159082298240255347039270323737033829938556652804213810754530366216244627359047801328010962028910363918606863009301850889578079483970837777414556113020756651244678945855588115566911935996323508669528384387516643242397299023508751043526450954773213552893031292302108980643471326696435902444257202942430483248169515243504400730148395387415129983474005341937524404093610934807837061631884341923871640332973833712473410511352497840950354717471207835203039728832245686598798557108303180717754281741624836460482499750093903647140024989550279346101803707104317524947924300904078402788855449767432346556247835035384556446005558861060448421141387365651441511783999354650683395274128594606161258833809729090469884846090442597192736831693121095035897380375918668414251031197753973301724588916035485541075323904538088914655589426133179024612467018336059489439900282543046314110365187230735791452277032816340183238147712040823773524149282426416491420492939282622735636049912086266615529452977045894296591781274478366606588824311816021589425349467712419121696503212958985567622927656183375686142819491308359745612172611203958699633657019779838962795602648062265858350278662630718999151751658417214897098590866440999092201908970405217151181916677531588126391148866486355596584519721899405760444541383544962722489875114029357216033135513811415437737779643777561247514270920525940156015070057021445589556923682615671082792479847690833002924073136137432397339370513067790302967340822556367795292986667622422991835236165285127792424630052345714281497090373958007873533009712803180058310323179851564088273446186130049950558067667847928286576209829335469946077179104819764051749338467796811081169318581581642850701153588880097116565036806635144191514941671379189491284471206062525996710209192630982325515553569877748865098007911563238370520552779962974699534249328592557597174798475291743896129283115647913205511724485683652165879255348366405023438903433484562441296977463064589755118577364288557833533525712147910220705629283320345221392498374920388002113076781370533887021362629864905597326338617774056928683324516257011958993549660242683378628080041274187041027497798834136787655367653313087762082861764871834770591798602251128431476037857054662472011944666943267798513485310853118021197803091306619087873370818101335777419097062662406323667850528298645645659705841302522876053300363978267616708413039423577121433189797240232888355212252359572984976125208566821140812480736284072108352440262297665734819819192122502735544582352754969285563661193235781572915221488949701772581090470157333949943304303258562699351706132291487263002827565568137178391760246763425471476903399001677140103838451942491852797942220150718465024075126021867404930949262237514847293928201986505952400034942909184404021589066392741316625432520165649180730478556845798056299390529868233644331355976433410122475395339372683857077054367193114853723272384165320308359895327456012695111158341679642973786987974118879672101864000622440671637727905844446346659140267379540618189466479973512691352669908635579670046572643071543414288852945575507001364000587388365403163906923211010169649609787771443144617832964226341728880822040252791050573628058886465561125429540997997868877363781470212869288169031000314873670199023295575975029256888216051199783236003631198408646449546200837126408047806205375568516286244938833513923703107122664057553162916061895211874413026882293647396162003729561243896593367071601927468297455059908329773843490942712555322638331213927467737996161390460580291397428087241641827588245090045532168071664305848368946557531242866689515860672755630196510501059011076815782465524313305009301928730197566296410986829702452451693715022525438145214864666547710131393893422930433170192612410872699695903278923467086552431305253131022041442224030817136355438528522927710943963127661600938420524965868054868420789110281366652020715320237791007498809737701793479928444775909635220385965554432486139403818709288893492972588178924163488669440430698055258217332383878998815578776861203408118636769740672061660441927713102293878635124860434685746066579552625545433283636852639248738646856738605099028379736959929344991408860138578579292810759278795009828170173218117855426563489356914140296451669797511966308454520777982547536269136517098058706965105246074767227371117788844144579058151777933868930309861162765115846938463381459853947747275772776398557035107245698846181277540908832896814422527395488764190929404319672627395382255601482932675915638164367605784383912597789157118099369129866134453961147524445310724935291432570358456707042196935301261866358927798468810349341142291611156159359534617856444941265047694063906146162911324572161847512820145217043951957402547150640394819164257476384755090115583219631277624937601796185647361374464816722286079605798681157282804842881477768712666527405194818777681881080754221642693036637898043597600173291293530540776397593912983219493509839629946441187964692468617078532810433116136093659551535138860229829786694832025732595062223913257013909834336129848617643821876714991430811032042401672948443617106295564657838664397093430728751201194167005351810695181731189639616620396686825283143974008053920667467718924710366948369410543884199762061772961627365614073985761451542908159022475474594645453428260577023270323956122594107262708230204278635766614607705687764981980866116553659699581936921712862570741253541801805383105858152652730146528763628550254584923431153812726414403489380619446609235095663174700659695093931838433555356529154564055522469749278362012539004460570850761165655051971287648503799979759701767311217436978364357210522552286818202064756315420591610749979193377628867887418264504475624922321666517244630230702755729863166168476152067458807632513614287747416064', -); -test( - macro, - '-22', - 5678, - '188791183279459428032979917309231847200926168850386143505884770467168693375931895922274556902557057349070006829787284038833847205657221323086778299516173672693704766555252528139265360902778722183082662200078678453997329891537034422822575803367053904655840627755946766693757142547502052565953996363335560763158268551572751512866106778431138820615713754627823698314270698590631138259164788157389001919104523833942391091963057065922406993273787102400618472074518275818851551644852629873956788856970633475366447672782530547865741999862312938533203178291710002234858638631656516476317172691637416817888111298556457298999099751473928302529193993166300867967794207259256002142542750751106986007283388678487258401453058580610853029932752094378405105178931730860876546015936460719383487738652762837137015685750382657573311754947701500407222582281566094817174073472144811366744070419797423798544094403873094199877877853150049457040475968921734523430878675521293370360945777794830877356184006978877091885754906917991440962876015220987468233257346287046662479844768237469373754719329682306024899040352120465381043236796342435914139828201123414926711331244145922850129403791095391423842253313316894102060772814826064451102647169447140443080993464221839521726629053885287095964136013255179000177247350196068604054496565177879080513643431866167726634133898846619131635347475126027711691279901001090402999384232358268658557899584767972188754606811562218767608264930824961710835118809206445233999791639003838245009290187741328535591220360093897367352614744829186871911800346161094937089356183566076527889043149104246450652971623538711614388121183532572879725745001292012401206003161879654577991659939731216517542635503622655459132088797820236545384884194315725633695427351662866125654652037894893851700035152604437639749253793788001370984215018294940417131355604149159082298240255347039270323737033829938556652804213810754530366216244627359047801328010962028910363918606863009301850889578079483970837777414556113020756651244678945855588115566911935996323508669528384387516643242397299023508751043526450954773213552893031292302108980643471326696435902444257202942430483248169515243504400730148395387415129983474005341937524404093610934807837061631884341923871640332973833712473410511352497840950354717471207835203039728832245686598798557108303180717754281741624836460482499750093903647140024989550279346101803707104317524947924300904078402788855449767432346556247835035384556446005558861060448421141387365651441511783999354650683395274128594606161258833809729090469884846090442597192736831693121095035897380375918668414251031197753973301724588916035485541075323904538088914655589426133179024612467018336059489439900282543046314110365187230735791452277032816340183238147712040823773524149282426416491420492939282622735636049912086266615529452977045894296591781274478366606588824311816021589425349467712419121696503212958985567622927656183375686142819491308359745612172611203958699633657019779838962795602648062265858350278662630718999151751658417214897098590866440999092201908970405217151181916677531588126391148866486355596584519721899405760444541383544962722489875114029357216033135513811415437737779643777561247514270920525940156015070057021445589556923682615671082792479847690833002924073136137432397339370513067790302967340822556367795292986667622422991835236165285127792424630052345714281497090373958007873533009712803180058310323179851564088273446186130049950558067667847928286576209829335469946077179104819764051749338467796811081169318581581642850701153588880097116565036806635144191514941671379189491284471206062525996710209192630982325515553569877748865098007911563238370520552779962974699534249328592557597174798475291743896129283115647913205511724485683652165879255348366405023438903433484562441296977463064589755118577364288557833533525712147910220705629283320345221392498374920388002113076781370533887021362629864905597326338617774056928683324516257011958993549660242683378628080041274187041027497798834136787655367653313087762082861764871834770591798602251128431476037857054662472011944666943267798513485310853118021197803091306619087873370818101335777419097062662406323667850528298645645659705841302522876053300363978267616708413039423577121433189797240232888355212252359572984976125208566821140812480736284072108352440262297665734819819192122502735544582352754969285563661193235781572915221488949701772581090470157333949943304303258562699351706132291487263002827565568137178391760246763425471476903399001677140103838451942491852797942220150718465024075126021867404930949262237514847293928201986505952400034942909184404021589066392741316625432520165649180730478556845798056299390529868233644331355976433410122475395339372683857077054367193114853723272384165320308359895327456012695111158341679642973786987974118879672101864000622440671637727905844446346659140267379540618189466479973512691352669908635579670046572643071543414288852945575507001364000587388365403163906923211010169649609787771443144617832964226341728880822040252791050573628058886465561125429540997997868877363781470212869288169031000314873670199023295575975029256888216051199783236003631198408646449546200837126408047806205375568516286244938833513923703107122664057553162916061895211874413026882293647396162003729561243896593367071601927468297455059908329773843490942712555322638331213927467737996161390460580291397428087241641827588245090045532168071664305848368946557531242866689515860672755630196510501059011076815782465524313305009301928730197566296410986829702452451693715022525438145214864666547710131393893422930433170192612410872699695903278923467086552431305253131022041442224030817136355438528522927710943963127661600938420524965868054868420789110281366652020715320237791007498809737701793479928444775909635220385965554432486139403818709288893492972588178924163488669440430698055258217332383878998815578776861203408118636769740672061660441927713102293878635124860434685746066579552625545433283636852639248738646856738605099028379736959929344991408860138578579292810759278795009828170173218117855426563489356914140296451669797511966308454520777982547536269136517098058706965105246074767227371117788844144579058151777933868930309861162765115846938463381459853947747275772776398557035107245698846181277540908832896814422527395488764190929404319672627395382255601482932675915638164367605784383912597789157118099369129866134453961147524445310724935291432570358456707042196935301261866358927798468810349341142291611156159359534617856444941265047694063906146162911324572161847512820145217043951957402547150640394819164257476384755090115583219631277624937601796185647361374464816722286079605798681157282804842881477768712666527405194818777681881080754221642693036637898043597600173291293530540776397593912983219493509839629946441187964692468617078532810433116136093659551535138860229829786694832025732595062223913257013909834336129848617643821876714991430811032042401672948443617106295564657838664397093430728751201194167005351810695181731189639616620396686825283143974008053920667467718924710366948369410543884199762061772961627365614073985761451542908159022475474594645453428260577023270323956122594107262708230204278635766614607705687764981980866116553659699581936921712862570741253541801805383105858152652730146528763628550254584923431153812726414403489380619446609235095663174700659695093931838433555356529154564055522469749278362012539004460570850761165655051971287648503799979759701767311217436978364357210522552286818202064756315420591610749979193377628867887418264504475624922321666517244630230702755729863166168476152067458807632513614287747416064', -); -test(macro, '24', 0, '1'); -test(macro, '-24', 0, '1'); -test(macro, '24', 1, '24'); -test(macro, '-24', 1, '-24'); -test(macro, '24', 3, '13824'); -test(macro, '-24', 3, '-13824'); -test(macro, '24', 7, '4586471424'); -test(macro, '-24', 7, '-4586471424'); -test(macro, '24', 9, '2641807540224'); -test(macro, '-24', 9, '-2641807540224'); -test(macro, '24', 11, '1521681143169024'); -test(macro, '-24', 11, '-1521681143169024'); -test(macro, '24', 17, '290797794982682557415424'); -test(macro, '-24', 17, '-290797794982682557415424'); -test(macro, '24', 22, '2315513501476187716057433112576'); -test(macro, '-24', 22, '2315513501476187716057433112576'); -test(macro, '24', 24, '1333735776850284124449081472843776'); -test(macro, '-24', 24, '1333735776850284124449081472843776'); -test(macro, '24', 27, '18437563379178327736384102280592359424'); -test(macro, '-24', 27, '-18437563379178327736384102280592359424'); -test(macro, '24', 29, '10620036506406716776157242913621199028224'); -test(macro, '-24', 29, '-10620036506406716776157242913621199028224'); -test( - macro, - '24', - 1234, - '151590600073425387047449072838201737923790545622778515405542489295365280374802003092345748753681766769342781749881287249346464958055559009581857595198530089819230481306713155507019243375785757736393010981297487306518434496622971579086045332205893329146303230768285811255525374621247345141815714309058936253285898983419720608226966436915189967268919455309262250618242751360361248909034678867178267283386443504378478143195886936482599662011569578168577981039494263767900563281750273077550310292671674973097829744745890473331477918697103083690536733167341918362953786259364594330084180149751256516756030378850936663791973239733978417672189517102102223884258181339830461602957890003315317105400603981501400219540598427784828262715802695138377182060865841593833485720205274139142676664443049548450410277812263367703519777502927932788452627831274636998616672291216489574557549335055172197580577132711118453026428882649878235139444805201982069512799047951007377619920034219848761549071361411729427628794049204602980944425540332659900016630759739316868023749785700349807321646264995322781924302276013058208345925931493883895500465669887594678839788578637461303074752727476500990640364376722701859400316730559885693050235239674548455869510362677791910042980988146640583541719495331021584874341075294784062883967560447377347188388603280434006674600263225696860648015867438392697049466565415507219522458255386701717251429282388492292922044650917640291089769306296653188826596134691225361787940784064160312363042310597352769798472903809450672123731170381463659456013676278088123310449702495131987916252551416683646406232220563855513976356100126013273624446723135664155744771247145879322648352616000381514511103819776', -); -test( - macro, - '-24', - 1234, - '151590600073425387047449072838201737923790545622778515405542489295365280374802003092345748753681766769342781749881287249346464958055559009581857595198530089819230481306713155507019243375785757736393010981297487306518434496622971579086045332205893329146303230768285811255525374621247345141815714309058936253285898983419720608226966436915189967268919455309262250618242751360361248909034678867178267283386443504378478143195886936482599662011569578168577981039494263767900563281750273077550310292671674973097829744745890473331477918697103083690536733167341918362953786259364594330084180149751256516756030378850936663791973239733978417672189517102102223884258181339830461602957890003315317105400603981501400219540598427784828262715802695138377182060865841593833485720205274139142676664443049548450410277812263367703519777502927932788452627831274636998616672291216489574557549335055172197580577132711118453026428882649878235139444805201982069512799047951007377619920034219848761549071361411729427628794049204602980944425540332659900016630759739316868023749785700349807321646264995322781924302276013058208345925931493883895500465669887594678839788578637461303074752727476500990640364376722701859400316730559885693050235239674548455869510362677791910042980988146640583541719495331021584874341075294784062883967560447377347188388603280434006674600263225696860648015867438392697049466565415507219522458255386701717251429282388492292922044650917640291089769306296653188826596134691225361787940784064160312363042310597352769798472903809450672123731170381463659456013676278088123310449702495131987916252551416683646406232220563855513976356100126013273624446723135664155744771247145879322648352616000381514511103819776', -); -test( - macro, - '24', - 5678, - '6909242543227743353809302095921095536524473561057165844581679410386766748488604299037026802190036290972523220194842752741485565945649373120593235468335848253481678944344897925015389714826413349410177631790045031943248773428879772739522827289604213275638780181896952443263073559712416131489957618900530740123400118237435413354649143060792875091318278585372437653470273949962335683216876622997736142741297958867176104235205056075719300228586105300420306369433989133325438387954921091906656969473369516356480833865066363304713540618192703365037455056012113960923122124179128736981338610956142771571808684231131105687569641388188446317730999584880794042484851478768133389844980164151720217542320262939508347691682342138522778060463084758675137561278861799859513960422378371775012031341809600887021827399844120518619103264164650677563352321974137647628478200600886109391143827381751378326104568910362334391415559848713463581352282420781294283758639369444314274599463207309901919833477647095250455332103956624216723089194770241296308302890710708138463591594108491375387092442160498438129101391736935004797211781736084624679135725046642935877005904500941008512545713383636775910913769118763901254831863898567559039792892496993193767213865404695189447620717191889574607271221253734214207606509303815710653198438402041521568515611813364721395336273048987799371934481049393697436377986134414568848925779333002134965587464106528152928197340289146528067712765151185247134251516207138782552793628345378997820905660194178001186994530020474952912269460972371580105721313532384574354540871635624041776046333388469745473028713013516683096356715177489532374407329471698695330614689214238225012907430432633909454857348989628051205236149551583947299465167194467668846336660944015180433931614586767779054115885111857540745528169992322163207044044488670657531868958992608214820354213074535958852759290564716927478198823333373374937720003672027398087124135343370691960382869258899427129220320143902491278793813238430465235860186960018237027526759813434944109474246741949527335246220480560254865111600632880608044682824898931874699864943855203431042365227377620680321459660987508307256592281727918306852635765535692503733218735444193207821083815581499399442219650000118107924012043499451238573570094079990109299190701814648807629227553766337073738504785496741973216586368345759189450452701067651649687981494044123926355817855226945627140031748054123594178696095671207794087457165269491338522780645313431934736643701650275328610821351006893740759674097541752357384338680350586790224882237683629538804015848469557782536191568984440803205429574817416905810035999083705208747035308838067377457376573948667705334690478735291850144203728342247634285563284902811919599506802960145211594874021503961512312094455587567697236904427829310783955019968993798633410220915273077833273759995480078554390567958801041571463441272562445362793890427049722892579012150812992897784399765836371711342270697399079409268621338465141537827604272596264561524757775919137279622148165105100726581985370376533708520083031902822380651049138314828258157760660361052917356148361076858029197983199714799549388753138873630163899577287697011072200217713083219980223308329072386564251855404194759034472140811253397135777998749327737590240550674739896553325406340850660822401505867952863442378032198550214676960873593184653003702714053785570797139346858405632080994993407154375607762459908870347788282713628065134448424324925307478350063149225594053973115267392759652869926859055261981795715793911665450618835722442776629043819843412433877325397811994145386781513794026045770684736082651288118224886713369764471121039811165405122248681255438916750835952141059316087666360985121458782402604238437689336401689176904961406119640521283036564242883812119616205627240236429984215840153559625562378652590836660740334768903772785794796630784565702603904128880950290899077458848713352239690752094902536139625944326846369933673626859584112711752192959568868026727635227118775593609034554724305741667971932241251649212234621343015740929858616626107670522527456130285503983446125409978068781856751731806377464920495450984236307279195922116693350211579310114468642544808587506381899146228392160338911761298983523394475914069925661336317688601614635176466936516650628457951262007237173667306984959634154161894116260039666735252234838350152349621573967073004378209996258899425957230823935962484203146411470794692397709720438221504023967184703626974385880417280024680786833273012433711625620042440253039851842539066103583671616276204858517722243909738410395578467951278134847051746601519549418794912211694740522839231762718034975617793333279450013015728897326891841305278169840750523025407888699660353086878542323408902020520745137853306948470924526832755671922980299901111454489829178447374350297734241924593197533476648287362705907326587903971144933195960309922016559115259145542602390960186986114826396112061139400167607740086448386211148049775587962761029591347975930271748327096753101637755673736334797475756177782477162997340502006754139409837932248709217588171272019845846608674183857309614487497423529281774820812855625200995143972487433890984243531847462852919240554641115522799596773636837906026144057598069511617898449948350572214384921080971973902502402211568802750379122998511274466017974941804703068336349215856446000530541951506765590932187755221324429657770293929726963214364914920312944839250592743611686981542097230343416941015181738191936768424805774791532673824342775520989922696032234542390090970378211787898110639660594600049631415764918868664882579924419113193629865077574463611875775532515680395533801486247525366388744886221612290889104531414904759924423276133269774474452875660758985017677276475305727162499245682784233172420800860481499133924145865006672545584647252606595826412236376706363585768675313853908404643815973889284292155410703372372413690775754902752855223760995153783326936793360537270982814844058735862825288469622833678311343943432205861271223777059946323093642457760026188705359296753808062709160061509562758124516997994361930873438768495782976556725650123698976773727667700766538233502587452020369593449922805037117490069737863202092655675092095120263618908362070898189610949764500023308769612177756951169777556263087771050269419640346318095925480284387495101736136602935813966818000418340535260863387002103707013222602870150906297763302008471389096475403406466296868498675202862934711769313692649420019010134057017438532712341527913711423268858441655875081926096567951606219719933592384316299968711193818524843736420584441099884547446077376494324792588069639621837526038238059880241227778527626618221494264760180657732801612348589103290695260992552373632950395780820971888676534078241816018476901814022905750537014600909836985401547164897051750176229167184596483534227572123935968337358752623038645346798033051576788492613747977196321371756084172394656509906994497839796532944821661702141307321688426555797056528768304358309636187850354312111960227634944375652263825013063956181739704664262214737743372154205999348652610776761883817832581027315985029870825344987010322787125818214235132013611644153949859858447569681743008753567948866312695912331296212062406828770679518938594754011864087516302762316464021883336600792442268009755925214689196103335236650748927588009005181069463851717820411294243164434618318426347580730703078170070907659408761721872488572982052027987813740488362497448333259178540819360984769894490609499528923446089556631606201168915777672445957547945071192408471582321347458393347744642123820014403943301956456199036248285841251751630923650699885800543144864303330551321206054023250603498937703173818262472928828604335469562756457727795232009580481882359659372911042201823035731975439128565006789723919934319797028003654293808085441085447766777266176', -); -test( - macro, - '-24', - 5678, - '6909242543227743353809302095921095536524473561057165844581679410386766748488604299037026802190036290972523220194842752741485565945649373120593235468335848253481678944344897925015389714826413349410177631790045031943248773428879772739522827289604213275638780181896952443263073559712416131489957618900530740123400118237435413354649143060792875091318278585372437653470273949962335683216876622997736142741297958867176104235205056075719300228586105300420306369433989133325438387954921091906656969473369516356480833865066363304713540618192703365037455056012113960923122124179128736981338610956142771571808684231131105687569641388188446317730999584880794042484851478768133389844980164151720217542320262939508347691682342138522778060463084758675137561278861799859513960422378371775012031341809600887021827399844120518619103264164650677563352321974137647628478200600886109391143827381751378326104568910362334391415559848713463581352282420781294283758639369444314274599463207309901919833477647095250455332103956624216723089194770241296308302890710708138463591594108491375387092442160498438129101391736935004797211781736084624679135725046642935877005904500941008512545713383636775910913769118763901254831863898567559039792892496993193767213865404695189447620717191889574607271221253734214207606509303815710653198438402041521568515611813364721395336273048987799371934481049393697436377986134414568848925779333002134965587464106528152928197340289146528067712765151185247134251516207138782552793628345378997820905660194178001186994530020474952912269460972371580105721313532384574354540871635624041776046333388469745473028713013516683096356715177489532374407329471698695330614689214238225012907430432633909454857348989628051205236149551583947299465167194467668846336660944015180433931614586767779054115885111857540745528169992322163207044044488670657531868958992608214820354213074535958852759290564716927478198823333373374937720003672027398087124135343370691960382869258899427129220320143902491278793813238430465235860186960018237027526759813434944109474246741949527335246220480560254865111600632880608044682824898931874699864943855203431042365227377620680321459660987508307256592281727918306852635765535692503733218735444193207821083815581499399442219650000118107924012043499451238573570094079990109299190701814648807629227553766337073738504785496741973216586368345759189450452701067651649687981494044123926355817855226945627140031748054123594178696095671207794087457165269491338522780645313431934736643701650275328610821351006893740759674097541752357384338680350586790224882237683629538804015848469557782536191568984440803205429574817416905810035999083705208747035308838067377457376573948667705334690478735291850144203728342247634285563284902811919599506802960145211594874021503961512312094455587567697236904427829310783955019968993798633410220915273077833273759995480078554390567958801041571463441272562445362793890427049722892579012150812992897784399765836371711342270697399079409268621338465141537827604272596264561524757775919137279622148165105100726581985370376533708520083031902822380651049138314828258157760660361052917356148361076858029197983199714799549388753138873630163899577287697011072200217713083219980223308329072386564251855404194759034472140811253397135777998749327737590240550674739896553325406340850660822401505867952863442378032198550214676960873593184653003702714053785570797139346858405632080994993407154375607762459908870347788282713628065134448424324925307478350063149225594053973115267392759652869926859055261981795715793911665450618835722442776629043819843412433877325397811994145386781513794026045770684736082651288118224886713369764471121039811165405122248681255438916750835952141059316087666360985121458782402604238437689336401689176904961406119640521283036564242883812119616205627240236429984215840153559625562378652590836660740334768903772785794796630784565702603904128880950290899077458848713352239690752094902536139625944326846369933673626859584112711752192959568868026727635227118775593609034554724305741667971932241251649212234621343015740929858616626107670522527456130285503983446125409978068781856751731806377464920495450984236307279195922116693350211579310114468642544808587506381899146228392160338911761298983523394475914069925661336317688601614635176466936516650628457951262007237173667306984959634154161894116260039666735252234838350152349621573967073004378209996258899425957230823935962484203146411470794692397709720438221504023967184703626974385880417280024680786833273012433711625620042440253039851842539066103583671616276204858517722243909738410395578467951278134847051746601519549418794912211694740522839231762718034975617793333279450013015728897326891841305278169840750523025407888699660353086878542323408902020520745137853306948470924526832755671922980299901111454489829178447374350297734241924593197533476648287362705907326587903971144933195960309922016559115259145542602390960186986114826396112061139400167607740086448386211148049775587962761029591347975930271748327096753101637755673736334797475756177782477162997340502006754139409837932248709217588171272019845846608674183857309614487497423529281774820812855625200995143972487433890984243531847462852919240554641115522799596773636837906026144057598069511617898449948350572214384921080971973902502402211568802750379122998511274466017974941804703068336349215856446000530541951506765590932187755221324429657770293929726963214364914920312944839250592743611686981542097230343416941015181738191936768424805774791532673824342775520989922696032234542390090970378211787898110639660594600049631415764918868664882579924419113193629865077574463611875775532515680395533801486247525366388744886221612290889104531414904759924423276133269774474452875660758985017677276475305727162499245682784233172420800860481499133924145865006672545584647252606595826412236376706363585768675313853908404643815973889284292155410703372372413690775754902752855223760995153783326936793360537270982814844058735862825288469622833678311343943432205861271223777059946323093642457760026188705359296753808062709160061509562758124516997994361930873438768495782976556725650123698976773727667700766538233502587452020369593449922805037117490069737863202092655675092095120263618908362070898189610949764500023308769612177756951169777556263087771050269419640346318095925480284387495101736136602935813966818000418340535260863387002103707013222602870150906297763302008471389096475403406466296868498675202862934711769313692649420019010134057017438532712341527913711423268858441655875081926096567951606219719933592384316299968711193818524843736420584441099884547446077376494324792588069639621837526038238059880241227778527626618221494264760180657732801612348589103290695260992552373632950395780820971888676534078241816018476901814022905750537014600909836985401547164897051750176229167184596483534227572123935968337358752623038645346798033051576788492613747977196321371756084172394656509906994497839796532944821661702141307321688426555797056528768304358309636187850354312111960227634944375652263825013063956181739704664262214737743372154205999348652610776761883817832581027315985029870825344987010322787125818214235132013611644153949859858447569681743008753567948866312695912331296212062406828770679518938594754011864087516302762316464021883336600792442268009755925214689196103335236650748927588009005181069463851717820411294243164434618318426347580730703078170070907659408761721872488572982052027987813740488362497448333259178540819360984769894490609499528923446089556631606201168915777672445957547945071192408471582321347458393347744642123820014403943301956456199036248285841251751630923650699885800543144864303330551321206054023250603498937703173818262472928828604335469562756457727795232009580481882359659372911042201823035731975439128565006789723919934319797028003654293808085441085447766777266176', -); -test(macro, '27', 0, '1'); -test(macro, '-27', 0, '1'); -test(macro, '27', 1, '27'); -test(macro, '-27', 1, '-27'); -test(macro, '27', 3, '19683'); -test(macro, '-27', 3, '-19683'); -test(macro, '27', 7, '10460353203'); -test(macro, '-27', 7, '-10460353203'); -test(macro, '27', 9, '7625597484987'); -test(macro, '-27', 9, '-7625597484987'); -test(macro, '27', 11, '5559060566555523'); -test(macro, '-27', 11, '-5559060566555523'); -test(macro, '27', 17, '2153693963075557766310747'); -test(macro, '-27', 17, '-2153693963075557766310747'); -test(macro, '27', 22, '30903154382632612361920641803529'); -test(macro, '-27', 22, '30903154382632612361920641803529'); -test(macro, '27', 24, '22528399544939174411840147874772641'); -test(macro, '-27', 24, '22528399544939174411840147874772641'); -test(macro, '27', 27, '443426488243037769948249630619149892803'); -test(macro, '-27', 27, '-443426488243037769948249630619149892803'); -test(macro, '27', 29, '323257909929174534292273980721360271853387'); -test(macro, '-27', 29, '-323257909929174534292273980721360271853387'); -test( - macro, - '27', - 1234, - '200856075209902212199811223498516329401019153294330654484899457135661710831649025094793443576863417869675999053574959337346792532217485737202817800641723197630343724422691567676966750017719674361721564299756255063995170624987815873886816573528036690980712399472082918987467608319915320632750007215671073941033733822406638067457070592416925055525002249965214978226439419675794443664397992725836030753072150525500182271105668883387299438014566998450801673929744863349108063057027323538841038850392906331064754828529624866950550712400849201192591205142296901842010465055290151680972126095024443830456846851602321575873316021498267598562024770678289890230706320997870461736064158216930272006483331205888383426585499224333788304253250735446206878459830691428518801804316734865056012563110060177249063533223360212951908142458456167777780005320459640618276526423350311574957115723697862633038912990076590485058168720523332363832907739630745212612829631298739740918292687323963984732777515115303964140679392026532299969353302111690876222512591852054954749110470134966527453125805201071472068728012702260328777663337721407575454838256471452852284288283640249611394712320213997254539391537655386427263371372214172403860536953046790124191276197581019979325589039334200287751090718265018203205058843589368322867283544158866611521312017186795565242663733214746314148048347376472660469372081324221562030477828367398702782252799482995882978202357840004609118497407774448098166472475681019210778338607385302368427582889110199771043940039384173696648402793417875142304690934448344767850874922126620454594771669567183452729544713864889437820573063999170931037181075406666631149358312284169719891882097692840499902508546688352472767932029187479332141883194288344509584921993462900826009', -); -test( - macro, - '-27', - 1234, - '200856075209902212199811223498516329401019153294330654484899457135661710831649025094793443576863417869675999053574959337346792532217485737202817800641723197630343724422691567676966750017719674361721564299756255063995170624987815873886816573528036690980712399472082918987467608319915320632750007215671073941033733822406638067457070592416925055525002249965214978226439419675794443664397992725836030753072150525500182271105668883387299438014566998450801673929744863349108063057027323538841038850392906331064754828529624866950550712400849201192591205142296901842010465055290151680972126095024443830456846851602321575873316021498267598562024770678289890230706320997870461736064158216930272006483331205888383426585499224333788304253250735446206878459830691428518801804316734865056012563110060177249063533223360212951908142458456167777780005320459640618276526423350311574957115723697862633038912990076590485058168720523332363832907739630745212612829631298739740918292687323963984732777515115303964140679392026532299969353302111690876222512591852054954749110470134966527453125805201071472068728012702260328777663337721407575454838256471452852284288283640249611394712320213997254539391537655386427263371372214172403860536953046790124191276197581019979325589039334200287751090718265018203205058843589368322867283544158866611521312017186795565242663733214746314148048347376472660469372081324221562030477828367398702782252799482995882978202357840004609118497407774448098166472475681019210778338607385302368427582889110199771043940039384173696648402793417875142304690934448344767850874922126620454594771669567183452729544713864889437820573063999170931037181075406666631149358312284169719891882097692840499902508546688352472767932029187479332141883194288344509584921993462900826009', -); -test( - macro, - '27', - 5678, - '1920670627041206840774317663061948531951548392586808036968655466513575530956212975774514238251197579090763349520005051835865042160772589169624476421706202590867860836690838786680450886141750404308408100197254742949071761592216668354595970793821666614574491628116021852490928266530039402274346603263915374906973045214520217579266276548940290197959870301983972948179342634336579386358378974195640173820826951706289068255636419593014486343794593987163856420064173623896766989137738772776377427442097331419584717293530596353658978697049818315083325917184148323246870360758039957677823155528069256344361615958925614299682556146381515609616001741477538909124857988462042152583475858959708352329078738601094623969648315977840331485254209899871646649972472372095452648168794559531587891304723383377106143342610066593596322450066346593064250164293612171399887948611723002687714633034005580022925175850122398245122163141238188056618415646875743299757508586238824342158406775418269157574948228511042170075383701360380600119963052883698603996010908136679734984191666988039630564578030822333416473331686176299575683617183902279297306358801915764702865246245093148511987518794036684029774730705063803579378907496553385221304907007953529232866068390828615106548652525036824065996249327562337880011776639185551336530505634619418517450596528181304358633713465477039574138461504506994233623242585354356605524242258852820324114074452649908604782399002596550916153410839185516390213358357834548623096143445732587215823810288043211299034382028751910218222923967466149776778576877664248973225249782758952557190800287368177398454902378376415868362035425615655624682981455869051819800859456132732320054055510566958251135161043336938045009646963245189593774509479550785046075894792169710218139317967718680527440283599846493280581066859320369808514616618064316610685296144379483228881158978531428541323976687007318478840124238398533801496097297015071332134452660846054421428149909225409769221839051449083375270329899898374485884886887125190469494156954015355114580948849208785046347459412975637271976882114713062112330537331127876640249342310281450813349286664902834009007280339950648850700440708748555487997305797417944284640312847154412547496220096692340189416832210466282566649332925837995666008798051378581959040498954085132477390853383093481176129650878445248789958824391345493197569531442806979176311248211412871040845844736158339923712459547591539550415996003282072387219018911765803789518884827791568134984700358743507239288171453633843763592103578573012447420761597931062446196749823913274155393819970124816742398443420049898048112792722620849282590853010364704986150303874501432870838621770926441069468404770404373890675534844221570867260548530639691411361203218650846445492626294997020128545271334888747901443583519313242322333157269016724544126555722125271718466441377338744197144665139930690040364724035268720548346016327799586536627059546835935892111936009551045577780871821958233775831514715738552477848906407293516034093463840649146923172863395128138438835433544718807766062278768770741451744867618368286602135404656520890155890101238524261112587615907631923684591193938770711298726617459834584716577454226046024456280984368570829122148771541978532132344153800979821391341346004725017526699171610089317393609489521109593485218609778690258066523564081395391334194325940849299429508434537825642151593153347775123712329348554222878530900249479115866329061956089475067568518232744646491234812061940598193564767933639294691752620290371604670392024822794195223184833997452082017311737450285129468363744078154728675038628714333873175144570204913129267965199303431706858336186755042226231183468843385119778696375795488511428939963856300359813082019502017643381504199506863718337397994274997752254757708272367666078675965040032039655925062247707075636789805274539053194840259610422752138553537725180597167371438930229420783619411928005931473865400477223675968308708249216344281666556496504984085949177728422334819418475038623078588714141499380129463420875932101260033375811625528931966565505132882422386608325523560248190689939207313386561886327643980713525129761663096753770390758712896499116510493355246860369384153391737470406874172921606838934727403098744014663071565032303777192174084122582946730008756106536993815320872157236729317634745631667114394136303705919618073684341874403244980777746281597675723918499517754138950341742429841628648421346110812738800865692526985004078449939939783096689246579006137481593969321838858087486685024934605209896758266277194033480123936439845801365328872002053460702803079717583034058121243760136910286949853216903677522250905510392566713879118017180689421758716319873286365642344743985956630970396015789433527653341599927766716994599791600982672311972370893852024580742922038592291822037985280439374076859860760447456227214570107076713441371110040481866528520446919136604157813535069283884957393825645814464806264277503491404782371252976040724254957145667674092298268073285259823296618873217871906591552510862582155404488921608024654326375619469231209031828858072396365212385640204416236746788303867620644842086149794597453008219491687259712252301584276458360737524420726294591150435186990238809185847919451252123489656372496043613842279955888472720044814213508941637152519990348407148927393875038476852404825802087693473325854313140587032371097348401164191468159425742186705236542204710037466387769479015379900734664129501511212299294684814946146327048005184836003000107105496191991647505947395678538952761563693653092396057893346156774141317075936232087744314496490509956837645841465967388142202300490064869619347902652823984909945873701021070634445104869604603785547980280081380393790903364474376364758613264472606771556227675845245248027497873498296375511004458930274898993867038605298383591809404357101355240283437176300862637920738599498741746521150167455353523330927129326274447459351643494051864005920884002398608267587991014622605843142855151877012756952553990368252360102557816678486685822969507404277254601956581010759230620724352157677998795938501832890979436797552440883742531302558570709076361709043133531426503972386170819272650464336778033158976021327334838579925495189278796979109139792191232782473002231837350047198764643616374041356297768694046950486001246185234359318391038800197857746441789669972513126194313149333382712207147511481557975622743732344202629767274244165956943548372982915991124491226134463115022810739060569665040240717572615620932472093174981002205974542066246133177952669421013895627060630464567760434256996281799968688229590092429649604880061340304296561685165836856606423053897026939262772456099432796351052849390003427289920795408775824445019032961645886626504591512212048335924123109654993739800469629501329929168753430905653421576424474668087832145303326186917347787604661201427588255288110103869986804399331506635536060487601890785562151210207595887133197464066346972583280471678345734031148539530692397993301487901118668413151152739493110857842168357407107810369630513619746957021035200287975064451571078331784369474527599711715767496931770063061477359695737750256984149156979906478297668490377273421425063634135938949613904319446351606432659158890010438536452763547944727936040394443661905803287318582738928999257571951746826811304523891797753282572538169266332939635099581060985026521423506192706942972853666059905273146115417304211233570424956603493273168920814813255134455438235602527751336570402852196721589759010458939788308886259589255589838453865926112669922271314441973202683425050250138493114016754036551602588968457859033236160720022442073508673912688509196121011581235868256299459315148083511624384602779057762575835218305144492664825432085770601166428566236259201040157805073745401588372353777316940550146420767400912250370939891562978931549393144124943754754417984294956325477143759436596679468856665971712954391480006376974981025962172422482296884009980457223252674173743660093454998272067099021050616490581360309414669608617227081755602192101247842052099617282451750980683945908343300229792225173818905754262604195304086203817551885146682726569', -); -test( - macro, - '-27', - 5678, - '1920670627041206840774317663061948531951548392586808036968655466513575530956212975774514238251197579090763349520005051835865042160772589169624476421706202590867860836690838786680450886141750404308408100197254742949071761592216668354595970793821666614574491628116021852490928266530039402274346603263915374906973045214520217579266276548940290197959870301983972948179342634336579386358378974195640173820826951706289068255636419593014486343794593987163856420064173623896766989137738772776377427442097331419584717293530596353658978697049818315083325917184148323246870360758039957677823155528069256344361615958925614299682556146381515609616001741477538909124857988462042152583475858959708352329078738601094623969648315977840331485254209899871646649972472372095452648168794559531587891304723383377106143342610066593596322450066346593064250164293612171399887948611723002687714633034005580022925175850122398245122163141238188056618415646875743299757508586238824342158406775418269157574948228511042170075383701360380600119963052883698603996010908136679734984191666988039630564578030822333416473331686176299575683617183902279297306358801915764702865246245093148511987518794036684029774730705063803579378907496553385221304907007953529232866068390828615106548652525036824065996249327562337880011776639185551336530505634619418517450596528181304358633713465477039574138461504506994233623242585354356605524242258852820324114074452649908604782399002596550916153410839185516390213358357834548623096143445732587215823810288043211299034382028751910218222923967466149776778576877664248973225249782758952557190800287368177398454902378376415868362035425615655624682981455869051819800859456132732320054055510566958251135161043336938045009646963245189593774509479550785046075894792169710218139317967718680527440283599846493280581066859320369808514616618064316610685296144379483228881158978531428541323976687007318478840124238398533801496097297015071332134452660846054421428149909225409769221839051449083375270329899898374485884886887125190469494156954015355114580948849208785046347459412975637271976882114713062112330537331127876640249342310281450813349286664902834009007280339950648850700440708748555487997305797417944284640312847154412547496220096692340189416832210466282566649332925837995666008798051378581959040498954085132477390853383093481176129650878445248789958824391345493197569531442806979176311248211412871040845844736158339923712459547591539550415996003282072387219018911765803789518884827791568134984700358743507239288171453633843763592103578573012447420761597931062446196749823913274155393819970124816742398443420049898048112792722620849282590853010364704986150303874501432870838621770926441069468404770404373890675534844221570867260548530639691411361203218650846445492626294997020128545271334888747901443583519313242322333157269016724544126555722125271718466441377338744197144665139930690040364724035268720548346016327799586536627059546835935892111936009551045577780871821958233775831514715738552477848906407293516034093463840649146923172863395128138438835433544718807766062278768770741451744867618368286602135404656520890155890101238524261112587615907631923684591193938770711298726617459834584716577454226046024456280984368570829122148771541978532132344153800979821391341346004725017526699171610089317393609489521109593485218609778690258066523564081395391334194325940849299429508434537825642151593153347775123712329348554222878530900249479115866329061956089475067568518232744646491234812061940598193564767933639294691752620290371604670392024822794195223184833997452082017311737450285129468363744078154728675038628714333873175144570204913129267965199303431706858336186755042226231183468843385119778696375795488511428939963856300359813082019502017643381504199506863718337397994274997752254757708272367666078675965040032039655925062247707075636789805274539053194840259610422752138553537725180597167371438930229420783619411928005931473865400477223675968308708249216344281666556496504984085949177728422334819418475038623078588714141499380129463420875932101260033375811625528931966565505132882422386608325523560248190689939207313386561886327643980713525129761663096753770390758712896499116510493355246860369384153391737470406874172921606838934727403098744014663071565032303777192174084122582946730008756106536993815320872157236729317634745631667114394136303705919618073684341874403244980777746281597675723918499517754138950341742429841628648421346110812738800865692526985004078449939939783096689246579006137481593969321838858087486685024934605209896758266277194033480123936439845801365328872002053460702803079717583034058121243760136910286949853216903677522250905510392566713879118017180689421758716319873286365642344743985956630970396015789433527653341599927766716994599791600982672311972370893852024580742922038592291822037985280439374076859860760447456227214570107076713441371110040481866528520446919136604157813535069283884957393825645814464806264277503491404782371252976040724254957145667674092298268073285259823296618873217871906591552510862582155404488921608024654326375619469231209031828858072396365212385640204416236746788303867620644842086149794597453008219491687259712252301584276458360737524420726294591150435186990238809185847919451252123489656372496043613842279955888472720044814213508941637152519990348407148927393875038476852404825802087693473325854313140587032371097348401164191468159425742186705236542204710037466387769479015379900734664129501511212299294684814946146327048005184836003000107105496191991647505947395678538952761563693653092396057893346156774141317075936232087744314496490509956837645841465967388142202300490064869619347902652823984909945873701021070634445104869604603785547980280081380393790903364474376364758613264472606771556227675845245248027497873498296375511004458930274898993867038605298383591809404357101355240283437176300862637920738599498741746521150167455353523330927129326274447459351643494051864005920884002398608267587991014622605843142855151877012756952553990368252360102557816678486685822969507404277254601956581010759230620724352157677998795938501832890979436797552440883742531302558570709076361709043133531426503972386170819272650464336778033158976021327334838579925495189278796979109139792191232782473002231837350047198764643616374041356297768694046950486001246185234359318391038800197857746441789669972513126194313149333382712207147511481557975622743732344202629767274244165956943548372982915991124491226134463115022810739060569665040240717572615620932472093174981002205974542066246133177952669421013895627060630464567760434256996281799968688229590092429649604880061340304296561685165836856606423053897026939262772456099432796351052849390003427289920795408775824445019032961645886626504591512212048335924123109654993739800469629501329929168753430905653421576424474668087832145303326186917347787604661201427588255288110103869986804399331506635536060487601890785562151210207595887133197464066346972583280471678345734031148539530692397993301487901118668413151152739493110857842168357407107810369630513619746957021035200287975064451571078331784369474527599711715767496931770063061477359695737750256984149156979906478297668490377273421425063634135938949613904319446351606432659158890010438536452763547944727936040394443661905803287318582738928999257571951746826811304523891797753282572538169266332939635099581060985026521423506192706942972853666059905273146115417304211233570424956603493273168920814813255134455438235602527751336570402852196721589759010458939788308886259589255589838453865926112669922271314441973202683425050250138493114016754036551602588968457859033236160720022442073508673912688509196121011581235868256299459315148083511624384602779057762575835218305144492664825432085770601166428566236259201040157805073745401588372353777316940550146420767400912250370939891562978931549393144124943754754417984294956325477143759436596679468856665971712954391480006376974981025962172422482296884009980457223252674173743660093454998272067099021050616490581360309414669608617227081755602192101247842052099617282451750980683945908343300229792225173818905754262604195304086203817551885146682726569', -); -test(macro, '29', 0, '1'); -test(macro, '-29', 0, '1'); -test(macro, '29', 1, '29'); -test(macro, '-29', 1, '-29'); -test(macro, '29', 3, '24389'); -test(macro, '-29', 3, '-24389'); -test(macro, '29', 7, '17249876309'); -test(macro, '-29', 7, '-17249876309'); -test(macro, '29', 9, '14507145975869'); -test(macro, '-29', 9, '-14507145975869'); -test(macro, '29', 11, '12200509765705829'); -test(macro, '-29', 11, '-12200509765705829'); -test(macro, '29', 17, '7257147736730073114838109'); -test(macro, '-29', 17, '-7257147736730073114838109'); -test(macro, '29', 22, '148852438543083302439338564577241'); -test(macro, '-29', 22, '148852438543083302439338564577241'); -test(macro, '29', 24, '125184900814733057351483732809459681'); -test(macro, '-29', 24, '125184900814733057351483732809459681'); -test(macro, '29', 27, '3053134545970524535745336759489912159909'); -test(macro, '-29', 27, '-3053134545970524535745336759489912159909'); -test(macro, '29', 29, '2567686153161211134561828214731016126483469'); -test(macro, '-29', 29, '-2567686153161211134561828214731016126483469'); -test( - macro, - '29', - 1234, - '39730991880495272432206471391877971807542673627957704904437675569298014672895070646102535214916047201597057604326381566232240717146352905189648219707403914660579022999012335291748319902460223265040313524900417222861808879210656981706108411235266301032093577572784389639719581120084786412413811442838338528471340965314240553665532845900842671741344271394471188943084404951380820901385463995110598814337441546368977234557474886215832235597884716646333931698424620615636355660537976497375196427830792301269566792792820200233670131878651690073642956396203530193828971438659013332283684624052196883142348635262157010483447752926525087705971032741588045925402251432696384942322183761498083408303101185212952621515583790502916056759732756688326445700770330618736098784570958650303610518453345373695638406312777059006873348441083653408306117070042611172352888144271588938812215283718988243964723451182501170569555882799635882695185231569905013697274942621016347442475467611094595589653640159813052986283489436916917813443702411392363491760078918071760360736064794346216924583036877713278321020682861527277057026346194702327617123158348328127954077761730411509703210527413729724018291740451232173623681566068132712321584183435235162559116277847790802991789615957113420980884848226115467550693444248836097094675037594634337127844160706154634179432597281415179294940602829040686835658254209377758530578171235783275715264069690583402743872874027236142735859680441203304209066670057316622505879861269271750030338720992453155828397426773289742123912597304182933866285890213055204261259697174309425441282464103760493735120470209861686631467978789655753554085703565573238818516254588594497513866508088253727621898347478665593386957598553232780662697618992458924510409036459946339696264729231292522628108751878543189439881', -); -test( - macro, - '-29', - 1234, - '39730991880495272432206471391877971807542673627957704904437675569298014672895070646102535214916047201597057604326381566232240717146352905189648219707403914660579022999012335291748319902460223265040313524900417222861808879210656981706108411235266301032093577572784389639719581120084786412413811442838338528471340965314240553665532845900842671741344271394471188943084404951380820901385463995110598814337441546368977234557474886215832235597884716646333931698424620615636355660537976497375196427830792301269566792792820200233670131878651690073642956396203530193828971438659013332283684624052196883142348635262157010483447752926525087705971032741588045925402251432696384942322183761498083408303101185212952621515583790502916056759732756688326445700770330618736098784570958650303610518453345373695638406312777059006873348441083653408306117070042611172352888144271588938812215283718988243964723451182501170569555882799635882695185231569905013697274942621016347442475467611094595589653640159813052986283489436916917813443702411392363491760078918071760360736064794346216924583036877713278321020682861527277057026346194702327617123158348328127954077761730411509703210527413729724018291740451232173623681566068132712321584183435235162559116277847790802991789615957113420980884848226115467550693444248836097094675037594634337127844160706154634179432597281415179294940602829040686835658254209377758530578171235783275715264069690583402743872874027236142735859680441203304209066670057316622505879861269271750030338720992453155828397426773289742123912597304182933866285890213055204261259697174309425441282464103760493735120470209861686631467978789655753554085703565573238818516254588594497513866508088253727621898347478665593386957598553232780662697618992458924510409036459946339696264729231292522628108751878543189439881', -); -test( - macro, - '29', - 5678, - '313207440313997908395360596779470167556524821354565066095934942813317027334851280816617044201242781788146681988256606728079031305742275517077538609509120818518756804198333905529512296693856744615547940344437655023604047387036912191665614525105764965628772142528903024079009603734878606031530632092694960209733041961976900299957401439942773853016980543659640387923110020096006907771085339532274479213069118590997912505738354256882132244489587891193436787796035297069548656015753468337910267383320384793478210922890393478684942943141047002641653826266029229940679855534185446029984642265309401937942618414456448051700283163409781590734858988186144878262850039132607214392219461954724509852981830436014103811121607636976310541241787952347172457061695467609228341593457389693092010216371829783365534416058276646629047941217000988603430079143125039335627916862701970337819367723342798417859182486827526226654222231668270437699336871914098038361896878124581202115603167581573365860844809754272768688324186177525910163640984471107241223997815556859746973062170016697071082852292553186973695195935555110865322841675967709255577273671862096739084719096018866542773915268182681924434693068974368743671856917344307823491424582073941774677763676838999012920849775131545807745557984609998089011839713971782596354276378462706118799367614933692723994860493006852617761691726490661973852484146025859542525994878650901900539984977032822503678380135265674374963780412402639819492697327642089488065515069103579821680270517245818991769253700477178501902173016760022083570625339617613196787508937132294439190707656675750593358777466252187024649444055524431976996354765962227578084126526998133034612602577472655126094054706811331042567986558208826619738372058912709936441330068785945557615305430573158660857083639685984708079449553432767371468432769763059815568294817006766150407711429524381443764353328649143392243030605175631903617241400590334520731552887905420357821333357323178558962729624695160152424150927961815517235178471668611411980527664098448189919626749630449729346413932330280051038124207698726994136053148704139757193993822565645450063014557144715444390692035805048906587820840149620974473539068602257213468282796698357998860905499646858875696140347697252404855916130979765736125939491404582947894766627011437008321826084551608917643552039692092641434023416721725802295946129541224330913037830711831897505727181643752070238124258716406913604326003886892777871785171083042338438822589466034333257513519074249290059508044387937515941195584536849935639306854418549865654614408061949225554166135582427881807182193783599601973694343161657685275975826632605401059697677450138694781053611138910985474876254987791226771601983926224950708128705207698446999762970868619741399138388955923671766834618892101519803294063152179901055619441840211468137457499243080615163211420407368571631248280853519881920654995329479197651873469046539891470723077610689204092925437192831324700740508382223044845331373899396944326854982107248264681927553073948403069191143379621931012158878080926767868489154472525785183112596722186693274842978659686633055410031307047971804940821454957589943688441766427442473419051396660930726551215776955035627059923619934434939234337389228818252138062651964023385907259716856875217332983206258542647956484144053376895677282058618726894075264893141459345095513971695129554583296521812210859456760034199169197708311366529261902786358093999101305450016786730606230292030206470077429240950433535818902863132927160089386510261064201968667301688946240130924904222733535811233377310709070575388538077218732749361385735781362671410241779765408330752886228016198747347816427191393767361118607002910804994498483946180719901059745498161376023303011413268091725633426377641439705607490836958493776666210760974330249691898146723384558621097993110200107834567985162015781903474771053336026970797082827405583984640152590311586996651130978390269635682523375227724690841049723350239062980077884498173472853922895986259449703557854615873912991492706834134188831223288072115285680543132659530562006474917573599463126164660175597089006340798638300090399758336562085930375566544725514749718150151542246563296277642802552407242105936832988106386539137183422418699327088241800890533010663176410353351158461215403413109833504713371583660146076296550323246201815389456172173706830863136468029781683216347313194402113678038893523681163091511426864300172115307127211628298548752944885599448207246119768819846726699639029352863512164216176446798914058117163239884649542915510529041947704391959354269079196393984501554075330930504966050842500838363928465487060306050596564952197235832052713931735782408102332284034120417772720870851192746545714460855294262457078632718061537234518630269810919269617488169257070620461029811140007937616623706165998602970962299178529667384281611711284607273114722670486790204254070817193833701660203086417276450859927068939525290399922358343072724298746965385101645299436440204421048958231664229609473978540663876261084401885358577081838088427532726342531219666349529588708676864620007863974417011281178486555297841836402783955736921273673850857042328354562375043956630762645678828277468596945482993393974109650561321318909283802349703359908590794955598686861188105172867117624073767884315818474218316939810928386473450140843666379789633933028157360991196643780492156331045116092963007359899178903786388658268081752185404862465975652717573346338903555552006181453313780938268351957198485656126588122587529425797721024874117272720122593011520181102165173778540109649069873683782560225421253727583520275185027823279197281638302017391265559931535066430315642407161670790778165873761260850453732642568406324331424811297605391958431678345086072195795316149924023369165664626175580036981425302726551623339910755431707540465223502996664989856176285277665969692278401436557276802735628722927403361765477884441622418274020615931280165006550295668823519197254154151454712027583777160043458631500373569552286186287576649460507457140013106316295491415062488184750166573300098842610352649548418028671322996383284580438817915912751328692636309346404265340559254967861755662343799686476963239624473583538068952690259757479187975773947646635862072773097932605011147309545946917745817618263320705384509256266597692822011258526575769901432671791899309866212784593294231039210384345017912165232281651766218511816118452245482765148462644057186723738724822065021604329606577441416459752329357653818884431934533205079171447937450753200091846699978761407348142216571160734786231176158036173395546313127825240933740557460405345687875822691395927735307954680584540631539852299093845143573101926536856436774094890716935644906531408882553968024236594348780230005657598271432594655727370741202306848716798905210887080943457274364437927441617729886063620378682180675795409711770720617214861995899802099720841503268275592791154447987570696376013830399865593021757490603503782606236297834983555381943082960053607082894098193433830439836836701596825459287327985068484765725312935435383570713001737353493414554745918732199428982288861916281925853870473235242613934578658466072097633829351396159739136586030233961937919001934510892835623188835150906662666684162280030518846926507260191259658152547057140996892575994838442450176092944932641609223450069710549113423096908693460705811017954646809219195537407087992070845823304506437379135120730335409827645953230507797899159560638526238733117928509820396840716609945419171886667127363308348835299399638934816341074966311440750045989538622932362121521488502205477949656543218950989955469235493902648629617578805931019123481068629850143880665080707955617337916811297483768702780290392503453278969467260654930304742159521939597380725090779572928293901161522955743015424778301780849024292067139437382979863134823284319627217588300337639449928419525514096794167112290463836322735157448121909387510372861759941692821797921023914852572773124758265866489263355698959718432102332876091323039261846105459189300877483349757964955202240267626882379975165911407692612296374563798585046788847367663183939085894084851302628081935576963248048370548543807192978291741302368501280165227638198366783808938518346282718195546770075506680849155238300453171855111852650642578666970792276185247457685538362574130361', -); -test( - macro, - '-29', - 5678, - '313207440313997908395360596779470167556524821354565066095934942813317027334851280816617044201242781788146681988256606728079031305742275517077538609509120818518756804198333905529512296693856744615547940344437655023604047387036912191665614525105764965628772142528903024079009603734878606031530632092694960209733041961976900299957401439942773853016980543659640387923110020096006907771085339532274479213069118590997912505738354256882132244489587891193436787796035297069548656015753468337910267383320384793478210922890393478684942943141047002641653826266029229940679855534185446029984642265309401937942618414456448051700283163409781590734858988186144878262850039132607214392219461954724509852981830436014103811121607636976310541241787952347172457061695467609228341593457389693092010216371829783365534416058276646629047941217000988603430079143125039335627916862701970337819367723342798417859182486827526226654222231668270437699336871914098038361896878124581202115603167581573365860844809754272768688324186177525910163640984471107241223997815556859746973062170016697071082852292553186973695195935555110865322841675967709255577273671862096739084719096018866542773915268182681924434693068974368743671856917344307823491424582073941774677763676838999012920849775131545807745557984609998089011839713971782596354276378462706118799367614933692723994860493006852617761691726490661973852484146025859542525994878650901900539984977032822503678380135265674374963780412402639819492697327642089488065515069103579821680270517245818991769253700477178501902173016760022083570625339617613196787508937132294439190707656675750593358777466252187024649444055524431976996354765962227578084126526998133034612602577472655126094054706811331042567986558208826619738372058912709936441330068785945557615305430573158660857083639685984708079449553432767371468432769763059815568294817006766150407711429524381443764353328649143392243030605175631903617241400590334520731552887905420357821333357323178558962729624695160152424150927961815517235178471668611411980527664098448189919626749630449729346413932330280051038124207698726994136053148704139757193993822565645450063014557144715444390692035805048906587820840149620974473539068602257213468282796698357998860905499646858875696140347697252404855916130979765736125939491404582947894766627011437008321826084551608917643552039692092641434023416721725802295946129541224330913037830711831897505727181643752070238124258716406913604326003886892777871785171083042338438822589466034333257513519074249290059508044387937515941195584536849935639306854418549865654614408061949225554166135582427881807182193783599601973694343161657685275975826632605401059697677450138694781053611138910985474876254987791226771601983926224950708128705207698446999762970868619741399138388955923671766834618892101519803294063152179901055619441840211468137457499243080615163211420407368571631248280853519881920654995329479197651873469046539891470723077610689204092925437192831324700740508382223044845331373899396944326854982107248264681927553073948403069191143379621931012158878080926767868489154472525785183112596722186693274842978659686633055410031307047971804940821454957589943688441766427442473419051396660930726551215776955035627059923619934434939234337389228818252138062651964023385907259716856875217332983206258542647956484144053376895677282058618726894075264893141459345095513971695129554583296521812210859456760034199169197708311366529261902786358093999101305450016786730606230292030206470077429240950433535818902863132927160089386510261064201968667301688946240130924904222733535811233377310709070575388538077218732749361385735781362671410241779765408330752886228016198747347816427191393767361118607002910804994498483946180719901059745498161376023303011413268091725633426377641439705607490836958493776666210760974330249691898146723384558621097993110200107834567985162015781903474771053336026970797082827405583984640152590311586996651130978390269635682523375227724690841049723350239062980077884498173472853922895986259449703557854615873912991492706834134188831223288072115285680543132659530562006474917573599463126164660175597089006340798638300090399758336562085930375566544725514749718150151542246563296277642802552407242105936832988106386539137183422418699327088241800890533010663176410353351158461215403413109833504713371583660146076296550323246201815389456172173706830863136468029781683216347313194402113678038893523681163091511426864300172115307127211628298548752944885599448207246119768819846726699639029352863512164216176446798914058117163239884649542915510529041947704391959354269079196393984501554075330930504966050842500838363928465487060306050596564952197235832052713931735782408102332284034120417772720870851192746545714460855294262457078632718061537234518630269810919269617488169257070620461029811140007937616623706165998602970962299178529667384281611711284607273114722670486790204254070817193833701660203086417276450859927068939525290399922358343072724298746965385101645299436440204421048958231664229609473978540663876261084401885358577081838088427532726342531219666349529588708676864620007863974417011281178486555297841836402783955736921273673850857042328354562375043956630762645678828277468596945482993393974109650561321318909283802349703359908590794955598686861188105172867117624073767884315818474218316939810928386473450140843666379789633933028157360991196643780492156331045116092963007359899178903786388658268081752185404862465975652717573346338903555552006181453313780938268351957198485656126588122587529425797721024874117272720122593011520181102165173778540109649069873683782560225421253727583520275185027823279197281638302017391265559931535066430315642407161670790778165873761260850453732642568406324331424811297605391958431678345086072195795316149924023369165664626175580036981425302726551623339910755431707540465223502996664989856176285277665969692278401436557276802735628722927403361765477884441622418274020615931280165006550295668823519197254154151454712027583777160043458631500373569552286186287576649460507457140013106316295491415062488184750166573300098842610352649548418028671322996383284580438817915912751328692636309346404265340559254967861755662343799686476963239624473583538068952690259757479187975773947646635862072773097932605011147309545946917745817618263320705384509256266597692822011258526575769901432671791899309866212784593294231039210384345017912165232281651766218511816118452245482765148462644057186723738724822065021604329606577441416459752329357653818884431934533205079171447937450753200091846699978761407348142216571160734786231176158036173395546313127825240933740557460405345687875822691395927735307954680584540631539852299093845143573101926536856436774094890716935644906531408882553968024236594348780230005657598271432594655727370741202306848716798905210887080943457274364437927441617729886063620378682180675795409711770720617214861995899802099720841503268275592791154447987570696376013830399865593021757490603503782606236297834983555381943082960053607082894098193433830439836836701596825459287327985068484765725312935435383570713001737353493414554745918732199428982288861916281925853870473235242613934578658466072097633829351396159739136586030233961937919001934510892835623188835150906662666684162280030518846926507260191259658152547057140996892575994838442450176092944932641609223450069710549113423096908693460705811017954646809219195537407087992070845823304506437379135120730335409827645953230507797899159560638526238733117928509820396840716609945419171886667127363308348835299399638934816341074966311440750045989538622932362121521488502205477949656543218950989955469235493902648629617578805931019123481068629850143880665080707955617337916811297483768702780290392503453278969467260654930304742159521939597380725090779572928293901161522955743015424778301780849024292067139437382979863134823284319627217588300337639449928419525514096794167112290463836322735157448121909387510372861759941692821797921023914852572773124758265866489263355698959718432102332876091323039261846105459189300877483349757964955202240267626882379975165911407692612296374563798585046788847367663183939085894084851302628081935576963248048370548543807192978291741302368501280165227638198366783808938518346282718195546770075506680849155238300453171855111852650642578666970792276185247457685538362574130361', -); -test(macro, '1234', 0, '1'); -test(macro, '-1234', 0, '1'); -test(macro, '1234', 1, '1234'); -test(macro, '-1234', 1, '-1234'); -test(macro, '1234', 3, '1879080904'); -test(macro, '-1234', 3, '-1879080904'); -test(macro, '1234', 7, '4357186184021382204544'); -test(macro, '-1234', 7, '-4357186184021382204544'); -test(macro, '1234', 9, '6634931404835663880262603264'); -test(macro, '-1234', 9, '-6634931404835663880262603264'); -test(macro, '1234', 11, '10103381606301936187653160695875584'); -test(macro, '-1234', 11, '-10103381606301936187653160695875584'); -test( - macro, - '1234', - 17, - '35674485208164146078917356926246803757746166219014144', -); -test( - macro, - '-1234', - 17, - '-35674485208164146078917356926246803757746166219014144', -); -test( - macro, - '1234', - 22, - '102078319882560292285132581626357595569664307813353093133708407341056', -); -test( - macro, - '-1234', - 22, - '102078319882560292285132581626357595569664307813353093133708407341056', -); -test( - macro, - '1234', - 24, - '155440374071087980438939349467025786799279742708630302687913279529037070336', -); -test( - macro, - '-1234', - 24, - '155440374071087980438939349467025786799279742708630302687913279529037070336', -); -test( - macro, - '1234', - 27, - '292085038627598162546736469597670733650101845477820437776597715171027672376482463744', -); -test( - macro, - '-1234', - 27, - '-292085038627598162546736469597670733650101845477820437776597715171027672376482463744', -); -test( - macro, - '1234', - 29, - '444774245080406867607018239498670695690094485812423938546940830362973414277322930560958464', -); -test( - macro, - '-1234', - 29, - '-444774245080406867607018239498670695690094485812423938546940830362973414277322930560958464', -); -test( - macro, - '1234', - 1234, - '48184467781382543701667186039468406661059770237590274727670474872867568934066212120125133953550629961484891523453397766904292741725027019645437267985042784717562212455213265145073576158446772320656790521515384533153285495122560467130551068937365382642309092956110550380937116582823950116105467284919886128590021120491211422848352480419801389040432671756358444906225483817656922238136306002774235317628882806945193646888148396110892049431698226720231373322565553173892155104287328274243305595665720786784052656812367125148945799485499060066329553808509237311004983159894774937428752149540862686417306258598574741354798734543908917749037010338607293558391168741173229347205324015819180886782731783732875096308025479318621477536729557178851277749719374746640105570680704597488214460168162719035143192317718562628271959732323123847141889566569180545843169342410738692059982444746465750802950208574020617939255322870389259522352007286309084437654560750826135123276437360339867137662914521505757477954199067061537563338324827971696801982963501680500285473348151566773437596060788388816834765832275133438433921225741018069257650081651893412763515411183995641907421720698187041665296617342826301233824768831086783439617690340317902242011073693697825044232174730876417203502412742085342749470261962000902738749779130464597185957223365845266728739264096596554562810900489160285087089151363421121896616575007056439552166409310603897415780357105218172824045265515881762471530724320743935876223471758489130857861949736325801719247163392163145092104862730777665632878101469684676983177748845758819134783307275384116307332565581471205450219638137864387568253396048525319846029722597087368081615296780675739066314774724547006391416740049175425483980982557830287877118477623151223431159832554386188341940675670910313367805899112248803570997473057794418174867654496284922646065073429519234590181376956226715629044946363751414558194273837719521633486883608951520130473135848525228767697904589545099613408858934772678955107374792767376297292404355699412788887158297703071562694349633862471115563026643188726923335031942038276485070702440112289573556176109970627523424440589934713944485023114357294128614721641112627517540349238220184422744440362721622786094864017694819354467741507712876404983391152695521440373975295468154208059821687654408426427370963930322531227395895396783921477437273314199002421808939747302217153865116186806351980760710239964563379901328372415061933640351961853616394184876278706277214297206989695471340253866298118966493903627998818702216683968716037963198654625001668768390791943686432733286824675468274040171973201059002888713965690564527215419345100503188258777506372065686193271207542007415422109631813074486204833751677472525228744950194297089998305021078379670692156515896561318156670094486647187285361909788624195866103332184213842805429511053631902833667630273693526699848894312061513323511126288640008264849029913769883352116160378319937025276742846457501369721989078408607355941517261584972558483819760496804231338012065441081939772196754109683768808242484290927174759258520839532703010720373548957783991479615682174614219692539567777715560109326389875468292301222743028820913581258063284673412787274389056140124677069653486630962880192937633527058165237839406307326482619493415666561288774929091975803346338652727476500670928651812154306332363280019281880148780695662032811060669099701522746512853264775139655489705043573689252437465482977809592752059272522878781208311791893662451561020284928906469358115442883064671084339186725298116883304622860824362268174217031187839248915211550033719913619980315078125050194505282396757349145204835262063407488072671571413182055277457862261818131387963934879102237121895980689553963436483304289698371277085427432858554859126640569432899045006806292448711540736', -); -test( - macro, - '-1234', - 1234, - '48184467781382543701667186039468406661059770237590274727670474872867568934066212120125133953550629961484891523453397766904292741725027019645437267985042784717562212455213265145073576158446772320656790521515384533153285495122560467130551068937365382642309092956110550380937116582823950116105467284919886128590021120491211422848352480419801389040432671756358444906225483817656922238136306002774235317628882806945193646888148396110892049431698226720231373322565553173892155104287328274243305595665720786784052656812367125148945799485499060066329553808509237311004983159894774937428752149540862686417306258598574741354798734543908917749037010338607293558391168741173229347205324015819180886782731783732875096308025479318621477536729557178851277749719374746640105570680704597488214460168162719035143192317718562628271959732323123847141889566569180545843169342410738692059982444746465750802950208574020617939255322870389259522352007286309084437654560750826135123276437360339867137662914521505757477954199067061537563338324827971696801982963501680500285473348151566773437596060788388816834765832275133438433921225741018069257650081651893412763515411183995641907421720698187041665296617342826301233824768831086783439617690340317902242011073693697825044232174730876417203502412742085342749470261962000902738749779130464597185957223365845266728739264096596554562810900489160285087089151363421121896616575007056439552166409310603897415780357105218172824045265515881762471530724320743935876223471758489130857861949736325801719247163392163145092104862730777665632878101469684676983177748845758819134783307275384116307332565581471205450219638137864387568253396048525319846029722597087368081615296780675739066314774724547006391416740049175425483980982557830287877118477623151223431159832554386188341940675670910313367805899112248803570997473057794418174867654496284922646065073429519234590181376956226715629044946363751414558194273837719521633486883608951520130473135848525228767697904589545099613408858934772678955107374792767376297292404355699412788887158297703071562694349633862471115563026643188726923335031942038276485070702440112289573556176109970627523424440589934713944485023114357294128614721641112627517540349238220184422744440362721622786094864017694819354467741507712876404983391152695521440373975295468154208059821687654408426427370963930322531227395895396783921477437273314199002421808939747302217153865116186806351980760710239964563379901328372415061933640351961853616394184876278706277214297206989695471340253866298118966493903627998818702216683968716037963198654625001668768390791943686432733286824675468274040171973201059002888713965690564527215419345100503188258777506372065686193271207542007415422109631813074486204833751677472525228744950194297089998305021078379670692156515896561318156670094486647187285361909788624195866103332184213842805429511053631902833667630273693526699848894312061513323511126288640008264849029913769883352116160378319937025276742846457501369721989078408607355941517261584972558483819760496804231338012065441081939772196754109683768808242484290927174759258520839532703010720373548957783991479615682174614219692539567777715560109326389875468292301222743028820913581258063284673412787274389056140124677069653486630962880192937633527058165237839406307326482619493415666561288774929091975803346338652727476500670928651812154306332363280019281880148780695662032811060669099701522746512853264775139655489705043573689252437465482977809592752059272522878781208311791893662451561020284928906469358115442883064671084339186725298116883304622860824362268174217031187839248915211550033719913619980315078125050194505282396757349145204835262063407488072671571413182055277457862261818131387963934879102237121895980689553963436483304289698371277085427432858554859126640569432899045006806292448711540736', -); -test( - macro, - '1234', - 5678, - '307239295662090741644584872593956173493568238595074141254349565406661439636598896798876823220904084953233015553994854875890890858118656468658643918169805277399402542281777901029346337707622181574346585989613344285010764501017625366742865066948856161360224801370482171458030533346309750557140549621313515752078638620714732831815297168231790779296290266207315344008883935010274044001522606235576584215999260117523114297033944018699691024106823438431754073086813382242140602291215149759520833200152654884259619588924545324597336231254738156229165754184379098279299262049527493981418773939710052567148397520139396664287825920245602806281465369440795094171273883323944551402505328195835875189714803373532518976612644335221127924375262338025026738810109229789066895210195233568313781368494583937688244974433119626632798061718807757570369881396496330922521092429743441101260124582034961693322001051820700723840579394700173377538808676217188816149219248363818340764914694139680749024310479827367842428590981843277277511673125624678580926604235648781819510534399854187957358228934011534030807453365221505448908659560252635131850623331246397555109848508339190181937347601723206430770586417066983949247170768203919583900239303725667699002878222006139705975234985123135091187455708833574958129058095463081654382235387683423032727818984044935970076132966529729332219803725615665380149260841248646307744074852263644971412954286319498473825976906290726980643387278999438899482000949753370477834589869715954340896670602062189642115067712194143619891104758054603148185422879681279323731504130318089025303464892133142814050831321280869931356176562021125636637696428931550149163626111706971094926279122079036473959349398647207563958880810847203107558693382581247719368450328373491128928043528764468838481015835481857925222963292893497064677790987715608519992573590320785069213807044062645935102241563318077900517348913659692426362075079090302084558791018063653522660752511850417737787810507118607660015778345736185544774065149632138946958208872078504737965494929224554757212817739013665074197553518364007019034099233743417376008297034225146702810718547331679637811882447383064783027200681712046322391430903630967737127735630322507937735245138690231556762427184206415939967664528096214944050443838234089893942372249310965891033124439206439457942974559079093400885882410032029710828368112382759140589323805553285532286914003552846853057576991775275570301997344165769850233881907361264015895890818849669805891907459800581990812691006812626374363578450984335517894357744829092787395926839000023962733949335231397395401479346911188305001193928601270290423808867456174087663596893004075220125591262058242530195664451642127872992040342213830892225801497136162152126452814636821372850336677985479349893600592592681158187543928904613001813023098258056853626951063105305617338502819189272263288481301255674961962172018025892490871747497521613169302263447945299308964856799345744118753448948756633623000928292271644274476514153318916142897646572809647150502567312733052336669846353667317222010832483097294019925495696183147173179102497732276927446687768280599040464245101520966166706822935112404086619669510798582900981432655281831317374774621351894425270900215984721126295035504324174185149268696653681359521661246230845622880397944668142537238039679575235700048519280449389874038813948425385923473788921228513953652472377934540266323863335829226613711924193402576311531059727276108808010971355782749309158823047978491790920875069292996040857512538729285177101496567684459641487139689410758137498167987281056377030844965856298252042132686609411400751350979919962404101477738095442835101123059316328509676953867455359567416099259739884548059992245862006247543500012335979063372087713854337763356772298485634443508377176714285187750207610971059830770832297524782702349430113067885720680406382750054789965311761788658021072821754255217642242163558086741759388374052688951876547395076883774495970922489499563244338874847247075560546870915783578293537186883556120656238250632036990110926238158152815482271306910080137344309034132272734875502201244632205163102423192286940171017158243227969637526316846974981084420356508830681480947885917792995548959521169789814827379240290484939291595796335808304369249825132694371154995629020348448070937697459457310658016390510669950232202117026949332446206032626619437018409520774627547364298492663317409090888105284856231403203264042680650088950260251993214047720274157347392106720550579972688296788335711267163348525040618144978956911125218083835003018934447595528171992681871934696456852699493142208475082155078613935820598046951404164272965056793854322831971808425855979818512937009767860333913142708117420468535706707338985116178601074119960157589096146389334345593090791448497569418129926045664495907334153337589635221974568810352681900639590387377238660034950767943219972827486077231842758760058663109292511409668322244689754266200746246009494113605844291527613997239500108446722588067983522129703414514679248433646988350542223586243640715804222865695841503336942447435284973707708738401917434544559678813875897734731101993564026733107673289113791026266802347607067756870070049091879278550780571887185814708537343643120109716176863158267452564359772918848474831928740035479988942851917286977981468213676371170376581599421687421157192621766056282635455502745345422134109463656273257647493243595299386340007285458064661281500227780615582329762847666128912270287127702011512298795737439109946753443411265222017119479062242748224835713889637406840422012428195129047091229247913611585459076419478870311555089949116202363154707599047680183367431508170042693609348631935300963606524001909354481256448016576044636672552024793800896987328626909995732430432770110962492541560005764748146851044781232535045697298013876874942199766539748522749578575930121320360075106502263951925603758744064725542088121966571973151956517962196033756616574064204240308736083289250933661070517861933607033805383794022932833914403046538303160864479381724650667684378003267241939785566603437594388219429227245319361052082720101153688737108636181648544729232365745223735571958927805431626874954284337872776726226192776223809114300468574608813958523118548177886092362889284408683605828714504550636413269626117352112283711190743705957538771405106257296054814739841947086172415476929232773599749549247112194345575894505210361533349007732728515354190634197202883617455807662715540116552260765510850657135720244190956869964668147050309837395659245843733132747750125006720855350386404222102322699685624358041394671351793225094747979930897598627334206296992066864002770865189677622663536544862088852637370423181596293505045491829198840304769603782293214203771365262426835626638710332592520084894203380483205318574229509791732093263658924554481129110023771559358840259857767832130838951986420641743231157549206628101961335770935217869188598407871879846953788231452559357515703225887372560571514246425295258565332871227501930345253728333861399415882260461345687393410071890081321210957633577414930430621476910640788200315263505324920812865141791848583320684391090487087855177019341942297833034669241769410159832097007619834572197457123843735128138967329683027440008185533782920736485842481620240819664388691386839924189266798055808795241509113657623950370311771062440917977857478832595327568508967705426889618627733979628180362261623944529557924325588829972626926001856116218149641848931627611856095681608502049604728694373866998800873793794833475389120231569350898916749652696861495083269053509194449587614725554391245026950041678221421784696915639893978008988115974628714547147103468130211269397474452407156217137857585748699660585669149692200183240671446131671973589521765207492540448301776208106269303417635729945209531363305026742848137813838295036147383212196832126162865335463466561361409672786144491545547877231568077479720810911371970039908454207555969974929024330604715947635120890002757270394372957682905595391676060862365861775640550248935336685083103867570594614396930935612590413493959149016850970545876096218158891338146114924706065887199224191578080834101491435941396082107871178120691839003211534425918642587315041952198269461336583739132022883309457097019209940833906282314924551936086693600235902374507567167637535381913303859494521404821158954494161315238799966252882039753927801125656757563231893176983091324850782220479663033201458404864019043728888446967709975804533406561597647307666736915858037493602438470123931843180216995263782074288168270696306819344125131703913727531436787169764181060443128826914028449143343870445556915243291006445590059689543641135357147336450120418996865830009910043524732386950657567959305789673308988840460874020981183065604588157684942510453265370111980067359260650568119370610380556946353747266717913608784026798916527135355036629347450939565819904625935450373503394875228925517167402287702922664490685223930566127022783241602405058913218083039094404066037147525985595082542486481669033554440669209239655726473710598417289863187780615394059781396829068192614265298593097207267823436957283409373106070373278544263878956713757687019674587981457190254278514279204605546359474410508605834050747211850883484821202442476380159869647953907610229592310303134114435748409130185991653212644798150231313091123308159964059871142740195724462392875247410611671330900705772528157325261686884901444831627452426862521432079108938454589234625663627219874064683315753735830472270203230291590088379095823378190821206228778033950009778463074754597422953197657206227154124599901813786834672435550297250999713209514657587197026419042487591887319632167337140620411177338653361805100343525050955261127436206126342162794160499514973561746207894282310244084464331015046184437092252547644317599059469495339372219011274409057478305874498858052105032898790647318808541273973307143643618340481044516933353419712178803129533334912992701719925571602601231239966045848260929819259463725272466267039934723526708966021692828547630900867908313425791675877136094296969834925611943928639082538263478045795468797884085508436740105548477287495851150076743539940855079782006029276242181215199960474633917064701868986279575047584875782888121629159833482729108471411086004777222004940690886933449751160053486753465048382468022710892618307193393528079008752243904763586506319110138528885232166270184875496667758544101338512476188537568996993043100897750547345490436292741108436750920835304292808262544944670065385074720714585256100047460364718010959212394917302809571145040577796350681992159274957618160496935869534857889595670144103693696724808909241541937251046834703005546264200526980116401703872577549517787709928581009929724799949713171016514146509097812026583336780509096196442473618165553854996468315728059606232406325692644298205678901764327286910778328167615148282802913180962943257625623528207208823616122188000672048377973388690302368144655729681461875178487994418224929756029694157916324380087380717263548515509059805890429224503660512145778492057781022321319300741401538410679063054050314878059794599008988939481984403757789776259194385861548907079786218989999985501502512699493693947825897304013412779728462320145418134117202642305220024682824144269946547059866645346290129336922393759141046965787439826153450256825134094790929592783588398691272222187792943672971006484184098016720992986997067386737093941669105468352548563143947335409769120498804286178739726148574102071841252232146176236358066633649877671588502174880747910470620226875718620591588580632465728693537756687445252996484012749560906868590019478473487675167061165693342982827540412207944219805698909631680447518841794973864110724383885552977456485490355687570208317569412914524579582528443585244963004875806464317485086354268522391292873764104739225726087924762553552795782491218068168781724170435932899368215004200480636159439699787658534222744609009579495632497983889807333784591846944280527939629108316893490033323187019394767254142325425613836459619989619263579911717847411193199852084628049271525546800786030737052994542939990268948285213669034871808549614119094067473581277599609496762960972260689628137112032360486445234598511199684675881816677322350072503071116878677854198807513803028345384041193976936949595607619772723094339732775857366188394242237888454133005692229522627059021766683056379166328758643074034651477088295526779481972642314260481913656849908998775026037593896126509468805024130879738114831726507455996318751711242257525370629800182960054820056459299031313033178639379789867248052191948564791284306277912200831531132727252848046975079274107604207422180790180674442083634545051718378749397382615541422595171094449620979551195843771863108274520677010097230731862345300468517668904946393480947243124651839763143567511692669685031233831621389557659840710993215211263285069063398339503947184997161094083083053877736678929654970511831662984737433141151838605212887047272029235859200632246127971440751906726106283042958810473062871828212882679956627599162978008334087215417428566328627933710537352061688382898427732919052252532626559528549194113550832651182056923950487564696393200874225189927497353864238597667828879046351719309006631247078157959316594673705629051666057170908233857157705536358758178001948093811831452532180297259924653826868431583529081443915403274901333012849380463102430959626058209184844395226752980898545128507931317338496625907256515055513251369817237050215214244175173206043376003288561848566594665578019149404316779573795236831759132895146984523319002050235985934121956160952246405830116891841948253796487984299917640127262665004204345083559607575220761423930983654019621896859885405207293374556775708780952649634706639743293665862226821403434927000882776959081749622346161275243116822118898574420383467793130210766019125911546825496631056718811589200078195809534266736568373586977485098744359972146470201537305238751109316700591533775648459300115999077864969027102697762222355198344795959353792485217583990345381206371761414421010734536687579132581669308016312802515063088351170568135725500656192906416429028050777241979163318996341855526467788527253070038318737475135130442244262535653432939984902783154351748576002192512489655923703793418069024108798838849972906445094342850419486037552044967029146488792384693648586002550767915684072869316718751724643267161008346373705744182753875744727023321494376965078987015632054807290667808424067931728833093486771961815346826309828195559704978447323474359127908437922549870919735027220283560010130504849534025889434952608766951053099462066403239613829870069506759073794934606255061208438993717700947178902855875926936475717036748410034341552469899952887639559618260694386489180172457011104588203088631135975270713663097698949066683649938633016773410320323447393245620649077170739933817132023640554516055821080347587299514517344103913434724274570905671411870152447633630020794116729196035297166502202283173704040564353623362060624602105914889095359863566586252963824184113069544184070392139803990488178637780619106269997462589919674956410553073119659130443817291726973054433812614236377566385896766193436531715868492078679787049921607831256548591420181144337005624829883308079609829281702933920044150724362349082932337529275183555550759563264061342114344076379295287668872881144842678541568323866396895644823948668725645603165802387345638352049954163004283115082448016533419466854214433863370929972934845362307106230764527411697357427260580526749886925414604386144800887890455404447490586471146843968438319402848710992027349479404509054156265030858599686233771999636756519543362055535931234102657321710620159992369968135582404861074012859908357457643934719496361092731946805880148347648955726838411743124285700361371263752582259872541407572187701536397820799177145606117943127447314468934127745737896295536031841708107999973631172074267987053572743091086520751474818610389107050882688611509676523391949612687262723024304567914249177164676175113427118894827540124754596538131148662139737659987591987808710366016209270335796976639603952589746825309966421820623559980254684651585816259754646896675329322398127468234562575355911037292681588630747026794408719412044361738934185088651798053979414290523336289393920442009235066258188884117507158747732520164728032543870564722222274127742468776838751533544621992260989073383290925600190934951597609650422144836431238624232246140925645252235224277512965625723103788058599484029459545200287204461143877805380501018130152779707416171004132419255619937668896930949220825217150414062456758348613847169640357557332484328139934101922784000250937441082915494248269026918650402924769009110291437748448952763518164181850168552758762497110615089698420229504724702503938309581244539522277495404978052342540570967136271030627694122107443462213646337183623126971012986781309482020707420593863632485843384964535477343527400908627484307719882317043393718378810857723613256421901261434759064975382278747543366226417959638731591323673527823550282181039009870490445320706815835382713226494596508647261636899500195110884870850525896617885714025707410504066312830152850302561635092619333567203579066303154655776839525470585505379545233565628470526466798193127760716376850644169280567548816813902508183547962830998308876094664913115567444899888066294586537615803720457816111393232094487429956726714915349898077589609929473981536895559767177568911357519231394434393732467776362068275102582907448002180170709026284212375295627830371543656788608582913633102101052379592812704964682084931076096', -); -test( - macro, - '-1234', - 5678, - '307239295662090741644584872593956173493568238595074141254349565406661439636598896798876823220904084953233015553994854875890890858118656468658643918169805277399402542281777901029346337707622181574346585989613344285010764501017625366742865066948856161360224801370482171458030533346309750557140549621313515752078638620714732831815297168231790779296290266207315344008883935010274044001522606235576584215999260117523114297033944018699691024106823438431754073086813382242140602291215149759520833200152654884259619588924545324597336231254738156229165754184379098279299262049527493981418773939710052567148397520139396664287825920245602806281465369440795094171273883323944551402505328195835875189714803373532518976612644335221127924375262338025026738810109229789066895210195233568313781368494583937688244974433119626632798061718807757570369881396496330922521092429743441101260124582034961693322001051820700723840579394700173377538808676217188816149219248363818340764914694139680749024310479827367842428590981843277277511673125624678580926604235648781819510534399854187957358228934011534030807453365221505448908659560252635131850623331246397555109848508339190181937347601723206430770586417066983949247170768203919583900239303725667699002878222006139705975234985123135091187455708833574958129058095463081654382235387683423032727818984044935970076132966529729332219803725615665380149260841248646307744074852263644971412954286319498473825976906290726980643387278999438899482000949753370477834589869715954340896670602062189642115067712194143619891104758054603148185422879681279323731504130318089025303464892133142814050831321280869931356176562021125636637696428931550149163626111706971094926279122079036473959349398647207563958880810847203107558693382581247719368450328373491128928043528764468838481015835481857925222963292893497064677790987715608519992573590320785069213807044062645935102241563318077900517348913659692426362075079090302084558791018063653522660752511850417737787810507118607660015778345736185544774065149632138946958208872078504737965494929224554757212817739013665074197553518364007019034099233743417376008297034225146702810718547331679637811882447383064783027200681712046322391430903630967737127735630322507937735245138690231556762427184206415939967664528096214944050443838234089893942372249310965891033124439206439457942974559079093400885882410032029710828368112382759140589323805553285532286914003552846853057576991775275570301997344165769850233881907361264015895890818849669805891907459800581990812691006812626374363578450984335517894357744829092787395926839000023962733949335231397395401479346911188305001193928601270290423808867456174087663596893004075220125591262058242530195664451642127872992040342213830892225801497136162152126452814636821372850336677985479349893600592592681158187543928904613001813023098258056853626951063105305617338502819189272263288481301255674961962172018025892490871747497521613169302263447945299308964856799345744118753448948756633623000928292271644274476514153318916142897646572809647150502567312733052336669846353667317222010832483097294019925495696183147173179102497732276927446687768280599040464245101520966166706822935112404086619669510798582900981432655281831317374774621351894425270900215984721126295035504324174185149268696653681359521661246230845622880397944668142537238039679575235700048519280449389874038813948425385923473788921228513953652472377934540266323863335829226613711924193402576311531059727276108808010971355782749309158823047978491790920875069292996040857512538729285177101496567684459641487139689410758137498167987281056377030844965856298252042132686609411400751350979919962404101477738095442835101123059316328509676953867455359567416099259739884548059992245862006247543500012335979063372087713854337763356772298485634443508377176714285187750207610971059830770832297524782702349430113067885720680406382750054789965311761788658021072821754255217642242163558086741759388374052688951876547395076883774495970922489499563244338874847247075560546870915783578293537186883556120656238250632036990110926238158152815482271306910080137344309034132272734875502201244632205163102423192286940171017158243227969637526316846974981084420356508830681480947885917792995548959521169789814827379240290484939291595796335808304369249825132694371154995629020348448070937697459457310658016390510669950232202117026949332446206032626619437018409520774627547364298492663317409090888105284856231403203264042680650088950260251993214047720274157347392106720550579972688296788335711267163348525040618144978956911125218083835003018934447595528171992681871934696456852699493142208475082155078613935820598046951404164272965056793854322831971808425855979818512937009767860333913142708117420468535706707338985116178601074119960157589096146389334345593090791448497569418129926045664495907334153337589635221974568810352681900639590387377238660034950767943219972827486077231842758760058663109292511409668322244689754266200746246009494113605844291527613997239500108446722588067983522129703414514679248433646988350542223586243640715804222865695841503336942447435284973707708738401917434544559678813875897734731101993564026733107673289113791026266802347607067756870070049091879278550780571887185814708537343643120109716176863158267452564359772918848474831928740035479988942851917286977981468213676371170376581599421687421157192621766056282635455502745345422134109463656273257647493243595299386340007285458064661281500227780615582329762847666128912270287127702011512298795737439109946753443411265222017119479062242748224835713889637406840422012428195129047091229247913611585459076419478870311555089949116202363154707599047680183367431508170042693609348631935300963606524001909354481256448016576044636672552024793800896987328626909995732430432770110962492541560005764748146851044781232535045697298013876874942199766539748522749578575930121320360075106502263951925603758744064725542088121966571973151956517962196033756616574064204240308736083289250933661070517861933607033805383794022932833914403046538303160864479381724650667684378003267241939785566603437594388219429227245319361052082720101153688737108636181648544729232365745223735571958927805431626874954284337872776726226192776223809114300468574608813958523118548177886092362889284408683605828714504550636413269626117352112283711190743705957538771405106257296054814739841947086172415476929232773599749549247112194345575894505210361533349007732728515354190634197202883617455807662715540116552260765510850657135720244190956869964668147050309837395659245843733132747750125006720855350386404222102322699685624358041394671351793225094747979930897598627334206296992066864002770865189677622663536544862088852637370423181596293505045491829198840304769603782293214203771365262426835626638710332592520084894203380483205318574229509791732093263658924554481129110023771559358840259857767832130838951986420641743231157549206628101961335770935217869188598407871879846953788231452559357515703225887372560571514246425295258565332871227501930345253728333861399415882260461345687393410071890081321210957633577414930430621476910640788200315263505324920812865141791848583320684391090487087855177019341942297833034669241769410159832097007619834572197457123843735128138967329683027440008185533782920736485842481620240819664388691386839924189266798055808795241509113657623950370311771062440917977857478832595327568508967705426889618627733979628180362261623944529557924325588829972626926001856116218149641848931627611856095681608502049604728694373866998800873793794833475389120231569350898916749652696861495083269053509194449587614725554391245026950041678221421784696915639893978008988115974628714547147103468130211269397474452407156217137857585748699660585669149692200183240671446131671973589521765207492540448301776208106269303417635729945209531363305026742848137813838295036147383212196832126162865335463466561361409672786144491545547877231568077479720810911371970039908454207555969974929024330604715947635120890002757270394372957682905595391676060862365861775640550248935336685083103867570594614396930935612590413493959149016850970545876096218158891338146114924706065887199224191578080834101491435941396082107871178120691839003211534425918642587315041952198269461336583739132022883309457097019209940833906282314924551936086693600235902374507567167637535381913303859494521404821158954494161315238799966252882039753927801125656757563231893176983091324850782220479663033201458404864019043728888446967709975804533406561597647307666736915858037493602438470123931843180216995263782074288168270696306819344125131703913727531436787169764181060443128826914028449143343870445556915243291006445590059689543641135357147336450120418996865830009910043524732386950657567959305789673308988840460874020981183065604588157684942510453265370111980067359260650568119370610380556946353747266717913608784026798916527135355036629347450939565819904625935450373503394875228925517167402287702922664490685223930566127022783241602405058913218083039094404066037147525985595082542486481669033554440669209239655726473710598417289863187780615394059781396829068192614265298593097207267823436957283409373106070373278544263878956713757687019674587981457190254278514279204605546359474410508605834050747211850883484821202442476380159869647953907610229592310303134114435748409130185991653212644798150231313091123308159964059871142740195724462392875247410611671330900705772528157325261686884901444831627452426862521432079108938454589234625663627219874064683315753735830472270203230291590088379095823378190821206228778033950009778463074754597422953197657206227154124599901813786834672435550297250999713209514657587197026419042487591887319632167337140620411177338653361805100343525050955261127436206126342162794160499514973561746207894282310244084464331015046184437092252547644317599059469495339372219011274409057478305874498858052105032898790647318808541273973307143643618340481044516933353419712178803129533334912992701719925571602601231239966045848260929819259463725272466267039934723526708966021692828547630900867908313425791675877136094296969834925611943928639082538263478045795468797884085508436740105548477287495851150076743539940855079782006029276242181215199960474633917064701868986279575047584875782888121629159833482729108471411086004777222004940690886933449751160053486753465048382468022710892618307193393528079008752243904763586506319110138528885232166270184875496667758544101338512476188537568996993043100897750547345490436292741108436750920835304292808262544944670065385074720714585256100047460364718010959212394917302809571145040577796350681992159274957618160496935869534857889595670144103693696724808909241541937251046834703005546264200526980116401703872577549517787709928581009929724799949713171016514146509097812026583336780509096196442473618165553854996468315728059606232406325692644298205678901764327286910778328167615148282802913180962943257625623528207208823616122188000672048377973388690302368144655729681461875178487994418224929756029694157916324380087380717263548515509059805890429224503660512145778492057781022321319300741401538410679063054050314878059794599008988939481984403757789776259194385861548907079786218989999985501502512699493693947825897304013412779728462320145418134117202642305220024682824144269946547059866645346290129336922393759141046965787439826153450256825134094790929592783588398691272222187792943672971006484184098016720992986997067386737093941669105468352548563143947335409769120498804286178739726148574102071841252232146176236358066633649877671588502174880747910470620226875718620591588580632465728693537756687445252996484012749560906868590019478473487675167061165693342982827540412207944219805698909631680447518841794973864110724383885552977456485490355687570208317569412914524579582528443585244963004875806464317485086354268522391292873764104739225726087924762553552795782491218068168781724170435932899368215004200480636159439699787658534222744609009579495632497983889807333784591846944280527939629108316893490033323187019394767254142325425613836459619989619263579911717847411193199852084628049271525546800786030737052994542939990268948285213669034871808549614119094067473581277599609496762960972260689628137112032360486445234598511199684675881816677322350072503071116878677854198807513803028345384041193976936949595607619772723094339732775857366188394242237888454133005692229522627059021766683056379166328758643074034651477088295526779481972642314260481913656849908998775026037593896126509468805024130879738114831726507455996318751711242257525370629800182960054820056459299031313033178639379789867248052191948564791284306277912200831531132727252848046975079274107604207422180790180674442083634545051718378749397382615541422595171094449620979551195843771863108274520677010097230731862345300468517668904946393480947243124651839763143567511692669685031233831621389557659840710993215211263285069063398339503947184997161094083083053877736678929654970511831662984737433141151838605212887047272029235859200632246127971440751906726106283042958810473062871828212882679956627599162978008334087215417428566328627933710537352061688382898427732919052252532626559528549194113550832651182056923950487564696393200874225189927497353864238597667828879046351719309006631247078157959316594673705629051666057170908233857157705536358758178001948093811831452532180297259924653826868431583529081443915403274901333012849380463102430959626058209184844395226752980898545128507931317338496625907256515055513251369817237050215214244175173206043376003288561848566594665578019149404316779573795236831759132895146984523319002050235985934121956160952246405830116891841948253796487984299917640127262665004204345083559607575220761423930983654019621896859885405207293374556775708780952649634706639743293665862226821403434927000882776959081749622346161275243116822118898574420383467793130210766019125911546825496631056718811589200078195809534266736568373586977485098744359972146470201537305238751109316700591533775648459300115999077864969027102697762222355198344795959353792485217583990345381206371761414421010734536687579132581669308016312802515063088351170568135725500656192906416429028050777241979163318996341855526467788527253070038318737475135130442244262535653432939984902783154351748576002192512489655923703793418069024108798838849972906445094342850419486037552044967029146488792384693648586002550767915684072869316718751724643267161008346373705744182753875744727023321494376965078987015632054807290667808424067931728833093486771961815346826309828195559704978447323474359127908437922549870919735027220283560010130504849534025889434952608766951053099462066403239613829870069506759073794934606255061208438993717700947178902855875926936475717036748410034341552469899952887639559618260694386489180172457011104588203088631135975270713663097698949066683649938633016773410320323447393245620649077170739933817132023640554516055821080347587299514517344103913434724274570905671411870152447633630020794116729196035297166502202283173704040564353623362060624602105914889095359863566586252963824184113069544184070392139803990488178637780619106269997462589919674956410553073119659130443817291726973054433812614236377566385896766193436531715868492078679787049921607831256548591420181144337005624829883308079609829281702933920044150724362349082932337529275183555550759563264061342114344076379295287668872881144842678541568323866396895644823948668725645603165802387345638352049954163004283115082448016533419466854214433863370929972934845362307106230764527411697357427260580526749886925414604386144800887890455404447490586471146843968438319402848710992027349479404509054156265030858599686233771999636756519543362055535931234102657321710620159992369968135582404861074012859908357457643934719496361092731946805880148347648955726838411743124285700361371263752582259872541407572187701536397820799177145606117943127447314468934127745737896295536031841708107999973631172074267987053572743091086520751474818610389107050882688611509676523391949612687262723024304567914249177164676175113427118894827540124754596538131148662139737659987591987808710366016209270335796976639603952589746825309966421820623559980254684651585816259754646896675329322398127468234562575355911037292681588630747026794408719412044361738934185088651798053979414290523336289393920442009235066258188884117507158747732520164728032543870564722222274127742468776838751533544621992260989073383290925600190934951597609650422144836431238624232246140925645252235224277512965625723103788058599484029459545200287204461143877805380501018130152779707416171004132419255619937668896930949220825217150414062456758348613847169640357557332484328139934101922784000250937441082915494248269026918650402924769009110291437748448952763518164181850168552758762497110615089698420229504724702503938309581244539522277495404978052342540570967136271030627694122107443462213646337183623126971012986781309482020707420593863632485843384964535477343527400908627484307719882317043393718378810857723613256421901261434759064975382278747543366226417959638731591323673527823550282181039009870490445320706815835382713226494596508647261636899500195110884870850525896617885714025707410504066312830152850302561635092619333567203579066303154655776839525470585505379545233565628470526466798193127760716376850644169280567548816813902508183547962830998308876094664913115567444899888066294586537615803720457816111393232094487429956726714915349898077589609929473981536895559767177568911357519231394434393732467776362068275102582907448002180170709026284212375295627830371543656788608582913633102101052379592812704964682084931076096', -); -test(macro, '5678', 0, '1'); -test(macro, '-5678', 0, '1'); -test(macro, '5678', 1, '5678'); -test(macro, '-5678', 1, '-5678'); -test(macro, '5678', 3, '183056925752'); -test(macro, '-5678', 3, '-183056925752'); -test(macro, '5678', 7, '190268860537460461066531712'); -test(macro, '-5678', 7, '-190268860537460461066531712'); -test(macro, '5678', 9, '6134207938767795427279285370859008'); -test(macro, '-5678', 9, '-6134207938767795427279285370859008'); -test(macro, '5678', 11, '197764925536165073952129140102317226473472'); -test(macro, '-5678', 11, '-197764925536165073952129140102317226473472'); -test( - macro, - '5678', - 17, - '6627070629806594831656022886215600897329358775394273623628709888', -); -test( - macro, - '-5678', - 17, - '-6627070629806594831656022886215600897329358775394273623628709888', -); -test( - macro, - '5678', - 22, - '39110965772324916562997532491390626962790594973791320596125071181383759481519734784', -); -test( - macro, - '-5678', - 22, - '39110965772324916562997532491390626962790594973791320596125071181383759481519734784', -); -test( - macro, - '5678', - 24, - '1260925177434571255317406540302166533842248540127020457961763919365319088416200089199968256', -); -test( - macro, - '-5678', - 24, - '1260925177434571255317406540302166533842248540127020457961763919365319088416200089199968256', -); -test( - macro, - '5678', - 27, - '230821086584467736122591924241292894830299686290762376622091655042209731331992663002654366119348928512', -); -test( - macro, - '-5678', - 27, - '-230821086584467736122591924241292894830299686290762376622091655042209731331992663002654366119348928512', -); -test( - macro, - '5678', - 29, - '7441598892019879120787748898491222680774095511313311141385222377597848399868342545524067924908115740965470208', -); -test( - macro, - '-5678', - 29, - '-7441598892019879120787748898491222680774095511313311141385222377597848399868342545524067924908115740965470208', -); -test( - macro, - '5678', - 1234, - '4754545701433992331733575256099410533228458670475892396381228147140277468895263961376711046431196278059194371543633511738104729515132046647921588948673317858795453334016910038267103044330714716949310557017200499682459199588937173529096934288020024176158267550101701080481254770583881162470132740630857097654899879616282728381172344973405997803534651364288959497452319805334849653833958710102843349430647090705281620494871877782238874887814289734228053896202806354761750369269951229593313010945689761891211258688068066696055485242378613245933537337160634515912577045202472450817451849184207035648874665441200090642213657945355196460821766460825032224534602658525599188179237649065062512691280473121441573617950552334838912754947407978233727886935344811884839323223019614920728343603125258018137019905454492748785128237691020015003872956540230098415206613398448533046207656300960598259213003433022409251838940742693047445967307981951797528065313733200257272599665561813580891071207079215211460876715623293069910550166302272098118272527916433819800298828239405657658438060618142659814207004518209034153803725735869682967280748736992669014651682583009724296577174387664968207473327117061022862388179179805519732871243762549484990925427400006876201981312808033770504367669331073626566876134508721159965417268468228608040850320762590581251984432320891961775899262667965048729940448530756142869126858563901357526390190162408750825956708618281237598759925725241049426257439561800035105159165326290183277107179838103459135561724394264803171431808241820795445711863608586766345039254614846933931024903619561176580056139441625967323631797367126958482941668050957659192162167276197457147030284596116968435975482030070191450200681573163807130339270972064786812978664842441338738386157257657806440916739246453417871760401803525801345778950479694386503103948471086023573572269171237514322085437996393254976781298685048789580780175371793986673922336623057771141110132765327451487041405878107213683772036140143582620048289665134817805568670112167960808287343393646995734701543886022122701209620784296421140764622633595229564449908877625079263109689514631383456799358203288875405982309838110130925886572530681702118654886611249141922200019882428708452245424153239056842500484262106739374720265689912446227419480220842375352629558959175152376134258348738676918576054510702773097564166661175972907344227049028399511499148144890097723715043579731339916022734957419253364608790001408119360562088903660541256901511777417919298919881207626846049705641631114520861910821360106286185700362951871430037373045323853881352479438655780016733428623128344067196426832063335414492412985195862227411532910672295727557475523062269393814283457830004423808768415796967148960731363753261748078031957490406872476713147808646830842062710450030612153443209478241811514340917541321810139916689385477670593954065087892241850261558516392240563145569557862995904133784803099322335109965684092492599160998743520079066871458347318820041040608736708265400811003296782209446700589963177364290058854636845629046307738816633516835431430230362482024920978970474394893679522412954011767859444487351352199067658529260874277691008237384360434306282016514094096768013798147480740509779810560544648455485790268334288880803641971210749525943040368705400269755514646235977621926612279423197054873015209023113609804623745158430744774035859946298137588499302254901538876084525827492824031763727264344218393017853529749735850655796213422695465000659399958563228524294668421953057407346976847682240743601105444694630169017375480155130799595124045461115669497563631224904361329523188370665305938674437690787549882389569867694166936751165216920602732743849889023149711513126398908342104741198863408830097845137505662663458382001009103659839197477448289276824608807661040318889081157573844237090631229284090854577084517143322570965548490565414070261786860900921959546383612702905328456128108405235351119788158687215861758441073018835708344133679077552976919500888460205455433542878586438605353256917018782886441646030034030257088489389720348078103255876838236261154196475758170227577027093408115125958792540599677335099871170489525421378579051844293126380522395565389230525206095904182031294100225265853213565367785174160416143450757600749410617414444540260518189203196008117912073471241250825794798475803391996546423777135418649913067759391180278825562475480988246874450672101428462254341590331425352560400400946802179861512954182324631693500044001899557332925974569520166679673993884049720918350709799494693984974735913494505510527664100089926593875304828031765284659403018738108240944539887468544', -); -test( - macro, - '-5678', - 1234, - '4754545701433992331733575256099410533228458670475892396381228147140277468895263961376711046431196278059194371543633511738104729515132046647921588948673317858795453334016910038267103044330714716949310557017200499682459199588937173529096934288020024176158267550101701080481254770583881162470132740630857097654899879616282728381172344973405997803534651364288959497452319805334849653833958710102843349430647090705281620494871877782238874887814289734228053896202806354761750369269951229593313010945689761891211258688068066696055485242378613245933537337160634515912577045202472450817451849184207035648874665441200090642213657945355196460821766460825032224534602658525599188179237649065062512691280473121441573617950552334838912754947407978233727886935344811884839323223019614920728343603125258018137019905454492748785128237691020015003872956540230098415206613398448533046207656300960598259213003433022409251838940742693047445967307981951797528065313733200257272599665561813580891071207079215211460876715623293069910550166302272098118272527916433819800298828239405657658438060618142659814207004518209034153803725735869682967280748736992669014651682583009724296577174387664968207473327117061022862388179179805519732871243762549484990925427400006876201981312808033770504367669331073626566876134508721159965417268468228608040850320762590581251984432320891961775899262667965048729940448530756142869126858563901357526390190162408750825956708618281237598759925725241049426257439561800035105159165326290183277107179838103459135561724394264803171431808241820795445711863608586766345039254614846933931024903619561176580056139441625967323631797367126958482941668050957659192162167276197457147030284596116968435975482030070191450200681573163807130339270972064786812978664842441338738386157257657806440916739246453417871760401803525801345778950479694386503103948471086023573572269171237514322085437996393254976781298685048789580780175371793986673922336623057771141110132765327451487041405878107213683772036140143582620048289665134817805568670112167960808287343393646995734701543886022122701209620784296421140764622633595229564449908877625079263109689514631383456799358203288875405982309838110130925886572530681702118654886611249141922200019882428708452245424153239056842500484262106739374720265689912446227419480220842375352629558959175152376134258348738676918576054510702773097564166661175972907344227049028399511499148144890097723715043579731339916022734957419253364608790001408119360562088903660541256901511777417919298919881207626846049705641631114520861910821360106286185700362951871430037373045323853881352479438655780016733428623128344067196426832063335414492412985195862227411532910672295727557475523062269393814283457830004423808768415796967148960731363753261748078031957490406872476713147808646830842062710450030612153443209478241811514340917541321810139916689385477670593954065087892241850261558516392240563145569557862995904133784803099322335109965684092492599160998743520079066871458347318820041040608736708265400811003296782209446700589963177364290058854636845629046307738816633516835431430230362482024920978970474394893679522412954011767859444487351352199067658529260874277691008237384360434306282016514094096768013798147480740509779810560544648455485790268334288880803641971210749525943040368705400269755514646235977621926612279423197054873015209023113609804623745158430744774035859946298137588499302254901538876084525827492824031763727264344218393017853529749735850655796213422695465000659399958563228524294668421953057407346976847682240743601105444694630169017375480155130799595124045461115669497563631224904361329523188370665305938674437690787549882389569867694166936751165216920602732743849889023149711513126398908342104741198863408830097845137505662663458382001009103659839197477448289276824608807661040318889081157573844237090631229284090854577084517143322570965548490565414070261786860900921959546383612702905328456128108405235351119788158687215861758441073018835708344133679077552976919500888460205455433542878586438605353256917018782886441646030034030257088489389720348078103255876838236261154196475758170227577027093408115125958792540599677335099871170489525421378579051844293126380522395565389230525206095904182031294100225265853213565367785174160416143450757600749410617414444540260518189203196008117912073471241250825794798475803391996546423777135418649913067759391180278825562475480988246874450672101428462254341590331425352560400400946802179861512954182324631693500044001899557332925974569520166679673993884049720918350709799494693984974735913494505510527664100089926593875304828031765284659403018738108240944539887468544', -); -test( - macro, - '5678', - 5678, - '20961103475860397096620198785828544812451875765346411250885842038327056305534831427524235929264523155549200123342202792959619294498356925569029791517054522023286004576806428127901116917137966737875680160041853755979622047280407769716320420049316833329762005532988708704331049532598407081927588476358096106830430346678025737622384646014143458292081444951646455890942404183781454801771092170042167548767143528488456067477683808637020193350086262620837499156780659643514425992677777549276236748838733016855656036767803970531404652487170875923200639888516998895605428441017745101547422412068987348460209115448467644054468275648419404395337331198996639591442581724727811657252555545825531082415497100293537939448249078775822683882777300250359161247892959517197286724099314650422427240434528774639093971213821558552657313136317745703702089009078172440361842759228550114479452733116278009555122957802967528098994386176881771431841384903021658686272530901973786608204786721041117420281569693260260781545794591991815167424486772633334335112935740169814675786293770425639825077094249010948409458543312552634155954058706239948602914517292759521672875666304364312018937594156108424003164485077624655063004963280160357043967713172961937421714852351728786997474570833727073802073151242655465897621077578606223043356016087694305078059542256401820222791125648819317007287481280897846845478489548491210810983350692374049786882713293346324409753707754423018924164908641564327101470836717142930169947476809752607171960867023783880340917424768781396844547673066773609064248651574496288539173939354153931404464270119589133463933821401953922574158938448014272201881447815841632885101526774501650212127008845801189603638355135409486428091715296322188863520347687656551080147975509615440823847444672761184968625278441257265131960174485819064367376310553604561354630629371249798285268189004212654426527594297664248117535729307223651413582559430948950731935053761900974795521089002020414940829028280569419489831414227882285622096763688719827413987472799210647005984076492462922894315598285699105391088926945250813040451821143186871090522965245589172188408143948195834368520199216096394211579483487673484669778106884250996681597133290790739693751847242221100768244023759346750635341703420379801838942511917350863694564847029339158694426890381897099989180224343864523754112539067694526528401217644323654424427231493800150103842858508404600706382916219260256068179635822489248860978198535137682711137174374077990340914136980156334917668955828893820631948604959981643749170072224740493035859834098207411894779743137041606544382898751128407139489082003820804677974180712232039944683681108546158160055498114804222931787517216194961705600600921002101530486944828893320089698663702374771897219653436814633911298888459476136973550537723000547178216062641659170242351858997391600121959716952009812638059726218252540709679474668997724436632309816876295236407595457518507126861860680695750920654652963320254726353162418187659321568071114917619368662094712938035019186605722392484634089048490456834552767036555584677757558574446800534129195021872811546196149505124075849131199605515302266412472075986121981758995616205249141869256646920464095875775897714478203686225976431026856924883709687572948846561956353515691616376669694467094214890998233570175924571354681813611569544223781951920459777052032721788869612973356209611272860999692421601135843006769446060803502108056936952707032803521745669953368947886400455020197982813897023648803789317080479601810246362997281767966345793599493006980728517888764254888947867564213736366873403675906000079828022438134598229588800533119240383617199914137931213183505864880894139667746523030715098472929472302939576875444596462566452370793967057305702473460610483922270628542439793100970761937675746264116065218777391795769254579066163889330331112744733423405142790082465878728322397848857528516220224146420991983558383260828431109792636682987735128999042469763301989217214843757185512109526419275078060717097555288972272391704978646752898865425525925148946610574643747876579415727008374889238583995957880506518609256410087352303549297375442558667992920688803103146202722246249407948046901012612240584683255617396467408314435847004205877168068226283077754365919306242384808777157837278694966451380135919664731764683570386835799307599048703936473275613236972515229396396260958643009818292356066675853792547520081901067916982728871525491998521513382058653551548991210196432125407005261758774055758476265898632777046159129580237974401964271710584580359869876137967244126611356619072305094409440480536976363305436314025755667452127894209347682659916071643846222364653470873175722549995662291210659162334560246843460484181862192208393363077518809836625686572884061772196633797888749892277506502441191600357977013385504776300311259998291033716404492720409291745672289169990906465740353542556271192233542966467378955571662470116771561584749525830836527785451464178352895390807054081934597059639771119622039654129377672203491023057905439106311615960089279769697340091409307248615189012263871246113888420237101222530953693460050751365447872194314346321021252618391674612597521999861167606501984138883750088324174460600828958999555754255610905124642928577815381854757230470329901276588212295301182538623633435542874680576666352264509760450468573897306825844154780925961121512391772395963933139713039190021107996813065298155982705497740394116136786877280826320702315582767519525968812480806822623479009377991272623849572823287103715254262434467196819571876352232869161557710895323643426054024697392936513538931702107731492975713311800736817229334271317993829146513166265221678058872670454757573140530510521990000183590216202544311048834058740149712755109451126122309764879750972847619124852572353750625754484613228115522998750920829289098099554644037180554427993408365441797464370149734104965776213777083810307981642619540386518150159046829445424829754275452381328601724043449450956030748949308969828402680425162361229035418400544619561607296204881691791480090999541515616010212649557063997168853645599579523842619790074716906017775453082500897068436460404332503814365128244826029711441494116174974844655172720999917810103350411225796563189051529716191842251620861664071037527702847381765521782774102962458150055205741141136106439247547142624381556529650433877764934281678531465410529585976763361537124975372339008916161274767618913876519271418713246480667376525939051541144349620741087940031759796162844867538970077387831434344681530487207516991510520912619511583884571364622210013697048350627846600223329500321002977613397306970367590540778783822774812030074816751772184402370029104045385214602610907543748021786280923450646029057709024071335807175590663303554223846464611978030180007569607921318215938216147386594093783432526613610728757005691521557409476530287282519784554821625290605602981175951476074638525315922123873770224286936370399872701299567171494946919326740256775127284475987028437513344512643223731472467390195611228556080275245145240204853439354039812301589775361549206311675316060841046896944990780074886738787814930150748548502907587826876353074588954972282061956250092436604733846523028612361583744352854099913930684272445300389550635728506447056670977566263911578264334619665006859685788546051311606465170520850052292627918870022043421681580681687815285018239742758216968701779554391176904096742556900135151126780776552006315456063734183800063507587324457500426893135954572619126593168091720910428883991975359480482573972151692294245346527271827960866757765591817415445212833405373149434835366091481859076709340699689283099227679095904342934396597071849631503357041827588692207811689619541022987674906772902279361365116008403959183232244277968153717371380870224724601675215395853317076044589055344155303188951949633122037313447319757599917592415992347777664120565677256132176162285933749924410020763498845915345437059932175518550870149266678352583554753248105512643561027254478108520853968547412343074452732048940948337258955528107066091208271688418567950938759541825412737643300318455888061336920776577194225851506408333260918392790229453752287062094219357308185064469699183516806540942085490353756937701017866352051531856798410752966442088040473501761715035453238890231970013529945683188860755904234083724684800512845736719451852683069210468801867201477539348052542015577484072403704037776579238040836520289410747338939580941699344511302194270338381742596661809385741277476102729401334821325398466231955303171814534873887668780922143864823502410049426239526505466585893420380824352949092066404315279591440868891045752500463965898054919547044239119894054717314737895191652981340489644261093020311422889692148710370782648783605622470403387492804891787456729566334392617608021680405626520291926600181533814037514425472456947855714901443112699002508628600214500147437397501520737486276785876992172931265188844659595175189051513909865093560705009962172767282431656449941715794260678036177108296646748595792902478003711079538568560569329362052983611711508572531810948840324314191268617953219086794280506078381146419144518511359337076537668884246531754894520493160189833787323225134536395026232747632921100895318203838170957249192688530720205345436462911312863754388655934052209987748976917630044613649507982963832646361600102327899814182961925247597766558883415426602825642679231108408717356160761811443138678307765670120961632324431937203518098606674451620777129193461079930070445790621797443406995457673007773949240694361732293871256269440702045044042508400041950088476821880075340029625967767429598359971876420730553017036711928950784849486622452639853318381569541989587912394634477936955057149926195818822162073890615735490958836145860064089782477806643629376414359166374954027243086599306339146161006095540567436463505814151437072367936996320385241887273358613933332829151995652505803301556826697804912428850607413334679395180944373755345498960648748382482129209871428353424166735231886964387990779276298346036013789942626283820173524619459795908090658203843828759290932760054102527111538316976316107885329942413386870965936382594101982473536441345366235792871866647413979193839717006298786289046184792740497837459531945129292724622806109963537972595469737226837786127695843373683711177980931771124939231813651067119584047671610562615594610013918906014074965915938697967519291496645151577431294255803269930598594469775759332172418552542909930827665688050144404349648565099431522182800149383324488601033329987788729015603953218570332519940819306386650225037968580102257373618430731324266588124210598703511685751977221929792590346525097022616738437403242628009366426304027403800405332758340415937758762022018256029841471401813518917716264970909993826679020791028595741882041564058061727313588364708255873250181519665032113898406604900457648507873836669075356646954261077641216790353285042630288932760415550082594708503004210469047805667031578982859227123863848155443706073467171101932882914667034131195237741270122375436214181192852781446477601012439563301881420830604554167146333080753008048466060868180919956181803167095012443813370384688061266418807988055127749853292289167056432298804062936653555435002773574758792724801465815463068776612178263548503872068353366422210523694946841803129147625915455142179893256525229164984372164655503046171715680679418354756933948568190062498291382727237063733314557270124601968330877375375302905000458666065115393775985001980241299574368885547201655980200135959471425563854499243977941637298696317480645641835649611961706086308603047338759013980114790118006676458648654934040344142400548899195911697413888327578658688851175449259234204015146825772165610587763768386460010876806660067899144780128980585458498486050060134774086471042255869079733943552895314018768767346670068755253063974621759845733812981050837508917001404433039971743800738940429888879719722032789032572353352744414958968603767414609445925606874565266830823048810770676933082518916615247308650769963520499383636076074952007889469520893094651525307614701445078300776534195271458658643120654661933319467024570788906633360571649837492003799512889247911398553146591016455594218010075513724555874545150086787082537930052790651798957811066300144858455106371826307947479024319648174975420433374959084000626716279569226568594439081586004086396789477140805229043751501120056323542312951737926321877235735914913996771106885471756468685655223612768963960722422730242543178403592512730653108901995129957541586204986193328435470246585569185661237173969190411536963744455489053317973231535816102151692209387506678463166253256748427255152612939374373490497892336019501080931787139480532743574835338284878792836456350443071849124517079708282814044437298390350851907341664119465791873084560904592692890839175621671856709653467138377030657216088346458495003129554331909651018828349471677645970827844610092659017435212835903616196746033025057028617583036181754607527505265145156915470410506790682071708352303854971538714988518380835322105678173900156055910356897513042381483508937842961980161225304561882550956202034776079550133622209227253722849998842871720910727926556496708078296526342129984119761109693088229168055370682490197459698160878225168359328983640522770803808232985893757138451252793719878554146381587949241129832715284164638628327205083947429369577324247974259656591200285342816299760599997325343453887746113000804971059841058142634932629767863224029057643740199869860852268177578424390685549803794805777768828321816077711698044150850387564161363159273195211266593336485672068912471611545555503828635002039882216193749699794930785426172968668007437496372781477721590621442715765093180923013806625623519237937374711524887079886806048451452685056714484012446162628312599653092101079835587808229519810848029768298450707529049027855868594581351120373694968471491325622921276839709147987501499009362126994924173034840891447854850534760007717018397409635389989721942703280358887059064381016959134652333830901444808032621722673636621106845864481104295244621928353536906854484306037465883277840775957049146224492353399079659842861817526312402994884769704689603020779604603739636166608166158691216721969031390843150488617586505783575176219285589177884503871139501493503315056927532546400718168079346521373642983412554286854653491668302783219026411150683690404676506814296062048782453375783985993074773600530807406821508678796048884535057070454725641832804881628290472319378708107612672514958728208415814832848366830770879939252404453831503925587010649860843157237264031863553723731115423243833225146791947855702939079762335792076456959779445036020009496001781800831364672755699695312438929954900086480320360978014700132221039920117199716948333953655007203510534208947542173707336851190033391697173213334983116967278338578042740237971848876445165127559667023731212410332059567408688316981002760859447186074029885560854879276393896939409839546337254074481153175622933159009005807484599017919954851974584592781083821785005276107736054438857737927856937120884899984310863662967573212483017728483751788255634467095976284660372895727900973207840312300428355116015427435590176977077187205781812230534547145024610923191323048599366029697646809970005492711875817316442030817504177259518549452303716064462428946033555861760032856644595430216590534551860765065591027032595210910008411076368147326583568499051675140899438258973699944961369654185169046437778566505363261882513483043961521822263294058027245777275740012119198813520182688767132883689210273201334533673118014437798534485316245391538318773583087415840444449319110606856512447512427810349060960965229304174718418904023965554517483150090227734193870384044342790786375008719255816638434921858068442041606691749879152418145598438590758009228404117127766264078915319545878728346609769951809923039955260523001211528419908084892249955619893908746226668926291220179829726182253315628363003141666323849121632438113963636026816170489507556799521505584106702009070060137446668676003914632974027568315166623356117669864718049566304056730319591969263694104593459765322344772255382701180475436641886868678783624543227744434298993623572900060680979017067990077221899049059361499776668856843365761870317864819462428428848922374612219495703536826811251521962115417657764716996599920443771355936808856994611476907846769440705945577948412408098308194247790251551814007405488547607931512528458295294431561075440913232712872386575874523702338843048545387696311167012267393016243499862701702704559182961184393139009670554985993265598484792846589075913709674891472962734815769679185507332710024988728112966765370082378434820660544834153633496561669001904597457934287983634833285858233443830907814288637924228602612202936103591956657280461805355377341594603036055318976423539874466968971622720400344448054825863644910603570330666373214016807494452805187564132062676258921397872976935534785650666466979058203596663964008877239131749538077378553261427912422051571242411749896064698020652408788498399054601940514530604898867419049351496438038779395408661009142554015099651484475265311251583264780006555449353786535571876736192626391724175173600804803164802821449711193065509497976905374647202115518871632987870116904885869297723779451615583994721144940453975894523447005168454654094792512955530467522876206229286935224412977161135850490857061187099569220880490969801731923939968371712015789551373893696433571630232434930844238107438295257090395694148469435787522959391460491063999682320399157149585155220573365774129776211169850925291001405823548706054737610679934077813002757289010852930710833890387897603293202189092351455389213224220200812392861786079572198529046984045111530589932771644921408568949351465102893613740863050867997516831526923647362713692102368506180725202921498997373446137055388695228199734210698224497873308768594575297220521759107033810828350095765628228120152284513992260771237651139305247739659270616280339908733497338427091680415735990262483699211387602084318185900414399619311359472134983218719924998666805502050740906549426901732133211600369364728749393417316913960651023842430959511253264652006272039019440372374464314002683726896273148383941896402669657964060226983277289594026510720250861506182574611925245076873860196820954418487005698506965073242275841765055662272895065533031044216483018490359334981010684150119460032570579963029007065375193852242835591620381410417921655911808679699101792574638397223906183709585980959164320240595763914940916578772074981529105442754965693025026444579715860229807439358682267593669921082325720330651796439555898405980876598479829844298465640244001232596306871221389146172690875418892645048162202327778078851278433613157686380772481696539616794031556767885577380027308862476883800947813971379945924507762564255570966442195922640677432268158193234943248422208020363463924017498973834663895093591825522157827688503799798956822355457941723297439393436585811615367822230560739947438397685416715810717599247434830137898600384248415491280349563802303189361073536367401385203523086130688457063955625439511748867286125836478963188607731003192120083349188717903595076579429799767124404502580731912584575058518902202558354659537257581450704768143656086238404537693737301270764545835428493176034206742679964923389637539562396171219624285232430392133671282455067288971838373684172500972824178311994559519745977773185377274315387612668976397441534881939098559968323401638901357042031758745222318685425870175763581210340825614377239399102156681676756886304126199512477132209661598167513065258796567396244516766667044117769296076233945430288434551388983145956356854054551349043233270185252479304817744547523647489442750388225710640552607871951523222181135987822647479160843575474425232786723635746624017962010441801682460460846911429363958171491000643253046537377592219146819005387665341190415552719452163396674187225971483647197960216167631640203688782849503605151138399519953056223592845930065765020589667028047478555235402729913149859498685868729063983583291781384695081470874399025098701926833100271744846242068023582524050060108933501814997686980612309900254566123795338465882337102638236069457270509138946913421811976791562523400704102948549106032451197653504432853349017333134595228420504674415338093336394471848456363569811978503849071206389386547743012787895694085415358532891712913369286066906727002487638172447907565640414172498327074182250501908413014543889563559417363729989034832947592196482825280790955025439550978361293168022571329210314775804687773638280215386019801405994354558803657261076788491071425202082643783638575084090901655705454664097045389489400799009505346024924745729201182421567301004430571916568576607949169061394726630519011162277327697372959941859397384603824648805733579846217737162375462758461188848821424664212093326156665691469019112829336542913113790202783071641612742430534416926924889644751793603534790540558697161796514596582648358122270207620367742404487043868514971674400430158941877734533743310880649285086576473788391037431011688694806036177790841311961196527311456581911009317143690944647271732040654178076547839684445285591602529693579659384882891493197912230169540994733315399796960250749876936655523749674175502708680570084371697083686982023025890173668649889446225658735966722221404808349220864', -); -test( - macro, - '-5678', - 5678, - '20961103475860397096620198785828544812451875765346411250885842038327056305534831427524235929264523155549200123342202792959619294498356925569029791517054522023286004576806428127901116917137966737875680160041853755979622047280407769716320420049316833329762005532988708704331049532598407081927588476358096106830430346678025737622384646014143458292081444951646455890942404183781454801771092170042167548767143528488456067477683808637020193350086262620837499156780659643514425992677777549276236748838733016855656036767803970531404652487170875923200639888516998895605428441017745101547422412068987348460209115448467644054468275648419404395337331198996639591442581724727811657252555545825531082415497100293537939448249078775822683882777300250359161247892959517197286724099314650422427240434528774639093971213821558552657313136317745703702089009078172440361842759228550114479452733116278009555122957802967528098994386176881771431841384903021658686272530901973786608204786721041117420281569693260260781545794591991815167424486772633334335112935740169814675786293770425639825077094249010948409458543312552634155954058706239948602914517292759521672875666304364312018937594156108424003164485077624655063004963280160357043967713172961937421714852351728786997474570833727073802073151242655465897621077578606223043356016087694305078059542256401820222791125648819317007287481280897846845478489548491210810983350692374049786882713293346324409753707754423018924164908641564327101470836717142930169947476809752607171960867023783880340917424768781396844547673066773609064248651574496288539173939354153931404464270119589133463933821401953922574158938448014272201881447815841632885101526774501650212127008845801189603638355135409486428091715296322188863520347687656551080147975509615440823847444672761184968625278441257265131960174485819064367376310553604561354630629371249798285268189004212654426527594297664248117535729307223651413582559430948950731935053761900974795521089002020414940829028280569419489831414227882285622096763688719827413987472799210647005984076492462922894315598285699105391088926945250813040451821143186871090522965245589172188408143948195834368520199216096394211579483487673484669778106884250996681597133290790739693751847242221100768244023759346750635341703420379801838942511917350863694564847029339158694426890381897099989180224343864523754112539067694526528401217644323654424427231493800150103842858508404600706382916219260256068179635822489248860978198535137682711137174374077990340914136980156334917668955828893820631948604959981643749170072224740493035859834098207411894779743137041606544382898751128407139489082003820804677974180712232039944683681108546158160055498114804222931787517216194961705600600921002101530486944828893320089698663702374771897219653436814633911298888459476136973550537723000547178216062641659170242351858997391600121959716952009812638059726218252540709679474668997724436632309816876295236407595457518507126861860680695750920654652963320254726353162418187659321568071114917619368662094712938035019186605722392484634089048490456834552767036555584677757558574446800534129195021872811546196149505124075849131199605515302266412472075986121981758995616205249141869256646920464095875775897714478203686225976431026856924883709687572948846561956353515691616376669694467094214890998233570175924571354681813611569544223781951920459777052032721788869612973356209611272860999692421601135843006769446060803502108056936952707032803521745669953368947886400455020197982813897023648803789317080479601810246362997281767966345793599493006980728517888764254888947867564213736366873403675906000079828022438134598229588800533119240383617199914137931213183505864880894139667746523030715098472929472302939576875444596462566452370793967057305702473460610483922270628542439793100970761937675746264116065218777391795769254579066163889330331112744733423405142790082465878728322397848857528516220224146420991983558383260828431109792636682987735128999042469763301989217214843757185512109526419275078060717097555288972272391704978646752898865425525925148946610574643747876579415727008374889238583995957880506518609256410087352303549297375442558667992920688803103146202722246249407948046901012612240584683255617396467408314435847004205877168068226283077754365919306242384808777157837278694966451380135919664731764683570386835799307599048703936473275613236972515229396396260958643009818292356066675853792547520081901067916982728871525491998521513382058653551548991210196432125407005261758774055758476265898632777046159129580237974401964271710584580359869876137967244126611356619072305094409440480536976363305436314025755667452127894209347682659916071643846222364653470873175722549995662291210659162334560246843460484181862192208393363077518809836625686572884061772196633797888749892277506502441191600357977013385504776300311259998291033716404492720409291745672289169990906465740353542556271192233542966467378955571662470116771561584749525830836527785451464178352895390807054081934597059639771119622039654129377672203491023057905439106311615960089279769697340091409307248615189012263871246113888420237101222530953693460050751365447872194314346321021252618391674612597521999861167606501984138883750088324174460600828958999555754255610905124642928577815381854757230470329901276588212295301182538623633435542874680576666352264509760450468573897306825844154780925961121512391772395963933139713039190021107996813065298155982705497740394116136786877280826320702315582767519525968812480806822623479009377991272623849572823287103715254262434467196819571876352232869161557710895323643426054024697392936513538931702107731492975713311800736817229334271317993829146513166265221678058872670454757573140530510521990000183590216202544311048834058740149712755109451126122309764879750972847619124852572353750625754484613228115522998750920829289098099554644037180554427993408365441797464370149734104965776213777083810307981642619540386518150159046829445424829754275452381328601724043449450956030748949308969828402680425162361229035418400544619561607296204881691791480090999541515616010212649557063997168853645599579523842619790074716906017775453082500897068436460404332503814365128244826029711441494116174974844655172720999917810103350411225796563189051529716191842251620861664071037527702847381765521782774102962458150055205741141136106439247547142624381556529650433877764934281678531465410529585976763361537124975372339008916161274767618913876519271418713246480667376525939051541144349620741087940031759796162844867538970077387831434344681530487207516991510520912619511583884571364622210013697048350627846600223329500321002977613397306970367590540778783822774812030074816751772184402370029104045385214602610907543748021786280923450646029057709024071335807175590663303554223846464611978030180007569607921318215938216147386594093783432526613610728757005691521557409476530287282519784554821625290605602981175951476074638525315922123873770224286936370399872701299567171494946919326740256775127284475987028437513344512643223731472467390195611228556080275245145240204853439354039812301589775361549206311675316060841046896944990780074886738787814930150748548502907587826876353074588954972282061956250092436604733846523028612361583744352854099913930684272445300389550635728506447056670977566263911578264334619665006859685788546051311606465170520850052292627918870022043421681580681687815285018239742758216968701779554391176904096742556900135151126780776552006315456063734183800063507587324457500426893135954572619126593168091720910428883991975359480482573972151692294245346527271827960866757765591817415445212833405373149434835366091481859076709340699689283099227679095904342934396597071849631503357041827588692207811689619541022987674906772902279361365116008403959183232244277968153717371380870224724601675215395853317076044589055344155303188951949633122037313447319757599917592415992347777664120565677256132176162285933749924410020763498845915345437059932175518550870149266678352583554753248105512643561027254478108520853968547412343074452732048940948337258955528107066091208271688418567950938759541825412737643300318455888061336920776577194225851506408333260918392790229453752287062094219357308185064469699183516806540942085490353756937701017866352051531856798410752966442088040473501761715035453238890231970013529945683188860755904234083724684800512845736719451852683069210468801867201477539348052542015577484072403704037776579238040836520289410747338939580941699344511302194270338381742596661809385741277476102729401334821325398466231955303171814534873887668780922143864823502410049426239526505466585893420380824352949092066404315279591440868891045752500463965898054919547044239119894054717314737895191652981340489644261093020311422889692148710370782648783605622470403387492804891787456729566334392617608021680405626520291926600181533814037514425472456947855714901443112699002508628600214500147437397501520737486276785876992172931265188844659595175189051513909865093560705009962172767282431656449941715794260678036177108296646748595792902478003711079538568560569329362052983611711508572531810948840324314191268617953219086794280506078381146419144518511359337076537668884246531754894520493160189833787323225134536395026232747632921100895318203838170957249192688530720205345436462911312863754388655934052209987748976917630044613649507982963832646361600102327899814182961925247597766558883415426602825642679231108408717356160761811443138678307765670120961632324431937203518098606674451620777129193461079930070445790621797443406995457673007773949240694361732293871256269440702045044042508400041950088476821880075340029625967767429598359971876420730553017036711928950784849486622452639853318381569541989587912394634477936955057149926195818822162073890615735490958836145860064089782477806643629376414359166374954027243086599306339146161006095540567436463505814151437072367936996320385241887273358613933332829151995652505803301556826697804912428850607413334679395180944373755345498960648748382482129209871428353424166735231886964387990779276298346036013789942626283820173524619459795908090658203843828759290932760054102527111538316976316107885329942413386870965936382594101982473536441345366235792871866647413979193839717006298786289046184792740497837459531945129292724622806109963537972595469737226837786127695843373683711177980931771124939231813651067119584047671610562615594610013918906014074965915938697967519291496645151577431294255803269930598594469775759332172418552542909930827665688050144404349648565099431522182800149383324488601033329987788729015603953218570332519940819306386650225037968580102257373618430731324266588124210598703511685751977221929792590346525097022616738437403242628009366426304027403800405332758340415937758762022018256029841471401813518917716264970909993826679020791028595741882041564058061727313588364708255873250181519665032113898406604900457648507873836669075356646954261077641216790353285042630288932760415550082594708503004210469047805667031578982859227123863848155443706073467171101932882914667034131195237741270122375436214181192852781446477601012439563301881420830604554167146333080753008048466060868180919956181803167095012443813370384688061266418807988055127749853292289167056432298804062936653555435002773574758792724801465815463068776612178263548503872068353366422210523694946841803129147625915455142179893256525229164984372164655503046171715680679418354756933948568190062498291382727237063733314557270124601968330877375375302905000458666065115393775985001980241299574368885547201655980200135959471425563854499243977941637298696317480645641835649611961706086308603047338759013980114790118006676458648654934040344142400548899195911697413888327578658688851175449259234204015146825772165610587763768386460010876806660067899144780128980585458498486050060134774086471042255869079733943552895314018768767346670068755253063974621759845733812981050837508917001404433039971743800738940429888879719722032789032572353352744414958968603767414609445925606874565266830823048810770676933082518916615247308650769963520499383636076074952007889469520893094651525307614701445078300776534195271458658643120654661933319467024570788906633360571649837492003799512889247911398553146591016455594218010075513724555874545150086787082537930052790651798957811066300144858455106371826307947479024319648174975420433374959084000626716279569226568594439081586004086396789477140805229043751501120056323542312951737926321877235735914913996771106885471756468685655223612768963960722422730242543178403592512730653108901995129957541586204986193328435470246585569185661237173969190411536963744455489053317973231535816102151692209387506678463166253256748427255152612939374373490497892336019501080931787139480532743574835338284878792836456350443071849124517079708282814044437298390350851907341664119465791873084560904592692890839175621671856709653467138377030657216088346458495003129554331909651018828349471677645970827844610092659017435212835903616196746033025057028617583036181754607527505265145156915470410506790682071708352303854971538714988518380835322105678173900156055910356897513042381483508937842961980161225304561882550956202034776079550133622209227253722849998842871720910727926556496708078296526342129984119761109693088229168055370682490197459698160878225168359328983640522770803808232985893757138451252793719878554146381587949241129832715284164638628327205083947429369577324247974259656591200285342816299760599997325343453887746113000804971059841058142634932629767863224029057643740199869860852268177578424390685549803794805777768828321816077711698044150850387564161363159273195211266593336485672068912471611545555503828635002039882216193749699794930785426172968668007437496372781477721590621442715765093180923013806625623519237937374711524887079886806048451452685056714484012446162628312599653092101079835587808229519810848029768298450707529049027855868594581351120373694968471491325622921276839709147987501499009362126994924173034840891447854850534760007717018397409635389989721942703280358887059064381016959134652333830901444808032621722673636621106845864481104295244621928353536906854484306037465883277840775957049146224492353399079659842861817526312402994884769704689603020779604603739636166608166158691216721969031390843150488617586505783575176219285589177884503871139501493503315056927532546400718168079346521373642983412554286854653491668302783219026411150683690404676506814296062048782453375783985993074773600530807406821508678796048884535057070454725641832804881628290472319378708107612672514958728208415814832848366830770879939252404453831503925587010649860843157237264031863553723731115423243833225146791947855702939079762335792076456959779445036020009496001781800831364672755699695312438929954900086480320360978014700132221039920117199716948333953655007203510534208947542173707336851190033391697173213334983116967278338578042740237971848876445165127559667023731212410332059567408688316981002760859447186074029885560854879276393896939409839546337254074481153175622933159009005807484599017919954851974584592781083821785005276107736054438857737927856937120884899984310863662967573212483017728483751788255634467095976284660372895727900973207840312300428355116015427435590176977077187205781812230534547145024610923191323048599366029697646809970005492711875817316442030817504177259518549452303716064462428946033555861760032856644595430216590534551860765065591027032595210910008411076368147326583568499051675140899438258973699944961369654185169046437778566505363261882513483043961521822263294058027245777275740012119198813520182688767132883689210273201334533673118014437798534485316245391538318773583087415840444449319110606856512447512427810349060960965229304174718418904023965554517483150090227734193870384044342790786375008719255816638434921858068442041606691749879152418145598438590758009228404117127766264078915319545878728346609769951809923039955260523001211528419908084892249955619893908746226668926291220179829726182253315628363003141666323849121632438113963636026816170489507556799521505584106702009070060137446668676003914632974027568315166623356117669864718049566304056730319591969263694104593459765322344772255382701180475436641886868678783624543227744434298993623572900060680979017067990077221899049059361499776668856843365761870317864819462428428848922374612219495703536826811251521962115417657764716996599920443771355936808856994611476907846769440705945577948412408098308194247790251551814007405488547607931512528458295294431561075440913232712872386575874523702338843048545387696311167012267393016243499862701702704559182961184393139009670554985993265598484792846589075913709674891472962734815769679185507332710024988728112966765370082378434820660544834153633496561669001904597457934287983634833285858233443830907814288637924228602612202936103591956657280461805355377341594603036055318976423539874466968971622720400344448054825863644910603570330666373214016807494452805187564132062676258921397872976935534785650666466979058203596663964008877239131749538077378553261427912422051571242411749896064698020652408788498399054601940514530604898867419049351496438038779395408661009142554015099651484475265311251583264780006555449353786535571876736192626391724175173600804803164802821449711193065509497976905374647202115518871632987870116904885869297723779451615583994721144940453975894523447005168454654094792512955530467522876206229286935224412977161135850490857061187099569220880490969801731923939968371712015789551373893696433571630232434930844238107438295257090395694148469435787522959391460491063999682320399157149585155220573365774129776211169850925291001405823548706054737610679934077813002757289010852930710833890387897603293202189092351455389213224220200812392861786079572198529046984045111530589932771644921408568949351465102893613740863050867997516831526923647362713692102368506180725202921498997373446137055388695228199734210698224497873308768594575297220521759107033810828350095765628228120152284513992260771237651139305247739659270616280339908733497338427091680415735990262483699211387602084318185900414399619311359472134983218719924998666805502050740906549426901732133211600369364728749393417316913960651023842430959511253264652006272039019440372374464314002683726896273148383941896402669657964060226983277289594026510720250861506182574611925245076873860196820954418487005698506965073242275841765055662272895065533031044216483018490359334981010684150119460032570579963029007065375193852242835591620381410417921655911808679699101792574638397223906183709585980959164320240595763914940916578772074981529105442754965693025026444579715860229807439358682267593669921082325720330651796439555898405980876598479829844298465640244001232596306871221389146172690875418892645048162202327778078851278433613157686380772481696539616794031556767885577380027308862476883800947813971379945924507762564255570966442195922640677432268158193234943248422208020363463924017498973834663895093591825522157827688503799798956822355457941723297439393436585811615367822230560739947438397685416715810717599247434830137898600384248415491280349563802303189361073536367401385203523086130688457063955625439511748867286125836478963188607731003192120083349188717903595076579429799767124404502580731912584575058518902202558354659537257581450704768143656086238404537693737301270764545835428493176034206742679964923389637539562396171219624285232430392133671282455067288971838373684172500972824178311994559519745977773185377274315387612668976397441534881939098559968323401638901357042031758745222318685425870175763581210340825614377239399102156681676756886304126199512477132209661598167513065258796567396244516766667044117769296076233945430288434551388983145956356854054551349043233270185252479304817744547523647489442750388225710640552607871951523222181135987822647479160843575474425232786723635746624017962010441801682460460846911429363958171491000643253046537377592219146819005387665341190415552719452163396674187225971483647197960216167631640203688782849503605151138399519953056223592845930065765020589667028047478555235402729913149859498685868729063983583291781384695081470874399025098701926833100271744846242068023582524050060108933501814997686980612309900254566123795338465882337102638236069457270509138946913421811976791562523400704102948549106032451197653504432853349017333134595228420504674415338093336394471848456363569811978503849071206389386547743012787895694085415358532891712913369286066906727002487638172447907565640414172498327074182250501908413014543889563559417363729989034832947592196482825280790955025439550978361293168022571329210314775804687773638280215386019801405994354558803657261076788491071425202082643783638575084090901655705454664097045389489400799009505346024924745729201182421567301004430571916568576607949169061394726630519011162277327697372959941859397384603824648805733579846217737162375462758461188848821424664212093326156665691469019112829336542913113790202783071641612742430534416926924889644751793603534790540558697161796514596582648358122270207620367742404487043868514971674400430158941877734533743310880649285086576473788391037431011688694806036177790841311961196527311456581911009317143690944647271732040654178076547839684445285591602529693579659384882891493197912230169540994733315399796960250749876936655523749674175502708680570084371697083686982023025890173668649889446225658735966722221404808349220864', -); -test(macro, '94906265', 0, '1'); -test(macro, '-94906265', 0, '1'); -test(macro, '94906265', 1, '94906265'); -test(macro, '-94906265', 1, '-94906265'); -test(macro, '94906265', 3, '854839628132734960159625'); -test(macro, '-94906265', 3, '-854839628132734960159625'); -test( - macro, - '94906265', - 7, - '69352828108196345571302714548224840368303639678393515625', -); -test( - macro, - '-94906265', - 7, - '-69352828108196345571302714548224840368303639678393515625', -); -test( - macro, - '94906265', - 9, - '624674733432656449761568667443804634246952025778040170044028517447265625', -); -test( - macro, - '-94906265', - 9, - '-624674733432656449761568667443804634246952025778040170044028517447265625', -); -test( - macro, - '94906265', - 11, - '5626569719411962723650415167546096949953068311825856718044176845859638898840742041015625', -); -test( - macro, - '-94906265', - 11, - '-5626569719411962723650415167546096949953068311825856718044176845859638898840742041015625', -); -test( - macro, - '94906265', - 17, - '4111620266471980471028580099675545097434173613002314680540141671482471036233068045322249236629608058990135835756014486176615142822265625', -); -test( - macro, - '-94906265', - 17, - '-4111620266471980471028580099675545097434173613002314680540141671482471036233068045322249236629608058990135835756014486176615142822265625', -); -test( - macro, - '94906265', - 22, - '31658286807403612933666095532663829606917007814138968876951811776281483501242674522295256018683450991389450689602591230724763634593416216499485344394982531093618869781494140625', -); -test( - macro, - '-94906265', - 22, - '31658286807403612933666095532663829606917007814138968876951811776281483501242674522295256018683450991389450689602591230724763634593416216499485344394982531093618869781494140625', -); -test( - macro, - '94906265', - 24, - '285152493586807715635778250040629704568534899170608577332704172832192470586911307092645490980725710064416470215223489215551076054022142237008690911252732817102771522852071313917636871337890625', -); -test( - macro, - '-94906265', - 24, - '285152493586807715635778250040629704568534899170608577332704172832192470586911307092645490980725710064416470215223489215551076054022142237008690911252732817102771522852071313917636871337890625', -); -test( - macro, - '94906265', - 27, - '243759651578868798217281108206623463735490359085472358472465213305940907210363261308064405033766654095672155830024986524275053959211648897667524575409210697695532573441399310923762601838833141075350344181060791015625', -); -test( - macro, - '-94906265', - 27, - '-243759651578868798217281108206623463735490359085472358472465213305940907210363261308064405033766654095672155830024986524275053959211648897667524575409210697695532573441399310923762601838833141075350344181060791015625', -); -test( - macro, - '94906265', - 29, - '2195591723153842833976375183141740537336638451104209452487233269978099251091719201006853085913307473345723364352547986672429911300801268569150014616303465779606927933392093058172884011727748376587183753730532924272119998931884765625', -); -test( - macro, - '-94906265', - 29, - '-2195591723153842833976375183141740537336638451104209452487233269978099251091719201006853085913307473345723364352547986672429911300801268569150014616303465779606927933392093058172884011727748376587183753730532924272119998931884765625', -); -test( - macro, - '94906265', - 1234, - '9591459179410241572856537719704118795351000902900562305249195472196195265555833412754864166507031793587379195925582803572210371959180740848015702606653712794907807842820287303844298057315437721729780551771436713566743567210455419724786856660298500086372804403816338340320302120440930931829619194880300084268951845577897562834735753784665609019198203233048867661024100257335806608791247129540791927592412584156372409767363191327851323280497596039938628887351085641878361348960836551885434816719856675096140100735098153982014533453294086408481103402371073765234498437942986299185804946033932203517281211025355740639164406513819178508651837986562373156333090579411143890235647767492144926855911961561170349672014614629827840596629153866370535524382716502377298033129875940828099612289849768956366119182226196623644421289199029543705885301848203842046242909504136594099983847607871992398930583777526005880060061677287301121641838813359760623338793918913138129119762743481238358717117820874141719166872107856435512751028932079558518104984922747527693664219154086216948208341876460165162264778277923815846538502672245752434229656583577521062954818225701253649577703058999328419908839977797748333637247291496547242568819156256380939652968563081087936133413669763802314091980457139588435626848957026334101428382680905361934063504702859864753961075493938097121116859339830550708349481985667854659071598612299339127950437953067708898374986402646559951120320721708316727933224792697639478435468027888366917714894730680032991635257046230944591272236530617356025218569172482915774764506872033088367335012521246964352262715392596661114331434581419942425209861303052103159737141838118887593079659533118979010073029109419153504531772178157803880524448253232397504700393645418278010150165092760716226444484244727105637368962191673677518823763517102430372508776552119355215943188635023271972752127662635880598372673204814450697064559754199549908021939030958872733672399702043041508144639801430320943357267841707000400404222832758589098605032942287405982133506381460750004675066342262085479385836480909763864598878090750329455982787911478900279885781537417672577623574196534254896533751763619748632866305445903742663767222380368598056346743790273546285474116657619344057407744566063285106302957424998222958334563469530826042006900334894940507739429822757677948670771646446401475234418995859933358243130008180759536136782698587200342015804405083654362794667043715432498830242795494530307701824122299526072682392416883591382466507093702351999216857924284228844163937090047387165802061654658731296376218866164135568360515357769852411309461140876077518669664598359667926801346716090206666283623307095613238020208838579994957805916629319170228853022067994759954669755848747912031498150020489023940497893018969218903299457329957933615236619153547835202992956280530580346188048475327939781542919126773872016959398231243998998083738131590171425213432398708470769525054179511894591276471224027298513771970571872065972609539084087063890507232242147976054307202299424358550001984668194552970122408292816135793651096260341402739670890290539634652749733051936121647220510837557946150318744548419221954103573224004509428899118772854490532692636349984796523606799588426404592878065079890048662999499258496147403823670334749053718615662500854192465254630734735470592657444348319716921656900540143255754066981370219643196580126846207577613002079274870394367728741824995134268682147619610980271981665849912854000586266885293690909808590352073959622797877167704956570701109840686451917212334062294475098780452199147749227206592489248155417621634742859122288908494376684326737988496746942171234696512068034353612026733019551888985186714851252843134718646972681183302261929938130968961934184204726044095752598480264969769942628031493505879722845317398404404766136527772383991566308125162547193990579656303403990650778044081542434937085597660623254423002156634083383451136994840415138061841621305110130354721521708626026722411562666098237182221903896143296122843453808861853136066713710878415727201422848026825971083548440323207872629926360833682353471434194454802487028406023157541739114399209811757523364508775327465775193793901522174053677751397308082689295814009742424096663245256371127275554813138918104588578788434671001200499772731239526998926007344889536787546023840884563161206866436260069860416345332711835403868298476116559997395850081711369707151087016769352210205207119306587204232943367376612943973885522556573557976798795448483847878609300730594170921845018856616294672752170650749875613401771999207041914676357273072487369912122604321957851850328366064475250473555501861497817846228892630981428024352453509525341771499168825703052936994035249193004718133969293658358477955548441418729299358481051187146133695328375103255617003032549133648324739613350912817202951672035960629467437857895034783268578652695648468049772851048371268571371710174944747089771007951326599571977185536818992501092538130016192595691688560212821744518752775149044137729808714578718821728891394252836114476272385593027217713947689935751224213096850232388887355044336182239209673510124360918794427492709842501901193642964413018899346419597569212619882459708253025895167986898921776318809624757908047351541616537635979411987192357052180741057545474523286703219489442558181392097429272725321723344296968214353129336168551540947872360172324488054726452312277329954745258701008482980205872562874886601633986054729698061958995727041136491083854134975456698587824863774357915870320563386104439619169757774004947293513137570115484537992524054976775958147916672384240363706932507971190885901149565024226836664882553925400415432577255921802822503960734813348624446723667186940497582623354541377084135798028997689173921671637556307023496802420683015459505952557023291016881953450025241190194039097347605093809834451182579729476067653116147891893076896501563815659745545701931892765370873530751133774088803218658236918753605920897832799802629346000755537711655733935247075071309299891485974004737759699085619503402054651496887954393777157718744353085477058515846914858988677376890749563402243352948882704897037289535812374920703566055234002365908807572825594074935358170453507404950430786601077339828001741772715701388696819944246064281597875135795560927360428844682508435674499423211270261087659836015113712490214244874535278179921239117786846524745214093518055485811573243729006472733809020482957747407185981860374708684286717665404920163892211997886941891508113407401561122378383848947830545283520019375170240362580261476918548352375204827546060332812320537368384369528982640547689242779683051606032122941971305898624339279930653319150270488626943146630086882906036938913305489203172190549402764186077691788746463406547058650845093618234570304408010293714213219535645841856212002220491279122623456707919822267373205778074418458267976061672627895374645491069976169809979589349440103658324875263502040561446885715685084316663246874940845565163621245764201813071916375863674116631380809138742411055687043053580097915072331808364438230302858541704366985190788328281686095477247372106110289131615169926634773044198632401845844609052201843461377057755829111540009963815904567488874475681740338761441160651590356825801263089126426348110434911655130477948801617551850940401735494663309897855071592787594192797472071274201046444611408640440198255469724942753747645197415207441629405487586039283351014842032997658344919969847875361248802719615209204137908572720005625473028253292534507900617109339302886404737678812367649587493463409620386788766525441243443799986362150864341695101086395523314350910622578929210926494667836577247786854052224561095458041243543570729768588208531982249642560145100850197699673538324491374450242541091046027877347664044916635890341954130056571906109165828535910311660771647040322593424704180434383930722874810909784652987805377576186746140110566133453382033674431223623092747739626762801126711107898439074620801128156500389898936996902615531151609058915444466355837620116136849729671236565382836790985391828355289305589043017696181139493265426855262772003107393380496127707409944678929356424852897833059161296871451390447310222755068231356889186366469835372570926617460311594138251684705497261398939078673207680734548345027894574941971300910638001809666450203958374908000409224916792685389473093574017125721717855356592625547252288452987636361999067948204782699004847095167966877114318996122727724865218771091724949902821421297230591814912641664070615519836632113388811666884300494853790570587470323050363662041264565613231275086236122271260746561199518073931788593225451290704917920481617412178007269106795348325460845539920221204370405830516943074642362921654055465455434800928688359132339475448945798039732615360945805966700833166246956944923319302325595161448667877444353826406797662051236873687719391027503115161380602709771074129428752412878936468150571495391787113477904397126993393779245665340705023574594518096866873547398021846631398029079316126818030712951745225590953502758227266035049083842517044023925565469150691931514472336278473983933149135274596021969827799475964078993259558154187436736832028197629659375815060480641327952346293832946391116546119290464690718192565154980905423079687235355361273794723342189390564486895833368653165830116560978445940636491307093493704382996066787778813694371282496364727933852217652979786611217060627813202623645589310972893162822106395194215667804608020963575035872246400412133950584855358933001394534546590988260881555615516326633872233229193801821674081770373019020873454877625370262143702522777839078500945310035409751056192714470577586167708182037483154162989501269631312341365910403419220972928202706029721636727127333412883747829822332644925037811467375511290618736599996846385043905631496985453310344382771290838718414306640625', -); -test( - macro, - '-94906265', - 1234, - '9591459179410241572856537719704118795351000902900562305249195472196195265555833412754864166507031793587379195925582803572210371959180740848015702606653712794907807842820287303844298057315437721729780551771436713566743567210455419724786856660298500086372804403816338340320302120440930931829619194880300084268951845577897562834735753784665609019198203233048867661024100257335806608791247129540791927592412584156372409767363191327851323280497596039938628887351085641878361348960836551885434816719856675096140100735098153982014533453294086408481103402371073765234498437942986299185804946033932203517281211025355740639164406513819178508651837986562373156333090579411143890235647767492144926855911961561170349672014614629827840596629153866370535524382716502377298033129875940828099612289849768956366119182226196623644421289199029543705885301848203842046242909504136594099983847607871992398930583777526005880060061677287301121641838813359760623338793918913138129119762743481238358717117820874141719166872107856435512751028932079558518104984922747527693664219154086216948208341876460165162264778277923815846538502672245752434229656583577521062954818225701253649577703058999328419908839977797748333637247291496547242568819156256380939652968563081087936133413669763802314091980457139588435626848957026334101428382680905361934063504702859864753961075493938097121116859339830550708349481985667854659071598612299339127950437953067708898374986402646559951120320721708316727933224792697639478435468027888366917714894730680032991635257046230944591272236530617356025218569172482915774764506872033088367335012521246964352262715392596661114331434581419942425209861303052103159737141838118887593079659533118979010073029109419153504531772178157803880524448253232397504700393645418278010150165092760716226444484244727105637368962191673677518823763517102430372508776552119355215943188635023271972752127662635880598372673204814450697064559754199549908021939030958872733672399702043041508144639801430320943357267841707000400404222832758589098605032942287405982133506381460750004675066342262085479385836480909763864598878090750329455982787911478900279885781537417672577623574196534254896533751763619748632866305445903742663767222380368598056346743790273546285474116657619344057407744566063285106302957424998222958334563469530826042006900334894940507739429822757677948670771646446401475234418995859933358243130008180759536136782698587200342015804405083654362794667043715432498830242795494530307701824122299526072682392416883591382466507093702351999216857924284228844163937090047387165802061654658731296376218866164135568360515357769852411309461140876077518669664598359667926801346716090206666283623307095613238020208838579994957805916629319170228853022067994759954669755848747912031498150020489023940497893018969218903299457329957933615236619153547835202992956280530580346188048475327939781542919126773872016959398231243998998083738131590171425213432398708470769525054179511894591276471224027298513771970571872065972609539084087063890507232242147976054307202299424358550001984668194552970122408292816135793651096260341402739670890290539634652749733051936121647220510837557946150318744548419221954103573224004509428899118772854490532692636349984796523606799588426404592878065079890048662999499258496147403823670334749053718615662500854192465254630734735470592657444348319716921656900540143255754066981370219643196580126846207577613002079274870394367728741824995134268682147619610980271981665849912854000586266885293690909808590352073959622797877167704956570701109840686451917212334062294475098780452199147749227206592489248155417621634742859122288908494376684326737988496746942171234696512068034353612026733019551888985186714851252843134718646972681183302261929938130968961934184204726044095752598480264969769942628031493505879722845317398404404766136527772383991566308125162547193990579656303403990650778044081542434937085597660623254423002156634083383451136994840415138061841621305110130354721521708626026722411562666098237182221903896143296122843453808861853136066713710878415727201422848026825971083548440323207872629926360833682353471434194454802487028406023157541739114399209811757523364508775327465775193793901522174053677751397308082689295814009742424096663245256371127275554813138918104588578788434671001200499772731239526998926007344889536787546023840884563161206866436260069860416345332711835403868298476116559997395850081711369707151087016769352210205207119306587204232943367376612943973885522556573557976798795448483847878609300730594170921845018856616294672752170650749875613401771999207041914676357273072487369912122604321957851850328366064475250473555501861497817846228892630981428024352453509525341771499168825703052936994035249193004718133969293658358477955548441418729299358481051187146133695328375103255617003032549133648324739613350912817202951672035960629467437857895034783268578652695648468049772851048371268571371710174944747089771007951326599571977185536818992501092538130016192595691688560212821744518752775149044137729808714578718821728891394252836114476272385593027217713947689935751224213096850232388887355044336182239209673510124360918794427492709842501901193642964413018899346419597569212619882459708253025895167986898921776318809624757908047351541616537635979411987192357052180741057545474523286703219489442558181392097429272725321723344296968214353129336168551540947872360172324488054726452312277329954745258701008482980205872562874886601633986054729698061958995727041136491083854134975456698587824863774357915870320563386104439619169757774004947293513137570115484537992524054976775958147916672384240363706932507971190885901149565024226836664882553925400415432577255921802822503960734813348624446723667186940497582623354541377084135798028997689173921671637556307023496802420683015459505952557023291016881953450025241190194039097347605093809834451182579729476067653116147891893076896501563815659745545701931892765370873530751133774088803218658236918753605920897832799802629346000755537711655733935247075071309299891485974004737759699085619503402054651496887954393777157718744353085477058515846914858988677376890749563402243352948882704897037289535812374920703566055234002365908807572825594074935358170453507404950430786601077339828001741772715701388696819944246064281597875135795560927360428844682508435674499423211270261087659836015113712490214244874535278179921239117786846524745214093518055485811573243729006472733809020482957747407185981860374708684286717665404920163892211997886941891508113407401561122378383848947830545283520019375170240362580261476918548352375204827546060332812320537368384369528982640547689242779683051606032122941971305898624339279930653319150270488626943146630086882906036938913305489203172190549402764186077691788746463406547058650845093618234570304408010293714213219535645841856212002220491279122623456707919822267373205778074418458267976061672627895374645491069976169809979589349440103658324875263502040561446885715685084316663246874940845565163621245764201813071916375863674116631380809138742411055687043053580097915072331808364438230302858541704366985190788328281686095477247372106110289131615169926634773044198632401845844609052201843461377057755829111540009963815904567488874475681740338761441160651590356825801263089126426348110434911655130477948801617551850940401735494663309897855071592787594192797472071274201046444611408640440198255469724942753747645197415207441629405487586039283351014842032997658344919969847875361248802719615209204137908572720005625473028253292534507900617109339302886404737678812367649587493463409620386788766525441243443799986362150864341695101086395523314350910622578929210926494667836577247786854052224561095458041243543570729768588208531982249642560145100850197699673538324491374450242541091046027877347664044916635890341954130056571906109165828535910311660771647040322593424704180434383930722874810909784652987805377576186746140110566133453382033674431223623092747739626762801126711107898439074620801128156500389898936996902615531151609058915444466355837620116136849729671236565382836790985391828355289305589043017696181139493265426855262772003107393380496127707409944678929356424852897833059161296871451390447310222755068231356889186366469835372570926617460311594138251684705497261398939078673207680734548345027894574941971300910638001809666450203958374908000409224916792685389473093574017125721717855356592625547252288452987636361999067948204782699004847095167966877114318996122727724865218771091724949902821421297230591814912641664070615519836632113388811666884300494853790570587470323050363662041264565613231275086236122271260746561199518073931788593225451290704917920481617412178007269106795348325460845539920221204370405830516943074642362921654055465455434800928688359132339475448945798039732615360945805966700833166246956944923319302325595161448667877444353826406797662051236873687719391027503115161380602709771074129428752412878936468150571495391787113477904397126993393779245665340705023574594518096866873547398021846631398029079316126818030712951745225590953502758227266035049083842517044023925565469150691931514472336278473983933149135274596021969827799475964078993259558154187436736832028197629659375815060480641327952346293832946391116546119290464690718192565154980905423079687235355361273794723342189390564486895833368653165830116560978445940636491307093493704382996066787778813694371282496364727933852217652979786611217060627813202623645589310972893162822106395194215667804608020963575035872246400412133950584855358933001394534546590988260881555615516326633872233229193801821674081770373019020873454877625370262143702522777839078500945310035409751056192714470577586167708182037483154162989501269631312341365910403419220972928202706029721636727127333412883747829822332644925037811467375511290618736599996846385043905631496985453310344382771290838718414306640625', -); -test( - macro, - '94906265', - 5678, - '12032097777224921443610910803648284170512319198440026582654592944907996997711020183354851559738136209876116410482775406152550319519617501575389742141362538671375575270130368782344375460094542930957208982333657039900983512378934606414708547255120509688221248878365002162079958544994081468523927315675060726868126226367119441190130650764598697841259026377226201673036205220245238076301842775410518683141308488299366012792925609747073886802877596666532246689317196865573110094049146280756613633385237048709371024252858686340623252312452593430321228085552943679754605680459379364986804128577790131289118408139954294866373981926459619424848669839958145224015329056251464187884540803724925854941893314508739139448540059027532063346594260009340289063635135268446417517177773306225826478834782126901952841733199463653563757819068049198556549112038207670677005457584687670138285992773936407404706326519609992105860062869525897101616064153489988499260854115519937665672793315389915719723184695407552227493961904033933034506875702096849362495327673029771455889030501830242732676146364350412302869011748293967864940422889128153590781271839942018607109535085227963257602139998078826097049418704998656236212402366601095688523413673512998518901468183798514551196413118699461621524416262734189234150826938615238369409717915433788697444341087319545108423271713647606132458422133503476646278312763913773672381574955638642484777319177742615693192492030931928334799325795983171516582124249978689831869160939605527534908432774284025724078112334305143452973560047389979442428241832752514170684582991619064835042076127845136974614077376818874608487426791468373615242293672741372298898215088365221162041567250511944704729950839359617629579145185451647138688599424451528822613292149181525578785717464355469269950910358964367355548167095991226459148148416836033320461350750016925333661337306860380813570244138594176200254338594713997700943753269483275676699592254818599648860765855658967021173586910470760937291362350281087625944947663940083612371308499706464739236243824369828191050651890831355140821021009799707142643546563126154302728058269983835130462112445179485724829519948644797857100978445782729948146775639685486727347085571030457542493031359599157910012477405633462126888771916787753215333242607039830155744016882502462503818969602202111471162936075917294595421685134910453228619713406894527040532782467138493248067630974131210865224589283318665338359787682806475430520542164582197378961886474218909120025123091615456874986351962126541772414045818060094363742441442667036502961807091952360039303360580900852680604055434020409419268918051690557813552959236488040160958755768871367230392867382735702108578451240872919059355437258914588914059658578625910689412928981898994374868014765744048731178533977420205065542882559318334473630109661521143300821787590642741661630560532599207482636782848372575108230527673435955097474563225203600719908173095140979638933646119901238452049016502626977563080111918315881318986264803301054759949431314581482431408037019249299434256675011740150791380650719740873599060034519923061234283942527829654746500679243122868491752528092330799766780299772695603288900967560796775174207884494845966890228277702276659444815563795433225980503597587408498869891219703208161074827864088098815419234882655313426926283791847398673264577617151571464296912550417563804886979853576821080050211194779490844153380677685847777313137638651644748358202947322079765399238487437874318841114773978903668929164955398911903679705111008999142589544437065672589266355348348971511169575378316208327903577552525930641088538955350354489078111990562226354820551745938135022897672457837517586016736813649699772486263689086502957138019177196070312090344215367177632397930739405411088757771866673597796220471619637645139435250941374184393351858539017096692099099345257001920271362387534252371917508119267325168864330673891152067448719178429752412191066355929358566249659077077560550302293786857736765866388524626228805050725063109877803065961191644600499168820792325163292525536974162404755526606943846795314338495539699560103980570000575730832399241743616051296198894674663823826249501962992317559847798100096759179383956869860153118427566631515292600888345422893802197242997389457528273662177569851158066854725418877583679801690209473560655905719642363040982739123254770408905429249758124187443434793269173022194566001870880813212255626734666407333284872705324976206677741658696075649608364892807470963909485110281558432545948579534204538696827102504407100425376019173981304010256984425288381928914573699655169020850451341503052441205769215186509836760430481696523650279090720163816251521349287308560407457609483984181328774565719714613388489095110023571061353122279353104129328013968956403235071785261847838169630745374996406189906650415573552174116649660276541371408913476854939747876731425608814138059458169543823165972801614100937621904382981944188903180205906327482865751979701901540575440519486923023420935041930682172192953852334672415568738221940582193314983240970450000477463045431237229063460109818726294597730994303217381825651493935869034862652936559019431947352777726119926158367810617503147922958376143964979603245915631333786351234314954623412494887023938633377421208202061177648550247361016141144451615061150414512561947705053352442969412639758719469809823355676287459924284669684459858991524522914802929760964195910108664304507593383032621305399692953057899447189106733091012594841503936991785388985322660311685783354745007380474195833316048135155967714601451196311606046191001166178941116722830537202351353675803239601270737264305300314769429948779160815303098446558150519469320909471850141905795161388126098051093418801571231958217059570635407936987518675272606139316846781769414872368547904423404977322742616034539497477291204678516696339549373290014129953927115273383862176648175885100832898131993707682449845814289537783195056908822732162500604957529260337740262458814285530991622691309191620743536827546586516016261289544348330822509040619411107336690611176859744962777081961711988981244490119102057017123472693131597991997040909096393811129374410032160780720267920557429521283544362429347063129854641992658572996108093014481102752542992814642875292835964120599399273647779564854999067324549593959628020136971251523507807754590744694873740047390084491259174712701241947149566007259569113369875274948363558659130833317516389511341744440804095510223434955552652210614743910169826529392899468656662706962138458679700014949089569408033941330187462290588839847072683578505493439388126630655399425769894783841874574481277512426591408213810373551314332889400820073202400253692361444659207630759168415095760789533492551330583140574981012731074049549919118053417150217808638350432013305694321389747006470410615077305764765120127628910927114025496289209479659319746699938956841225054827585736797719039052465086433182830701745898467197621237268086386733129150280583409523728139312677689819712362202660229834226632997964115903142152545104059172086002463963414350578947905947216633376664142189791562053019113774134585010114509991806040543148515641482014416718677876276580431730562587541020555292496453826361453188845475398099905277525052773545411713921648813979140016300112385588170999474985918656553076765214200080620922916851475745553785133089372514034029601819219527045772849932738904614873836099307092123571006738447715320002736785859704861742282537734067792187177608073549859135742645615364728840961736910729008697313304738536298720611573424123582407824500642154138363464791319257510414579292323013964798548950290960997144513319241370751263381191179501838180558724038708020579905145157293231789686223459443044018289699299028761818401590134930047434655260646434988879638156693278024323812521554624956388982330136290167049424094118582772096018451809597401164846924711716262902829627380939680535156293471439360777268668365604921618839689307971611636791474486517596411076810461187507596434260046979222951771970881882637300844957670414379573068900594030059669462435172746064402491699639256585470646371028345111692685583568972301562562922256758180181085480072911408202795425250027969499463641174613001079713276428421215191667447359883645715478755796737199406110184987838747951054762875131236948669154666701738693610353768722184367702584486223362096024384484603104446694719810676365358898796150078397378880308527506601302713337537470154717940902510142689198467640659012705019749229659196945434251394512811731664749976526521575163913656404283679160697284832403491752877439284481271499113105959231314317691378767826586965558827309006336474296703042302766970494721137069514776117071812137188441976088074396467632977148030639633204112209971813503021630520258087179296520213138286076436343573116739144719310772751735156402034501606390456169140121695688607125183103173251813914671347610021351582630598950972263101156473693547645926791369585126525848123770842541512577658666859445930626122772214914414428878443618845511938720224570647898061530301191130932770667765716795587750061205748309356694807519519675049350933068580375053894078242210199468520630330003161545121375796842051755736417199147757963284334866394276249640731433231049313954526161951624809572619652276996303120934045809848958441871638077879356764855185283339151315501229746330405881302263457753882789573262935098772141915955008754732738429440981828735729272802882701434622480077709131642461504208927055033641377102447767720176633847373823944955329314383832782143590012811927685177026789234911929577093962457115800486427160323294733691288587100842884523422947373759687195747031917611825381748929965338560830322621555697476051991779833983757024224308964473525520615691348057039080995096707558993173247103410555911126189269896588730810492029064501420933855518163570985872578414596537490581577386809453787410688705142748561393081836124251051324584698861388478139283569598076892767321443716553246412277259380509438802329441648705346383613734547877712888220362688053129344779935227318331396329401655637306388721745349393876059195313192731747216875912473534083064724394534423226971274516443125664390773514132844684527673669092932331255685956744208760893026251638308006285281531125557486527757107669977234989257848144696133615593927212707645061711788280447683309281341206400131653863420785992756287508115967050826182726890127091142835164557166691300678394990747493429085386293564966123136506231068567056989317384966475475729360339009395818317246772969137113875763412531168727939516546447462848160915288609593976373135718583011204195966912413852164206268427095555948610761307815791560355585910426147327321102341134387395444132445427019438961472388259276810758042673037214059651545259592406090068506838010231567454628094637254355973489738412673187077409391969169545123360596500128359039361514821593508030148522205228449973734972174002553108195263247639174438853119252163722614381071194775578403064409455019374052283926424489955638366392986417357495741112108742236903909428659619606212619900649574073585165166583918297998340673134762427650800452972036533098907970092878703482852833490281729498858731156264911226877099786698157523214591321994816532369903053664184550576973511700913443461257437675437472098084407017674888009625137498476466436818879720524380130001916537522732804698998210196055682123318139008022653778279715652658727340997456249218032227963658719808122825441145385176983894549215846317551213773007016356738334267963377888011544300061222386574258747191915588698617637837212717814756142051324008302080298650994166585880612515919258375738246207644772437177730335392539644865639849308897774064728887770437363216880581815066468852825832858170229658070845319130874032026316629150366399827042959910139581792401984719737440786491444999030986092724355755641888514009652129027999591099530921894279904701093752999885648973445224343373762636465568559928662660225367743242647517117639887521310379396989258168883666755250191993348321142152864927369234668649063028652063843003316973499048911633219208658516326528768740257621395512872408369502229664467552427061041482906643131699241509502631730714053932028098939427452444970068248194791910834306048571684029297039763506306003677920029786132935369270257069918171451215129218456327859444234926254208150987962386182798994154872735035689186439260489113584084457851762452138367055101379588122088844841306204874692945577566193189114109700874804492781437652540985226374341144719703543609354328682925954034266359991157018716516446223344660092640717378693207071014181491854379467954573981289282127187230877577110472130570576015105977305257910229508244095738723967730842098391729083715169089672956523592451123266861612656114937473953741130882127624277059388150081629717639957137442000516378123556553332349275408205751508548209994904127879234614825403357223962515911129518982040378620086754855361296612014949915205044289352069213501405997863521354165348782511867122622716426639791821261702368775506733831743186020155130943146663966007407244597917005719991265853620211871215693990090865326620251912533146988791177682866417571901522812420520954626741756852429297080414669100168753560040054760117697607946028484195290870973497362267381612404260749108299672450420697873731172732775674054385367218094949835013674973757423265370251319346466334678075474375906897432558238767579231146265140826352088422254545690686302743333477665277149035167938674924154842983621768748297426546172809743534122395481353193555875026625899972752500022321576082052828487883396792123138094495203111492864041134795761256726095663499686254762052539889279642048007404275482585612511343844033096850528226343612783861307535354140366802884442274775822100977205037665851810599890007341178775130240696632601594694061697231625625860004620538862779963203630814410243245714819549757828073441407122131050844039240224163642095196215306864657309686247074858678000635402415836405930550459058799511632845758556493533762990549187485016639012256731683580040073341731704082434264243561194791703596206015014846543656970640029940075455836423615054869940691591288967540111562931377745992026685841553681405592390900507543705586848434089001303884903488059141717942395691356277350339460187131843419289217935265295704356916529054605633813938893737767409366779159372882254232836716324580262988115146013874569597106960026911351914668502679283163961953086528727793944040518851106607715147835491925402383222147418855338357535739845538867786357060338435261036202368258020761466669889670691822601560184917436779215254347489960930087319530836518444337988344598187203191595434829132950413104197804486083026745302512606864460474736420264409880729091060010368627194325379608471121667642965001108323387523924855835054547593985702842329940726838791815501738849577938132081507924442944174718597397264098866829822238109143654804816673202408821440775080110551433710513005759571403757096182158076893681914376156120366821040079723970732533775297717113208811739667056486197044324270922989003211680035846379754027311741122863788335461268176688251174205660568758427931660106752538935307255339039355388757057375250425837093302168454705863145996845095042151313295262463259661279787231685169235050323016586688299833499115629856113737828434665438782484735547300584910063985708776012855041724554864958256185127598519785482694466456563490174364083687348114832431925384869094951858531131186801480404938023454443571034693096579794784282688250620550447004592047288521549204059159028509660096017875307950532319742036173203952041761503785819360687983493313089577551873561446412395575710594370027055187478904534143877344909963663735297933632031693194441131986356078620539658905801102236737444661108267332204176723242428802368200731035237320543765666828751910067807455585241166705139054718355894926417783921107593070742530185305927934025258466866218767376534792597033669822057078961298957496217109258353525748391156704355202862658731864850654926248935721796777991022299873209352867958121188810265931762818554937603100731645526362256769968645627563740131303913187747664074382451124596816950157537126085105444310397381169417181279755364952019062060800318321532221104576465370046063753472086774044100444414676557036622159972786835290325849755928597463426695781953163866965969052547199558811862459755929880206105062693162596966564969090523328485578382332426358809045831759393541573654498007053609291367872036111445231279494806931031841205524707641695256162632063010224942774570614275679640385413454072868377460757627086865145342680411059337436108163325287906190993195903620201661214403352143421814822960031390185721117950110818389291340253326486009897862116192130278391424657241044004963932456332370837203044676250871218583290978562214724386902489542748628396358186325956900204476723680860137151218998668021260767109942583224787827906233417831491624545860788315526165511635197037561922517899904690761031753872124042336536173826882605457634858121101471892751287742889625763093890478605491801544520792057578574375773201143929421480324074646141024278246772158921139478563054405229834847395540267665801516476465649906633858677249697918200443907759577085140538201853478765762117960994914145101764724959407470640463811314680073362866017160216055901670762363844476940433763519832222385027792750981080965530232813715566803117769888159323419674153708883977329384943689553768541789213946129813719122880362388613061590039120847635432704222352763497996891937276538781966653887199495265671013361386797466770701748928272976698049303363099194915667274909798041151694131302731875286034428026186929184304362229619692102502128326871687296959400302085212456821262169947535776150082836000223031048009020371350036539197512764290221947644788009144903781547616778821484803103102745494206849074992779830389209747508799417151536020207175883478394172905960788120783232579015657004053498129914455441618389610549539868266323811924818208880604509127630703993255747870363319837810567597787888248562918900718803552796004261069194657586185596777323973185892714770276436504734272537002948160990428552665125608477771575963058090305035115286941440877623389294911460277602637191173693793231079024899815378902648788493885795214168271309254640593363869703425269994239287771226535309826739493886296423210090644214129966601915093662511467744154185692679773644695709701672608468044373005103438648018171096398607426443413194281519283533259981445906676653664312034448007510997631193422830884833006737772887744686368777653538919592111949951373489944710830951650076413715452663964540719349734000663229824949598114271366375624217568372270930581796391817021771734034804435202600593398262992169912934443430494160632096045871344133239156139910775140126053555363620216919941247411877562901224722321989970134286623258958498605964077449818088184783496838986907729353462388738014823594316384752835667377359432034427008829688816033072344951707746090028382556104976370057205866084666487901937011251702362871920843956238611037186048336332441746362113871081603050950760137657339038936536596933851722041992305843336304901453452571715630307405640050171237176240125222557358332930710738041186084749584740450846611590610786726669986270473854160586469256252168384869883596851589288004569216909578136486049118663430702671507574735910444281915534186018197115110593685299825714958042538520471370923783862810373944427764167480823665142849781516572576659578160735209456505359366276175015044857079506949581097412535399513752605101582122333384186945231604776461746644687207899376798357792653596666581824693709787573041587757626825069517113369429081460885782112243077774167939979145984687560083045973141222583991194116736510260934423567193666909628226271067954142670416399861275578343838128155755377702692215310376282921807545085658277051619371602033888713006177339575658405744622442355225853961935039933219714558173292667708157166916833886949301548495619142336871670282820976529735014754467417983365683174117809170080328865238203402509223643245295215135732316886815093541440338066497831425192534469707791058531207292816542931530093442001376701232809955022738734490848042941077563991314157582176472360317911138496886256725677367798535879492979280051355429572780533908274951671490815885229571886451377910940010012673321183872398403321907312091527491690998932778856646700965310668633894463320063118790564548548680468929222591042338228420943806756554406415931090291538143528789629740994863591079711320495984207677768776056308656173482219428268311986921414524482951641166995052008686213317172019535225407298322183791610925122947801778616107589077345869377990653281139028741071735597803862826823503904687705298499157856081719712796392689492483355489380957823523151647371561894369978535447318492691386953116508279327857453984504066238005909847859372464174431153967057270158951933229971026010966691002647873844722520078261307977064543610448466409873414879293871473093770897730342188974916791516079659719631290440856802730239894028254762897599982086201797037774350455318445666421091272654386376102853322186923651805632319156209526417184248540024807358600433160247811092932618503532768368430167126161193398063991915395134237015963224689432846551459273641605647876407353197376326052974132020864262566344092487103313843164740701039613572905063871725731123431656363638983017301386812075627738970033704925617216698715754404765227506689591570815979652750336513064156973513088297698696477005797931273090405805324066030602361512119840369813400472419573729403873434074573160162870936318068249575178675647763166913751293933551646401329625534493843177325624465230372869642679078724392280172358972274796335813356986697385312329187363931167837979111403879151351225430729247112426650129104919284568825235232455725351552224363906641354967564821570365975247995194169878249598512813403591842113734352236034910030599591245451967209058347539059536190947433656585914973072966125316763518711707788780035041883398613275851057398845335005672095171230325334135754312046899114278318582949758025840627034073495122556098906615537245941205241050630832317495323472933706045476448135324622130249061967088040634256046633681463998139104615271598326353633335243659421316638748257095222430616324419633409773550120132726761874278343852462953247386966597193056825342009690607297567265709899931944826256174731047305094081727770841080440016328196894856028563604702780682709363667848710891858610272205043503944199299286748350079640312927864906304355154798671043210363438224540663084637003896566824195029371811104076856777325671062014465716574261539700730333018675634121018453203461781631294981764229198232448947654253783388204297001920517253136683270888989223979423417588630101697507592396076446071605672776440131159545850932553540460963555258875042206253533925856199633623872569538946264824099914287390183680108014685374620969458668067114850551017647802720372476318759518097294889667098388787511578895623400536394696909686982089754739465395458755824025627145860540874654096413723593095786861445483207390022439985873830588574664429664328016256793764664176593210650680088966473569586028063185778696846067901539484777171526008932126642124726149000234264622535507932061596730778639639322994194566230181315095849815600439054976860942354245780811250583700351160679186551987899007553450837968473873566770319473147476749953987063615776202643846558316122703715582310812032981020745887175302830579849877162396208954934582206235358053066687144876586531305671914153856979556448429896161954702428046020131267519937687942784998876608574424998618033186526320893410380410615897192637383212667814571224040666584728535219469735065470507466917541842491727590582415179332124764074275007615003561577219703985592626963898540408123901920954693863945334300894449076898006775718907497203849104045111950488579240549422430862215686448461635287540273933678378844195074450255145986318612166430395304017670650737974685138684856887920372725287537626880802277074988514877737086561392592097851272353742818024979368746610359299993821608029744496422263548547379227059308330732006560207940874965636535953389748254985558222428424330864460444917636632197361629108476540664208138353154832367022269303011778867713003519669926347227092605460218997631456886988546452742315709205780440409392361149984816382171251958377059474144369328217951856030362908523108523320063836177218545129144151675726728971709295080995491115727738994384523099426017049570788092605348295244510790430809310252002021162900702972004743370313805442485273713185126694838015211112954180162169003605131100343992572258878781008043930175009769360708537294998309182845117912092938413455780854377238800073118887421690605050678371370274063825715320860910620948562818451293617405229491236178678754278932510338478945063584831864172120232848867941761893175916936978589066485863729545344061035238414543782144041420795359232419130120814019590644487393845413057769719569362935783498618412118335138847775489214231071866809710199171908881608454495198717226829803613782208248938966092151102736556383497239013516522084118430594971074187519260946766667423607181318562263393260060663288717977893874080349690289502370587468658530985736835159292642558195601284611160860487456916132188445668274130918453531643472494048279511660213922482152284451162576937159479526872950903047337162660821805029600708501290793495192214286757581386114297917781127145691164585515718567911708522043336429297534300930577150477197470794166974719236537212770910044441149771285775283181049923538686195299106209763353070616873255072368061193988813137514561690385137083968163734396360347928328336563595006220960934830733065521338335841965986235454589498682179372157178621143188814181528148836823240009313917239615618819685916460559824760451892578522401207920356914008125649666362232615846019270768411703026907820785686893329687936007326486259085396965025670221843906365927274024874373060432645146595290306316201392153119798490572148328091329727540219633346941261473165756079426541378711351627269272757052944951094355168530350261245111562524094741072397641389854917843735109228705666266863564318304340300463039112532153772402056001825404569674075795960482695655750098767071905821033260887679978762025881061325337213163524622779581816972175555663637210876981896507755878807206231301747997616278339215979267473884231317543544712452852114555647618822488813490625396727766305946129050714786088423305048954173700588940427019522843104010086905515156909811517470970474323555351456229248573825599238197370105299573364893745750391351067788061060527046812509973058875643642096985994846004078611902478115985749938866763374390207356150215198771166488048581440471218124332859752158358015616660187047654002371295814353685889164385419937001586245963586686123227189249339843703303467679680488282425879611225214199203660669304537817806007418484543257294498646404096533225791315505537497715207372656046521498454410484618808462877318221533855177115026118801994635309492636704866960405453702180044263190730170186585393782170839546858732775601817761449580514710578003629573446698223526303276734226490467503004836350690787693180419256606367206975754427565647193757103622172723445912571921412299915576801160624014585320520435926902108223783097157413714400856842549485204781754909051139596113033072378955171738006815746107126582544226522618574999884662865437801703547910979352686377121384449362061338382596983291230994834971550479538621580428614474707245992895951108596353356806792208588625391355419712148342585326639448556448414437163323753111363340625419447936908942309059384977968558654468049438582343818038934475031358918368904553362235318960285027300982643072000467590624020979094167872273398935195854660177797067882015023199367866518380157778613872943331744050423399154264127572590316747837829937185838805929919930426357165171535205844319577554107598132285773629025750828527147869294916738495703358765482635112741426231530287972819515170191843245039795145568805407271280931405842189126545621691903281208244330021380936941534090926737001841378878232358824105952882091391122376983197385863111377095821200758977598655636124137542127167825095347247242493240787156813316762909697688864136617808861689815132468231141188094757116163402600963896457848764885057333264284354504937279338775019887183472529765242120841857211466394385600886129299536196104160966949461244421470876475635289658360673044133988472412908346503168644044604661248748712465204802503052422913247662994388842262879693084905772957000634196203224713014001316324485989167462563998596759472917793384738934828062167583801086989253946454905163667273365009826486005589759567623881215672865627059042146648672881327891063995694457750315379828488812880269962995872715826927673202525599988948924553574496455072613992039779209442466653855719582532255207207153068979266405561447716075597208003386115629512060258961979286373743813337931101772517953360698302031325001844985453129783938956301615754527286888929780663765211591009120443813269934515079913668898214910192754399304618341831453870034267125170721505066917586198732535221716916597559836503614379370118425547846931569036557590812044714028782560536961879256523449737057538949699208081652250218260123107062251099566298529927581162698576168546631586946049600127140987141317674460410902993224596022062324828491276267223741714140055313279819368014780323282408383224067009467800172584303162404423355760504326823431706740776861818994506012773534445613456631600402675225760377368762722021968052635826828120651984513278838416227839164392949867613026178865022522692004106553797610247860158988661216559547229327484286711157186964559739720520556436315158359781162799170405180320792416230576841207330921642427914971360147358390054635718803605053812837473635557695381145693736966197784412835427730682455377495472116907945998421668486206685639652442308850167256008495070585127947385980542764963491704371533238862062927529061728993687103715584617381449133650067934551429741997596233806357685350458313224546984096007149813473419575258362349731564468684291660239721484472043256211659727453894937763642732739820546069887466309796309447539968295322423746786761899588378272444571292371367413474447197434276820309108466176334054973272331173340111659361442337130792855312977415847609894557657244236135360575415882254468739766648258409923847596862145560111671406474246039147740994441351609557249626167418534932138685355488646277447161488690787234126802880936621565723899904615884548341472638437772090419017559362342062609301959534466652230774497315103874040974426330140216732414915907495369817982025864413682320190304402284550455106186758899229547597245258424329265319033989076324859178607488037746916527718266949417024120162124868059437809624404252426704159384001199136240834740094617360560669898139739645400311944527017550131601104533280441817207649685008412565052535179862086175827433761623348775986952355976268937519226183084278136545349291670649785347842730455081487877293986813649230888836033911523597766312541091611558308804656825040751880201229000742627616764846092999606733478252567564690692669504889322114105282631889525319858323705525911497612288157996632667685670674150846432327565528609123127086077539690737908771138085892200113245294049889922704737554162844306763132343665963132039823822365456559043777707552305193196770793605848172893387453594424454474013959098664586068848120392276052089591591308873830873345317112789906683626082510250289631190568481346881428473945619394593511266715086704096809000035241384030443602237087033327542922826698398494829325813183260408718893212433059617843940587229933901382943262992336198408409788514398330434599960440396485182583066248982823883042200111255085981898391448344844015751684471609252769042652840411485899734910885714254073490007645062005967803838338350515620582705664016191350475064132715818275524670604480386741711701135361668073237815153729800159901327889495086187129604447582390156419305608703427826439346018905984357281977986898496611416847526529975227719636005017771483921982957544197799709954130121091633016282666472057665994141283170246327843904936295814914169455433298130711317392343344536477614717883848576748172715876667106217813834587606343570080150703180822107697621328830605698506305609033356175547929890746964404950767451267747106159270327510593755358827880906472517244109777980040119286343261893970180775124057054774158177970221802579963540456256569061867723885060688202164035260408533918104432069412762092767961756595762676589021880178838196631141734156532209197898820016385683655803586282227835323540770476387548613240989563105953577728703740467085125879358539676422989918253524305042736487362952197862376130430552678640237349729018968430033265542780883750558736743752261945449029876696946612108224851115124942879425375009248761228804637428658896795153370852897642290653016040206069997053451309942591115365763315347798585143808043185383293137605133990375187081546565293976821820681678976667143825155588879797300722377840466564345393925544396615896674799718417150813477090500003898193451616746130407776930778672242012416461426697352259907686766455115834355953750908750468801886412209297018951915865714966322975970231743912119114106738120788423635459798468818392838721078133776550259766032933645790131678864392198922153478445210797007411829472852520896641724546528677899228076406095090087054355112053831012039363483887827931984497205305580640089884147850679614566821898948479674022244113913369887487652583123461801329225543373875617324208320681859309093341218594477765154347005165214923914454731564386152568222327274320958552990828960284112884233856381741112323189817039205176818285148223632011326114683897977754234839539859773555387479931478369465852786548627650813853724070487089026934104735632316188699054916850121902617757361251685208213541489423125264663780298582285404482769756412105522055863664088568917771323306300523891885066913901475208601262155693104850152972747067125562727745608865730314711297367302397805250438620696620826528991710532990343302838492054402628712678922427512444061374297112648006020563822297430010181285771385041656979587178970340526369080649857004814587864116807509544571472638333034374444934753562266027341209926917981677891921750897515727238195821470408569780330165534206129720507627843830335242167825939925171230104851587860224644439220292020253252521515829520218725721656441148152957244204914499245531265109309283531415930597420172103218491273772895034798650668137487351895169131869380823743909292549280691725771478618398588851733810124489829934377473370053370068252656647212635214606968547927504809038433155753162266329616429449015410862283066225309223030055256064379392216273751092054318524673355685810347451754467300668773538268859656515445954574923648729683873935557286856820970937068655945793715092808131171747403868732588043215625794798713241960194139927877235454587568468762746272019100094498768878435303678674043109734750924359994293734355746752800574597686230559451123952878914382180299790800323290843096781932073569058248305026863533285657386011004060766594502913168774569065159241049643726694858160418911013311490706738036543681700409684130695301318926665944626256463817919659855204483526903636334206401621354856147973558569067520506511253677092000344997303422716188357301982404683865947269583956684546963367459758762687671678204149310431797725100520798570137927948407559741374061481883367972415208467850517662863773339874292705113236025748070303373436449698506471836270575534367072477137900735911028494106738086952233620846769094804738713039865343227698048631407498839757989365214479653306186066720098433994778082034252601056288009952122283076954922176813820889628483465616421754123937579558193754200095019239139515555511223697405926455097278440331386885178334434554052038015454864241788988257555470096002158416471742411410132996885100140752406174456919083750028326577637466209951318990330737079201943113542966688636484421817970036239203330453206764934536684736355707322326827785876446310370573555594566522654459815454790470955048621062330510444683333038786245129101219361371510125280334401845995354716355081414363331143924307309675133524204853828824109943599655989890178320729881597902725812942771540675060969003063075143063594335159290803487756279512698080233303983448523903763359578020680403822826869215712204567152735947916516836123801571638451477512947633273928861312235512576987086278058220742708761872709578297417052880180662367826500231390634119435668470543727684869857682890608140863953707420877680764412659167163724061796739633033065005264111522515204885857558654834258914573545195512032180353594911695051378068719810556006895666360047309899697571949998411847437091347874733077520204574436565617262186793285390157914385444947163193179238783098002974102908514885479387830864484899289781518304707739376905740671105223300022583960963928395194012317124630264096534995267171526593770055565730102494501137676561913334587750246583294305250495353130891578871532092316372373133107902309220102841925745042896381868642367418745319420730865142002648204585089869986704818966935411839771621427485830775501646076259582071540977268704166605867826554568530493151242347823449624187048865683437944276656029782106486814685177512298790716326796679143241180948696299889708040355541198052387600659238816546438629657921933326303838039366429868607257229153586409564863587715116286506248407497620036497639682708720641591753907274496783732165772299744820271810956549362372807148941506408038206953482379076431012118157117732910126914164048218394564547100247423760878689918169039921521753045153136140852307023421248049548015885572583792382485175500534204824970481492908940320310430809050323007986533558215703588782544545718278427626486375885747827314014521764649075125614840753558736191501676141412501389041086207604364613946110943290698832808350946105405659106878177534966935163165977743784854970520032448041881269436554799191892238890741452952579974686319705933896006655839221952956620159751151666300129475309250350785976428156893784305478622359782685533113861735520731866174351824115841845075091997649633694047866430158123243404433057388021248152371142388316099631832447205081549938790835458611253943435564824171299287489119366707640567857774181325253233507979780771975461697394241257405396956542526065849971304547348847901021479486605612704247767646084737041513530671846138948561060030258907065141688239455904675293200356117950112887673328192319125625450112001441334554826262046043961154178777018566846299911001936816697919963389400196333444219082726126561961439286151423991499109774369393437975616583894807974648514443152564762608988320176773626728380768044611965217042661464062080139705149376171806476488738827250154569276638342192678366431133871111025133072862691969096467500425521305379670524615424717077214067299329167718710591789934002289122069747920433953864968281665817890773234078288875249889546074590578021210045020175846649075388442769801561868206680361142266963414252212701874669272948450859264833052568909056061160609027359184255550131690394077096720368166451553160609833896170781715866268750533758548369182807948608780968625107433984390434235219689740367237885674707704507030700597244015754049856015155058928190915694812731538478889554953381956036083413176999479211030070256296238738351346477023693051810382793957412886791553484931648794808844286324406999962815018551120571300130535112365975815392599766465092145349546061127412046819415225926986188716476056849908748119793304841105307635909081982031362197358414422316767268043098239315181137479061734502360873745508395271506258881998152137286301123636845012754834291165393438286951173209240049799587871290266306404165115829161019204881466233120224197635902895287152465704419993236013589982120474846271345840260611228369146254161192044127219280174741005492699430065610779347520954299270720650387651378861176589218001361087617775409717699262796015976536682841105021059664122075404910323076215802321801490368864524554178452977152697573396110449811096336643650973261681886798344414251669250224998533937199407689970648423521941761037033886551068960149333137371722361296472034150664556620292222683537040127141078291436736093570890846188142373958232245787503986561211010450137490946828402032613144801907279288018920751978234534610262408946310152037618441950323372778709960576820747366052518528388812006417666180087401861373515895458278191176440767682077611697073274163810947190349871592916000621071323440142391532644306688082924938683364588261228996162358510568247905595841766424855277606907075534470052532713604689867684196360667936729004058748210752703690582852587524292351670119901397237694282959815729865739583855822949365306356393915948828577313698981442774794707665584106781286664956274007171084307394120846271084144220384654297665542790977252203936545409559594221915876466565983276517927312109637452041938454476903708734290815286507123649654266467749616718795331528641404301235882753816634993816753568289004479992478192683752604759132474627756612961000581745982917363087175573302426078515416609069164426643196313914584560126544290921166479054390986891864459370224685320335100411031886752698293827320896578394742343752392404174187327761664303245103880308371741165000643275630023932633142124856864613839455387524460883835247056445230671943050578332861499695214574918673021229404253734683027773313743176432192583951191913236970762565695716840327124880325930914779807518816007401993774234221794461913879164577142778140583620285187482254501254780617476909707221619667136778860802714594724530597985286751745300483760149830490374318122069442090705009423973432872916069092401278307983254836657225071642951238528724138838574504391218505180992122754344306417613772561319645961095192874830637228486233492444491904268558980004614112652158744705099772253265288419466337449702012118823493884966713120693120582224051534971354793790579910847464242156789336422637453846505595136532644728156836277997378127893681071581923934505832928373516022575817127739736575756865378797460471263725175192803271851926819917519383686188517784400435220379006466153404705216541111363986878921739723739896607992639335605097808466640645060973299641467192720137922397898565627219164711374815726090587366358047829903172491757500331384309027495081387152401636448384580814486186637697087649689231216276249532384975371921757162088038760829349873080877249706384919119527981958190516873110807572517264983816623232205603988358157912992461349984204628724405823867426023186896007333398519510459422904668181847357590156918607616331138009353807527538592211061653529680787460840337585919547522274221559932006125164812648451392909851693330515235916955355721591013597659403166816081731576169618811781971177795842089107519036325768932298882133054753656397633873210525368153651341260914098941072219830872711334487119709246568789747359480982755252152430402157014447380207090760786408265205545137559732000800203136750199256298419497315924197202893994081817702434459238430923245234575791683932861682945847124118958937423672717813748011917449413425060927640713687024598045661303952113384013415037432914883493033636158000130588759332472546201048166403710080511673970680927719260588960348045228317232803681187031272506450618629138861001275954148566415095600081015308217088430975829661490651423859763132193660525117633388134158638217519049714767119063945723171578151019595179218912729338551682001453030819043454878245408263437500120254435442376334044602833812761305154890870916870343146715245652773283431041407392860250480796803485192806596809855333297772986668103799435700742354867077311314589712272131788641879710793233868427693207194387420730083062528118643285570520825547326752348837863723225294085957046976403282869202911899456522208121620826458236485403829445741128331629382084816009173825727982745362705478457038425615653445181021898078023754297882055318390558568805474809499629743584484479518248026939110990875290364212204536332706626128176468053408407649243109388979549094928082647431373786179467142988191638288941225785348943868854632528599402913545489154484053068978162863823000366160237819716753451310493666848144862930450839567184713588568720601921059768004898348890777169855867038685678689630104228620027696190848737373593115559489316471614742241241080915717759369507297908390256697208628722732076075083433157804018595982216321305273881207658074452046050754827966442452381402017094824435270368061319011125926752655181876954087858148018718169579570729272694811666295639408633390466351259744410532863779156045567748268573798664900319980347698852661715714418485150351971611338457054814071731561010311297700803013892035659824806376504489316277200564467982215399291293815609566984236664361860965342421210479582059584960463891055303905596666930735260688627851937917438369125360883055927544388560027145080571797004532153325269863702949511264830010485917986200317248423836494080716911582330878681178100817517430784215819553290074107638543118831542337780918612111718398640817469867853658537784796684100354795672647383581298428564496194855634992668338556800017467144246309114053233502145105635100954667476387259109043659409570451628107003693334435646437801867855817503020706261095751735198245598952555068326031742238547524726553387803327296382780133921837788043654626876383362945442953469045674139219118842149941525260493144551517231835450076117034756695289843264617957174777984619140625', -); -test( - macro, - '-94906265', - 5678, - '12032097777224921443610910803648284170512319198440026582654592944907996997711020183354851559738136209876116410482775406152550319519617501575389742141362538671375575270130368782344375460094542930957208982333657039900983512378934606414708547255120509688221248878365002162079958544994081468523927315675060726868126226367119441190130650764598697841259026377226201673036205220245238076301842775410518683141308488299366012792925609747073886802877596666532246689317196865573110094049146280756613633385237048709371024252858686340623252312452593430321228085552943679754605680459379364986804128577790131289118408139954294866373981926459619424848669839958145224015329056251464187884540803724925854941893314508739139448540059027532063346594260009340289063635135268446417517177773306225826478834782126901952841733199463653563757819068049198556549112038207670677005457584687670138285992773936407404706326519609992105860062869525897101616064153489988499260854115519937665672793315389915719723184695407552227493961904033933034506875702096849362495327673029771455889030501830242732676146364350412302869011748293967864940422889128153590781271839942018607109535085227963257602139998078826097049418704998656236212402366601095688523413673512998518901468183798514551196413118699461621524416262734189234150826938615238369409717915433788697444341087319545108423271713647606132458422133503476646278312763913773672381574955638642484777319177742615693192492030931928334799325795983171516582124249978689831869160939605527534908432774284025724078112334305143452973560047389979442428241832752514170684582991619064835042076127845136974614077376818874608487426791468373615242293672741372298898215088365221162041567250511944704729950839359617629579145185451647138688599424451528822613292149181525578785717464355469269950910358964367355548167095991226459148148416836033320461350750016925333661337306860380813570244138594176200254338594713997700943753269483275676699592254818599648860765855658967021173586910470760937291362350281087625944947663940083612371308499706464739236243824369828191050651890831355140821021009799707142643546563126154302728058269983835130462112445179485724829519948644797857100978445782729948146775639685486727347085571030457542493031359599157910012477405633462126888771916787753215333242607039830155744016882502462503818969602202111471162936075917294595421685134910453228619713406894527040532782467138493248067630974131210865224589283318665338359787682806475430520542164582197378961886474218909120025123091615456874986351962126541772414045818060094363742441442667036502961807091952360039303360580900852680604055434020409419268918051690557813552959236488040160958755768871367230392867382735702108578451240872919059355437258914588914059658578625910689412928981898994374868014765744048731178533977420205065542882559318334473630109661521143300821787590642741661630560532599207482636782848372575108230527673435955097474563225203600719908173095140979638933646119901238452049016502626977563080111918315881318986264803301054759949431314581482431408037019249299434256675011740150791380650719740873599060034519923061234283942527829654746500679243122868491752528092330799766780299772695603288900967560796775174207884494845966890228277702276659444815563795433225980503597587408498869891219703208161074827864088098815419234882655313426926283791847398673264577617151571464296912550417563804886979853576821080050211194779490844153380677685847777313137638651644748358202947322079765399238487437874318841114773978903668929164955398911903679705111008999142589544437065672589266355348348971511169575378316208327903577552525930641088538955350354489078111990562226354820551745938135022897672457837517586016736813649699772486263689086502957138019177196070312090344215367177632397930739405411088757771866673597796220471619637645139435250941374184393351858539017096692099099345257001920271362387534252371917508119267325168864330673891152067448719178429752412191066355929358566249659077077560550302293786857736765866388524626228805050725063109877803065961191644600499168820792325163292525536974162404755526606943846795314338495539699560103980570000575730832399241743616051296198894674663823826249501962992317559847798100096759179383956869860153118427566631515292600888345422893802197242997389457528273662177569851158066854725418877583679801690209473560655905719642363040982739123254770408905429249758124187443434793269173022194566001870880813212255626734666407333284872705324976206677741658696075649608364892807470963909485110281558432545948579534204538696827102504407100425376019173981304010256984425288381928914573699655169020850451341503052441205769215186509836760430481696523650279090720163816251521349287308560407457609483984181328774565719714613388489095110023571061353122279353104129328013968956403235071785261847838169630745374996406189906650415573552174116649660276541371408913476854939747876731425608814138059458169543823165972801614100937621904382981944188903180205906327482865751979701901540575440519486923023420935041930682172192953852334672415568738221940582193314983240970450000477463045431237229063460109818726294597730994303217381825651493935869034862652936559019431947352777726119926158367810617503147922958376143964979603245915631333786351234314954623412494887023938633377421208202061177648550247361016141144451615061150414512561947705053352442969412639758719469809823355676287459924284669684459858991524522914802929760964195910108664304507593383032621305399692953057899447189106733091012594841503936991785388985322660311685783354745007380474195833316048135155967714601451196311606046191001166178941116722830537202351353675803239601270737264305300314769429948779160815303098446558150519469320909471850141905795161388126098051093418801571231958217059570635407936987518675272606139316846781769414872368547904423404977322742616034539497477291204678516696339549373290014129953927115273383862176648175885100832898131993707682449845814289537783195056908822732162500604957529260337740262458814285530991622691309191620743536827546586516016261289544348330822509040619411107336690611176859744962777081961711988981244490119102057017123472693131597991997040909096393811129374410032160780720267920557429521283544362429347063129854641992658572996108093014481102752542992814642875292835964120599399273647779564854999067324549593959628020136971251523507807754590744694873740047390084491259174712701241947149566007259569113369875274948363558659130833317516389511341744440804095510223434955552652210614743910169826529392899468656662706962138458679700014949089569408033941330187462290588839847072683578505493439388126630655399425769894783841874574481277512426591408213810373551314332889400820073202400253692361444659207630759168415095760789533492551330583140574981012731074049549919118053417150217808638350432013305694321389747006470410615077305764765120127628910927114025496289209479659319746699938956841225054827585736797719039052465086433182830701745898467197621237268086386733129150280583409523728139312677689819712362202660229834226632997964115903142152545104059172086002463963414350578947905947216633376664142189791562053019113774134585010114509991806040543148515641482014416718677876276580431730562587541020555292496453826361453188845475398099905277525052773545411713921648813979140016300112385588170999474985918656553076765214200080620922916851475745553785133089372514034029601819219527045772849932738904614873836099307092123571006738447715320002736785859704861742282537734067792187177608073549859135742645615364728840961736910729008697313304738536298720611573424123582407824500642154138363464791319257510414579292323013964798548950290960997144513319241370751263381191179501838180558724038708020579905145157293231789686223459443044018289699299028761818401590134930047434655260646434988879638156693278024323812521554624956388982330136290167049424094118582772096018451809597401164846924711716262902829627380939680535156293471439360777268668365604921618839689307971611636791474486517596411076810461187507596434260046979222951771970881882637300844957670414379573068900594030059669462435172746064402491699639256585470646371028345111692685583568972301562562922256758180181085480072911408202795425250027969499463641174613001079713276428421215191667447359883645715478755796737199406110184987838747951054762875131236948669154666701738693610353768722184367702584486223362096024384484603104446694719810676365358898796150078397378880308527506601302713337537470154717940902510142689198467640659012705019749229659196945434251394512811731664749976526521575163913656404283679160697284832403491752877439284481271499113105959231314317691378767826586965558827309006336474296703042302766970494721137069514776117071812137188441976088074396467632977148030639633204112209971813503021630520258087179296520213138286076436343573116739144719310772751735156402034501606390456169140121695688607125183103173251813914671347610021351582630598950972263101156473693547645926791369585126525848123770842541512577658666859445930626122772214914414428878443618845511938720224570647898061530301191130932770667765716795587750061205748309356694807519519675049350933068580375053894078242210199468520630330003161545121375796842051755736417199147757963284334866394276249640731433231049313954526161951624809572619652276996303120934045809848958441871638077879356764855185283339151315501229746330405881302263457753882789573262935098772141915955008754732738429440981828735729272802882701434622480077709131642461504208927055033641377102447767720176633847373823944955329314383832782143590012811927685177026789234911929577093962457115800486427160323294733691288587100842884523422947373759687195747031917611825381748929965338560830322621555697476051991779833983757024224308964473525520615691348057039080995096707558993173247103410555911126189269896588730810492029064501420933855518163570985872578414596537490581577386809453787410688705142748561393081836124251051324584698861388478139283569598076892767321443716553246412277259380509438802329441648705346383613734547877712888220362688053129344779935227318331396329401655637306388721745349393876059195313192731747216875912473534083064724394534423226971274516443125664390773514132844684527673669092932331255685956744208760893026251638308006285281531125557486527757107669977234989257848144696133615593927212707645061711788280447683309281341206400131653863420785992756287508115967050826182726890127091142835164557166691300678394990747493429085386293564966123136506231068567056989317384966475475729360339009395818317246772969137113875763412531168727939516546447462848160915288609593976373135718583011204195966912413852164206268427095555948610761307815791560355585910426147327321102341134387395444132445427019438961472388259276810758042673037214059651545259592406090068506838010231567454628094637254355973489738412673187077409391969169545123360596500128359039361514821593508030148522205228449973734972174002553108195263247639174438853119252163722614381071194775578403064409455019374052283926424489955638366392986417357495741112108742236903909428659619606212619900649574073585165166583918297998340673134762427650800452972036533098907970092878703482852833490281729498858731156264911226877099786698157523214591321994816532369903053664184550576973511700913443461257437675437472098084407017674888009625137498476466436818879720524380130001916537522732804698998210196055682123318139008022653778279715652658727340997456249218032227963658719808122825441145385176983894549215846317551213773007016356738334267963377888011544300061222386574258747191915588698617637837212717814756142051324008302080298650994166585880612515919258375738246207644772437177730335392539644865639849308897774064728887770437363216880581815066468852825832858170229658070845319130874032026316629150366399827042959910139581792401984719737440786491444999030986092724355755641888514009652129027999591099530921894279904701093752999885648973445224343373762636465568559928662660225367743242647517117639887521310379396989258168883666755250191993348321142152864927369234668649063028652063843003316973499048911633219208658516326528768740257621395512872408369502229664467552427061041482906643131699241509502631730714053932028098939427452444970068248194791910834306048571684029297039763506306003677920029786132935369270257069918171451215129218456327859444234926254208150987962386182798994154872735035689186439260489113584084457851762452138367055101379588122088844841306204874692945577566193189114109700874804492781437652540985226374341144719703543609354328682925954034266359991157018716516446223344660092640717378693207071014181491854379467954573981289282127187230877577110472130570576015105977305257910229508244095738723967730842098391729083715169089672956523592451123266861612656114937473953741130882127624277059388150081629717639957137442000516378123556553332349275408205751508548209994904127879234614825403357223962515911129518982040378620086754855361296612014949915205044289352069213501405997863521354165348782511867122622716426639791821261702368775506733831743186020155130943146663966007407244597917005719991265853620211871215693990090865326620251912533146988791177682866417571901522812420520954626741756852429297080414669100168753560040054760117697607946028484195290870973497362267381612404260749108299672450420697873731172732775674054385367218094949835013674973757423265370251319346466334678075474375906897432558238767579231146265140826352088422254545690686302743333477665277149035167938674924154842983621768748297426546172809743534122395481353193555875026625899972752500022321576082052828487883396792123138094495203111492864041134795761256726095663499686254762052539889279642048007404275482585612511343844033096850528226343612783861307535354140366802884442274775822100977205037665851810599890007341178775130240696632601594694061697231625625860004620538862779963203630814410243245714819549757828073441407122131050844039240224163642095196215306864657309686247074858678000635402415836405930550459058799511632845758556493533762990549187485016639012256731683580040073341731704082434264243561194791703596206015014846543656970640029940075455836423615054869940691591288967540111562931377745992026685841553681405592390900507543705586848434089001303884903488059141717942395691356277350339460187131843419289217935265295704356916529054605633813938893737767409366779159372882254232836716324580262988115146013874569597106960026911351914668502679283163961953086528727793944040518851106607715147835491925402383222147418855338357535739845538867786357060338435261036202368258020761466669889670691822601560184917436779215254347489960930087319530836518444337988344598187203191595434829132950413104197804486083026745302512606864460474736420264409880729091060010368627194325379608471121667642965001108323387523924855835054547593985702842329940726838791815501738849577938132081507924442944174718597397264098866829822238109143654804816673202408821440775080110551433710513005759571403757096182158076893681914376156120366821040079723970732533775297717113208811739667056486197044324270922989003211680035846379754027311741122863788335461268176688251174205660568758427931660106752538935307255339039355388757057375250425837093302168454705863145996845095042151313295262463259661279787231685169235050323016586688299833499115629856113737828434665438782484735547300584910063985708776012855041724554864958256185127598519785482694466456563490174364083687348114832431925384869094951858531131186801480404938023454443571034693096579794784282688250620550447004592047288521549204059159028509660096017875307950532319742036173203952041761503785819360687983493313089577551873561446412395575710594370027055187478904534143877344909963663735297933632031693194441131986356078620539658905801102236737444661108267332204176723242428802368200731035237320543765666828751910067807455585241166705139054718355894926417783921107593070742530185305927934025258466866218767376534792597033669822057078961298957496217109258353525748391156704355202862658731864850654926248935721796777991022299873209352867958121188810265931762818554937603100731645526362256769968645627563740131303913187747664074382451124596816950157537126085105444310397381169417181279755364952019062060800318321532221104576465370046063753472086774044100444414676557036622159972786835290325849755928597463426695781953163866965969052547199558811862459755929880206105062693162596966564969090523328485578382332426358809045831759393541573654498007053609291367872036111445231279494806931031841205524707641695256162632063010224942774570614275679640385413454072868377460757627086865145342680411059337436108163325287906190993195903620201661214403352143421814822960031390185721117950110818389291340253326486009897862116192130278391424657241044004963932456332370837203044676250871218583290978562214724386902489542748628396358186325956900204476723680860137151218998668021260767109942583224787827906233417831491624545860788315526165511635197037561922517899904690761031753872124042336536173826882605457634858121101471892751287742889625763093890478605491801544520792057578574375773201143929421480324074646141024278246772158921139478563054405229834847395540267665801516476465649906633858677249697918200443907759577085140538201853478765762117960994914145101764724959407470640463811314680073362866017160216055901670762363844476940433763519832222385027792750981080965530232813715566803117769888159323419674153708883977329384943689553768541789213946129813719122880362388613061590039120847635432704222352763497996891937276538781966653887199495265671013361386797466770701748928272976698049303363099194915667274909798041151694131302731875286034428026186929184304362229619692102502128326871687296959400302085212456821262169947535776150082836000223031048009020371350036539197512764290221947644788009144903781547616778821484803103102745494206849074992779830389209747508799417151536020207175883478394172905960788120783232579015657004053498129914455441618389610549539868266323811924818208880604509127630703993255747870363319837810567597787888248562918900718803552796004261069194657586185596777323973185892714770276436504734272537002948160990428552665125608477771575963058090305035115286941440877623389294911460277602637191173693793231079024899815378902648788493885795214168271309254640593363869703425269994239287771226535309826739493886296423210090644214129966601915093662511467744154185692679773644695709701672608468044373005103438648018171096398607426443413194281519283533259981445906676653664312034448007510997631193422830884833006737772887744686368777653538919592111949951373489944710830951650076413715452663964540719349734000663229824949598114271366375624217568372270930581796391817021771734034804435202600593398262992169912934443430494160632096045871344133239156139910775140126053555363620216919941247411877562901224722321989970134286623258958498605964077449818088184783496838986907729353462388738014823594316384752835667377359432034427008829688816033072344951707746090028382556104976370057205866084666487901937011251702362871920843956238611037186048336332441746362113871081603050950760137657339038936536596933851722041992305843336304901453452571715630307405640050171237176240125222557358332930710738041186084749584740450846611590610786726669986270473854160586469256252168384869883596851589288004569216909578136486049118663430702671507574735910444281915534186018197115110593685299825714958042538520471370923783862810373944427764167480823665142849781516572576659578160735209456505359366276175015044857079506949581097412535399513752605101582122333384186945231604776461746644687207899376798357792653596666581824693709787573041587757626825069517113369429081460885782112243077774167939979145984687560083045973141222583991194116736510260934423567193666909628226271067954142670416399861275578343838128155755377702692215310376282921807545085658277051619371602033888713006177339575658405744622442355225853961935039933219714558173292667708157166916833886949301548495619142336871670282820976529735014754467417983365683174117809170080328865238203402509223643245295215135732316886815093541440338066497831425192534469707791058531207292816542931530093442001376701232809955022738734490848042941077563991314157582176472360317911138496886256725677367798535879492979280051355429572780533908274951671490815885229571886451377910940010012673321183872398403321907312091527491690998932778856646700965310668633894463320063118790564548548680468929222591042338228420943806756554406415931090291538143528789629740994863591079711320495984207677768776056308656173482219428268311986921414524482951641166995052008686213317172019535225407298322183791610925122947801778616107589077345869377990653281139028741071735597803862826823503904687705298499157856081719712796392689492483355489380957823523151647371561894369978535447318492691386953116508279327857453984504066238005909847859372464174431153967057270158951933229971026010966691002647873844722520078261307977064543610448466409873414879293871473093770897730342188974916791516079659719631290440856802730239894028254762897599982086201797037774350455318445666421091272654386376102853322186923651805632319156209526417184248540024807358600433160247811092932618503532768368430167126161193398063991915395134237015963224689432846551459273641605647876407353197376326052974132020864262566344092487103313843164740701039613572905063871725731123431656363638983017301386812075627738970033704925617216698715754404765227506689591570815979652750336513064156973513088297698696477005797931273090405805324066030602361512119840369813400472419573729403873434074573160162870936318068249575178675647763166913751293933551646401329625534493843177325624465230372869642679078724392280172358972274796335813356986697385312329187363931167837979111403879151351225430729247112426650129104919284568825235232455725351552224363906641354967564821570365975247995194169878249598512813403591842113734352236034910030599591245451967209058347539059536190947433656585914973072966125316763518711707788780035041883398613275851057398845335005672095171230325334135754312046899114278318582949758025840627034073495122556098906615537245941205241050630832317495323472933706045476448135324622130249061967088040634256046633681463998139104615271598326353633335243659421316638748257095222430616324419633409773550120132726761874278343852462953247386966597193056825342009690607297567265709899931944826256174731047305094081727770841080440016328196894856028563604702780682709363667848710891858610272205043503944199299286748350079640312927864906304355154798671043210363438224540663084637003896566824195029371811104076856777325671062014465716574261539700730333018675634121018453203461781631294981764229198232448947654253783388204297001920517253136683270888989223979423417588630101697507592396076446071605672776440131159545850932553540460963555258875042206253533925856199633623872569538946264824099914287390183680108014685374620969458668067114850551017647802720372476318759518097294889667098388787511578895623400536394696909686982089754739465395458755824025627145860540874654096413723593095786861445483207390022439985873830588574664429664328016256793764664176593210650680088966473569586028063185778696846067901539484777171526008932126642124726149000234264622535507932061596730778639639322994194566230181315095849815600439054976860942354245780811250583700351160679186551987899007553450837968473873566770319473147476749953987063615776202643846558316122703715582310812032981020745887175302830579849877162396208954934582206235358053066687144876586531305671914153856979556448429896161954702428046020131267519937687942784998876608574424998618033186526320893410380410615897192637383212667814571224040666584728535219469735065470507466917541842491727590582415179332124764074275007615003561577219703985592626963898540408123901920954693863945334300894449076898006775718907497203849104045111950488579240549422430862215686448461635287540273933678378844195074450255145986318612166430395304017670650737974685138684856887920372725287537626880802277074988514877737086561392592097851272353742818024979368746610359299993821608029744496422263548547379227059308330732006560207940874965636535953389748254985558222428424330864460444917636632197361629108476540664208138353154832367022269303011778867713003519669926347227092605460218997631456886988546452742315709205780440409392361149984816382171251958377059474144369328217951856030362908523108523320063836177218545129144151675726728971709295080995491115727738994384523099426017049570788092605348295244510790430809310252002021162900702972004743370313805442485273713185126694838015211112954180162169003605131100343992572258878781008043930175009769360708537294998309182845117912092938413455780854377238800073118887421690605050678371370274063825715320860910620948562818451293617405229491236178678754278932510338478945063584831864172120232848867941761893175916936978589066485863729545344061035238414543782144041420795359232419130120814019590644487393845413057769719569362935783498618412118335138847775489214231071866809710199171908881608454495198717226829803613782208248938966092151102736556383497239013516522084118430594971074187519260946766667423607181318562263393260060663288717977893874080349690289502370587468658530985736835159292642558195601284611160860487456916132188445668274130918453531643472494048279511660213922482152284451162576937159479526872950903047337162660821805029600708501290793495192214286757581386114297917781127145691164585515718567911708522043336429297534300930577150477197470794166974719236537212770910044441149771285775283181049923538686195299106209763353070616873255072368061193988813137514561690385137083968163734396360347928328336563595006220960934830733065521338335841965986235454589498682179372157178621143188814181528148836823240009313917239615618819685916460559824760451892578522401207920356914008125649666362232615846019270768411703026907820785686893329687936007326486259085396965025670221843906365927274024874373060432645146595290306316201392153119798490572148328091329727540219633346941261473165756079426541378711351627269272757052944951094355168530350261245111562524094741072397641389854917843735109228705666266863564318304340300463039112532153772402056001825404569674075795960482695655750098767071905821033260887679978762025881061325337213163524622779581816972175555663637210876981896507755878807206231301747997616278339215979267473884231317543544712452852114555647618822488813490625396727766305946129050714786088423305048954173700588940427019522843104010086905515156909811517470970474323555351456229248573825599238197370105299573364893745750391351067788061060527046812509973058875643642096985994846004078611902478115985749938866763374390207356150215198771166488048581440471218124332859752158358015616660187047654002371295814353685889164385419937001586245963586686123227189249339843703303467679680488282425879611225214199203660669304537817806007418484543257294498646404096533225791315505537497715207372656046521498454410484618808462877318221533855177115026118801994635309492636704866960405453702180044263190730170186585393782170839546858732775601817761449580514710578003629573446698223526303276734226490467503004836350690787693180419256606367206975754427565647193757103622172723445912571921412299915576801160624014585320520435926902108223783097157413714400856842549485204781754909051139596113033072378955171738006815746107126582544226522618574999884662865437801703547910979352686377121384449362061338382596983291230994834971550479538621580428614474707245992895951108596353356806792208588625391355419712148342585326639448556448414437163323753111363340625419447936908942309059384977968558654468049438582343818038934475031358918368904553362235318960285027300982643072000467590624020979094167872273398935195854660177797067882015023199367866518380157778613872943331744050423399154264127572590316747837829937185838805929919930426357165171535205844319577554107598132285773629025750828527147869294916738495703358765482635112741426231530287972819515170191843245039795145568805407271280931405842189126545621691903281208244330021380936941534090926737001841378878232358824105952882091391122376983197385863111377095821200758977598655636124137542127167825095347247242493240787156813316762909697688864136617808861689815132468231141188094757116163402600963896457848764885057333264284354504937279338775019887183472529765242120841857211466394385600886129299536196104160966949461244421470876475635289658360673044133988472412908346503168644044604661248748712465204802503052422913247662994388842262879693084905772957000634196203224713014001316324485989167462563998596759472917793384738934828062167583801086989253946454905163667273365009826486005589759567623881215672865627059042146648672881327891063995694457750315379828488812880269962995872715826927673202525599988948924553574496455072613992039779209442466653855719582532255207207153068979266405561447716075597208003386115629512060258961979286373743813337931101772517953360698302031325001844985453129783938956301615754527286888929780663765211591009120443813269934515079913668898214910192754399304618341831453870034267125170721505066917586198732535221716916597559836503614379370118425547846931569036557590812044714028782560536961879256523449737057538949699208081652250218260123107062251099566298529927581162698576168546631586946049600127140987141317674460410902993224596022062324828491276267223741714140055313279819368014780323282408383224067009467800172584303162404423355760504326823431706740776861818994506012773534445613456631600402675225760377368762722021968052635826828120651984513278838416227839164392949867613026178865022522692004106553797610247860158988661216559547229327484286711157186964559739720520556436315158359781162799170405180320792416230576841207330921642427914971360147358390054635718803605053812837473635557695381145693736966197784412835427730682455377495472116907945998421668486206685639652442308850167256008495070585127947385980542764963491704371533238862062927529061728993687103715584617381449133650067934551429741997596233806357685350458313224546984096007149813473419575258362349731564468684291660239721484472043256211659727453894937763642732739820546069887466309796309447539968295322423746786761899588378272444571292371367413474447197434276820309108466176334054973272331173340111659361442337130792855312977415847609894557657244236135360575415882254468739766648258409923847596862145560111671406474246039147740994441351609557249626167418534932138685355488646277447161488690787234126802880936621565723899904615884548341472638437772090419017559362342062609301959534466652230774497315103874040974426330140216732414915907495369817982025864413682320190304402284550455106186758899229547597245258424329265319033989076324859178607488037746916527718266949417024120162124868059437809624404252426704159384001199136240834740094617360560669898139739645400311944527017550131601104533280441817207649685008412565052535179862086175827433761623348775986952355976268937519226183084278136545349291670649785347842730455081487877293986813649230888836033911523597766312541091611558308804656825040751880201229000742627616764846092999606733478252567564690692669504889322114105282631889525319858323705525911497612288157996632667685670674150846432327565528609123127086077539690737908771138085892200113245294049889922704737554162844306763132343665963132039823822365456559043777707552305193196770793605848172893387453594424454474013959098664586068848120392276052089591591308873830873345317112789906683626082510250289631190568481346881428473945619394593511266715086704096809000035241384030443602237087033327542922826698398494829325813183260408718893212433059617843940587229933901382943262992336198408409788514398330434599960440396485182583066248982823883042200111255085981898391448344844015751684471609252769042652840411485899734910885714254073490007645062005967803838338350515620582705664016191350475064132715818275524670604480386741711701135361668073237815153729800159901327889495086187129604447582390156419305608703427826439346018905984357281977986898496611416847526529975227719636005017771483921982957544197799709954130121091633016282666472057665994141283170246327843904936295814914169455433298130711317392343344536477614717883848576748172715876667106217813834587606343570080150703180822107697621328830605698506305609033356175547929890746964404950767451267747106159270327510593755358827880906472517244109777980040119286343261893970180775124057054774158177970221802579963540456256569061867723885060688202164035260408533918104432069412762092767961756595762676589021880178838196631141734156532209197898820016385683655803586282227835323540770476387548613240989563105953577728703740467085125879358539676422989918253524305042736487362952197862376130430552678640237349729018968430033265542780883750558736743752261945449029876696946612108224851115124942879425375009248761228804637428658896795153370852897642290653016040206069997053451309942591115365763315347798585143808043185383293137605133990375187081546565293976821820681678976667143825155588879797300722377840466564345393925544396615896674799718417150813477090500003898193451616746130407776930778672242012416461426697352259907686766455115834355953750908750468801886412209297018951915865714966322975970231743912119114106738120788423635459798468818392838721078133776550259766032933645790131678864392198922153478445210797007411829472852520896641724546528677899228076406095090087054355112053831012039363483887827931984497205305580640089884147850679614566821898948479674022244113913369887487652583123461801329225543373875617324208320681859309093341218594477765154347005165214923914454731564386152568222327274320958552990828960284112884233856381741112323189817039205176818285148223632011326114683897977754234839539859773555387479931478369465852786548627650813853724070487089026934104735632316188699054916850121902617757361251685208213541489423125264663780298582285404482769756412105522055863664088568917771323306300523891885066913901475208601262155693104850152972747067125562727745608865730314711297367302397805250438620696620826528991710532990343302838492054402628712678922427512444061374297112648006020563822297430010181285771385041656979587178970340526369080649857004814587864116807509544571472638333034374444934753562266027341209926917981677891921750897515727238195821470408569780330165534206129720507627843830335242167825939925171230104851587860224644439220292020253252521515829520218725721656441148152957244204914499245531265109309283531415930597420172103218491273772895034798650668137487351895169131869380823743909292549280691725771478618398588851733810124489829934377473370053370068252656647212635214606968547927504809038433155753162266329616429449015410862283066225309223030055256064379392216273751092054318524673355685810347451754467300668773538268859656515445954574923648729683873935557286856820970937068655945793715092808131171747403868732588043215625794798713241960194139927877235454587568468762746272019100094498768878435303678674043109734750924359994293734355746752800574597686230559451123952878914382180299790800323290843096781932073569058248305026863533285657386011004060766594502913168774569065159241049643726694858160418911013311490706738036543681700409684130695301318926665944626256463817919659855204483526903636334206401621354856147973558569067520506511253677092000344997303422716188357301982404683865947269583956684546963367459758762687671678204149310431797725100520798570137927948407559741374061481883367972415208467850517662863773339874292705113236025748070303373436449698506471836270575534367072477137900735911028494106738086952233620846769094804738713039865343227698048631407498839757989365214479653306186066720098433994778082034252601056288009952122283076954922176813820889628483465616421754123937579558193754200095019239139515555511223697405926455097278440331386885178334434554052038015454864241788988257555470096002158416471742411410132996885100140752406174456919083750028326577637466209951318990330737079201943113542966688636484421817970036239203330453206764934536684736355707322326827785876446310370573555594566522654459815454790470955048621062330510444683333038786245129101219361371510125280334401845995354716355081414363331143924307309675133524204853828824109943599655989890178320729881597902725812942771540675060969003063075143063594335159290803487756279512698080233303983448523903763359578020680403822826869215712204567152735947916516836123801571638451477512947633273928861312235512576987086278058220742708761872709578297417052880180662367826500231390634119435668470543727684869857682890608140863953707420877680764412659167163724061796739633033065005264111522515204885857558654834258914573545195512032180353594911695051378068719810556006895666360047309899697571949998411847437091347874733077520204574436565617262186793285390157914385444947163193179238783098002974102908514885479387830864484899289781518304707739376905740671105223300022583960963928395194012317124630264096534995267171526593770055565730102494501137676561913334587750246583294305250495353130891578871532092316372373133107902309220102841925745042896381868642367418745319420730865142002648204585089869986704818966935411839771621427485830775501646076259582071540977268704166605867826554568530493151242347823449624187048865683437944276656029782106486814685177512298790716326796679143241180948696299889708040355541198052387600659238816546438629657921933326303838039366429868607257229153586409564863587715116286506248407497620036497639682708720641591753907274496783732165772299744820271810956549362372807148941506408038206953482379076431012118157117732910126914164048218394564547100247423760878689918169039921521753045153136140852307023421248049548015885572583792382485175500534204824970481492908940320310430809050323007986533558215703588782544545718278427626486375885747827314014521764649075125614840753558736191501676141412501389041086207604364613946110943290698832808350946105405659106878177534966935163165977743784854970520032448041881269436554799191892238890741452952579974686319705933896006655839221952956620159751151666300129475309250350785976428156893784305478622359782685533113861735520731866174351824115841845075091997649633694047866430158123243404433057388021248152371142388316099631832447205081549938790835458611253943435564824171299287489119366707640567857774181325253233507979780771975461697394241257405396956542526065849971304547348847901021479486605612704247767646084737041513530671846138948561060030258907065141688239455904675293200356117950112887673328192319125625450112001441334554826262046043961154178777018566846299911001936816697919963389400196333444219082726126561961439286151423991499109774369393437975616583894807974648514443152564762608988320176773626728380768044611965217042661464062080139705149376171806476488738827250154569276638342192678366431133871111025133072862691969096467500425521305379670524615424717077214067299329167718710591789934002289122069747920433953864968281665817890773234078288875249889546074590578021210045020175846649075388442769801561868206680361142266963414252212701874669272948450859264833052568909056061160609027359184255550131690394077096720368166451553160609833896170781715866268750533758548369182807948608780968625107433984390434235219689740367237885674707704507030700597244015754049856015155058928190915694812731538478889554953381956036083413176999479211030070256296238738351346477023693051810382793957412886791553484931648794808844286324406999962815018551120571300130535112365975815392599766465092145349546061127412046819415225926986188716476056849908748119793304841105307635909081982031362197358414422316767268043098239315181137479061734502360873745508395271506258881998152137286301123636845012754834291165393438286951173209240049799587871290266306404165115829161019204881466233120224197635902895287152465704419993236013589982120474846271345840260611228369146254161192044127219280174741005492699430065610779347520954299270720650387651378861176589218001361087617775409717699262796015976536682841105021059664122075404910323076215802321801490368864524554178452977152697573396110449811096336643650973261681886798344414251669250224998533937199407689970648423521941761037033886551068960149333137371722361296472034150664556620292222683537040127141078291436736093570890846188142373958232245787503986561211010450137490946828402032613144801907279288018920751978234534610262408946310152037618441950323372778709960576820747366052518528388812006417666180087401861373515895458278191176440767682077611697073274163810947190349871592916000621071323440142391532644306688082924938683364588261228996162358510568247905595841766424855277606907075534470052532713604689867684196360667936729004058748210752703690582852587524292351670119901397237694282959815729865739583855822949365306356393915948828577313698981442774794707665584106781286664956274007171084307394120846271084144220384654297665542790977252203936545409559594221915876466565983276517927312109637452041938454476903708734290815286507123649654266467749616718795331528641404301235882753816634993816753568289004479992478192683752604759132474627756612961000581745982917363087175573302426078515416609069164426643196313914584560126544290921166479054390986891864459370224685320335100411031886752698293827320896578394742343752392404174187327761664303245103880308371741165000643275630023932633142124856864613839455387524460883835247056445230671943050578332861499695214574918673021229404253734683027773313743176432192583951191913236970762565695716840327124880325930914779807518816007401993774234221794461913879164577142778140583620285187482254501254780617476909707221619667136778860802714594724530597985286751745300483760149830490374318122069442090705009423973432872916069092401278307983254836657225071642951238528724138838574504391218505180992122754344306417613772561319645961095192874830637228486233492444491904268558980004614112652158744705099772253265288419466337449702012118823493884966713120693120582224051534971354793790579910847464242156789336422637453846505595136532644728156836277997378127893681071581923934505832928373516022575817127739736575756865378797460471263725175192803271851926819917519383686188517784400435220379006466153404705216541111363986878921739723739896607992639335605097808466640645060973299641467192720137922397898565627219164711374815726090587366358047829903172491757500331384309027495081387152401636448384580814486186637697087649689231216276249532384975371921757162088038760829349873080877249706384919119527981958190516873110807572517264983816623232205603988358157912992461349984204628724405823867426023186896007333398519510459422904668181847357590156918607616331138009353807527538592211061653529680787460840337585919547522274221559932006125164812648451392909851693330515235916955355721591013597659403166816081731576169618811781971177795842089107519036325768932298882133054753656397633873210525368153651341260914098941072219830872711334487119709246568789747359480982755252152430402157014447380207090760786408265205545137559732000800203136750199256298419497315924197202893994081817702434459238430923245234575791683932861682945847124118958937423672717813748011917449413425060927640713687024598045661303952113384013415037432914883493033636158000130588759332472546201048166403710080511673970680927719260588960348045228317232803681187031272506450618629138861001275954148566415095600081015308217088430975829661490651423859763132193660525117633388134158638217519049714767119063945723171578151019595179218912729338551682001453030819043454878245408263437500120254435442376334044602833812761305154890870916870343146715245652773283431041407392860250480796803485192806596809855333297772986668103799435700742354867077311314589712272131788641879710793233868427693207194387420730083062528118643285570520825547326752348837863723225294085957046976403282869202911899456522208121620826458236485403829445741128331629382084816009173825727982745362705478457038425615653445181021898078023754297882055318390558568805474809499629743584484479518248026939110990875290364212204536332706626128176468053408407649243109388979549094928082647431373786179467142988191638288941225785348943868854632528599402913545489154484053068978162863823000366160237819716753451310493666848144862930450839567184713588568720601921059768004898348890777169855867038685678689630104228620027696190848737373593115559489316471614742241241080915717759369507297908390256697208628722732076075083433157804018595982216321305273881207658074452046050754827966442452381402017094824435270368061319011125926752655181876954087858148018718169579570729272694811666295639408633390466351259744410532863779156045567748268573798664900319980347698852661715714418485150351971611338457054814071731561010311297700803013892035659824806376504489316277200564467982215399291293815609566984236664361860965342421210479582059584960463891055303905596666930735260688627851937917438369125360883055927544388560027145080571797004532153325269863702949511264830010485917986200317248423836494080716911582330878681178100817517430784215819553290074107638543118831542337780918612111718398640817469867853658537784796684100354795672647383581298428564496194855634992668338556800017467144246309114053233502145105635100954667476387259109043659409570451628107003693334435646437801867855817503020706261095751735198245598952555068326031742238547524726553387803327296382780133921837788043654626876383362945442953469045674139219118842149941525260493144551517231835450076117034756695289843264617957174777984619140625', -); -test(macro, '94906266', 0, '1'); -test(macro, '-94906266', 0, '1'); -test(macro, '94906266', 1, '94906266'); -test(macro, '-94906266', 1, '-94906266'); -test(macro, '94906266', 3, '854839655154332653629096'); -test(macro, '-94906266', 3, '-854839655154332653629096'); -test( - macro, - '94906266', - 7, - '69352833223452036048019660867447049048422594495110435456', -); -test( - macro, - '-94906266', - 7, - '-69352833223452036048019660867447049048422594495110435456', -); -test( - macro, - '94906266', - 9, - '624674792670819892886821348974247157367038441509612832874984853143476736', -); -test( - macro, - '-94906266', - 9, - '-624674792670819892886821348974247157367038441509612832874984853143476736', -); -test( - macro, - '94906266', - 11, - '5626570371553000770366419421961255147770032439589200995227891474434035187239751962044416', -); -test( - macro, - '-94906266', - 11, - '-5626570371553000770366419421961255147770032439589200995227891474434035187239751962044416', -); -test( - macro, - '94906266', - 17, - '4111621002962352544426035475002050767022502971311441626541763763792261198666994629509192961845858718231919984114833985236172441304825856', -); -test( - macro, - '-94906266', - 17, - '-4111621002962352544426035475002050767022502971311441626541763763792261198666994629509192961845858718231919984114833985236172441304825856', -); -test( - macro, - '94906266', - 22, - '31658294146038073140673550517958143193937503699159895257943887308245045293131342388364082990134400198608168678756490519887562990165044958599474575834979005035731090290356781056', -); -test( - macro, - '-94906266', - 22, - '31658294146038073140673550517958143193937503699159895257943887308245045293131342388364082990134400198608168678756490519887562990165044958599474575834979005035731090290356781056', -); -test( - macro, - '94906266', - 24, - '285152565696490625870442272729395647608950351839474257315727256295452252799048325652363949074270810510446637480253626162460689279863201482867682864836827407863087624820569082929394398407950336', -); -test( - macro, - '-94906266', - 24, - '285152565696490625870442272729395647608950351839474257315727256295452252799048325652363949074270810510446637480253626162460689279863201482867682864836827407863087624820569082929394398407950336', -); -test( - macro, - '94906266', - 27, - '243759720926361233482907476667027740766805627065699088178027236643247725320494107064742082561094618490109236612895062687353584665860859991879415575955849317191261917932396860642093944856375991467562330107969332576256', -); -test( - macro, - '-94906266', - 27, - '-243759720926361233482907476667027740766805627065699088178027236643247725320494107064742082561094618490109236612895062687353584665860859991879415575955849317191261917932396860642093944856375991467562330107969332576256', -); -test( - macro, - '94906266', - 29, - '2195592394049166382906227581924066334663790360178733838688076505880403691220571309390729652591082755619543107564008226799137799080033434887927401578673812379447379840039807149661750004725486244752615902332029221197778610238611521536', -); -test( - macro, - '-94906266', - 29, - '-2195592394049166382906227581924066334663790360178733838688076505880403691220571309390729652591082755619543107564008226799137799080033434887927401578673812379447379840039807149661750004725486244752615902332029221197778610238611521536', -); -test( - macro, - '94906266', - 1234, - '9591583891277388505525115654797253189447136886605641096683226693736396854292872290512151998759360923701943145747583511134137237540129219701865806527338039412393513087835762990942813556773080107716234535870561191650361302039829302403412946075446106825412751297892836531217239269776359674130746921131965972537264150037423340241624478540689955102073116137675285513450572840589026258095131250791322081023453951176768841489407000043160535726118339631576838850502482585592200779524367753458287644483993004333076374919449019351020134267799153173432760508245927226301565370359856673809842061641312175092790578128981482583891661097755340718832041897219562172618233303238094263205645877970358113993768074445674320377240792952208045529432335140630061808861188401135379799521387052163956136888910117971768073860253216476475927368994288414942490447092525755875965929318466574353873454174423568978107060092961912237658617656324665296966703692085594297491801246417796157302870670019421897078307859164701722985884435622838840530890375919184262292483249645237441871417071068806838100941596745962353204182500699553236401634245625283851805217533262792073996012743903038338818229229536055186386872511025680807437338096861815569495459484486460365583028341745944192156249359977394771788868182593957987578355313292235026581979280145300928658410955632509870162005244044559296175541745959995285799355003323443377883778100846086239675150873016131996875930350018015992219350113946152537456877585388442767668614805636644492157477034654015002200777424371801710940679802301822648705115099704427481311918749176783544920736529548586139472683949148040458809863320043994900963476851393707718685357960075583333452093866553065546077049928960672319740544152092427005399888194730320253239832076741315219908647683627978170933321554476794379260071113837209591838667536304118212015385101618506499462338145076365933116172453086230618448544984434420121504363011969733490863691026519845481227162596252154043336808666820679272401041855392723131101974634161808347994859566559136073803551874710780721574809835031749728330936601228289711332942475487049804198344632033302735878413333870324928721703861529246383352099214222474224938703923296131257451581782344657338446171822905587284519270798848617615383853637901599987735072168595913644523892204610491256735570544171294439722701186324784813173174483048007173966323269225972341862131385921920832169574095034230665694523080098106542220271445953212355824376796872664899930405078699681023392941095533624834406183151593571978375085934954718772261954055173766598828049519860162686382244143267595319712518638744666104806572606245449198069667116209595882863289884166226287944224244325912368780394022898051057039098547506174697498113971272667929236765997561816214125329832660683430329906332085061140646573555743366393621599195976267935743727788827183517095321230820637742126067889019665213164390290062070086490541490087922889187502866643165223474222152292371630635439138794711457873999619661458114893978180017319683380126983120641424939879059628457874620836535554946801030253436946381021247115406263632484804383695320385114124544559909521290483278475119817164333705567704791958463532021771160857295222557768598737275557446539702002377398605084666447155176033668026697232370808420470009321148824428418389705572556366704189822047227135423662015737971723144128915366318163252037686350939438961105050312976676967329177197952756021289597791397338470443572707715044081895964751092291481135333163500784426335086969222350790452151470682249035744789451673722795644580346446427237748663833724773055738574222477446871501122860335729438705137534047869725490906711494592485106885753816974753130866230360407926506022819960149735054814022037339465954340178612152040319878077106430592659196961703359784146025873205470608826469128543078279531426173587139642452817225181534576963768759115834369507960533557518872119645633087366816494975254571143679899649491717075104399517306160274939826782873377728147095270888144396760865832963585642969396605820937742695276189538284034362525529116594250112268646631014509298531366336740362116463524994112518288361022718725186733909161021464483147766958810416653193317981915259425065001767448497554577639274204071071705244125471084327932064913256116544625655097111357879218899746235180031762344942760169055331365226140925327502639728177654134067427560672144839015071652189807317452445009056094721496371835728117777604974208279421394708930008595905196768223073852631733496851110527349046730941946132098007584486429686144893021869768040494264750853862282987486806138208661684993068425524750265051353734028906190482450851078570663574840036302550770980899456380758967689998731148592509807498959236086788270504035504990430792437032016856376680319178405811261802074955061597795727228291245608975661248511105127641151300865259290562972594488780807006164810445138616615841618866683247778933343790417183231981709585853401070402352247880227834733605154654208405827367703397973124817867577312294892836600548995170550964519017755920491134728378033326750515727791786492541954821643732033152252733475994603308334780140629373474610355068194857748405815128125330220343480629589196619680550886899725922137105216388200442015479933602992398666447348073001184279416147051990832666558273496164807310852154387305610527877711252422415258565032409894506552122659357455434448999509546516876567873333914554650709822738555250110914569231361810681278643896615945548615899639843813666952141996624167611621492507842243902766221696245619381375774605289899874210671753440701163534059875806083218591213612602297792283259653398593217024941897584586879309412954558704641934429167525386399311944692329646781017786882955521326213679515731031183203986702444464679264883058444930210295590055606165224085189224526495039065334701181368385574370869084681514830806912736541133960881470315237742308529215400374398116689039427221492261470641437661432564644402005790004197437786314907560361356740707196128715870019180872806279505931484886218059480821987893092959069213150697966414731390314378598567994448063764696914845544937095976949556292692796483284851190274166372600687071534820393215816026820899675947738834985468497728922675033232726987359807157258554534363387708729838351923974285515021519390503787211158967755318117395341875443593494088249677470509256804069203968911906532856935833859629624953249282547694462129874921376210457781519780672138068580237523242109758156352510154248725657237885230051785607446612712455877439910598727422322236228918026459822218149591970911650199903977933286839068419271139224493809573534424910810569507347636018232048772842840705740610444557659804248321191219347571463409422539969701913590898411004567236097895765842127957787359469025195874392074029652861324112210670977858242810226625126442091294631154867160280576157087207127738748079837969738346736272907326954078228907240806250022030103243471070942620769424250383227664179624295113595650922927103176569104163069362275506704125229083883227741648535784720713916998425594827704884440884048570231868405014498867352517286315804797924811180126154783110497902148043082659366781977209563715381227919869341778767396699280870862522931948944127530770998030252387371682413803951145767257140559728875692368709218878174221849437349204586631919443118989273373652595227172082496817103834248085354242741398581443429002334727240172368808661300231451115291328199507370065934925021969833175256299351306328641830228271353568846058387616229810955704081192557684947405779884509699286099118817298430699433547211009079482595408740285359093432367204533672009970779486719368138866188648840163573708869681067182080546042978337057745453023016747935779322389017812077413454635572131138070447390064042098690495563990815384766717508180920795876792077075958862404761890064984999921424416035664890724207484476976948663181789371914701106962448405463092701988465606503300165084244328789019795067098840871060483436479149382772059422903723115301669510704882112896208019251794996975248024340609600192493149267102552688418448337310468569703642800278151785183841360284358832347643596421881526596665057964053827050804071884062288727904628572069704994983452228398970557246268968220658737939309295962851885135390864007109076454907858176227575944339250250806424963701992166486681083315296440885760692193722152386434371762373410590481977858473872297435270131851901627945492845960665561756900237380050320337739114937222692715636345829089022971742750975497841816680681521790589482652539674743477542852811800520246939928822189145763731846324657221289024648931687399148099267044885671733352094184536756797510551247165871717923549062099764463998166198147288178913216151413981763321707683229249020148234875195737760846468403561985525050842464738232714775172951842741929209903518935372911660933298610653450385567441423081564273457132625038138122267839275539394488317379385537074050425412207154034127084217300615381424425706034294800775550428346687417563346954606915929811701307971860847947436154534973614176016275979962289620596506204146325423963174288918311054000291798070696992896378237251211848896156990492511653866861708727175129743629232669035317239800711664336916352757273273019680964663040723297535426909582937904934585625428123881208162294614263698939436684681006337738069910841585236458607359914206604759267241756962489475530594581950179263984531751086934103867126900494224276800810684669857022045988157595957258035294079410835500711458127756501041160821464860452114868285466846677033681168740753966890869829905162812697068968738906495545558280538657098494992456740410755232449109163731371774089491724693292280219243313432709883187604627083249554581032445654578001281629105731324709943235755260023344512209169158809774752301507192585314852433760106795543790072985084166023044553539415733291732895468679601579454025049341590670709620736', -); -test( - macro, - '-94906266', - 1234, - '9591583891277388505525115654797253189447136886605641096683226693736396854292872290512151998759360923701943145747583511134137237540129219701865806527338039412393513087835762990942813556773080107716234535870561191650361302039829302403412946075446106825412751297892836531217239269776359674130746921131965972537264150037423340241624478540689955102073116137675285513450572840589026258095131250791322081023453951176768841489407000043160535726118339631576838850502482585592200779524367753458287644483993004333076374919449019351020134267799153173432760508245927226301565370359856673809842061641312175092790578128981482583891661097755340718832041897219562172618233303238094263205645877970358113993768074445674320377240792952208045529432335140630061808861188401135379799521387052163956136888910117971768073860253216476475927368994288414942490447092525755875965929318466574353873454174423568978107060092961912237658617656324665296966703692085594297491801246417796157302870670019421897078307859164701722985884435622838840530890375919184262292483249645237441871417071068806838100941596745962353204182500699553236401634245625283851805217533262792073996012743903038338818229229536055186386872511025680807437338096861815569495459484486460365583028341745944192156249359977394771788868182593957987578355313292235026581979280145300928658410955632509870162005244044559296175541745959995285799355003323443377883778100846086239675150873016131996875930350018015992219350113946152537456877585388442767668614805636644492157477034654015002200777424371801710940679802301822648705115099704427481311918749176783544920736529548586139472683949148040458809863320043994900963476851393707718685357960075583333452093866553065546077049928960672319740544152092427005399888194730320253239832076741315219908647683627978170933321554476794379260071113837209591838667536304118212015385101618506499462338145076365933116172453086230618448544984434420121504363011969733490863691026519845481227162596252154043336808666820679272401041855392723131101974634161808347994859566559136073803551874710780721574809835031749728330936601228289711332942475487049804198344632033302735878413333870324928721703861529246383352099214222474224938703923296131257451581782344657338446171822905587284519270798848617615383853637901599987735072168595913644523892204610491256735570544171294439722701186324784813173174483048007173966323269225972341862131385921920832169574095034230665694523080098106542220271445953212355824376796872664899930405078699681023392941095533624834406183151593571978375085934954718772261954055173766598828049519860162686382244143267595319712518638744666104806572606245449198069667116209595882863289884166226287944224244325912368780394022898051057039098547506174697498113971272667929236765997561816214125329832660683430329906332085061140646573555743366393621599195976267935743727788827183517095321230820637742126067889019665213164390290062070086490541490087922889187502866643165223474222152292371630635439138794711457873999619661458114893978180017319683380126983120641424939879059628457874620836535554946801030253436946381021247115406263632484804383695320385114124544559909521290483278475119817164333705567704791958463532021771160857295222557768598737275557446539702002377398605084666447155176033668026697232370808420470009321148824428418389705572556366704189822047227135423662015737971723144128915366318163252037686350939438961105050312976676967329177197952756021289597791397338470443572707715044081895964751092291481135333163500784426335086969222350790452151470682249035744789451673722795644580346446427237748663833724773055738574222477446871501122860335729438705137534047869725490906711494592485106885753816974753130866230360407926506022819960149735054814022037339465954340178612152040319878077106430592659196961703359784146025873205470608826469128543078279531426173587139642452817225181534576963768759115834369507960533557518872119645633087366816494975254571143679899649491717075104399517306160274939826782873377728147095270888144396760865832963585642969396605820937742695276189538284034362525529116594250112268646631014509298531366336740362116463524994112518288361022718725186733909161021464483147766958810416653193317981915259425065001767448497554577639274204071071705244125471084327932064913256116544625655097111357879218899746235180031762344942760169055331365226140925327502639728177654134067427560672144839015071652189807317452445009056094721496371835728117777604974208279421394708930008595905196768223073852631733496851110527349046730941946132098007584486429686144893021869768040494264750853862282987486806138208661684993068425524750265051353734028906190482450851078570663574840036302550770980899456380758967689998731148592509807498959236086788270504035504990430792437032016856376680319178405811261802074955061597795727228291245608975661248511105127641151300865259290562972594488780807006164810445138616615841618866683247778933343790417183231981709585853401070402352247880227834733605154654208405827367703397973124817867577312294892836600548995170550964519017755920491134728378033326750515727791786492541954821643732033152252733475994603308334780140629373474610355068194857748405815128125330220343480629589196619680550886899725922137105216388200442015479933602992398666447348073001184279416147051990832666558273496164807310852154387305610527877711252422415258565032409894506552122659357455434448999509546516876567873333914554650709822738555250110914569231361810681278643896615945548615899639843813666952141996624167611621492507842243902766221696245619381375774605289899874210671753440701163534059875806083218591213612602297792283259653398593217024941897584586879309412954558704641934429167525386399311944692329646781017786882955521326213679515731031183203986702444464679264883058444930210295590055606165224085189224526495039065334701181368385574370869084681514830806912736541133960881470315237742308529215400374398116689039427221492261470641437661432564644402005790004197437786314907560361356740707196128715870019180872806279505931484886218059480821987893092959069213150697966414731390314378598567994448063764696914845544937095976949556292692796483284851190274166372600687071534820393215816026820899675947738834985468497728922675033232726987359807157258554534363387708729838351923974285515021519390503787211158967755318117395341875443593494088249677470509256804069203968911906532856935833859629624953249282547694462129874921376210457781519780672138068580237523242109758156352510154248725657237885230051785607446612712455877439910598727422322236228918026459822218149591970911650199903977933286839068419271139224493809573534424910810569507347636018232048772842840705740610444557659804248321191219347571463409422539969701913590898411004567236097895765842127957787359469025195874392074029652861324112210670977858242810226625126442091294631154867160280576157087207127738748079837969738346736272907326954078228907240806250022030103243471070942620769424250383227664179624295113595650922927103176569104163069362275506704125229083883227741648535784720713916998425594827704884440884048570231868405014498867352517286315804797924811180126154783110497902148043082659366781977209563715381227919869341778767396699280870862522931948944127530770998030252387371682413803951145767257140559728875692368709218878174221849437349204586631919443118989273373652595227172082496817103834248085354242741398581443429002334727240172368808661300231451115291328199507370065934925021969833175256299351306328641830228271353568846058387616229810955704081192557684947405779884509699286099118817298430699433547211009079482595408740285359093432367204533672009970779486719368138866188648840163573708869681067182080546042978337057745453023016747935779322389017812077413454635572131138070447390064042098690495563990815384766717508180920795876792077075958862404761890064984999921424416035664890724207484476976948663181789371914701106962448405463092701988465606503300165084244328789019795067098840871060483436479149382772059422903723115301669510704882112896208019251794996975248024340609600192493149267102552688418448337310468569703642800278151785183841360284358832347643596421881526596665057964053827050804071884062288727904628572069704994983452228398970557246268968220658737939309295962851885135390864007109076454907858176227575944339250250806424963701992166486681083315296440885760692193722152386434371762373410590481977858473872297435270131851901627945492845960665561756900237380050320337739114937222692715636345829089022971742750975497841816680681521790589482652539674743477542852811800520246939928822189145763731846324657221289024648931687399148099267044885671733352094184536756797510551247165871717923549062099764463998166198147288178913216151413981763321707683229249020148234875195737760846468403561985525050842464738232714775172951842741929209903518935372911660933298610653450385567441423081564273457132625038138122267839275539394488317379385537074050425412207154034127084217300615381424425706034294800775550428346687417563346954606915929811701307971860847947436154534973614176016275979962289620596506204146325423963174288918311054000291798070696992896378237251211848896156990492511653866861708727175129743629232669035317239800711664336916352757273273019680964663040723297535426909582937904934585625428123881208162294614263698939436684681006337738069910841585236458607359914206604759267241756962489475530594581950179263984531751086934103867126900494224276800810684669857022045988157595957258035294079410835500711458127756501041160821464860452114868285466846677033681168740753966890869829905162812697068968738906495545558280538657098494992456740410755232449109163731371774089491724693292280219243313432709883187604627083249554581032445654578001281629105731324709943235755260023344512209169158809774752301507192585314852433760106795543790072985084166023044553539415733291732895468679601579454025049341590670709620736', -); -test( - macro, - '94906266', - 5678, - '12032817648505424732206470115984402822087851800458754279636201919240648069545320866560153680915753098175361305527571944284392752569770663535206811189003646879509578656245380134150984700793677615365069140988087774074093292666569225253766058544069550347050527174441848464033769865947958339935711577356378541412264423970226396093645375936214905159261610350242858917417274825574404844112579056015150088968297195170716956710849024033030314901530321313136125969347224049980779583582657176881341711446052030096202772974538698445525008118596374161589518848084436336526803665941965555491104046737440894040963947109593967956480178145670129677453883803551841426177253469183865084475725595826142523985262137749463269279257798034486481726137836527313367452357290671314328438612857618515953366030368261430360540763695870271485039165724885752553866509861096959097856524796407276935782076995718449804132659747765788304047343356811406221119007276554404855974610764195529043031625022180466201811329438874115924370207854394962989072466937684755950839558855381231468598531110161791599549283779948049180898253978038930131391965203934491358832834904237088198978460478436435260346993291323788040533668759476466237387161215852475434944660862309069972151382884427559495414208822804115701913705271785723745174681820409251541457004542480297333724163305849231905385022165131472866706690289906743159860846280981424473469229829927326830076613963484251270728729574503814307791762786013555601416538606549575141032711025523511415888723638864251522238403514209615257991112949184147400897053839753457149809381976922528684839893079020417567683858076689900826568207181631852815210327645775199600779525983840187855012090137702437886138818889991865427565806357553975294746020041388619646758784835829444515981357443648673117967946792507459637166782407266051469231502300232276219189698940875042523547644156383005262958119279161427467899540186226164668917413440447866544343462167108862890696625841719457545138663417647004060269444482339780740345497612893664834632640370620127200676855405941531569747479245411572674091251818894475403815473239183886002466157193530057684670655605573446847521994094849382549641374712884009164471656571372198449910168561787316766669347248358805643837182081303781837240736436136105361562692457596834668246060064085754181237451898863990804515605190388337710712867999191679779786712129894970664010407413944105206949638872966539657011251994137558113271215952893544638320085154429394938826746648785358611940674926917169614084840845838330085461611673093497785528104711054917591387941532664903919365872012413967652428893771254783514729383993987904033719641464047625904368835612214247748109590039950324488045520862407963337473558506985216736383673379753911040520601562793518299011996503309262568208883619152964120357680502143243237914460301562979082299253093538389428819917042632652200784610277098397358002737455993489830854317722387980601693621640290144850488960430945867613445370736462277356198969776749170074469142959139228103077704779948067569593268552335250360809034517777505978089487420438155196173015195413707500749188879413696451279508390758428449841376760780035529721795084992757493136169128293321086137318909063123039058397266188325938039949845723539644433753473294540228295834513955127390193735537175144046212555694020714759166871608060391688382739009845903946202459806666413942788393631458788321174919289511304789355666166018710631603596670860213317167734166889129692249373293565808930204157031991011885528221419033566927244666672894213270515941662085431325595906230594776340409294990273749504264542573465334640502232608314606771517369952134843645398223542989247175132652279714716937433111501880963356885109815217790196450752957228567594353774344623557404477791808889243706743536894781675724627289947304719225770725660654839527433954061516841146022327990899330817724998757824990111295998009049097615922407581255190739491092231346117657541300062685972295196237757295575969914209258890395384934110805224837375196790993957760232726873726409663790983348867817606845992238136671232375378383442128153562558993510087405303974930371982970935436148399729480315961683220510601978266384119209049691241779665749455934311999233053059017638411476295376290561801091208176239186699145687486729178616233651626665713543619439901912710580944645778155158797462852234495229231406539206472287577297378192253982740258520802032184319738335496087808027150192808403729360390814153726899607792522414861087778808864723924610633595805110618744865362177310122714818412795648247881041310195803062313215902474261741174952685814591966714305480767184438698736320248721848847642234552533028696642298731293921638337742568224929679203340715151738759154672955264904729487192815222409704216298143439170015879950939045057249309073969228984931579994969781518397426907617306970452320824844550818387028299796381307177696815835155244322539561008715495766453539759717077193466845576102664991398263517768253493037683951482880594999592487164043876965317780003505760527667863680438637377024026769527929551980088550989890140816338761108689882533404008958689956441208348099517790655163832888672441196339023333523558262873440940381150551323449813051211874782355328615332116487157592812281631495362815861059878771091573384226171301604486063550985885547526084873950124641753676687247950243102682512625690242813329639053488889144642576604385864315139668920318181435129690631047099936094981891064896430786909547908075022480142180945007023530760518540471631799916726591085967028615767603414815858484391191419226449103172750734862583321173181611826808717155895467441107144481818474820145538915123191086233889850661674240080442220814781759930155904531817862470486365345886110364369758405347228549431644962312521692584793216958186300617894642831369657323204177058526995631057099851113254417633669886363824556236862260831309128178167803213227296932516696703169947834651505156750711821678584827987720266958112228898408860533624224495113943886752312598411859670081240718595741432294942764857421091909115884148224555916194806655809926642996956901825501253612530105826618755517164012710830281242388235631527379824843157390117320858596018324726028114634513731910537333745080425512204214923714850269287802358237211241477533384595700504349352943037853153152826576013563379638817785556868194091209215931133480115980056464675106593427706835334947158188177836411830984886508981465689899139213351717298512840062197481925426346012965958263308687858310254839246643736356288094423514700890181531946170936255870492888090106543963957053638462537602324269379083493214926494662001476819723144975153483394390016211234911521305578087159665053195506910683427552629512701423004114557334590767201287380253575889880716924180835742565545587297372230588277744954790269429956487792324583964844408254629753937326834163368789921452639360922619001644423905992054827955523551707437217080870067136099865977482032198335037959434533270675522876697240093272437334734369226923188059535469846991641709332683658104575190444624146274210567461025953960170291512193215781838523322046313242892959796365884825784776849648185822682474064256026698235271594627736075157465861135739641700807125348820678293047370189781363932882694927128285410177891393529704049003357809736578523395638279194743744900566551317265479571829718951144370147604490513174682721505873577926782362538993812368812010097486662549501136198241341798084746545706437440426878375892211248824662555732459007737499801554781654267879320262704068105933519284285796739713621966126525083860893611057628869197088116263187425689411609090653720984344418988835030010895382016374020344833711823116640310985731777663607552620413465337138339866989132413420055538428253299998808303388845963185188581487436300195905101117842154869015140378602684126069213877902049366627282585389279538334206573795995374258165195704570108297045710018639586996443344402990380550529595121860257242747783754028054652596757584727739810928998066179549536463070344995795834380103032675101592624345721957432323326573571256893898028138781425679040966486628547984753574864434930008117523845237304478890899718331660641419486842158394473459007167484277217322766481893195761391938895623708651566392702159311537448090535583956495076752757058074862172390454533499093851240951296540985779357629233421157703016528130291156343737642593244088633852787614747817627060006991669568592280723672383298225466281340956636710431940328427911743530915134552931031391690006021236672575108176444082447291342833803642309708607039528118937917030486917866538554824932145847913873347906410715580065154707297637925304057208331186121542705437629918199561558440077780020149125928636524680160377906904253706618745984744483286494859496634897033537125257750234158366566522768726012073504864415325607039305152748943100533772051166644314150037384337861942612593701611683871218292642963890517076695142661403572711320388033047007398654918216722136161411678662937623850123091604556006551841441589614125921909593939770390437476075298171895573919863135651088828848336011726492799841320111649935389358931258373693459145057553136475922751342605359538155293383583876955561910069358749936951011082089615693841896629336961254394974036986721026940350856347077152772939451280308399363104652576626172429793776211333913295809413213919318285255196490381055544205313396583888277769550637211217647203529389040683316967313521879297011278503165986866646581137787534538214235999303080897442666172258679022325039014548620740672684311806497429047056530576223713193356973396804439208879107248745042555605441287111013049709202762299259851107012441701468738419926890133556245430056477998293002461917643271629591853938120614647619772495115562085600504853146424640985096824494050598829781714618733157799877227971474455616632639023850925729720213591779252776369176312110497936405970870772189359848240927140061006848080799072830556306659756678997694657936924990345096410314626570672149731543628000558026533834459167842889970614149005288838811229513837405392153251553605330473659867312295620005340633564023904208178972115034037935254190823029327420408002622341072381223538257497215682930180996569122652703053739471871654162569414951520531206458862671624276235522538318964461432849995356820683233465138675410827490596964352422796420736525862662409202276892082905745273014755041772993819374747043291676296825571338645605019288235828607460219104472171905393978286058711994994075946946904501719626129891297785262794903831823520324741271326470009925340248044413698893160087471101115598827156017322849926448246890250940872800969912833939106037661646340854638183562189382226457787900923987531877913431946108694947652717492923066187775746930063437977519195800521298729848366280723108648799156318978065768015360592367479405252285966318000015191998608772683676758058031311468294723167697582272502760859874036909801930740974001192058591430098287098021570441654592505727247768282011756726844525801256651444301950079120380718219338329468008534442846077685713544194007524327955071955226200530986913459845314710510719058167265959825133876149104200332459364223361260375456263610906578083438476313348490161343553564484692187424842603773823747426008609267536178919597384345623591288999415207111940819590820240164261067200326676758012794725260339664703418163303398007586421287243859016657962176274532712513078145376826038329107151236318002243613099209970831731135481008172826345298961517973963163916705165676097591487481466079223465813873607872273761995059993093591322303896613664321628779241192911035846341115545622374501606127977756985292882117778296500478276339993749813331078686903702537331445966445686036256887898585809843950252338373839157713280364698259134024338989451358780140559424371687870519586950515334379886144076554360694721608275939343734737390935610438901882220547279311828445041103639111103188607674601360722196695674871077543938123944828376247570522481733445127428507577252676752726828669296273888040688955392452214259080886549295627930544496374040482414174429554699068859457610531632589984450033487991393950194379605142460240622750964605904319347162317103632880464489765441781176775360255307983114046972917021261575999747919513175356289269738252254493902081778863456041493700800804759871388208118144666431845192191907729537903174959385672176640184810677326710369561461912187493932368918706337698762794615949381684820435117964874003383886204354335841513328726838198927086809536254198720567097588143419818644573075112705490751622292191492544793418111741658483532767411666600528233897824313428372479855025933866719301492980684042893544902172403475761202059963960896638007212043160771550410552889811065116740233744236032304871579001993160935959555347073311004243774883544443676731406104831265297661674183379974269379741288515676564618943733469021389351199332674318818115012130962124777380484159115171369334822744164229342075923978372260068788894241149239047819830879098322853736363606047921128478685310683095184709943048770806054769494926160412480736093641419077309213991679052703634396648375610853612922041643781461899880570131047760466065993555093987696077930050904841973329976985820417577209060155514571722895551726144444596204596782453047002156424345570004197583274416101355362390738881463523630967387072211376360805282936674787380880650737793203297867993622101141663905879536696169691639238866186158654641243673999077254707876292273024963076334728546666159776798341058364962760500123648903436613222992540337677988477671022338118694216304682423334130149852860681684099263517683335157344038308938179479603858917811593200169277994326389000742115999246806304045702432487140508819529399245059884575934708946209516322574789907597746226957553035886293114377154459544505608389208459380956440963140789343305699658278203986551812398932069405456026560759534279324948812804513062587167345623977971097453549344764469259507711376402428457076157055436430677764738886674081844106383742912023140510418552281742188746389236111863491148474361612517064934024896521322519834851151242772104556306598929440002152036519490819251376805450957184749544824693635603569605225972053841581004501584100912328333976003102107491085953159226069012834587327259971112025925123819947881840747175767809667062611411996051112013271091350150777864798314871955256044949338844757948457477116889094191094382540558054779516264683712607043026838398910328428087833751980730006443119069122334166099941402646601365567136347123203738359088947443981087204456279328714404539183793412240994826870342095392017313400572110318532747843060607288706258394994682842520556381575601014199010490404397191138445152855809707016425452959778664359588040560748735412597512323836013768239677434435239189168997928071347187463000837985697466045497488955639372562589230908251673255473804486520327695043897071532175037437036938183448706068445520270184271860267785443607757449987645862550853844492488331774133732177529596230056374085739368318799336491781716721031643253122590074871792724944404133795117394685504903169776472613579323786988436816555044871147023821295375315968422237070919604915553260798754019817204005435917338028778866898767783201988249690480208167510788846166868446591501548151404396048081597044050075742974387127512894683131544017091983972922897201447567071326201918658162425054687848305577141613831948331736546313547366384763806330342036329442085133559102820443474867650075586800703988545083847887658720938137520387462853564941611748541059186958982227681935894334481608643024722381659381938989731023292291485815605912701175709672139292877678190348729760666157907954715630362098750256936461038759071141133514628511273752727853532279858408268908582987443368819679334383388270166337798654040644855690261540077459818835228437887729301076041005381936867843411337332815350029407543350462675437781165812720616995958519407473614668214152449569347793047763581660230557418465248972034336442550080954052153006780131714480535397523095413274750723701383225842109411649460720870423187520888470553057940395347526767669497718524603967849112705432812547718499111843247323011841160686418751692868907882025078560674843768816179401584803887200747810776387544791913903025938435744852431951915576190055048231754367790804864233775987695188801541755557892125771674773775596365864929152862381755401283073853655055425091448611697016439954534260814030388938640509188143381711317813476900790628429257746511202468312957230036100116864480097621669013542313504580498125607583068356957065062879843861421422680449125994612477774818757161945326684776971564527300842862017927612360118968033138171953084120164381524148059624459163118084096733232992442581634862069037490046169948238393108530288105627559374357574375901411757444196980563141505220137571144388964279304678461638650126063683382309278978344376529180243251205221507357892280444330744741037298325319700933898637890602101615296398869580920345296280236271953557041411865760773333961802153204654733800918538855539998075391359632003872695291240543210415227135533202642183404859216781849310678370931836038236340074191979283348256435037626347573331738056630737544630627819667754832890022502410501605907042038148659166291897056811128443400490554763520515617080334010077029504407741614050704547796928760915765587321003086708428633478958994497231881728742148146582878333513294577932133195398397292515911616512890368305984393578729868207205694140862127741104528308067361504231110165275192585475375358000676577709244330704876174208560189889742189118009170492691256513264181013828227165086680711420434651576133518693155463307951273683890278139573807332751907304778544307753690835516724244324828301915566152584064392368154012296367388561296655115159377964858217285140994654349136595083503371058992673764518566714682145847493882822893394347204092233214651141128348419317600574953305420152824611858556704207679618775670228729011916634895546083736101005758230326310636673429185051800939052184453293132762586281584909086427718838454160054742974280328396661361347295963302563629881389597757395692922460506227719569272480843843963982294218088153904303273847479651330200041676283719440322315419856051041525940239722748989045813626337663435654703148317669134876847555469792411025033420364193061667681444556983341506990373187827551963387220108573965968914968862001608003924039023517819236072227063268657970009813282109838740945014605897718935027854417422516891716032864362714644753952562246051636958846719430334197522545309124095753712501839140881772202359462149006967535743381987382494199903798783450128864108137711379338678990406261945617986484478017729513417966059143295468448727905734551655932034516014732958476725736677666360745474765405553207731525120976743153206626090160055202221435671053558239271799027644260676893678561236876461169942483963790905593236778663204622182700607533615177816293194243328323059827764195754067310463910960166786833097658112569805863287752396504825639025116157475645847961748673868648985763576921316360028625597643145982378614155913337308072899028630354506317000731973048320498440559655009741229059616821075679153626408071146949434874870710442443607598092254881233946034011674932649197951588391079113646195367873645750872572676353074784800670128148448926212428049339412055475920927927064266795956572600200498190491828386978461485683642086665791764122916337004769909968407222832293743026188332895081447303907350456907104380292438133354568556580913923940135089837451503139566900151184776483065461722434703576835856162451903500950263460660059609102492532142956330352718793762144273337958725209863219465403332730360337994136681320539676141959170028609571573318264331511603324410628374361114137620410932826988141316635961417071437490827691742173260234374302730791524687955576187003866752766949337018264318503626167264228405496153334243531140332510516296899883807675047755079172377866058979779109219361302539854229267521185113459426964212674944243036359083834041693510700598946606285775592307909800370642066904336886030146957671455743670251078744477019985475848795376334708946576839355982663342271782974876971670099428998708971102417217050194310201496909274080129838572650933663158961486164318754012103629249337765151672364719569977796470263610483643241743081238512099346318125509126340730907301902331865609410500322101548902016145028474991172896518663299753954359738145858524256241079822888388025974877315851174825234099588922307983039849059328140405070220292462966857742931975247086268060742036088901447914159791901545682768198127862624633726084182944519076169341611788879344467332624457235181005489161468437468286277927595231710889035229963620976542808014437720825245958218422545401854965717001947936025069441351490369482405131546123008735270958799806732505582384557603513044063735545265173441077422655347016647100822557881227410017918031724818941284851218632476074548990913121757687254853114905647152161232816453294063938585231011698346476850219902049515565302989770984364797494877746871059691242951446947928616748412677311316689309276924328166978373287156127637754250091827262880001580912029087294416597708081303921574616792751138598416609282955474549781919323050366795607116559122995449444513824012921931191554790229338378408917767888764757481247942357523387981462036482918774775255481502617812032424350337757705134963581392988233010269239543026399000590407670292541798141931143957825519431024943808265104606375893000801021372156629170649936482063505577146268662962099488092098200661611049654157290575516049458547343584333829118330105341165469101287828518455011376471874002702126745604311883893741228949110274354393717306210252780458508823091743222111041747254441747473986354767554852139796930960587571954051842952106734815850369832317500044882713313649500485928442503705962330735475241650188479077738536979346401179945139932535355966728284296269303465382689387382904506131090629101374506641285879526447951961592499074899803465202603048622508966269246410248303951769201230670090880245754249900954768059240928580835677018471478117764727507460788000454066509256352049419001433619066501137325877958902450951248012775946853069206507022910965027828695344876662390444745223071764327986092164128821369419529923449745342622529520337107152499452702345241141322434371161845076945400253720116974932841155231559246404477495415318558856170762805541331599037682445748096007207307457259420504514213233031560297159337458934773052943897370160719593071005636639052337398910516328917458761997763791052147675868492052732846056244343846856562859110918170514850638431897116103962577287557650861624128410941073015672545799355272188821573142146157647220592136501403389440498405045979220449287529240951068425759059315541517416653195735778257997109940532355650068087437125593263015404801959966170854247359416368888999714143993665160871834991848566207054598521044690133585142761653289736942697455812090483602711809497731994035628689666322904923368824343322943897077533662696509093532125560433883239720615037830617553062569400982442551469212711958432874003095252511501251544368163946986793533762477996739664587856894977815882349958159300266076187992625866248371863178211081986479246265805496439281433789465210502472287353963749371542009248496304898171325225431490404443696275192260731587223678231773234700501786989060062073372663103468326762818735022839079304658268264383403675611385203208802610883443153396372155598085767531581987651375303196560138048749012301078065330371665264754684135929975327450958445710569685713002470385735812499009271125281912305498904570924803427650562790575789311044993863517834700777416970146268592915939173835339588498234255520467622101245918125290891960721252962341466913538814589814214723753781664749478425706364352461070224233708179564135246880492730639677674623872309076224196922090720446752424962016499908060928640446088590198190025780328393379622363600793252241003767266825105789787022775751765687273282872681784817235974474959304500106923652827770175776376057866784637584218919587715646859185759124581929407837290204615476399831255232642772149604749965883742550558896424909600890318701200878005426405783690223803023797534308676408970377177829432708888482899871770661919987560426133634342816194791652942901002649991930864509397547495136799464971411961885951448364705084776854218557154068032421447791593957493800552595011736497560627402048363722641737191562791467192752850831819871126942696603819688457632571061264341307436496659871052442884327358088521230434779757325515620881755317489614893979565115465466459134952019342787508889329177160466567164607203135727175727007576133217386625201585733132524102256267135974095667268967387808616588507490403645684015340306735062054190431238197422650374750608082120129477961774411707229963815811485877200700501734026677170462507781454324736384494629139100648590234634063450890873793218123159652262636940460561659812567660405111805037271771919133677053378340571763804818663579984080144826950600742568620996921074204543790255158895558727569627833033922369940173618424508834111810651656048535574444567986963711635689671493979686086392051590735412326987468072321026945906095052728783747681972245983868013037928884763904299129826301670561248217272709934758302637217436483609049259979017913572017677999917451517664593806401100830094206113930664869181230286977905241453163705128560161844356057897016629444587321825339889932073812247330853655199279654850681643123911145550445824784071197446536929226480929787125781620877835455757799725872429412183788180777229189273296533362017032457858813870135280647619436731981832381160911893129851064121020987511004669726225726728447523886592540185823062928562680797115677436491664945960425463840352618701257065715147975721913145513121975941816861627415802916250662475683313221460810083733560259082176304656979800876036280685013224264755601477814078188584904150365677219720532288211268983178369847544314641858955739505549156547927819249161988086454580912459896288180831839198694747159727783540431533139780840118503526092188395999937083438859471424422484895173339353662013418404633914278270531257635152842306416202901968927515006838776193126399890861893238570955140721902636602451481280533397113331997181668368168114113211417441091536660280740752073688197951869383500740801485250371189839664555255637862300294894725338807388545090253060968823072953675487974449697590292547112002691372243223615249165249747041660867764509155511159477802075808850762651193636610867311554992969899613510446151689019965900866044828778159525923906714414752885574464308524982926278589922516043567064422228451889411464404645562403027336145425521604775172340420217961207569279554941274837915390099345785110541869546066004279176509714969623554456015482986407451412652305793262123648552417609567710229212341687156454311883528279150390985919008321641915631234630542109381453293097771127251164835846456017032621220535159510911806712579812990017904201396748639648986580416830392353504059649048195263808560060144490097812861709892171321718078141652344634889987253449435365479232110959791057112787715767591956424199236727218939549730947807636035618617124214592974632640888278642920646150269913678711900700105591753932021927544248495416598915245127805617973028286807341594473386206410511414428389049099794186454102765796914905933255458663787331998410234134210186357410895835541247415216366309533445597853759036910747535179357644751896549954802762133472758890605527381638477541022802894735646799360073180253868675653146890507692412609328780793399715860489456638327779713788516054313521050756108383748787190630773384260645245277015038626404267544599526329137987727604904731562738505220497843816310101861170621100872755427778464809073169584368881349788891479628643600529445515580370114613383736664314978973619136220173478287784163951945648158666739841536848953175419910538486514713806203315648665785618237610350582300314779025897090284284080969250933457877228872443367222249154142248644276474288044127432827952859178595732895202190015471726020796066245204963376906354394976290239211712022794927835141158864526574570946923047666699485949903120984263356978168759479817623935013795014196775910220111958690782426346191285770042525098984695899814199136259926824361465285823048578317155487790775485313929046655222874042698387928987865423117119839944817973165334672655644240394784576751152259628370824434663024024418575011518490382064521827913667162089667112747753535124207783675418967511974700275667309012046788487060329223754816307592779170924531501164340119876000139327544408024106973184674625473383812276564724893335841539005571654820183265759775079589751747626589104877587523415006319142401438844584683685256184472651725051979384269512266601971450685653366718533020065953355981712508860345534161752796241189385496331101145400268056092980486470369444513019881534614061799341395392897417347975110433595794498856720510672308772750213294104276272132667497463492787282710357371813082428478468377819129538727211815622333666816660354583565438907819881292081303387043386670876926764469958036489231885191131050114302131977936474847279924851923137714263077854243985023606988127523596289821331500111059950584764623037107983656960989438380956968393260575271072778863957365450795572899629582643385628639710611546711708409238271955614736601631291370395060012833231421354443797341554577170376506036564132217557077652411894117329603768900109332749511859736210742285027560130448468034446432758727729638990040491574996250063104797738677059556962784396811723371443252662772605997510646452758982125426031044458649357552995121303204693338942472794723310009789920455359278131277695870668310315876389946031424494549763773146136063430889417701887448847015328003015451499112860909942403248329916941358489871131665319203260702546158995642204910162911659670018116940727018797217171686323023556118323193198342370803796953278053782977187454671829418430921721985095232819212480102940486000736338657164939674716847410850866338919788038362565117722358348690989096737227059283378387520150072310475969531030512284930329368248541131113766926569221020923296593566377299675247629189109056398144800021591742635347744703956072123890797151089046108298526010507197557242777201909634714422471270603537857950184437259093361956113283048564569574122170292703201825073022983566835511332308338851334507372273081202885655714787807833951944184851958437229989794757451452736941245634812065844048175235449024407397606058411010621436622691612507865446029785762584964939590202876090478392978007566584355372687291804000734909051848660440791202433127588453190203200783903284912792280548420676834695155901857566765932088926634171356382407121102180333281700812579308596278561884268236429082157465746397088329202574170766452511505505609003041124950089258440827042552762430618486885201276510552341532342351164734524285396714462005001978788690975960312082731929333386050252112006807345880064713266643891024391700346350471880262858040712474770262634884317585612572195523131314179386278947285577465324615711086122333531902738278585784646020600313701514942125391959071309667102965885213697839889156290939743771636780743647494786980566347580750783699119643179162204062000548787439490012304199473697303589997900840621652874808426421326071990248127528436949608115779005494179734937511431781806145857785045035166485825750634750296960306410410179563289780730826789234509202931820390586826950654104129396809093876099264731036820798174964438055115624044199738101662825807851197445426685021856220844261848759266200674656511060029362486031624820819678918152181355926111923461166345822665086176145950743789341584980812952752231860843257985965288802261190266665922655937859396637134691957840093532444525473306658768602008060074798781369928554199058085681741549030727173827517234927484381244144270371887360574934364399214113609316363985218988683805111173090608023338304021000410004993333783004263450282560060958459050745590194592895933947062092079507573081523402757767724788144449830636192589330164576778830549052766661774876685632674136307814153444590770266999239828355457576813955421195065159397418434372715876860476997930972151568408519046320497117726447903332629934498123201460718775034315147902361476205883702162559670339483592737874161365824447049081019047867077729938161516575462820068029800463721563526770860295002450363435919771658499908957051051713169210155056685711478948292601652283703664279729412723327993385676972068945177529247890734902739568992396004082005895239640239584914895675194441732990455908284962508388272481664809644013695108530643590237328537639688567194704667459259852194847009346130261141412179411299994375826249494565666674099752312940749960678432841327379608811354294970105991967067932527833097758928415762643944723789054971807292766811411062804902336531718448905647640615296706335520835436041593386648611858094071235308269292644418143791110200993361422914793119640919331990182443330345380585754214640238824260774995215366915341497235208474057031765422776345411042327893101949992571577825558691897895422945443680380208657578495349595586606235401227143323363094432958840171215550050203924175856785197077586124718868813101246599573589030798669834807255201536300814627715056943239448585159116823195136012406495891984611338805585159868346247052637564031114665756371321951326231045738075829116360629934323624216434728253094934162532761445177538547165024471725562255682921126585840210275028026032072889156454737530566706272562834758199753126146886585122828302440171763025247744940890748240827209734322451822354861070551316853275578081420600654807730862579379336164296300651251035620903073641444759072951433003329108395228654468968443998724991943750648399825412774577834064138787246298154005871653201690041161564805619094094950177728315165333892502449398614595846310753261175601850635807705775203998921942871973931019055845469784764447913903988508253744480825540367906677867871057567478493188656741810436755808948879038430592843598118575241573451984420451874438273802788249941071249303464372879792957737080283657705694830680260355087766018017548240826889393233567613079361639516134438559058561470248595710630583243521624876087878849326799727058325744525127686358697175227126042729704763198212221500110961927927031953451726345983879650304506115735253749823992717894744913635383053788207368902228723257035589214660773099731574328578894614609958412257841707173544840654053687963529161718339377820673974804275660397594495763320761934541624154607081082091431381630887662852444276208094195753892541482888964133078632756060019952316521890141964819830541862502886279942861929515434864567266354539499955976735355894393495991004445955069390234829281284926336527704287398385545271066278910515123558177655155124804872688188708038652699563430158718539676417362165324740950301161676147226987091336686975730078772316774484804082212792921345388911884307584665906933970070288913666161767306556816492529686126542330576930427952309859851945687695616787391724886208606078219586577521157997471925755521830252778574776276558662045076936010197431001405073169538271205697390441457933908374685337544753066892359751986805458682161120599250577029450471790531116688637592044725816809350715401468061886209608998308808761053155925047485763330982810135796784437153235684378855933935608225979566539014908874229318867856908106633416008188397781368955225608754496472366002973989622781331076327936906421333836156329940767987829949219414282739937552368742050095369670510834581278968845142676270307586970560344050293627832921967047772968940770231187440894414891611957992234348384361908134992564366682665696510978419367665490400052255968546785818638881481409824051219338973454619317589006191281840488521392932267525779747925510077945960279398495734167739330399574628957203655424637187995438121309889157318399563297897718347938915006476879059728332276590034174776666804805807585137415933903539371546508657211772037063013142093943376911484717585548985036753668986990778732349370860695937442389869679255309585195314500199898018163496806602205369815418049524140539038443752983715573321216713716303309876573223472073494658660387196143966238355254434272031875166654429112534708035265585042313178039140504966786200157779032253018379775395031624177802409362800776274088937204606438009792960229334141357316853027529326270934813060617513040349194939506111829667596679721724554842338458197057324866302813949134291966549465895240393949176765935059682165276533388253260395177273452448414734481084363051946017495590145528378728694589718770632641502417259843086559611204202453814610339462803726715365311373975645333786896813006476033470456391277472796397664318741782445580539265623629643719879907041630801149589490342214249683643075413638713825740975202255710524519005628410890292248754754939152754157107953000785347651731062707781298031248059008088083511571893341447743035315052308357772390705357815401965655229378522974863831081531326498095411458206016343526704502197334552693425313951442693600699979416793419044571047950054591933973470783926474430571876070606494546076496652235432486913277445868254001418092467524424087719936981330245844189018050669626927477561635971967675947936667840573264315222817706208841363096504161459299455789615473844664822043191643886065072888244114235145369904453860898233956764637008735231406874585372559803108174040402975992668970470323458706663340829004120177247777909390407650943557103557176164798280730176947885600023350422406684015217003439639897364954618944020288720946937413542886098604075227026482788702174057857719036625711012261058982176805769679934893705049041439972935657555686872759565537429136163222780629831139827737682328273538007173604361766686339194080863757502388242360541635097206494291599132259373964992477759699130503679859467387685858969458881363954404384016848950761974795313353392698993567078740170008504367063192312102584020548165945222524105239691877251826775214235888083623030633684703867930130650125295968428623742677462191715457239299389032287069336032372302828098382506936703358757555827103340491155787211743066715263418577384309801993728612813203556766993754656540038816495840381520797028440484282254884632112821925210033546824602794396854826423202843726689970480869195071650949154727258460224485143154709172855637969394753939537534842454461823870448127360033316087549390339491932603424096663377705656553981384251344651715053403923964417851970419752086799349480032265992581424000705801737101791445964258963875786190924396690033057790178748531407381054411659092462411237526877645210411022521678216396060020924621034172725054413396654304600511543838181495559908429007654906632941883397253075597857634654462449755501594356663254192887988476758127961551318345779438588059118960711018114915926214069348039421926460721297822408069255012690250178221901583499188663372994201653644081755046119923887957198992066054340294114974546071159657605660183300202102344309467802093991861862965216891368515339833603657760186751215707978850910662690444513903724718434232835066662847876807387275374320546636913075891542321272611108399646743762333862252602882930547232324311990485665318593042026396489306780598510984447945017700408320977028919172057048382181924135570226760960898139417290817645998917756855185172967724992933123052909118247462398492666928951967247431522756106437050491531797002473836449419068540277472068963138393177448233961148030322348372301545504016732072510497336139578845609651207819365400056853303027235062359420018098760449076899084941741369357339039371012080828320780934162749276755522409809098153174862234168142466848375913203535996417859932173938627851656219636450621416451865792169471928789091851626456347026830292184338577370915000158169528450080894744186642838772985819834529563611933373632440708524703027899883434677586606441445529530405836184308602571764765354456106254643446906140012957381572512463660138820345199166078432074790037248546139205726353557158090656959024185745345956546890947422882539337183883406929169297400044137877815260349485959875657881972792337911693367611917919131915027920557706737769810315715359926487713855353321793871564010753738106086321230546595044476485010200470235649943642098272637082343166210803794993910337605136239806876905139720151979070575500255076889855737572108112919425325518445248006933632368025157148533351689787936121880720836116653840743617415571493745387797691042574418704937861768435997110148267844022966899508273305125680545431462825242960113760480968529000760808009707472576440561766071700939806743526995640583592236944120793230124851216017592161718568695361629331621064836815339177400421921220156618102527651553489597482005681543009594232948075392858721451225712296026349598054076571694498983982619415761813379326410749885515537518666751789095081260226732887008501369033072022423311241991556050372244766164397155244356247926874588767338935163683327933554702277547935287703755133035368418595728953591127644725043878325718984441974471692217612825126396314128770579712175562666092567978624210753782825275802681456221191328149519567354816438303073809218496633499815268520022429717046018825658842467015385712669468265707555696525948903227914864246346468870618605734062682911322413808861525616756567945364657325139882917475692209277183304968538734947428728388582797185751925085125363729075173796643775804671009928949220293268670456975658752584332903400349503949011586021175082326448210272758388252815782194585442203117090992668634959462750022443452546012055002758055127454792702255890205631701275211122693794920290417833369691631162589900706279105985583858392017695508708913053733434385675958920310284847781339811291863191093386084475914087239356382800972352347223372355619360570354411451544244307940032823148529609638296958288902010391872278763245256372127500248817419151015466871343223054572424151488837160849087690844793830186151432135847711240614541446439183938044066695316622116741046472939622004638961665608819717101930135624767270181741989733125492003140924411241153224900070754907516184957543551611208022204023968376636880451822691297708293688894074998217185540931850449663735709971989960908519813174658217406440733137654410084264390199313344416298280201059159586221741529060546858446825609039282323617534880583845852642034407748295813317970457691956263225675641685811512670217066518907796204233575773817564814095574905621916350619556603859001230105241016047652273704404479564336649968708539745125105915160022240368627482259079202336430778070946622175011973214230565495684814465576107906033710595350568611341645767396110859401880245617579689883266256409894693280104365291970684730005887925438391662019569596571533373614115187189312356643389006800187024689032302797342271128282171799878713212117329036060371547786892810406560993783700207922558468011335587906261901093629494719347614610784908347727972664981060886160896302867201510015108566161825129634975425024272081557002265941815391290337945136518047397974376034831138219062938133831604578871761305972624279786410979461568839594456833208172319195856872204542603316087926558321489377543723491132201816700479397540948217989075370768230671731249702531673564543406062253586483721876364885815656468440728188332621030006260484399864535626813077449518708844252479808421884652431126530875716970356579193081754594545979226680522690302736699184607929615623142663354132052863597405323796639870431453066308061197943832308479553993128427148101202879692518240366933913835269757022542403389041102563931777385856395150760422381552306943437155154770876052232484595793376372779715779096638669304485249549423986081793893310670696881891161170144901546778001550049111602186286345163199534989815372560517348564641269606632792272652115204168983118001639477232503487517975266466538605885310375386323449185231709798124778365598533541593980958124433491037239259424061787818955206789639301137224039378855362946151869759563140264720906997750013611877360612394880182302599632772460731913224265247765843851870907483675299829361720529022209380906861000458689821676603902075564791012594713699959332168445898305343858211764958004751287406251595999467293204674470870715167851421656776355939143657993736347249925156645471605043233097281630642396809038021750687833536173404097614118680059037340312341605883455235067338752800787033133391707487966849528493075647320868840934380554883195960251773502083727624240339456212211925683490737454112277877641954542607470029658579411795883383494012636284071606370192505278671353911009904407560251382987723241502706898676119014622076654875776162540892477299357715761700750960446391506332058899436675190871956939800022687432780180818392178709073123353331373011315965680280896735755650091675680722007667153708728485188186965653450591919415129897772500704531083484204256009802043625565542287774299566636078316295125113411325583706020566573294986977164698547137703200443022008505653377365378947288543862725055911788727943036314460020086504429170778872386381956215475209306444914466262735267509651875004139279370893320240127688827675054296294093093354920744403327434214120799757340314496705538078219995180518082515428583740839433883842984823268317117814453641785347046845620463915826027190815790559731433923858312882529042132987246860789417898096245935117545754705002593969747758470845487352156660639391962457416095124403612942059946284579486042861317902103275464677157584106545775551518446983441064825708631574744541847215534147110002165755331087323942894411304556036096', -); -test( - macro, - '-94906266', - 5678, - '12032817648505424732206470115984402822087851800458754279636201919240648069545320866560153680915753098175361305527571944284392752569770663535206811189003646879509578656245380134150984700793677615365069140988087774074093292666569225253766058544069550347050527174441848464033769865947958339935711577356378541412264423970226396093645375936214905159261610350242858917417274825574404844112579056015150088968297195170716956710849024033030314901530321313136125969347224049980779583582657176881341711446052030096202772974538698445525008118596374161589518848084436336526803665941965555491104046737440894040963947109593967956480178145670129677453883803551841426177253469183865084475725595826142523985262137749463269279257798034486481726137836527313367452357290671314328438612857618515953366030368261430360540763695870271485039165724885752553866509861096959097856524796407276935782076995718449804132659747765788304047343356811406221119007276554404855974610764195529043031625022180466201811329438874115924370207854394962989072466937684755950839558855381231468598531110161791599549283779948049180898253978038930131391965203934491358832834904237088198978460478436435260346993291323788040533668759476466237387161215852475434944660862309069972151382884427559495414208822804115701913705271785723745174681820409251541457004542480297333724163305849231905385022165131472866706690289906743159860846280981424473469229829927326830076613963484251270728729574503814307791762786013555601416538606549575141032711025523511415888723638864251522238403514209615257991112949184147400897053839753457149809381976922528684839893079020417567683858076689900826568207181631852815210327645775199600779525983840187855012090137702437886138818889991865427565806357553975294746020041388619646758784835829444515981357443648673117967946792507459637166782407266051469231502300232276219189698940875042523547644156383005262958119279161427467899540186226164668917413440447866544343462167108862890696625841719457545138663417647004060269444482339780740345497612893664834632640370620127200676855405941531569747479245411572674091251818894475403815473239183886002466157193530057684670655605573446847521994094849382549641374712884009164471656571372198449910168561787316766669347248358805643837182081303781837240736436136105361562692457596834668246060064085754181237451898863990804515605190388337710712867999191679779786712129894970664010407413944105206949638872966539657011251994137558113271215952893544638320085154429394938826746648785358611940674926917169614084840845838330085461611673093497785528104711054917591387941532664903919365872012413967652428893771254783514729383993987904033719641464047625904368835612214247748109590039950324488045520862407963337473558506985216736383673379753911040520601562793518299011996503309262568208883619152964120357680502143243237914460301562979082299253093538389428819917042632652200784610277098397358002737455993489830854317722387980601693621640290144850488960430945867613445370736462277356198969776749170074469142959139228103077704779948067569593268552335250360809034517777505978089487420438155196173015195413707500749188879413696451279508390758428449841376760780035529721795084992757493136169128293321086137318909063123039058397266188325938039949845723539644433753473294540228295834513955127390193735537175144046212555694020714759166871608060391688382739009845903946202459806666413942788393631458788321174919289511304789355666166018710631603596670860213317167734166889129692249373293565808930204157031991011885528221419033566927244666672894213270515941662085431325595906230594776340409294990273749504264542573465334640502232608314606771517369952134843645398223542989247175132652279714716937433111501880963356885109815217790196450752957228567594353774344623557404477791808889243706743536894781675724627289947304719225770725660654839527433954061516841146022327990899330817724998757824990111295998009049097615922407581255190739491092231346117657541300062685972295196237757295575969914209258890395384934110805224837375196790993957760232726873726409663790983348867817606845992238136671232375378383442128153562558993510087405303974930371982970935436148399729480315961683220510601978266384119209049691241779665749455934311999233053059017638411476295376290561801091208176239186699145687486729178616233651626665713543619439901912710580944645778155158797462852234495229231406539206472287577297378192253982740258520802032184319738335496087808027150192808403729360390814153726899607792522414861087778808864723924610633595805110618744865362177310122714818412795648247881041310195803062313215902474261741174952685814591966714305480767184438698736320248721848847642234552533028696642298731293921638337742568224929679203340715151738759154672955264904729487192815222409704216298143439170015879950939045057249309073969228984931579994969781518397426907617306970452320824844550818387028299796381307177696815835155244322539561008715495766453539759717077193466845576102664991398263517768253493037683951482880594999592487164043876965317780003505760527667863680438637377024026769527929551980088550989890140816338761108689882533404008958689956441208348099517790655163832888672441196339023333523558262873440940381150551323449813051211874782355328615332116487157592812281631495362815861059878771091573384226171301604486063550985885547526084873950124641753676687247950243102682512625690242813329639053488889144642576604385864315139668920318181435129690631047099936094981891064896430786909547908075022480142180945007023530760518540471631799916726591085967028615767603414815858484391191419226449103172750734862583321173181611826808717155895467441107144481818474820145538915123191086233889850661674240080442220814781759930155904531817862470486365345886110364369758405347228549431644962312521692584793216958186300617894642831369657323204177058526995631057099851113254417633669886363824556236862260831309128178167803213227296932516696703169947834651505156750711821678584827987720266958112228898408860533624224495113943886752312598411859670081240718595741432294942764857421091909115884148224555916194806655809926642996956901825501253612530105826618755517164012710830281242388235631527379824843157390117320858596018324726028114634513731910537333745080425512204214923714850269287802358237211241477533384595700504349352943037853153152826576013563379638817785556868194091209215931133480115980056464675106593427706835334947158188177836411830984886508981465689899139213351717298512840062197481925426346012965958263308687858310254839246643736356288094423514700890181531946170936255870492888090106543963957053638462537602324269379083493214926494662001476819723144975153483394390016211234911521305578087159665053195506910683427552629512701423004114557334590767201287380253575889880716924180835742565545587297372230588277744954790269429956487792324583964844408254629753937326834163368789921452639360922619001644423905992054827955523551707437217080870067136099865977482032198335037959434533270675522876697240093272437334734369226923188059535469846991641709332683658104575190444624146274210567461025953960170291512193215781838523322046313242892959796365884825784776849648185822682474064256026698235271594627736075157465861135739641700807125348820678293047370189781363932882694927128285410177891393529704049003357809736578523395638279194743744900566551317265479571829718951144370147604490513174682721505873577926782362538993812368812010097486662549501136198241341798084746545706437440426878375892211248824662555732459007737499801554781654267879320262704068105933519284285796739713621966126525083860893611057628869197088116263187425689411609090653720984344418988835030010895382016374020344833711823116640310985731777663607552620413465337138339866989132413420055538428253299998808303388845963185188581487436300195905101117842154869015140378602684126069213877902049366627282585389279538334206573795995374258165195704570108297045710018639586996443344402990380550529595121860257242747783754028054652596757584727739810928998066179549536463070344995795834380103032675101592624345721957432323326573571256893898028138781425679040966486628547984753574864434930008117523845237304478890899718331660641419486842158394473459007167484277217322766481893195761391938895623708651566392702159311537448090535583956495076752757058074862172390454533499093851240951296540985779357629233421157703016528130291156343737642593244088633852787614747817627060006991669568592280723672383298225466281340956636710431940328427911743530915134552931031391690006021236672575108176444082447291342833803642309708607039528118937917030486917866538554824932145847913873347906410715580065154707297637925304057208331186121542705437629918199561558440077780020149125928636524680160377906904253706618745984744483286494859496634897033537125257750234158366566522768726012073504864415325607039305152748943100533772051166644314150037384337861942612593701611683871218292642963890517076695142661403572711320388033047007398654918216722136161411678662937623850123091604556006551841441589614125921909593939770390437476075298171895573919863135651088828848336011726492799841320111649935389358931258373693459145057553136475922751342605359538155293383583876955561910069358749936951011082089615693841896629336961254394974036986721026940350856347077152772939451280308399363104652576626172429793776211333913295809413213919318285255196490381055544205313396583888277769550637211217647203529389040683316967313521879297011278503165986866646581137787534538214235999303080897442666172258679022325039014548620740672684311806497429047056530576223713193356973396804439208879107248745042555605441287111013049709202762299259851107012441701468738419926890133556245430056477998293002461917643271629591853938120614647619772495115562085600504853146424640985096824494050598829781714618733157799877227971474455616632639023850925729720213591779252776369176312110497936405970870772189359848240927140061006848080799072830556306659756678997694657936924990345096410314626570672149731543628000558026533834459167842889970614149005288838811229513837405392153251553605330473659867312295620005340633564023904208178972115034037935254190823029327420408002622341072381223538257497215682930180996569122652703053739471871654162569414951520531206458862671624276235522538318964461432849995356820683233465138675410827490596964352422796420736525862662409202276892082905745273014755041772993819374747043291676296825571338645605019288235828607460219104472171905393978286058711994994075946946904501719626129891297785262794903831823520324741271326470009925340248044413698893160087471101115598827156017322849926448246890250940872800969912833939106037661646340854638183562189382226457787900923987531877913431946108694947652717492923066187775746930063437977519195800521298729848366280723108648799156318978065768015360592367479405252285966318000015191998608772683676758058031311468294723167697582272502760859874036909801930740974001192058591430098287098021570441654592505727247768282011756726844525801256651444301950079120380718219338329468008534442846077685713544194007524327955071955226200530986913459845314710510719058167265959825133876149104200332459364223361260375456263610906578083438476313348490161343553564484692187424842603773823747426008609267536178919597384345623591288999415207111940819590820240164261067200326676758012794725260339664703418163303398007586421287243859016657962176274532712513078145376826038329107151236318002243613099209970831731135481008172826345298961517973963163916705165676097591487481466079223465813873607872273761995059993093591322303896613664321628779241192911035846341115545622374501606127977756985292882117778296500478276339993749813331078686903702537331445966445686036256887898585809843950252338373839157713280364698259134024338989451358780140559424371687870519586950515334379886144076554360694721608275939343734737390935610438901882220547279311828445041103639111103188607674601360722196695674871077543938123944828376247570522481733445127428507577252676752726828669296273888040688955392452214259080886549295627930544496374040482414174429554699068859457610531632589984450033487991393950194379605142460240622750964605904319347162317103632880464489765441781176775360255307983114046972917021261575999747919513175356289269738252254493902081778863456041493700800804759871388208118144666431845192191907729537903174959385672176640184810677326710369561461912187493932368918706337698762794615949381684820435117964874003383886204354335841513328726838198927086809536254198720567097588143419818644573075112705490751622292191492544793418111741658483532767411666600528233897824313428372479855025933866719301492980684042893544902172403475761202059963960896638007212043160771550410552889811065116740233744236032304871579001993160935959555347073311004243774883544443676731406104831265297661674183379974269379741288515676564618943733469021389351199332674318818115012130962124777380484159115171369334822744164229342075923978372260068788894241149239047819830879098322853736363606047921128478685310683095184709943048770806054769494926160412480736093641419077309213991679052703634396648375610853612922041643781461899880570131047760466065993555093987696077930050904841973329976985820417577209060155514571722895551726144444596204596782453047002156424345570004197583274416101355362390738881463523630967387072211376360805282936674787380880650737793203297867993622101141663905879536696169691639238866186158654641243673999077254707876292273024963076334728546666159776798341058364962760500123648903436613222992540337677988477671022338118694216304682423334130149852860681684099263517683335157344038308938179479603858917811593200169277994326389000742115999246806304045702432487140508819529399245059884575934708946209516322574789907597746226957553035886293114377154459544505608389208459380956440963140789343305699658278203986551812398932069405456026560759534279324948812804513062587167345623977971097453549344764469259507711376402428457076157055436430677764738886674081844106383742912023140510418552281742188746389236111863491148474361612517064934024896521322519834851151242772104556306598929440002152036519490819251376805450957184749544824693635603569605225972053841581004501584100912328333976003102107491085953159226069012834587327259971112025925123819947881840747175767809667062611411996051112013271091350150777864798314871955256044949338844757948457477116889094191094382540558054779516264683712607043026838398910328428087833751980730006443119069122334166099941402646601365567136347123203738359088947443981087204456279328714404539183793412240994826870342095392017313400572110318532747843060607288706258394994682842520556381575601014199010490404397191138445152855809707016425452959778664359588040560748735412597512323836013768239677434435239189168997928071347187463000837985697466045497488955639372562589230908251673255473804486520327695043897071532175037437036938183448706068445520270184271860267785443607757449987645862550853844492488331774133732177529596230056374085739368318799336491781716721031643253122590074871792724944404133795117394685504903169776472613579323786988436816555044871147023821295375315968422237070919604915553260798754019817204005435917338028778866898767783201988249690480208167510788846166868446591501548151404396048081597044050075742974387127512894683131544017091983972922897201447567071326201918658162425054687848305577141613831948331736546313547366384763806330342036329442085133559102820443474867650075586800703988545083847887658720938137520387462853564941611748541059186958982227681935894334481608643024722381659381938989731023292291485815605912701175709672139292877678190348729760666157907954715630362098750256936461038759071141133514628511273752727853532279858408268908582987443368819679334383388270166337798654040644855690261540077459818835228437887729301076041005381936867843411337332815350029407543350462675437781165812720616995958519407473614668214152449569347793047763581660230557418465248972034336442550080954052153006780131714480535397523095413274750723701383225842109411649460720870423187520888470553057940395347526767669497718524603967849112705432812547718499111843247323011841160686418751692868907882025078560674843768816179401584803887200747810776387544791913903025938435744852431951915576190055048231754367790804864233775987695188801541755557892125771674773775596365864929152862381755401283073853655055425091448611697016439954534260814030388938640509188143381711317813476900790628429257746511202468312957230036100116864480097621669013542313504580498125607583068356957065062879843861421422680449125994612477774818757161945326684776971564527300842862017927612360118968033138171953084120164381524148059624459163118084096733232992442581634862069037490046169948238393108530288105627559374357574375901411757444196980563141505220137571144388964279304678461638650126063683382309278978344376529180243251205221507357892280444330744741037298325319700933898637890602101615296398869580920345296280236271953557041411865760773333961802153204654733800918538855539998075391359632003872695291240543210415227135533202642183404859216781849310678370931836038236340074191979283348256435037626347573331738056630737544630627819667754832890022502410501605907042038148659166291897056811128443400490554763520515617080334010077029504407741614050704547796928760915765587321003086708428633478958994497231881728742148146582878333513294577932133195398397292515911616512890368305984393578729868207205694140862127741104528308067361504231110165275192585475375358000676577709244330704876174208560189889742189118009170492691256513264181013828227165086680711420434651576133518693155463307951273683890278139573807332751907304778544307753690835516724244324828301915566152584064392368154012296367388561296655115159377964858217285140994654349136595083503371058992673764518566714682145847493882822893394347204092233214651141128348419317600574953305420152824611858556704207679618775670228729011916634895546083736101005758230326310636673429185051800939052184453293132762586281584909086427718838454160054742974280328396661361347295963302563629881389597757395692922460506227719569272480843843963982294218088153904303273847479651330200041676283719440322315419856051041525940239722748989045813626337663435654703148317669134876847555469792411025033420364193061667681444556983341506990373187827551963387220108573965968914968862001608003924039023517819236072227063268657970009813282109838740945014605897718935027854417422516891716032864362714644753952562246051636958846719430334197522545309124095753712501839140881772202359462149006967535743381987382494199903798783450128864108137711379338678990406261945617986484478017729513417966059143295468448727905734551655932034516014732958476725736677666360745474765405553207731525120976743153206626090160055202221435671053558239271799027644260676893678561236876461169942483963790905593236778663204622182700607533615177816293194243328323059827764195754067310463910960166786833097658112569805863287752396504825639025116157475645847961748673868648985763576921316360028625597643145982378614155913337308072899028630354506317000731973048320498440559655009741229059616821075679153626408071146949434874870710442443607598092254881233946034011674932649197951588391079113646195367873645750872572676353074784800670128148448926212428049339412055475920927927064266795956572600200498190491828386978461485683642086665791764122916337004769909968407222832293743026188332895081447303907350456907104380292438133354568556580913923940135089837451503139566900151184776483065461722434703576835856162451903500950263460660059609102492532142956330352718793762144273337958725209863219465403332730360337994136681320539676141959170028609571573318264331511603324410628374361114137620410932826988141316635961417071437490827691742173260234374302730791524687955576187003866752766949337018264318503626167264228405496153334243531140332510516296899883807675047755079172377866058979779109219361302539854229267521185113459426964212674944243036359083834041693510700598946606285775592307909800370642066904336886030146957671455743670251078744477019985475848795376334708946576839355982663342271782974876971670099428998708971102417217050194310201496909274080129838572650933663158961486164318754012103629249337765151672364719569977796470263610483643241743081238512099346318125509126340730907301902331865609410500322101548902016145028474991172896518663299753954359738145858524256241079822888388025974877315851174825234099588922307983039849059328140405070220292462966857742931975247086268060742036088901447914159791901545682768198127862624633726084182944519076169341611788879344467332624457235181005489161468437468286277927595231710889035229963620976542808014437720825245958218422545401854965717001947936025069441351490369482405131546123008735270958799806732505582384557603513044063735545265173441077422655347016647100822557881227410017918031724818941284851218632476074548990913121757687254853114905647152161232816453294063938585231011698346476850219902049515565302989770984364797494877746871059691242951446947928616748412677311316689309276924328166978373287156127637754250091827262880001580912029087294416597708081303921574616792751138598416609282955474549781919323050366795607116559122995449444513824012921931191554790229338378408917767888764757481247942357523387981462036482918774775255481502617812032424350337757705134963581392988233010269239543026399000590407670292541798141931143957825519431024943808265104606375893000801021372156629170649936482063505577146268662962099488092098200661611049654157290575516049458547343584333829118330105341165469101287828518455011376471874002702126745604311883893741228949110274354393717306210252780458508823091743222111041747254441747473986354767554852139796930960587571954051842952106734815850369832317500044882713313649500485928442503705962330735475241650188479077738536979346401179945139932535355966728284296269303465382689387382904506131090629101374506641285879526447951961592499074899803465202603048622508966269246410248303951769201230670090880245754249900954768059240928580835677018471478117764727507460788000454066509256352049419001433619066501137325877958902450951248012775946853069206507022910965027828695344876662390444745223071764327986092164128821369419529923449745342622529520337107152499452702345241141322434371161845076945400253720116974932841155231559246404477495415318558856170762805541331599037682445748096007207307457259420504514213233031560297159337458934773052943897370160719593071005636639052337398910516328917458761997763791052147675868492052732846056244343846856562859110918170514850638431897116103962577287557650861624128410941073015672545799355272188821573142146157647220592136501403389440498405045979220449287529240951068425759059315541517416653195735778257997109940532355650068087437125593263015404801959966170854247359416368888999714143993665160871834991848566207054598521044690133585142761653289736942697455812090483602711809497731994035628689666322904923368824343322943897077533662696509093532125560433883239720615037830617553062569400982442551469212711958432874003095252511501251544368163946986793533762477996739664587856894977815882349958159300266076187992625866248371863178211081986479246265805496439281433789465210502472287353963749371542009248496304898171325225431490404443696275192260731587223678231773234700501786989060062073372663103468326762818735022839079304658268264383403675611385203208802610883443153396372155598085767531581987651375303196560138048749012301078065330371665264754684135929975327450958445710569685713002470385735812499009271125281912305498904570924803427650562790575789311044993863517834700777416970146268592915939173835339588498234255520467622101245918125290891960721252962341466913538814589814214723753781664749478425706364352461070224233708179564135246880492730639677674623872309076224196922090720446752424962016499908060928640446088590198190025780328393379622363600793252241003767266825105789787022775751765687273282872681784817235974474959304500106923652827770175776376057866784637584218919587715646859185759124581929407837290204615476399831255232642772149604749965883742550558896424909600890318701200878005426405783690223803023797534308676408970377177829432708888482899871770661919987560426133634342816194791652942901002649991930864509397547495136799464971411961885951448364705084776854218557154068032421447791593957493800552595011736497560627402048363722641737191562791467192752850831819871126942696603819688457632571061264341307436496659871052442884327358088521230434779757325515620881755317489614893979565115465466459134952019342787508889329177160466567164607203135727175727007576133217386625201585733132524102256267135974095667268967387808616588507490403645684015340306735062054190431238197422650374750608082120129477961774411707229963815811485877200700501734026677170462507781454324736384494629139100648590234634063450890873793218123159652262636940460561659812567660405111805037271771919133677053378340571763804818663579984080144826950600742568620996921074204543790255158895558727569627833033922369940173618424508834111810651656048535574444567986963711635689671493979686086392051590735412326987468072321026945906095052728783747681972245983868013037928884763904299129826301670561248217272709934758302637217436483609049259979017913572017677999917451517664593806401100830094206113930664869181230286977905241453163705128560161844356057897016629444587321825339889932073812247330853655199279654850681643123911145550445824784071197446536929226480929787125781620877835455757799725872429412183788180777229189273296533362017032457858813870135280647619436731981832381160911893129851064121020987511004669726225726728447523886592540185823062928562680797115677436491664945960425463840352618701257065715147975721913145513121975941816861627415802916250662475683313221460810083733560259082176304656979800876036280685013224264755601477814078188584904150365677219720532288211268983178369847544314641858955739505549156547927819249161988086454580912459896288180831839198694747159727783540431533139780840118503526092188395999937083438859471424422484895173339353662013418404633914278270531257635152842306416202901968927515006838776193126399890861893238570955140721902636602451481280533397113331997181668368168114113211417441091536660280740752073688197951869383500740801485250371189839664555255637862300294894725338807388545090253060968823072953675487974449697590292547112002691372243223615249165249747041660867764509155511159477802075808850762651193636610867311554992969899613510446151689019965900866044828778159525923906714414752885574464308524982926278589922516043567064422228451889411464404645562403027336145425521604775172340420217961207569279554941274837915390099345785110541869546066004279176509714969623554456015482986407451412652305793262123648552417609567710229212341687156454311883528279150390985919008321641915631234630542109381453293097771127251164835846456017032621220535159510911806712579812990017904201396748639648986580416830392353504059649048195263808560060144490097812861709892171321718078141652344634889987253449435365479232110959791057112787715767591956424199236727218939549730947807636035618617124214592974632640888278642920646150269913678711900700105591753932021927544248495416598915245127805617973028286807341594473386206410511414428389049099794186454102765796914905933255458663787331998410234134210186357410895835541247415216366309533445597853759036910747535179357644751896549954802762133472758890605527381638477541022802894735646799360073180253868675653146890507692412609328780793399715860489456638327779713788516054313521050756108383748787190630773384260645245277015038626404267544599526329137987727604904731562738505220497843816310101861170621100872755427778464809073169584368881349788891479628643600529445515580370114613383736664314978973619136220173478287784163951945648158666739841536848953175419910538486514713806203315648665785618237610350582300314779025897090284284080969250933457877228872443367222249154142248644276474288044127432827952859178595732895202190015471726020796066245204963376906354394976290239211712022794927835141158864526574570946923047666699485949903120984263356978168759479817623935013795014196775910220111958690782426346191285770042525098984695899814199136259926824361465285823048578317155487790775485313929046655222874042698387928987865423117119839944817973165334672655644240394784576751152259628370824434663024024418575011518490382064521827913667162089667112747753535124207783675418967511974700275667309012046788487060329223754816307592779170924531501164340119876000139327544408024106973184674625473383812276564724893335841539005571654820183265759775079589751747626589104877587523415006319142401438844584683685256184472651725051979384269512266601971450685653366718533020065953355981712508860345534161752796241189385496331101145400268056092980486470369444513019881534614061799341395392897417347975110433595794498856720510672308772750213294104276272132667497463492787282710357371813082428478468377819129538727211815622333666816660354583565438907819881292081303387043386670876926764469958036489231885191131050114302131977936474847279924851923137714263077854243985023606988127523596289821331500111059950584764623037107983656960989438380956968393260575271072778863957365450795572899629582643385628639710611546711708409238271955614736601631291370395060012833231421354443797341554577170376506036564132217557077652411894117329603768900109332749511859736210742285027560130448468034446432758727729638990040491574996250063104797738677059556962784396811723371443252662772605997510646452758982125426031044458649357552995121303204693338942472794723310009789920455359278131277695870668310315876389946031424494549763773146136063430889417701887448847015328003015451499112860909942403248329916941358489871131665319203260702546158995642204910162911659670018116940727018797217171686323023556118323193198342370803796953278053782977187454671829418430921721985095232819212480102940486000736338657164939674716847410850866338919788038362565117722358348690989096737227059283378387520150072310475969531030512284930329368248541131113766926569221020923296593566377299675247629189109056398144800021591742635347744703956072123890797151089046108298526010507197557242777201909634714422471270603537857950184437259093361956113283048564569574122170292703201825073022983566835511332308338851334507372273081202885655714787807833951944184851958437229989794757451452736941245634812065844048175235449024407397606058411010621436622691612507865446029785762584964939590202876090478392978007566584355372687291804000734909051848660440791202433127588453190203200783903284912792280548420676834695155901857566765932088926634171356382407121102180333281700812579308596278561884268236429082157465746397088329202574170766452511505505609003041124950089258440827042552762430618486885201276510552341532342351164734524285396714462005001978788690975960312082731929333386050252112006807345880064713266643891024391700346350471880262858040712474770262634884317585612572195523131314179386278947285577465324615711086122333531902738278585784646020600313701514942125391959071309667102965885213697839889156290939743771636780743647494786980566347580750783699119643179162204062000548787439490012304199473697303589997900840621652874808426421326071990248127528436949608115779005494179734937511431781806145857785045035166485825750634750296960306410410179563289780730826789234509202931820390586826950654104129396809093876099264731036820798174964438055115624044199738101662825807851197445426685021856220844261848759266200674656511060029362486031624820819678918152181355926111923461166345822665086176145950743789341584980812952752231860843257985965288802261190266665922655937859396637134691957840093532444525473306658768602008060074798781369928554199058085681741549030727173827517234927484381244144270371887360574934364399214113609316363985218988683805111173090608023338304021000410004993333783004263450282560060958459050745590194592895933947062092079507573081523402757767724788144449830636192589330164576778830549052766661774876685632674136307814153444590770266999239828355457576813955421195065159397418434372715876860476997930972151568408519046320497117726447903332629934498123201460718775034315147902361476205883702162559670339483592737874161365824447049081019047867077729938161516575462820068029800463721563526770860295002450363435919771658499908957051051713169210155056685711478948292601652283703664279729412723327993385676972068945177529247890734902739568992396004082005895239640239584914895675194441732990455908284962508388272481664809644013695108530643590237328537639688567194704667459259852194847009346130261141412179411299994375826249494565666674099752312940749960678432841327379608811354294970105991967067932527833097758928415762643944723789054971807292766811411062804902336531718448905647640615296706335520835436041593386648611858094071235308269292644418143791110200993361422914793119640919331990182443330345380585754214640238824260774995215366915341497235208474057031765422776345411042327893101949992571577825558691897895422945443680380208657578495349595586606235401227143323363094432958840171215550050203924175856785197077586124718868813101246599573589030798669834807255201536300814627715056943239448585159116823195136012406495891984611338805585159868346247052637564031114665756371321951326231045738075829116360629934323624216434728253094934162532761445177538547165024471725562255682921126585840210275028026032072889156454737530566706272562834758199753126146886585122828302440171763025247744940890748240827209734322451822354861070551316853275578081420600654807730862579379336164296300651251035620903073641444759072951433003329108395228654468968443998724991943750648399825412774577834064138787246298154005871653201690041161564805619094094950177728315165333892502449398614595846310753261175601850635807705775203998921942871973931019055845469784764447913903988508253744480825540367906677867871057567478493188656741810436755808948879038430592843598118575241573451984420451874438273802788249941071249303464372879792957737080283657705694830680260355087766018017548240826889393233567613079361639516134438559058561470248595710630583243521624876087878849326799727058325744525127686358697175227126042729704763198212221500110961927927031953451726345983879650304506115735253749823992717894744913635383053788207368902228723257035589214660773099731574328578894614609958412257841707173544840654053687963529161718339377820673974804275660397594495763320761934541624154607081082091431381630887662852444276208094195753892541482888964133078632756060019952316521890141964819830541862502886279942861929515434864567266354539499955976735355894393495991004445955069390234829281284926336527704287398385545271066278910515123558177655155124804872688188708038652699563430158718539676417362165324740950301161676147226987091336686975730078772316774484804082212792921345388911884307584665906933970070288913666161767306556816492529686126542330576930427952309859851945687695616787391724886208606078219586577521157997471925755521830252778574776276558662045076936010197431001405073169538271205697390441457933908374685337544753066892359751986805458682161120599250577029450471790531116688637592044725816809350715401468061886209608998308808761053155925047485763330982810135796784437153235684378855933935608225979566539014908874229318867856908106633416008188397781368955225608754496472366002973989622781331076327936906421333836156329940767987829949219414282739937552368742050095369670510834581278968845142676270307586970560344050293627832921967047772968940770231187440894414891611957992234348384361908134992564366682665696510978419367665490400052255968546785818638881481409824051219338973454619317589006191281840488521392932267525779747925510077945960279398495734167739330399574628957203655424637187995438121309889157318399563297897718347938915006476879059728332276590034174776666804805807585137415933903539371546508657211772037063013142093943376911484717585548985036753668986990778732349370860695937442389869679255309585195314500199898018163496806602205369815418049524140539038443752983715573321216713716303309876573223472073494658660387196143966238355254434272031875166654429112534708035265585042313178039140504966786200157779032253018379775395031624177802409362800776274088937204606438009792960229334141357316853027529326270934813060617513040349194939506111829667596679721724554842338458197057324866302813949134291966549465895240393949176765935059682165276533388253260395177273452448414734481084363051946017495590145528378728694589718770632641502417259843086559611204202453814610339462803726715365311373975645333786896813006476033470456391277472796397664318741782445580539265623629643719879907041630801149589490342214249683643075413638713825740975202255710524519005628410890292248754754939152754157107953000785347651731062707781298031248059008088083511571893341447743035315052308357772390705357815401965655229378522974863831081531326498095411458206016343526704502197334552693425313951442693600699979416793419044571047950054591933973470783926474430571876070606494546076496652235432486913277445868254001418092467524424087719936981330245844189018050669626927477561635971967675947936667840573264315222817706208841363096504161459299455789615473844664822043191643886065072888244114235145369904453860898233956764637008735231406874585372559803108174040402975992668970470323458706663340829004120177247777909390407650943557103557176164798280730176947885600023350422406684015217003439639897364954618944020288720946937413542886098604075227026482788702174057857719036625711012261058982176805769679934893705049041439972935657555686872759565537429136163222780629831139827737682328273538007173604361766686339194080863757502388242360541635097206494291599132259373964992477759699130503679859467387685858969458881363954404384016848950761974795313353392698993567078740170008504367063192312102584020548165945222524105239691877251826775214235888083623030633684703867930130650125295968428623742677462191715457239299389032287069336032372302828098382506936703358757555827103340491155787211743066715263418577384309801993728612813203556766993754656540038816495840381520797028440484282254884632112821925210033546824602794396854826423202843726689970480869195071650949154727258460224485143154709172855637969394753939537534842454461823870448127360033316087549390339491932603424096663377705656553981384251344651715053403923964417851970419752086799349480032265992581424000705801737101791445964258963875786190924396690033057790178748531407381054411659092462411237526877645210411022521678216396060020924621034172725054413396654304600511543838181495559908429007654906632941883397253075597857634654462449755501594356663254192887988476758127961551318345779438588059118960711018114915926214069348039421926460721297822408069255012690250178221901583499188663372994201653644081755046119923887957198992066054340294114974546071159657605660183300202102344309467802093991861862965216891368515339833603657760186751215707978850910662690444513903724718434232835066662847876807387275374320546636913075891542321272611108399646743762333862252602882930547232324311990485665318593042026396489306780598510984447945017700408320977028919172057048382181924135570226760960898139417290817645998917756855185172967724992933123052909118247462398492666928951967247431522756106437050491531797002473836449419068540277472068963138393177448233961148030322348372301545504016732072510497336139578845609651207819365400056853303027235062359420018098760449076899084941741369357339039371012080828320780934162749276755522409809098153174862234168142466848375913203535996417859932173938627851656219636450621416451865792169471928789091851626456347026830292184338577370915000158169528450080894744186642838772985819834529563611933373632440708524703027899883434677586606441445529530405836184308602571764765354456106254643446906140012957381572512463660138820345199166078432074790037248546139205726353557158090656959024185745345956546890947422882539337183883406929169297400044137877815260349485959875657881972792337911693367611917919131915027920557706737769810315715359926487713855353321793871564010753738106086321230546595044476485010200470235649943642098272637082343166210803794993910337605136239806876905139720151979070575500255076889855737572108112919425325518445248006933632368025157148533351689787936121880720836116653840743617415571493745387797691042574418704937861768435997110148267844022966899508273305125680545431462825242960113760480968529000760808009707472576440561766071700939806743526995640583592236944120793230124851216017592161718568695361629331621064836815339177400421921220156618102527651553489597482005681543009594232948075392858721451225712296026349598054076571694498983982619415761813379326410749885515537518666751789095081260226732887008501369033072022423311241991556050372244766164397155244356247926874588767338935163683327933554702277547935287703755133035368418595728953591127644725043878325718984441974471692217612825126396314128770579712175562666092567978624210753782825275802681456221191328149519567354816438303073809218496633499815268520022429717046018825658842467015385712669468265707555696525948903227914864246346468870618605734062682911322413808861525616756567945364657325139882917475692209277183304968538734947428728388582797185751925085125363729075173796643775804671009928949220293268670456975658752584332903400349503949011586021175082326448210272758388252815782194585442203117090992668634959462750022443452546012055002758055127454792702255890205631701275211122693794920290417833369691631162589900706279105985583858392017695508708913053733434385675958920310284847781339811291863191093386084475914087239356382800972352347223372355619360570354411451544244307940032823148529609638296958288902010391872278763245256372127500248817419151015466871343223054572424151488837160849087690844793830186151432135847711240614541446439183938044066695316622116741046472939622004638961665608819717101930135624767270181741989733125492003140924411241153224900070754907516184957543551611208022204023968376636880451822691297708293688894074998217185540931850449663735709971989960908519813174658217406440733137654410084264390199313344416298280201059159586221741529060546858446825609039282323617534880583845852642034407748295813317970457691956263225675641685811512670217066518907796204233575773817564814095574905621916350619556603859001230105241016047652273704404479564336649968708539745125105915160022240368627482259079202336430778070946622175011973214230565495684814465576107906033710595350568611341645767396110859401880245617579689883266256409894693280104365291970684730005887925438391662019569596571533373614115187189312356643389006800187024689032302797342271128282171799878713212117329036060371547786892810406560993783700207922558468011335587906261901093629494719347614610784908347727972664981060886160896302867201510015108566161825129634975425024272081557002265941815391290337945136518047397974376034831138219062938133831604578871761305972624279786410979461568839594456833208172319195856872204542603316087926558321489377543723491132201816700479397540948217989075370768230671731249702531673564543406062253586483721876364885815656468440728188332621030006260484399864535626813077449518708844252479808421884652431126530875716970356579193081754594545979226680522690302736699184607929615623142663354132052863597405323796639870431453066308061197943832308479553993128427148101202879692518240366933913835269757022542403389041102563931777385856395150760422381552306943437155154770876052232484595793376372779715779096638669304485249549423986081793893310670696881891161170144901546778001550049111602186286345163199534989815372560517348564641269606632792272652115204168983118001639477232503487517975266466538605885310375386323449185231709798124778365598533541593980958124433491037239259424061787818955206789639301137224039378855362946151869759563140264720906997750013611877360612394880182302599632772460731913224265247765843851870907483675299829361720529022209380906861000458689821676603902075564791012594713699959332168445898305343858211764958004751287406251595999467293204674470870715167851421656776355939143657993736347249925156645471605043233097281630642396809038021750687833536173404097614118680059037340312341605883455235067338752800787033133391707487966849528493075647320868840934380554883195960251773502083727624240339456212211925683490737454112277877641954542607470029658579411795883383494012636284071606370192505278671353911009904407560251382987723241502706898676119014622076654875776162540892477299357715761700750960446391506332058899436675190871956939800022687432780180818392178709073123353331373011315965680280896735755650091675680722007667153708728485188186965653450591919415129897772500704531083484204256009802043625565542287774299566636078316295125113411325583706020566573294986977164698547137703200443022008505653377365378947288543862725055911788727943036314460020086504429170778872386381956215475209306444914466262735267509651875004139279370893320240127688827675054296294093093354920744403327434214120799757340314496705538078219995180518082515428583740839433883842984823268317117814453641785347046845620463915826027190815790559731433923858312882529042132987246860789417898096245935117545754705002593969747758470845487352156660639391962457416095124403612942059946284579486042861317902103275464677157584106545775551518446983441064825708631574744541847215534147110002165755331087323942894411304556036096', -); -test(macro, '1073741824', 0, '1'); -test(macro, '-1073741824', 0, '1'); -test(macro, '1073741824', 1, '1073741824'); -test(macro, '-1073741824', 1, '-1073741824'); -test(macro, '1073741824', 3, '1237940039285380274899124224'); -test(macro, '-1073741824', 3, '-1237940039285380274899124224'); -test( - macro, - '1073741824', - 7, - '1645504557321206042154969182557350504982735865633579863348609024', -); -test( - macro, - '-1073741824', - 7, - '-1645504557321206042154969182557350504982735865633579863348609024', -); -test( - macro, - '1073741824', - 9, - '1897137590064188545819787018382342682267975428761855001222473056385648716020711424', -); -test( - macro, - '-1073741824', - 9, - '-1897137590064188545819787018382342682267975428761855001222473056385648716020711424', -); -test( - macro, - '1073741824', - 11, - '2187250724783011924372502227117621365353169430893212436425770606409952999199375923223513177023053824', -); -test( - macro, - '-1073741824', - 11, - '-2187250724783011924372502227117621365353169430893212436425770606409952999199375923223513177023053824', -); -test( - macro, - '1073741824', - 17, - '3351951982485649274893506249551461531869841455148098344430890360930441007518386744200468574541725856922507964546621512713438470702986642486608412251521024', -); -test( - macro, - '-1073741824', - 17, - '-3351951982485649274893506249551461531869841455148098344430890360930441007518386744200468574541725856922507964546621512713438470702986642486608412251521024', -); -test( - macro, - '1073741824', - 22, - '4784065733063810973581885157618788676291241975216665977767007373648750357731006099232824032039924032894289638403441329240212719241920971274455782595989040464660523567661989180298099889009174801022976', -); -test( - macro, - '-1073741824', - 22, - '4784065733063810973581885157618788676291241975216665977767007373648750357731006099232824032039924032894289638403441329240212719241920971274455782595989040464660523567661989180298099889009174801022976', -); -test( - macro, - '1073741824', - 24, - '5515652263101987298728728207430913795608113109085112352897269396216198887424215820128660001943808587833784893551335930816647064191168732319583111500951066614122648616177179922993422016587311577585463592732098692120576', -); -test( - macro, - '-1073741824', - 24, - '5515652263101987298728728207430913795608113109085112352897269396216198887424215820128660001943808587833784893551335930816647064191168732319583111500951066614122648616177179922993422016587311577585463592732098692120576', -); -test( - macro, - '1073741824', - 27, - '6828046779268970776657768233698567984276232522051489956245767999246374131525255241237946573692471593720760228447675638216590132893818229842292076597586769967201441361422350907866192164773697561322460176523147880429251325990375896362151810433024', -); -test( - macro, - '-1073741824', - 27, - '-6828046779268970776657768233698567984276232522051489956245767999246374131525255241237946573692471593720760228447675638216590132893818229842292076597586769967201441361422350907866192164773697561322460176523147880429251325990375896362151810433024', -); -test( - macro, - '1073741824', - 29, - '7872201966280717348342236651726314522606839627565764220475565031568317153405023507392663596386569558004653379220621715171372109048108541030444785631640845193093816697582678260933332408613360539868835105124282664122403089594119217080450011771426148362301864935424', -); -test( - macro, - '-1073741824', - 29, - '-7872201966280717348342236651726314522606839627565764220475565031568317153405023507392663596386569558004653379220621715171372109048108541030444785631640845193093816697582678260933332408613360539868835105124282664122403089594119217080450011771426148362301864935424', -); -test( - macro, - '1073741824', - 1234, - '135032864495417264161796347776955705785892222817973553418838034178314956028897546684160639856425763595503385824329054755201421463563212980917112733900937587464576847323832924136423515380546856668025289567166571296527646275461473028717333267141003518332467805495676717695347879685792063703697070949206732122179518994434776335316458684468092377731792188239016034485284630253586964894185124335453057822293914949906863158326432012623661553678396250401107915138994915256878813546994860886329001648396962604356523710403969300362981938297962596264354907403355610003410746213618666434661128903020244869263896170471066369182082892608827489848219714660341764073206537992528782425500311374732638679622889592596379830695201794132135693911769551065799954240113610377067376683502257705550961373070910821982440913313765403579054599921224319207778610832609088192808064360990585104697667138615140446175879997439210654552913976627035980457885269693547247688226220637387637045378917414583352542513965899437900025330512737621517111697083031434057763772292768696151657707923184295380055081923115043272032888153271224470285860092716037417011085867348183777640814999517894828296507433835585929567261420420462344313146389909474179332054613893650718599796623059768279453815288538594004374465681087299360879696203325418022962651748866461417173042714747088991460375318785407702300361444578324217092319160985594722221278104937860539603355035209045656876866415381803837578632001346316535288568593998708433385135715755188408423372052774222216062791048328356892426522413633286855317150328892404110603628893696215163566867442031835287126762113760377467604420360968473120576018581379277564986140009067855235173575587538977545428601733720192069320627430054733306784720670681238722112369930138992200505842377717496879786984447202871740228658026814953856942888153479080568126661272713405724755303867126253550104922434031984783644501692789857112933381811554363124855689663968314433936452490388268436076601610796805828686914442925663191706651004835742754007540713785525346442305287873815143574033326807511787052642265739017004565917956613363367471933672846629587711796258007368503719485449080451730511414011638477972141851445718086957116808591931107452359052957804865633522313939899601083954314084664652521357737845635635594429769313821802217558277658299721865464301558666750790259183567098179113274454668640485452931068066002908997277843409635151859336573513012860151545891329235097673549964928547801966932932777277610659955980339629366284864226600662175274920200231799911374929694310790998989788523133581837411706270099109279459393672455713820011546843294753524645198035778900516714217425354013155387659200293566814809279617708397538819427548364362324788662653106656895970337977138117687158105548389244431881662586459290188692191645535827574319724588383784870507646115475296972326304672165083538472785124541284886058416994446142617361494723365850552096782926362377318561314608226102827450344958934465468245954006024257745239912802322669809977564421376969565655823452390561157232875258411436971600411470668202989843565841480016584687122684712266492502542278163229587079707811073162054156571019054961062952927977983554302015866971342580754327070415115073966145426561158662194502911612889959593112256884020821481134001501231980935188947653774740923939867063867862219999510114357601167654576478400771215648552504675553652631911512293697639701046365273307557081624386985153768458592210790101466864820465666077389235557282441554467556137942439039191407590628851042708228500292413849444833651262460968069570764996387290215723393788781245642804553333508408301261343724697551028018989537881749905976076338448452394908535816426586597030779896515482117647557447860634450527101713121746502484479941152499856376739864275419495610691316310634478200363068897623674033337430538837932663020502333882835672567028049270502480555370060999493787391837671108324652717939749490597481250676971715293682844252870745501145551758940066811058992261248151841276017611811411887274572413802287051107702233361626519940861991365151787177732149135343171325963570255705926609298821759763745740605618507883067662117450926227987106288796642374051280660094717537306446983341125766514345467801301022109170850857456333788167674306579695352752143676166869626035002861003680151141687395013408918901196436576953798322233993027260775444170722889022629783177992510442629535947158550432935980049655104057058621049474066059547684213926506563385023004213643849612559790681501591969143956634858312507054320677326538188275884275107886773666192492559052155330294262524555672315514034789884026392912345926416901360808651772382910047100655600280544831642567723450232097407181605364971159781140990727057283670253338705128542777670983899963185946930240111611346828021014300849527667380963493241772072243503208897153563615767202700820461479775801950340023203862180599061144940297631835377016813742279451921894644661911014611402981461194280564179453079023523411900246837570509101994534431957542873784483700881074971158165429546479001645257417913405525852266215205603087742174929432327288507482831107662551472614657976383161884377268463657025482687656063877010334242025290874089994813121457120585350369438678750482445541628164325776911259393529988611879496239373025342855694600744246027039218591404431155722013586923335365589621061845464264820717668612915592171183491557882072775450347227785803371128754402118852662696497779734299037300726805751376345509065452470499771152338656741540759667286001807828234665941391188447950478415299791715469552242795959977483249749098144154729856726398843394843136479906418546581912783694281934186249899746840563706877029836122779488478015849960103559937024687849690515515689170897889503967015459345616938867807167382350934016893152627043030526997853293078436718226621464395154690848550466482856381991831742986166751803513242752173233490694252183014711530077920709629933842242926656727149369031087137074130182692159013533974804462296354847649804625060701458152488648760236684887914355314516265818917796761265782595118181981681044254889996850913972129942574101636910767699459646998565563334934817729091557460304359721174908710624610165520926996466684432035990548126234720976930050635146064837916857286368443462256725410214925359769688795382559406991790923193015325212536964901024443651640395352239064142041323998597222052931115684682639641634800512022146941484482355702865668732720081140181922030567504656879986036737923027379371333794512102069490267986276796423969331880136840719651462034396200061876091366707548763496112346222123232248230388694153688276766328691064711815330435460610088491421888195612048740193844188314932702563544622667512558911661710630118364274196170285674349766269310062034958003334299954120247304438475039760866057864514345508533138628508770723222951065702526427845206142448239674333189634298931074576766130399670656349372266937207854772004314241332793691477905804194502714575051020048862726839370657406000869875185698670555381280201599182665294886015354833856011808620179345081837914124086071187518476483594847918835733763073473814523558994575501588763392130790088638634309767210564561156248614464688514525041131096155150204607020153647966454650761265273455261627425314514074528596787641024836845254467857223858579509706178001258970617383401025827829579991212553362569959842654814709014550315424922111780290827915930414726165818710997646590887384752885393971444427639715814163996840822838498023284380865733129768795804080108863886307701355417615576573589725489445560015923098909783946350493434691086273697821816061793195812770178371503741153108240688178150147461201688003004263999364357199123049902951417798592453452403101562071608640099027564271983356263970688542541011654918968049984647651232137086895404259830149749220416879709959182020123061308112888239461649235275893165452695700741882252283027093045450482557353241644181353530529653471719973518815321814018114021209910092621976503477515448618895747516994954217971534012469546841874151849040054346531026855470552536470226180210581952214311535603720572039239234584559973566186577426541184455268877699457062169502204867831831763139996332553492281719620044008348442819347402916347449063826287493279275546962303367251145148862797186077453729802990592616042296098334476139933758210139481670253798728685880004650690300243587853634793764661363939548941992865429829630011064793643332258817519440699413641147721299779933762272040597516388553460177074372616592967741331217479003988681016928742585365278732728251483499212078891220690889658188156539798384331139356971957782445900967760132357158387747329622665956719786329684268357644498465257273930645057475745581973619803774790375513161774140411043479424601685237941073465868677839867198646929631273490654610573573656534496084196010506741518390113797703827155068331674200699131411229929426209680688487714374805974168983332553493786309966923567293209378744360953393793837125430206186894839350307705730235833717173154106746899348996486996231198585887923276258550483914940308115576604381833814866652308982829995287823135115578881841683647985874625837749874589942687788384192613487693851248999443749739642785826605231657455343877879315308426560948548969337045420424230665445855165336217895834289470720467926611740468031169083110333367765062731740323306977689561405194787701475443626301894061597784690178137908223901264029854714026072728307465863936978689722771921158057199058515421972406268544249165602289029057506413446029967238761073334521038239699127377613786798068608688136455403186419278380623768639967693818903002914091657689851030323485482272515883706497395534650119809423124565836391369793842875038747816600835980202179604622141185688760485442517152962269215524720968096159687665960838433942792005418796157545207812339197623327607879244889471757058218065058047984089888544282248414904169827449234143857530585526799957307705003072573479826497347064437602871900701432264712373284911700095912533127999896443887782038410277845379907218733591984612184226296351103012869133391467968434446494841517603701783596211408280361807750260109809286092555909870372810146591135183334539196312751504033478470726845817388732348939299912436932024285485403024073626586251026026899899295415467127267737038677726809661009108302376683834416191919481724680647658317867588060396025374752516402209355880386153514329598353790340684707527726798504415578402359843949160793333347705630484913082537803617023770261845303091364666015596737350934362512646919111958540171867785831140669826682679983246022184079073759821259756221015486738276522189431610413723028908457172736855850746058294313588226728849768689794812414866669348870741591827776664772445325863669071829320107144423553422120538225532216445443836199238118227392732940295380857114186288402531225261406147809210925336362075376428503158948931501742771923187008514442594711388876951547491075456021295349274877008031010408946253351724911972191625857419453217284075817281481549626955942730030530589242183647212102223686706445886268268877799837073315208919568520733667353137904980761596821645748802852145377472403345961092081642831719685504154626740435161580568576', -); -test( - macro, - '-1073741824', - 1234, - '135032864495417264161796347776955705785892222817973553418838034178314956028897546684160639856425763595503385824329054755201421463563212980917112733900937587464576847323832924136423515380546856668025289567166571296527646275461473028717333267141003518332467805495676717695347879685792063703697070949206732122179518994434776335316458684468092377731792188239016034485284630253586964894185124335453057822293914949906863158326432012623661553678396250401107915138994915256878813546994860886329001648396962604356523710403969300362981938297962596264354907403355610003410746213618666434661128903020244869263896170471066369182082892608827489848219714660341764073206537992528782425500311374732638679622889592596379830695201794132135693911769551065799954240113610377067376683502257705550961373070910821982440913313765403579054599921224319207778610832609088192808064360990585104697667138615140446175879997439210654552913976627035980457885269693547247688226220637387637045378917414583352542513965899437900025330512737621517111697083031434057763772292768696151657707923184295380055081923115043272032888153271224470285860092716037417011085867348183777640814999517894828296507433835585929567261420420462344313146389909474179332054613893650718599796623059768279453815288538594004374465681087299360879696203325418022962651748866461417173042714747088991460375318785407702300361444578324217092319160985594722221278104937860539603355035209045656876866415381803837578632001346316535288568593998708433385135715755188408423372052774222216062791048328356892426522413633286855317150328892404110603628893696215163566867442031835287126762113760377467604420360968473120576018581379277564986140009067855235173575587538977545428601733720192069320627430054733306784720670681238722112369930138992200505842377717496879786984447202871740228658026814953856942888153479080568126661272713405724755303867126253550104922434031984783644501692789857112933381811554363124855689663968314433936452490388268436076601610796805828686914442925663191706651004835742754007540713785525346442305287873815143574033326807511787052642265739017004565917956613363367471933672846629587711796258007368503719485449080451730511414011638477972141851445718086957116808591931107452359052957804865633522313939899601083954314084664652521357737845635635594429769313821802217558277658299721865464301558666750790259183567098179113274454668640485452931068066002908997277843409635151859336573513012860151545891329235097673549964928547801966932932777277610659955980339629366284864226600662175274920200231799911374929694310790998989788523133581837411706270099109279459393672455713820011546843294753524645198035778900516714217425354013155387659200293566814809279617708397538819427548364362324788662653106656895970337977138117687158105548389244431881662586459290188692191645535827574319724588383784870507646115475296972326304672165083538472785124541284886058416994446142617361494723365850552096782926362377318561314608226102827450344958934465468245954006024257745239912802322669809977564421376969565655823452390561157232875258411436971600411470668202989843565841480016584687122684712266492502542278163229587079707811073162054156571019054961062952927977983554302015866971342580754327070415115073966145426561158662194502911612889959593112256884020821481134001501231980935188947653774740923939867063867862219999510114357601167654576478400771215648552504675553652631911512293697639701046365273307557081624386985153768458592210790101466864820465666077389235557282441554467556137942439039191407590628851042708228500292413849444833651262460968069570764996387290215723393788781245642804553333508408301261343724697551028018989537881749905976076338448452394908535816426586597030779896515482117647557447860634450527101713121746502484479941152499856376739864275419495610691316310634478200363068897623674033337430538837932663020502333882835672567028049270502480555370060999493787391837671108324652717939749490597481250676971715293682844252870745501145551758940066811058992261248151841276017611811411887274572413802287051107702233361626519940861991365151787177732149135343171325963570255705926609298821759763745740605618507883067662117450926227987106288796642374051280660094717537306446983341125766514345467801301022109170850857456333788167674306579695352752143676166869626035002861003680151141687395013408918901196436576953798322233993027260775444170722889022629783177992510442629535947158550432935980049655104057058621049474066059547684213926506563385023004213643849612559790681501591969143956634858312507054320677326538188275884275107886773666192492559052155330294262524555672315514034789884026392912345926416901360808651772382910047100655600280544831642567723450232097407181605364971159781140990727057283670253338705128542777670983899963185946930240111611346828021014300849527667380963493241772072243503208897153563615767202700820461479775801950340023203862180599061144940297631835377016813742279451921894644661911014611402981461194280564179453079023523411900246837570509101994534431957542873784483700881074971158165429546479001645257417913405525852266215205603087742174929432327288507482831107662551472614657976383161884377268463657025482687656063877010334242025290874089994813121457120585350369438678750482445541628164325776911259393529988611879496239373025342855694600744246027039218591404431155722013586923335365589621061845464264820717668612915592171183491557882072775450347227785803371128754402118852662696497779734299037300726805751376345509065452470499771152338656741540759667286001807828234665941391188447950478415299791715469552242795959977483249749098144154729856726398843394843136479906418546581912783694281934186249899746840563706877029836122779488478015849960103559937024687849690515515689170897889503967015459345616938867807167382350934016893152627043030526997853293078436718226621464395154690848550466482856381991831742986166751803513242752173233490694252183014711530077920709629933842242926656727149369031087137074130182692159013533974804462296354847649804625060701458152488648760236684887914355314516265818917796761265782595118181981681044254889996850913972129942574101636910767699459646998565563334934817729091557460304359721174908710624610165520926996466684432035990548126234720976930050635146064837916857286368443462256725410214925359769688795382559406991790923193015325212536964901024443651640395352239064142041323998597222052931115684682639641634800512022146941484482355702865668732720081140181922030567504656879986036737923027379371333794512102069490267986276796423969331880136840719651462034396200061876091366707548763496112346222123232248230388694153688276766328691064711815330435460610088491421888195612048740193844188314932702563544622667512558911661710630118364274196170285674349766269310062034958003334299954120247304438475039760866057864514345508533138628508770723222951065702526427845206142448239674333189634298931074576766130399670656349372266937207854772004314241332793691477905804194502714575051020048862726839370657406000869875185698670555381280201599182665294886015354833856011808620179345081837914124086071187518476483594847918835733763073473814523558994575501588763392130790088638634309767210564561156248614464688514525041131096155150204607020153647966454650761265273455261627425314514074528596787641024836845254467857223858579509706178001258970617383401025827829579991212553362569959842654814709014550315424922111780290827915930414726165818710997646590887384752885393971444427639715814163996840822838498023284380865733129768795804080108863886307701355417615576573589725489445560015923098909783946350493434691086273697821816061793195812770178371503741153108240688178150147461201688003004263999364357199123049902951417798592453452403101562071608640099027564271983356263970688542541011654918968049984647651232137086895404259830149749220416879709959182020123061308112888239461649235275893165452695700741882252283027093045450482557353241644181353530529653471719973518815321814018114021209910092621976503477515448618895747516994954217971534012469546841874151849040054346531026855470552536470226180210581952214311535603720572039239234584559973566186577426541184455268877699457062169502204867831831763139996332553492281719620044008348442819347402916347449063826287493279275546962303367251145148862797186077453729802990592616042296098334476139933758210139481670253798728685880004650690300243587853634793764661363939548941992865429829630011064793643332258817519440699413641147721299779933762272040597516388553460177074372616592967741331217479003988681016928742585365278732728251483499212078891220690889658188156539798384331139356971957782445900967760132357158387747329622665956719786329684268357644498465257273930645057475745581973619803774790375513161774140411043479424601685237941073465868677839867198646929631273490654610573573656534496084196010506741518390113797703827155068331674200699131411229929426209680688487714374805974168983332553493786309966923567293209378744360953393793837125430206186894839350307705730235833717173154106746899348996486996231198585887923276258550483914940308115576604381833814866652308982829995287823135115578881841683647985874625837749874589942687788384192613487693851248999443749739642785826605231657455343877879315308426560948548969337045420424230665445855165336217895834289470720467926611740468031169083110333367765062731740323306977689561405194787701475443626301894061597784690178137908223901264029854714026072728307465863936978689722771921158057199058515421972406268544249165602289029057506413446029967238761073334521038239699127377613786798068608688136455403186419278380623768639967693818903002914091657689851030323485482272515883706497395534650119809423124565836391369793842875038747816600835980202179604622141185688760485442517152962269215524720968096159687665960838433942792005418796157545207812339197623327607879244889471757058218065058047984089888544282248414904169827449234143857530585526799957307705003072573479826497347064437602871900701432264712373284911700095912533127999896443887782038410277845379907218733591984612184226296351103012869133391467968434446494841517603701783596211408280361807750260109809286092555909870372810146591135183334539196312751504033478470726845817388732348939299912436932024285485403024073626586251026026899899295415467127267737038677726809661009108302376683834416191919481724680647658317867588060396025374752516402209355880386153514329598353790340684707527726798504415578402359843949160793333347705630484913082537803617023770261845303091364666015596737350934362512646919111958540171867785831140669826682679983246022184079073759821259756221015486738276522189431610413723028908457172736855850746058294313588226728849768689794812414866669348870741591827776664772445325863669071829320107144423553422120538225532216445443836199238118227392732940295380857114186288402531225261406147809210925336362075376428503158948931501742771923187008514442594711388876951547491075456021295349274877008031010408946253351724911972191625857419453217284075817281481549626955942730030530589242183647212102223686706445886268268877799837073315208919568520733667353137904980761596821645748802852145377472403345961092081642831719685504154626740435161580568576', -); -test( - macro, - '1073741824', - 5678, - '28148898337860105994977487045818154315885187098857720123923019503536550068661096672354637598480165134022041984837084308868395452311053157640615896546050985553558586892645700423928507935726495168161698045415140497515602386527627319206488017355554288186119966734541348472345944365178980166309150611812365395806608007167010671798672218072170128957907439061754394300128594626814429645477396628406899347464530711061456854894379095840425674956808441653400041181506139011927908393244086335493121681302022622095101860620829845276309901056671871394201026397395171820873860291913878080280170380979892472296164150372296767377145551512657194585337453691634475382711660977481092241928982823053143625635560423178221937797712042117395219329456302241242041523769729459117196674726421874136677546084294826873902192894352596290458993633922997209073832114653500019746006542685067098597091796593235383026677957632827401939309333387666537839316094357314127534920705674404309028805143966637229018794907522055172849778130036761405770603918926933967928498088220730576083729725145992964744748428164200419463740275487586933626822729962824800560240761474558428430552602958126365583033236298214451648931511755996108094562356049299254807663118738845759260918867850503834415322452603653397365429159370357398957195114808416983753993622244836716555146831907033098694343145327951581021334647653286088313114479559741196437718942355964184601385362964266877652784804939052253222575619622416395426846679242522689602653790030499520892085577500725499201404182852867226125589028845844427853042309885329741850855526415975172436890910632693916719523636332471118794070682433535223602563287248795595868253883675189904726519119448801915261351526420699337492762857231988691678382926943587916545335155283702413750409505677924941689908432596377494319662783929468093868450608410231488451353317560659020100954006099204197631204922322164052615891958008133081819761014762487524836715828049458561031763108536694043217084348793653430411896364791299284106421121855831489687835195476115378899943269695006351002750960984964426672142770799033138424141023720291141340435508636127792984379054343612312021179919125313130082850457997100339188672577640528770106417201838870495993792046104170422555977835287298352499757882230600591394487250631375216854641145304444397854662472195749485109206617330733383898435103350307488437904097790795468490159665178407362104384319804361651012650220132889393331591715558188458831449467209968941910069520056730023723713589013657691484906132221013788386184219197754113246865122654385680123164873741763553852763331300981166654373006819001402186381647154946999554421873268375821628561307292124869782352332192908982894920263895011772173577732089662917292761688897717750366293629569204248484060863934466108937195948443800932184673102763342937824460121045896218443122360882698024688871403860910852370898051562718960418260546695613954738347691519692022893663002976632717861663007580356823097781646192222209252702435357691413104372734064147456843965665955652873096110765830684236182089087886565807972209217987226299585696168982138854941280194328335120626512261001331081248654357371396176501075032152655115462224365334172115688122152776903406306442312011439667376618560819888585728027310382981804901247107028140882078332241335878660689097272500434681089309886067525115434143986130726703706878433743992681042628744048964001570508077876948518135387246241479296880092162188798942915085422997374189631465329853471853984489176174861323479075234363120290867769013702739919612009426292832097099802965008680479851809369240814572285623180146280697670984531193650342503967101652478766807739947358226388629806728654389375296457819784548065774571293116718672409678564611844170365489608651048260596575158516893594390739121659741649999445353536303503061294401994598214548838049962733817701620624687363493549713852174836185700963467241090073849191740103227875513619343224494993071747822732607018496581774525356633102020037794640774098109121417106381829411247224212510736696706825452538654935037259956407630578146638429226378102600142256743099393349884190724617199388463752205790794440451940454605274720879574121263752007572801341506805655067825631941739793740936589208965150634092530408044204662895618653609322262359163887982449970383124228287512441583793977627962068395199273400344976325835945060297779883770211181669216457812349694314847337342309957623761533535923980598873005880875269599846465045392510668257169787436828598047252165951647190114307062027405441868359474835271630041202717715681530050858890904183091778324015733255757236109101580482580441967985828890176389397718041212941356619163330226370976268329734773630524413753494529257754781863229577908457569032718062086750844184472834347570239536056326155201810881038696860481717433476664625621082241586991225812173672952437197866259897373157784743844679729067516736518800101031672599250959815137720332161848205045025007611471141186707050967888154770682560924038751737207811193901992570725369435103201791686524505756647772640472180936813395743439078761800234463478180846516292693783004681080895964724137021083746991000603574423399483472642365997697739565793596648669477318614358267250383134596038860702874813526614432265002227880708968988988737493080405962374293053076826540765411717793130826541346297462776836630777435661531826481318792145062405811198530844655829858226912380798813160973881440163721569917634885574462693105998116146807054360746972666730885604323790569427284253076223964273715359978030815340692680006321945430455280199860142711370872816427712142263431097232719784998704069638989755157328661993441529401194894894909869599801115592481835323158814300011842131902588936147873994871847028405399169811064272549350520174591847212829792438106825404534383049157807382417071716548998177187833979248225968420666706416390190707768457675226123463626193995384720198209759936791376844052254490031460575054413862573529726918023653700705063568941702083630891996044965826722959248558923416329510449787545274111154340053470755669172749024818935495960038271562190088388398068258567446215438429638813416144469861387009096942616760208032476355018814040329680679835588802653484030011247737226987035720770688024054612187818344447061414642220551886870397419965104800759185726414865048332705445586347178339611571166805268460025130817411913319730985020314703929369141828244979458118746350794440972469365515773623521735815053404694400936400473790547133327308952286757212455297814986317480141532831981218157144776502263149001123086063793023408647358626440541879077132102385221082903921513070649860566861228278306927456359858970160082545255406851398044427390606896847739909856033659996912142151062203182419823681576029939545766232546225798544936003488100493795546219182495490312417078545669619133839724414087313221443223560772275469655787068013125130766170757522755288995196083208632760367504798374588838275982584188716625435557712975930208506356967363937122210773117642423759034688847074262569157860691733884420095472655868693804788798853460305074114676050174059869840188238249706756922707852403016294480987516418402809622158722332117912191322396344308046005168529470763240755288495911503467885568547110796443005962189288373077954193026536584426645858119360236884973893893358131236585957253729142968547596265350388138211504681166184873067638534159817198960647922530056737171392998222652344768890440903942958874497053450492657340534404950722261826476694600389620993991121412934627781512375531587430119694418600921042491946241808425609218148001707575278154030998716384895216667657329409014393641864525969281112155349965482510043869560234065512374117610382279304357796353832138535779361023572767566136655174688134341190085638519772716269105777397667544752112308407281551063186641110391181368268011784028035535033180997148034817583725977310854347328290703963033914233260949053078632664379976313477320469323833039980151301644772548530801510197665795747529811668583071320734297978242386191013538568847456151931045213697759408021294424885981327060102359352968094713641880316402184069434459849295665713894902493734764537578851014033582135990357328370745283459359873866508862907217949984436520976291123753201389817868962086019717213048013769401358081253749874316414733761110700403879731481327366128134414614015062028812312964841192776605772461602572237848579751596062846119891809475923058727329328606164325877380198476851130919034536367632484283364665496341548696606675798822283175208724674569561785917038686953070189275754779088627350245328334100342506484849574784279451309720531675563912478225243235012917746633631513142936777117922425886154614922105224375020527023628916774071542994620484847765716560515554737127344964768600124294594714592715001471003807303089010784319406981481509952504990850744144964515173603048334536187116309970688343136766612177268007668348523128350364138371524518071578343144952047467567938905941913593215582743180827679406961185115865886327377643057697587542832729089317101509237763970252435463768975389494971467359397430380888536860037432765702651569010253133830734119885207436369488914639018501744924571605683611573454465059643881519676195549227750953450440893566116496066519058403193663154983497437154203819963260242165229405208778700716060684766534758748916704009916082633385168020080405048885760694176577865460810820723540078488639369178154320241426505293354277745875660846622369288568123133292561261235256785531922213375332813363516492867281651918872071496312751377718845934838314667391677793894714490889453532680855202389134062406106528371557396680459568935062620695390268278489516786937751530412550577162465259150382716339278325770531171352930227692196632869620798522311181142960193953850924687498620070544338109430949277948159507329879155210160241450119748611369522285092212852813824570293032227779647026176189223572123084451190061745506256343264326562147424832561761153522386762221700802908370661822157393320044695725445229989991188431755677388407747966911115439215417944956153478651673184696643896949254524276369957021748106422271849652943735723075220056207411130072896924286451944171527022637264455020523596282445070630771934761579048221305568215457139994617211411085307850660300120371189812200827308583395539820589069061017861328862614076955537014856977190049697039330309651801348304720476087039640721882498623638587478814436784569169724978777030982272340221145046578552827191352546947143035275990939793413754422719012024556590240543018750125119716435776594606691472552962887122631806058400823255622524530384727573782908089505801222820975600456796411789607997183949633694399179379455469571927557602044778175978015388866388477893024649939309704230972907459714140113585529896807765412294459996359442449522528811461650087362667428633366378783346662514627715854569781388778149878012550900142410424032639113511075518363232906427235201384917342979688961765962102151375425532423292393037112830729746922825304316043663626837496782405688495899065655537216405612388901278198928051245924054604064320232470222166534446528962122067805923069489828996675843271638295113384222501506572543452808653339012061245181593399976731212745904191650313808438588548016446126120674226308029977326300360093713369252084641668517986682964017531891894972707847947894703397603382187246975964105692629345413266060528347071427038400660608705761598293765664181968080597125867912583308892435338706392483149232139991310577488003922853083026387762353546878968616781786702320683290245408076838623224983658193002922968799601420269991247101304606880493000638853120262969345837845575632652594203162116188047397369127024269086257206506049305152721408369249824397488170653226655559449775665832715337829296847540526548358288035657313921214610780153539347835226207976076946168876430114358524272233723646988855002094455275840302962666856844081766293291452137772048110790637266536704660807449519739327018721619044684676011960134044956848557708417750475836513642574721735576244762978717150713261667412716273664438107629604313094428969497371965141673202051915817445633979326940820989733688568069901109275117585286470786533583664247227757623461868123616550942380510328263064047797942151063136084100508835563648567547381317493212871351484118995384664462190866589013506449874230637279552571417457669151996916924270409859368135881488538365606716772030232698811184558469064636039865808366906057231656211951193116937650377253371722258540457313473237383533121791937083143459043495393649754643213866611930380243460376842178995100338772584518299046902703748625190488159098692582062884386819474282872980115522829156617371896871414855580179892864231619779226423289057203279126691229766046555328864768267364321578175263384079348441103395394618249025089795196954124821643685972538912223482310109199583464708899243992298931497078502095787511123559987214651034665741434614829428967428333802394306584477458469633359430987362811953453518400356509454058669839297226788372776367280158730642818372182875605917838630804855852420246178189659203437587382007313143987554772337361728272583250185719831437811387405182412368783988197961286391351624156213505940541094805465500164206288920572949611162162113050402038557325431333024558950631067367936611318153854810023507303764110973942973756954917700791836575148652033411756519651474800034591874142970228482783950150557217039469375536911748110596177461367744944289602462137274637274069720165611598466507748445243616769937369465337749866771841938628315536271843426900115553507410869477054081430287053781532316668174001761433261847823250273169400494042990324465308492795796008958697421991828212877366624163731089097149011406345956531300275914140023841183483485265586993192321555157485947797690816166469044557255832260658892615942710042684013595996265472441252752479660126933682227709014013002675508541470117652788250994783969626624171862885916722522793464173019418067898505345599496735174015977358875619968199716219533552738926637031051890494978338580207273924479022246491648620522810980430864243281885381172828258575698372088024439462447934958632586064921165575955786537269481483937723577490467737221720409666604585388204859474442997324805317238786488235195413838346371458154199153397286434670625395599277956221756084293733060481746683886469999967199808248860997598988465769993529406058206112180431991132713457015628241212019583216636957380809911503435447564199491276079636441647078944643232895303344668713941249744967791690209229128883799300994462500424955736495750871431874087322800538276593777301272661937240773237633293854544754939117218573431236413676044727898884777030673570034488739595200946297274238360844588881821427893674692289872719794617552712949171013259904704167278643987743105273334320443413659380726864695786527091362412670288650332875617283949480199386204263527209082186767929892326304543956845184355613429740397723016551419039154318260427281778819523773313505580722929854977110755322952416544942744038661223221183759746326498482668536001557277096914159111874312153517083375211013183593250726321533259140501285618966863802490518474254707070066879721010077181030496698210597599398932161175581512349806140123118157674998684530687977209656109669570842567739926631008487026917889091286956137809901880327742971892768270601951934752109320934869765144253043800750296293513146606452851069332013443570630554704382747449487485536496427956274784905893103873987768740604182379428000525642086938721704335210558279257980735181414966979314982367116027137599914079057701202907012346767620471172401133094852140947507709878927974690819147519376781258916641942410215263854181358354623399721795114283058445754664116386572155146227613060724837022655475289960130851827789796741182786701725436689175126115738951255328459283705735673792038332771275966384139356869886544157959423900159524818315186940605161679257955706740318466678645508179828694369147823415549800070451991820864586919375260489703149506500802123898113416334762997208596193606353010669216102269842389887094552624430998968131186451615404193377168588441373578538825728592377440448612020203066191898235515693843215931480135839738134274029581253133656093204899636776425859689995495873537309952309610072133005212939182414561325696226801098867717882906061991955075678342181331882095542089225604653021264291770836186590776579787363667069660002867694074402468427249988282181175359142889347493588450134025762040336381857980331092417620342654222801867511538594654519800002440876114049836951162662750192372554175899061991906290784393548297931360854697304660217388326454025385317464060515392460270735562634219706400179619734817004536958508273604064174329604012897892903752485301302318494759650641425275359084845658186671712160266483012379281979192335879671133821261746570768835599550683335228772226084199813244119457702012788644482031756025391901885339469726868198018085491130601667643050694626140156924968196367534431524629400571184798126488006430721476852350356305114701192180938078185596501406019121622406459154304979668159832955371593225491929291926247593357479974910111035479049436421729173094079651242582981533593842859642090017067207572422151856331378087765898272716477356116505494492527760323026755374093035374204268993047047278479131391553691647838872720204941034872333171803661000114147594995620657679606204475115479977905970944031101379807757313636918891924602682562733654982817525199083912568378542859662922923704736713241305728532013661459371953714893728644715593769353695924513479019412720277833400288463057686946226328790417273092172568136932546842785412317831005776620608067442091003848742510088030854918907472765326404312356309549410618389906172934527763348333129738356175599668898544090809612543931015042371463710234727490208128449271087498194070337397932790231655494664919249685556900070331820527927700923879904712981785622980056040860293852786608014416839444705794599237330395343625677231165730337929171123427679896358733212313404887778628928451238376200468283542093779290360409735166492249355597416078350393046779330842606201068250136256437582935384024422088122049514231186924987486386922255709770571686751402668463117086056087909722759647760111192263760999074221853531262551997916860630419344885774566813330605196726150306444911793623636315706197278750196545874376400639813558827027494733550174136896390860197943805543393966475454387001187325653165083037204644787454406449433808128377060422465144611339962742733002574791924410578469257487544550966959852204997217505241888127436816371252790120771208092431156862674023113879531236174297777218690854959431629046382150819392457019720688697146956554700635427875989653883984765265971447058319231040626981527727045895977255770905523050300664800936806107450054604610397698279501524594807393099512501267065236510023558743136424070008416804213522349576537960765214664370640100210453084611914479027691656864136391290070746628452999965623824867446732398214983818615825977108668636422441563513003831975312156804175525835009983723583171193533501782236576964961510324559549005090600262768394195823389119794969001830645368080861318691095973101919011548228483763812949239379397626324227241369442235711216350246757630159193695160367142155317905915084581982797609343509326821521911481105188403479863217823202421104691839244143919644602509537137465590142091458129871968626743829025365323860594221268369465152742323854658707635430807412874755583770885944383748932124569993895933658098650493753903580677968213439946116629845206367354440478040241152208147047847884378168346630550895572113154003279420848335567732550380587563785065372446579951171277007080376181880859588508139391302063701382117980942753440726346766393542850829543275168072355642671555135145516266084215524110054708924580833152698259832144444062702113296080126316162775848061402470651419774813974402257085656428945474157242235893836799387584558606751664927393493334857578593093025923033903249925802452928325559868490477635990253074330537697360009102142806389826773193350715830565814882983312166010168578638318113581909715614425901966904069916789058597977766919792967752743913284801516270290058840699327499070875081504588210302710253892626213023043634438957621385860258666727257127841683811540495720040171541891264342129606769050464645389966030356482089900989596777679522985065453229500095190697538100163379643439267150956032532346334280315920319424327896526362404605954432140230470878470882264003739306894517976684362812045551613042852192669772965726304705516783708137205632647644097851889002247751584331244400558203132964873335621281299717509879304619288476150109332057109283431502529001299150493028581031388664548216000769077942923394288901958119435090722574806233751271973249874552746532634460237024563407790213999716314923882457446186579151315812380783168745156472877906107226071419443707680584882191451197597628219448713650209673215406805360654332701478226078972457384732586255866424341772998013397576055716829423544245310237330356105227120287256517184974300181658805985949145921001482457911564043446049296375077517623765343452571128748736683475042340324486422980741771950961157672017460212375000343093255257855859277198951018128053837238080978550325407234199361789853768134577442527702115229975219525718789959045191073349653955820878281896398142889923003479767972076383190379298185808476922809215238314249626074164796021558425557210308754766801631838440222800550783465777015428522380797710835404996664778131573332303144318415473153348891859475225796874442481044462069842108821743637445608331048146899622744287339341798591369054634267513173964115613718772637770100806267461469864702974890809600842718955909073251470396524319777099477171768967587473664352749169748604394124828227185348843004451978265273237048553782545156365567001316028448768834710532422641102380518061679205162015773801588206664244457180510418277261829269152549407626154892937631258492719033672820382433466745502235228363223303303588498621164057491411472890847331713440771748363429011212793517034275378352451698293411530204186563333810558260562682373432930496010859284665817691922432863011084933699996961786462463745048747116470391194990030628015332701370191200450760857094229809065249035739502022559141983819390742711457191605178020143282612262800696462461845326859864102767722533666771388582815245205576926226742350534264234612616163494445478555919018674566723039443492562381116590300549213807725226129072939143803666847794403804034573197127632276495815673691688391776493042924568568460383396331869780349811708739849417094527914268223170364569506352973511214621114908992490959875119891914002201928543340360020016065452018805546551793704705117911784155214540116673803430547871133266630619513912440304683435504710983133680288052313077803153090031854465575440001750060605408581808515948034989770356122583873261823440265390089426304521951729320287328409207700383100123151876966524323583031388935239745236968350327632037316230013986711095983640286158845854503322070918325810361899675959053468566534714906108407864581052288055415062268431577178677164927351157974624449718170551912415953093539272615139170040559982269069144788537260760097258745113985468798064087385257717936930463104173511481167429308423462459460962543960069832104794421579983837186447051182599950438328122680458288337425520120137574451732030637289392014736022854027545044245408438033635786397265945453723332808703182454632061130743471916259007228432728541803309270197500946096444605584853072197436724505877621601824420511356681513957999452264448682983769699343994225768926072658063255358146106163505098999696551897853532925142643283744909834395865851620590128292004057571404777642678387685668703868806130918608461650915274491926100585166495256709407294941727457418325940432516141904359150294292748288413140787948986359366462074746713836604803390213998570822968145438813731705421355204337496672010739199285545674998128780178114493708777570231591229449657604145369857370727860129063567167048674305858866375066717347101711427057387739505853397158515841254093617246606188397586238440372102294736076889840979753873898793143249127390280808824855731104585046537769857330026521552755052259518063241611856641516275156726512986189523254888151278812592686063111446785816181415218227445732930445311585144011106096911480434585749527586559521968949018049836045512020729497009550286634399863511982953971128118927749655951377838933784252855345681378774160557470438174481259093651353914975509617330930104363369097847558011805545516823230152705422673827213285554606402424177535395875396349439257879147269990316570555566363631107873583908853302109598741956597344312363552802425107351220022316890426842094449146094093908848454232919398697089400054268720672186047939476318363153358024503206934420826394819801998769864748411198961176921530138349929123130568849437161791761185855627806231398428339981489989031517554700169925879901481360164293541370512956624760397990743413674286804847840458699624232365464488482648339370331099527120400687180993305421299234942550487704295774851922811662380580543940934664708380776764694636606791934436854233668907969931816983166891497973095943662588130142677860603610047337982454343702508574417771555874499100448295382819121831778816886809637030681464951442852987045658744822323017354193015398929135356947939839140306698866302482879187121853214437761579840307617080110522099185105281184531897202070221182174780155244891343031372681720259990267379551766505422208965641261232230697112205687652134593678103177579970271087834049239379072209949397401559634057001243257514833108769363888955683621052565237599125728261239118022575912894175987408009344745117251993238187747886278888586407900202408943623153890915214818002421838815923966958787049692850878031566893781773464813916368968542781397442084762131956466252849726966494397504673443856343004132647844309750841983656463183520640918053128194362601997214048354393807871873141019891406717655832279814142519576502831792032213339668060138693124678086147323694655541522077131244528253802212257686660195802890422055107005242552590674759212912277749904354621960351337529800061117715230093493340418671330565674438486174036271062712551650355860019081761842688678384695345181209344993751433013590249265630411818871254942665247341590902374863056013659912681932484952788985051121820811227358115551518694832616404366490062429428314767614403471928494311323127965060377740115015320155059011183773686991112928134219938238861942579094187368578097611857130108971701774055507254283957072531780780052063471633303056993180268811324636908498651379339810544455043184362168932560296467858789354987134340096423851366091213584971916411716002520202011394261611806506910717102336647860845390923567597373075328613344631519251210849547351316195902683921154170420914315410594227945953667999824864089646190094752335728668593487864038958074636801121239687073243551314746481125760217832551027923488199932464686665557283280854081782932546169494512387423905425853523327120893410410728807263709579745414874034347298836164872219912390950976376370657059966587673786130299383959548096535839326684422935261597602533478601891806412747416883653296136723782138835982528170764256084886875777597602961751140496094774423625070287438285325047835576946313794396636877736116310029692958421411875762799468941694906926445604500237069120930529645136448763546020507845697850054138785172342116922512128840514349291988431425294645753905990244686733733410385281678970312606729383537299554607797672907990394591796359202264492486835738568186180945133516707434961240365199176036679479430505970223502962244183781380913196804818441600413779120622805317818799661043554644440443705675483765184690435438142246744131509594661229983124492357221608279423279364533295157372659250705441584344308292111187384818184306257974181607894350319552740374868519341191483135283763350477192196383786427703966689423831363409240725954775713154895328593988160732590160054997239929414823714727974826024035217860503862168944433455274636864484104518503915125790030638481521747050177942348449246957290358941785218596751364264136325302012127514536979011995360578526074657060450670609980645092613668861127834866905147761396712739540375500705135160407800946104520181528985815263489926159911880084213321212768952431725838938601672188812651102720142982130177098645113732975494219793752073889227065759762609687893651335914924691660042543013159140121403093465609000857166311112970382917214818048185101582696684107408042143042945014390810480019118356949537099663818754715059209366691270390106111853299655506660134809491448878987832685380104145003045774887739416422218687559783784403589016023706079260754932303246949584114360114089506475306440896925694575031099223891967798964042809303692120072723649900326855730217433709980256225249076797838874125035531112686624813374295588750086023037138555024936706002261539102751472102701168353855022613318138841001365460254229596701129402640443828649877042750795516229713646589327314125732074265431844531268182493212072736085146019842646560868628969743149933436726067266230293919685332063288083684098369674426608064526187772953954892826318674314993417979569039823495888917128289051117477198054203719038275454185022748040457767103249901035731885373830510569953185345260681492090178619428435327767997448105824239005042284690390909455119903699725245439425773459997919739647511506450037183108134359259135471444850889646470849065205304395614092274471027676451130301998192579884981980383331004755985458519740718112147812962705310617555010259274607985705228893551463836617686124231748426817936045494654384933976330192421266623131254582148198369659191509650211552964003305770959771233149223935846202962723117218456932567654472669816733803847092639735772223976250554596127643265710435182191800068647592743527104298607516812775387380003886771219532565745981432787326595836968342349008462815121251789385562875463614831060974949395788692980727720786032761748572416672895325498419331366014371448904732847968285929375551256672205371236319010761607531035489389025830582442491033340311783200278400330573275229324139285691959682207033048166845240280073722049031522270750064451502205702838802314453492907125113196867357626343878692666709910893945062710386453480965984908868928331852364750709250772228522623061255781933618377709440518884675617168771208213362028807000568991336640250325843144807507365386167323430530383757386514877678566741578803351624259009223626044690394968507237740190193077024096179943106691946391713265839010095279092109535492123342892233114535396448888859072578357724845567858023341418639436957064116245382812764104096389861125288235620089839796959708844667271837724791853923155783350300837209697417124820469598763421016230556944144273578255047209140685603269167269642662464781417402044138800193094975708451596078152422131206951630446037496865433989208174418961047669463435692646401380865304211042807149992732461476622644253291650530746199877456840901162470871578154957110644808251440332624321213214254142116691052442993385768448482702905034603814208635913143936488381755746324155738630413306167461255699186732545319102104515653378661263778599973833109965924889965578020478609385756785428483645146480030473312941683848824619427905074772081786032588682913441577171034065769355232243310095044798628461790230246155642424833564029628986053338033122509288271156493098356126356548508541821956447282864237858810739664866039796867178105481303341995681155609103956708352541385258044674233021538488882256047867864755689487264233200251948632434367557411696985908027963208271722356561030717196004391383906360151985343954617673570213543813895091001157665808641175774156333012362213294444222039514585400935738306777816189406291014204426171617177142780096988819473458459887462124401026378144063946634234937478266777216707400466276855252285387625315985860983345555708831049494034215551909856922269254608364369447708759473754568912693844211940774320914411502602340550200223765229096489309938496752456919270003385668591424974211318904032650304107631242385298382914407054967999534142551977432253069569518207821850880260921220586532594795739409805616209429954329604196061909860469006839106493724703640208556506345365382655886368345271812409551029573250054776291206004935504682461872164043783174653715005083196118181680022375451553428281102240058446959296955227821993514685348539842528436786789259135360096841258032925547689013177486729459318947085055431774319351281557368747716393992737693541108230965435660525692480717964031924241664724388845193264670242141356326509471299306016413454162671571381531753658371397956451669887495352630248631157664761965740380082152914081452732415621628375282370868233950168887184531780269004718739099708910660900090201255053397723188285495192828542314394947620483330304687649237120551521237832434525777447953092911201834715259217245519280176880179885337857732604864405057483694102485505256429471768330406332418310295400408419432432940963470934061812695129941627390018523946146290853393677169776503143927133001591974399819542958121940959619409121036386106497029519948200613092346225268222984335952952211870862507812271819553684431413604081858429624556100379315289298469968791166103454024434690367788140204407001004669551371707738311759495150757612726027877731029702306303481073738582347882595922394576946021621186829772467105355572710477124514971906584017529758090618910480942805666401277004037346463984772905375809948144463853491825056157101189240572959686371293182284160480818545596306440473897493917768183499944319205900645179847295735484551449225229261645269968906429508149998138016622129015857135775809846587750617782253958791389940037001143544832241065010658361305409557331037342515976928994199426578267553413249193592307251067458813978078291350669052525953950112448480003624625092254818432528874435095079342421604083110240934432048412320452642368267544141594660095901465974593532827701312505826582575011497446990637441740616567155660949020249228616684830320354314707270016757257201734175571113012610174151094479944413698938350396910278103547991209738636261259356477694949886515282971734718664058449032335352583037449070952755124611382023143401658303667877578519296296527334023449638130475844470991345333618511394777165597830452951636561490737471919475646861928324359374967832521186421053437409487480470461954966554705773855950738645971740817037823241512416093275245345820788368984925734262305322634441156380026457447197182213483013402950350246138649304465256498219312777160525099167726998120704957725403800575045490582281116114994378718817183032439438208226746360325766986720916774835054649560456316259175632867603045141112409889552612372622765216331693789078480741915298207295555848306263838407170482811223590205255671667422964415870641962144241361255726603720198161298973619057586912427934170325155184902616599199143436064767051953442782556327831427853713857411098088989225849680427893366785692117780023838758363675203567047751767933295657237755027185531691483903456972232893961200648229859233228579781125136864313569508852945160079164443773633476981446295403950535828103167719751726784350601629663178850550389728335502140195564260831725188380387307159781158911038797569919167004945795140577149749170901864075423619030300911182620763077511907189012876305215130787412613925421216160360751332520310931569700798283937005333531483817004253266974122408656002783119309246945216360789948717449837131577677922669864583629782440739388630470181967026233829667565773873102079102987908580164142215769036178315875089633501680791005716918960107298151922455023391131279507844863316483788898011992028922935242614044660187284736254085622682834529882590617733762378374747202648059522912576707100472276664571181081828497963723051983320823361890551873317486588183597041968899647405888812769324885665206175649824784331136051942330320955997813290150374169555690598341682414758358005345032263076159951017735855589303019820663937187166738223420643133072273883753060709742405287892650826450075887658352906610591407918098029363694819236430463321771822021175150958737396912367945520530338753965695796553479705539515710152369148055346684802318377472296952509107769076222779644096906583067893946837767792663232669048207226484434581284994990609048194589647870843829686890438595763980976771026423557663089024892131001305788227380520948975891163833166047675665100986690807244435880890604269549826217825523138658314976275936944089547382635813595490748259777205666498345149897846304836074875260873003896477439834091090867636750095043118229481634887286877880618142748512183455056884216089061037969239651354971148328982756655369145281624013806819439797157064508394810115585016956024709722310092594188732446592100117958881002635994259708482658147888287467568985217077229723202214489094759132716574769640290873606782618033552995230016319587100167955339887968922205047010011389063615635451818872082020951265796370440182994059107927214391413065859873935945939866806647249901995379512541102421318646178957796346016199498645184725987268058320037711898529749988840623868356343243014613790813886854385271790938818469590098025543064598325239352259049625770848587072012496241155997192163530260660709931448706553743372471711358996628745306173083673087048269342745699715075360398067471245252833958545215646060059000665959497705967713122400751567337815731755845116818658270900111989799269094832164568929732353735566608022923214255026340432900765571233256796055879631067021720614281128969644791733928937006346217595371531877564139995663256573848449072798997910083484619753891994751816910829518221088342707669386410746832407567737548811686421700767615090296347645343686568901979295358016279996388099431659129877979491614467543895195928365541638941655634949364961607403740873577172023120167622227906175594503905136634860440145452083845427286042679614121738077233331267751337860968115995259442772881335900849426085481298429404772477164459261951878223611738672150293049444078426200516395163393367687521048654041265810615151381063263935652729823202648067856665037222449646098366399836365825764298326138044202049679510635928460540367467980830027780617634593554463824431146300071372144602579306617234168891833603527083083269873328058909495444334975114655549063249720495617631057572031874245243997961001300513101362881251642646541467566216418471740031857891367923431107308911790203560135760701742446161244397707823612390132206932904487297474667708365158321867415005381327784224688971310518664331206516637603593863201168061905577055537633677360364992716387876270201457406093693672211367026066251359512820184684258506560590497065152819145724007871945726278627820342047898093019876389613692251293554098133528921703415241378403497988370527212999054917321986991814063285400208883044316721908821428731628645291282887066115443721552877170570604616124348447368192516248043205025944481980530204535986716383404018559523989983031812399260867758441326518650885918827088514421998934133330104671880369209347348081232645725979472839249731922910513395615257747541668539314925713185740795246049806364284790354471628315103815173988609118640232034770300847089190756094694855291947481048264317280061195943077860015918935087735267314720428607580533653591482200744245764521762708826753820707439580086465928632736043303848285308853903855332348614871305843065583952661440745127334275983316524983354636338311850616828793114631386447872731549903896191810618225811994194258543856474840852403622495390802298101905113183569217747553051194324637039769564669265685730461935387485745474548531803797420197881185660590162228866272412460152679622021094012535010728078962481494326411253419325936549782831143489394327333139421162015929032280145593875719333520986496480401015368469256210183619123828239613847237761325489122341426463456792867754427053754130540233036035263170583560480037008121865434631069654336463838256630571872029280200897225456315873962517477987515356054666388335880482803738335843281234886361107822104373467807207148152456587769815724600397786335996139383096925464081053403190812702627052226018164361018089519728465893624253132229741126080320799891756070655845964271557907548948044677077363863257868119670264756034808085525933006104325450582318119445844371631130489034386859999641254958672328012330708972446485735538272452812683116142324976642281414157806727682979925482140939388726958044973071808687704736117992808583199418428491405610310555841404113412524512607651482794741704104508555513921174117909699949944138077122359611486542282513706246826158111267704327564719834230477914342600808913796656021750262931585150361150826736050413848790484905133275593843111446885863249713473516993295032625202150709018861820843089366420307862925612315011763286059087359702646725316162907318251933248352262736009240653208822499846306085714364841289204210934994061604517285057191437038278296329720531577065146776291030097029355798319414150197610941914453739920532379971545817364964168876652813969275610223555143453902384109425782195979757650614340946753732503697778300949396933922189195629933830643427842357993425928608221704765171398421314049866443720720332523788140277791693319134495238776754114249069486675919919115524635059068477480012114318640538800382974854180294512160755863961496844546963247293230634774004814278524154396815808981949969899661609677131701008847067152145047651867360230416267953917241882452727879680761316075541059208603633056503562463652855050253493849478608019628492062758037223414401417765687997128882287982851856003322488026022040865006856147528873435385875797540153930164571391471671391160042539309854941702496529294867154798015788742502152230116550540162661693692539273155844284794665714954330600878709559778016078241522501246825227935293632552928387677803748341379225975660508623451899520006550271647002585568931118574545455659515660038345490294841747607977013620826761777237291808944805985937922773779602164771924014259621421398152048641717356805328377078270519526709847397617420484043908676504757819931941243041177123618041199834460478895183606359631910158614297021460961506443641195117499315571630596201425150181128388605065882437056059202356631642243208507714451165052845415067097808080851672441966218691001993587878740388639996683623023734138001598565353767664950990981120035086276433367022305016868201908444769762114808566372599134247909095865960176282379704629611831845169982707258625668463208361346123275876520219495822276097730472791775307022937656401471570150603123068394019432703602830427629891416112019683710380141408360658819167165008669555364748658228361388799129393430801106411036742406503306803992584318621042791299946447585114169600357210438157957095528391813802687194266709630039430263970789169155406821880784658555589183142366431661016710970043339646209991971708490052667399949393124645885563312313000565256168576816471242098741078655616401684618105443606700332167319459199324804559567998844314002622600802628881188006088161891775688908776969324799915484922813295198723011775033753773984506158063112672102525281790176367584254556349673906995336472433972094889433283905354468728810249741810297092250546619901076403998845317693420655635133057775389193863669306991834605425655868705164472180005264501435736678480521635938716050416503207778590785511538467619550627020032108893492813556129597923638223179897023498575923081788821088015804957415400699801583142361538757925647242388065271363797533919781055008828224632453178217449526824788604797672702208962436493342699356518705273202494331071951221069318730689993098592688654567904468057095325225333473423398110323034834929517178574105226269026108740903170496491984283872607251986315802385098293436390674754854459924659801591397981418582800158623004657928930499141495824770952134245875818682387530291630027075762725947865821227819368622145724985158466580099763293854618850180801176478217411245219876559766971294143696106113612302343864027910528445943043133916663267112690598511400033628218370711265166997699353177108131047643498369142260604016608498278071054060236977815657846742243817272015351033515462368642825223680361745623868563711420294182888855363490410712215539677378212792938504001171148596659381275262256682730800334574549206704438125823923904766613486206013683813771293988827994751308475891995988301215387152574419412381447476226068834648858706639617162206593451235290457471618073014725679837379893842150101611995440452298353244439201356304245337965099464541409401494998025031536565597836490234188808696463603490112721627711519596821915331825959575551885212518211442269003344859271286227913506007307492776291453029668960179359667440503179328412171436131912330530510150770695249381710538279056954140700591999368475200255875436698833909225866367218550888340455501359261125896501916510656688648535225387182212843221884399211433135403492193025160357801967177079276486051857093141011025001336496825522387474808295736361392021889554180981081598463622614232871932724282534643030508717884192962595416173373901132147755094503249975052901677902751297694205366921037547465221635547109834317374178362148899395469037802172487094585186770930012509897916799608892358494351340358146933481155823397177111871069488870844726702308338279055819352376060712105984288779181524985526892916898169771532756305479326497428699889380770355624262738057395122369955283094631409213654957473184032227153342629154545066740409513258489251745894951453040542909925854317157799562581760030422099105501627694451657079935138142010860784796990853862871522191280775790778371590639687771159316980947819357536812939905863927717243432556756272342151545076411956132389217805472604221690864013707763682018315188952607119946758811062148170296556777942812437533627450340974634326975205472489671702387269156909914717782582977963643216463960975465090627229265120385884158666145053132529879199674915773930220784503882143864875273224940706693965405173279072485994435371203100135615211846813669839874064050008341057733642309562593482175302832142539877643154259022027570686612027858107329925902923992533804455918636701337810809181701161499325971154106538957803193456380395910615088491686184579554366213353862404529468229005466380181873403409584627731219911460708898848941094056348224778795961427666141965047354825879067952211675767220530116000295439261008669342189007742280071068070049356315167614419942532751651005774976056088498859079183494367859475921643977167294332870981630985883183324300422297953590981162371465213620389531664792862643382599634861925000395120572493802624931228823781014097594009428931662915167760327883521129852617756650413448593360913038295175844623203494974914165179908375706734492901224902529747574979742050002106663406003731866003308390615816816885072065325693182794964309658585406733281728826923008660251012331523873157425596492124889226549015883614419445399308078104363183239762732476535449006179002325229065282571464204281914919738887388806093573140020542097502020482802396957530453128838606753183180413618231714722120716858511620673458780848212762689022503174722516119261588243338767449952444434492732505531744736476097910021749893176437861458807350602081308059329158498808470348829171596127767256507414629365764148529834296644442209403194238593555813227361493776673378092377609835480829848834776365785714688656577506221151558342984932908100108088372100268085844151793490975148337058265267421349296237603497728123188032647729521086794670644515840940201571775430350624975038471658580078746878268495164463287848960878856056346450934896163169743105045165581323819513175905223706128682491544237639104590089628822641723836875903418320273003356617592635747925184879866743725876316742503710595986069001288762512476804118154783404812514751164897754250989522763124616991870608224785876468099785756699995690777785521839922485175041682536651172403481264582149129122640889832309992014062260099244291268883993005187894563801642518228414478270295351387046868187081518459838095851978514656128229212018856271178656781951865372510349741871729755268077300762982107262353653936518893638816222941960957234072662945228277096588212009569956941412021462076133412738736146790862165840981502021144402381041280424251250883937325527577117337986616772117322486188058793070661939091520797904347760947648229902630915645259852652351426082406577287674223134756799727233169989521419114425894731716176653550245770496344605597265572794815166192064124403378151092763885978383102009455257854519465550301246995381640601210343662742827682420934279626373395652395999817378249059327854481350431454370932564627625133649242512820576486994269314077980997512181283650077115840159571482838806660739273917501233904422474377532434136501025892293378909898783835997744621072578866963094511489842039592491140393655505817457506101458107717258837998857511634160292786691167461904365591738425550323512909380910134644272821236782228219560211903524789255642834093938631309207016144273343561768392015946096695071260787134006919955539723059270708621799610107543927526866927300423827447908075410338089761911335554236211607220959786761543017923621639938468989547957660767931657662555862328888341958281025006331151526846302872456080086024493507245030108230400783031595576151219819834046954989509826434061777922015202698717273136926158519899556374615974574751476743761878619405436331799448199218707421684180814768572994000075233007328760708771469685534860487027489184792709249535333983754626094433733032515199669313204947984860617843400446621737370155244778071837898583388336317051871475231701394053764483680409312689893186371509520310162182341717820195936661217314875571498709625015897265778525908426192975934981499327876012898297481801302513955401656740742216850342293182123512761948372907243591709809867936260493428885126511278718652820255574252494032278725612072481843951172165236478241369093618112853011844718845683244161791308969305441124717285732154355994917446499020686931075617421667334186609165302628815065613660124919531779983740755489097111398429642375934585615080318880945851714180064949364535973649030877678201116971542188813985546353470746080703026718628888167099094905487828127808372458317234986212227785960019744988804796058282310039384459545585269109729037178184648276479018986182113845519243079489398133256876630653378351331911274848188248662596501979226917582116118414287306394568957790733295371259982778148292520276396147454871187308323855969429534148144661681789463134733719964597750987783364244289405724721486331025051689631320360354172622130078192112932513759893682282761898438094232952668404869672405207574076058791075187428450213304735992945688679113077409644110920248046893065024931964522048240938556520005706710005859495886813562695510970268577213963715728820134124358408738944689728844164577395064088737288423942837489012346099566084287150267414187495425649479841848385871962820959477885446374521648256438103084109135495704911087255494677079761801565634611237266318594849791726944047395235607649191909852897356458928629738104459452802907338153775097668122498603398192996423582181648082577188518353374547684930803109595187299401366263822653454162234774772311308453961738397188217257178280423339056239809467587898119899705455896748544161972100059530059884503731622192443130376572006764511595596363774526764097092375628909773455008189308634710975487576532392383165983021315524343179231843380356936802680309074711077530643449857659333638389866129257243516335469244971824181245127687203135672398351564301811199850315776', -); -test( - macro, - '-1073741824', - 5678, - '28148898337860105994977487045818154315885187098857720123923019503536550068661096672354637598480165134022041984837084308868395452311053157640615896546050985553558586892645700423928507935726495168161698045415140497515602386527627319206488017355554288186119966734541348472345944365178980166309150611812365395806608007167010671798672218072170128957907439061754394300128594626814429645477396628406899347464530711061456854894379095840425674956808441653400041181506139011927908393244086335493121681302022622095101860620829845276309901056671871394201026397395171820873860291913878080280170380979892472296164150372296767377145551512657194585337453691634475382711660977481092241928982823053143625635560423178221937797712042117395219329456302241242041523769729459117196674726421874136677546084294826873902192894352596290458993633922997209073832114653500019746006542685067098597091796593235383026677957632827401939309333387666537839316094357314127534920705674404309028805143966637229018794907522055172849778130036761405770603918926933967928498088220730576083729725145992964744748428164200419463740275487586933626822729962824800560240761474558428430552602958126365583033236298214451648931511755996108094562356049299254807663118738845759260918867850503834415322452603653397365429159370357398957195114808416983753993622244836716555146831907033098694343145327951581021334647653286088313114479559741196437718942355964184601385362964266877652784804939052253222575619622416395426846679242522689602653790030499520892085577500725499201404182852867226125589028845844427853042309885329741850855526415975172436890910632693916719523636332471118794070682433535223602563287248795595868253883675189904726519119448801915261351526420699337492762857231988691678382926943587916545335155283702413750409505677924941689908432596377494319662783929468093868450608410231488451353317560659020100954006099204197631204922322164052615891958008133081819761014762487524836715828049458561031763108536694043217084348793653430411896364791299284106421121855831489687835195476115378899943269695006351002750960984964426672142770799033138424141023720291141340435508636127792984379054343612312021179919125313130082850457997100339188672577640528770106417201838870495993792046104170422555977835287298352499757882230600591394487250631375216854641145304444397854662472195749485109206617330733383898435103350307488437904097790795468490159665178407362104384319804361651012650220132889393331591715558188458831449467209968941910069520056730023723713589013657691484906132221013788386184219197754113246865122654385680123164873741763553852763331300981166654373006819001402186381647154946999554421873268375821628561307292124869782352332192908982894920263895011772173577732089662917292761688897717750366293629569204248484060863934466108937195948443800932184673102763342937824460121045896218443122360882698024688871403860910852370898051562718960418260546695613954738347691519692022893663002976632717861663007580356823097781646192222209252702435357691413104372734064147456843965665955652873096110765830684236182089087886565807972209217987226299585696168982138854941280194328335120626512261001331081248654357371396176501075032152655115462224365334172115688122152776903406306442312011439667376618560819888585728027310382981804901247107028140882078332241335878660689097272500434681089309886067525115434143986130726703706878433743992681042628744048964001570508077876948518135387246241479296880092162188798942915085422997374189631465329853471853984489176174861323479075234363120290867769013702739919612009426292832097099802965008680479851809369240814572285623180146280697670984531193650342503967101652478766807739947358226388629806728654389375296457819784548065774571293116718672409678564611844170365489608651048260596575158516893594390739121659741649999445353536303503061294401994598214548838049962733817701620624687363493549713852174836185700963467241090073849191740103227875513619343224494993071747822732607018496581774525356633102020037794640774098109121417106381829411247224212510736696706825452538654935037259956407630578146638429226378102600142256743099393349884190724617199388463752205790794440451940454605274720879574121263752007572801341506805655067825631941739793740936589208965150634092530408044204662895618653609322262359163887982449970383124228287512441583793977627962068395199273400344976325835945060297779883770211181669216457812349694314847337342309957623761533535923980598873005880875269599846465045392510668257169787436828598047252165951647190114307062027405441868359474835271630041202717715681530050858890904183091778324015733255757236109101580482580441967985828890176389397718041212941356619163330226370976268329734773630524413753494529257754781863229577908457569032718062086750844184472834347570239536056326155201810881038696860481717433476664625621082241586991225812173672952437197866259897373157784743844679729067516736518800101031672599250959815137720332161848205045025007611471141186707050967888154770682560924038751737207811193901992570725369435103201791686524505756647772640472180936813395743439078761800234463478180846516292693783004681080895964724137021083746991000603574423399483472642365997697739565793596648669477318614358267250383134596038860702874813526614432265002227880708968988988737493080405962374293053076826540765411717793130826541346297462776836630777435661531826481318792145062405811198530844655829858226912380798813160973881440163721569917634885574462693105998116146807054360746972666730885604323790569427284253076223964273715359978030815340692680006321945430455280199860142711370872816427712142263431097232719784998704069638989755157328661993441529401194894894909869599801115592481835323158814300011842131902588936147873994871847028405399169811064272549350520174591847212829792438106825404534383049157807382417071716548998177187833979248225968420666706416390190707768457675226123463626193995384720198209759936791376844052254490031460575054413862573529726918023653700705063568941702083630891996044965826722959248558923416329510449787545274111154340053470755669172749024818935495960038271562190088388398068258567446215438429638813416144469861387009096942616760208032476355018814040329680679835588802653484030011247737226987035720770688024054612187818344447061414642220551886870397419965104800759185726414865048332705445586347178339611571166805268460025130817411913319730985020314703929369141828244979458118746350794440972469365515773623521735815053404694400936400473790547133327308952286757212455297814986317480141532831981218157144776502263149001123086063793023408647358626440541879077132102385221082903921513070649860566861228278306927456359858970160082545255406851398044427390606896847739909856033659996912142151062203182419823681576029939545766232546225798544936003488100493795546219182495490312417078545669619133839724414087313221443223560772275469655787068013125130766170757522755288995196083208632760367504798374588838275982584188716625435557712975930208506356967363937122210773117642423759034688847074262569157860691733884420095472655868693804788798853460305074114676050174059869840188238249706756922707852403016294480987516418402809622158722332117912191322396344308046005168529470763240755288495911503467885568547110796443005962189288373077954193026536584426645858119360236884973893893358131236585957253729142968547596265350388138211504681166184873067638534159817198960647922530056737171392998222652344768890440903942958874497053450492657340534404950722261826476694600389620993991121412934627781512375531587430119694418600921042491946241808425609218148001707575278154030998716384895216667657329409014393641864525969281112155349965482510043869560234065512374117610382279304357796353832138535779361023572767566136655174688134341190085638519772716269105777397667544752112308407281551063186641110391181368268011784028035535033180997148034817583725977310854347328290703963033914233260949053078632664379976313477320469323833039980151301644772548530801510197665795747529811668583071320734297978242386191013538568847456151931045213697759408021294424885981327060102359352968094713641880316402184069434459849295665713894902493734764537578851014033582135990357328370745283459359873866508862907217949984436520976291123753201389817868962086019717213048013769401358081253749874316414733761110700403879731481327366128134414614015062028812312964841192776605772461602572237848579751596062846119891809475923058727329328606164325877380198476851130919034536367632484283364665496341548696606675798822283175208724674569561785917038686953070189275754779088627350245328334100342506484849574784279451309720531675563912478225243235012917746633631513142936777117922425886154614922105224375020527023628916774071542994620484847765716560515554737127344964768600124294594714592715001471003807303089010784319406981481509952504990850744144964515173603048334536187116309970688343136766612177268007668348523128350364138371524518071578343144952047467567938905941913593215582743180827679406961185115865886327377643057697587542832729089317101509237763970252435463768975389494971467359397430380888536860037432765702651569010253133830734119885207436369488914639018501744924571605683611573454465059643881519676195549227750953450440893566116496066519058403193663154983497437154203819963260242165229405208778700716060684766534758748916704009916082633385168020080405048885760694176577865460810820723540078488639369178154320241426505293354277745875660846622369288568123133292561261235256785531922213375332813363516492867281651918872071496312751377718845934838314667391677793894714490889453532680855202389134062406106528371557396680459568935062620695390268278489516786937751530412550577162465259150382716339278325770531171352930227692196632869620798522311181142960193953850924687498620070544338109430949277948159507329879155210160241450119748611369522285092212852813824570293032227779647026176189223572123084451190061745506256343264326562147424832561761153522386762221700802908370661822157393320044695725445229989991188431755677388407747966911115439215417944956153478651673184696643896949254524276369957021748106422271849652943735723075220056207411130072896924286451944171527022637264455020523596282445070630771934761579048221305568215457139994617211411085307850660300120371189812200827308583395539820589069061017861328862614076955537014856977190049697039330309651801348304720476087039640721882498623638587478814436784569169724978777030982272340221145046578552827191352546947143035275990939793413754422719012024556590240543018750125119716435776594606691472552962887122631806058400823255622524530384727573782908089505801222820975600456796411789607997183949633694399179379455469571927557602044778175978015388866388477893024649939309704230972907459714140113585529896807765412294459996359442449522528811461650087362667428633366378783346662514627715854569781388778149878012550900142410424032639113511075518363232906427235201384917342979688961765962102151375425532423292393037112830729746922825304316043663626837496782405688495899065655537216405612388901278198928051245924054604064320232470222166534446528962122067805923069489828996675843271638295113384222501506572543452808653339012061245181593399976731212745904191650313808438588548016446126120674226308029977326300360093713369252084641668517986682964017531891894972707847947894703397603382187246975964105692629345413266060528347071427038400660608705761598293765664181968080597125867912583308892435338706392483149232139991310577488003922853083026387762353546878968616781786702320683290245408076838623224983658193002922968799601420269991247101304606880493000638853120262969345837845575632652594203162116188047397369127024269086257206506049305152721408369249824397488170653226655559449775665832715337829296847540526548358288035657313921214610780153539347835226207976076946168876430114358524272233723646988855002094455275840302962666856844081766293291452137772048110790637266536704660807449519739327018721619044684676011960134044956848557708417750475836513642574721735576244762978717150713261667412716273664438107629604313094428969497371965141673202051915817445633979326940820989733688568069901109275117585286470786533583664247227757623461868123616550942380510328263064047797942151063136084100508835563648567547381317493212871351484118995384664462190866589013506449874230637279552571417457669151996916924270409859368135881488538365606716772030232698811184558469064636039865808366906057231656211951193116937650377253371722258540457313473237383533121791937083143459043495393649754643213866611930380243460376842178995100338772584518299046902703748625190488159098692582062884386819474282872980115522829156617371896871414855580179892864231619779226423289057203279126691229766046555328864768267364321578175263384079348441103395394618249025089795196954124821643685972538912223482310109199583464708899243992298931497078502095787511123559987214651034665741434614829428967428333802394306584477458469633359430987362811953453518400356509454058669839297226788372776367280158730642818372182875605917838630804855852420246178189659203437587382007313143987554772337361728272583250185719831437811387405182412368783988197961286391351624156213505940541094805465500164206288920572949611162162113050402038557325431333024558950631067367936611318153854810023507303764110973942973756954917700791836575148652033411756519651474800034591874142970228482783950150557217039469375536911748110596177461367744944289602462137274637274069720165611598466507748445243616769937369465337749866771841938628315536271843426900115553507410869477054081430287053781532316668174001761433261847823250273169400494042990324465308492795796008958697421991828212877366624163731089097149011406345956531300275914140023841183483485265586993192321555157485947797690816166469044557255832260658892615942710042684013595996265472441252752479660126933682227709014013002675508541470117652788250994783969626624171862885916722522793464173019418067898505345599496735174015977358875619968199716219533552738926637031051890494978338580207273924479022246491648620522810980430864243281885381172828258575698372088024439462447934958632586064921165575955786537269481483937723577490467737221720409666604585388204859474442997324805317238786488235195413838346371458154199153397286434670625395599277956221756084293733060481746683886469999967199808248860997598988465769993529406058206112180431991132713457015628241212019583216636957380809911503435447564199491276079636441647078944643232895303344668713941249744967791690209229128883799300994462500424955736495750871431874087322800538276593777301272661937240773237633293854544754939117218573431236413676044727898884777030673570034488739595200946297274238360844588881821427893674692289872719794617552712949171013259904704167278643987743105273334320443413659380726864695786527091362412670288650332875617283949480199386204263527209082186767929892326304543956845184355613429740397723016551419039154318260427281778819523773313505580722929854977110755322952416544942744038661223221183759746326498482668536001557277096914159111874312153517083375211013183593250726321533259140501285618966863802490518474254707070066879721010077181030496698210597599398932161175581512349806140123118157674998684530687977209656109669570842567739926631008487026917889091286956137809901880327742971892768270601951934752109320934869765144253043800750296293513146606452851069332013443570630554704382747449487485536496427956274784905893103873987768740604182379428000525642086938721704335210558279257980735181414966979314982367116027137599914079057701202907012346767620471172401133094852140947507709878927974690819147519376781258916641942410215263854181358354623399721795114283058445754664116386572155146227613060724837022655475289960130851827789796741182786701725436689175126115738951255328459283705735673792038332771275966384139356869886544157959423900159524818315186940605161679257955706740318466678645508179828694369147823415549800070451991820864586919375260489703149506500802123898113416334762997208596193606353010669216102269842389887094552624430998968131186451615404193377168588441373578538825728592377440448612020203066191898235515693843215931480135839738134274029581253133656093204899636776425859689995495873537309952309610072133005212939182414561325696226801098867717882906061991955075678342181331882095542089225604653021264291770836186590776579787363667069660002867694074402468427249988282181175359142889347493588450134025762040336381857980331092417620342654222801867511538594654519800002440876114049836951162662750192372554175899061991906290784393548297931360854697304660217388326454025385317464060515392460270735562634219706400179619734817004536958508273604064174329604012897892903752485301302318494759650641425275359084845658186671712160266483012379281979192335879671133821261746570768835599550683335228772226084199813244119457702012788644482031756025391901885339469726868198018085491130601667643050694626140156924968196367534431524629400571184798126488006430721476852350356305114701192180938078185596501406019121622406459154304979668159832955371593225491929291926247593357479974910111035479049436421729173094079651242582981533593842859642090017067207572422151856331378087765898272716477356116505494492527760323026755374093035374204268993047047278479131391553691647838872720204941034872333171803661000114147594995620657679606204475115479977905970944031101379807757313636918891924602682562733654982817525199083912568378542859662922923704736713241305728532013661459371953714893728644715593769353695924513479019412720277833400288463057686946226328790417273092172568136932546842785412317831005776620608067442091003848742510088030854918907472765326404312356309549410618389906172934527763348333129738356175599668898544090809612543931015042371463710234727490208128449271087498194070337397932790231655494664919249685556900070331820527927700923879904712981785622980056040860293852786608014416839444705794599237330395343625677231165730337929171123427679896358733212313404887778628928451238376200468283542093779290360409735166492249355597416078350393046779330842606201068250136256437582935384024422088122049514231186924987486386922255709770571686751402668463117086056087909722759647760111192263760999074221853531262551997916860630419344885774566813330605196726150306444911793623636315706197278750196545874376400639813558827027494733550174136896390860197943805543393966475454387001187325653165083037204644787454406449433808128377060422465144611339962742733002574791924410578469257487544550966959852204997217505241888127436816371252790120771208092431156862674023113879531236174297777218690854959431629046382150819392457019720688697146956554700635427875989653883984765265971447058319231040626981527727045895977255770905523050300664800936806107450054604610397698279501524594807393099512501267065236510023558743136424070008416804213522349576537960765214664370640100210453084611914479027691656864136391290070746628452999965623824867446732398214983818615825977108668636422441563513003831975312156804175525835009983723583171193533501782236576964961510324559549005090600262768394195823389119794969001830645368080861318691095973101919011548228483763812949239379397626324227241369442235711216350246757630159193695160367142155317905915084581982797609343509326821521911481105188403479863217823202421104691839244143919644602509537137465590142091458129871968626743829025365323860594221268369465152742323854658707635430807412874755583770885944383748932124569993895933658098650493753903580677968213439946116629845206367354440478040241152208147047847884378168346630550895572113154003279420848335567732550380587563785065372446579951171277007080376181880859588508139391302063701382117980942753440726346766393542850829543275168072355642671555135145516266084215524110054708924580833152698259832144444062702113296080126316162775848061402470651419774813974402257085656428945474157242235893836799387584558606751664927393493334857578593093025923033903249925802452928325559868490477635990253074330537697360009102142806389826773193350715830565814882983312166010168578638318113581909715614425901966904069916789058597977766919792967752743913284801516270290058840699327499070875081504588210302710253892626213023043634438957621385860258666727257127841683811540495720040171541891264342129606769050464645389966030356482089900989596777679522985065453229500095190697538100163379643439267150956032532346334280315920319424327896526362404605954432140230470878470882264003739306894517976684362812045551613042852192669772965726304705516783708137205632647644097851889002247751584331244400558203132964873335621281299717509879304619288476150109332057109283431502529001299150493028581031388664548216000769077942923394288901958119435090722574806233751271973249874552746532634460237024563407790213999716314923882457446186579151315812380783168745156472877906107226071419443707680584882191451197597628219448713650209673215406805360654332701478226078972457384732586255866424341772998013397576055716829423544245310237330356105227120287256517184974300181658805985949145921001482457911564043446049296375077517623765343452571128748736683475042340324486422980741771950961157672017460212375000343093255257855859277198951018128053837238080978550325407234199361789853768134577442527702115229975219525718789959045191073349653955820878281896398142889923003479767972076383190379298185808476922809215238314249626074164796021558425557210308754766801631838440222800550783465777015428522380797710835404996664778131573332303144318415473153348891859475225796874442481044462069842108821743637445608331048146899622744287339341798591369054634267513173964115613718772637770100806267461469864702974890809600842718955909073251470396524319777099477171768967587473664352749169748604394124828227185348843004451978265273237048553782545156365567001316028448768834710532422641102380518061679205162015773801588206664244457180510418277261829269152549407626154892937631258492719033672820382433466745502235228363223303303588498621164057491411472890847331713440771748363429011212793517034275378352451698293411530204186563333810558260562682373432930496010859284665817691922432863011084933699996961786462463745048747116470391194990030628015332701370191200450760857094229809065249035739502022559141983819390742711457191605178020143282612262800696462461845326859864102767722533666771388582815245205576926226742350534264234612616163494445478555919018674566723039443492562381116590300549213807725226129072939143803666847794403804034573197127632276495815673691688391776493042924568568460383396331869780349811708739849417094527914268223170364569506352973511214621114908992490959875119891914002201928543340360020016065452018805546551793704705117911784155214540116673803430547871133266630619513912440304683435504710983133680288052313077803153090031854465575440001750060605408581808515948034989770356122583873261823440265390089426304521951729320287328409207700383100123151876966524323583031388935239745236968350327632037316230013986711095983640286158845854503322070918325810361899675959053468566534714906108407864581052288055415062268431577178677164927351157974624449718170551912415953093539272615139170040559982269069144788537260760097258745113985468798064087385257717936930463104173511481167429308423462459460962543960069832104794421579983837186447051182599950438328122680458288337425520120137574451732030637289392014736022854027545044245408438033635786397265945453723332808703182454632061130743471916259007228432728541803309270197500946096444605584853072197436724505877621601824420511356681513957999452264448682983769699343994225768926072658063255358146106163505098999696551897853532925142643283744909834395865851620590128292004057571404777642678387685668703868806130918608461650915274491926100585166495256709407294941727457418325940432516141904359150294292748288413140787948986359366462074746713836604803390213998570822968145438813731705421355204337496672010739199285545674998128780178114493708777570231591229449657604145369857370727860129063567167048674305858866375066717347101711427057387739505853397158515841254093617246606188397586238440372102294736076889840979753873898793143249127390280808824855731104585046537769857330026521552755052259518063241611856641516275156726512986189523254888151278812592686063111446785816181415218227445732930445311585144011106096911480434585749527586559521968949018049836045512020729497009550286634399863511982953971128118927749655951377838933784252855345681378774160557470438174481259093651353914975509617330930104363369097847558011805545516823230152705422673827213285554606402424177535395875396349439257879147269990316570555566363631107873583908853302109598741956597344312363552802425107351220022316890426842094449146094093908848454232919398697089400054268720672186047939476318363153358024503206934420826394819801998769864748411198961176921530138349929123130568849437161791761185855627806231398428339981489989031517554700169925879901481360164293541370512956624760397990743413674286804847840458699624232365464488482648339370331099527120400687180993305421299234942550487704295774851922811662380580543940934664708380776764694636606791934436854233668907969931816983166891497973095943662588130142677860603610047337982454343702508574417771555874499100448295382819121831778816886809637030681464951442852987045658744822323017354193015398929135356947939839140306698866302482879187121853214437761579840307617080110522099185105281184531897202070221182174780155244891343031372681720259990267379551766505422208965641261232230697112205687652134593678103177579970271087834049239379072209949397401559634057001243257514833108769363888955683621052565237599125728261239118022575912894175987408009344745117251993238187747886278888586407900202408943623153890915214818002421838815923966958787049692850878031566893781773464813916368968542781397442084762131956466252849726966494397504673443856343004132647844309750841983656463183520640918053128194362601997214048354393807871873141019891406717655832279814142519576502831792032213339668060138693124678086147323694655541522077131244528253802212257686660195802890422055107005242552590674759212912277749904354621960351337529800061117715230093493340418671330565674438486174036271062712551650355860019081761842688678384695345181209344993751433013590249265630411818871254942665247341590902374863056013659912681932484952788985051121820811227358115551518694832616404366490062429428314767614403471928494311323127965060377740115015320155059011183773686991112928134219938238861942579094187368578097611857130108971701774055507254283957072531780780052063471633303056993180268811324636908498651379339810544455043184362168932560296467858789354987134340096423851366091213584971916411716002520202011394261611806506910717102336647860845390923567597373075328613344631519251210849547351316195902683921154170420914315410594227945953667999824864089646190094752335728668593487864038958074636801121239687073243551314746481125760217832551027923488199932464686665557283280854081782932546169494512387423905425853523327120893410410728807263709579745414874034347298836164872219912390950976376370657059966587673786130299383959548096535839326684422935261597602533478601891806412747416883653296136723782138835982528170764256084886875777597602961751140496094774423625070287438285325047835576946313794396636877736116310029692958421411875762799468941694906926445604500237069120930529645136448763546020507845697850054138785172342116922512128840514349291988431425294645753905990244686733733410385281678970312606729383537299554607797672907990394591796359202264492486835738568186180945133516707434961240365199176036679479430505970223502962244183781380913196804818441600413779120622805317818799661043554644440443705675483765184690435438142246744131509594661229983124492357221608279423279364533295157372659250705441584344308292111187384818184306257974181607894350319552740374868519341191483135283763350477192196383786427703966689423831363409240725954775713154895328593988160732590160054997239929414823714727974826024035217860503862168944433455274636864484104518503915125790030638481521747050177942348449246957290358941785218596751364264136325302012127514536979011995360578526074657060450670609980645092613668861127834866905147761396712739540375500705135160407800946104520181528985815263489926159911880084213321212768952431725838938601672188812651102720142982130177098645113732975494219793752073889227065759762609687893651335914924691660042543013159140121403093465609000857166311112970382917214818048185101582696684107408042143042945014390810480019118356949537099663818754715059209366691270390106111853299655506660134809491448878987832685380104145003045774887739416422218687559783784403589016023706079260754932303246949584114360114089506475306440896925694575031099223891967798964042809303692120072723649900326855730217433709980256225249076797838874125035531112686624813374295588750086023037138555024936706002261539102751472102701168353855022613318138841001365460254229596701129402640443828649877042750795516229713646589327314125732074265431844531268182493212072736085146019842646560868628969743149933436726067266230293919685332063288083684098369674426608064526187772953954892826318674314993417979569039823495888917128289051117477198054203719038275454185022748040457767103249901035731885373830510569953185345260681492090178619428435327767997448105824239005042284690390909455119903699725245439425773459997919739647511506450037183108134359259135471444850889646470849065205304395614092274471027676451130301998192579884981980383331004755985458519740718112147812962705310617555010259274607985705228893551463836617686124231748426817936045494654384933976330192421266623131254582148198369659191509650211552964003305770959771233149223935846202962723117218456932567654472669816733803847092639735772223976250554596127643265710435182191800068647592743527104298607516812775387380003886771219532565745981432787326595836968342349008462815121251789385562875463614831060974949395788692980727720786032761748572416672895325498419331366014371448904732847968285929375551256672205371236319010761607531035489389025830582442491033340311783200278400330573275229324139285691959682207033048166845240280073722049031522270750064451502205702838802314453492907125113196867357626343878692666709910893945062710386453480965984908868928331852364750709250772228522623061255781933618377709440518884675617168771208213362028807000568991336640250325843144807507365386167323430530383757386514877678566741578803351624259009223626044690394968507237740190193077024096179943106691946391713265839010095279092109535492123342892233114535396448888859072578357724845567858023341418639436957064116245382812764104096389861125288235620089839796959708844667271837724791853923155783350300837209697417124820469598763421016230556944144273578255047209140685603269167269642662464781417402044138800193094975708451596078152422131206951630446037496865433989208174418961047669463435692646401380865304211042807149992732461476622644253291650530746199877456840901162470871578154957110644808251440332624321213214254142116691052442993385768448482702905034603814208635913143936488381755746324155738630413306167461255699186732545319102104515653378661263778599973833109965924889965578020478609385756785428483645146480030473312941683848824619427905074772081786032588682913441577171034065769355232243310095044798628461790230246155642424833564029628986053338033122509288271156493098356126356548508541821956447282864237858810739664866039796867178105481303341995681155609103956708352541385258044674233021538488882256047867864755689487264233200251948632434367557411696985908027963208271722356561030717196004391383906360151985343954617673570213543813895091001157665808641175774156333012362213294444222039514585400935738306777816189406291014204426171617177142780096988819473458459887462124401026378144063946634234937478266777216707400466276855252285387625315985860983345555708831049494034215551909856922269254608364369447708759473754568912693844211940774320914411502602340550200223765229096489309938496752456919270003385668591424974211318904032650304107631242385298382914407054967999534142551977432253069569518207821850880260921220586532594795739409805616209429954329604196061909860469006839106493724703640208556506345365382655886368345271812409551029573250054776291206004935504682461872164043783174653715005083196118181680022375451553428281102240058446959296955227821993514685348539842528436786789259135360096841258032925547689013177486729459318947085055431774319351281557368747716393992737693541108230965435660525692480717964031924241664724388845193264670242141356326509471299306016413454162671571381531753658371397956451669887495352630248631157664761965740380082152914081452732415621628375282370868233950168887184531780269004718739099708910660900090201255053397723188285495192828542314394947620483330304687649237120551521237832434525777447953092911201834715259217245519280176880179885337857732604864405057483694102485505256429471768330406332418310295400408419432432940963470934061812695129941627390018523946146290853393677169776503143927133001591974399819542958121940959619409121036386106497029519948200613092346225268222984335952952211870862507812271819553684431413604081858429624556100379315289298469968791166103454024434690367788140204407001004669551371707738311759495150757612726027877731029702306303481073738582347882595922394576946021621186829772467105355572710477124514971906584017529758090618910480942805666401277004037346463984772905375809948144463853491825056157101189240572959686371293182284160480818545596306440473897493917768183499944319205900645179847295735484551449225229261645269968906429508149998138016622129015857135775809846587750617782253958791389940037001143544832241065010658361305409557331037342515976928994199426578267553413249193592307251067458813978078291350669052525953950112448480003624625092254818432528874435095079342421604083110240934432048412320452642368267544141594660095901465974593532827701312505826582575011497446990637441740616567155660949020249228616684830320354314707270016757257201734175571113012610174151094479944413698938350396910278103547991209738636261259356477694949886515282971734718664058449032335352583037449070952755124611382023143401658303667877578519296296527334023449638130475844470991345333618511394777165597830452951636561490737471919475646861928324359374967832521186421053437409487480470461954966554705773855950738645971740817037823241512416093275245345820788368984925734262305322634441156380026457447197182213483013402950350246138649304465256498219312777160525099167726998120704957725403800575045490582281116114994378718817183032439438208226746360325766986720916774835054649560456316259175632867603045141112409889552612372622765216331693789078480741915298207295555848306263838407170482811223590205255671667422964415870641962144241361255726603720198161298973619057586912427934170325155184902616599199143436064767051953442782556327831427853713857411098088989225849680427893366785692117780023838758363675203567047751767933295657237755027185531691483903456972232893961200648229859233228579781125136864313569508852945160079164443773633476981446295403950535828103167719751726784350601629663178850550389728335502140195564260831725188380387307159781158911038797569919167004945795140577149749170901864075423619030300911182620763077511907189012876305215130787412613925421216160360751332520310931569700798283937005333531483817004253266974122408656002783119309246945216360789948717449837131577677922669864583629782440739388630470181967026233829667565773873102079102987908580164142215769036178315875089633501680791005716918960107298151922455023391131279507844863316483788898011992028922935242614044660187284736254085622682834529882590617733762378374747202648059522912576707100472276664571181081828497963723051983320823361890551873317486588183597041968899647405888812769324885665206175649824784331136051942330320955997813290150374169555690598341682414758358005345032263076159951017735855589303019820663937187166738223420643133072273883753060709742405287892650826450075887658352906610591407918098029363694819236430463321771822021175150958737396912367945520530338753965695796553479705539515710152369148055346684802318377472296952509107769076222779644096906583067893946837767792663232669048207226484434581284994990609048194589647870843829686890438595763980976771026423557663089024892131001305788227380520948975891163833166047675665100986690807244435880890604269549826217825523138658314976275936944089547382635813595490748259777205666498345149897846304836074875260873003896477439834091090867636750095043118229481634887286877880618142748512183455056884216089061037969239651354971148328982756655369145281624013806819439797157064508394810115585016956024709722310092594188732446592100117958881002635994259708482658147888287467568985217077229723202214489094759132716574769640290873606782618033552995230016319587100167955339887968922205047010011389063615635451818872082020951265796370440182994059107927214391413065859873935945939866806647249901995379512541102421318646178957796346016199498645184725987268058320037711898529749988840623868356343243014613790813886854385271790938818469590098025543064598325239352259049625770848587072012496241155997192163530260660709931448706553743372471711358996628745306173083673087048269342745699715075360398067471245252833958545215646060059000665959497705967713122400751567337815731755845116818658270900111989799269094832164568929732353735566608022923214255026340432900765571233256796055879631067021720614281128969644791733928937006346217595371531877564139995663256573848449072798997910083484619753891994751816910829518221088342707669386410746832407567737548811686421700767615090296347645343686568901979295358016279996388099431659129877979491614467543895195928365541638941655634949364961607403740873577172023120167622227906175594503905136634860440145452083845427286042679614121738077233331267751337860968115995259442772881335900849426085481298429404772477164459261951878223611738672150293049444078426200516395163393367687521048654041265810615151381063263935652729823202648067856665037222449646098366399836365825764298326138044202049679510635928460540367467980830027780617634593554463824431146300071372144602579306617234168891833603527083083269873328058909495444334975114655549063249720495617631057572031874245243997961001300513101362881251642646541467566216418471740031857891367923431107308911790203560135760701742446161244397707823612390132206932904487297474667708365158321867415005381327784224688971310518664331206516637603593863201168061905577055537633677360364992716387876270201457406093693672211367026066251359512820184684258506560590497065152819145724007871945726278627820342047898093019876389613692251293554098133528921703415241378403497988370527212999054917321986991814063285400208883044316721908821428731628645291282887066115443721552877170570604616124348447368192516248043205025944481980530204535986716383404018559523989983031812399260867758441326518650885918827088514421998934133330104671880369209347348081232645725979472839249731922910513395615257747541668539314925713185740795246049806364284790354471628315103815173988609118640232034770300847089190756094694855291947481048264317280061195943077860015918935087735267314720428607580533653591482200744245764521762708826753820707439580086465928632736043303848285308853903855332348614871305843065583952661440745127334275983316524983354636338311850616828793114631386447872731549903896191810618225811994194258543856474840852403622495390802298101905113183569217747553051194324637039769564669265685730461935387485745474548531803797420197881185660590162228866272412460152679622021094012535010728078962481494326411253419325936549782831143489394327333139421162015929032280145593875719333520986496480401015368469256210183619123828239613847237761325489122341426463456792867754427053754130540233036035263170583560480037008121865434631069654336463838256630571872029280200897225456315873962517477987515356054666388335880482803738335843281234886361107822104373467807207148152456587769815724600397786335996139383096925464081053403190812702627052226018164361018089519728465893624253132229741126080320799891756070655845964271557907548948044677077363863257868119670264756034808085525933006104325450582318119445844371631130489034386859999641254958672328012330708972446485735538272452812683116142324976642281414157806727682979925482140939388726958044973071808687704736117992808583199418428491405610310555841404113412524512607651482794741704104508555513921174117909699949944138077122359611486542282513706246826158111267704327564719834230477914342600808913796656021750262931585150361150826736050413848790484905133275593843111446885863249713473516993295032625202150709018861820843089366420307862925612315011763286059087359702646725316162907318251933248352262736009240653208822499846306085714364841289204210934994061604517285057191437038278296329720531577065146776291030097029355798319414150197610941914453739920532379971545817364964168876652813969275610223555143453902384109425782195979757650614340946753732503697778300949396933922189195629933830643427842357993425928608221704765171398421314049866443720720332523788140277791693319134495238776754114249069486675919919115524635059068477480012114318640538800382974854180294512160755863961496844546963247293230634774004814278524154396815808981949969899661609677131701008847067152145047651867360230416267953917241882452727879680761316075541059208603633056503562463652855050253493849478608019628492062758037223414401417765687997128882287982851856003322488026022040865006856147528873435385875797540153930164571391471671391160042539309854941702496529294867154798015788742502152230116550540162661693692539273155844284794665714954330600878709559778016078241522501246825227935293632552928387677803748341379225975660508623451899520006550271647002585568931118574545455659515660038345490294841747607977013620826761777237291808944805985937922773779602164771924014259621421398152048641717356805328377078270519526709847397617420484043908676504757819931941243041177123618041199834460478895183606359631910158614297021460961506443641195117499315571630596201425150181128388605065882437056059202356631642243208507714451165052845415067097808080851672441966218691001993587878740388639996683623023734138001598565353767664950990981120035086276433367022305016868201908444769762114808566372599134247909095865960176282379704629611831845169982707258625668463208361346123275876520219495822276097730472791775307022937656401471570150603123068394019432703602830427629891416112019683710380141408360658819167165008669555364748658228361388799129393430801106411036742406503306803992584318621042791299946447585114169600357210438157957095528391813802687194266709630039430263970789169155406821880784658555589183142366431661016710970043339646209991971708490052667399949393124645885563312313000565256168576816471242098741078655616401684618105443606700332167319459199324804559567998844314002622600802628881188006088161891775688908776969324799915484922813295198723011775033753773984506158063112672102525281790176367584254556349673906995336472433972094889433283905354468728810249741810297092250546619901076403998845317693420655635133057775389193863669306991834605425655868705164472180005264501435736678480521635938716050416503207778590785511538467619550627020032108893492813556129597923638223179897023498575923081788821088015804957415400699801583142361538757925647242388065271363797533919781055008828224632453178217449526824788604797672702208962436493342699356518705273202494331071951221069318730689993098592688654567904468057095325225333473423398110323034834929517178574105226269026108740903170496491984283872607251986315802385098293436390674754854459924659801591397981418582800158623004657928930499141495824770952134245875818682387530291630027075762725947865821227819368622145724985158466580099763293854618850180801176478217411245219876559766971294143696106113612302343864027910528445943043133916663267112690598511400033628218370711265166997699353177108131047643498369142260604016608498278071054060236977815657846742243817272015351033515462368642825223680361745623868563711420294182888855363490410712215539677378212792938504001171148596659381275262256682730800334574549206704438125823923904766613486206013683813771293988827994751308475891995988301215387152574419412381447476226068834648858706639617162206593451235290457471618073014725679837379893842150101611995440452298353244439201356304245337965099464541409401494998025031536565597836490234188808696463603490112721627711519596821915331825959575551885212518211442269003344859271286227913506007307492776291453029668960179359667440503179328412171436131912330530510150770695249381710538279056954140700591999368475200255875436698833909225866367218550888340455501359261125896501916510656688648535225387182212843221884399211433135403492193025160357801967177079276486051857093141011025001336496825522387474808295736361392021889554180981081598463622614232871932724282534643030508717884192962595416173373901132147755094503249975052901677902751297694205366921037547465221635547109834317374178362148899395469037802172487094585186770930012509897916799608892358494351340358146933481155823397177111871069488870844726702308338279055819352376060712105984288779181524985526892916898169771532756305479326497428699889380770355624262738057395122369955283094631409213654957473184032227153342629154545066740409513258489251745894951453040542909925854317157799562581760030422099105501627694451657079935138142010860784796990853862871522191280775790778371590639687771159316980947819357536812939905863927717243432556756272342151545076411956132389217805472604221690864013707763682018315188952607119946758811062148170296556777942812437533627450340974634326975205472489671702387269156909914717782582977963643216463960975465090627229265120385884158666145053132529879199674915773930220784503882143864875273224940706693965405173279072485994435371203100135615211846813669839874064050008341057733642309562593482175302832142539877643154259022027570686612027858107329925902923992533804455918636701337810809181701161499325971154106538957803193456380395910615088491686184579554366213353862404529468229005466380181873403409584627731219911460708898848941094056348224778795961427666141965047354825879067952211675767220530116000295439261008669342189007742280071068070049356315167614419942532751651005774976056088498859079183494367859475921643977167294332870981630985883183324300422297953590981162371465213620389531664792862643382599634861925000395120572493802624931228823781014097594009428931662915167760327883521129852617756650413448593360913038295175844623203494974914165179908375706734492901224902529747574979742050002106663406003731866003308390615816816885072065325693182794964309658585406733281728826923008660251012331523873157425596492124889226549015883614419445399308078104363183239762732476535449006179002325229065282571464204281914919738887388806093573140020542097502020482802396957530453128838606753183180413618231714722120716858511620673458780848212762689022503174722516119261588243338767449952444434492732505531744736476097910021749893176437861458807350602081308059329158498808470348829171596127767256507414629365764148529834296644442209403194238593555813227361493776673378092377609835480829848834776365785714688656577506221151558342984932908100108088372100268085844151793490975148337058265267421349296237603497728123188032647729521086794670644515840940201571775430350624975038471658580078746878268495164463287848960878856056346450934896163169743105045165581323819513175905223706128682491544237639104590089628822641723836875903418320273003356617592635747925184879866743725876316742503710595986069001288762512476804118154783404812514751164897754250989522763124616991870608224785876468099785756699995690777785521839922485175041682536651172403481264582149129122640889832309992014062260099244291268883993005187894563801642518228414478270295351387046868187081518459838095851978514656128229212018856271178656781951865372510349741871729755268077300762982107262353653936518893638816222941960957234072662945228277096588212009569956941412021462076133412738736146790862165840981502021144402381041280424251250883937325527577117337986616772117322486188058793070661939091520797904347760947648229902630915645259852652351426082406577287674223134756799727233169989521419114425894731716176653550245770496344605597265572794815166192064124403378151092763885978383102009455257854519465550301246995381640601210343662742827682420934279626373395652395999817378249059327854481350431454370932564627625133649242512820576486994269314077980997512181283650077115840159571482838806660739273917501233904422474377532434136501025892293378909898783835997744621072578866963094511489842039592491140393655505817457506101458107717258837998857511634160292786691167461904365591738425550323512909380910134644272821236782228219560211903524789255642834093938631309207016144273343561768392015946096695071260787134006919955539723059270708621799610107543927526866927300423827447908075410338089761911335554236211607220959786761543017923621639938468989547957660767931657662555862328888341958281025006331151526846302872456080086024493507245030108230400783031595576151219819834046954989509826434061777922015202698717273136926158519899556374615974574751476743761878619405436331799448199218707421684180814768572994000075233007328760708771469685534860487027489184792709249535333983754626094433733032515199669313204947984860617843400446621737370155244778071837898583388336317051871475231701394053764483680409312689893186371509520310162182341717820195936661217314875571498709625015897265778525908426192975934981499327876012898297481801302513955401656740742216850342293182123512761948372907243591709809867936260493428885126511278718652820255574252494032278725612072481843951172165236478241369093618112853011844718845683244161791308969305441124717285732154355994917446499020686931075617421667334186609165302628815065613660124919531779983740755489097111398429642375934585615080318880945851714180064949364535973649030877678201116971542188813985546353470746080703026718628888167099094905487828127808372458317234986212227785960019744988804796058282310039384459545585269109729037178184648276479018986182113845519243079489398133256876630653378351331911274848188248662596501979226917582116118414287306394568957790733295371259982778148292520276396147454871187308323855969429534148144661681789463134733719964597750987783364244289405724721486331025051689631320360354172622130078192112932513759893682282761898438094232952668404869672405207574076058791075187428450213304735992945688679113077409644110920248046893065024931964522048240938556520005706710005859495886813562695510970268577213963715728820134124358408738944689728844164577395064088737288423942837489012346099566084287150267414187495425649479841848385871962820959477885446374521648256438103084109135495704911087255494677079761801565634611237266318594849791726944047395235607649191909852897356458928629738104459452802907338153775097668122498603398192996423582181648082577188518353374547684930803109595187299401366263822653454162234774772311308453961738397188217257178280423339056239809467587898119899705455896748544161972100059530059884503731622192443130376572006764511595596363774526764097092375628909773455008189308634710975487576532392383165983021315524343179231843380356936802680309074711077530643449857659333638389866129257243516335469244971824181245127687203135672398351564301811199850315776', -); -test(macro, '51676101935731', 0, '1'); -test(macro, '-51676101935731', 0, '1'); -test(macro, '51676101935731', 1, '51676101935731'); -test(macro, '-51676101935731', 1, '-51676101935731'); -test(macro, '51676101935731', 3, '137996870875659993023030601717979081222891'); -test( - macro, - '-51676101935731', - 3, - '-137996870875659993023030601717979081222891', -); -test( - macro, - '51676101935731', - 7, - '984075056308295134728924301613024127189711420386591471717924665943308236455086452620716372586011', -); -test( - macro, - '-51676101935731', - 7, - '-984075056308295134728924301613024127189711420386591471717924665943308236455086452620716372586011', -); -test( - macro, - '51676101935731', - 9, - '2627893230921823604806622170301238567075367550796577156262388588821361374710043228118573957775035487173592314570495647093971', -); -test( - macro, - '-51676101935731', - 9, - '-2627893230921823604806622170301238567075367550796577156262388588821361374710043228118573957775035487173592314570495647093971', -); -test( - macro, - '51676101935731', - 11, - '7017577357393414069660702103810709794111639796715410950809665871416156554402226865497006924403635139554341331701687118636537520158096482611987596307531', -); -test( - macro, - '-51676101935731', - 11, - '-7017577357393414069660702103810709794111639796715410950809665871416156554402226865497006924403635139554341331701687118636537520158096482611987596307531', -); -test( - macro, - '51676101935731', - 17, - '133636682614207953928748833850325980733386921434321011865528143804403832298431098135380464855882180500142250108938933037601304663280771463018430933459134652554649625077355814284452093494072216581175752265212265439075492239388118741811', -); -test( - macro, - '-51676101935731', - 17, - '-133636682614207953928748833850325980733386921434321011865528143804403832298431098135380464855882180500142250108938933037601304663280771463018430933459134652554649625077355814284452093494072216581175752265212265439075492239388118741811', -); -test( - macro, - '51676101935731', - 22, - '49246391967000732783507102143055596698062541496879424569521554617507032914914454137461679988278650797334594157775094696043090861230475376194375316521688783968615512922433798610465048085885649879473134467691860598529596944970613815754223330498710317737303087189649634312376508482500446153530865527315961', -); -test( - macro, - '-51676101935731', - 22, - '49246391967000732783507102143055596698062541496879424569521554617507032914914454137461679988278650797334594157775094696043090861230475376194375316521688783968615512922433798610465048085885649879473134467691860598529596944970613815754223330498710317737303087189649634312376508482500446153530865527315961', -); -test( - macro, - '51676101935731', - 24, - '131508525968430457729352665685966579498949401101062972415020772435432844742532822029053861945108891212811973673289631212054118103889130601356311755368990255559386038292351210647400499145803946225847945057201109848257891860310495954779113656786197608913596258321184172812660728137089758780590575321178923726688892590199481699405921', -); -test( - macro, - '-51676101935731', - 24, - '131508525968430457729352665685966579498949401101062972415020772435432844742532822029053861945108891212811973673289631212054118103889130601356311755368990255559386038292351210647400499145803946225847945057201109848257891860310495954779113656786197608913596258321184172812660728137089758780590575321178923726688892590199481699405921', -); -test( - macro, - '51676101935731', - 27, - '18147765077113876911302828311188973140568509988864514321318950227295742688037464926647103633287511191936183601316483196589434477469945433422640225075158236638385320220491900270340310290917462596573996639230442725247179360636496672307042746911978502976958429476017502296658675079086344867081673179346751656568649207060344721536870325119505423628920139126455081000886137611', -); -test( - macro, - '-51676101935731', - 27, - '-18147765077113876911302828311188973140568509988864514321318950227295742688037464926647103633287511191936183601316483196589434477469945433422640225075158236638385320220491900270340310290917462596573996639230442725247179360636496672307042746911978502976958429476017502296658675079086344867081673179346751656568649207060344721536870325119505423628920139126455081000886137611', -); -test( - macro, - '51676101935731', - 29, - '48462145947906619312350693780921922040423061718629753751200616100444307162466564390962728897898203939025561944853542772935543250149935950441420073115202129685015069493947975962419875285445358970303515733347425597885530386757928989657327135942306712537754584065199854414524879131878269249276451508346267360984001689290919795053747833808800804304207297975041606946075388009728565472578248141445621571', -); -test( - macro, - '-51676101935731', - 29, - '-48462145947906619312350693780921922040423061718629753751200616100444307162466564390962728897898203939025561944853542772935543250149935950441420073115202129685015069493947975962419875285445358970303515733347425597885530386757928989657327135942306712537754584065199854414524879131878269249276451508346267360984001689290919795053747833808800804304207297975041606946075388009728565472578248141445621571', -); -test( - macro, - '51676101935731', - 1234, - '158324042278377313925303658781524871614898748673989982468397056801513262659968003390685627949704258611320160536626820028889962136800384219988465148278031573450509106387239568116863743081510112367947744316933204800345240432247765898932280221777380025886378197115150023156888075592661959629600638394821303250632425654059380834813385429980578207356778680885151122557244823021413539337390766886386023683774012622502869673441546686299110751211243381992933447873142802156806866162053801684285033755846634081232710212999710106103508622919082329128210235683603138941762803368001142605648619008990425285579947768914521571612053244135664040468206471912029995462838737725025722037780961352097655556940963081046269689524507058695919021145649857025466601631832206335908714770892218847010797983061128886699295778458908026100799624592058868604507879625795059341788256071347226801293035257896677449812101619168410274645467937698072600485973695316558617078697826464067560685120905997944243512191651052772680067894809080799438615784588878741144055738313954890688400429893361117159935248693696396627137695916187850803885204391372040167551605832355933919492494203181745050697494649819656173693467296980021705890813609884785517604611253528819574733690077002295678785343609499106604869068180574890180024198538158171783307883610859971770618231149618665209136576442748277494550519027415619444394250603341387572991349015145136953473904476495181684188774626834750617818472938996987683214283309439924103189995535468277303822947364785117218431807701765196665481474819809014739483414625184823572545931155707708389629548395519118401609231979035135464875664607469901894710597734005254396315648601392217921679551086702353136339520705796471641431879666411557946264230276753464580691493861591875142232836387168105624036383384304939623273671227663421382364346405035511757097384178188343056871496957008430970719845337135563975023000121180003910787544177586770185372939136428614465285828597849364223527930973569574297409565906234014152140399051264908028037854285065695691516894764306741200445258651130079726633055035454707400264143396200125546607001935250751700196849819373198663005937089255142210331719097533030824267705354302579492394252054624819810635910772930818973501002381509037985751201262426338686073137167777790210884526513502529974672754561818929196841359487503116806374857279102032619499735463547437917873852231188627313193995709278200744560332235099781528906681845236757294232939540840501710793402651215365559223726732901232304332589555728463490815104762256836437378942770237781171541242665277050803400441103245698206078424116844542305855433985742997194723110120559706402361837255518215431654983113821256777518566578007246638117303300813282471059695780960937192471342720483093022397272639388862609111334563922759362521380716417092672083635856258692643635802385292897608203124530755925272475970099885482900647144339393451148660375139200420049453396533433237007433364495099843124339385777936467767832834097532992680258633382504023134945528051080162773976630522027388364871860673885601145463850278499705365785873574057496070902362590690329163430582931012722823339673749687448879341947128478168108948119496075857326371621272158040967590212259705607234109590371908430237962275467620195565091210074536958791316104893306127805978301999920209853998214358942944312450676988966603743669909381196873223441882204064076740792698565324619823892332131678341250397203399047128712276865053621353068705821363484016988865027435388961661676827059827201761588689945100159628259798636637114887843908407692866645165407556635346270470882762478678318748969509612841224405192451391751679491699159481451781132856593225478798461105500650078302736522399508859604061090018430782371103406780095793970327199466172644652070455424994736654900037878682536762730674188797509195743679412902718668219372565376042254451189328399930173247680691539750124735316777490200616789118915166628770213641217493993403209087930983866118739242363270739641673142095457606027878252411764298206871520866755170134693811548956683565065642028688637479006103660374113920609307215137832756503673451270374534771904030303590041498702749217222999004759003357602091152034722604948534571885348781516114248627593361371966083846505528180094830427733303359954633778102329930129088225944419675472344592340947633203426100068451070062748913329381430835928677944810202891752490896892126540425812163639252121628049481160408647454747378481685454865724857469700081698360897592285719829250458270700796398492146131941376976151305748227248367443062739785389412243719697174747793918305844429511703312893537458763839752259611393771379620065253777610623533134188428935625387641575540926717563311541862831476044794518109895950317069739650023453809779525953218406298837457049987396316333779299477763690386671808883206738746473461031527288187096362547392481733828192703691811275652684091878491782335647464304090599317117223713118270154362644379673966875526023251794033742058280817715606901272370694953811351940143399555738367916981834656631234106492867315013462578161451861851222727927484978513364472656866134489436147990440601567348247368143427992571647342689311925448855042244915814046156681924587686088299035248256687768173138305271776131448783660494290452155267493170780209088260573726810563594020164626876894543544776117725891695956937655222596747253562951739070430520784626532005865397891770599810947915766027843984225809506465099491726669647675836542704925940472862292458103317707001664851510631632483368333519166567495603149523436655902927352564469259379326902513957700266530203095978420437621994997883942015182535685373952581674954526368979534376580657019506688748132488994259649481602782027268796321496293234619922858621277867678825491370164615078298949196552511455124851536133799925473329405250474593913924912551804901403390831450711740501508314471344016110507593788337973582789067759260879539344607152262224215382333489330153894940009834586533901180095846730855291500939551837669345284373711184756405666180209071363312585030301685774779292178313316406602373255646327348281134955048336338727490454877812787617492427362023670761057324483134159661968729511955276617697409266496712072219753283729016198339234913450671856683431220026361896256233229763483100008432120294903953687352831503401656888244700073250811277269623445793796563405171676855616924791868998241051758600745245397052440394156686933344580101379617401437696817984459028218921041977399588148719347919096302390719921087960315851964586936208155974897770793714626502400010799023394074901830556484876564044019461148646704484745692998552151910298131789877533559303845220138187074792203552289300587811989652204054350569388609355366352079539773210398305281469358542324938107197041217218595947653381833043778081164511742732935680326233241131641428417476654793443376871059887960714321380031930204997295874730540407682218645410154547363569726463842192519870398072169036254497989626119475346195254734474880846366685010394270094459050207503355330015842707449098167167948112211428609169028462215066248890291708247636295839908593225052889285032180148515349175791108452276764174092593481970638911935180284154383805459092545680971655577656000718287895404174650864444487637275330486618588627887913198091137313600079403324248364944559239416972594744134017813214704259974060248545972845617599594908395004708799034010940349453335426733467851508855124434739037794790113915284799938282633515926124039300489403274166512016144314450767050504019696951073496152282334971591755531534918527658116356766005810018865387036502835277104484897521399845192578397217389066546258015343671781439530194484186424336132467982739290593716534087153430243415506786743021432802857971661907233602499902567387941782564166386342672410874812089691799529503443000488843767817702945159240603649832489196454539442081235188719658702765814391130506231315568011273524165094617918503831867012569022324402969461007866076655261544955353941677901200948344001405059672259174534803855786509381749106901797774448058734457124149367609992922544375497404889378084258630248150919968340293441413856717836345219286003180349374207341129088557493435423239964391016550727225456481162350628594289395184071310300179756589174536625319150383798785373066376691658528761564820534618453895379491843182268871603588369275077855410841475816916672608469381494765293579645251398504292250764825206147001031380918536905798997324364665442675157885496504116737588881183129820652811664336805124175412738167561167253417906013601281586840716605226757932860034772050966241473341886952885772364434302876604236880399216981777408544673261443252042495657687251968928902101306694702738065723310727043271924859335698667952366365883749591917139742105118753077931026478251365210693917236917159155967697763044367201149926693443948539699579913602708706722711432838021246855315885038460450756859122906583939756348652891700451630407133090901515174232078445554725093208016341426376158610309666955884603433032223065165852248565738599860177261970078536206931153975848971431287001632805433404957578207772941765098112799264026267445074698665059729145576674938934608054531809788773719961126616990316210326818453980080321988760982334379271531791369297582640574651520702873403331880456606970974892343433336446248718921846000086640006680764293893307983492389270379130633842798650803348158429980408513212973097444321318667389109611955924135884714672638284288772566998005211664934734547822982660638379730254204195834897865492728459422863551908452096176425627547324850175172784662840168613264736639310780854731722004175205456083684478275667370139311794044918888433282117891203786131932421524201946630405904103705604352951344094166243627023050380063835187325378976884921927883069821201742308833558695341662261151498959733037164633952848288492505505197499859566019268823236129754425893906449877905855504081397182635782376853937776733107007960687910397361651834577002303143087866448497366428780519572180278375369679225575668491891544012967905489645541044473614128660244742603437904495496004459121145000204660640788761369040236852666481807337266045681038338455762663801212249239773760849573135339910245942472057741897143798714888511942994856977741299663716890747044572844810556164536063761986767836402140711391146026318746472684683736517628592458110701485687350372867786408697530159165580262455780381579264667555447984957739182385760977780225061084004806106049112388374908757400568145385583888461889658540915335972493538978104321154519123769320702224831927212063777898343511469299130626487155185875277476235831577797403193411734525969805530291201270196761046479780099300862785898294670735985568048204412072182439508001601125949813004653714414454010147969834379658692070731355494945150892188648577526049837658909733330381505835664398796899002686901365148731947521928717964471059772305071463737374874406416651278356408918633301449776192835629215568915731374744480004571009884843731735476903477562446584279323243628329043070154171111030416954029897290949469967976161666719811003325138761099757410714225754805089491754951146648993331480859725730046281101542321018226211161218032808157377990274486574775247295293446271999216933362071677144037958846938035870357017121382946099997460180182187217217820316108638070949402341509021488404838623964004697749860791584971181351855741948571771355034517420282039098468418778809673122690363103723019689210278682644736222976118509622284207375261241784528558945409584782281603428222482076644739841708067658443152632760947992710970595496336571116020117920899681972595692145247586867390993275854296221489381933037318139292360281964291441764499495760508673368168379423816602792242572983422830229937308653522404847350290384106194221461480553536360110558204157177392001034747822538121785134044265222471502565785788526018168367500851854368644667069187608053339694123467967831636497181955436837184144618605482450617195904135269079047201637007435156663520051298601126128369945944529481020638321516198582623214543218826748293953436296165935049635820455993901167665818294125029492356440701038244166842363513621908344320848585686797979439878826598478637355993217261347336958935084397089381198078856022083300330117262456180993049915148012467532881768933263035840131555093550707791000541507741393303110968532024193273602133335942404611643551498070626757534418055263575760282736414364452938769778575091320674432871296496661879381856396240520797406048137637370857663757380205251562705321737487489618016878804542225487729084746708529820375811443132907266237938994474813800033631766739207459417966080119828341415764580961209459326665346025307463631064586254511715110933308682061703769489020980806855962724479591125787395163620658259594004092166562170516032834000268855499213998125944650816177533565867482786957117566835113604843003762380044014420897831990140335889989942967539299895614370850827546132043892135670514224732115622279448086834055661975850510059575409653558505225706327368788238605905950679120827356203968736553949603508567674941011900196065319763868748440255691811431275690300510418853466423120699880274299502906401428179717337224051460708185153900592946400931539055519213456766111907891650507124264750664276520240241037246834114060324514820797852416016033426385928748625138008254308550145235061493199996695892684482660951996875137704256478179472342925959911345035957714418554051230886742531878578912441446768201652221881141572325507385719459138517136751018669079028246205826509211255942319179978511691727159374093169411671988666216994674771387581235589884768273625075469787220620863887485675316340301843253576693265829584060863611223658502419013220705349254141879296678287934598990177839246206875955136263946160336147575157943154184876112942552766291737477532772806816444968335075758603052677831616530597162083339994792052192524435339516491271771018617304228747316364353881326364901896898510732593688984287402238373219422623300832304655724736690619601526746558520579969086684975110249886471858004298619330841151157594042888413560753001085286164089989253446994193592178607918900886160044643360093127301377281151260181516816234448235332218822653468714779419621593045561237278383012807110518306356320302829822203975624356719898344296257410860244073851008991224738267988788643891504893485173066765606602131746590564072891775528764778009114601909601715732204601099651995466171422428561778738906387340637322539207184732852648369340774890627245756174444189797920171705224195397835012801944668568199244460984454556749562726348626755008071045094089456543538334719344496279903285819785473638260950225191989064998217546604935254843644830354787903047294704085156710060314626981157703292007319217920772059875929487108231502602963313451208908800123467770051210962134514589094511232458059331648208202240238411255010578542406383889733905056465012899219382378659412932505825923945018151275013771662079650082951456689539196985442677624790938978370091323150932644989813926815926713764846502628535537778970161281065391987916405930855478432409513765364564416242604015243337740020591190036055281150381447998127901685806875751795496258487587782150231045731795366439544769654743511101346187573916565954617871601220556806571910322664035856441943067590583463139288226902843506064510903232434224397360091696338842373040990564260619541435411792673618388777689980307230201828335309818088702867877855077758454325070909742544384843822430367944236208743002020404743158305208417720634625853803097299728910140526037383656368066889205000542592984418496643069772107977370892309483087973050493056264411495806490399183836440009935339770300091372817892264236279135289290245333645902675314110412649989844978340728685671821112290828829269519229582863992855788155443525507663925117628911796188678980556041341513060132014775432709153262923597668710862496337413472675889360137051840453387185317746367448685333562536587961087795964381494602518709912953530990322369678697647756220485903298571233830750815526500393713347618692958695894950510589138728887035609091986740671003066902402415899517198377159897977346749717804687344625438051024990052589164200510168556411467500390153089322228903919050120669166638660142562191207450620162728156493213454482792702092126905050509757880809402415274410795695253751046401154902184294192597738198949251837113299325218278871891594334354748578529416161681277186999781125923908898170603590196546728188587904407695359656110397019078754943031963775608531765690045741190503521917787960634065347919180851301558862438424029407982357071724159087489759092692094168623631500220272025560981867388778272041688773757867813778995307938836220728347748425397447066334129722102586996109604827849770056592342207245854658461155777410922160788502132706011423014788196149318932156333527262500699228183533489815176386063167069054855402190127471059557044073327189922247461125984452832296717571418178543557996289436839762935964681924754366975350149396326998775147547939177889984004415721', -); -test( - macro, - '-51676101935731', - 1234, - '158324042278377313925303658781524871614898748673989982468397056801513262659968003390685627949704258611320160536626820028889962136800384219988465148278031573450509106387239568116863743081510112367947744316933204800345240432247765898932280221777380025886378197115150023156888075592661959629600638394821303250632425654059380834813385429980578207356778680885151122557244823021413539337390766886386023683774012622502869673441546686299110751211243381992933447873142802156806866162053801684285033755846634081232710212999710106103508622919082329128210235683603138941762803368001142605648619008990425285579947768914521571612053244135664040468206471912029995462838737725025722037780961352097655556940963081046269689524507058695919021145649857025466601631832206335908714770892218847010797983061128886699295778458908026100799624592058868604507879625795059341788256071347226801293035257896677449812101619168410274645467937698072600485973695316558617078697826464067560685120905997944243512191651052772680067894809080799438615784588878741144055738313954890688400429893361117159935248693696396627137695916187850803885204391372040167551605832355933919492494203181745050697494649819656173693467296980021705890813609884785517604611253528819574733690077002295678785343609499106604869068180574890180024198538158171783307883610859971770618231149618665209136576442748277494550519027415619444394250603341387572991349015145136953473904476495181684188774626834750617818472938996987683214283309439924103189995535468277303822947364785117218431807701765196665481474819809014739483414625184823572545931155707708389629548395519118401609231979035135464875664607469901894710597734005254396315648601392217921679551086702353136339520705796471641431879666411557946264230276753464580691493861591875142232836387168105624036383384304939623273671227663421382364346405035511757097384178188343056871496957008430970719845337135563975023000121180003910787544177586770185372939136428614465285828597849364223527930973569574297409565906234014152140399051264908028037854285065695691516894764306741200445258651130079726633055035454707400264143396200125546607001935250751700196849819373198663005937089255142210331719097533030824267705354302579492394252054624819810635910772930818973501002381509037985751201262426338686073137167777790210884526513502529974672754561818929196841359487503116806374857279102032619499735463547437917873852231188627313193995709278200744560332235099781528906681845236757294232939540840501710793402651215365559223726732901232304332589555728463490815104762256836437378942770237781171541242665277050803400441103245698206078424116844542305855433985742997194723110120559706402361837255518215431654983113821256777518566578007246638117303300813282471059695780960937192471342720483093022397272639388862609111334563922759362521380716417092672083635856258692643635802385292897608203124530755925272475970099885482900647144339393451148660375139200420049453396533433237007433364495099843124339385777936467767832834097532992680258633382504023134945528051080162773976630522027388364871860673885601145463850278499705365785873574057496070902362590690329163430582931012722823339673749687448879341947128478168108948119496075857326371621272158040967590212259705607234109590371908430237962275467620195565091210074536958791316104893306127805978301999920209853998214358942944312450676988966603743669909381196873223441882204064076740792698565324619823892332131678341250397203399047128712276865053621353068705821363484016988865027435388961661676827059827201761588689945100159628259798636637114887843908407692866645165407556635346270470882762478678318748969509612841224405192451391751679491699159481451781132856593225478798461105500650078302736522399508859604061090018430782371103406780095793970327199466172644652070455424994736654900037878682536762730674188797509195743679412902718668219372565376042254451189328399930173247680691539750124735316777490200616789118915166628770213641217493993403209087930983866118739242363270739641673142095457606027878252411764298206871520866755170134693811548956683565065642028688637479006103660374113920609307215137832756503673451270374534771904030303590041498702749217222999004759003357602091152034722604948534571885348781516114248627593361371966083846505528180094830427733303359954633778102329930129088225944419675472344592340947633203426100068451070062748913329381430835928677944810202891752490896892126540425812163639252121628049481160408647454747378481685454865724857469700081698360897592285719829250458270700796398492146131941376976151305748227248367443062739785389412243719697174747793918305844429511703312893537458763839752259611393771379620065253777610623533134188428935625387641575540926717563311541862831476044794518109895950317069739650023453809779525953218406298837457049987396316333779299477763690386671808883206738746473461031527288187096362547392481733828192703691811275652684091878491782335647464304090599317117223713118270154362644379673966875526023251794033742058280817715606901272370694953811351940143399555738367916981834656631234106492867315013462578161451861851222727927484978513364472656866134489436147990440601567348247368143427992571647342689311925448855042244915814046156681924587686088299035248256687768173138305271776131448783660494290452155267493170780209088260573726810563594020164626876894543544776117725891695956937655222596747253562951739070430520784626532005865397891770599810947915766027843984225809506465099491726669647675836542704925940472862292458103317707001664851510631632483368333519166567495603149523436655902927352564469259379326902513957700266530203095978420437621994997883942015182535685373952581674954526368979534376580657019506688748132488994259649481602782027268796321496293234619922858621277867678825491370164615078298949196552511455124851536133799925473329405250474593913924912551804901403390831450711740501508314471344016110507593788337973582789067759260879539344607152262224215382333489330153894940009834586533901180095846730855291500939551837669345284373711184756405666180209071363312585030301685774779292178313316406602373255646327348281134955048336338727490454877812787617492427362023670761057324483134159661968729511955276617697409266496712072219753283729016198339234913450671856683431220026361896256233229763483100008432120294903953687352831503401656888244700073250811277269623445793796563405171676855616924791868998241051758600745245397052440394156686933344580101379617401437696817984459028218921041977399588148719347919096302390719921087960315851964586936208155974897770793714626502400010799023394074901830556484876564044019461148646704484745692998552151910298131789877533559303845220138187074792203552289300587811989652204054350569388609355366352079539773210398305281469358542324938107197041217218595947653381833043778081164511742732935680326233241131641428417476654793443376871059887960714321380031930204997295874730540407682218645410154547363569726463842192519870398072169036254497989626119475346195254734474880846366685010394270094459050207503355330015842707449098167167948112211428609169028462215066248890291708247636295839908593225052889285032180148515349175791108452276764174092593481970638911935180284154383805459092545680971655577656000718287895404174650864444487637275330486618588627887913198091137313600079403324248364944559239416972594744134017813214704259974060248545972845617599594908395004708799034010940349453335426733467851508855124434739037794790113915284799938282633515926124039300489403274166512016144314450767050504019696951073496152282334971591755531534918527658116356766005810018865387036502835277104484897521399845192578397217389066546258015343671781439530194484186424336132467982739290593716534087153430243415506786743021432802857971661907233602499902567387941782564166386342672410874812089691799529503443000488843767817702945159240603649832489196454539442081235188719658702765814391130506231315568011273524165094617918503831867012569022324402969461007866076655261544955353941677901200948344001405059672259174534803855786509381749106901797774448058734457124149367609992922544375497404889378084258630248150919968340293441413856717836345219286003180349374207341129088557493435423239964391016550727225456481162350628594289395184071310300179756589174536625319150383798785373066376691658528761564820534618453895379491843182268871603588369275077855410841475816916672608469381494765293579645251398504292250764825206147001031380918536905798997324364665442675157885496504116737588881183129820652811664336805124175412738167561167253417906013601281586840716605226757932860034772050966241473341886952885772364434302876604236880399216981777408544673261443252042495657687251968928902101306694702738065723310727043271924859335698667952366365883749591917139742105118753077931026478251365210693917236917159155967697763044367201149926693443948539699579913602708706722711432838021246855315885038460450756859122906583939756348652891700451630407133090901515174232078445554725093208016341426376158610309666955884603433032223065165852248565738599860177261970078536206931153975848971431287001632805433404957578207772941765098112799264026267445074698665059729145576674938934608054531809788773719961126616990316210326818453980080321988760982334379271531791369297582640574651520702873403331880456606970974892343433336446248718921846000086640006680764293893307983492389270379130633842798650803348158429980408513212973097444321318667389109611955924135884714672638284288772566998005211664934734547822982660638379730254204195834897865492728459422863551908452096176425627547324850175172784662840168613264736639310780854731722004175205456083684478275667370139311794044918888433282117891203786131932421524201946630405904103705604352951344094166243627023050380063835187325378976884921927883069821201742308833558695341662261151498959733037164633952848288492505505197499859566019268823236129754425893906449877905855504081397182635782376853937776733107007960687910397361651834577002303143087866448497366428780519572180278375369679225575668491891544012967905489645541044473614128660244742603437904495496004459121145000204660640788761369040236852666481807337266045681038338455762663801212249239773760849573135339910245942472057741897143798714888511942994856977741299663716890747044572844810556164536063761986767836402140711391146026318746472684683736517628592458110701485687350372867786408697530159165580262455780381579264667555447984957739182385760977780225061084004806106049112388374908757400568145385583888461889658540915335972493538978104321154519123769320702224831927212063777898343511469299130626487155185875277476235831577797403193411734525969805530291201270196761046479780099300862785898294670735985568048204412072182439508001601125949813004653714414454010147969834379658692070731355494945150892188648577526049837658909733330381505835664398796899002686901365148731947521928717964471059772305071463737374874406416651278356408918633301449776192835629215568915731374744480004571009884843731735476903477562446584279323243628329043070154171111030416954029897290949469967976161666719811003325138761099757410714225754805089491754951146648993331480859725730046281101542321018226211161218032808157377990274486574775247295293446271999216933362071677144037958846938035870357017121382946099997460180182187217217820316108638070949402341509021488404838623964004697749860791584971181351855741948571771355034517420282039098468418778809673122690363103723019689210278682644736222976118509622284207375261241784528558945409584782281603428222482076644739841708067658443152632760947992710970595496336571116020117920899681972595692145247586867390993275854296221489381933037318139292360281964291441764499495760508673368168379423816602792242572983422830229937308653522404847350290384106194221461480553536360110558204157177392001034747822538121785134044265222471502565785788526018168367500851854368644667069187608053339694123467967831636497181955436837184144618605482450617195904135269079047201637007435156663520051298601126128369945944529481020638321516198582623214543218826748293953436296165935049635820455993901167665818294125029492356440701038244166842363513621908344320848585686797979439878826598478637355993217261347336958935084397089381198078856022083300330117262456180993049915148012467532881768933263035840131555093550707791000541507741393303110968532024193273602133335942404611643551498070626757534418055263575760282736414364452938769778575091320674432871296496661879381856396240520797406048137637370857663757380205251562705321737487489618016878804542225487729084746708529820375811443132907266237938994474813800033631766739207459417966080119828341415764580961209459326665346025307463631064586254511715110933308682061703769489020980806855962724479591125787395163620658259594004092166562170516032834000268855499213998125944650816177533565867482786957117566835113604843003762380044014420897831990140335889989942967539299895614370850827546132043892135670514224732115622279448086834055661975850510059575409653558505225706327368788238605905950679120827356203968736553949603508567674941011900196065319763868748440255691811431275690300510418853466423120699880274299502906401428179717337224051460708185153900592946400931539055519213456766111907891650507124264750664276520240241037246834114060324514820797852416016033426385928748625138008254308550145235061493199996695892684482660951996875137704256478179472342925959911345035957714418554051230886742531878578912441446768201652221881141572325507385719459138517136751018669079028246205826509211255942319179978511691727159374093169411671988666216994674771387581235589884768273625075469787220620863887485675316340301843253576693265829584060863611223658502419013220705349254141879296678287934598990177839246206875955136263946160336147575157943154184876112942552766291737477532772806816444968335075758603052677831616530597162083339994792052192524435339516491271771018617304228747316364353881326364901896898510732593688984287402238373219422623300832304655724736690619601526746558520579969086684975110249886471858004298619330841151157594042888413560753001085286164089989253446994193592178607918900886160044643360093127301377281151260181516816234448235332218822653468714779419621593045561237278383012807110518306356320302829822203975624356719898344296257410860244073851008991224738267988788643891504893485173066765606602131746590564072891775528764778009114601909601715732204601099651995466171422428561778738906387340637322539207184732852648369340774890627245756174444189797920171705224195397835012801944668568199244460984454556749562726348626755008071045094089456543538334719344496279903285819785473638260950225191989064998217546604935254843644830354787903047294704085156710060314626981157703292007319217920772059875929487108231502602963313451208908800123467770051210962134514589094511232458059331648208202240238411255010578542406383889733905056465012899219382378659412932505825923945018151275013771662079650082951456689539196985442677624790938978370091323150932644989813926815926713764846502628535537778970161281065391987916405930855478432409513765364564416242604015243337740020591190036055281150381447998127901685806875751795496258487587782150231045731795366439544769654743511101346187573916565954617871601220556806571910322664035856441943067590583463139288226902843506064510903232434224397360091696338842373040990564260619541435411792673618388777689980307230201828335309818088702867877855077758454325070909742544384843822430367944236208743002020404743158305208417720634625853803097299728910140526037383656368066889205000542592984418496643069772107977370892309483087973050493056264411495806490399183836440009935339770300091372817892264236279135289290245333645902675314110412649989844978340728685671821112290828829269519229582863992855788155443525507663925117628911796188678980556041341513060132014775432709153262923597668710862496337413472675889360137051840453387185317746367448685333562536587961087795964381494602518709912953530990322369678697647756220485903298571233830750815526500393713347618692958695894950510589138728887035609091986740671003066902402415899517198377159897977346749717804687344625438051024990052589164200510168556411467500390153089322228903919050120669166638660142562191207450620162728156493213454482792702092126905050509757880809402415274410795695253751046401154902184294192597738198949251837113299325218278871891594334354748578529416161681277186999781125923908898170603590196546728188587904407695359656110397019078754943031963775608531765690045741190503521917787960634065347919180851301558862438424029407982357071724159087489759092692094168623631500220272025560981867388778272041688773757867813778995307938836220728347748425397447066334129722102586996109604827849770056592342207245854658461155777410922160788502132706011423014788196149318932156333527262500699228183533489815176386063167069054855402190127471059557044073327189922247461125984452832296717571418178543557996289436839762935964681924754366975350149396326998775147547939177889984004415721', -); -test( - macro, - '51676101935731', - 5678, - '114598568890558892351277519655251349170512457301108169122918046980237508383487307624081510756564677550336178477302154205298849988621620086922824241203952845169587118918761676702275886803533985126048599159621880798222780212304246817740927997329598603522333259993676023070883723250177300932925278631685866750044996349161018487418710787156824698743699059007370890842841419231416436426583294134280327799008795618556337681789763639042135318458712688112601941846586049438371804926113126508996078777819094310659599757182791807946793330068376689258887811689995072195331087218152210579989587318167100041773383622122477291943850218476496927044272842237554951357422835645664516760841149829622887677523325405719345978782256416220091760753375551941881093250856520343277787117543740369641738849743550250267305042707228709682744788048246753481687183391246480490101912653586013524077299683599506874945043746289984496657526568247754108757916023746860823651106704947454023630829841108532968959604789557821034558282678387782274892400435740522133769190575725840235412871894976415960900858952703549298673487135436478720837173606603965003749202465844411925396601850697464037386444381718980799446621464654550821206321596000370929647608427450678602369409467488634567676260749990886237210425012278562172533337907188794399372225626872733254924000975445679212294865582779159284739536067574648674948637306603357526281158214867606477582551408107503527328338793768794019922917887582376894908153461450324195019808790951956266885107461973925559489970262966079308484289377245650607102408136209843678657317031621605407118233165024507780188477008776626376774732469991901945525053633560386998290497433245057356518070213620275700745654781100039839338506451450577013486892471483552928409289830016271158248107951963293890564868178813169793288638609421552999187733984144553406615257602536512368045676140620190929856992488533649322354718067519310329366233012095782513367770623099210385145306068882019668219811962909945944938303357412007436455159207921731034641005985972731076872404481351411053559046816512985501762256787820371273853296301441525251524961854980951466415757745095790408750111233498938399843328976884101167576106332111369898329073992906185716431137905217592404057225277504661400556077285374257237710751164948498254228336520906926692000699164318088485138209956632046211769172737818805518350576876409911238994857621609965737246540747228915599832803850235006646505920161663461782710578007459880127628658300436718162035702759857413264686037450843066618529962777161180564480610570194083990996868348589497339967832525631952114004244381394862686005465286457021469621822619867151692227701982207711240403754089139160258204655040380941387512320543125847873280531581254727837191059980870831091122923417959861596435814654220789276907248261882603123131749272763005899889970210586720440187361168097472073369327028087807891921073775186041480435653913681928394558065224090076679384591070891307475995293653429635959202548503686994214508788450093243004124213718944072946348546273490462900925735733454594192759136002496877104912413694566063277128709834235803795521599955020375102449787917179385948650401410782450535088196592336719230363010532216782360997264383385827672744353408971592600267691136637128647179666091641390767353626655629610767925329336924814212570169908132079298822259312790776336192539171954812142459076936946385158760440753962659197081868092892356974717649297318187816581273710002222637822422625907248946609177471022616696078166962638903351786881559353388016022793559059422611570772104441502159519678683680896440534678482697361220573057326321241467487140124612227021769519132788278891261578500937493023431494800715316974572061757711388338850673314696559686053949631600706217179936149359062760652855148968218517603478406764660079773518392515740066557654365463358812116383920109518376511927056859803872276659655935142427958378419267026204993883734671725916631060714088945987606306190400841739343960163767980632636951807150346899488246361701225858275512527213850024197265932454942520600005445974264278700061722886358112352180245501375011619481895903494024525948428278732709789878138429844599672738323876521649110855277792436882821166942741738868002576408435397753753580116182952236210916267829966145925028378437875898705477022525397608430772386789943421906088726337517286361167325374608638664447743003669920203279685500192102212678244500280945163720924806258942015670529098264965727843346426114488713290334508104318728502382771728945872501553223396187212916235118458655838036585541800475260873636577479118287025217430116350907433315459696137904514955307303089701947453368286386613774098275500676250943657017383834720061347722825211956235385743059349300184053076658159489552304525616565099968774334572359425467321345729237028949216589829910496148348266399952259506966453084807497614865786568010359718381755280552030450357482091573325492727231276923993244258612115652943501643076670607096916922788985244717748167425031600866371091539018747314619844176434458885344303041217826099156483212620631712885522804065144269853819342281878739269471469710167419263261298426536005724710899328976253518828717132656525336398408521558604682092666618949049723934689800847063844761671282296978918952554214898709123610631472079549040944065036271515445762211638184670207178784047672153843595557392899022269520772862968918684932700339559357972321385437515253951979000296108897236060608128673387896445773358382692008138068938089087965375939805087660261553154170365883140110004255362850999174312472258828659845801114248663995523535651080385407122403810220614699534394862199070170516370529573724426277383249873364882798357333666601674798052228774948816335992020369901620508453181317972153011582161807177844672456985443467954652113777013601630746866436183732233279064589871750135148960495813527709288884229866780850817394534670003825516127760071436525331020214654659944097612888206044199184355427079633744822550780458499778237357353947422296038656940932241020563615278249555508480330508674120678052089502789507188213274173100770916834969313508824784364056056402134407244119638598785990062688861144654163575302227468770905464187883181134822725915136640612107272892247282302709032318098895359710245013039285473099721463792717954735326941637258027020359449474131956608190956922971406645107469617185652049606430376373658432400056414731724407005001708692411063413271177513212657905468790370163043951258130982778875673922295809518571866979572550249035569072335930443175450876647946083312614092963535991789686984682545283358632371449413497269427928750522476008103850277182197862744717478903974777451339726925492684847344667201465331748104805481572363883196797787778153950751138898727728375184289353676704124928349416752637531102490310279351764714073405197836749014690395282266606472002997382187295402889448513435174099451342568509159453242120888320839737697049616714431772174331671258229322246266889685257316038839337528724509464509575560371587287218382144584572419703181295877602278221106570930586664027065311454892200273818659381311150404756262029418161040565111664447264252108585981706307591881047374954123445586938599411011096620619274323216164888259706949545584064116931697419880810232135950719390350713062967911958144149654637677624682217905237402682589189689936992002791828405957862158911334297099480655817390013698092780805866900709190383307511190456176470564094830491741371514412781382471608566016857542175626271815830825751173841300134557318244910059728166314923856198690466209098544666893459074761870150034083238014245526074209050076925214228138545561830243367680472907455390358950492305796631316420731434125187536810546887612854361525903826549660077385607201642040850831267699276814362171286190066768458981549632902853741404667094999899553250446338548089645534133891269993883172431804704263925215719942166060373843805638153594804487097561950457231382850176704556278355177741960834256932103041468108431421024565688930277277827204256767781041934083737995080790793709338041932760953129953324240749245316117068345243350389721646548464456799564122538803508302280206449283869830911336778221946967418555187670963441198271217790496259964780654563445592505556519078267175564184094236772289072470230033320640614537275025449633888698376301092731992965463666856043698716302806693885087426713749261988769556429463390046244837567904659070225420983410009710978888428520162826187731324371494738964988237894717677430862117281326863913479208553025891950712021033737482821762882285969238709814995624715621242460823465809517565513365312665098952226387532971101201851401611211767107556328808562154195909528062579532668678860849786353548436978596941540803973584469644923040177756384343881496136104278613378924581962143710807219315022833887527431763513942927784402594506818541221504288809623165972198540933669494785758163834650407164355749575134198337788610507044159766150241794499149571096051559220223878817602912552525929282957515181558545301005606558272154807998739024160863626434649314036466134847629318039975100093407373104577388406981878656175843258194717523909092875616040477453623785051493436611595002796440848161148666254022016142475461311658387441335732482745839024940608008050016971556249565896984096952364713943123112125591933258703693851493005494192677788993225349131525711396145903045479052901233399936977821783416065979989065328839546014013831203847910851373499087681269273873808794681827032455802487324933071462267161585550348497079770547563318071210788547323150873537668915925365865275006606032948938992420253484030285899801624037645490546643734003092212092762896778094831579400704783040331797648705647138803684988666221643282949518185294231209149700862655885675685742587977247470742881671606128975518282142621174602709267031158360580359120233235473997243785917055987801766020914435512416873713285800875063783960692674329948345063193713090346106430960233900220471049512359484540660252000207287048940904649627356855235310748631701290142334022573624657571685050543054539462593343925120666965564304346218619573761401243630815566172421336337019044921825132743027076074431860266381081919439461501518228192067428154599552061956522454587058878725629423271121973055948964177586675025613775553459402756099732937841164187693906160490012428728615553281749083877569856034002578003805619108603440019554292851568931421048023066958052204343883372931130679073105823557408875100214126784759475874110505599354169570696609784560599958215019928598013718187402289676120592754363058386217976480889644579627120147953445090187876503616327911008391800184735093377883625195033462470489375923507822652512086242908850264792687042789386655227831819214938281104644932640292609019834942621395608142214243559409841197661527772521605594271433534022197568992584336382425215293816118135415822763659169694051345319875623274091939751368133997813845916207449451701850545644437368283792955041875417825002650183812267921554071554148141810545261132326348765749042696757503149872630966032411848943742788719959766685423336348908720532382273782455044811025224688005258724128117375301877446615463103917254847301569577217661986908844517236064250159012321706048888909681124601158873187553237768719599661206118675972473809098983711387501122615038573963236084013215429847727184258992906237874964751406104681742937670985077393504140518585378445945934961441800684055554038233956351167210957484786967705794592308352175762541752214854817124986107384580167149061884866946918670005168162259392927744148326558953622056499756057865517495516987090419182627739373939985152189775038553115538646471075934221909696916621433427020321907211290750366847722032569885358324304825748519823761695735069483610277833391784268305687555417321060681254063601376044472764727209479821068239831947119222642427588604524821548797463869612449236554848366936415329635310834448639523331032214535561193061625240491292472959421415693842751590387163835477828542899873873355067539845115993799752754206275423338217062076744831694087595991582736550683224860678822779524670167708708091493709146151122212285091313848566637581973054913102622054948327816252692080182215324465447499805634653027067312991605368041127365270645100770232874469104024167016075695806268258050422993127312933128697504418653934394765893583568834878949604860449521880438659616802122657499696711371950669696088698654540203231615696906652300496120780993861295366389568887602126999373711575248980111463126737434199999923186123228140458802135764964497499211839068795147064258579583962890520656631190772155927073711649314137404718303647113380977808317817846980386481066453326264620161085488324738434460460038866634635020866393862469381723564361661779993116516911788408702482058657042742027085322886734485737469665890653383965527251028179320635401480247183169549776451102905415564180956069929150480364980253864993561144620337603341026450280648329108363155941423746477676441226330763778143302558927254074511454873470596647216773968167693426794670205504808306963783432036244979681725783341795616208450760202661124160076951242290485270351100016293179519729579532961953093883990623843703845911016699084294413469034800124849706899721051849479889146370628964206263232509984714695180238067877770898591308982070720120248367443358203058594410980465031081259361282748294276045466637842578800793537425693971319078319720309483472991281827652766395632559627448449322724455935973458554816112349560437316476772468508305512367513982203113683319867051472957794682903830326933115041030819168485955295547194534592544854770444190167625774242882339856600323988117721872329621119307065210242378471925603855682602511342933926964022027574473668074767250277614350240898114804833628233917590283331643902799593247663848733995782588708639967040765878261594144333897235212151312166170400673009191876880782817897642797305674083214304116001846541558880139343876729547122660589815784784823845573389037426438950965231475933765920983976255357185318394294462939870923725191627253724661104724674152692069584822984507668895796308777450228162744501914688617738288423774855905509153854844523303840957562160021954437904572106375782764718235463296636952021626993854683250625366396838736958893686683145675963239492023700157535671554883718959215653559018684790556050406047348053882167970909777535677010769091602244371438842557331819164644414366880048931933080199464775719509620992644091954275270680288884109813652088838217429569522796724565190899510248605280475710488565214118916127660760240741412774854958523464875335791354333554221114105991785983393823020076734058183927249261932463022507518378417531613595367008713063568456526553921055526758039628801741635831559596552015920057728581873824235567176123583511244661921620535917294970250780006254560913313662765305807933366774232072453360650960008438817118037078045098657774617616105096015011390156583453754385678396291801322575711617682706241038506687001234836301806498523163010650449912433471614658213754184557683081702691883198005157762869533426985772871548066409461102566074482585186196172527568428897050456306066648582770036459460511184764057517774896339386592062506459252579461592560474665528416239792702809524368229823156443879848127098290936890568640344899841675398255520835326531345996368545121081712559676548972073976307843066272299578779899750067849171423314509815187548244077378329796193933542997364333804995452518983295374300579841041477430234285996531274115737469223410436044734098218596575261885585549688086844423068789246324166549747789727265524050455962780001580710226770900533745079189013929659478693513587745539578848213377469358275467176678200951122297705749503306698574297410712427125825591862363276134686251235055301972061105661224639007183964902695034424436437936253659197166818614429825626676264111882581783852335169138950280191270126993381055654149481441296522956835357856587690439122868336488948939918429473181311497573245935858058048846043815567877289011167331444931953925754671240134069623866836792786186011879777990158691547401988209088233436138946304596662211246080716963940999419458347032733075551690030530582476791228961785738428344668271954394260631144673445131619681560910288236163257493867850591921101601774216283724826035337528992934585854238509545972201306935022486046021526186153884783616668536070352766884410433501411997774544944294529752318683967218547747054919125920723787453768874396140732374376069661038491913390225584336932342777315761255948878551294079902768864779706744004767497971699010857817837320331732586562556917485670513125539936647354410777628785488698349835379591475098154799827267570479952391820096174179651670850574284042676840011853046780858800494312309921469703542619592726263073590976462669364922795234207666005686292826903212848877481605826947453296687451059719061958356539720636942722901955175023641714596609837815361932183405821894237560762724700527878714340752426908901818205438166928697623647899633610409766731686872645318577714032460894835086863906305213902132263709453953046543560314104677422693777305934218298526734878837051106284119542143667788585456657142746665427084921846682769309335227479860142774263718482271045462438363768361342074577613689416306245388036366588228918750297891553343601271116018104061166106299788463499404576467234680999408128685491495431444663757432415240164158488210900819745907723117930120695685024585064625587827493034169505631321361629073305032453650015121172416455507667013522455054423012824659556913170191784272134013229862167933357870440372597009868509136667331096909772244774497523425649971713882182557907497459362685468864499900443106554956344003403877683026526745408126870149084364211072799881433860076306106247851979718211066568293397639539451283955573658564108776175764110532523449193170074167594375276229899521780717952518583208904105756371686598266057406647087463129407379439591678526118563375375353708424759178126712588851088358543556455828259242229752207982655534691287505400579846562914613465114055818872346386918363454946173595045963724905520868541270473697264250446046089642748190999453356935960747546554692305385529475044104740895111094053981210797991140570926872891670773814468169522981197767273686316613791050298552624472953601064874491619431515581298483094974434200152544999972253615705670333910064258013397051190672327809649449512231521002044431168670777665701194943318920142732683570462533039523306263620225871545457775764770604929953997570625951936899909518438534435970611071611463871839879758260799824991623563429811928499039440771973070864273967278618870976632376075488071575461144561219935848976261991995743418626824010282377472581361028454622921441883252823380473535980635040675347266665813701114359254871281962513087998501938848746260785427396775049514168562612073137570353309933421182587431285208099490235882059772793358564991437202016800963518589761455026124188003465061263343783842908952238749299315855490241309786950824004062760976904187502795945035840704763791629996479207882802190639214588281672075545825412562820832491492193486742631064101780835395570244051743402738881730159768458032350492340983945389655058528481715594070179000970782625156057915320413986266019990172337946416918557063800133747641604183437713060443142402624891881249459030992935793527950409840201343706778667031036382270368309922120727685173156943536928765918297523291556499898745165164935596868942828843358938043957961029987646769997740718353298902113509786945580718208991358463177836638025806577481206139581029605232343390118748079783839195843230044920030000293609262840245610181309358224141510030238251805707053062432073731984040628183721390347726139606685474826304883630174052769377584217789247910727483325946473633314792666461326212634921565119552168762472730204002086252124424937891781185484626212876955436221477165360031020231430386214870054108295007899715254119071513260472470230202533983791307938408960011206611455326096801350655243853398472597807466586200601253211741913149771316966742972424796953362829778527691461619646698652901365907319538496395153314189223850326377266970571724729299225616643375250610943592593231827466075999846471798767809815413033084807935411432143738782707086800700249890892016781300755462774204025643372850935993536835930431474211275360661334909180169369108705004893833932685971810039967903674985151600881858004723253102936206563045825118090129751111068119272073957023228117535946104197559484455044224813743551400684035958704844910240433782794543523046179137502988175588334343929604010655262873143788409800103840149709367769678272389350632655653061526909944375166865821226676124073718040169866120459345622225584107723626981527594409083885799002170436455111357966813110193233521883524236223930189338177788877617266977925443568413998134839137304794431773484057275907471161083605792371548269896511232018878269590877998951467990708359705970388117405757636229559483770009754679879169950634139569036627493168743252032958240435946744381139249473095508589299567208080597578309780705860706366590038525752672682617991285144702659613402563158938705017883355247903759797019472262560188954212310667319942679244018502332473572330860141285275142567616352011441717389434820775671752035498192835097210704346762871785843394366619830754655068315068021943501597109761283722605580646118265029950836645428880355482809418017207519930746525482467660956501946286248673803148678778320154527985484392151772657071003568822396992334569447439518931797472794360893625913323930637936123592307936959744134660419379541520223856359015281561124867120268443532762202836358157067397969523277941814805842994278790015196862449348685333746940835406048087120468705315737810814851006986239662973395622981892417635797361552255577200093154926399160041205233526050099942113585424767102462092543693848903032320176365611859456909911464662553394222492702361972492589328743134628042819438985147526265136537852840491772207661691558509954371067469519662258250666590165226871146827599529979187274127942586949484821499948977145043677342942737229631023377843981185400933835831423767351371476191843662990866109519730716132126804072070640870780628344547744782396291260010070383315973397408134147633405837121702299828479485082965001168058308660534087429710071643832112134185681191355797031035640660674171124608581811772720944526748929882880981531600483484334329258782080131950152990379792064594496526209604646130807483497903997981366660814109367081501493013317987778423970445235345262451162417303194219408843842138074967028470582769901836866713822445861935378961772248421345450181825317803057793865331808243999032870740776976064805740571853847337064834310551096634478336669042763136704807586517365797136211624710257953267355206084531695186978286706442628626395149607414222118992574163280333685823680906473269108560879550907146951083501973652650163620691173614434376022074343663278172616794365354028350879611668170977299413329242853102242731460245981931645393086566419168095714547735636341109457537424127013466092829987029469225005609148935719219627886553517060926819156103842061184103249786722102357857380363966877195050686029417164805540813780785634440605334896258106006438094052913691329158675367290141201254618676773332219794175088755775479718673883939486154200593603203954816323103020616423867397093710839615897871898114553682658447075458783118190023366087506978374367440207438924966819405213686487476793825253259734471325657957108673156552118127808366008364042860528540535034950176612182005881123405988511608306144849231503055132715499943836726775291396811671741107037864808220275570128503090451498085660993674239141408137294509508916040084880385126052374726220832131130118877249390053885190862016620304127338330822376885177520007162660545308168910551027048206864259306643403258146047122775364888620470370521404458837255123240697440311548296630455328683555320575028845668660604051631191978861891344050450146706574218145025744150912515431643639763471496084616921691588906643318094161772942444267813744245201380387655455570994259537781139991672727963630401572633729986361556875282295744688790419550042115325815066901167830915280249317272239032336428833326465165088029450553351265755331884109528200193953474902952152924946185562536338925534826199411100653632718279533909714213316643228976513653756607679272611930525331509533360676882289504637968260788530354999017751472236832783844855905587554729452514767314824700008649155270346776891167316609312798908304391728180382885705826358462049930067611387677311125159653938052767644809094689360554558540305110248935812740648171186350593122648008331898865084081910232912772214306873277181550887217911939282490833562582253824958566304651212513938680716752798136384903060676496603824306844521424474974798402169651179277198301900928835877874551786318031213157816266052352420958386807745919890178528945692073978829824318254828803767836945769264370965570278955420236563465318633087533589358061430931666035989509802975402163642667940061694906307745403336415888401856273908779094219374541395289779919505811512398727811277052044628889676576204347887155453152137381991361998780634451422237710883316724087265275331735893833197129258839234716392342611646952816033259950054307629463527993424446629554718055401467323011537168845330459671616005062986429892433717372769708986976311304603813694466876866558852113339228482279288771725065980107614730689732508546319518769065056680957782914367866215918590112732510471009325001837807792226514983632349787121937850873634795369167442047937893608233634609666703704587131733723929085811244615783860405178507877859666805690049528538712275243036223309707838878743093968440740186365488240924198311296922550429467362803938321202544305084030232602891812533837834720169281029831388109862088373636124595410033526477352125408960443495710872004466944740504181430539375974997235191384764262912442475167562557149784655839519095519656973612676149775555468394211684073546313305136429488931374979941004482067517955299494545191338214275004688648850080625425657255697031851628472826812878438128524708409359692881087063253264481220907184058301090967458080899506347453532002995200234316121374098161410900539135981863658581370995732911051446451138998982787447971905437800015184192194998890428219996377737564767442914336298428740825412724669981656100409516386221832151219625497417581073077338087294189592180026420910118672014596652061567734369839911877944565035730463100962767041999720431147498003871428186236484743508773318443952371300988256662194348824041466733754460943324754187692906063468991068425866078952725816706806990970194721942596702352590797837064926809786719427373172154689565613653917663261933894602724198203854026358029130198575484449317765398657516813791597967078843130547339469073783524497382496877243498441684162650928487855937959542776542381517702580219111410239373945791463335216468817891797159897821504141336134011961229585863213744116868341898479921270173994357042490280766042368231306294592305816034402114190442648210070915119128632526643207927399206403270502196136290923785508894091611892797999732479898770027343898906937912932694388260729491337611804903421576030209232881941209677305990236485778758568570909511203847749727139447140750017842138051158739164470079822994287470311711455580863809119499634431231542924995363573544534166199416944524373140000391672173343392584556167540657516390123765234814227550308964579212558077778186821292704585207362004093356520798803551721188807088087772466898440741018646115406804612936758076828507023774182209672664449988128724902414993501219401001765370672317191401925997949428670713449531376719892790107292559315329271665439517184073930078672355080717529913180235718999452728793715874798090520042529997304171394608223665519403070588265928559013346665409955899514815287087015895503845612331949334663867288844709249699760870154746576067740617109411671360905733205915721144812868914282146396418963599623786016511558301453135637971753217719122740923575115844689612181585533098056418282958853896584799967463642188879073429673984966106974767322904274930921304431241275791867912140260586098638979591977302253507591795249943499668854219091401728091291240324419097106670936334674554710470587846998580373319693822832186125663563662227300196033318571309952940878063796339388257833300085483835132481959803926226375922877243938995147684343099551037900344498227926589430544888103232468580078181742899166208452521226468017225770159292796370494628221608659705311860880457610945893698767024912686130786102451619763311388742213622180967440266735615377707064630432362851346787104938266503146626301826386009911001332410273267944348625003805191824863507525729321246269404084347151934903222130472688695181142909993054528914728385212132736819895913661164653395636100392775995046821116359166052147490259673545652512579506858292074086966566678148092233349090670531856554153436180220853767903100802098585062424675371471614926784976597351943926464759004842764683915776120276735116378854746819555607095002547606392301607456201613727812460712017149291083250455836242558225613747332670029560146313664626625184108408526435551075760616558918639998468694149252839714828173433759651731790585540238768981676874286013596872690278563046650509425213768568600827027602310874261454666959825912534982207381304504165906647669730083754622626706293980961379228599568320787109947615111949624856762702790577996604294851650710262744819536909560241872405354015195815901368973088718316821955357398270458847336192054118678494760800661846422575105028339264471032443221584848296622560987616922442031578568960816859233700095456702725652471996634621805360039904773049493081061117890447026080993179208164914084001561137279717964474457910822698800571370948730739574958519456023949553713352403879552609629342711187222946890885571493932420920963889812746152759211771233710658321471894667865836881256359416902697886305637566565270511589302949804123378578009588741245234061360202559864224187793107140310370774238991415782896268860247160087221743398632360201329490179060521461387097002495616922113269135683217341549840373435949057182322394943783472872058473593126858273723016989321497958715693848778260916053432892608850153974019086350180056263354802687994169752296797729166187979142462997664638545934162928193655800594073599868087694021711982073641040542199591089911339670166122773835431930957664741772458832249655277342309784943306925485650386363310465509184262852528967556488981679969063781668502292160178629319257109918089175245793016717386236635810518592787953993726687773744355504320944066168920405278890106620954397703842075409790585293639502140471672275176364054469159930595251498121123000632836929940035415174800963695560911591519351305097536056757497122738733247223334299439795964416272756974788281452938919543919179780495830578105176873022791010237618749182041436120814538747344362413981166492880532981408473122438956024899704764414827372680888359069383203084252482710559799658759140471216458496005546408675587772142479513233766094809931909320095433919996718551768358151589619518928107632509757299346855803242881198506144473507763036827161335579895814696687756797267492473907511129330448610059311031697081944370716803795577518487360501045579868709621241757229741722143091970632237708849516805918096189012758100919518522581134272755075309636666228932838080599671285408828093511202116961319849653073610668505654418211025373854469615185587420505700575888261495326807192713148159720874106763838858514416282535260626452514445199386144279460790374332488395321942092245696971633409779711403667148196791467370350138794216664252879537117245964416540374786812119366723571213640039312537831206990870490421854920889257491088284125753811729442672269609411252776690642554159109624124410614773690847589962809481591267437473683970316925645103066449528952833136986667526561057302938060806717705640347372758940854559438090824022934117904362128241289781935585414469223058188520370422811243860774239667131292667503614480954661643166021094263565562954650536478763836171348484291106790718789951482491353812912872996022446709005369204478525205413817559888660494002070759867343020833304262695786258762182090471108517478008062047916158342858928375981008630590361530730991533337103005007767024431048399846363323604547570763844498393678827412313502948266613097046593733067129592808782764829082779540513431895899823748129703286439371900576065601753249715130145551395611158446136282331860450878473803949375391163105048460542796053348711044126190850489694720890621885113977651566300965967733708467656571181095189043634361442938460620424892828907311518705548399259321673290854432989232402033427695505537391672297800738391325014683049620765825976502001490715724896015980764535931939727448433948695121642423627605318724132757699110767075442641487063525797598420578507881625322631258275225375353312907827229233991901973469958877318300954825891826980150082560409853023435179352929576326184297304876469260675852353214336752697472278921785590185472893192209568387192363535612736411827177789230687431274148917049359515220791900149954463891144855694570764248287491511795465355571647974077067810042898359708679406723077456168802915159985106685165278844446272185418039624433414989676529360733224196806303027701699401813246007448367635711560091194638564196215462750260469722895057683130186655197563435087042456745552261726792507936708788382778795714813046436130676422706429620437824366040216140317789120666296561961817276627472468337572371444709160465057566385526105800512406353089397311243525990809771719833722278531018522388436675146455281597431804631523542433155277652876622739675563673188640006742892639445098465242739506308240042149149884627632749060858136523029010127328467486160496136970964099609404485275485587599287991078550382891153951255006778605902787210807236763823509705570383045418472207043091603551691808413012509993628114628175790641442073599128028234496708954756607086944124895421408720862402696781696349037884497396953950073338348468396830752927901597524196430868111165262332019170855492271790130827789573109557139053285109689778332545958693287355659898640515042491550628028917049986801903913280115785942913725572192146862247809512151632511954616445305241282672393782775249991259990268401573895663033422145829424653742257468572830795144571447217172170344390171558138444299290663385049414552445567639181283014510290419785983701505834195674761038613042562189128641343318579288380854262613061171426518448419053079528551126733990801837900708461500681574188884795165426161291709564074295450881956626201918302402436945381093124745577171671312225963759197527876184346331791160454187021677119481282452140937671112699410475067112269611894574476316058950214818972540215691086743676782333339834793090049695579827352673705992602098532938745690406929370454895121406852644336817988310511018606485003687435377377880357687101549923752753870842331086890020957072110482921078203892582825430743853678938678845171550824421056075012746445684719777935620199933697201020688921671515732288023709159460020579281422206200660770662136186411119039464511246972567849083853953974560152919983727889703872145059312940206651954534823197197456037124574320069154489362428152384518561176908584188017896443196497458965211081852296712793505164224540578823521427317961999439433840947679261853070347008183355600509419881301091737467053884095017880299752423221585377626802533750299111687354685486159204618103044084872599593910681436894070175869895284548114007698177881132942381244912110629421844127353550884486951712261822154242410334674508400867284003116207597789041715421899510712174705598161680472160639854366218120520371025267080822589762082721234822899143897023722519527191182967187424707516302075467248142839624551051489916072253973677889265488627584976956960720624875569085896430625668405496389507310955276293395519901278703982054295957616190481642061914557057918641411590376116837069898283627310675729905679075315341752230316326873798944842338809064711121830318844994995728478247554519759647479833188840882272330805936564717875937759645466235877959356774680757359186747964855850779950002190153225827761646716858046423788030255771497227479049063699882556523239832981578690856832572914858098641904135700095112492548076201483334658215008902573568715728628589777880228112444674918240096125221488915805020859677852091654966635145651388632847300280396301961059638194991615057652714347324569091348372183877979671140165075401908204991585820352573960135268809787675490861799359172749390316567281411205233112473050152264568898538213889610052662413601412411722965122929820314537969307515359259003169193350947717065852529386538881686267170773291846400688708486999155003104663586382344290816318064759978010654953537866623711446364570626969502173544423423074929404208942616624720195343641583097741467031833905383231234374060924479894152342878888888587110637396276339544946001358888192005723471164751936785560384570786894012343324076324959874814196843505410918926079285183879707107430170210495856306080442455608822862122117572876456630741312672784076158322593594055019414285422443235678980565689755317999308802910505961137210498567710018536735289083212063487672806707334546206404814261141369706196328862821461886994687577175390043169221020130498162026839862458973943014519368318441838195560100295968496734198518495996314945289548715598718870583552621401683863581183106851205684154635910380524563847117217821212106128722162524253763046827147151974918777923681784807700970624766909477312166760595507462337125669968044357089923070482883709634106122062070766308810712735710624862438926613157497959226806833188459480017662980172063360634178971275611314406393895211433271861436947760659023345158492960047345295499295662853340265551685535599800744092303711269544719828803680436916119091632263364533324661266862974434455516831152632639373435575795104537875888710518410020589958339879959822445451353658029443025792509752253551525308255741984775779270729019138683637750829888081844708006890211552146344622614088468708319389319850769307851285942767252474785352358559267431807815209013706262561029595478897605034763527896789052350336340918526657057958081872287341591904736173950725836194473696707391163580393299902911848791441413850082003693596935427471422729646162077763129389201152696915172964938281148555040979580355711393742641390964747263809506784813646753925737960500015999521599040534422500550634111212967036120707920863177566166569229503234057262633077041307108981897403699595707664375223053442154801646621952674073998016018204114207792322619912823001873411899291943544289433976296710950251614937569204757779765928995747738757818760854802038762304982286305288261345463881107741394409631520373874750233139799838650413255743318875470620818472533845161123753583328874495241216906348859022307736592331867789432771689184631548324581181882547915784645287665908939251778029107639157159289196176127518723121751560070469290085609343869257334092947393223315517614003002467048702184847384690761234900833286623358455281883757151812237381345516686955628191314036123519539678665398336254286303408505084714763392222044018726750547293413234050365413766358316654410953551281819431995257295975108311779909520303889212337450841246936324792672921730951765343962514538205080555856311467242150053436496567701001851431642012883560394627048117888153808553859689392563362831101945847612823435569999360628749362849396263121141428978393706694610773760753498445233988754224335605409426064724465150571453306140168263830877100622522054887364455754048830624591098148199844437954318671983054725473714673721746781284214097106750134651020281137856143339404661336097397401255849460415338500002693898912492847012546892053061780546003055285372933509996259190318553322495887219489025100141803027682285498654701158621266627181173588718688738389808332699617026792423659913858117693296106288197971001919395880629554677187346338125838160292486198360147729979871273120571322032028504575690735750011778046083231651989085708906682400875964848727543577767320694907469192930438894927009743546491436041357955549348300042338360759281377236265892227047663620196806664771980284507347099402902967733697999621184233818138249990684015970535495278317959125975524991795957531505015611136002871680310533093786875108515066706678620823077849432976257275439747172137699295045174649617946011443989552460583705965135899024689374640564101925298778186797415025378969912635036062934209463477387146111182074864014263939109691429255035354418183096283089143643718609144817465350868728368487526110304341902202363658329806583404243426301929038999413811963719928900533075863880385638026377355762024440421846082611952343954020299294254318741900205024128317877368328956627168050002516703106370642969704283772358296461093955291187494644342390316988195849776128675653911509104542124861217280772932996221537953310962029452657975182251689107870392012504852892547316032463597681300089847160255250462914104176616050444245028613939373851574524967337186933259018554428928015559462061881262235852459856089108099770130466183985887436588873773243601088860550229426153384432008657567689985229925644560273502542282381742604579927654137058837459574794972575192961456785170540640531904771432931209781137337286211239818317844041106915878514399961654100374566986719879295231727712111771772229486027185802483882395198074790128622402561348121667919956756920273231028898988580958707002246439749981244065925735360676364733954118132106641155299199544857249592009103053430934913609249297653361487158248749289098935130229734152531034647060511392685477854761239602786254479061019382441139667288410559126176759142054940087896465268370081054931187899275164499441058030518288371926823323313797222058155222896466033422597096415435116962085378815549492184638325958401951721290473197241670371516491881467203347875585007359331254528344449459950467758875267278189820752127439854852566552803870490438503143232653957782922118685816688148722781734903296936610500471173522177161064283024894888579788472305995091180282414062431445897622125893030305492825543169066044111330888912781754024348338736557326750833574402747013630048297404805583748083230530028596408741040030162350741781079342392865246051725408625341045214944667618371021284914091497257188761924767939637028534628334759882175770670772289957481292738316309937728650022513231422234754422579929841855985946451468684350390314845273621075639131390824319325380971724618039332427557919436402942528867210146505840229198062530002639445641553444719681044247172959043190866680070064196331063863914130249071095131248563606711066426848149947420902504927075034868938069205285471610210028557331474791661084008529287736898562988280474609439222101768158060840395982029394044056801641541171538945243610104322534200730204315260865284828953604535787727385628812968114791370986014951254706844185451923929072881468774586758820306110885474794911532141074138864914763733541384283976740191875378571118515523438069807588777000827782446489266182050245346558837361947434377809680600377844482788019840369988901856492040146378437457195604765771763497148753529247674438388594397093126205511452264943420149474713408497012302647389453439359384872233770236640360026013633256865164883566645637992031106481526435623633931034222232355213509370961371765010288817762179693552242379775216656260241135497573014130795564397554787053584387187656853711857623431937857471939579985035081848718829777316272176681052612968630380592713032967004361608181691291430592912818088530249261471767125961629681696763811424116391066373303384993152768280740948118781184558104319987675542498579919858166065158389793255707776743744116436672753184816598112104831674522931550279998771106215597545399479437343520773636597563675211447481439779932609623982600338971268883683768790803057118303171340769493891379059633504014432705976380151918797310743478564409243233539718255459610193420711760557630156927018163410042030919328901263062660290810416055096762283837210531454115711704392214764971534200239720890924410613605239216073127851967270391325506751978212863009614699353698989489629129966825662563519386134716961129383146386288035146250197315211925553022512173302931962094722039477374774504846268505683930350343868458784422880640500784492844169201589431927903016379662303396527872095562568156390966362645360971925681857871968341995483947410283964766743270092620340260322997257237091573993613689320984290367200247030533720027280038417097783212839273035096338938542591727622575162362022599685496500554429222347884038006453190248400027743775341348801335215989938742326080054254247170602001952079080816650302245176710604093355842163642360723052540350943441654273802237051128416322439426475234583967057527446258480482041840231234842602058417412378587528062618463131988655226053150118765238820025342051914431270624521243139110536045516721557341224477691444072542250943379523540914610979701581620559268793412031737790984636977046879757487332724442490312397606565039366925463662967999702808542773925468580692839991293056392310917374429934951347005612307226284322964209030221618750098429366099194983439477136694496857689442264881224914039910670322116288372730289047738573108522450033816672394101565965048622910696973855813020101016596778492150524524163597858951412311844796147364899117621449468760602813472330721658608635506930727103404682194935368589333167590774588214751222713377251630553526943871411102693132298087279434996411605103626921829523837922181308665640485185328298412378683376130991261907022373866335460773339455678784703129263634716537532090282547777127534019418852120934212233684269568396133976431366342292873151938449479967788561358899533463702974267094796359284987637751201598974404152475871775040728557820818028482149140963098586410453529806961657287735738138755712151598174425380024951275335199558910669206209576113284903353418478945780694878129790034895748753362050781539824584920892084749347087235642519520452342493927793799776786136198617469969693126983224168201909587877154725998407004749212713544394340278146389166186340477628969995703328593195001704673717058025352438357468612946242018587325606773986648467186870072551528951891526255461310771157406650956757785133396326012890387635813591423184033135516070805571730845080137132045429491261012978403015641430817512666681469843066257060720964098086648402611312090715751833710679060879766494555066896257649913350023260836668751637428823100349524601403601892419159189925922959275820633937990644299249271169988339019515965180613573895432999894831577608592304848155696364198541694025900829134781366210991417472495148139315405572913400497872095116583163635740301688579861226084476006780263453790933289131487409161550962668826089637489553038837859879843790532691421980575061315224117692153481092599586056471601215629186621130434664996556516932298784329307022398027011414332176083277481254566740985113591763468957331875643736921355329794098131053487627474682120881562550550881428255655602726301461818701211939805917586146895437388795911816068375606614039394049767168461259001949273538210144048916666534903327280258028482616623798309398413700586176634115625829647911232227507375334923375588614078459209835676422299267049663923396700676273951091983057302624288416865668362779855525365118686744053391254580621393591196711448438077488551738236403307762952589858684493455657463478117126363062783121291423235729455410918637867035685633113782220139687642412165249598360509878714727491849673012334378180463831584187354582895646400179807708658382550667724914138565820039682009987745157792741850123714960764039841065734298623591290702110380779922504349890524389320347890308828719589040376100679017864219311467557598930026491189345663675214233027772264878374490381972865809240289051249348258334250741010764402699448241367513588990261100526633287903176928198197677117933055092254550168988385755711184604062724032969041641602920344983239296376314963817502741923901882100981471281443446703980599875657083621988880973620719138197772524100421922113549246894114245414372112090493791692600291606869049421927806267868540149608572744342888343192125058473363971742076638014712200975997813876869820888826654477230072783335769094726343439363924451093740799160365246814221521418251509165560016088242931176476666040166149409617751387959304000667838298475779617451435521971107542909535756971647840211114967059219572740619358273317825413217697042690085081762346191097822496311788562562031626726216116215298679994354658456828777010935958029126216060917819707341303406969946319555176649237050902062556966761241375058739571292436871898013175671381669805507508696910381959470264039318613075638568464398580077833659887720496385166104378193365458881086843156468468523490854549529450710965680147266392003581831969193933659362316072852675420800357125522249098898054570353965505168107882852864529840652677935931955087124815626428567901773577880059003707684993021595642820310207853594456286754132723969857923337469252202259735727997751116848764487235601899102596111514927141978064206334037406646670461524244267294399389563489619484717324536636445719285643430736881017478756148754273773852289888136125549801175894395271495950395640707601607104562785797592351715554623869028246265577155348990843423689483732331337719099850118433499218006218421240299027208453829439559447186342420117431465432792072288988488740343057267417723708067738577852233243672319230819937439683915440649582059516544561598623280971773789120893086121672269536624083598033868209624720281605641588278852741452020860395156344376951038233934553306218241725396467724828107444994633708693546367123495314361476105770109803860472148239644683473596101653816933207579295804239795231250209707489881769264862491580478053842336543358337010193843107143139943833585292436929169794827683225645488250493758065708204332690153429283252246824483410972045997105029219491200004356064388873493046364077650981091839516620395962650712687713049420813661020164790060026130112716818875580888149422706314230708204130100772098049184062203228041362580051800921206280742731510572822623376036459787961780882292249221002031736456366826421727834687640584814053632480791830200948413810861443283626261692032040972578925220311877455650049930685081104107394628130349553352694618261578823385706710078304466022726537115509158412710129375703385879757237284539292895988728180490390220496139617988669206437315385861127520716472864870732451423836516235084903022716386874198709556735053670824221685660220728278626961642949943462735737024852061880916852346905339456156753923289238892045090888056432159120268216479709411830925161705073727852182241843774144994444796800812422381396128011433956107925125566938292728894518495205656479288798467478295768971565046605743380817683675039276816505508751212423949926029841364819217401250701049413854705548216151519699389827283019852789171293382302732747354572335967904262121679778835809536307205684993347760735860485162352359870983946965085935681532501893160966722375508805057199214927917795853333092263437505359039352967087492413012955087698529172665198805420638824693085516459299213503601188841365820793247308338096862952405825957815923600207308796364681882565126559078649360912095932577475791841991368526488425858095470521872452183848155746479635949126054100759873565047420408657908196467861088860745823440200596937137469726554619440021533471197651802029945746028546114454400341137146234850866902640999835474619226352406181906965593958219260459751945218547186010136586725824330239183847055787095688060314095111184685688138832308190665361771520893357047382326528633906357935617076387165550366027262811769099959556389802647692621844549401990735569529998624105286253926755935055719547875890932694340554447107616689228089562066086569944905859544518038840788528630069102190204691632172591973746465885214629803758001818354722671577554377946458675180639189931170900056297193465314174724380797003889515935304761631926385152267377564862725712122407042606969044731545405432011544768262989326191733481446407893297863327714256422001628622845256022926722039032858852550966980793417370766719350671793803838423609435455646884754065033709502751899071375163169890856762230034353248802768786910964565926739703092124666704198303948460691736963253713870119591703313690617965257847769243951364137415307103859326650169756472734611428216414046385745227023184773573317555077165126936736741629792481292498743205155835997683268172359371347012456091212295887484642867877578646795751622965835785463864395557880638259410281317519825410588466995700288346083450655637106260214808311406178732561340081016232526189760751886271379564740782676263559705973541667456189291443581212424404676011914816089260905831619643542553993402039798670408163878137967461241701829503692199517679672763486035252098113450580438489510602779967538406778194913724886699243032503589895316658938365078639346817966446042366971598315102456226149656515684119923736039138700680083951001771224019777161575827820297993227494571953532246936982900599366416589787251517727463895146269431106027269854190552230633092628014821482309609635823553388474087969696520047538050162437487064672959995402543841470139970706134643073875937981889199695346910796106300932889981171735045657785459463379515938396509980647441968924682241853711106019941292568600206670508573236766497716210397782410983939914467015508129203700417353471801331728912556922317624644415889241609181001149181985321743941473620491460989210711065194784149182976559106558188134333708873913801535240126355571162155611895528080568951526554987444334536731499537753528195430833779794624656681766785270140096283044140898051247012255419499146558168259139756529674323772834587323355629868317816780292113528663119722680719024978280040818470547128362669379424806012577422038887191868631883448040020015452134369307399895551088373207616043579965759272959559449403269879855598910900010706024392636484042799046911831117069348975342142583017574911456602802451624070688915906429274072763654290623835166951367071267497654861627881666298541483065726588427718084629534053816735134742365841971731795029103239286268275708328610899135163422402889934113026131852180686527150505983759002779807773566223011788941689719454712179344607326254690287120395766024482256671418388078554228023784784496201187429256077058990150435615351155216101657438309215090638315321592936537200580321910657657215666815341247654573083731344740394722638474346512544521661792980002338816800181577838361703000507770721899400195844878004251805255464724701063911083619487594713834381627924257067711581105282570735802353540652641183829634997288735297250112282208477996416073074851093528870765045321232820222921439911099170191434612580973635919820391541809473112124075733876951153040686421981760730940392248786343513079856829965044538757787037942418740284997136502228750221662928279924265870962201635314064803827203966095428887928130337192039410759247169242739168498523247197273121591784250520458251462557288339313896397732661534729027052493515404201580059981956608905079272892706164790429218771081619749768508639849339364643058661360212160610191272076371006352322980097730083536900596908930188252920677441148336565335213544052062940677350237569694340838070570449158815512736492862139779132213211843388066176862669989419112198876291824452684702959605871999341982491423024679580081630979799600019718579349756991631102855467872079017699044841433689138792070082691245858860091100747333527615921285623074522312582760989162946865573374037829302178739225575289042659045727978291390647109321424303936944279972788242891964130377157310772605953533486292992603361085012572105175885943335595705321341456889458117518989992036681091968371021602143621382567898278967201088486661538826229576844449884230327889089656416829054301277201456616051237734474662164978054102538036494621644430726212087953103526033051131027386921359383088225533719150606934884972757665515341103897402690521343519506346008077717938429482549626794547576980199283223676534407717065157853712801659521185640516453515871565192484321804442962765733972699330046829989406888341627015358639514826801677079021155478293962619923778866000228101968771938334162366469804573202014667190358534377215482330962923275262634963671825984637003914633619143396330500521755888969843386922843589872134400996113166528653861650963770197465796117647298541079103250256973646631652580593033941058305941438443670583302078961092385000096028004387250797639227058729182855207638716095753795885220489180587608501087576665670950961102068748473102397688480068745397125317899151900803171836227422289946173194639475472087332607221032204172993718739866807063991965434685529724874290316386815414750536825089647609755324478912829208542640630837182428790314967707466436030120046677693513719304754091874591925748831794738661935209325972784637836372417065832634101495661541702552237720067651495419730409007777535110394473910436455762333458257497687020560780560125766474028996604483310845299656108458520836187635944075062965164082259016665860024741824447869072154938884824126520956717610359345956570059031363334002503160837760160190522749970822199550294007333039256459130986258366814988498652039570467430857270936255566922917138875176546035640770701881537448577626102002317298447304080275355918518719943682484835725447927289531637629163866387981244986227932821777092957191598008618007108755043196577493390795743913791435300045489842318803840629056604453508622889454329052961581308249435966212373719648882667006349214657094779879673766929203239990406226893937690672818422017388165317029813987140416820890222156353954178254095413385973580442456560445558499420284582912636669611387427404451225546415356155838383066957787260635657953616728518750757252485659572480629089199805995107320554322842323926689320663451184520268687258689886344606068388694479162354509096941490038433598847203104301976611951445601852362544266638679678290075412941302729162013553313728522646010957992606699109069616544863135068561276755095781547242671190932783722064505309964908887877840158912914910105346231151775487613772792899879678519963830591786250997836698271218528501056595898076691114631296567610559849673121473718916782416581126344147631655121086933981180869415987776601838722614534041581254100451763340221780549086746753938766610289735053241990894606197687789239665605165716452187952517064149162738755920000811374455502914943892262459729586085538415828908694331245193074260696566568387741004970586046250406779678496790295648201386486985620162529677519187045200318621917855086482423481330608007219543743506802384438536607353392218691697424857241893460152387618386782325153321432760552484142145781862136735387766492081605376589501268788700420050453317070218115339201229440765302660291694287227700950440380765107112761096963572158992801291875003909086676778623232366690994533299491222168137364267573039455654289904047646814229327801683590630142563153751747079457858925522910205111288353935603204598220411265610249301465496049605100661153637159888807908902323782288115917266030548928229073591717694655741521631460966838791102199409138425309485441867582737071365301751525547942825571779776968661573074132570848279551828767121886018701878619280272422103259889312657193875315049837541388659071098765055026282156387486107899591956053135772784100496825157507016394803644582281562465844931202245768097460360009083034532364442320183540873202417639221501463884395812838717474792815470457888288508076821945174144028105860328866061726727674515030087857289847427613927570162848467465868388369591904690837471560863827694337872032073339132310877824074716599328692954368440290176778939622098606562704309952427724800739407743083724696349092602202149637692306858199125713600548864386864010917928499351492615039593355117890366131905372145092198636688161883816483303851872238717415106454350355132051773548989777552757443255371566372474534435441848412809716879074979241665690375961387244267989469704939164542096816857631992943353367922943450974577981735513285980794037989658748077626750133198955052583318759656463244526191339847597578899938757558196148864075073244250467261088756301070340776077937405119970413498591233848696140017565253179511771575795275131945857256304538740165986955527162558693404651982237870681250364694679537863190584566503257017428760056979496904352580609209111103053294614675377385059624280899965796306324467850909780831489026318753391745970785291441580820547774726329434556660527022852038096530229629083381153469692319673185432212788337117250065774907249107252485740348419082835779774814914168825271376969001094340761377648487418731698243293622743693716904170881810872101742928109037100000977309557903344136643273367808231025012640831073700517532261466072965558652756539975841935786806116867047742157426598876286995997384905698693761028030005126905217313490141907445119240485586174004947125072513293761190201760157186724092851713785477603552145995848354307689575140731563893520272232436224697297570996577403366115446408204985059861276880231146593632332116664047060124406837360322379955207563026996917043872020612169132773506149751543096030902910862068818208029741138639192386867608762741997860087946363183791825619263211533747157596191757134157369834295405013020010499759058170439698811648143980733751968237686573164454534211394206136959587926718539689642312494935570859665860568612537475919659068040072420100618936747953737753705749383127291409003383837688855841053309435892404414955527379658360309647135313289366129538476897703162917189354281206164435348255552192776966124707287270272355902245433955885751207009741227994192134495378305063561634794407295832195458144059625112222238732508215922805408792621363851812950739715101715283572373388069309775291979566994423956314498349376967149231461962778062765502443563061034611737001968423504862603967799669087117588804859019639157112753414649335925988454052986607957770870482923146856099244325494894435569370404603972409346620158075409396512099348903782562196646067345376443663877635728814318418090231549113721533373625163581574526840997161673119389664334579356556456354401159515864788956168788481450985197215201467974181561001940631241149619657961920795580250374263473722428593232378725810430245637202518132904531251551627240821059617789024316527079137041828262423203999027718050493278416463558083739015666535614730630528564883352138943172947828201962484672894006650945217851258824311228840838756059704734974004156889921429014908926432337401389537678225680966329782263719847506238362967059541391051250329777158461686302483375117714795942380458251770588312881492313634727768589869682161697321291504228940601873619348996292388777724630285389255078462577634963779959329989151426153404562174906613363783607243267517210079578320766293154362152207280832251485579899573303194771526628078798007578233062417352061348072159821545393566054519332770028296707118564344742106657936278687268732675617734737178056510690046607762220209746122648008510436643666435541902320142352415694782992027493364828745928747851672282706320889132159909846882540327746849007379809382050344297894224907120550708900023237802233950487712523780018161507312354618054223609497536035163494093928091032767640336242711088275287685948003533785270118743240118979225026796544540327468208658559416238357927216565224536669218251472645443651889081645564816245005362169954201386198950135410692688457725430323102706392241999820836165265276591679465060858160505568568712438796347024605304900308450966553605733042168429732916370172195896437974642297090857585959129744911909686268599809774528624601994610190665878857027337811884181381233078873788158373359983366672234669655911799888726805731249876450737363254821569278028649052801255401131062341913855820271583117070719273865683054999663069013111249121297160457447041240423061246140642426490959698720730873511722072350750404737742430572024048268685119133667530568425561907620950064557291163632179554525056907363270277399640559645834440273363853661188000047234146519397763559239145260412600704968936012028106894549688440479900267973574869188916898200795990111065008878815333729179214937996646495852784883698591027255166736443038004395574418572899294370967551529143179055369802934328561669594406191593608936964899070486635648836640763029576597160034720166645043990534279613912479497024231544925793613084992394121484803964852738532840786244112636713504212176390740168740010064318423771759800182571206639184134636335947786714976994584189825206727396176883875524645479643946415113644023798932248203117158653341801005086972304051184189910711151723320637594773150678911124405222765005192822545537671036184314807662167004590802562833162356684840697492521011525880952899271472039977820122616771265024357322419282091459744940443106332422973501916691938329374288973886386034592918524051364182398592764975688780001997803671401869838010577270717330444418407603271989346719916686888680593245148354943447462721033986270080485900155124951082963992792987842114837857821508811758170325737210523836242819698681325151023148163454095321894993683800138795128096101389801313982043237028325779746911915430218574372464407978667515942327600656822134915485630059582718562671520698991302473350312566427091102259532338314893989689756822401425548363478786325343080669902177859287335109626530228527804055908960006937280662896796945405843803882948848124047942281965182397536936457929889578255794210593948378679524919234465908033421164868438416051929819069131125432441300566879775210550054157419483806784214653243093753518480506741715472803332755990227351462034161722520909347730060870649660727422118067613395865270827693082504392270738618254811116949038529595723094576904555387646766194045214126185045174967881222625225420294995105078164391170749628652025184869718810057932904459780474128600044356721564987537843310493494303165385746459512014483412377153293124606805820556680644340261399666836315845102022850213187298338640077707077917127911385849411484173150612304233608674207467083445888214784873006838124326048603420520398039994672066938235732542051375164474479235433550682373983123832947238416282024613236150041949833072908669815550674617589673248615861702017780769184080195436695753443836861503161723295315725658560497271219460777837509040504799004521018029935893811387189517865310399566336628995254428616900954602946642481835104052723177763215261081807631624720322398654828944688261281379543513838399159096503176110145561673340859375841223007298962049354231684731456119013370627451653372101952784150843366485718683154707759266001380413461198030059470241851889381598790912932175523398760753164627792920260871619044331651516812323419790246774100510382849642369445921137356415332559100571402192386504324237600586223716858020906861290616574468722975254000616033200134525382789948233703766721713913420053378522189534440356774167756989838340371683053339160303712468122195094451323769643603060107933336317574884600660754013122975875644836292687447653875456366671633406699749727233770775602930171119873713327502029649301339157436902586985805804661850651842865010512710599579744907900725568864758808468315496153957143231085273655909832339900927873362328571917762632399121621719422136842073993822309314300099352877919729663183063706089857543103711226019781257589533875565388292807852373328379571498654743595708116126805997489585227762613411374287400898540454081729983600454020975504859445623078574230082737441934713309411334435977095406278491948107490251001075326160260816166141665828764940536675366409103075438140950942363295087616474038594568300076749067398262609892149434246290522082284867369996747369036618212558758764999033240531377456820933035653514739288807506785309262157018155354164246038618753605910751171596544451629138375154996561231768056352944122861796274432731602355764359001440423701221314110232709724507824830537580539309136187075390125804621374052404104186962215577145031687226391307500214048177954438873320863455884008371509806523844996560156955171721235083443685969318160004631899389556155154887502954567874337030723431693153231859698126685897895105095148228879264170688790144046095670747756454596689425959992788755978477536636909986217025002679023725302120269168121827137745844016745136986531559713305374725826662884442853078675832269357444922580319812405402267749674742781956841448786497782251691834976002692470785895021703704858388868515265760165621177267080605919982230358195653707487049616510340265334858744325169430110779016508192911580225932171227930158137898121057272065802163804143176177861748042060613560746270301387882517734888125466322091023046199189071897531864764481596203251883661383342557380251629906535720631765398761130171689454545284542849138949012752571883712193005628020569517371873637657312815325305329151583778151502917902733190305271744684958622121010306471264222608732792916887491000707158866999254047913786054611810141366817747429490945735777114365311619138196776056638249387208249599690279274158972264263533482913699417066232424301052566108557105882321860415953995261011470246610385777123349945013365720795738329033328267790338461440694253915947579607200765511873466671258279119860920470033646635678259287228565899281046026195224102321794080074560857019502214981683804045378001236533286039783959384004974440166902266486137702679291194779601542349226685477920055280270194687371379891364308309741325341794454848006333434887621180433722346253849620431677039433650809755697980501277777113845268685091187424823340812151151597036955214920274705302810590187488774145471376334439641472564400585203279952036644952915857362994275837591364735007137899752917263254850243740999519067606448557348572716000678300808919766778877206053237007230414810898261174192999230284869838903138569158526989803738366062311867394482801934669491046627645436363276196627877141926295125717141746847349260139498229621952941926164899210479487462540920845674239802557539445478424605466878288948565437238163965174286067026364536764787585857086934460845630429301475483163588819083876568053843919529815202317165149427461863268394120150501380274794164226549074722497966714770269857429653319371853947557581888330894630187929986442821810999712432279880515190220225825103925627914262396261528127570244033580516736900703944157759769468332776781478170997801067263584947564578699956407063202560483281763769954234650000264770866320237533750709170825618178829121555348484981912976077434644897683103996518259302203185739168355670343119920701453229307854524542846194775780342354148147108371829689841186079764946697999961540609342917861302618236089580266302442813911419612144783451058076754515595931540231562270809029227064151150119300956423560999465999653837045524948746983692965835699733590149297182040483811117450935081926236794221159650071490425720958495747811724299488339537170111127932294679341722267132041146536871343639598304001759956917134651127380387343487435851780856522271135939193895628494326974660699269244961652914573600667083355775273620390457210060853612580746188269631693582473145445281407145308991224674238036221680829298174220621860798197137043727200723464659535963188623974496505669454742056367794214902540739842325758539378897401139581409478646694538433617227363033864822552034428500528123827744206093078356383899501146590774355751444444996321829960061275708179358728977432374068967803416414619266061210292307970707626315000351235693107429383685067164757433404492504794750614444438344268104672144761836840853236978233062403887482344558895359341454623603202631096561293380806547311399902028110050717415339231618537126224678146138703245509801626065686426890214790932004293128602116907695945906954418031458955572518471438409956497985277462584714340876550751083482988783963757153324906662143577507370210340928704211200056560771784033654183722097707039082998185723278388513255915407843806226096942825934133693270436473297298053131414410673096167498440524501223865224580163159731941779290670475905774711449587324396052040903560867749633607269786383362511207050385233066787151038662750888189396417820848864094163550696516989046092304161178546471108800040333177562861096097669402728598019472317127433242097596374209926949769666919449022650020469268773013778291584111777734801678122336199306707466885245484440238800072649836711310342917062136424156843313918053232383983078468123706545170731937525394324743353102231318881796761219340335058271096924509959581007125101692341639032718526132731465816895432810824251550267187134476525004805214087356728063163982776436973281937480367061490759085981747339946738833819701910602521740453589700326016152713271589647731441404281010739627169860256321696918143984628976348066263640404724742103943068890300262217919407490294185056643193778672788621514872444857040570417491743083668801820211916799180279149123365031855739327527333088498161734020418254440569737292101091210357772958736197407944977294083500388828156900799618885648926774368028577963627085062949536784319273455247935719907179765485929514896555210085742609479677331538755145823312735881427161972974752998566400151194369472948682330746237551435896015230533986496331433897402923227963168267620139539062424101002664413774030587496049713880031234957424411170400692461605233008783471512801605298659812776385852174133626209981186918938358345653057146829280758503052663152684412143145572569203330345681676854169401128235623310323455220016266200412727026684927816836926266791942439320137398200185642991418955464718939675339859727226028984577768619596135554459532721055935991298244358265061294663738057242475692460861527669477565237601695691691877575077509877316632375206719112645395824232996123929118615660776830180353162751919847202804452994454045882395557025233387374545070083797953533868365884599308144877121224106120864464121937933917213846371733319958318928844743660588628753216510072394367819660276153579065026923320200465135622260332133326790916912968206896304595976989601528304064458567050884821874068569327242388967568172502936668476374070466511317019575209348088040354641188892289787348206240433877593443377351012788990782745082720418094253843066182615519009334935552955266684858475485494938494967552976557793389120050509603720244080853334662123762719793723288604484467147679471941170534997419483368784944658587229478672681938138968282221403428105437551913127361355898698289624008368882129842599996702944503383544658955991070462640172667935141602759653551368815776369942044583995137647829628663131001221231534965839399461463026651772976511526811468953158755101980388687271069507127424565908828648868313976235679953426838583195080029733092861157150407331246858177025938607115915623640069410010572713698395553642613995001507855911638582456822041072917198751686674415946936002316231579585375014210379780938502025242931562025826376153063786386677390155167472847163910141829719442198145128316851168493735526463730798576431768575701484236408740789352058681668788075735862455978596131420928977008662021317085139495607926794154839643638696960646064044825882368579418247614851405354060662705787252435746949859486068833695557311397454945200620586897382572493191047700347322661176946901552848619336843851237375520485128070259328150932433696874607136164590619330725124114051944408510453107152694912451523749776692224397142477111739160271001055661493257893822390736623648614862400268263497424561751004005831896928283068703198441436303294281620983292409389164251515600756093175861284494043497224235994824226709698917461917863787094372023594255212399834252267422936777442893986231106470680422080051493723415218391429320112757538538152722308570014027075530844822501991820874404857371262082276060042328948543302599518455335980198371870313013246335949291371848114991467063678242040592349751000085649630969728832751513083136617133164475700823575348532001183443076306074233894249336445788755808856138636225218959783400429992989436381421511961005832721133631275549113641226868484408007284898058005197058362236770869886182300061523332360237274414046733500673667538411330822614792668451105454556192218178234854687567453892043600237068992115945877699734273688549462432595826857808760858752097166448743979126536642225144766853882164897991219139703135886522295432375281686953025665774373025556138491930286406006798907600465458206946206559399603295541764326024991786904949110480071204024813493511561562807263177679249625023722645669629485182963500555510003335448887796367378236138310691157566684115092107052582867873880273394459968866636536467871590867185180009580075210563577153824342282110770314631151974145511413151112232582017775144045997964536000603811954043472225003066247455557263394762082853850116658090037261991247692211882538771190182621125886615683314903791497925118251236601408921425321372440272474308166026376566103285492314773620130839791355348313991833920577761293186161487443714546368334266843700926550269914013363603933096481736261401808646916666943053625645047277738712426916089523675260346358278950869126866196618323149946519669426092399385520071822088538968327620951347854373933736478358464833341988758379440954439546160099695643379929492941368487698245794174994884303415895408845403336262531882986477376183597159377008643623592744228955744851179963996057437998203792488734880620325546390780235577360282627691738879284350348303931706658969021190228577090613214548879403331887319146436620250981113501638403068994314100847127956423998146619152481508119331358228736762915421760355153676599027887866998088313007968660592865811707769576845589411213031205772873869932186264820028102066026067911651743403664004162278364920630216801991357759335718017897355535376875992900410463543711577972110530813339952464979263630750562505388948802268679332820101592290211794529137334659869207531837711768969445037532706728557894994806768360107989358484976663557718022193801196136210942917405780671537338138341560189293146145018854550800490363261289124650531215691866178661123946688832836387910091158318626391704067701909442417173700506691173895530421379380710863913241518828902128499464067152291584149084550831801244343608041746464087808753602870085445324097573012361069010422206760722613567966626449015641', -); -test( - macro, - '-51676101935731', - 5678, - '114598568890558892351277519655251349170512457301108169122918046980237508383487307624081510756564677550336178477302154205298849988621620086922824241203952845169587118918761676702275886803533985126048599159621880798222780212304246817740927997329598603522333259993676023070883723250177300932925278631685866750044996349161018487418710787156824698743699059007370890842841419231416436426583294134280327799008795618556337681789763639042135318458712688112601941846586049438371804926113126508996078777819094310659599757182791807946793330068376689258887811689995072195331087218152210579989587318167100041773383622122477291943850218476496927044272842237554951357422835645664516760841149829622887677523325405719345978782256416220091760753375551941881093250856520343277787117543740369641738849743550250267305042707228709682744788048246753481687183391246480490101912653586013524077299683599506874945043746289984496657526568247754108757916023746860823651106704947454023630829841108532968959604789557821034558282678387782274892400435740522133769190575725840235412871894976415960900858952703549298673487135436478720837173606603965003749202465844411925396601850697464037386444381718980799446621464654550821206321596000370929647608427450678602369409467488634567676260749990886237210425012278562172533337907188794399372225626872733254924000975445679212294865582779159284739536067574648674948637306603357526281158214867606477582551408107503527328338793768794019922917887582376894908153461450324195019808790951956266885107461973925559489970262966079308484289377245650607102408136209843678657317031621605407118233165024507780188477008776626376774732469991901945525053633560386998290497433245057356518070213620275700745654781100039839338506451450577013486892471483552928409289830016271158248107951963293890564868178813169793288638609421552999187733984144553406615257602536512368045676140620190929856992488533649322354718067519310329366233012095782513367770623099210385145306068882019668219811962909945944938303357412007436455159207921731034641005985972731076872404481351411053559046816512985501762256787820371273853296301441525251524961854980951466415757745095790408750111233498938399843328976884101167576106332111369898329073992906185716431137905217592404057225277504661400556077285374257237710751164948498254228336520906926692000699164318088485138209956632046211769172737818805518350576876409911238994857621609965737246540747228915599832803850235006646505920161663461782710578007459880127628658300436718162035702759857413264686037450843066618529962777161180564480610570194083990996868348589497339967832525631952114004244381394862686005465286457021469621822619867151692227701982207711240403754089139160258204655040380941387512320543125847873280531581254727837191059980870831091122923417959861596435814654220789276907248261882603123131749272763005899889970210586720440187361168097472073369327028087807891921073775186041480435653913681928394558065224090076679384591070891307475995293653429635959202548503686994214508788450093243004124213718944072946348546273490462900925735733454594192759136002496877104912413694566063277128709834235803795521599955020375102449787917179385948650401410782450535088196592336719230363010532216782360997264383385827672744353408971592600267691136637128647179666091641390767353626655629610767925329336924814212570169908132079298822259312790776336192539171954812142459076936946385158760440753962659197081868092892356974717649297318187816581273710002222637822422625907248946609177471022616696078166962638903351786881559353388016022793559059422611570772104441502159519678683680896440534678482697361220573057326321241467487140124612227021769519132788278891261578500937493023431494800715316974572061757711388338850673314696559686053949631600706217179936149359062760652855148968218517603478406764660079773518392515740066557654365463358812116383920109518376511927056859803872276659655935142427958378419267026204993883734671725916631060714088945987606306190400841739343960163767980632636951807150346899488246361701225858275512527213850024197265932454942520600005445974264278700061722886358112352180245501375011619481895903494024525948428278732709789878138429844599672738323876521649110855277792436882821166942741738868002576408435397753753580116182952236210916267829966145925028378437875898705477022525397608430772386789943421906088726337517286361167325374608638664447743003669920203279685500192102212678244500280945163720924806258942015670529098264965727843346426114488713290334508104318728502382771728945872501553223396187212916235118458655838036585541800475260873636577479118287025217430116350907433315459696137904514955307303089701947453368286386613774098275500676250943657017383834720061347722825211956235385743059349300184053076658159489552304525616565099968774334572359425467321345729237028949216589829910496148348266399952259506966453084807497614865786568010359718381755280552030450357482091573325492727231276923993244258612115652943501643076670607096916922788985244717748167425031600866371091539018747314619844176434458885344303041217826099156483212620631712885522804065144269853819342281878739269471469710167419263261298426536005724710899328976253518828717132656525336398408521558604682092666618949049723934689800847063844761671282296978918952554214898709123610631472079549040944065036271515445762211638184670207178784047672153843595557392899022269520772862968918684932700339559357972321385437515253951979000296108897236060608128673387896445773358382692008138068938089087965375939805087660261553154170365883140110004255362850999174312472258828659845801114248663995523535651080385407122403810220614699534394862199070170516370529573724426277383249873364882798357333666601674798052228774948816335992020369901620508453181317972153011582161807177844672456985443467954652113777013601630746866436183732233279064589871750135148960495813527709288884229866780850817394534670003825516127760071436525331020214654659944097612888206044199184355427079633744822550780458499778237357353947422296038656940932241020563615278249555508480330508674120678052089502789507188213274173100770916834969313508824784364056056402134407244119638598785990062688861144654163575302227468770905464187883181134822725915136640612107272892247282302709032318098895359710245013039285473099721463792717954735326941637258027020359449474131956608190956922971406645107469617185652049606430376373658432400056414731724407005001708692411063413271177513212657905468790370163043951258130982778875673922295809518571866979572550249035569072335930443175450876647946083312614092963535991789686984682545283358632371449413497269427928750522476008103850277182197862744717478903974777451339726925492684847344667201465331748104805481572363883196797787778153950751138898727728375184289353676704124928349416752637531102490310279351764714073405197836749014690395282266606472002997382187295402889448513435174099451342568509159453242120888320839737697049616714431772174331671258229322246266889685257316038839337528724509464509575560371587287218382144584572419703181295877602278221106570930586664027065311454892200273818659381311150404756262029418161040565111664447264252108585981706307591881047374954123445586938599411011096620619274323216164888259706949545584064116931697419880810232135950719390350713062967911958144149654637677624682217905237402682589189689936992002791828405957862158911334297099480655817390013698092780805866900709190383307511190456176470564094830491741371514412781382471608566016857542175626271815830825751173841300134557318244910059728166314923856198690466209098544666893459074761870150034083238014245526074209050076925214228138545561830243367680472907455390358950492305796631316420731434125187536810546887612854361525903826549660077385607201642040850831267699276814362171286190066768458981549632902853741404667094999899553250446338548089645534133891269993883172431804704263925215719942166060373843805638153594804487097561950457231382850176704556278355177741960834256932103041468108431421024565688930277277827204256767781041934083737995080790793709338041932760953129953324240749245316117068345243350389721646548464456799564122538803508302280206449283869830911336778221946967418555187670963441198271217790496259964780654563445592505556519078267175564184094236772289072470230033320640614537275025449633888698376301092731992965463666856043698716302806693885087426713749261988769556429463390046244837567904659070225420983410009710978888428520162826187731324371494738964988237894717677430862117281326863913479208553025891950712021033737482821762882285969238709814995624715621242460823465809517565513365312665098952226387532971101201851401611211767107556328808562154195909528062579532668678860849786353548436978596941540803973584469644923040177756384343881496136104278613378924581962143710807219315022833887527431763513942927784402594506818541221504288809623165972198540933669494785758163834650407164355749575134198337788610507044159766150241794499149571096051559220223878817602912552525929282957515181558545301005606558272154807998739024160863626434649314036466134847629318039975100093407373104577388406981878656175843258194717523909092875616040477453623785051493436611595002796440848161148666254022016142475461311658387441335732482745839024940608008050016971556249565896984096952364713943123112125591933258703693851493005494192677788993225349131525711396145903045479052901233399936977821783416065979989065328839546014013831203847910851373499087681269273873808794681827032455802487324933071462267161585550348497079770547563318071210788547323150873537668915925365865275006606032948938992420253484030285899801624037645490546643734003092212092762896778094831579400704783040331797648705647138803684988666221643282949518185294231209149700862655885675685742587977247470742881671606128975518282142621174602709267031158360580359120233235473997243785917055987801766020914435512416873713285800875063783960692674329948345063193713090346106430960233900220471049512359484540660252000207287048940904649627356855235310748631701290142334022573624657571685050543054539462593343925120666965564304346218619573761401243630815566172421336337019044921825132743027076074431860266381081919439461501518228192067428154599552061956522454587058878725629423271121973055948964177586675025613775553459402756099732937841164187693906160490012428728615553281749083877569856034002578003805619108603440019554292851568931421048023066958052204343883372931130679073105823557408875100214126784759475874110505599354169570696609784560599958215019928598013718187402289676120592754363058386217976480889644579627120147953445090187876503616327911008391800184735093377883625195033462470489375923507822652512086242908850264792687042789386655227831819214938281104644932640292609019834942621395608142214243559409841197661527772521605594271433534022197568992584336382425215293816118135415822763659169694051345319875623274091939751368133997813845916207449451701850545644437368283792955041875417825002650183812267921554071554148141810545261132326348765749042696757503149872630966032411848943742788719959766685423336348908720532382273782455044811025224688005258724128117375301877446615463103917254847301569577217661986908844517236064250159012321706048888909681124601158873187553237768719599661206118675972473809098983711387501122615038573963236084013215429847727184258992906237874964751406104681742937670985077393504140518585378445945934961441800684055554038233956351167210957484786967705794592308352175762541752214854817124986107384580167149061884866946918670005168162259392927744148326558953622056499756057865517495516987090419182627739373939985152189775038553115538646471075934221909696916621433427020321907211290750366847722032569885358324304825748519823761695735069483610277833391784268305687555417321060681254063601376044472764727209479821068239831947119222642427588604524821548797463869612449236554848366936415329635310834448639523331032214535561193061625240491292472959421415693842751590387163835477828542899873873355067539845115993799752754206275423338217062076744831694087595991582736550683224860678822779524670167708708091493709146151122212285091313848566637581973054913102622054948327816252692080182215324465447499805634653027067312991605368041127365270645100770232874469104024167016075695806268258050422993127312933128697504418653934394765893583568834878949604860449521880438659616802122657499696711371950669696088698654540203231615696906652300496120780993861295366389568887602126999373711575248980111463126737434199999923186123228140458802135764964497499211839068795147064258579583962890520656631190772155927073711649314137404718303647113380977808317817846980386481066453326264620161085488324738434460460038866634635020866393862469381723564361661779993116516911788408702482058657042742027085322886734485737469665890653383965527251028179320635401480247183169549776451102905415564180956069929150480364980253864993561144620337603341026450280648329108363155941423746477676441226330763778143302558927254074511454873470596647216773968167693426794670205504808306963783432036244979681725783341795616208450760202661124160076951242290485270351100016293179519729579532961953093883990623843703845911016699084294413469034800124849706899721051849479889146370628964206263232509984714695180238067877770898591308982070720120248367443358203058594410980465031081259361282748294276045466637842578800793537425693971319078319720309483472991281827652766395632559627448449322724455935973458554816112349560437316476772468508305512367513982203113683319867051472957794682903830326933115041030819168485955295547194534592544854770444190167625774242882339856600323988117721872329621119307065210242378471925603855682602511342933926964022027574473668074767250277614350240898114804833628233917590283331643902799593247663848733995782588708639967040765878261594144333897235212151312166170400673009191876880782817897642797305674083214304116001846541558880139343876729547122660589815784784823845573389037426438950965231475933765920983976255357185318394294462939870923725191627253724661104724674152692069584822984507668895796308777450228162744501914688617738288423774855905509153854844523303840957562160021954437904572106375782764718235463296636952021626993854683250625366396838736958893686683145675963239492023700157535671554883718959215653559018684790556050406047348053882167970909777535677010769091602244371438842557331819164644414366880048931933080199464775719509620992644091954275270680288884109813652088838217429569522796724565190899510248605280475710488565214118916127660760240741412774854958523464875335791354333554221114105991785983393823020076734058183927249261932463022507518378417531613595367008713063568456526553921055526758039628801741635831559596552015920057728581873824235567176123583511244661921620535917294970250780006254560913313662765305807933366774232072453360650960008438817118037078045098657774617616105096015011390156583453754385678396291801322575711617682706241038506687001234836301806498523163010650449912433471614658213754184557683081702691883198005157762869533426985772871548066409461102566074482585186196172527568428897050456306066648582770036459460511184764057517774896339386592062506459252579461592560474665528416239792702809524368229823156443879848127098290936890568640344899841675398255520835326531345996368545121081712559676548972073976307843066272299578779899750067849171423314509815187548244077378329796193933542997364333804995452518983295374300579841041477430234285996531274115737469223410436044734098218596575261885585549688086844423068789246324166549747789727265524050455962780001580710226770900533745079189013929659478693513587745539578848213377469358275467176678200951122297705749503306698574297410712427125825591862363276134686251235055301972061105661224639007183964902695034424436437936253659197166818614429825626676264111882581783852335169138950280191270126993381055654149481441296522956835357856587690439122868336488948939918429473181311497573245935858058048846043815567877289011167331444931953925754671240134069623866836792786186011879777990158691547401988209088233436138946304596662211246080716963940999419458347032733075551690030530582476791228961785738428344668271954394260631144673445131619681560910288236163257493867850591921101601774216283724826035337528992934585854238509545972201306935022486046021526186153884783616668536070352766884410433501411997774544944294529752318683967218547747054919125920723787453768874396140732374376069661038491913390225584336932342777315761255948878551294079902768864779706744004767497971699010857817837320331732586562556917485670513125539936647354410777628785488698349835379591475098154799827267570479952391820096174179651670850574284042676840011853046780858800494312309921469703542619592726263073590976462669364922795234207666005686292826903212848877481605826947453296687451059719061958356539720636942722901955175023641714596609837815361932183405821894237560762724700527878714340752426908901818205438166928697623647899633610409766731686872645318577714032460894835086863906305213902132263709453953046543560314104677422693777305934218298526734878837051106284119542143667788585456657142746665427084921846682769309335227479860142774263718482271045462438363768361342074577613689416306245388036366588228918750297891553343601271116018104061166106299788463499404576467234680999408128685491495431444663757432415240164158488210900819745907723117930120695685024585064625587827493034169505631321361629073305032453650015121172416455507667013522455054423012824659556913170191784272134013229862167933357870440372597009868509136667331096909772244774497523425649971713882182557907497459362685468864499900443106554956344003403877683026526745408126870149084364211072799881433860076306106247851979718211066568293397639539451283955573658564108776175764110532523449193170074167594375276229899521780717952518583208904105756371686598266057406647087463129407379439591678526118563375375353708424759178126712588851088358543556455828259242229752207982655534691287505400579846562914613465114055818872346386918363454946173595045963724905520868541270473697264250446046089642748190999453356935960747546554692305385529475044104740895111094053981210797991140570926872891670773814468169522981197767273686316613791050298552624472953601064874491619431515581298483094974434200152544999972253615705670333910064258013397051190672327809649449512231521002044431168670777665701194943318920142732683570462533039523306263620225871545457775764770604929953997570625951936899909518438534435970611071611463871839879758260799824991623563429811928499039440771973070864273967278618870976632376075488071575461144561219935848976261991995743418626824010282377472581361028454622921441883252823380473535980635040675347266665813701114359254871281962513087998501938848746260785427396775049514168562612073137570353309933421182587431285208099490235882059772793358564991437202016800963518589761455026124188003465061263343783842908952238749299315855490241309786950824004062760976904187502795945035840704763791629996479207882802190639214588281672075545825412562820832491492193486742631064101780835395570244051743402738881730159768458032350492340983945389655058528481715594070179000970782625156057915320413986266019990172337946416918557063800133747641604183437713060443142402624891881249459030992935793527950409840201343706778667031036382270368309922120727685173156943536928765918297523291556499898745165164935596868942828843358938043957961029987646769997740718353298902113509786945580718208991358463177836638025806577481206139581029605232343390118748079783839195843230044920030000293609262840245610181309358224141510030238251805707053062432073731984040628183721390347726139606685474826304883630174052769377584217789247910727483325946473633314792666461326212634921565119552168762472730204002086252124424937891781185484626212876955436221477165360031020231430386214870054108295007899715254119071513260472470230202533983791307938408960011206611455326096801350655243853398472597807466586200601253211741913149771316966742972424796953362829778527691461619646698652901365907319538496395153314189223850326377266970571724729299225616643375250610943592593231827466075999846471798767809815413033084807935411432143738782707086800700249890892016781300755462774204025643372850935993536835930431474211275360661334909180169369108705004893833932685971810039967903674985151600881858004723253102936206563045825118090129751111068119272073957023228117535946104197559484455044224813743551400684035958704844910240433782794543523046179137502988175588334343929604010655262873143788409800103840149709367769678272389350632655653061526909944375166865821226676124073718040169866120459345622225584107723626981527594409083885799002170436455111357966813110193233521883524236223930189338177788877617266977925443568413998134839137304794431773484057275907471161083605792371548269896511232018878269590877998951467990708359705970388117405757636229559483770009754679879169950634139569036627493168743252032958240435946744381139249473095508589299567208080597578309780705860706366590038525752672682617991285144702659613402563158938705017883355247903759797019472262560188954212310667319942679244018502332473572330860141285275142567616352011441717389434820775671752035498192835097210704346762871785843394366619830754655068315068021943501597109761283722605580646118265029950836645428880355482809418017207519930746525482467660956501946286248673803148678778320154527985484392151772657071003568822396992334569447439518931797472794360893625913323930637936123592307936959744134660419379541520223856359015281561124867120268443532762202836358157067397969523277941814805842994278790015196862449348685333746940835406048087120468705315737810814851006986239662973395622981892417635797361552255577200093154926399160041205233526050099942113585424767102462092543693848903032320176365611859456909911464662553394222492702361972492589328743134628042819438985147526265136537852840491772207661691558509954371067469519662258250666590165226871146827599529979187274127942586949484821499948977145043677342942737229631023377843981185400933835831423767351371476191843662990866109519730716132126804072070640870780628344547744782396291260010070383315973397408134147633405837121702299828479485082965001168058308660534087429710071643832112134185681191355797031035640660674171124608581811772720944526748929882880981531600483484334329258782080131950152990379792064594496526209604646130807483497903997981366660814109367081501493013317987778423970445235345262451162417303194219408843842138074967028470582769901836866713822445861935378961772248421345450181825317803057793865331808243999032870740776976064805740571853847337064834310551096634478336669042763136704807586517365797136211624710257953267355206084531695186978286706442628626395149607414222118992574163280333685823680906473269108560879550907146951083501973652650163620691173614434376022074343663278172616794365354028350879611668170977299413329242853102242731460245981931645393086566419168095714547735636341109457537424127013466092829987029469225005609148935719219627886553517060926819156103842061184103249786722102357857380363966877195050686029417164805540813780785634440605334896258106006438094052913691329158675367290141201254618676773332219794175088755775479718673883939486154200593603203954816323103020616423867397093710839615897871898114553682658447075458783118190023366087506978374367440207438924966819405213686487476793825253259734471325657957108673156552118127808366008364042860528540535034950176612182005881123405988511608306144849231503055132715499943836726775291396811671741107037864808220275570128503090451498085660993674239141408137294509508916040084880385126052374726220832131130118877249390053885190862016620304127338330822376885177520007162660545308168910551027048206864259306643403258146047122775364888620470370521404458837255123240697440311548296630455328683555320575028845668660604051631191978861891344050450146706574218145025744150912515431643639763471496084616921691588906643318094161772942444267813744245201380387655455570994259537781139991672727963630401572633729986361556875282295744688790419550042115325815066901167830915280249317272239032336428833326465165088029450553351265755331884109528200193953474902952152924946185562536338925534826199411100653632718279533909714213316643228976513653756607679272611930525331509533360676882289504637968260788530354999017751472236832783844855905587554729452514767314824700008649155270346776891167316609312798908304391728180382885705826358462049930067611387677311125159653938052767644809094689360554558540305110248935812740648171186350593122648008331898865084081910232912772214306873277181550887217911939282490833562582253824958566304651212513938680716752798136384903060676496603824306844521424474974798402169651179277198301900928835877874551786318031213157816266052352420958386807745919890178528945692073978829824318254828803767836945769264370965570278955420236563465318633087533589358061430931666035989509802975402163642667940061694906307745403336415888401856273908779094219374541395289779919505811512398727811277052044628889676576204347887155453152137381991361998780634451422237710883316724087265275331735893833197129258839234716392342611646952816033259950054307629463527993424446629554718055401467323011537168845330459671616005062986429892433717372769708986976311304603813694466876866558852113339228482279288771725065980107614730689732508546319518769065056680957782914367866215918590112732510471009325001837807792226514983632349787121937850873634795369167442047937893608233634609666703704587131733723929085811244615783860405178507877859666805690049528538712275243036223309707838878743093968440740186365488240924198311296922550429467362803938321202544305084030232602891812533837834720169281029831388109862088373636124595410033526477352125408960443495710872004466944740504181430539375974997235191384764262912442475167562557149784655839519095519656973612676149775555468394211684073546313305136429488931374979941004482067517955299494545191338214275004688648850080625425657255697031851628472826812878438128524708409359692881087063253264481220907184058301090967458080899506347453532002995200234316121374098161410900539135981863658581370995732911051446451138998982787447971905437800015184192194998890428219996377737564767442914336298428740825412724669981656100409516386221832151219625497417581073077338087294189592180026420910118672014596652061567734369839911877944565035730463100962767041999720431147498003871428186236484743508773318443952371300988256662194348824041466733754460943324754187692906063468991068425866078952725816706806990970194721942596702352590797837064926809786719427373172154689565613653917663261933894602724198203854026358029130198575484449317765398657516813791597967078843130547339469073783524497382496877243498441684162650928487855937959542776542381517702580219111410239373945791463335216468817891797159897821504141336134011961229585863213744116868341898479921270173994357042490280766042368231306294592305816034402114190442648210070915119128632526643207927399206403270502196136290923785508894091611892797999732479898770027343898906937912932694388260729491337611804903421576030209232881941209677305990236485778758568570909511203847749727139447140750017842138051158739164470079822994287470311711455580863809119499634431231542924995363573544534166199416944524373140000391672173343392584556167540657516390123765234814227550308964579212558077778186821292704585207362004093356520798803551721188807088087772466898440741018646115406804612936758076828507023774182209672664449988128724902414993501219401001765370672317191401925997949428670713449531376719892790107292559315329271665439517184073930078672355080717529913180235718999452728793715874798090520042529997304171394608223665519403070588265928559013346665409955899514815287087015895503845612331949334663867288844709249699760870154746576067740617109411671360905733205915721144812868914282146396418963599623786016511558301453135637971753217719122740923575115844689612181585533098056418282958853896584799967463642188879073429673984966106974767322904274930921304431241275791867912140260586098638979591977302253507591795249943499668854219091401728091291240324419097106670936334674554710470587846998580373319693822832186125663563662227300196033318571309952940878063796339388257833300085483835132481959803926226375922877243938995147684343099551037900344498227926589430544888103232468580078181742899166208452521226468017225770159292796370494628221608659705311860880457610945893698767024912686130786102451619763311388742213622180967440266735615377707064630432362851346787104938266503146626301826386009911001332410273267944348625003805191824863507525729321246269404084347151934903222130472688695181142909993054528914728385212132736819895913661164653395636100392775995046821116359166052147490259673545652512579506858292074086966566678148092233349090670531856554153436180220853767903100802098585062424675371471614926784976597351943926464759004842764683915776120276735116378854746819555607095002547606392301607456201613727812460712017149291083250455836242558225613747332670029560146313664626625184108408526435551075760616558918639998468694149252839714828173433759651731790585540238768981676874286013596872690278563046650509425213768568600827027602310874261454666959825912534982207381304504165906647669730083754622626706293980961379228599568320787109947615111949624856762702790577996604294851650710262744819536909560241872405354015195815901368973088718316821955357398270458847336192054118678494760800661846422575105028339264471032443221584848296622560987616922442031578568960816859233700095456702725652471996634621805360039904773049493081061117890447026080993179208164914084001561137279717964474457910822698800571370948730739574958519456023949553713352403879552609629342711187222946890885571493932420920963889812746152759211771233710658321471894667865836881256359416902697886305637566565270511589302949804123378578009588741245234061360202559864224187793107140310370774238991415782896268860247160087221743398632360201329490179060521461387097002495616922113269135683217341549840373435949057182322394943783472872058473593126858273723016989321497958715693848778260916053432892608850153974019086350180056263354802687994169752296797729166187979142462997664638545934162928193655800594073599868087694021711982073641040542199591089911339670166122773835431930957664741772458832249655277342309784943306925485650386363310465509184262852528967556488981679969063781668502292160178629319257109918089175245793016717386236635810518592787953993726687773744355504320944066168920405278890106620954397703842075409790585293639502140471672275176364054469159930595251498121123000632836929940035415174800963695560911591519351305097536056757497122738733247223334299439795964416272756974788281452938919543919179780495830578105176873022791010237618749182041436120814538747344362413981166492880532981408473122438956024899704764414827372680888359069383203084252482710559799658759140471216458496005546408675587772142479513233766094809931909320095433919996718551768358151589619518928107632509757299346855803242881198506144473507763036827161335579895814696687756797267492473907511129330448610059311031697081944370716803795577518487360501045579868709621241757229741722143091970632237708849516805918096189012758100919518522581134272755075309636666228932838080599671285408828093511202116961319849653073610668505654418211025373854469615185587420505700575888261495326807192713148159720874106763838858514416282535260626452514445199386144279460790374332488395321942092245696971633409779711403667148196791467370350138794216664252879537117245964416540374786812119366723571213640039312537831206990870490421854920889257491088284125753811729442672269609411252776690642554159109624124410614773690847589962809481591267437473683970316925645103066449528952833136986667526561057302938060806717705640347372758940854559438090824022934117904362128241289781935585414469223058188520370422811243860774239667131292667503614480954661643166021094263565562954650536478763836171348484291106790718789951482491353812912872996022446709005369204478525205413817559888660494002070759867343020833304262695786258762182090471108517478008062047916158342858928375981008630590361530730991533337103005007767024431048399846363323604547570763844498393678827412313502948266613097046593733067129592808782764829082779540513431895899823748129703286439371900576065601753249715130145551395611158446136282331860450878473803949375391163105048460542796053348711044126190850489694720890621885113977651566300965967733708467656571181095189043634361442938460620424892828907311518705548399259321673290854432989232402033427695505537391672297800738391325014683049620765825976502001490715724896015980764535931939727448433948695121642423627605318724132757699110767075442641487063525797598420578507881625322631258275225375353312907827229233991901973469958877318300954825891826980150082560409853023435179352929576326184297304876469260675852353214336752697472278921785590185472893192209568387192363535612736411827177789230687431274148917049359515220791900149954463891144855694570764248287491511795465355571647974077067810042898359708679406723077456168802915159985106685165278844446272185418039624433414989676529360733224196806303027701699401813246007448367635711560091194638564196215462750260469722895057683130186655197563435087042456745552261726792507936708788382778795714813046436130676422706429620437824366040216140317789120666296561961817276627472468337572371444709160465057566385526105800512406353089397311243525990809771719833722278531018522388436675146455281597431804631523542433155277652876622739675563673188640006742892639445098465242739506308240042149149884627632749060858136523029010127328467486160496136970964099609404485275485587599287991078550382891153951255006778605902787210807236763823509705570383045418472207043091603551691808413012509993628114628175790641442073599128028234496708954756607086944124895421408720862402696781696349037884497396953950073338348468396830752927901597524196430868111165262332019170855492271790130827789573109557139053285109689778332545958693287355659898640515042491550628028917049986801903913280115785942913725572192146862247809512151632511954616445305241282672393782775249991259990268401573895663033422145829424653742257468572830795144571447217172170344390171558138444299290663385049414552445567639181283014510290419785983701505834195674761038613042562189128641343318579288380854262613061171426518448419053079528551126733990801837900708461500681574188884795165426161291709564074295450881956626201918302402436945381093124745577171671312225963759197527876184346331791160454187021677119481282452140937671112699410475067112269611894574476316058950214818972540215691086743676782333339834793090049695579827352673705992602098532938745690406929370454895121406852644336817988310511018606485003687435377377880357687101549923752753870842331086890020957072110482921078203892582825430743853678938678845171550824421056075012746445684719777935620199933697201020688921671515732288023709159460020579281422206200660770662136186411119039464511246972567849083853953974560152919983727889703872145059312940206651954534823197197456037124574320069154489362428152384518561176908584188017896443196497458965211081852296712793505164224540578823521427317961999439433840947679261853070347008183355600509419881301091737467053884095017880299752423221585377626802533750299111687354685486159204618103044084872599593910681436894070175869895284548114007698177881132942381244912110629421844127353550884486951712261822154242410334674508400867284003116207597789041715421899510712174705598161680472160639854366218120520371025267080822589762082721234822899143897023722519527191182967187424707516302075467248142839624551051489916072253973677889265488627584976956960720624875569085896430625668405496389507310955276293395519901278703982054295957616190481642061914557057918641411590376116837069898283627310675729905679075315341752230316326873798944842338809064711121830318844994995728478247554519759647479833188840882272330805936564717875937759645466235877959356774680757359186747964855850779950002190153225827761646716858046423788030255771497227479049063699882556523239832981578690856832572914858098641904135700095112492548076201483334658215008902573568715728628589777880228112444674918240096125221488915805020859677852091654966635145651388632847300280396301961059638194991615057652714347324569091348372183877979671140165075401908204991585820352573960135268809787675490861799359172749390316567281411205233112473050152264568898538213889610052662413601412411722965122929820314537969307515359259003169193350947717065852529386538881686267170773291846400688708486999155003104663586382344290816318064759978010654953537866623711446364570626969502173544423423074929404208942616624720195343641583097741467031833905383231234374060924479894152342878888888587110637396276339544946001358888192005723471164751936785560384570786894012343324076324959874814196843505410918926079285183879707107430170210495856306080442455608822862122117572876456630741312672784076158322593594055019414285422443235678980565689755317999308802910505961137210498567710018536735289083212063487672806707334546206404814261141369706196328862821461886994687577175390043169221020130498162026839862458973943014519368318441838195560100295968496734198518495996314945289548715598718870583552621401683863581183106851205684154635910380524563847117217821212106128722162524253763046827147151974918777923681784807700970624766909477312166760595507462337125669968044357089923070482883709634106122062070766308810712735710624862438926613157497959226806833188459480017662980172063360634178971275611314406393895211433271861436947760659023345158492960047345295499295662853340265551685535599800744092303711269544719828803680436916119091632263364533324661266862974434455516831152632639373435575795104537875888710518410020589958339879959822445451353658029443025792509752253551525308255741984775779270729019138683637750829888081844708006890211552146344622614088468708319389319850769307851285942767252474785352358559267431807815209013706262561029595478897605034763527896789052350336340918526657057958081872287341591904736173950725836194473696707391163580393299902911848791441413850082003693596935427471422729646162077763129389201152696915172964938281148555040979580355711393742641390964747263809506784813646753925737960500015999521599040534422500550634111212967036120707920863177566166569229503234057262633077041307108981897403699595707664375223053442154801646621952674073998016018204114207792322619912823001873411899291943544289433976296710950251614937569204757779765928995747738757818760854802038762304982286305288261345463881107741394409631520373874750233139799838650413255743318875470620818472533845161123753583328874495241216906348859022307736592331867789432771689184631548324581181882547915784645287665908939251778029107639157159289196176127518723121751560070469290085609343869257334092947393223315517614003002467048702184847384690761234900833286623358455281883757151812237381345516686955628191314036123519539678665398336254286303408505084714763392222044018726750547293413234050365413766358316654410953551281819431995257295975108311779909520303889212337450841246936324792672921730951765343962514538205080555856311467242150053436496567701001851431642012883560394627048117888153808553859689392563362831101945847612823435569999360628749362849396263121141428978393706694610773760753498445233988754224335605409426064724465150571453306140168263830877100622522054887364455754048830624591098148199844437954318671983054725473714673721746781284214097106750134651020281137856143339404661336097397401255849460415338500002693898912492847012546892053061780546003055285372933509996259190318553322495887219489025100141803027682285498654701158621266627181173588718688738389808332699617026792423659913858117693296106288197971001919395880629554677187346338125838160292486198360147729979871273120571322032028504575690735750011778046083231651989085708906682400875964848727543577767320694907469192930438894927009743546491436041357955549348300042338360759281377236265892227047663620196806664771980284507347099402902967733697999621184233818138249990684015970535495278317959125975524991795957531505015611136002871680310533093786875108515066706678620823077849432976257275439747172137699295045174649617946011443989552460583705965135899024689374640564101925298778186797415025378969912635036062934209463477387146111182074864014263939109691429255035354418183096283089143643718609144817465350868728368487526110304341902202363658329806583404243426301929038999413811963719928900533075863880385638026377355762024440421846082611952343954020299294254318741900205024128317877368328956627168050002516703106370642969704283772358296461093955291187494644342390316988195849776128675653911509104542124861217280772932996221537953310962029452657975182251689107870392012504852892547316032463597681300089847160255250462914104176616050444245028613939373851574524967337186933259018554428928015559462061881262235852459856089108099770130466183985887436588873773243601088860550229426153384432008657567689985229925644560273502542282381742604579927654137058837459574794972575192961456785170540640531904771432931209781137337286211239818317844041106915878514399961654100374566986719879295231727712111771772229486027185802483882395198074790128622402561348121667919956756920273231028898988580958707002246439749981244065925735360676364733954118132106641155299199544857249592009103053430934913609249297653361487158248749289098935130229734152531034647060511392685477854761239602786254479061019382441139667288410559126176759142054940087896465268370081054931187899275164499441058030518288371926823323313797222058155222896466033422597096415435116962085378815549492184638325958401951721290473197241670371516491881467203347875585007359331254528344449459950467758875267278189820752127439854852566552803870490438503143232653957782922118685816688148722781734903296936610500471173522177161064283024894888579788472305995091180282414062431445897622125893030305492825543169066044111330888912781754024348338736557326750833574402747013630048297404805583748083230530028596408741040030162350741781079342392865246051725408625341045214944667618371021284914091497257188761924767939637028534628334759882175770670772289957481292738316309937728650022513231422234754422579929841855985946451468684350390314845273621075639131390824319325380971724618039332427557919436402942528867210146505840229198062530002639445641553444719681044247172959043190866680070064196331063863914130249071095131248563606711066426848149947420902504927075034868938069205285471610210028557331474791661084008529287736898562988280474609439222101768158060840395982029394044056801641541171538945243610104322534200730204315260865284828953604535787727385628812968114791370986014951254706844185451923929072881468774586758820306110885474794911532141074138864914763733541384283976740191875378571118515523438069807588777000827782446489266182050245346558837361947434377809680600377844482788019840369988901856492040146378437457195604765771763497148753529247674438388594397093126205511452264943420149474713408497012302647389453439359384872233770236640360026013633256865164883566645637992031106481526435623633931034222232355213509370961371765010288817762179693552242379775216656260241135497573014130795564397554787053584387187656853711857623431937857471939579985035081848718829777316272176681052612968630380592713032967004361608181691291430592912818088530249261471767125961629681696763811424116391066373303384993152768280740948118781184558104319987675542498579919858166065158389793255707776743744116436672753184816598112104831674522931550279998771106215597545399479437343520773636597563675211447481439779932609623982600338971268883683768790803057118303171340769493891379059633504014432705976380151918797310743478564409243233539718255459610193420711760557630156927018163410042030919328901263062660290810416055096762283837210531454115711704392214764971534200239720890924410613605239216073127851967270391325506751978212863009614699353698989489629129966825662563519386134716961129383146386288035146250197315211925553022512173302931962094722039477374774504846268505683930350343868458784422880640500784492844169201589431927903016379662303396527872095562568156390966362645360971925681857871968341995483947410283964766743270092620340260322997257237091573993613689320984290367200247030533720027280038417097783212839273035096338938542591727622575162362022599685496500554429222347884038006453190248400027743775341348801335215989938742326080054254247170602001952079080816650302245176710604093355842163642360723052540350943441654273802237051128416322439426475234583967057527446258480482041840231234842602058417412378587528062618463131988655226053150118765238820025342051914431270624521243139110536045516721557341224477691444072542250943379523540914610979701581620559268793412031737790984636977046879757487332724442490312397606565039366925463662967999702808542773925468580692839991293056392310917374429934951347005612307226284322964209030221618750098429366099194983439477136694496857689442264881224914039910670322116288372730289047738573108522450033816672394101565965048622910696973855813020101016596778492150524524163597858951412311844796147364899117621449468760602813472330721658608635506930727103404682194935368589333167590774588214751222713377251630553526943871411102693132298087279434996411605103626921829523837922181308665640485185328298412378683376130991261907022373866335460773339455678784703129263634716537532090282547777127534019418852120934212233684269568396133976431366342292873151938449479967788561358899533463702974267094796359284987637751201598974404152475871775040728557820818028482149140963098586410453529806961657287735738138755712151598174425380024951275335199558910669206209576113284903353418478945780694878129790034895748753362050781539824584920892084749347087235642519520452342493927793799776786136198617469969693126983224168201909587877154725998407004749212713544394340278146389166186340477628969995703328593195001704673717058025352438357468612946242018587325606773986648467186870072551528951891526255461310771157406650956757785133396326012890387635813591423184033135516070805571730845080137132045429491261012978403015641430817512666681469843066257060720964098086648402611312090715751833710679060879766494555066896257649913350023260836668751637428823100349524601403601892419159189925922959275820633937990644299249271169988339019515965180613573895432999894831577608592304848155696364198541694025900829134781366210991417472495148139315405572913400497872095116583163635740301688579861226084476006780263453790933289131487409161550962668826089637489553038837859879843790532691421980575061315224117692153481092599586056471601215629186621130434664996556516932298784329307022398027011414332176083277481254566740985113591763468957331875643736921355329794098131053487627474682120881562550550881428255655602726301461818701211939805917586146895437388795911816068375606614039394049767168461259001949273538210144048916666534903327280258028482616623798309398413700586176634115625829647911232227507375334923375588614078459209835676422299267049663923396700676273951091983057302624288416865668362779855525365118686744053391254580621393591196711448438077488551738236403307762952589858684493455657463478117126363062783121291423235729455410918637867035685633113782220139687642412165249598360509878714727491849673012334378180463831584187354582895646400179807708658382550667724914138565820039682009987745157792741850123714960764039841065734298623591290702110380779922504349890524389320347890308828719589040376100679017864219311467557598930026491189345663675214233027772264878374490381972865809240289051249348258334250741010764402699448241367513588990261100526633287903176928198197677117933055092254550168988385755711184604062724032969041641602920344983239296376314963817502741923901882100981471281443446703980599875657083621988880973620719138197772524100421922113549246894114245414372112090493791692600291606869049421927806267868540149608572744342888343192125058473363971742076638014712200975997813876869820888826654477230072783335769094726343439363924451093740799160365246814221521418251509165560016088242931176476666040166149409617751387959304000667838298475779617451435521971107542909535756971647840211114967059219572740619358273317825413217697042690085081762346191097822496311788562562031626726216116215298679994354658456828777010935958029126216060917819707341303406969946319555176649237050902062556966761241375058739571292436871898013175671381669805507508696910381959470264039318613075638568464398580077833659887720496385166104378193365458881086843156468468523490854549529450710965680147266392003581831969193933659362316072852675420800357125522249098898054570353965505168107882852864529840652677935931955087124815626428567901773577880059003707684993021595642820310207853594456286754132723969857923337469252202259735727997751116848764487235601899102596111514927141978064206334037406646670461524244267294399389563489619484717324536636445719285643430736881017478756148754273773852289888136125549801175894395271495950395640707601607104562785797592351715554623869028246265577155348990843423689483732331337719099850118433499218006218421240299027208453829439559447186342420117431465432792072288988488740343057267417723708067738577852233243672319230819937439683915440649582059516544561598623280971773789120893086121672269536624083598033868209624720281605641588278852741452020860395156344376951038233934553306218241725396467724828107444994633708693546367123495314361476105770109803860472148239644683473596101653816933207579295804239795231250209707489881769264862491580478053842336543358337010193843107143139943833585292436929169794827683225645488250493758065708204332690153429283252246824483410972045997105029219491200004356064388873493046364077650981091839516620395962650712687713049420813661020164790060026130112716818875580888149422706314230708204130100772098049184062203228041362580051800921206280742731510572822623376036459787961780882292249221002031736456366826421727834687640584814053632480791830200948413810861443283626261692032040972578925220311877455650049930685081104107394628130349553352694618261578823385706710078304466022726537115509158412710129375703385879757237284539292895988728180490390220496139617988669206437315385861127520716472864870732451423836516235084903022716386874198709556735053670824221685660220728278626961642949943462735737024852061880916852346905339456156753923289238892045090888056432159120268216479709411830925161705073727852182241843774144994444796800812422381396128011433956107925125566938292728894518495205656479288798467478295768971565046605743380817683675039276816505508751212423949926029841364819217401250701049413854705548216151519699389827283019852789171293382302732747354572335967904262121679778835809536307205684993347760735860485162352359870983946965085935681532501893160966722375508805057199214927917795853333092263437505359039352967087492413012955087698529172665198805420638824693085516459299213503601188841365820793247308338096862952405825957815923600207308796364681882565126559078649360912095932577475791841991368526488425858095470521872452183848155746479635949126054100759873565047420408657908196467861088860745823440200596937137469726554619440021533471197651802029945746028546114454400341137146234850866902640999835474619226352406181906965593958219260459751945218547186010136586725824330239183847055787095688060314095111184685688138832308190665361771520893357047382326528633906357935617076387165550366027262811769099959556389802647692621844549401990735569529998624105286253926755935055719547875890932694340554447107616689228089562066086569944905859544518038840788528630069102190204691632172591973746465885214629803758001818354722671577554377946458675180639189931170900056297193465314174724380797003889515935304761631926385152267377564862725712122407042606969044731545405432011544768262989326191733481446407893297863327714256422001628622845256022926722039032858852550966980793417370766719350671793803838423609435455646884754065033709502751899071375163169890856762230034353248802768786910964565926739703092124666704198303948460691736963253713870119591703313690617965257847769243951364137415307103859326650169756472734611428216414046385745227023184773573317555077165126936736741629792481292498743205155835997683268172359371347012456091212295887484642867877578646795751622965835785463864395557880638259410281317519825410588466995700288346083450655637106260214808311406178732561340081016232526189760751886271379564740782676263559705973541667456189291443581212424404676011914816089260905831619643542553993402039798670408163878137967461241701829503692199517679672763486035252098113450580438489510602779967538406778194913724886699243032503589895316658938365078639346817966446042366971598315102456226149656515684119923736039138700680083951001771224019777161575827820297993227494571953532246936982900599366416589787251517727463895146269431106027269854190552230633092628014821482309609635823553388474087969696520047538050162437487064672959995402543841470139970706134643073875937981889199695346910796106300932889981171735045657785459463379515938396509980647441968924682241853711106019941292568600206670508573236766497716210397782410983939914467015508129203700417353471801331728912556922317624644415889241609181001149181985321743941473620491460989210711065194784149182976559106558188134333708873913801535240126355571162155611895528080568951526554987444334536731499537753528195430833779794624656681766785270140096283044140898051247012255419499146558168259139756529674323772834587323355629868317816780292113528663119722680719024978280040818470547128362669379424806012577422038887191868631883448040020015452134369307399895551088373207616043579965759272959559449403269879855598910900010706024392636484042799046911831117069348975342142583017574911456602802451624070688915906429274072763654290623835166951367071267497654861627881666298541483065726588427718084629534053816735134742365841971731795029103239286268275708328610899135163422402889934113026131852180686527150505983759002779807773566223011788941689719454712179344607326254690287120395766024482256671418388078554228023784784496201187429256077058990150435615351155216101657438309215090638315321592936537200580321910657657215666815341247654573083731344740394722638474346512544521661792980002338816800181577838361703000507770721899400195844878004251805255464724701063911083619487594713834381627924257067711581105282570735802353540652641183829634997288735297250112282208477996416073074851093528870765045321232820222921439911099170191434612580973635919820391541809473112124075733876951153040686421981760730940392248786343513079856829965044538757787037942418740284997136502228750221662928279924265870962201635314064803827203966095428887928130337192039410759247169242739168498523247197273121591784250520458251462557288339313896397732661534729027052493515404201580059981956608905079272892706164790429218771081619749768508639849339364643058661360212160610191272076371006352322980097730083536900596908930188252920677441148336565335213544052062940677350237569694340838070570449158815512736492862139779132213211843388066176862669989419112198876291824452684702959605871999341982491423024679580081630979799600019718579349756991631102855467872079017699044841433689138792070082691245858860091100747333527615921285623074522312582760989162946865573374037829302178739225575289042659045727978291390647109321424303936944279972788242891964130377157310772605953533486292992603361085012572105175885943335595705321341456889458117518989992036681091968371021602143621382567898278967201088486661538826229576844449884230327889089656416829054301277201456616051237734474662164978054102538036494621644430726212087953103526033051131027386921359383088225533719150606934884972757665515341103897402690521343519506346008077717938429482549626794547576980199283223676534407717065157853712801659521185640516453515871565192484321804442962765733972699330046829989406888341627015358639514826801677079021155478293962619923778866000228101968771938334162366469804573202014667190358534377215482330962923275262634963671825984637003914633619143396330500521755888969843386922843589872134400996113166528653861650963770197465796117647298541079103250256973646631652580593033941058305941438443670583302078961092385000096028004387250797639227058729182855207638716095753795885220489180587608501087576665670950961102068748473102397688480068745397125317899151900803171836227422289946173194639475472087332607221032204172993718739866807063991965434685529724874290316386815414750536825089647609755324478912829208542640630837182428790314967707466436030120046677693513719304754091874591925748831794738661935209325972784637836372417065832634101495661541702552237720067651495419730409007777535110394473910436455762333458257497687020560780560125766474028996604483310845299656108458520836187635944075062965164082259016665860024741824447869072154938884824126520956717610359345956570059031363334002503160837760160190522749970822199550294007333039256459130986258366814988498652039570467430857270936255566922917138875176546035640770701881537448577626102002317298447304080275355918518719943682484835725447927289531637629163866387981244986227932821777092957191598008618007108755043196577493390795743913791435300045489842318803840629056604453508622889454329052961581308249435966212373719648882667006349214657094779879673766929203239990406226893937690672818422017388165317029813987140416820890222156353954178254095413385973580442456560445558499420284582912636669611387427404451225546415356155838383066957787260635657953616728518750757252485659572480629089199805995107320554322842323926689320663451184520268687258689886344606068388694479162354509096941490038433598847203104301976611951445601852362544266638679678290075412941302729162013553313728522646010957992606699109069616544863135068561276755095781547242671190932783722064505309964908887877840158912914910105346231151775487613772792899879678519963830591786250997836698271218528501056595898076691114631296567610559849673121473718916782416581126344147631655121086933981180869415987776601838722614534041581254100451763340221780549086746753938766610289735053241990894606197687789239665605165716452187952517064149162738755920000811374455502914943892262459729586085538415828908694331245193074260696566568387741004970586046250406779678496790295648201386486985620162529677519187045200318621917855086482423481330608007219543743506802384438536607353392218691697424857241893460152387618386782325153321432760552484142145781862136735387766492081605376589501268788700420050453317070218115339201229440765302660291694287227700950440380765107112761096963572158992801291875003909086676778623232366690994533299491222168137364267573039455654289904047646814229327801683590630142563153751747079457858925522910205111288353935603204598220411265610249301465496049605100661153637159888807908902323782288115917266030548928229073591717694655741521631460966838791102199409138425309485441867582737071365301751525547942825571779776968661573074132570848279551828767121886018701878619280272422103259889312657193875315049837541388659071098765055026282156387486107899591956053135772784100496825157507016394803644582281562465844931202245768097460360009083034532364442320183540873202417639221501463884395812838717474792815470457888288508076821945174144028105860328866061726727674515030087857289847427613927570162848467465868388369591904690837471560863827694337872032073339132310877824074716599328692954368440290176778939622098606562704309952427724800739407743083724696349092602202149637692306858199125713600548864386864010917928499351492615039593355117890366131905372145092198636688161883816483303851872238717415106454350355132051773548989777552757443255371566372474534435441848412809716879074979241665690375961387244267989469704939164542096816857631992943353367922943450974577981735513285980794037989658748077626750133198955052583318759656463244526191339847597578899938757558196148864075073244250467261088756301070340776077937405119970413498591233848696140017565253179511771575795275131945857256304538740165986955527162558693404651982237870681250364694679537863190584566503257017428760056979496904352580609209111103053294614675377385059624280899965796306324467850909780831489026318753391745970785291441580820547774726329434556660527022852038096530229629083381153469692319673185432212788337117250065774907249107252485740348419082835779774814914168825271376969001094340761377648487418731698243293622743693716904170881810872101742928109037100000977309557903344136643273367808231025012640831073700517532261466072965558652756539975841935786806116867047742157426598876286995997384905698693761028030005126905217313490141907445119240485586174004947125072513293761190201760157186724092851713785477603552145995848354307689575140731563893520272232436224697297570996577403366115446408204985059861276880231146593632332116664047060124406837360322379955207563026996917043872020612169132773506149751543096030902910862068818208029741138639192386867608762741997860087946363183791825619263211533747157596191757134157369834295405013020010499759058170439698811648143980733751968237686573164454534211394206136959587926718539689642312494935570859665860568612537475919659068040072420100618936747953737753705749383127291409003383837688855841053309435892404414955527379658360309647135313289366129538476897703162917189354281206164435348255552192776966124707287270272355902245433955885751207009741227994192134495378305063561634794407295832195458144059625112222238732508215922805408792621363851812950739715101715283572373388069309775291979566994423956314498349376967149231461962778062765502443563061034611737001968423504862603967799669087117588804859019639157112753414649335925988454052986607957770870482923146856099244325494894435569370404603972409346620158075409396512099348903782562196646067345376443663877635728814318418090231549113721533373625163581574526840997161673119389664334579356556456354401159515864788956168788481450985197215201467974181561001940631241149619657961920795580250374263473722428593232378725810430245637202518132904531251551627240821059617789024316527079137041828262423203999027718050493278416463558083739015666535614730630528564883352138943172947828201962484672894006650945217851258824311228840838756059704734974004156889921429014908926432337401389537678225680966329782263719847506238362967059541391051250329777158461686302483375117714795942380458251770588312881492313634727768589869682161697321291504228940601873619348996292388777724630285389255078462577634963779959329989151426153404562174906613363783607243267517210079578320766293154362152207280832251485579899573303194771526628078798007578233062417352061348072159821545393566054519332770028296707118564344742106657936278687268732675617734737178056510690046607762220209746122648008510436643666435541902320142352415694782992027493364828745928747851672282706320889132159909846882540327746849007379809382050344297894224907120550708900023237802233950487712523780018161507312354618054223609497536035163494093928091032767640336242711088275287685948003533785270118743240118979225026796544540327468208658559416238357927216565224536669218251472645443651889081645564816245005362169954201386198950135410692688457725430323102706392241999820836165265276591679465060858160505568568712438796347024605304900308450966553605733042168429732916370172195896437974642297090857585959129744911909686268599809774528624601994610190665878857027337811884181381233078873788158373359983366672234669655911799888726805731249876450737363254821569278028649052801255401131062341913855820271583117070719273865683054999663069013111249121297160457447041240423061246140642426490959698720730873511722072350750404737742430572024048268685119133667530568425561907620950064557291163632179554525056907363270277399640559645834440273363853661188000047234146519397763559239145260412600704968936012028106894549688440479900267973574869188916898200795990111065008878815333729179214937996646495852784883698591027255166736443038004395574418572899294370967551529143179055369802934328561669594406191593608936964899070486635648836640763029576597160034720166645043990534279613912479497024231544925793613084992394121484803964852738532840786244112636713504212176390740168740010064318423771759800182571206639184134636335947786714976994584189825206727396176883875524645479643946415113644023798932248203117158653341801005086972304051184189910711151723320637594773150678911124405222765005192822545537671036184314807662167004590802562833162356684840697492521011525880952899271472039977820122616771265024357322419282091459744940443106332422973501916691938329374288973886386034592918524051364182398592764975688780001997803671401869838010577270717330444418407603271989346719916686888680593245148354943447462721033986270080485900155124951082963992792987842114837857821508811758170325737210523836242819698681325151023148163454095321894993683800138795128096101389801313982043237028325779746911915430218574372464407978667515942327600656822134915485630059582718562671520698991302473350312566427091102259532338314893989689756822401425548363478786325343080669902177859287335109626530228527804055908960006937280662896796945405843803882948848124047942281965182397536936457929889578255794210593948378679524919234465908033421164868438416051929819069131125432441300566879775210550054157419483806784214653243093753518480506741715472803332755990227351462034161722520909347730060870649660727422118067613395865270827693082504392270738618254811116949038529595723094576904555387646766194045214126185045174967881222625225420294995105078164391170749628652025184869718810057932904459780474128600044356721564987537843310493494303165385746459512014483412377153293124606805820556680644340261399666836315845102022850213187298338640077707077917127911385849411484173150612304233608674207467083445888214784873006838124326048603420520398039994672066938235732542051375164474479235433550682373983123832947238416282024613236150041949833072908669815550674617589673248615861702017780769184080195436695753443836861503161723295315725658560497271219460777837509040504799004521018029935893811387189517865310399566336628995254428616900954602946642481835104052723177763215261081807631624720322398654828944688261281379543513838399159096503176110145561673340859375841223007298962049354231684731456119013370627451653372101952784150843366485718683154707759266001380413461198030059470241851889381598790912932175523398760753164627792920260871619044331651516812323419790246774100510382849642369445921137356415332559100571402192386504324237600586223716858020906861290616574468722975254000616033200134525382789948233703766721713913420053378522189534440356774167756989838340371683053339160303712468122195094451323769643603060107933336317574884600660754013122975875644836292687447653875456366671633406699749727233770775602930171119873713327502029649301339157436902586985805804661850651842865010512710599579744907900725568864758808468315496153957143231085273655909832339900927873362328571917762632399121621719422136842073993822309314300099352877919729663183063706089857543103711226019781257589533875565388292807852373328379571498654743595708116126805997489585227762613411374287400898540454081729983600454020975504859445623078574230082737441934713309411334435977095406278491948107490251001075326160260816166141665828764940536675366409103075438140950942363295087616474038594568300076749067398262609892149434246290522082284867369996747369036618212558758764999033240531377456820933035653514739288807506785309262157018155354164246038618753605910751171596544451629138375154996561231768056352944122861796274432731602355764359001440423701221314110232709724507824830537580539309136187075390125804621374052404104186962215577145031687226391307500214048177954438873320863455884008371509806523844996560156955171721235083443685969318160004631899389556155154887502954567874337030723431693153231859698126685897895105095148228879264170688790144046095670747756454596689425959992788755978477536636909986217025002679023725302120269168121827137745844016745136986531559713305374725826662884442853078675832269357444922580319812405402267749674742781956841448786497782251691834976002692470785895021703704858388868515265760165621177267080605919982230358195653707487049616510340265334858744325169430110779016508192911580225932171227930158137898121057272065802163804143176177861748042060613560746270301387882517734888125466322091023046199189071897531864764481596203251883661383342557380251629906535720631765398761130171689454545284542849138949012752571883712193005628020569517371873637657312815325305329151583778151502917902733190305271744684958622121010306471264222608732792916887491000707158866999254047913786054611810141366817747429490945735777114365311619138196776056638249387208249599690279274158972264263533482913699417066232424301052566108557105882321860415953995261011470246610385777123349945013365720795738329033328267790338461440694253915947579607200765511873466671258279119860920470033646635678259287228565899281046026195224102321794080074560857019502214981683804045378001236533286039783959384004974440166902266486137702679291194779601542349226685477920055280270194687371379891364308309741325341794454848006333434887621180433722346253849620431677039433650809755697980501277777113845268685091187424823340812151151597036955214920274705302810590187488774145471376334439641472564400585203279952036644952915857362994275837591364735007137899752917263254850243740999519067606448557348572716000678300808919766778877206053237007230414810898261174192999230284869838903138569158526989803738366062311867394482801934669491046627645436363276196627877141926295125717141746847349260139498229621952941926164899210479487462540920845674239802557539445478424605466878288948565437238163965174286067026364536764787585857086934460845630429301475483163588819083876568053843919529815202317165149427461863268394120150501380274794164226549074722497966714770269857429653319371853947557581888330894630187929986442821810999712432279880515190220225825103925627914262396261528127570244033580516736900703944157759769468332776781478170997801067263584947564578699956407063202560483281763769954234650000264770866320237533750709170825618178829121555348484981912976077434644897683103996518259302203185739168355670343119920701453229307854524542846194775780342354148147108371829689841186079764946697999961540609342917861302618236089580266302442813911419612144783451058076754515595931540231562270809029227064151150119300956423560999465999653837045524948746983692965835699733590149297182040483811117450935081926236794221159650071490425720958495747811724299488339537170111127932294679341722267132041146536871343639598304001759956917134651127380387343487435851780856522271135939193895628494326974660699269244961652914573600667083355775273620390457210060853612580746188269631693582473145445281407145308991224674238036221680829298174220621860798197137043727200723464659535963188623974496505669454742056367794214902540739842325758539378897401139581409478646694538433617227363033864822552034428500528123827744206093078356383899501146590774355751444444996321829960061275708179358728977432374068967803416414619266061210292307970707626315000351235693107429383685067164757433404492504794750614444438344268104672144761836840853236978233062403887482344558895359341454623603202631096561293380806547311399902028110050717415339231618537126224678146138703245509801626065686426890214790932004293128602116907695945906954418031458955572518471438409956497985277462584714340876550751083482988783963757153324906662143577507370210340928704211200056560771784033654183722097707039082998185723278388513255915407843806226096942825934133693270436473297298053131414410673096167498440524501223865224580163159731941779290670475905774711449587324396052040903560867749633607269786383362511207050385233066787151038662750888189396417820848864094163550696516989046092304161178546471108800040333177562861096097669402728598019472317127433242097596374209926949769666919449022650020469268773013778291584111777734801678122336199306707466885245484440238800072649836711310342917062136424156843313918053232383983078468123706545170731937525394324743353102231318881796761219340335058271096924509959581007125101692341639032718526132731465816895432810824251550267187134476525004805214087356728063163982776436973281937480367061490759085981747339946738833819701910602521740453589700326016152713271589647731441404281010739627169860256321696918143984628976348066263640404724742103943068890300262217919407490294185056643193778672788621514872444857040570417491743083668801820211916799180279149123365031855739327527333088498161734020418254440569737292101091210357772958736197407944977294083500388828156900799618885648926774368028577963627085062949536784319273455247935719907179765485929514896555210085742609479677331538755145823312735881427161972974752998566400151194369472948682330746237551435896015230533986496331433897402923227963168267620139539062424101002664413774030587496049713880031234957424411170400692461605233008783471512801605298659812776385852174133626209981186918938358345653057146829280758503052663152684412143145572569203330345681676854169401128235623310323455220016266200412727026684927816836926266791942439320137398200185642991418955464718939675339859727226028984577768619596135554459532721055935991298244358265061294663738057242475692460861527669477565237601695691691877575077509877316632375206719112645395824232996123929118615660776830180353162751919847202804452994454045882395557025233387374545070083797953533868365884599308144877121224106120864464121937933917213846371733319958318928844743660588628753216510072394367819660276153579065026923320200465135622260332133326790916912968206896304595976989601528304064458567050884821874068569327242388967568172502936668476374070466511317019575209348088040354641188892289787348206240433877593443377351012788990782745082720418094253843066182615519009334935552955266684858475485494938494967552976557793389120050509603720244080853334662123762719793723288604484467147679471941170534997419483368784944658587229478672681938138968282221403428105437551913127361355898698289624008368882129842599996702944503383544658955991070462640172667935141602759653551368815776369942044583995137647829628663131001221231534965839399461463026651772976511526811468953158755101980388687271069507127424565908828648868313976235679953426838583195080029733092861157150407331246858177025938607115915623640069410010572713698395553642613995001507855911638582456822041072917198751686674415946936002316231579585375014210379780938502025242931562025826376153063786386677390155167472847163910141829719442198145128316851168493735526463730798576431768575701484236408740789352058681668788075735862455978596131420928977008662021317085139495607926794154839643638696960646064044825882368579418247614851405354060662705787252435746949859486068833695557311397454945200620586897382572493191047700347322661176946901552848619336843851237375520485128070259328150932433696874607136164590619330725124114051944408510453107152694912451523749776692224397142477111739160271001055661493257893822390736623648614862400268263497424561751004005831896928283068703198441436303294281620983292409389164251515600756093175861284494043497224235994824226709698917461917863787094372023594255212399834252267422936777442893986231106470680422080051493723415218391429320112757538538152722308570014027075530844822501991820874404857371262082276060042328948543302599518455335980198371870313013246335949291371848114991467063678242040592349751000085649630969728832751513083136617133164475700823575348532001183443076306074233894249336445788755808856138636225218959783400429992989436381421511961005832721133631275549113641226868484408007284898058005197058362236770869886182300061523332360237274414046733500673667538411330822614792668451105454556192218178234854687567453892043600237068992115945877699734273688549462432595826857808760858752097166448743979126536642225144766853882164897991219139703135886522295432375281686953025665774373025556138491930286406006798907600465458206946206559399603295541764326024991786904949110480071204024813493511561562807263177679249625023722645669629485182963500555510003335448887796367378236138310691157566684115092107052582867873880273394459968866636536467871590867185180009580075210563577153824342282110770314631151974145511413151112232582017775144045997964536000603811954043472225003066247455557263394762082853850116658090037261991247692211882538771190182621125886615683314903791497925118251236601408921425321372440272474308166026376566103285492314773620130839791355348313991833920577761293186161487443714546368334266843700926550269914013363603933096481736261401808646916666943053625645047277738712426916089523675260346358278950869126866196618323149946519669426092399385520071822088538968327620951347854373933736478358464833341988758379440954439546160099695643379929492941368487698245794174994884303415895408845403336262531882986477376183597159377008643623592744228955744851179963996057437998203792488734880620325546390780235577360282627691738879284350348303931706658969021190228577090613214548879403331887319146436620250981113501638403068994314100847127956423998146619152481508119331358228736762915421760355153676599027887866998088313007968660592865811707769576845589411213031205772873869932186264820028102066026067911651743403664004162278364920630216801991357759335718017897355535376875992900410463543711577972110530813339952464979263630750562505388948802268679332820101592290211794529137334659869207531837711768969445037532706728557894994806768360107989358484976663557718022193801196136210942917405780671537338138341560189293146145018854550800490363261289124650531215691866178661123946688832836387910091158318626391704067701909442417173700506691173895530421379380710863913241518828902128499464067152291584149084550831801244343608041746464087808753602870085445324097573012361069010422206760722613567966626449015641', -); -test(macro, '717897987691852588770249', 0, '1'); -test(macro, '-717897987691852588770249', 0, '1'); -test(macro, '717897987691852588770249', 1, '717897987691852588770249'); -test(macro, '-717897987691852588770249', 1, '-717897987691852588770249'); -test( - macro, - '717897987691852588770249', - 3, - '369988485035126972924700782451696644186473100389722973815184405301748249', -); -test( - macro, - '-717897987691852588770249', - 3, - '-369988485035126972924700782451696644186473100389722973815184405301748249', -); -test( - macro, - '717897987691852588770249', - 7, - '98274117348321974353044780928022697503543794108996224149902690255438168118107927224939057895356483251830948245334782867413814443266637838233302304694183773324275704249', -); -test( - macro, - '-717897987691852588770249', - 7, - '-98274117348321974353044780928022697503543794108996224149902690255438168118107927224939057895356483251830948245334782867413814443266637838233302304694183773324275704249', -); -test( - macro, - '717897987691852588770249', - 9, - '50648270951104922750154368051586870571131493195253277558448154467572398239992609359412793847046346201052022004762903721738077206909720257557511103348958535839847634617934011064335949101435909492826285656394536682249', -); -test( - macro, - '-717897987691852588770249', - 9, - '-50648270951104922750154368051586870571131493195253277558448154467572398239992609359412793847046346201052022004762903721738077206909720257557511103348958535839847634617934011064335949101435909492826285656394536682249', -); -test( - macro, - '717897987691852588770249', - 11, - '26102980312143604580379781426139335779091260301758026221495303393196039344305009624874488017227324790317412920525253886011853217074287636537729904547128731845728160914486066244742089352609334182138245049106257642108402738856230144495829015803277090696341313660249', -); -test( - macro, - '-717897987691852588770249', - 11, - '-26102980312143604580379781426139335779091260301758026221495303393196039344305009624874488017227324790317412920525253886011853217074287636537729904547128731845728160914486066244742089352609334182138245049106257642108402738856230144495829015803277090696341313660249', -); -test( - macro, - '717897987691852588770249', - 17, - '3573275582766550916421412995798134382789703709314385104884818112662852238582986404829924618616654726489613490560634610856652852433199412781955936605818387336430363300497297843489165805533270350826963139013723342117143973258213022730407788251463239302985363622895194233407234360656339752537037204386160966863282760795179386609783329264325715584866656109211813856395434440166721187549981532749010960740594249', -); -test( - macro, - '-717897987691852588770249', - 17, - '-3573275582766550916421412995798134382789703709314385104884818112662852238582986404829924618616654726489613490560634610856652852433199412781955936605818387336430363300497297843489165805533270350826963139013723342117143973258213022730407788251463239302985363622895194233407234360656339752537037204386160966863282760795179386609783329264325715584866656109211813856395434440166721187549981532749010960740594249', -); -test( - macro, - '717897987691852588770249', - 22, - '681365581176156632412753534374262781125282012419825049087724194682872335055219639396310501297264530289064963157507569861612948673702326507540305843556830845144470742979453946547899015520738361534628988759199748641145113940154534539818775453262688963129311220968303038658465790258784846759677427047794151246302947777449489906933250186470399660798890218035218608642881019130459098257182422713814006185934129977355115289444874704561056766143547053999767907222964203241196702396756209771576441224761301925355900901280569802742001', -); -test( - macro, - '-717897987691852588770249', - 22, - '681365581176156632412753534374262781125282012419825049087724194682872335055219639396310501297264530289064963157507569861612948673702326507540305843556830845144470742979453946547899015520738361534628988759199748641145113940154534539818775453262688963129311220968303038658465790258784846759677427047794151246302947777449489906933250186470399660798890218035218608642881019130459098257182422713814006185934129977355115289444874704561056766143547053999767907222964203241196702396756209771576441224761301925355900901280569802742001', -); -test( - macro, - '717897987691852588770249', - 24, - '351160503938693614343626853747071562171016188034295260095490111881784318374960146045355120758560422119505624375491533176393589903573845466689382216842197981277867514717013259791763929689440964343969395781792087124646063583944648684169111729145300510135702655848244592583122673432949987979858826614906829469635537237525614665196540272658828569629679791428934101079072719564710584542576589075082850692588439679596816834818341802539921621995225917260921044846812391894365530686773081140839348912145464664288336497209664739248364322768319800659209785240272285297767697234264001', -); -test( - macro, - '-717897987691852588770249', - 24, - '351160503938693614343626853747071562171016188034295260095490111881784318374960146045355120758560422119505624375491533176393589903573845466689382216842197981277867514717013259791763929689440964343969395781792087124646063583944648684169111729145300510135702655848244592583122673432949987979858826614906829469635537237525614665196540272658828569629679791428934101079072719564710584542576589075082850692588439679596816834818341802539921621995225917260921044846812391894365530686773081140839348912145464664288336497209664739248364322768319800659209785240272285297767697234264001', -); -test( - macro, - '717897987691852588770249', - 27, - '129925342856448988764251542089065045786155911790890516647657119087489042404899060228369392822075223183739765014052360206502536732276242266222695367972367328452765284427361172142362321443004910207800039177476242301577150613859831776093328430566500496443594413224371824361420410550048411417760224137393585174427565041635390932623375118187728586008978789234310569306311929614122033949249592316841971560046372431039697669234018577505272948749285774218193495971402810317470288145379703055809020802321420732619980008200661347545521210303094880943536506460031092224160192777095197322219385161928995729071382072812239062743558406558464517305710105484249', -); -test( - macro, - '-717897987691852588770249', - 27, - '-129925342856448988764251542089065045786155911790890516647657119087489042404899060228369392822075223183739765014052360206502536732276242266222695367972367328452765284427361172142362321443004910207800039177476242301577150613859831776093328430566500496443594413224371824361420410550048411417760224137393585174427565041635390932623375118187728586008978789234310569306311929614122033949249592316841971560046372431039697669234018577505272948749285774218193495971402810317470288145379703055809020802321420732619980008200661347545521210303094880943536506460031092224160192777095197322219385161928995729071382072812239062743558406558464517305710105484249', -); -test( - macro, - '717897987691852588770249', - 29, - '66960601081613218995545615402693600374639583627057873894478996761235534940521876203825851640372285281121028022306706156922783036648760227593129124026972625933013798555768937762460772142044797003957960219229519539565564116948220691395428662251667454449762970671596782912888080349684772071024984546225188460055852555657228531306371662448557023517396895942248714935653633379580289509781187157995620922388883890668691615375469973820302219060616733583757178470584754927697520205194864258128911605585342110346435691476086856952623133602717988980966508297658793357400697431392332924229866368079543112854041068400435054566433206423406557876970185985505776428441038078323222858222598473938385526462249', -); -test( - macro, - '-717897987691852588770249', - 29, - '-66960601081613218995545615402693600374639583627057873894478996761235534940521876203825851640372285281121028022306706156922783036648760227593129124026972625933013798555768937762460772142044797003957960219229519539565564116948220691395428662251667454449762970671596782912888080349684772071024984546225188460055852555657228531306371662448557023517396895942248714935653633379580289509781187157995620922388883890668691615375469973820302219060616733583757178470584754927697520205194864258128911605585342110346435691476086856952623133602717988980966508297658793357400697431392332924229866368079543112854041068400435054566433206423406557876970185985505776428441038078323222858222598473938385526462249', -); -test( - macro, - '717897987691852588770249', - 1234, - '240666810925796631497300464125793793876153875629096662520743987128655138300518806793333863505002370424150325835897522997035758513508393749421313311380386678245885529902936330574270897824424068780701595312024191583797781168159472099893770860328570371993646844140203799118143686616439077080118602046330501107174223757814456182746333086177504034894868587120939461313455507702811247120286468199645215838215144781536578745753923838005482894245501661797497042343390617151204343021554518498735362447358070369090432988690834865403291509113944458407089222159417866640525805032080821319406442026747974929325112928921447323232212274973452975883062343094212146738595192633791120734889354763869347495932575155161944862722200405955280366430399276362677049013925041871227530264219143440107033389736110114624783260190579707152045014476353193813168715289380838132597179842738854542064339183902073367485289715584943627672587668112192162491400086760878390153498140343600949752356890781346460139220027272654766196351251998753435700609187724419282733374517073505387635776141937057086008339977487598351396266355557385114078610220987097361567756363195532914764004598634407992908600646589647778700597919884751054929681098369460031512377150901578312180257824087931889292083387179002094560172630492173743471238348161722683402811331621904068461649853237649098667186022410987655766907338482317060412259815938817187300402820360378490149991171370482329371650505043884192332467954232225473438096361196485730615702706338896803459544893784510590248023379843299267561024474106199710926586300140256218142748793677805122624858592543944305974549597571554026676016225109087448889480206990407910658105566060532854331549685512672824252906121631110818833232354043403137418311925998804066986754875440423240222092764003746250623404175411263344414954113517360947070716557546634100780648355973690014553189027477234402720353402501541699079073208241754265407813302554719501911786154879576504690648777330790234360752380718909924776795870591070461878764685781345393089291677007084060723076292423331888969906994889802559722805557544432185305096822014262735051471669354024897723343139333199330147964590265703488059466191857192410897868609291384108526636429139154008874646743040881795937998168293882623621583556584500036772108578773075747899050834512563302362032542587715210166387236382275419681547020073143476402676839032589356933008399060939093631291937107000000043323532799137849647405096232083364392703455257640562906669605316805575467472071569944146598547468221559924113348400144610716847685364347467929073894879899123491301645104075537984420168183636199226629624957989433534137128744185230344994592856898029628268331117744171243766865397230810342464227680605486409079213386036803957679866952104779315664126405241076356017313310476722815126991777729855840510871727519397893209033487330193378894526790670497601404262388611693537246084432220039998668497909914891728825779959838738394310285580938434539221810042937887451215631212371491462951157863268559393019049906492412696634901678674798328369463166268199126370427527431576741235550771195727247585539256417952853329478914515539806021976444112084626581019338193239617668568672517993467174255845823702683834750228698628538106052353376750716489661771727612994518487692989696065706319916267876683157185246663635313221904866416368381426519462074273529104434353847460205734702566140847713395645548499357551950806690743433954202058581687009317012817649884159064284249335591683480037524895848927954651846952405664224327697084573143825212146169786019851375852570935645324673501437526819689862546523710166522763874255457046134768878318504847569562740775920029079242062671507739909787305724552670012633097279820790400444955953186180036141498111027556284782611831968632960254971585279229009517389124640521071182508552930150093115185298823230740659868195268121798981841121508518238922062146832778512233130516701388382270437021078314304384358232872632935033731255504313450018207186652992855974803423357233611324893304082721355054709451741004386686923054310723261481499154665026674935888222845457736324171023246366147102994195305848085588996476494973007973902151008585594112156233214360569556745482837925015827621067498561246812344514749188513286706401554080345967322077722072126008109427433431070325726521163012868148649582784383995723396360310319509595957738338411942892357400728388524308685812413893999404967999249813865349937751377717926369301101787921984260122186159989136656801540380770978320766045936205592959488163833618604355519117056970124007977963289037930079739906574432060855963578944486246793175242282673514112660912407087562188397053739993885193130818225601480302627529684348527769410385079008546741019828845532655444621234451156249631617457720152180989156738006670404506338571918208165921758803413253593685587469101580701192606017766650438994704981870117413061535622136601016979952697317238276873256779729419028069631432675219491767318800339045855442030264560075159056776340091166641523596359578961807101748144945138318607039052076486075699577782685718970588115246184745849474239861848227033647872319200256588719967644217877454602724612457063846122996574940120482768446762101146242787977449369937867250832112867230692912468970042855717280755106531667961937332446742078258774278002352847604203619178315262206430766732415004556722421674647346648829974839968356832918027747760706008251337997576672550889603071310089578634747901944072670071985016123486885045817879153495396347705516599056944513760289619758242073133217108261158438678792867348399912643882264938522086425924074531699941057823129668543509614970599670225949760759593973290456515031451150061095408009491932533974765354150005121720734711745252878859000575558573436139695813170049848899622852245653141171375285116196880631468001421360473881187149476805269342296424485310215470494796178401944348619754324798206578015187379609260920882768561974442771209643829629212007051116346637625763873106848673476948458383017883010996340518563860345530523780019175023658557801658436627673907676975971882109751635784820139654624656191522441490775749907596367211611579452627181067685977845460985237049896675479606151704752856005151770161591738112961723993454693092539303522485285732895462643804740701516376964927670122135657823916458074535855817547513841507607015010962514867231406668733574660708546812140757605323461188423370665178218323843285796646737709047020502755313516962625148241570458025214707284812497971943815765595261077725596928727447148413360293693704268976245064190940961850889245136042407154085469838297857292187347035492359540055492227822512458140269037567546119976309595685267059328503097802601274596051953728897555043442182432638912118214086596792857025735173692744450906559633901069848611000152694981799908562674080212673483483714535683816021391478836663467848746594481778215255545090822995407416235269774848665232107297962031453869358953402040347982467139283098108055610285820589613275368865515242210501491361858362122708451547647239066214844062386833772040444917284525202881555120247439897055373293814403955325754500816079489668326796664509455821614956472480002144936394671934338050270783459361214210050599756870439116283220868124998006625761895550396584389321270476762755086709308051601531689562716830791751872883137993455070471233464948461931211369790177531373113631239997994291418256714478265196669753238257830553539691807842745455955136875773828554605336260805640377757640862870194935776092004134130289520896834858656317913097532957724133151945092000859020920237096913664009534675855229755344172129957141641791984538395100720317980525185769142781585509930975604069100811643163009360481907738801078884830886276286316858755498443168347068032348883021378746194698784811802339515331441830238719175466597762050420975691354490653471436861965025398816127746666639354864324232964949049300538005293308845940271700888627199662903120034287206034687813252949705816491402178398645719387809539644872118409461401883654312922279080211009210189799876128819902719937084606802972639337531957278291820852311932551591955350790335928152884811433450537315845604917323956883583239480347219971438941586085711934485815121967398164101784083619826265891401802416571741345090544188799381856839432343498457496360597455526238460117589115787753968612657150077978004530794321967803330389249425352563744925321708518378671586645666604614530902858059020840074105043307623670946950043194604176031013849727052783428735689851667778432798381033674827978887751236650974118849759189503239625343304532523005839417475498961072873029640889256489519703706344292253527801297251124450502273288023521577486079679697498402526688946738210589004011833446500132651961861200853340654900269802660034733678942996167533210265105504648979731317667399933165040919109758988751189548962159739945527299915654716346246041095050960741515495587998776985363865506374140224005340645853795347072152325663672271845064723399857372941894460100333264447275387920605177410030429482678126703784114018103844023345892034742213333395468046660012665242882251447818527188389084106839211601891516465629590896364692175169015105701572123182161899801710734441225139364024469426754491100056297212476895075865513734972712990677136692220035091504362225897411284355159962673082264518469172649285965322881981348609178818294743174542244219819932183490365756919330710479957613508601495497295676950329757448944977362883166111823279769434700959568955927643656859063742327008267599164937006804048910677286568538933031439840564237461535941197796390759052457284051017778672694027120426633268111056448896881308374127555545225553090822535510692077989067554686838662757792829768851773704480230259292642841141429771977100764471997993102274545765814837384547498350869645999651843659166200886176115555346289903469340446739207010577645167542297460407137062960215028382415884570633157792532691792641314278905490923087079766067798937780659109451731519734592939579025164926515523248807352103381305168229367358321432773551392789398713507962778942820119469523225162863178680183911570348027961700553229115316563272964376101119188825605514991804081027954389921141273219285131032169547368944389824308436381941175515798111830481000043636844809228835704445068305252750582078049987152297826581119584963878880864201441342341314647264252390676175707582693479476352854352886370525502607349886832362596404647139600857534060227964743860211405500060294329186630176879724051222152101141867575359408008501674175606199047463432213378831599134528934108281929480497040842200684432006775368915613194065693056672838195707429303679749464784054705434213357415294902116744802057352193718342238545126703326661042546563491168121691269341550977021406438785288342043569889077634089317033122541296230748114388665029044499469546397108299753200706114193470635536895967048169021873576306364846257373205822028138269759764442484817509279075026743603019509097159849066563284407999202539936119877761212471543147933987133791650432393675308321559611393751092509456575599446737432047081189236910050329727334141146991725988700140584975269036834508080148636316737184199462112708124889925362377529178344014590919552819769657577672702978011641143673156015114065926314546589192090878523676668017033871729579063980669673546335286849239147941679867288782496042348838505520661208416542384402601836938516863582808398758530009389050063886699985783925267497452701039388970042411071173551559121683897134217799905956381777617760035612136975496448360169358472611166991247066660361258257792717955895802886807621142240955311727190733860080248699104145339409596193747533219052958194006816842395395133815227958447183027408201887154248055155515252489593725880002915429087346780489686173993006485543412786317161927405570384085201230519902078033355645726810161924247926196020315576428292022629241922920330634879366713250236205513546588717366123436426532878032863695637071735051269224304497931038322951508526569846253683590423751042200651378810558188601895181845187598166177418938407685219535673829472096697071612870362277436920342738049215807079089141509386167010651751786772439419974350420945450780317330425760939076658378846814831229353170269675745570687143370733413098798744099031911520221044007327256897909622230050896081391104380973572938318409605238511264413423963577109959485446578175113776603615777667633293449071495602382745493460804765597670064823587149295646560929042625803334777303751883329502685780494009410515987822344496036156411290474009548223625232450188758230491801781290987433426377664288677071271225318178134265723090953908487368210301890173799337794414289839164334384499838476694064042562380923392170814007209797114936223969923288492450317383650369779029731134714434936391643766311336738629884184770965675076449262359336759950385687723231779915621937147640435620959355327348891883061403815008875737737458441613654230046515389312374996035407943181440498220354304355266414125515658969508581407533490313522890987856883087879602650008064327529989955508937331955239874722401238624800305487314538069958888480061378318398494570408743929545890698144755401436645575305635886766888309290821752239252465276109182753977002117165726763101082508643896734872331680782581238479701159334042497390606376542941582331808271248759018721187949059390620081627947668715490802983617888543466920624132979650708704245244736734577571335364024219584348266021595514151130896017976378599765662306270194051912298827281348333359149495872248207397081180112660679500488646194492335713944553578485524340274065812575443967506816413669283541021458439360404721464264498869630723885583385346819805722244341238149657763492548458459521747402931332148061021522859079768700468052335856043104242388423745990751764752080395046941015982884875151539581000878641435603583824562615084914225729901628394177372130985466208762313918008648944381048427957163858317218102829834343833633544901126931143569398807905684970202348964194612275298885061923925145525774876352222523781858372282001957198274173098329010279847291113009852613678253123199322917136025127117154756978089704874006129913373888341731677935563427208491533468982839070555222905600716758864558055015455443368534003989339266991496574749087456141207063618250411241902141164015442390891110956633395370303166431966298954503533779086717784121585666343471909838926386599682823714314774096149220614537617503626682222182615668880281733598355987215201453863347388340090921698878129884976286937514133684565405410347549261471700192037533086493793953508999824708254409983739425082813111045769624535087578645427477116700686622592971553298713236705554924227547844058030634294043977065066654988266829751374105278390824121371044031181008428048205223923243651098135005092948487395324912456217052331950187603567228183420265978222659169332375919592362911152011838702189535847577763714114425190514299564739774757564037598485982927812147173140747827430978393017504243724684098500167685714749941846120533181791178220367836024729909146669128836477415610531307171288054524223649506374655503312084693854015857030163886937766181098823169023181572231477404931598733389102380674704591127778547890467262756173574558080654790642471369332640892203135294330237246272074631760017202872694312963325722611729402358297429077465902624984852437593479190867737167006749083009854670384065327519801302083242691293439616132893416660268947919201637739258769771607084518793369204312869826490193716352930819450570212844033786667236068075375941453964216107149779664323628747272497685794971849040594638565097670630010455310220514277785818284186463200618441748478788591987616681646033755321959251953987293706031605827100615706433378711983560088154239750803537349035070283423517350889381534886372817293834165533055835445256823942303051891255521175486827650886133221071633589921707722114526609240665260264492305806982431844042679579783582551609283040246523428581845720374540737897789979786180180579009825935175015723992444590406056732840128165816199908483281974729283159640149821021618151095300252407271226953926728439712096665201813821962143089789720545389677608391629805852569311950851389264151131224953921752017840922075938093985062781184787646406285721393870539756657767030925030053022461302204093227393963491255643017235236360807076699601286868224950349231983608760919780584266842953210668067889511328397050532424837545546721403509681669483144282692231815703147470176852156718005759125673967988457229048839619145997585270368102435074595029990094324102493737818970275642575407600875588537013441673454455861497898836728065291478392070865090189959309947742444986923526745948057899128034232868017159368271694223700039666236730894705407231009389857561190687139334624948051152611495443371208819706799382667564652218904459544669746954713753183826624347921466724650586905939136598547335012617702607014113794591546834254696563524548343500981096958481191991323022742758572702244370470464413665803392605126994943740602380225661619992335366449312159389272554547255369597536289533017879667844179574297853538262473990737634615419535991688218597561417950967595509116168022993443293531295365421530990278428579503023488689022645550899786226625323338180515144059213727584521215321722089993299184212218054163465777614637889378688685803879328452385390951350548924489120271418100487678768868428228212387228503799518279495595264908243662176970443975028752029355061454695157141184819938299926947437018478957044395662391617808375468649007600370172940115843761412592237460566795143736348519450988859101853660296226210668299394693230720927858276964586740548558363904065214488088226818002415057852903743836014126022876012254536312345404960062753442098036019060443237049994545797682297235099797863438436593216207403158412477892107575374686442179451430350704320791891708254315536860892520182634206456725864813704568320562591782038671811141093425946482688159934297090882997856490197026962532578625837338928755211465291529523683918247460452910194710972484675179153177104097104259910518268539520304289744878391349554947980543388976876106090112798575825073980240911865137171222653996955929253877954855333315507869969643594964229605539468134884245036416894025484737992830203554155653978459691014928198149428959910752989307071317377965664300905553289327994588549850950284644007080706241112418494862133916539297959029131158062514264923394985650739154621700845808120916284537924609624030443114218948985698358239949762635499673659005627824880546112922811671183977198549908295009183673236341667156736650377361061056737332063403410177715559814144656394550604447538215779823278536104712565326761405690441339115296210030702222989203489845948281369398678770779363415632864910236794328437692624022552548328392842615492736782204301768665965365930746241254165608754964908497067499545759985298460945344650446835792542841082131510112938961881927693248231120221756864036707731726487325938077272576650743798183544800139162905157445216386915371613768879264078891644381253089581539609558090983181521395649500355526541811118635730569046931361684921810261207373485062516626873625896376115969793729107031511621422445382850451172374270682693053568648031104008891817274572963359437128249991844891468313131004074851541435190896882353764875480896554449408432067645595533709041759932190996007431454089967656531249566609171679862639011907239936167049017771581006836981063193553563613522749187290893357797646951653930745484252566662895227296365515537656517639786730623586151975310765480540289532531601949395336304927562830700960037825411985561643821347883034995939999815320371904489018486314948455952559263146409710068471713259502647267478001977847611896061825935753950424233795977832748562746151379388667659849662204204370582406208836832264614999774576849343391530101628342373099807709619251009982948420174200692400576186926512032915961194241973580587141742017725523177905799155980685544702998175691236820149021743148908860959473955326805004843786317283255788228027783973963775307044681831745418957729607897287660450576165731690039127804414511168095180765758455897687743007250305015608713824106966239837615772559788333446260389735144551194566097856159222619045281993121036130544888850748533209105902290817972040683491743672438537427407555076754103740470470519996488106893988963679893402926779777315510136748292964498716616387480928391333727613516511458687653975670170800714203116160576633121381876444223289818335512535646590900478008372238152919598466400554972447258395277820369798167170321756327919408066285581702239995204777287480387161536727459448442509762680258106041535327214632697312513497219121039425133532472242095253942361432227842877340347922588175651734262339738440446492272637919578131157514237627203984698773116783796765212222546280365874311759355831644675241116934493294688108999510961605213084570721687715849450396639049106141887860856148954550750471455629931627105000620532269066137825781316017603220973433261333991034567108467510498624962642488699169465874363399488868154638948242465984577292633553735556852420099382096738662832127104872725881996505036610995572650123609241043781086883738614012464955179446535377004978611118562176293167638027449612637695085975726247778121052711332364566219200112876185845464416120363602708440087210524126961712756204182189211477418943839212507448032291316566737926226650207942465800405168687099249273393069060646360798873617365864441322829730079901581793477840461467290903920089953743513557150545457465001493281676469801544541444627173505187869563691796834575745981341826378231855942604285683577230974772727095310465725871392788376171498988325165587658459242478209763818343931715246275249033847544355256625769712507232847344158590312425822454135201105768865080501413412277647350979797597165322409320114702032426981288520271353130012171484594553991124856728942246176555811779216453894275972582641573921036716718553318429096852951098778309232081644343337035691135410384601765183315931601762146264393426528312050751636769212945201832547953844492774251628393141343106226795356284876139469403273284444586014152400694986734961594079272858809061960949904448174959103909564433761703907276125412354892775335876415272646526126192989549857858930065881045254576136386486138517438556555308338685607210816131204906145887848650892144421256413442786428159719389978047391109134257790046140655520758094636923303925473166438103154754510983147606737926330885845999568999353851276202586739695128035976057952375907156376600975164048300965313860942704588148212587962879654957903805340177854247259711308541551603503567837780970461451995771047865665783511661730311276567901518165972850520986636796137347177492175264790310493561351654339295597668712467832251955744640272444007155359474048804304065788982945928352532307632627576930665303670890426050955025688528627309916477125616012512925234970728304675990574496468777227069085170298364495254489068034897491392933909636369331527636742699013284766902371352506091776350995292002731244023865757006858780469293597018620342571723772179977093125789699475496105523743724832176529540068144093345882387953940656084217900519955099464578748726508611651485516665622261135808230656113185935758123090731435124996047414425279597354359574378856570913306377601759010157157490619551740940998388274502844305091669547119876233489292751989516078837544062423667004292912251992330172087279616497346882233046859736081564275972335625958254887035338484716664189318473872485695845339136606272315059741608927734938768821670382249825317380542046557829438761966527834167384855716224439462405323266438326536377961771823507569459750423103138290848070089339750740358977330113970497456562209782789816756431729085281442325129945131381329920983439892601873489278892739994343671536564003094063601168102358102060511646184488836555280866265439572865577916493719868641514516664261116535122724396782278955528978764063014169535540654859120299172230842177436210545014476071475600058330214022044195137271228882609806962913480150447375885450575324750279251402851061941914287093134507336790423199888450218824466412490267199774666086468918833734387337497335144015840693004008549890781493464193192460097751739334161380017888359443004786038046374825235310856409598367802175188078401652900630883502414596986630872311085261238505708931003788068325087199867279768495262956883650359670743609352716895125122349956601558456299500231541599105539315180746997839621279353395686142155700423447977269222089468138684489318419154262504409821198761325705465328527695537157420782082354078175035903462010430134986159387812646272750962009925857083492829567970790332465325289206689049063764087436241829439763284627544144883357167770069639466367471860398862788075053410539365200406384307372970511564096399841314435051459484946899992507044444836354985269418541366246616097379154763081470481918007310765539689731840724466167823996718641044946480569623102013135147003272739284086213587006083417239308558779132947952435879189833909533561483821067431049890268359556509392353401539333788301678145208658937272723188794578112686709909491108016192828130703303524780820687044001344046854958188080136806595303293237463476504011920463204562731540166037081435695648333493988584792808470211132901764592133330530980096778425332932212735837577215893864016217901368345444882023496497506785629435246203379531538457462340173890359032774939687844147198184957025212849427638320378720167398909916718917724985900920192030214246493573397230398365110417352778733527631095124650992710118667623539554692566783429394136221716928121159143717386855853984409631021985053790618629812165917024946228153251349408767853192940114553370189242241369551007994010028856078603666746043453656590118761983375709654169884658816846754918144899815282484040063735003947309015844941305847294632029009712335365639096408778574091927109550299652681981479767150215206743081866358869114610816772333138477417708074433283279303532825808874057642839515755856791048739006988848065926839028819778433988669939558066650036824490486884666934262276513630175045822348774690095228540301868104997197326328212569850060274724529767914857676420841256961349265084840795236300841400994212367633572991161913691050780025455347823394988202788101768864502813390202856859126972599856839543990159365234030538827346354126800097285185924007284964690706128142631879645458992663766048427439769100788649351932617465546902567125707865370814068813860587244367746419075848390538678832569432671471062986454254204755506074801888029161552920066319891531957945773273477214975812022453730709392776469844678661783580960787047698418293376308118134867752848112612486402593064704496634807094220104296663754040709636340404817455410880891536467187831977983640996849951650389805873899168181319390054320789631028913388232046260307268390249991322854583613804193446810865918674501358892715568404694072865540886401726893184784714501860380117604550931574048136798023258513596201002070068810852653249151000051456727886861808962487581377647552163976398924881561622659417081146106665646072744668498044426052522804636851043773834785399184804744620318835737108437901882030516095623037578335280017150548691261342926746197516595593226496924022045173580598481046504353473187019615999528239277638114058438415735028254220037867803763085393466530484468108461280119649653140359265924176687880191882252356096667279055875924399802049955390469540917907333623282921659561338713671919571784854447264751582461161121608220632552535539574811239491907977080055351867435082725503419467499187011802283659752233542349669207811280081047966667824818523441274660618920625130919101015888482026053951969439894711895548441586107366790258898741612638693297959237922447608589158095992135723952461923994687823650465896764883667052137155194576002906847524103760645387180490146865124538922972372819826875923731390254431637342915817358546048808767134126047097505431381328118991195760134187889545091844395783645096128280496313025953970498006602276712809536127205652543720418045709969402565206329936420465311999349099261495766939883753463147455929093001269063984253071712863023553747896664603639453734132845027589712104259060427174009223665700657893713650553018587778453891754253151543028835750947685193000377825566600933648482508779760768199662372049766387638985631992100720003474151721375703211133912952407983355924232680111677587187241552829353741946423917448296404338549819202048685814597880693735805572741960307139515943152276365487150482922514045581253293812970267225644349179074560531877646062461313500613224648092931335926366379056886844623491593907009953911828052093623916145953431995773150699039217050325951921320241782503621522257361377451082489605564890402097866814491505081488150019983296575499211151451554027366425864934924114301930078755148355932268605394003602081353485970925801149654213968714040128138987924299507789192344817388231539104117379617054404077042219865132840948934920651343894411168095993753287475595036673571212995962900134686846347787877484062299240326083529798662229832353356661104190733708040289237334415143318464007457016765783370725688178760684007631997290723697308539152704845065598303686071945621892934023531809446634995403272958391058435649685487542623361855343322082521933633876027950702259029069185899906864695622617535870612593631958372152800863964775616329570345552185613467025464216600056930056849030169878244758163240995914072907600096163507820815348734058513665059114508068178367617804243332753749239571295040855080590873111579164335770288383740923440579367884707497712423043388562508100574697765074001', -); -test( - macro, - '-717897987691852588770249', - 1234, - '240666810925796631497300464125793793876153875629096662520743987128655138300518806793333863505002370424150325835897522997035758513508393749421313311380386678245885529902936330574270897824424068780701595312024191583797781168159472099893770860328570371993646844140203799118143686616439077080118602046330501107174223757814456182746333086177504034894868587120939461313455507702811247120286468199645215838215144781536578745753923838005482894245501661797497042343390617151204343021554518498735362447358070369090432988690834865403291509113944458407089222159417866640525805032080821319406442026747974929325112928921447323232212274973452975883062343094212146738595192633791120734889354763869347495932575155161944862722200405955280366430399276362677049013925041871227530264219143440107033389736110114624783260190579707152045014476353193813168715289380838132597179842738854542064339183902073367485289715584943627672587668112192162491400086760878390153498140343600949752356890781346460139220027272654766196351251998753435700609187724419282733374517073505387635776141937057086008339977487598351396266355557385114078610220987097361567756363195532914764004598634407992908600646589647778700597919884751054929681098369460031512377150901578312180257824087931889292083387179002094560172630492173743471238348161722683402811331621904068461649853237649098667186022410987655766907338482317060412259815938817187300402820360378490149991171370482329371650505043884192332467954232225473438096361196485730615702706338896803459544893784510590248023379843299267561024474106199710926586300140256218142748793677805122624858592543944305974549597571554026676016225109087448889480206990407910658105566060532854331549685512672824252906121631110818833232354043403137418311925998804066986754875440423240222092764003746250623404175411263344414954113517360947070716557546634100780648355973690014553189027477234402720353402501541699079073208241754265407813302554719501911786154879576504690648777330790234360752380718909924776795870591070461878764685781345393089291677007084060723076292423331888969906994889802559722805557544432185305096822014262735051471669354024897723343139333199330147964590265703488059466191857192410897868609291384108526636429139154008874646743040881795937998168293882623621583556584500036772108578773075747899050834512563302362032542587715210166387236382275419681547020073143476402676839032589356933008399060939093631291937107000000043323532799137849647405096232083364392703455257640562906669605316805575467472071569944146598547468221559924113348400144610716847685364347467929073894879899123491301645104075537984420168183636199226629624957989433534137128744185230344994592856898029628268331117744171243766865397230810342464227680605486409079213386036803957679866952104779315664126405241076356017313310476722815126991777729855840510871727519397893209033487330193378894526790670497601404262388611693537246084432220039998668497909914891728825779959838738394310285580938434539221810042937887451215631212371491462951157863268559393019049906492412696634901678674798328369463166268199126370427527431576741235550771195727247585539256417952853329478914515539806021976444112084626581019338193239617668568672517993467174255845823702683834750228698628538106052353376750716489661771727612994518487692989696065706319916267876683157185246663635313221904866416368381426519462074273529104434353847460205734702566140847713395645548499357551950806690743433954202058581687009317012817649884159064284249335591683480037524895848927954651846952405664224327697084573143825212146169786019851375852570935645324673501437526819689862546523710166522763874255457046134768878318504847569562740775920029079242062671507739909787305724552670012633097279820790400444955953186180036141498111027556284782611831968632960254971585279229009517389124640521071182508552930150093115185298823230740659868195268121798981841121508518238922062146832778512233130516701388382270437021078314304384358232872632935033731255504313450018207186652992855974803423357233611324893304082721355054709451741004386686923054310723261481499154665026674935888222845457736324171023246366147102994195305848085588996476494973007973902151008585594112156233214360569556745482837925015827621067498561246812344514749188513286706401554080345967322077722072126008109427433431070325726521163012868148649582784383995723396360310319509595957738338411942892357400728388524308685812413893999404967999249813865349937751377717926369301101787921984260122186159989136656801540380770978320766045936205592959488163833618604355519117056970124007977963289037930079739906574432060855963578944486246793175242282673514112660912407087562188397053739993885193130818225601480302627529684348527769410385079008546741019828845532655444621234451156249631617457720152180989156738006670404506338571918208165921758803413253593685587469101580701192606017766650438994704981870117413061535622136601016979952697317238276873256779729419028069631432675219491767318800339045855442030264560075159056776340091166641523596359578961807101748144945138318607039052076486075699577782685718970588115246184745849474239861848227033647872319200256588719967644217877454602724612457063846122996574940120482768446762101146242787977449369937867250832112867230692912468970042855717280755106531667961937332446742078258774278002352847604203619178315262206430766732415004556722421674647346648829974839968356832918027747760706008251337997576672550889603071310089578634747901944072670071985016123486885045817879153495396347705516599056944513760289619758242073133217108261158438678792867348399912643882264938522086425924074531699941057823129668543509614970599670225949760759593973290456515031451150061095408009491932533974765354150005121720734711745252878859000575558573436139695813170049848899622852245653141171375285116196880631468001421360473881187149476805269342296424485310215470494796178401944348619754324798206578015187379609260920882768561974442771209643829629212007051116346637625763873106848673476948458383017883010996340518563860345530523780019175023658557801658436627673907676975971882109751635784820139654624656191522441490775749907596367211611579452627181067685977845460985237049896675479606151704752856005151770161591738112961723993454693092539303522485285732895462643804740701516376964927670122135657823916458074535855817547513841507607015010962514867231406668733574660708546812140757605323461188423370665178218323843285796646737709047020502755313516962625148241570458025214707284812497971943815765595261077725596928727447148413360293693704268976245064190940961850889245136042407154085469838297857292187347035492359540055492227822512458140269037567546119976309595685267059328503097802601274596051953728897555043442182432638912118214086596792857025735173692744450906559633901069848611000152694981799908562674080212673483483714535683816021391478836663467848746594481778215255545090822995407416235269774848665232107297962031453869358953402040347982467139283098108055610285820589613275368865515242210501491361858362122708451547647239066214844062386833772040444917284525202881555120247439897055373293814403955325754500816079489668326796664509455821614956472480002144936394671934338050270783459361214210050599756870439116283220868124998006625761895550396584389321270476762755086709308051601531689562716830791751872883137993455070471233464948461931211369790177531373113631239997994291418256714478265196669753238257830553539691807842745455955136875773828554605336260805640377757640862870194935776092004134130289520896834858656317913097532957724133151945092000859020920237096913664009534675855229755344172129957141641791984538395100720317980525185769142781585509930975604069100811643163009360481907738801078884830886276286316858755498443168347068032348883021378746194698784811802339515331441830238719175466597762050420975691354490653471436861965025398816127746666639354864324232964949049300538005293308845940271700888627199662903120034287206034687813252949705816491402178398645719387809539644872118409461401883654312922279080211009210189799876128819902719937084606802972639337531957278291820852311932551591955350790335928152884811433450537315845604917323956883583239480347219971438941586085711934485815121967398164101784083619826265891401802416571741345090544188799381856839432343498457496360597455526238460117589115787753968612657150077978004530794321967803330389249425352563744925321708518378671586645666604614530902858059020840074105043307623670946950043194604176031013849727052783428735689851667778432798381033674827978887751236650974118849759189503239625343304532523005839417475498961072873029640889256489519703706344292253527801297251124450502273288023521577486079679697498402526688946738210589004011833446500132651961861200853340654900269802660034733678942996167533210265105504648979731317667399933165040919109758988751189548962159739945527299915654716346246041095050960741515495587998776985363865506374140224005340645853795347072152325663672271845064723399857372941894460100333264447275387920605177410030429482678126703784114018103844023345892034742213333395468046660012665242882251447818527188389084106839211601891516465629590896364692175169015105701572123182161899801710734441225139364024469426754491100056297212476895075865513734972712990677136692220035091504362225897411284355159962673082264518469172649285965322881981348609178818294743174542244219819932183490365756919330710479957613508601495497295676950329757448944977362883166111823279769434700959568955927643656859063742327008267599164937006804048910677286568538933031439840564237461535941197796390759052457284051017778672694027120426633268111056448896881308374127555545225553090822535510692077989067554686838662757792829768851773704480230259292642841141429771977100764471997993102274545765814837384547498350869645999651843659166200886176115555346289903469340446739207010577645167542297460407137062960215028382415884570633157792532691792641314278905490923087079766067798937780659109451731519734592939579025164926515523248807352103381305168229367358321432773551392789398713507962778942820119469523225162863178680183911570348027961700553229115316563272964376101119188825605514991804081027954389921141273219285131032169547368944389824308436381941175515798111830481000043636844809228835704445068305252750582078049987152297826581119584963878880864201441342341314647264252390676175707582693479476352854352886370525502607349886832362596404647139600857534060227964743860211405500060294329186630176879724051222152101141867575359408008501674175606199047463432213378831599134528934108281929480497040842200684432006775368915613194065693056672838195707429303679749464784054705434213357415294902116744802057352193718342238545126703326661042546563491168121691269341550977021406438785288342043569889077634089317033122541296230748114388665029044499469546397108299753200706114193470635536895967048169021873576306364846257373205822028138269759764442484817509279075026743603019509097159849066563284407999202539936119877761212471543147933987133791650432393675308321559611393751092509456575599446737432047081189236910050329727334141146991725988700140584975269036834508080148636316737184199462112708124889925362377529178344014590919552819769657577672702978011641143673156015114065926314546589192090878523676668017033871729579063980669673546335286849239147941679867288782496042348838505520661208416542384402601836938516863582808398758530009389050063886699985783925267497452701039388970042411071173551559121683897134217799905956381777617760035612136975496448360169358472611166991247066660361258257792717955895802886807621142240955311727190733860080248699104145339409596193747533219052958194006816842395395133815227958447183027408201887154248055155515252489593725880002915429087346780489686173993006485543412786317161927405570384085201230519902078033355645726810161924247926196020315576428292022629241922920330634879366713250236205513546588717366123436426532878032863695637071735051269224304497931038322951508526569846253683590423751042200651378810558188601895181845187598166177418938407685219535673829472096697071612870362277436920342738049215807079089141509386167010651751786772439419974350420945450780317330425760939076658378846814831229353170269675745570687143370733413098798744099031911520221044007327256897909622230050896081391104380973572938318409605238511264413423963577109959485446578175113776603615777667633293449071495602382745493460804765597670064823587149295646560929042625803334777303751883329502685780494009410515987822344496036156411290474009548223625232450188758230491801781290987433426377664288677071271225318178134265723090953908487368210301890173799337794414289839164334384499838476694064042562380923392170814007209797114936223969923288492450317383650369779029731134714434936391643766311336738629884184770965675076449262359336759950385687723231779915621937147640435620959355327348891883061403815008875737737458441613654230046515389312374996035407943181440498220354304355266414125515658969508581407533490313522890987856883087879602650008064327529989955508937331955239874722401238624800305487314538069958888480061378318398494570408743929545890698144755401436645575305635886766888309290821752239252465276109182753977002117165726763101082508643896734872331680782581238479701159334042497390606376542941582331808271248759018721187949059390620081627947668715490802983617888543466920624132979650708704245244736734577571335364024219584348266021595514151130896017976378599765662306270194051912298827281348333359149495872248207397081180112660679500488646194492335713944553578485524340274065812575443967506816413669283541021458439360404721464264498869630723885583385346819805722244341238149657763492548458459521747402931332148061021522859079768700468052335856043104242388423745990751764752080395046941015982884875151539581000878641435603583824562615084914225729901628394177372130985466208762313918008648944381048427957163858317218102829834343833633544901126931143569398807905684970202348964194612275298885061923925145525774876352222523781858372282001957198274173098329010279847291113009852613678253123199322917136025127117154756978089704874006129913373888341731677935563427208491533468982839070555222905600716758864558055015455443368534003989339266991496574749087456141207063618250411241902141164015442390891110956633395370303166431966298954503533779086717784121585666343471909838926386599682823714314774096149220614537617503626682222182615668880281733598355987215201453863347388340090921698878129884976286937514133684565405410347549261471700192037533086493793953508999824708254409983739425082813111045769624535087578645427477116700686622592971553298713236705554924227547844058030634294043977065066654988266829751374105278390824121371044031181008428048205223923243651098135005092948487395324912456217052331950187603567228183420265978222659169332375919592362911152011838702189535847577763714114425190514299564739774757564037598485982927812147173140747827430978393017504243724684098500167685714749941846120533181791178220367836024729909146669128836477415610531307171288054524223649506374655503312084693854015857030163886937766181098823169023181572231477404931598733389102380674704591127778547890467262756173574558080654790642471369332640892203135294330237246272074631760017202872694312963325722611729402358297429077465902624984852437593479190867737167006749083009854670384065327519801302083242691293439616132893416660268947919201637739258769771607084518793369204312869826490193716352930819450570212844033786667236068075375941453964216107149779664323628747272497685794971849040594638565097670630010455310220514277785818284186463200618441748478788591987616681646033755321959251953987293706031605827100615706433378711983560088154239750803537349035070283423517350889381534886372817293834165533055835445256823942303051891255521175486827650886133221071633589921707722114526609240665260264492305806982431844042679579783582551609283040246523428581845720374540737897789979786180180579009825935175015723992444590406056732840128165816199908483281974729283159640149821021618151095300252407271226953926728439712096665201813821962143089789720545389677608391629805852569311950851389264151131224953921752017840922075938093985062781184787646406285721393870539756657767030925030053022461302204093227393963491255643017235236360807076699601286868224950349231983608760919780584266842953210668067889511328397050532424837545546721403509681669483144282692231815703147470176852156718005759125673967988457229048839619145997585270368102435074595029990094324102493737818970275642575407600875588537013441673454455861497898836728065291478392070865090189959309947742444986923526745948057899128034232868017159368271694223700039666236730894705407231009389857561190687139334624948051152611495443371208819706799382667564652218904459544669746954713753183826624347921466724650586905939136598547335012617702607014113794591546834254696563524548343500981096958481191991323022742758572702244370470464413665803392605126994943740602380225661619992335366449312159389272554547255369597536289533017879667844179574297853538262473990737634615419535991688218597561417950967595509116168022993443293531295365421530990278428579503023488689022645550899786226625323338180515144059213727584521215321722089993299184212218054163465777614637889378688685803879328452385390951350548924489120271418100487678768868428228212387228503799518279495595264908243662176970443975028752029355061454695157141184819938299926947437018478957044395662391617808375468649007600370172940115843761412592237460566795143736348519450988859101853660296226210668299394693230720927858276964586740548558363904065214488088226818002415057852903743836014126022876012254536312345404960062753442098036019060443237049994545797682297235099797863438436593216207403158412477892107575374686442179451430350704320791891708254315536860892520182634206456725864813704568320562591782038671811141093425946482688159934297090882997856490197026962532578625837338928755211465291529523683918247460452910194710972484675179153177104097104259910518268539520304289744878391349554947980543388976876106090112798575825073980240911865137171222653996955929253877954855333315507869969643594964229605539468134884245036416894025484737992830203554155653978459691014928198149428959910752989307071317377965664300905553289327994588549850950284644007080706241112418494862133916539297959029131158062514264923394985650739154621700845808120916284537924609624030443114218948985698358239949762635499673659005627824880546112922811671183977198549908295009183673236341667156736650377361061056737332063403410177715559814144656394550604447538215779823278536104712565326761405690441339115296210030702222989203489845948281369398678770779363415632864910236794328437692624022552548328392842615492736782204301768665965365930746241254165608754964908497067499545759985298460945344650446835792542841082131510112938961881927693248231120221756864036707731726487325938077272576650743798183544800139162905157445216386915371613768879264078891644381253089581539609558090983181521395649500355526541811118635730569046931361684921810261207373485062516626873625896376115969793729107031511621422445382850451172374270682693053568648031104008891817274572963359437128249991844891468313131004074851541435190896882353764875480896554449408432067645595533709041759932190996007431454089967656531249566609171679862639011907239936167049017771581006836981063193553563613522749187290893357797646951653930745484252566662895227296365515537656517639786730623586151975310765480540289532531601949395336304927562830700960037825411985561643821347883034995939999815320371904489018486314948455952559263146409710068471713259502647267478001977847611896061825935753950424233795977832748562746151379388667659849662204204370582406208836832264614999774576849343391530101628342373099807709619251009982948420174200692400576186926512032915961194241973580587141742017725523177905799155980685544702998175691236820149021743148908860959473955326805004843786317283255788228027783973963775307044681831745418957729607897287660450576165731690039127804414511168095180765758455897687743007250305015608713824106966239837615772559788333446260389735144551194566097856159222619045281993121036130544888850748533209105902290817972040683491743672438537427407555076754103740470470519996488106893988963679893402926779777315510136748292964498716616387480928391333727613516511458687653975670170800714203116160576633121381876444223289818335512535646590900478008372238152919598466400554972447258395277820369798167170321756327919408066285581702239995204777287480387161536727459448442509762680258106041535327214632697312513497219121039425133532472242095253942361432227842877340347922588175651734262339738440446492272637919578131157514237627203984698773116783796765212222546280365874311759355831644675241116934493294688108999510961605213084570721687715849450396639049106141887860856148954550750471455629931627105000620532269066137825781316017603220973433261333991034567108467510498624962642488699169465874363399488868154638948242465984577292633553735556852420099382096738662832127104872725881996505036610995572650123609241043781086883738614012464955179446535377004978611118562176293167638027449612637695085975726247778121052711332364566219200112876185845464416120363602708440087210524126961712756204182189211477418943839212507448032291316566737926226650207942465800405168687099249273393069060646360798873617365864441322829730079901581793477840461467290903920089953743513557150545457465001493281676469801544541444627173505187869563691796834575745981341826378231855942604285683577230974772727095310465725871392788376171498988325165587658459242478209763818343931715246275249033847544355256625769712507232847344158590312425822454135201105768865080501413412277647350979797597165322409320114702032426981288520271353130012171484594553991124856728942246176555811779216453894275972582641573921036716718553318429096852951098778309232081644343337035691135410384601765183315931601762146264393426528312050751636769212945201832547953844492774251628393141343106226795356284876139469403273284444586014152400694986734961594079272858809061960949904448174959103909564433761703907276125412354892775335876415272646526126192989549857858930065881045254576136386486138517438556555308338685607210816131204906145887848650892144421256413442786428159719389978047391109134257790046140655520758094636923303925473166438103154754510983147606737926330885845999568999353851276202586739695128035976057952375907156376600975164048300965313860942704588148212587962879654957903805340177854247259711308541551603503567837780970461451995771047865665783511661730311276567901518165972850520986636796137347177492175264790310493561351654339295597668712467832251955744640272444007155359474048804304065788982945928352532307632627576930665303670890426050955025688528627309916477125616012512925234970728304675990574496468777227069085170298364495254489068034897491392933909636369331527636742699013284766902371352506091776350995292002731244023865757006858780469293597018620342571723772179977093125789699475496105523743724832176529540068144093345882387953940656084217900519955099464578748726508611651485516665622261135808230656113185935758123090731435124996047414425279597354359574378856570913306377601759010157157490619551740940998388274502844305091669547119876233489292751989516078837544062423667004292912251992330172087279616497346882233046859736081564275972335625958254887035338484716664189318473872485695845339136606272315059741608927734938768821670382249825317380542046557829438761966527834167384855716224439462405323266438326536377961771823507569459750423103138290848070089339750740358977330113970497456562209782789816756431729085281442325129945131381329920983439892601873489278892739994343671536564003094063601168102358102060511646184488836555280866265439572865577916493719868641514516664261116535122724396782278955528978764063014169535540654859120299172230842177436210545014476071475600058330214022044195137271228882609806962913480150447375885450575324750279251402851061941914287093134507336790423199888450218824466412490267199774666086468918833734387337497335144015840693004008549890781493464193192460097751739334161380017888359443004786038046374825235310856409598367802175188078401652900630883502414596986630872311085261238505708931003788068325087199867279768495262956883650359670743609352716895125122349956601558456299500231541599105539315180746997839621279353395686142155700423447977269222089468138684489318419154262504409821198761325705465328527695537157420782082354078175035903462010430134986159387812646272750962009925857083492829567970790332465325289206689049063764087436241829439763284627544144883357167770069639466367471860398862788075053410539365200406384307372970511564096399841314435051459484946899992507044444836354985269418541366246616097379154763081470481918007310765539689731840724466167823996718641044946480569623102013135147003272739284086213587006083417239308558779132947952435879189833909533561483821067431049890268359556509392353401539333788301678145208658937272723188794578112686709909491108016192828130703303524780820687044001344046854958188080136806595303293237463476504011920463204562731540166037081435695648333493988584792808470211132901764592133330530980096778425332932212735837577215893864016217901368345444882023496497506785629435246203379531538457462340173890359032774939687844147198184957025212849427638320378720167398909916718917724985900920192030214246493573397230398365110417352778733527631095124650992710118667623539554692566783429394136221716928121159143717386855853984409631021985053790618629812165917024946228153251349408767853192940114553370189242241369551007994010028856078603666746043453656590118761983375709654169884658816846754918144899815282484040063735003947309015844941305847294632029009712335365639096408778574091927109550299652681981479767150215206743081866358869114610816772333138477417708074433283279303532825808874057642839515755856791048739006988848065926839028819778433988669939558066650036824490486884666934262276513630175045822348774690095228540301868104997197326328212569850060274724529767914857676420841256961349265084840795236300841400994212367633572991161913691050780025455347823394988202788101768864502813390202856859126972599856839543990159365234030538827346354126800097285185924007284964690706128142631879645458992663766048427439769100788649351932617465546902567125707865370814068813860587244367746419075848390538678832569432671471062986454254204755506074801888029161552920066319891531957945773273477214975812022453730709392776469844678661783580960787047698418293376308118134867752848112612486402593064704496634807094220104296663754040709636340404817455410880891536467187831977983640996849951650389805873899168181319390054320789631028913388232046260307268390249991322854583613804193446810865918674501358892715568404694072865540886401726893184784714501860380117604550931574048136798023258513596201002070068810852653249151000051456727886861808962487581377647552163976398924881561622659417081146106665646072744668498044426052522804636851043773834785399184804744620318835737108437901882030516095623037578335280017150548691261342926746197516595593226496924022045173580598481046504353473187019615999528239277638114058438415735028254220037867803763085393466530484468108461280119649653140359265924176687880191882252356096667279055875924399802049955390469540917907333623282921659561338713671919571784854447264751582461161121608220632552535539574811239491907977080055351867435082725503419467499187011802283659752233542349669207811280081047966667824818523441274660618920625130919101015888482026053951969439894711895548441586107366790258898741612638693297959237922447608589158095992135723952461923994687823650465896764883667052137155194576002906847524103760645387180490146865124538922972372819826875923731390254431637342915817358546048808767134126047097505431381328118991195760134187889545091844395783645096128280496313025953970498006602276712809536127205652543720418045709969402565206329936420465311999349099261495766939883753463147455929093001269063984253071712863023553747896664603639453734132845027589712104259060427174009223665700657893713650553018587778453891754253151543028835750947685193000377825566600933648482508779760768199662372049766387638985631992100720003474151721375703211133912952407983355924232680111677587187241552829353741946423917448296404338549819202048685814597880693735805572741960307139515943152276365487150482922514045581253293812970267225644349179074560531877646062461313500613224648092931335926366379056886844623491593907009953911828052093623916145953431995773150699039217050325951921320241782503621522257361377451082489605564890402097866814491505081488150019983296575499211151451554027366425864934924114301930078755148355932268605394003602081353485970925801149654213968714040128138987924299507789192344817388231539104117379617054404077042219865132840948934920651343894411168095993753287475595036673571212995962900134686846347787877484062299240326083529798662229832353356661104190733708040289237334415143318464007457016765783370725688178760684007631997290723697308539152704845065598303686071945621892934023531809446634995403272958391058435649685487542623361855343322082521933633876027950702259029069185899906864695622617535870612593631958372152800863964775616329570345552185613467025464216600056930056849030169878244758163240995914072907600096163507820815348734058513665059114508068178367617804243332753749239571295040855080590873111579164335770288383740923440579367884707497712423043388562508100574697765074001', -); -test( - macro, - '717897987691852588770249', - 5678, - '52992561458966917842048333229403244806917799627848421877881735070477262881098520765035249624964340882038688516377409835187369665592703958080735736766945912536313709777389461793817187662953548213601180992839097018162700540199444811234129652849225410276267930982552729151588039493817422762367215695837880393501083343614940195379176805915010804690716402053261575165097342342740863670719437568773682027047862479103787981449864557595411550480691451690239227939258640148661525627569354056573032574365819474479753874049318092332197860174730296445988139873008708564407683788184545625049358109338930604072043506368501486476015294370204931967091112231708457059830732539826223797283205277978138098770871113585235612923319080860928191126542635460138797782729492896291235430456696065935768220494159845006073392139110350323314505384289055017134916876163400462621881373937156047111273516233295024171469513762593244072341275620852077848874899582624269495895402815765777547424606219477655639449216632626280672365511304216574465048481409555551898153578798780997838187598030296504499299634026846370222734083675507056188173301287819190008251323703160735842279757966250463716342218905187576189745969039286653568566712245083192424309450098888181155360995569923237384829100088794333552637537227162177479701619093609870600007097257152299648831715938521942096231520452892461541884420652580871321292450318548928985510277252222535133365388202103209163165539197901552072608710284236732915850819518113234646115533291363606803403675185089565146698511010652775061073223214261491866092146057590474879116664838288380912194992229955697790523281474198511681898554287250127257584177956384808694445714111240128709963424475982531545945446204678284012510035965008794769324049843450109531060002528540713991395046933182699881232634176242677648962206607631738502280973898290005462656772264590786129579181328545465308696435762205327818322165386961509403474972525469518547542068305372202808432048462319049469153118249646785678722142597199696100956128198604501655682922926268156814400446792306656470188135722009834179368221149303323894575881803165080171867765138413350984666824885942458943042705023835971675031330773162756179573615771369921528023990741381103617964140627847781113773752668975380722356219881474606884340999916287255829002765995657643610750292167091336372823055491725335254964911991918866523018470993631691434109295300263601212125887194770564215757107756618621927605011672982388667069376436126257785256735035080395442838012293011886480858182971214107329249888540878170831338663664497081571648293369670697492303978168090750719696674347255594774732019346186950722015778265861706529434650218922964570378758677250144083322218433388621419998372158607084870550629095764769864396578302522198678754554607834625544465903300910375218946617943281021263817868702534903565965515996857490410905151194367951674404671401634726316031502775424938708095480058006939655833612970659151929020021108105677362480187576212239598103259569657352323481949129023622185672875961306339733885857708982104417776147428446169851035372923120375171782152648094932708525562623063044339202972582525453779487351603066880013958145443211731768489287736596200008852460116803737486674746320357688425959700168747470090109849460232048475582033235140686903423628462653109627172118888613705624945389644912331260448674882803772456442287538433120812454253132443354729068891796527676701606716457913622114298779919239138678095658602599035272101050540631199171079787674726148712746094500511958909309383648848324958153313684693020237870128517588375127269029825997693115614438073154312047924340357482412336581044347428383345931096734448615207346214924813291025243318597445591410601657643923497289883965796840775243249869681469920755474682727417587202159996646531840273727959008935890037688256043389201553466973472089962210203795891910446649680901883560841094031991763415446185012636385884139521383390919645656949585657311438685339885917614078799309904047978363483036838818577158746493373606130783588041171423001575976326332942068212106971788178296357879590268289870554895714998398477383074091612380803534549439364991095989289183083877933651758973534265032552397343750530201088858666516716202042806877592785968359618297523122663345711107589355569471982996246008945010788125903082708965247233856493295495884971617005159683177020951059046089360849718770603433176136962787644988761679786793574894146198596283619577589492917433648008790154607904592377489003959969338300144125428308936896784361334723137983098924994947562038207668868190447389976840741447171621269619747614678405424544476952607756858007392925674149003932269670585532289548230838340609191813200074864347826444440499651323577336653937195827618989214774650052553204749548153719625554328240930029474674929792915810450109353297164695948404332144143911830336116561122587580838323433271508758381427202886466864203006769876629040113309536126898286439306875888068434906684986109839807912211044229574073513385256008653277622489509139402265793326372569157760069106457217990235011506430988742050031863394618171218562494463476850191629255740324446363242993320648668718706796758945218459365076583628726166585648610786131608405727805072734696605117814467304269584486848714577856278821187639674139091420868276683680482402061170964129020179849417226407523345979683703744990934601753619379872634811616761518185857620947821097797023780246814812679446740501132957939033231020697754175111520932341860938863741889626558269454453009814222388294592392173794599397585978687451892813356296473121549635013676249164244665043044957101593039072361182135678926932958876432422873012810178205318591023576753916592920079031115341838800740563121977641772239560122596720253059357199257880604788460448454541912874334474110048318114397597184518307140986163690693584548192536813827180198436161154497288570678489493883807773676094581689577716104059811574599177659911227887188217401978474514757553745261264218832355099235158560242297233406180137292308698109610071281861640728221129462482399191931254988997403297870669677165754913546299432301037504530872073067858354779137558761312187986108590108671713663509463849235645441069025317032282653619885664511756487047824929057588473863132476505639554060087119089853326292527491890156165208813193528270287317866931952302862861082174087615226626147432099575255480389022327072418068332438673738233637882790315683455450464590709105784350178739780127964769969011026088597219619472341103459382289201174496483005244865985320414773065969458214373055466663167449827644842719260068316989039810368349530823214414315840300587086860582920441160086337872788129994593466901398749881456816893076117420457023093235142704769500472838381750950452685686468352355934718793080770041896266326591193598230038726258131382339638465090689033062834104050137121528398579502285618016610064410178458485780348478662846002089852720537701136965653853259363332024728436379986256649234691293765971251875100216741285408346246009343410757983483597963489740851123818712786795291798837714819930591978286010640687992692756495314962784887224591285887831740631885066445063662149099404455330521550962587381135521874864351037529468684827186997370955447481995887639571571525702373403403761671748587109161571183805369675426792116895119621582920253789699657615500011890976403807282199844302806272514657032217062946033211042074109494896045803992953473587506222506781346147810525891832442558813747914920938494195556975736956239077078403047716108873401240720217398379985768790248880164667538691286461771920136462983631359473029704858507306794650707316446091278308009089124701630706210560168792994743974642056525288870381921514176601924996181921908722977903765494032218635205563065562888264623205077967964252752702442201464476030020851153648989654374063092609825139716406169830702732441666788603492696815334157061439959989046789065423318960712201089688946540796678378497252260148940700296093007934347669870770800342086190913566676064617891161093655936605836899446861184700094847166382869925437304928565010472625277681782787551544062045311275114543518096882812611825710549053207666530027825046311534181156975603474991929909024388711945463808425263464957653237271591373069179547100808683091655216330416092310214397175383390044315163696300849781070219134615015219064302516596226701912265613020932966925428815092790344445459519486710818501491744578229686083894654498423852571127489975219254353172438337650602238280223597768220243105815348527252142824365262184240072688609964102457657199429178311502128276669149947703560777240739423309436247534508874804401314162274740915591635435183346939875420896409168143366133287003880010386186641170364265028042141513465453408101841921842528837600797310807883817569665409313593668849776576983790985321325237847569765650823790815463692017963395752927945155773792906513914253930342695948572439951274479143533256050317996678589637630517043566370062714774155238038673228364852986154012293796986173903941816772421914136811088242656279247112124439226958945034478877984596864873339798554814421219750181744221681578059062457004925780474249073437168128231790400216332672320703915847426463055894401088311795843457416623717000078714687159781995749578194250354449880164141903126715398601118555657753088212238422071158309996360998060316430904776007237664213238747361809842176066931627956726802459178808505394046664002938285314488362839317461527679372532822934704704470253690263875879702240062788026418261529389183596155698524599722228817999108140672748144745689714554812265041175714545225389990781353970530998752805250297945973556929670870774946985404265424068777800150897438843100570165412465536409965604362377295700424297999045416603027704210682281919437502308628718607989662408388051610908664802514940396058178295301888644151245892936386802507105326053427738255325180381762764389027620113283759653480743839809992357496074117200755535328327778239627950809058337055235742086687019858930046083297050726069315089882694837254737886800564117843966144822575643639731768343937069600705061564770014386059309401600994691145418984296800446891914436526504588487235668560512126375658106759961423238985938919327850368124270203404746108520903433047821070462173699752058768991623911437121303926263567247275258743101051399711951304774969904872170431870967998534905416515742768485058006433022048620528364549739197129869684349063800961670793383545725472346808561542828191153302612521938569967207547584404136442698715207952729855421979521420559878331433668100753209636435675712543276009510142074799136997641192447567079334735530723873493925022491212344710076896739154338361999719913499831623432329457641993249784570344228676317925346610689759322653659928903365020471696174639950909615303515965200146660518282411647170608800939660621685552950249611706475325198479518423077155301209371280575534360462938867984963297040183736104969929190183531952577283379234782953108926401989267488044466794228043770347285979888837421775091151607628072534183685174245345816369526145717126891495096063726823540297588186575358585981265343937095373338996442251138594460569709569806492449609367188654079820152455364920624125030761646597005088999711445807387895998396475835641806955712083403146532371590752368935420985233735695950492134965346564198873831201899225738635547303457400703163201429850285547082772143821844313238723456259228759115534200528631507109400219431734564426566942208047195491924187286616903223592310617985108600082628611087567285767001840566153820546701939593194433998024938689773662808625697973543664837705457336677737765607746286815865891347597385126417092248398027369133671804532615511954414419259304523253807140857494548560843072982788068686101289767274829556337961469578050554176149354133487258534215364379154660461310427570189912699705529950514413147328168458631103249872388038937376864265012237965847164952284836681545396080247290559401291604967701175723121502236181093388323626875423056619719092568232717945805103108385877791944344245670750247392343384296108323807858305055418400741553693700502565024106126585636797090774279356316370509236531508263353733878156923208632989404619022265962263865918260332262005803614050713268964027332085964017902372988449905870060050221522451244273428597501098201640739856281753377806262510621286335117441922221183997764738785835690806964058090618523209727153455617620262903964419882379089412045613968114570967614290250244897455062121766814873521607883867929237291112681395681208806316115052463955424369530957702703335301336133507196464013784297392355963686577412082487656646900727164897539211910515592015131790757084187802478999731058868779493827694303480414208944059771372285831516411891131036856120211199256880755033121745020506905940385581282403448035169726911436826243069847201133079363947969342361067328363441956715292529385906162072082866885762473853872136917177105248829462003088491198093528321254844293731158494353309329359943621539173472646030822664165537362617032785562181639419716789150739604369299294852110605262082459555983084488041202822751327819978152651961662242916641572040409255879415966668785223872853617095739101441693844227787889967257101619837706529517298805962370005920305999407921230127760675120172113782634335023130691310728800481538764425860624015422603351785485421993634219805565282967254634644843789616543323341653341146495092459321686531162492849751882105121323719768549112911144880654693888232614646653956763580397332567522797083319499426431434148243989859609258432804222067142397999063441042035277929314828603521084355742771233471852499158339778603981017500121847933601889420815095445410655577708991650898864592139988828909325847690688265292963327637387564935819554712076627813142907683346250203958929989323689935059457421263112380235019472983111424135581186825910973214910699149667710959563181536691099143613233601161732666745012245211307688622118221683809456064734882630698593204467656990257941572412614139802715394281994293120883156362501711873082011731962032490574884682131178885924065895059613017568119400856466320056952350332528728576467215637026738604714597593759418177681274482897193349099377791845071840865476390482509958300517175834887188010180465835340333367167368967646066303894894949259012937252758312734808329709232360933894530979086189948266744307651572635781288044544893571461370440118431167905294073527312254045244808871450613885567599305888413740007585647252065620950569327491405356998305146429471623136661921767554001049077582559141269075807726942292324962879195004849835063558899374919319497877100701211206496709025329275359077524423372451805882088092879051313263439053059246113586757853983808973560033255079821096458791208111949975520419973969738539460358523519982416915144979569986992658895580772468544281855421641228395656106360926287526507440986113241371749929933626943002948875469110027470912266294656790428857661799285796092963253692751518091473958954584426686863281912392953724819538676197544419608647219428371546066604565530829571887668487791705473466987941636508397417037367030291035726974209122929822977256282776129310660064280234827050717329256768834139633843952427070535536323343517859928713869623513480175609016408364304241592622958594443056559986989106563619631715224662514109451710877519669377700137922914878226108875076080968720985553774478319079858681651339801277697214672775772710298769965771899451131005224958432124257866462047576738776398467445567954900257927297206412032651048753538257470550748950042956467383856098326990699095531754983730997777376855850204059808381527746257418211558497066091371508074576455448794073221457106194028764995140574406949894779285509688637508122002763143590113564857465357157613251821223444359965532981305922833468097064802147367022534931051008695237039566704201353988540866088741667038552935423161581934287462404348346959712557410094417500120546248110357270320222372208679677188804508939856387875484398668973720610306440393165985553874361652311139176073072642232364301455756578533325673397255829115802632064375030488532724282480941523096056375612516691335273199076868478063949077979981834693199226789642526467313758886727034664155374708233413052241176017997770755357925454917422006910044558649830410441042783912087181440912216816911418077643846400706686847762348581058766312240711484387486718123588654129529313123730637305855816034535443508751239517641963906747738873083589048844951039924094554710311263734798500241327075231542378920749258310205825922008644493121370590192760015148501273427214461014155067372554805948839297269789248975606338557054691632614937241901458805041012227038978979812168094150773239740200926858206670986309560725257896194349092782159293694188307081347049188661030610107456715733073715420873434056971119630761658470234370438116245797515154771525887334083368102698399109278569996061959700658346646955565093203139925211068688479012109279872461395639869548120204532938913593022473786111209373901721432107297071448742770742412159279076830118439645403061943303917551223288001014702113659615663577592748103708841776873178445568235386839518530066675979433748005530615064885650866749177914061788524262808081456736332733040493983863214714692393115801670972860894965741349096171975727706157112301169070137414347667759125039407153467452265210719726714985635420293189470049637210766042254751512445609291095350283495503549502917353512206358756772848829158151755615008365723008445582823523075844725615067686956618810366284960890688672135540705475984841760373827462101875128799270857413282580082072800739904057148821354442778410810970050701431502851594089320392059591004827037030949407048303186582849254894900004175510461919883551638536839489510245449220044773071872011316439740663014720019722095387628672305811492191697738078092246616407460689410223935009608878423391167281114435298028095665936771603627090834937282850979762786426899134362341889415374040340896380252725754909908018401107333556100522040895675585460969780799009744922983914153517048037312468584877909733205649413029335540211297879068656419387807383048842494215387689331649844934805491180381285929557990551329032335758734597115389529509449814729908343459195813101027114347572133759851590325554983005153111501432758813072569701126690781490951740575825405497526335840722010023321789428374242548378889836216282253171286247053640123351326348638420215428018887341486150219038345363430704186782773219435948195386840643853198799818242098668338179745226151996534978279230096399308636037991368814207217507069935928147009785676785160027497317009001777550195024132691150567507011354412329032340603521157466518995650811670602491853174280204852628446269615787322879786482369408633164257134657023953228812362587592950746528121453810577970418765900895068401958324820738606431245080063027400254319882177028368653741793457795068935169938691425211024828792631933230877447721276360612404169065676636411366175986321744222814400246758586497722397143948714428396712767471630538898122410697568130170950184011778819880862316215372642601335542980464853249009026580690749759635033913834129498173805649521698922073038683841857811453879318495594875910979538327284780569733959417673964124812143583018523970514641401891081019284489763221082086325354879697385907787761049442665031058490028534622149846137905767487116029644971254430227080575349336243717394801443483839458265798732710051462772605466482812641037899172879970734427748668316293777647496909333662168116654868712457269032630974156741200422999141171874097340818602076458352626593605494845936264195396202806647904404677157734745652872270210704027405978135714048673747336292778720101960923698684395527092073172044177213818544969591585627238532808299570223371536372799012875224234778370905326852914976423861886454350497565400489482872955448045615907842220173649212448684979945647349079756570932865476086046458864652043811750235877344393220429343034415180297212581588145608747445493372426999318493938150343775786331056194752510426503166230913186538526760445807413799806204051029905931303093836872257279463684631738363832006044614840509662858475110814261755496445327276173263161251358809092006580985277059802629992110919876640778599238851224190806234298093499859897877945279235571464696627205637879325947667945367188005248720580469836926696939939415121732586533901411675573681854304269524168392617282088535658385037701299391440541334384518081022468387518749703363096233963804922423094068395126707285054702218861778016173542392815212283678372323848563282862826760297013819812339131493327915541965803998097384090951244169643369018641096219195430772492922432677413755019687006516340030964660067215342977430274756427296622985672207880091256161463966745535322513359262081324439248033434926360421216544044746832762555450035219016309931057323669695525075977196214861598745789848117118689974917406963326147153664733948922010644259043986576126492884735748201429479293157327397169116086340829373474447532461009810536262731597451754627874681161347317493618449699664690398390949643587566379695090443777568885944452505841199312483422475407319328641366974092114345516068535284073079980141067468263817385977308228962318323609469322490263507101669512786080642752319574742157425134152748843756299008728152305538809501024125010339213159780735824709099108882350824446352596024291069384003047531175618027373859127640704478972526885889432610483189753615050833681837753536005311543749368107499347315534545941713644730273702333948596900145557971505509367959108594407502948243020888234056853650963187076323765146652614211207546354464881645918117204811380635728429776867963381852884230518246631190131825530206787122927542913920281579736988824992521073962274953252144927376468933425658712672597384028057932228407070530265731165980966598601076506604289064934821557949717410539761505040873308406110474412692271216992858783788017692940669126619626790274625702146919817133167454141020585503777417647004018422961010432475942591656281157554753543866527442721860074055221343919493702427083052905183704806054896861313080853192781874338774353472175893928663360488609634784890485560515252214309637081204987618424027884591397424067625820413547165571090593288097729180898304860943714385424978418160835850877717027658521907629768814727424695191227358428401962885565649381238098204936255938797308193040643227676416950981533713051600283871175312807406414172316740879617172963584690587789848239482341701897688268557616992035582225306531638164023604262595670103263609695362798739463036593927714273709560324792380672245014432684528132529510597382659551239028729153767533108869546101650464606517031212471681999067256252173869702628620955732415793090541749027540473718940312552425322149119344958406002437705982398992267252296771928467559404038212669370252790729353944780711661881552113249584403769083480856475063987837244029373948596829428019040641426569984762280646821052726889241697080032561970596779105934595957656757479131467410030344286211442477923310898646446342650046369081113562118381113974544065289731235914381813526415129034466320886690781519982064571162447720218016309577515552126698701486349767343461948090842618080712299219097673966015228424172663889427342731020122066675346414052340618598182609249461329861211149036514914521730088889300616712047373574894553971526437268977130623792336839865094059220733603108966045443149552683777916379609517221061627320405151444134819286421255392382822364134687682168786843209394288411699746863444889434411414485519234492407599434325668997799101520066221602884158226756336984242409440361323534712903377984364440121709955882861088033253565408769726596294534478786779815095706073686709431442168829090896416212535563746063403950198043478906364003836786350526095004964058916984298874819382063723661497266846181942426357905013650755458667314604787157987764491101741899567408074361392569794087507924311908229702294763769391197478812554522186741135262551897352184690374471893073000220162512552332060179402611785987981834888043869118074160633762440696320006275857520907876405364367283599977809702429809327633774811777287837997929063319088643981288504577794563897734368357724456507233435413578168544122187905557510349163877892031860938380863700212457499941173051991635044055263541028899765559085615828388330183855986870987907204189354310066588413218192874980402116441641033329112521433352585269389744561428992772734752313702102338324264613628379476243754122969786509425444725576325781027140066964089023790292891876331352393285001370386695304261889280274262043056322796927733119572711356326685350484589411334123538058781520196877872573359539914258371620972518600167848136853804940166949001046871343046124149316149555200621260500187812862150026333455832936133319251080100944562462138196424435420637124060278270301200807655723626316279314677989720701526760643271100348145148124820564605091911779855169535418882307665289900355017573800822546237397396616805582194694056466899912723329771183008166619132092740342879643527581402206500436271851742975104495236263710329645094452343102310844177958838929699065716898974352408381283451421410089914102753296005962431058406067303947323833242313152680641247938380343115958860199956778403253209323348645070739497071952928327376353617380302386451510499726403590049039220125741769453186556766459550919922603305625386150812873799214104365798370292908598658060494523919882837028108696230018764525326479800889430827403509641329404504108584175416299778457550149516420306914056180810908889377149438217925739822836731498632998974190671944437651733816831832102819701452336948218481443109835371939006988086201718924066189320116586181314358289815550824203560990687366887222969587068618783822844334383574224286655847585666103020816988760101669647856537819653647348642372860462072094399934119806713804526340303858796726062832597308487962786568628209393365116177313500258916696602298504935899488231886983956122931761650910471751605728341369214793135444893690581825560582275170663803345907902656817500959962305071703161844221586272436733043463590790972533783408461905472360665984339275927320721268991984362793905235237928358401214308908599626975869024433459897721710178957512745942114341723971665941816834394308329806825884356070709685761638881841811423881417063972638317949761209293108884169157244310554120522091867059525129565074635172821024753666469843554970503238670636464476697226613787178875812109508162171406085559173637604564435642338746751084270357452547638347056148137732031656248286326291618903398185758507933313960978162364875292581607458217158798787916676003226916398811579605403809873107421485543087852003080885632791018542669430381491298441535109732809291308440227122322919323520142248717203062944396531767516101348669545805257723994808980312479264837725492136882355862941108451810186385271944727323937476421051113190387402775727960536639091788137833258176311969569961943551611853786770670960071652604792541940305956411115347733415222667549394453865233071674925052111317188727005402659672862870124353044134138940763586559553241714723475928344653659170671048092842027797901483049343811224941954463977298856433740106969036666079845988063391903825032855950193013788243789490182350376071702678007109765795706678377357340602031572982332824123773826221420577356000773691991307382149359100536109508425616929397580550980381697733400694828091467008203408893560621735626409474184799062207420684997475127497499271462600004670205579497645152495972389782480775949584706612600406180867943792941868858006175201936307008047616757589672523735789473093905193759863364945186628110590148829061593580057092925835363208545182849585868221368570360897560213869098865474255930740671657540215219483723251702391679084671148858456387364281103663462079699683913175189821329916045361853985054542513239589981629807348515391518514157410480876717317086568995965776721883816029400496479881361209069153709752129572198334892249502748191465310837081561861610032985534309285339681126580547626611304860810381677502832262489332934346926301205586228829998320869739620904253982155600321208706995102261899336727019317570934776614228279624359270351092121785581627705454815208145814747270980169200427592287264446298455337451867154675225312599671885696403119745068812877999940157697775260282173718338630223097905166067171605705202669147542203111329964484204150252769374041699642264247344682780556183768647043088086067328086717187740722470761010716276890826844033820289730485347275758989422619495961781370981845507287224106646612891699787304991489991450237892608587094959507431025121524157532996055387813931382902218941327406937104535120623519125622928074921413343511233341463048114587623180196119633871033128642353961758736942162376474650866446500486254254052378915783117942846877531394483736296707763850427149576406806692201719207270711640436539293214966734241103817572475879693972994529271225318511005262619518630808170022848370992692989178376091827819432746605823278836088860098280229785555789098175025591438486997677754831517943543494195444780421155712600231315338591816992539029327290383750279259408507030866894281949592643856951856970260492648859191372445722757560829643128598473999963495915365217562729260899176033339914368657427490270587754614627221314473523385599772728811860813438436363568535104917622395452899623639754284218650275206353695145264760567105459178562491882032831507849731082780751290549815090526014153248389638366562779197588704003763886554458980922773564631738946671358670002437792609926532640853858166371833689910006342371227521888985462256616595134913448753896321572610914451983732905554764025205460856114907835462908762361867725808829101494129427887010484807824575634192790958596192835856035642229775443466803753619433447559913956011510527564464490362903893004175699539657818550413774129471722988670400259357614877806334270973688298172787849219764510531270431348031231230366988119457069574129982095326123736732280724513806554712464556176030636815599985296475879329526942793809334154537286409720616279737748877805830625972559290659320870467177007699656878854930950374408662534796671508779289654115928497876570228294960433889385643701335793908755514074473749964759488535101951927148371376246782141759279753146527867175256859600371220723263087493647651934107824747038684956089218459994098442077055339542213286639575013424597339692639209982667429839922996745194919443742101455841754629560994904267305390310619195510596711795233359996984129886409644969307626193230100243445176341224116774838302230433293550887983785529668376917774923810049977020766265752226119147869678480128953266773825987624533026602499804124858105127910152228288680919984865137490347059505127939634012785058380116016158201512139929087364709693014634031763687342662706605079791983804043837557045973734575431521833043317763655587404678815578341748648519218701877257148921016285162472607623283323249556573753034374795565710904057626708068152251494257423269988884212986826103841847235290434753139713588793284927733100788323782464581521308771041340355123219181562733669769963813626654980259896667571531426558561083021853772568029181635433012078770849834446674149991209906653073314199262005928322117392615818629566430413616987317922057832297584265671398209566291140412705971275976266486649851786135002249020062965980087138574535447132363958635609925366757622786251073626356537120620726163351028366500669047752276806994698670175421508941444055686927449826465211114309355867990655881671257209904683585254426503206543491199687267119577128778582396178926678946290201534745035364519018795390246746811766723584255073984715970376061829082762752016704470773798620997166862372135899943680412430608608549449361762094538339329299440793971638832722944360033468293012144165093312313114839006029476318874961592758500904627465226488109581697907382066846687530136534632837946481815741937620620154295350284380932563345904144633726510177800611951790431250878298814044606538474701064227373555412349001233072133083235347487459787376279403703807888154514448002202951245397248869293062600560134295500105008538576207064629412523316530627112626565186270777090318018659291403078286535004079092813364057772695524445708298445548622123608796436695854008220295952906804796979613002284502190226292523908476214322919392774132723010892233879221455324852691358984021386299602980995708394090452538155116048679915227979809152112372669411580872195011069091512211098837265014358497390191374862378298332979828589280675262431318918898318225215446376722107524363251975033827569456312898080064881381141772242054225493451609900958323016634712370823083984626439009976816172490877077263224311036942854664827302424290250141379316709351675690520061130683735321311996496187247021962293994184343787870574057794627801215642399757391689423643087425702078241032082171429850853657783936393491748921202257137973536585938902448803265913705675751505623829853836767351048275120136814974429359820277661179090491547020218952518317240856799497902090061811729297871492235273099451994560780849999017077268810932708025581118347013333023449244901948116998051103180964193421409328454794534892399934923614215588057091032039363419930676743779898364001040849687155406279816603303339546771517073573996877517822995705129876831722490952428194724842099930819145094619254525540759400392691443317175946185255495513754986746278892496030387565394365588879946177842768690923727638413659745835806393996818031833024802300235446835796085570745553032228525815450531967652475109305456596317989530038989405999117072923810555284059845086948523349452739911967441605727895585516463617479813514316281381343200540684480647554584918667587044879862223471871709991329936110666394849738825285286263958437079344497666129723469849274424451217808101012327262154782486868475696579972204483320055712556519479118501769492253109282648803982799956007070413969057766641895108542980107519788443327966941933926975271423626274088356029953637857404994029785121788713172223066847502903458085949291823486875993171596694026412513484348659991282842807440540512919421580435830982886747148859097314781713081716943137837514388166635564093209988083853631966764152001236937201021272205337526464980001923248970935051413391014325982735295720169702781387326630373314301750994939700432204266441734849243617137063200743900861763556953331088533375662647974513214949950360582587461449318953013746171392411021921268719401083870455409243782703438717812520258803044022398736843362885510789738025682748439023460396397947226212022325837892155810227799539254487217780142395057860256227526753652355653439544898392544874518721260751136602267606533517775781758994893256983747903520154900084664232199826595227499066488170533660614570516974168882282194703476740231831764399346962406995812197194307712384356275327126581811963829857081764545583491933201665655011341750864389214260118093942175688349922926371415338795911538883608650663492494285079393689588623801351274317524162255546872032205137602055977698588526953067919577657802157230724010580762546282119676770146073279290190567417587379003247680752947289021207629278566655115192835788767007491592173561216460960732338187214850961468821550647703718319006714895171928841330718580062654702438419600965779600185378625085906358134551760230035403561105143710833508540322391028617424456041890440768192600260326521458091222064446938238524580192166531189004653013760970323476986163112729146041847368155310536930201842388100514907989986285028152232579121250243087183900990150304104081116859121286448239243348357354426439332087091013606470363706785376906184268755539296047766065167508797445567080041967876599818349026917276210630616917313061541554664359090008971749776374922888008224470479856127371383520079697079481864438879042548335953589849253380664920899400066389165030020576281747877494368823642902286149859757979430259416772186621524014692936483589683321666232231917198657382422968512537393374246432506459315712945887280161525313402564412785562279688402776014658097920177207595566191984505720566032171980817248093432499471573407422741267535537792190907867772310470192246974486242409294991646564339659296311172821487691415387361518368358002232126427175348186260983285915013630462489800994709039714768490653776139921591148425560513222581914691269099627882433950238366744049435126864696551517102338574990439051014288641107331775276925590557112123848552944123712559927798767656060604001870745831020943534367217710806627918743824819528778901432361132400874522503036881964803363227725213671319249255588338379558944373081448848288914340029381563870874199421074704225053940653263054076372331153673021564933861085136777463657122583608153245145603654759564012552343708794221112376282396672216677067893583529685387362866085958575144207549201885063634649664356022770450599025073193635589697904649689742659731140870664049705909529992131119908451169523625982480852065130458048303330783267873632661502527296193654564481985949017941867590637521370248661759842942985486580506523527905415291993129997589693562083571993824525692390012764335534053818968643292421277387911598443675823895632044862101929611888494601135784807263444029447043613253239718910969875605613576775133853633741165480175557199106843404370509722920321859723309901527892004815816154454240322704330590162893392597841258761159890728628197646144967822207646701728736399384331473403587477868423279416635027533248541770967263778198842567490190381802603584303232553124123738656775047738687142923133780711030685516297965124193566037052352262354539607323266508361484876586175823446779222126520889533051136757982925713629289751952089225590370193731715841445105382621870755409206256938181565226769507387707852521144122034388075830457994525416533663962455970297774911851804521911035459353309532169948020448427333167113803415885128164774439258952605402088109777145211067039266101515402978544740570697381766558881546774239387495303310021282368800400514079555621371851412626774730245176141487171901398964327496365698995566554278753549639947813610318041843322486236707793661756645237618569985152051174050866426218945874684052954853332216442206370490833124972712199887443585954028942543566576436008194402325554516608853398435525073932650524074286205850550540531543625550602818516054893310255606074691613285654709269754001340023163558376144694499945698271995324998769772391227717778525548481765287382012664202138451078614644891981447633443984616961062704113987629899385435093671888725031427992000013446048294556079409188916356329263861385119483041778470111323934672117382552154014552689712635622044067335585091419078549572685722517799853945139066113116557823200991839478980485148139756437276310315585052962711094520823502876017799162004452308825294752903780143322159163359216776682795639765675024359141047188281889450388835463485151185055730257857244956639772765885901407478608833348764219975332660938410968229409406088016572970425472041832771272378171279797797035736576275270098485254500981153781872753941048954786738308270916748413503252625251966120660459010356765817802826429045068657112315950170987790686087303575594630278186797170965451147353365942405760693758157024450678772714436915222715682621542648328393696771847903632197735143219253117775874065572827559278669061592703292357856712182245702829796197056320474383079124060345835424419150979181507698302000007069045583234865337926621992623375749971204642446990777626632490383499047710478578862245179305716165431024544308084192556089479503354600043311566543487429471050399741986074927517309966574629189828300270254631391989455006206141157242311958987861149970781306061082396476609746044799676946433313570016028171027821734752039087742788832856846639871795304172840764319177762201671679871703331176399614205812745806594113056822213610394374595550171039503669220580872124167464169590577829197969856928840564473147431728291951743418213909020891248139717532829309139307324676418134145138999363155157666822088563424974605011214474234561958644068385566981590500191642959522021800166068563481044756233678800379514457696678176805627254751999892080533501886765304008355851853948156310423934798610892860385518158372125742586604990037334390212148772332920836540413171820995316460503362722328438872099507648776358269375088834055987113695732969353422819649914493670628253189886707685826733188098490064699162769196462197178091601033240633742092060902726567598519786428036312494443148817711021658763571536644924743944370048324568741512735789195923635121797799038653592749525637165000255493407622344594232313502271601912269778165783446812278845417457586538145675618091493526724848167114864548061108275777820993568273138069570417876796279053044809083376787522011494624546074909061660691640637286419682093499212330107661282280374851441004473097968359669954161836104289719705649964194654369452812111646977860340985060266188051868138264924697766217093257796481229661635130361603763575209317631745373236794727193007345895568742625048392643535752017720886976385547006530147162370985119567662827452345951611661122285345274467812187128152772828198044470287829483436630828621443834283933061869973426636841662503174938088958731532564136006533111241497517080811026547277241069801619368046197038254330917315025484354794049944205979487352155731523443985515670321446995279071915493012622438463701624086676046991036641665468428667863243481438144104997475129384407937791753089800722213988580814506420181828434464111345849729424096408245260118164415180606108341818909452188841412079787980645835501934806620697807291698253154706727593807361760609508840206608172948784237440941360116633737918646533724288158512019153861656684310632599855068395383404299612799388078946939439804726113661786432879308541638420957312446608450673637732399682300434221464859925923221506390466698969039225502809581860888180763430173987356554433665298962587119505406649522644887130093859157162141940270620429317071422670076888270015287432039353142292463201458311748039953024013036300157681289307831534247803967378524151269240623018079511894898426335179627535676928729840275620799295814291986056942345428344453545269535794124327345707388409443474582974771283667398460633838739913858003572434702047552352950879994724952355013458855725485470732726133558254542140241633844025957105365419313572521406256164016462372080325523482769734126885228449084718164714605387688663314237773503394896942177771487500288657934065953470677148012467516329412866843212947650541393396631386347555804426102036080289255754843634434329602817459750576423199736486570021428392611373877893467131270574799604435726228651959220155729187266319233386485777943988660811844393451428256717646755716254300083904773522205309371240685190676214538753207966844645134821197918259003182495235479846985293701759492154378658914612708682142567444147095497018617281359110902117920725531122469148975703268958203323016883831569236133529003603833362202853118400173131984771412931859271574480640448580883928197270433178482028973090531595725903261739123015610187695736065475604480716148290769317072346477291109395091443012208320879788331725598789382708448112357055474285327626461197894056314208119696290296871946392825764203702558293596084592330063422640815063526516709219894586212199245909945107086110527318146202939164664570138496089256131319667582023030903220338472809679989900075966190134720802260549733743988009810716784814967132808315697037229066016638783617803049541403814297797063504097571959601223859618220236460435365468876273616964977582199141192717139286886479366882946601855885523540939542911001721165181303035250295757804176416487538695267810352135675174637329741832437202038317518501153696331084859275436546896784758870744418504221637131581695470043451607111498383586197039434557677809493753161844551986777183528706928317708570047213682844575429346154967850073774018951110599706445779164048664056208523721691779348621942136050587382152008824636852587867072370504325971481960878918898595254980293982721591693440821999279481942233518649498707717083882102011010920568111932250810913249902342481472764561569756057047564387676395955386968088987048250789547613391325196480282398866643140635374540815498886375692701566620478926327386180090314769809070586546850483645016414930149011180928072625396135675547919261758488905962683028189154974348858839670607559911538799594215181566419664461648293512903197378392772465968575275924040207070331647259700136865792916743805636460060225022009555911506758744722703329764833376608884035244776681807079272059851958248969103955274321981361055653095030882610383596652083951976626946931369787729556364440715932097751242497500001584071338920490837692185167860605115070019549822090122604643634410262326319800746320962802835287034390354111115865790874939042813949509988832911268012219132145696181195882383952958868481795589403551825711445660055304159790661413008365913113607195310961659663716376009165695349750905934408643499052196577976419823962941950712959992212234788580725813670158180525202141811656107580848620353789727923453309609949287741837902512599149154339176262431563817727378679677652789586189907215092360394745291315315178280769752824178866136127120364844360843686570666924377391665188451950415163418019008550860833335991205615992745172384110734413150392823334652249716284396986055940980014856009188306532585605420519999060408247632994088479770891700298117903439944095625163759805013608980060771557434355471774895250923968185127614872473437277089861855286234820208542123288985527978805250685814884921559427896393702833660533784695823628880970072319349073259978716833968468179590572694799891627034479004070759376277217793391752209577997711609243576249426419043330333248714674522314937604818018967788378992728856961524893134453753720792091904689980700491208047979392621587263636601034393317517058140153695430456108047489091988799433658727319727603208464797159018320689274278962431580710268611873345082042650017311093587316737506047072564104601699540422208265285367519250051097876841814985282642872180071842394128862870024131550427158424470800953331106953095712690997421000768047945089087663231635404628237322206056194051230418812268915485268026095537420507465353167347945777910402999486556725081524841236691353551068809229611287678981310879402131425967814033549233559647486789458759659524816156257785428046357885788728798334726449873717622126595441912361442030013584241365584775303418366701542287195829230746483209292971621640713714120962019145289378780969314257595128370406067557489678645404458053687082712789287239312499629853769537574070273969474157449684007131644293612697622540605642045541405898737405461999281923424705046372116343888909788638977762339671372562117660223660695670784812600612056762192717861277640703396725012445752647660972755926419081291679166524667260979795012933256505922882790031660146080407763031478392867425713264775858816101821915969759500481246145397674060323709892952582602767900235601067846724543572473980966420366855192885879180614548283832841466665075996354149725301338358519169323717267254062579184541615446217563552842801325876467818631048968727579042055430766829056006240108948018339677305715364169866474021158726443045415282083577876330771922441471903310208177751083536690365995902758865071635759854772834694926455251271950341529608500788151798625090215572084029028380951507817448298079939298183520695590038747651635996543349440728664825713158380373219558529466057128032322906043454271320772921500287417319365976168419625624605115776262120980985923226829065963505843252914585540909170419599634277050723038933433924966297553342377580579351310874515911272119419209407790850494402102776888845698141493104421164929231199034729805606023201679897060290278578720809957791951623105561111133441647850732477421840889254450727982538571816636875200828789909673369478549612505123453026030215697838939324904100215648041600048460039211128583146953718878628701163065895128903772760366897751078368367149449860760323482919313636639333077112532263506484449628903562140910917184883359776685061477491947729628529940226933346422619715834114167408979784271108750432262839890447106483996662801874672678069833459187503127812301867619501888954744651596042888493821496812330875953213277829557379428092928030401078060596211030759341486094758152719531736557706698181800703577011933959623488542790769609795754171725493159747905511760096118476672312212214368328427513637719899441014615290328882809796585736312071114005119700172543463579423776006423420286785176042602478265390069956838609562249314263338461011350408175605961013927967017552360420813070363697740897703263694257754856012654337464403965817533944829983303847137943128996206061949794495555772350381966455640399658960314931510072397034602157188468414498235332005390066923861865352437171408532901795023023963305004538478595986842966576827375616876814560462321033161451137536544148847560393613737181536328819284288283654494839769934062928897803037442335381073377792138665249528844845017487627988924712134129833878665284628767176241405461020337739105966169340002371434437030992017569093264600981712234552096820682678182956004241998659956895146005707847390853503811705773368682511571235504699508351848211408274201762880277944793124322084314104623005572039931534794296111644783972369615224022661119722029047041665683970708585749056976393919847203913389066146411665473936057926195115695695372679013803092665461271109469924054694941918792327473598367085225448873229547450901639248463592556312744455603370397515050475356724383915330376573631292372402745732770801947701519132781347983632063172159675682339097266427478373480515275484903594400622175573994679551026905871042323165045382475029142779227145853127831067763040180729594761438319420585431546444900131105212053283280444109163920317054623845778114784577652681377523891236283117469043861099922393013973145606449737426020400959335723260763918132824769576181564972959353534565137763089779652100094511330446364797507184259503543793453450700361208294282937345258864388186370815590043966329954654849125677177327740604000767897331162108194915690616287252972595860248117617268977717440000074061968313794506703892623292525804480259861766805425912512279877433662083855611776315705013366749522257941448775139795054547860959739810400803175328510521654357751870807142781191563107709530016678215888193691287437297082541468231278653445347712336543897189813930534546163421054102145489580924669226658179842336331091598641340097439471837720432580138626610040040257095582924562504785423881749020155620716033485839761416339278967015865325282388487004257267088252026526083144317305666263332820011765688760660248950414043569433347527093520428825842731654779513418611057685506312236998762941492403138134130278628895223957785888951153773377278219125362017598290832241727107181732628628969099360075180094934523410329138135442828417419667660450020302725791226991835309309904350519775277169896695751012666612484996123705824658061230636549341946353772353847256502559299230059708672205806258078192365971229407426411100522203370801883360978801045660422495415498395392435169201553938998447359782907217478259097827470124954127685902024144358350312650572612101443964768748398651928890056650901122614041238234484827589365452085753800901291898609505330030279920549391725529609085950104393364051410163218270357861744280293822046879547215661467548620526839159988042187655020925238897459763039384102623956395291728187832665657676191301309167658030267202643710625509623416068746532059528983901144863435882231708345398017370764455523600539902232933592756840568086521273281265548544166869155189217769253547646162274698681904982234866298619169147606728419531849753765787033118972568320216833418202898103877938830638735413399030740564216566952884545843561312568965256410100307415769201396847369236405710036800927520184308720379877462570422389272530968336374888153750668030474213183276584156135282037084306452805350387567036817741427086657772348793596448591205056211475960654991794579079509727749744145381046319701859330950696301434310162412623394533581040768155023230373375367951934091941241165048796250062129299057998101829846308428031549873308933439874652060342146147487112567741122821920746044030465493346166046949934759667809163747600240109859253313224534523318272414115305989077622667597620194386096109434183389241552231538271746064990361981994758480643400109172872094736135632452901332851948137971314553706055023957966448686966821991071157048343122334001260237583112954121317179044296283918200831396802298468845835281830105166394193289527823526663377548771320675672435904302829506965065381751997283437772160841249722003409268884062102256196782344983409233009570294135858257059097270907739258344911489341204245278111169086281184455973633769673687311268585203110806661036758146943995527693971279945008388466314779754691489727612537392064606860749506761615404385929028920080939532208104450150030102765923748624515319131703319720895752546614973524876482149732609293236236247273777247682281412717649106363575287531179493828389605764658808933368078871183171217047349880988574824325448372362610802218446169817070746575905701523040744440387553885188323723297560118413455086687428020491756241547694681510237054642664561138533959873257613324391861408301343062755145453231896143425698238618820153199341060086040582767420305271235520616347786529138839814469999702896131238637423238457679536703133536334614066610801078208632267460386521332681908693272437495162368891180048919544538231408211021882239835055241719820614932102560630354408793308986702893896750522314290296683540293827484505905300023101114992678464105412926567451101220289034894056181353733141385555104182626617264287068129416704930481819217760443171667541407462632641111979636261208100709624085412270249731273141538595684501410362538480004359104643319518414061525957275846423061937152965946901155002156142045064539496986370236697651210737114979925333838233483192299783546734471866931551536263459780264970260754449708918898646840741976940696392398098349093164620481102695289878324157316315265067700879853313949779009728011413535569426979582389581110912157244737931259265697284970217655135182755148621789122423740790275289578800695567912194172232381437001835055296422752802918477505980017007907830328996730968596231403288779932382828401789209564023214626352152557846773852252722874386407429775877571315794193926987712301114758359459503977627104506796335065315210696845619852741005843152072857586021494712277348477454941140247292113886806982524284931523693052325966127425300967746893055139725681250453767381048254515620100529385732505537575705833592952363980135107610728887764666569723973048108451266554589176904835207707227061181003264797909809603964010740136778165330131636080406736628862983444586970582772349185817537741391488455814718914037828201228379025106991928961877954472191162771803243900838963413363540922360099635689809501854005721083471139343422463302132347161478224568573755012232757654186967083217823591384926492065733104917127987001845373958949362819097899361570859947150307057739759117086549735298283819946900303841606500062502318918356952336582639401806122557399912051397857458771314546873219089182093197569434149084560114632323348457092797433851092597638983214843267901257463663134781314617308650305690845449700988250818658679957942716416638441577123155235542071894931406458086716314074927818884112642886658753625509830302008526793083053660843091515069802823880052816971852890353005110913111226709140643938928883849361969638411929899250818485685497351413304912979628343794926690672319498774771835144880126905945243021432825265901074072219675205421551379944471783809347780511228363292693403155051134265892661797569449245517472868660920599174127187787266072773703505077452795402984339284890109683702584921296131737245478223242813633895009345139605954330605487395849639794196025882962585218410041041429164367732771713486946842899444326395469338024741363056416431094423601582895344849458557569072143815600281853202226854482541926313966220609663653863085267317512426610902406967587585145668827935607177770167562516200765317627419446873064701802764040551347065283472151903752719308428159105984289801003877027690073436219093706923712506639592307178568316033439073153303229391098307418523745556949162370839618754825331714657520945252013875481051845919728709239722269244770125576684572285165138692025972298962448488064282487593614865073188125074142887636760634331369470666365999529301391916359895775328977931402715320155854718004339702657310779570651367343411980684708960460486854085813610752944735823372229719711477975083318919444329411604351499806575223073087721623022082458857799250279934773245731569510756715017313617596479814682740942606042680619141077209118785093772744481092324182153082120461148314509548822990848713228383587947163388561905319606931240687609278063872344362746752319253909833481608694446649396658474584472355022720916237042652989203977511744555535046390355716747577476430768291790028136110008828218535184055926064540415942043081374080942301716267577776825913761241698826441242707207132111082549055297779800869982368478064129006255786388275389167279944085935618049212708094398002773133828203282452806125310544290636953095062867364164973356884934487769366520655412414671998178217851002471623636416831521977100539461389358348201695611378431285352130979354332581354421771886107996693593322598686163173091956900566100319732711910014276847848482784607549460708071287982503797286563627735864685203387781411711447488662580506919074616983249559689439820043740266093359451795279470837398893812510457712164918416267341168526716387812302708234976506100956892054099586007977404466522826031043604785853756197203659574797542326864743641930696275983938639039383976918529453645314080185326049716458396631545041942484131324627562348361695524825293457752765911242135039196794110091975825747570795386505568799966389696249682246280342966618524092015699346105263218024163990791087132083482297903130763979613473913387176208922928712094682675515949616267443388284705478374658029384543881572979624256705070684391120324441805258828422852509250787864822604748651961772908816194380783959811159097025994482453404926919796944922483742026319123452985413278017571278566886309150358857124522190490885881345265863704746228263588956571919236644608937090368268874303754973376288862484085353465640115041462926017035394130089878665138771334776409467909158695157752579971217718909443837122861551887220981191484052592382920068292711250569816439601772572259768012623447983369317370268885112258821014795706180517495609583877032038048223764780202857829613900087634097949867241477820722398981112549887784310561560787017925696945478944574899189450789104776948969124427698064774021771308210774498675118083848377140246948789789200127922544042988206918987941080213229730827690255539103739275582043076502307615545309193623059515142968291118529600993950169553663464472074240224949614572614109928901068324130068211147114566598653975234575260644389185930565044366393116001108968881017090742771477265223806396303581603252017467829710954822985343413521574441176308265778385626082663160908651082450850219494390316261203030852320657614703993356424039212793921477017152023812702975090180642248767216176787186820146640075049858959179489141898945811981166766767170808958417303432764811446543595418634015844195047934691554050223561608312574096058566460662719383507164351661101386660993035073313069955716804706013822525515533056761110682353978362144060302654190404145577230935702804278403687876413224776226002198161508963623553291372473425796690649269790459891949449662734434497162619543058824618041217236890350648441493035341339677722497236966734545138008331189365802094164092973437751412787668677178386372246386901815475375282245813809318446288294605920682942075072774629822880638169371477662359989082379276962773285629649665570212988295554230364047191993415244940920604530986966933515031262488004170410349415695604383630856473825495652469190529276541843602095979249080866386859816410557433030131120597006919307418842721380676606492045017393675143982663469887726869561867405220787200566946232894314890798822098147226028444874947376198263353641501588628128443875786381112926797179439990922916825839092357124168749174656866448968685552166470253991097450460836745665776472567072345311249003579071254220431847829346190277916865241513339550320580978949242251407171309508801142462524615167545251923953553812812796260665256935971137006909979688518557390466617284338472954227671934777936276788589891063819758889652011751278052432598139972244722591673113941914651135780718062103411861458368484552768493818792461621795938862063507451763056325760717280557051015665570040719485293645791748867210332743309567807945264041911552088112683723606891810553846521465344581837340337575816983786603970147034983592476490445618714709223745252830335030049582105783537791929412139077666889615999658819848049169039429437562782426105040077835870008683383707489836861848947846519033195580928067520781916779357919581684434751406228043820330757395441949923732785636347709074020264905031104602407841853676929169108066940640934182483936811287487300187931038293402458787582994845693268663457343886526115370317989144981530950100566693608492368194385097064324657539024043053941959974602378726196174219543946708813954653192301733919067704673869912462150060977427632515602398636678171393136327767037299342951693778873671329147637095788215580934326288840911910852018852545035243020530629293621139561443932574144697089598068829122935731776730489045717358325562473156966942186455302127002114022039974608747779644709489115244797796589906384418770997189567851284837589695124739467392960938675720763779185299900011086163519213780957046726615385324925492817408567133339731588076377367093080077926628622522134161015406886491016458182682593162761762379998002418582226999896385410590275161171583552341286538648885208081413890952551752752797152221884999513693097781447598139937479799584372915499176297136232836731630374010313502043942856037083079284572855603421118286922603912225520993199838422159918448395641159089305976756705607255697017154184132277599592427392938983213868915348765539995943077594858133294717775720439621772454892132175003496794944803486399576292334316087142198570183000261767196592083498937714834808242405965785655310308867240264750725084240104837398367051824521123066238391904852929941093000718163245431136851931524669736901982562996216814232339219187517362249544143838108073634560101557169614027499080920897378574498357297870125151949273252611161270439044500436215339165600634590130638837538406159637912104127317075279667888957046588281010056971189276119613442952242095845370940420408785438221448450917300404499485015618821325815982156305406684467854915034867591295681736123801644123903472484880982695945490420745637844789016272486813545684665580677166106400066529378041174791179705123454191196373928042558220338091435619540304355802434014630796745807381153118372758265098581751614693253118459658201085261240929239816470742412216818546733542986999607169421929800394326943465975730067446356260970304813476771890576978631310520918610986809549213489461855270160970352221518582845449240776827108303819094494349973652345765519749649310958102444092065522056161957615174661219101969136249516408701120946402626071662270491861796002047372616649580878748688354792295293871534443385552049753198229230272437336753678022532393043874055184367911111756841551329365459321352608483315813334374337310568596237612671310603149703958105283852010022577250217733701047198419667300512304972779175103484703105288038490648270726239725182927861156936432252693896147533649924016941277794467332256579075124762539427709667169335313670086668318029176967310803557640237231328476703794053310311820101309395685542141383864830782211759227453232247222599993480652705495692598122075926249149059025080339063266945367639035599443590872363729278907201041022180650203892026357573097811468229412919246771523165703253446140387755383761517408100583680263192942088900969832791145099411098175243011028495152388183916902688052544899401372205613020195513891997531637831222041877674524454439472945945212254095374591974227370351556447699278732972179879420749801974327671114047748851166038416940672866245738532130035162815316105688928284265191769628703870398388478524535797061411200689742531616776934946758693566097915215363781852121921266589221146009676114370113880990427548952197197793587964394675135785553969275488255012991794910026117762758243938305646893882803367448467823194897238658298949353783762585384450212168523959099319015548041035269244644024724153384295951342588169331291340066513552922950611042664665784552557527329526991222642332215088273248516866665361603520835955238201517248244853520194287825971728930306223831381541107286874995748916814798772743186221871346550267849457341258409383121259355173215564802573398512742704407407353903309711766205739603005850572880227927179705863585546462587859618635376158672896533233699549913407067756479576671402085350179079209249233543131557488175982125732060048551988337610948620176856392229720122234214910003609592928397806655297646929652255915926843451405045566792524234905885047768125291074726237865711707059430190638416289880363751650390879052030444196453432195347346546471973595196025067314493203517091225798046431962802290239671550536465115332623149980169153056475053547607860207391885581969225821190724446164347656307844194594110576792306538361726391459536687379047485098306982872205684718711398869858317294785706246042607703321866399929168556274085551900157149582074858798858927963962886642316870029583741380775822184803732565395060022164330511870278833384757665789177983496628191962352707765946493535189857347970687549875458419045145213049730996897937959794156202605143810611598713734230136901890281412728525398320287477523443561838173293818292316049345833632539136167226924039140406480460644135895289197019166310421168967015930147894946958187321911099505281897711988711986440711206781762152755466176871831112451052660929435148527879081317378330218707839157868046840119670787750254465819236549430724723180882781380800498009997681913741209779008348640190124094824911594977145019009747796649127544460467428600868260071783252436776499503307448874271267037441639349631669659614339079901183854967640661714971402324716688608371364540073251883464247008581361272298946073942177695211713468753824764056219306029960615714963478676063271289460377364780779908789119694374694948721756119137458611220931626554435268407506342063623259853423754193831196822960510641939047408041517463239276398036147791768823711124554469403650924174273895189888261773301296597176093238168673898602284494223265973033503023529023169812999040854518427316573312766087472511745078594697118939720977713302594750217872938788577622688281692810911636801747417784941249725383961109844305428477014392159551331431076168788988569290084440324079103589355431543999281199292075106877733449820167248665228704540250235452159420892950731047234328569696921783329007157636061574786939467398213664407458777725098055171191943136064714165161316072512894042066104560945492786017799288070461971906640229475346422951137664902689538880023720233208657917884402752519306741337770701896574672161185533453422328642339907867753444909885936388031154743698567644292878171602323173273194876934667058056987393758751001171478861250884636993226549158207023070147724477550431365239144561160487466568984511452077444385275342682659058686754277070638882719331385445448903571853607535211471856374412735709013764283377436284460290231937342006032339701827707922817442089847588744750494996349517641320120671806850677834301397403339936324196914179019238540804491813927635863888947846261154343056708076375323933598767814935726758167789515936496642310804474947475865687661340840217148070121244073595708069268852618981241845239625501954372889470019480473741407998604411900951037029193441263418405020994094303361480076149295100962624745446550467217847414473500041749715164653532302920687277804823616802221784964851015064347929101622179630648327637687380603612754752974970029149053744377497534328571746960809258496336943458129317117108749110943530231269560651773367664239430832362186295189004611440592803547913033137146900023343642270506956296218655251529600728827340284662917217550133975294701804836435603468062751800831292702336291596085862177615293016738724534504884272841122349359660602202190360922370551132725799910004522848934386417702739100885687810909977641047143363695788010064393522909865656672138344979003352840989665576735791189768139643655400593235417439345892545613635058062893557581403178518529678550854034011830876857075004332710375269005275398156726238886594609684164522894656666643117415552255406921470418708233253877054918082927050214470427530282060399553781104384375329931827341236247969602131021426032878342743245861195045306133939322074780233254643933422730663181976488755094378227681335718503138551807719931614750344541719384731755237076027863556146460738410843506758494102586700860138868618715321908492007126865589707875689858105219292094170543344099565493690834388075882098724877634249396705111127634773665575252350634275462563176731500256038365869233021602990256900032352927488655490124416903452271837447299576242220639010907061858064097277856086727174377391537703531304601984931766854839949112775796533738980020917645130808081778526229854568799545636474153830960355056110667221970651174118436424704955422926114611808924206118633986104009778463930878802091271348693806759042132848977432544907839407229894124083874975784340941411789865437199229987857679079972812278866111383228117434403231935742412951943355777337320738797039792870381403337389249836994358066884293071110536418096095489031736481868834142904129262251299674149240088681775282677536767206682131494660086697105301879195912692669752737013459414707875332326832316805520209926198362044238796117915453474668621065495507685425295760656476351263333253557053579391889347869918730826586903927618911562012746134707451077209085361192437234954620077993720817707292652708920276099798204463859903235184577063288658339775658030543696920328358660586443711471963490741241704808567130613058265648429056733041283618448067490882859963365870952030401758438815166830096400653200589361857914073145024511257892789282012220366162507932778645783796644097201418760841458244803535271505188446325364600228373038329001148344983727415780410763608177474534085659766722855438779553141472201463883660140533273604776967204250729068893701780448002308249402131898895961276065230462135625138814289282424482034365894100618732231319262029630825600077324878984657127034891232398030151880850241090275223242683618285738275138652335488836850092016887233957720005123868359875312327017035129899936666445612378536864845904651190457646440643419208135324042038936473647725455300569901618785250323245030220455885019543920298770089651967385349965131986410066329735724022730291043988913669457208725464761438891007894401376051232101305572947867492280324821625860898937283773095038586551924151489767910591860630091629894310383726671100588154173294223723532094395594361641772465744163614789556332071501898580910681585287558325199372423177803751934338469445772702432876660006353837836703326676911276499512012962582693758329854966142867564873486417870035100330795449024284598485149429540972856737011140039980827119239141453802229603530372324417112527376064694011108981738030056876113314966941924915704431558708610086023561762708054622649049338521931180300209671257547211129794234628485633664404045197995878735616750046586846414924027073838323950629857186400659775611342196592070598169552997720795851864641489120086666175562439645778515180160384529046359837419156435243229978218877327828099325455308008277836672418275750435346665325739671985506750834857577562045612641496395264482426347660689847274946791804353362366051874308617906390474552359039812115785633662445482431920223051425348154020780114779718873485466160750066983756633375027947280911825376031437610838390417455312417927418478813239767795436873710212137850412494991847465160047196051375938686881233218288388039855640742456557676359641088365920800229589580739998212276979988060059286433886029676374980065493978457898258899695626513870863967195189417628051186051143850527902484536697960050092080018734068164574345216950905142467408231172362206509108459790789900935688249765506819076585037292263329658400840334443703911651918318863206224084506177979352979979285550048957452854769917110802987647100565140080883702332581718307479417361622995966993017794884062651434505397196069395116054966387078372208286495937249742717634708016775907594277259435004301089035868485896786714358190271668478971333623690298798338050336370164705382206735887598487705212548608557462124012177788808319104211003460062057906595584891542518494477419946177808481450736030647936524026490478748604770354459201268694152330901493672916895616887540284078399037382994770715721275703971619812251168155469894038647837135488907360139008313193339134501666772312541329083212102053108202297680534247758836007215220486139071741091128638505452260822036101738481918768120578834529930885032843468332338214627474749848240644896029175385104045688659856645221426062024389308831897432888911414414944316010763331281262581235973890151347909426838718615554968270002332886411059869219763135610736692850809498283104418349888858763568626218359772693675365334335478813100341812132988089348275392076257605274171608160729989915222663996382159687340262377596184844167241877430499467266696525961873922792118255327000888738216608308731076862754700201872012123299536865580913664556003609198864693989255054400782510467971752863106194886628216151529602069027034319849447481284632401402237915640524566126561377818427940870089696647162768112040175042203777960661383494935285891145967925288239477168587336692115864894200011358348022914538241180031723440081229178541616281104862485893862931314781580929099849929790025723663385256738050541378141257540675818027576504555692856993175194886865046922723986839223166952291510690890165099157192201938772180073744361395520795773414273656501934718321083650656676350516063046085473676585281605009155309372032971540546011226179858420919660100034986158006779424245268971529623483525659750103449182862259059710785618881444488273733830185781054259823531070834521256848926296318580901514461365294130225580731088689780519225535627633596308381077143519930759854675257282942009805297410267669201305522661882855813495497652520497056053749341782487262654372295554021810241157615877726221411357389852569916914983039078011639115242061369651371401013692164044884974391754028877524959096257867901994221198623002816636508756310729679857551117387731256752689642880393660681171598157168842922124970023435776343451437495070027872413143136382052730545706647770154682968890759108065134153342367104434332811695524280188861318426064822703530749854578337218868094306156272452304474994533083367209766079100311153501642596737484121665343039295709715162425462481765140610641555838017962917754230969231794114357430700387322717740738700586105183786602763547733814371035174551077017360266838442258888747614643313397379662416429156052575407391376193894937027042516265648175002807819642603937857799995239621182362330573252823250875082493043588960464387981115975753794299806069252212548430384332671093753746804835254281830285779599456875555812405004701236669125054076108557987921717995111107562970578244152387726255085686848362480641995183322918564509299994938762357299373267298403967538867641015301737963037778935533677014535475081011324338102251375453801006253492365919689556561806644926238039334003165876996374577216681658198479696434174576239983489285798119562279428430558802982138691171545290362097942755344284308392470149696692385008832170298237602126371562027732535865155136205379622116039954181782634415852155025443272581908624586124718784401841161075490255822610513885381104394407242095324645046737970945278053048720938057263899032107869608840684733339344162087061315569141541690358031957803785560435492216633041206749563324626493755605530361499281079517131761927349415342519441964635054465887408014195734522524559152447637762736882907199165483902875080669207754106332336256502832340626975864600210262400101441051902364927900090207197793645715907214990645793468082625989637516323092550321713708619296231930612607825968554907168407524424310608239531294860686660184589407429093110615079805651419178750377809588496473618838710537934025083717492051238501689615871861837795819859955137418083137190691464237122867857076941113699916940827867146546635155598183891552561999272509207582038186215300842416270615518293669136213077130202556885240270140233207568925519285405771849714349471020896876819018560735591774498811447805373682376709486718830434425059480764671062008087684322053388648762910271810955868607713741226069257158205406990492338283398598719259050095358273501618694951416638366242854951116180369522536621635584125214368967250494375705502954384661673054380970138541985618333307703413139071875739741609451613880135268595475819406443893674820007777916208203877574152238813569011666641007250697809462612754152291481878329339085734557254848138124936556185175334404245302932807118460919917012991472799316658902876636875604608849255271382448180701117467463509579827179311312155647669973918331820253398718845511467390114875450661531306595628856340586820203397692389477774363747053287232618196637648971073255115453659333031131019093837523754490397623506257940717326344758993739373009238759217149207727342988082941988655737337424383671105894614626266075399694177676862204501649525445460526198676572751698707949663525811638304723613463002135975787275725219470228977700513200757408099214966882862640139754551084791362693587493746696253240644150216789661628399342329702628214903408580361406044014865241815646434858794634740793744505042692975348467389001436204130244618877930798247365606706702153056279968717165902109591520761795948311965675398848465582109509788726131456674473360619242298493294306142893529140284629321460464139719168132403285421872814168793663610126392388471464309607701426225262223971884231211723241178528251170093721871534270061933311595498730543615131823936392577568967539517223475649003844997070368418613474674308765914208900631304862392751757847981277864004326705435717501130544568703269262181355349929067903403360424878045142937824589905520457189140714116930371407937881364516096680848055029622052790141508054303412531022029881056493817180956519513504013831135447586861323098418168321323757426239151245839501767790833857439105288430536520736402976318014980944312078301338747341912237683935233667387056271874000661136024717667617300205568593418411197402206628045098944517305843697594277739425160369909705027815638484482958311632383602361876126761221791635737974614019349604656322329612011064354929806407903660084039298666417004372296693731604322471838653582941761393122932124245459427083911147218652760745724866541400780804430839314587578113265531861843024870552342479925640847791089732550690026132077594543080636376137051201361452908792574156595525593276359496205983398608460565235736958415647552120820624337542814051703358253495253346020518449244995570377607785573434495947148424224572744751333165970865223005975038198457701646057586609251267367198979242242018515250637248688088871295146174992472816153707592002816226506493229697005533132193458466936497983217095620954670749188705355212240606036419133669480054626067267215568269605394789349499180845560667795288877079118365476136004044472585959458435736732884420822122890055697499620834968636670013561346785109748994354356515605620136568323207434115673380351968083658867696759771496500802578150156205511916453484276295580223652617612841420795331185687514955890841972539396331337316916351046072476706623699657385491293952910671198152781372078025150413035333790575059925316323076926234904691078439693919503812227253037319722474445107099146554139139585293136217432533683023927670384608882517657875687679367688826802695940687804841146418106685395001137486599604050942632173426026287127546531963762849816204839507096419762831052044956594159855004016940136789708720248178961350768270834378321868474677540495878377199733504049533538772454398417964054190556459785157395626879579992047816425017023482764979268964008018829532737403651620554211646915489164186182798316074919088977587575253262157720481892314821402725214316039005468056289053399124229893419377122172234826209868816665230233616502919564441257594581002453851979454393138900571698717665775892740867944879706667133985387529742552504368290666490233018000734096980479808073945050477005629620854568828395501105762860460748314986895073828914679474789748527513182033344638134277887902612963472901444517018438143417821376462657187420280605697389887995845254366288678659909456591066483923766921200942698991230878027491810036505479997723983042656597143100832318711397560932673606500607519587893898968006511950931308681524097327560388960449834255195599188432513217605952122193310060569405443670914525358791994638454429432326366615887989248283154920673603470580706613831867548250046983629614530832844894203115195024594470646988053908339618926329288307421635764352491973317395839783857928097959775462224577413155778815280270140280183489248197763398347358664975682943231645235787590879860390876066246240379451402426464566223188847688056924183288654691332901016380627219840395868061686735569710546245018166634138876378118656412460912988305033297231269719605327649849145386179128799275341959272146560632299549028810907091312356730423946815705261442498829696311632781749438332180642260451002539535926743011856879965684711808678271008917936930854554716587677417568858142399652272251496972961508077595477789735977166069206523904688265871486630416729839097194434388762595270762952480989071480850435073905871744681266533585665209763017293860317850306798448933509154741534217851834293717229819114541440577969862986380475729358654211570390196288226634588777383624005694618664604870482825275085166715081846966912011861668904757769629316542538464272966966702546856591634179170709790375852721660931710156886246555638054452364617443736259004578487317781662207444596091645029647595952532876958226373385749776121833977179892556808444531368422986141522654432213299872447682929801506860334099132784318954437215905328766159443181948841547946909751109178351160298054745607824597883460815700319418238597794230052904049854114762246201612608843569776717411765428764240033085327597705212634848400300748421128101784787599628399531772422652689523483453978463030948044199270373213609678688893993034604283598130447131074079839261197575844478543836718669148410596408518698649459932637590029734297837119733638416379734691214400231064602461058933789261762335312910074998462409709331485382264652492013791865251784211461623485811942971957458982269248373677379612275941200724619920657380899508626812125097502369559452314833258864413444720065537952020975396495991850901486731351518109598195687443139747651552324013557805886418933529947085566865372077889287252337948184687538937257038729540045045833436319085659052025791360048431816233635756387365413718971976625464688697596872128350645949087909756974073666125132452461233459265630928358888029908714397813123863792474307470691350937641561754523107565386801177756340991837065258690416650489911759226201293310124738536232750688214749827030955510983784128325372475161469965488404257495219056316372602483751466340010554492025083921368942015863898425791246738845851872718854832637858632363569243155707638645306391476136889149752807275946394403861412170215765362418180470323040380570108221370431503601899546230178315197685525715751551466151447719649094281690954346804349549315803597832004615651346211887077409928332658606628047657899854892509258886520396187956748336897332390926965463883841175378026821488605835558124650258632093049329910306812195104846742621837268128757419047426852922265868309214297082105469372575975176929180118434696948478735635004350260201072124473173510817529991708783527540203507444126568487182014012707333059916456897528833512138866463890054511850816447254550449860466339675370632744853836099597683423899729790361675693473167044458084656898049689383627760480335392379511841670954300312096099484678253036901110456621552286014981635335946702031364827302207937992625799382112541273652331824416795506012521275422939402357983947734074160692210440586935413034290060455485616966151091517939235565251322529005706626616399840747556161292409265342001828229214224771889207206563499360255538814431913796473292313626240757295374922151541505481486161439447708184391503375595637129668920933750343455058857906266102795051632484347517785978295775323313411556403338574996054791232512815178829995016073083615911762912807140943265709421880676954040922156791249216105364614646174270237019981464259861076961147343871418287024208577454102744157251374605807559652989668103983522331773005856798736211784358073721485893715199859942143076831892246250938439460795076346481880361828367706783175298020954885880573255887648742217293879553030687797055720059330561244848166263936991471959611810810988600032990009574880224663426077308171049142086505869148868192698897864934503622373256781630869980093411805561454357990857799965478299502781275790717707902607222618674689348285072030524157074910082856597144675664428920309135370902987523038654736312562578641361947882296467413488060279839437488088867599828236051930534701304652672217445735590772535403370902678093448222682680053593274050927198651958864999928587927875397210715075391153809797413174486913411766000980892551332294603430136868166360279931872592391424354929275993507786607438760277234827033453019219188269528949249774088459798992834262074116509659699273948423691240298934697772845831203728284342734080440582279279449385500813880860469186297615049748852512933782219769723482671459702540254235044536179822421216874614525001775749713947605392725371515410220051017826506129249370210074713215702646718970176529713529170846693381051341914295151409449535274191100251786675606588089286740192896220173361061377707404659207467549180382211210880569761422139184898779660299310669338557566288780097323071845964934545679097449303139272190049957007922314583636747895359566529361116457007403202909831940409008408006455189265916040115644007700978224902795314347419690556022233793451243422812163267353732124081552859052790805333444858580117846540174528080705596298960709801527940509275683218397940646245808634695942020582766084267011458198139134217769109493631186188584034555691133503811542411654924031597346116788156563936844605336064630810599891078683964173599911243401859150132908382095509344410768769312197988782293593537198007096111765417917288730733276028826279830984888069336133917241494472894000984748321005289428136407417143383750862604881892027565094938513244107402464312659770144751611495298642336640575468116437589335038757968609333810029938311287642384822983177956957457919821467535466615144194479940271281199097752277123252119610598482866706058077704801683207381237291016268712673697468663510162172182951210923396488561245335863030883344219370043264835426428832682045085253755391670342298510101240791652815282178053877948977154259387833692525521791097260735254755618317567726589263934090236977898070488889533001768033080964352020515624465895005372854060191248104423340744299475277063476859885100620036971367756235206040881659896008808970295379153880140188652519053561359286184993498714652572977374716481459400154748588295102164232072066728177279872344476533302549821537503226858890572258422159433131778568064332111856079614287771157174759861565675947119039965526059445784239886587228092494363643338630209966115619657624250037371779165687655095648387588685585792363772629008898474154430690326056968717544653041367105232246651558722455468732326955756053401047309862796011602372894278565100868637091089758266599361238734206663049144555150539070595637588187554293181813486405153628836709662862512993035807782770529389089919949664542622271445208193476990560947875444134292560734053337063940557698527728823901527391674988890430190248277740962123437623771908281171405783186441817996291976810993186075556557998226961899670505172503176970478318494381174105275028007164338657876084119897513726133620867213265307058021024183986849152145662738263711400764695322920097385398830140165112304853506792641405855223258965232350377597738969524234776253945915473091909670635824951733894422842441690890589660074437808252302182164094347365335981091810165325498936236852670961537328994524144662622431693237259802425553316465647703219931940096947383304113797575355299426165435216249264901202435937549720565760272838440903152626779553219325273970382404419424587985859846781540788635587515948941100411778748944502650203511973915518963080129984974652062938675447263343703802103216183312660101358702610588424035217529640766864782156402917035720017055514736724330170550520652178702579779484955594393385996288966604084534992808757887299465721086827531800822034503669206341119390769408551044063234359031185562305536043937417842317487170226200062346072656604035728764188813684832337862573503838491030861586594880626236663590941386623327835927321717242261635468987759100931389908205337030770125738718912435770089268772646148830404363784732440617363888102030072243083955413007193831439679970456749005959094031979836487634126392952125001974832070209779717836871185108707618032380023315277752035894893300486819522695218370814949896932469516548422492744407152604262917839754341539982172145176473319158732484361020100096843159572114232745239469462523284332950336060642864278383011730314933243463477469646126012777763143946081809278161847363459726085802082993954311369716895213259145683275933972210865623028510820734195492283984272237171447600320627621860145163832082725642648053305440108558000290856661858612943374585011721473586332779871910908665438633411015793112979556722608816324261617218240188630575982778748753216923065833352233711992412960663285551058869264633439446795915954686294614812267851897476985265416264653881588951986235110499785126886178087546621762307192867904079329799033213058893242834314134564638404027209296264546084794193282406062348821824423155096768904504497061310235195168378920891210746365273129740636575425724775096719685973840576077625549226389290134994901861591563708501023107317433094683524423566926509537438379112112112658879915751136317409207119917901667329649860100149711346557414843299024723560695387656137649394843018433478356786091791751305745282035536083934703526256356798287317181098199795831694546370237474853953650490965856766206827600821037559521394063663183057061934454436641882284337706578013703943005306609352594266289781854950351898955694436213541830663431623291621695983012038496943108637122750855537092780036012131708176091919272216046545333582484727067579416840034091823452982412452608419924000653635798647992947937057854184661089608239599508185063613570334829533970740227350035397393155717000491010204512679354461400115671394772335434139709506541341677872172226232919488944890308313364141651038254765895622435753193383680251800772959113895329441321721859304347096223992276458699860095587401063244938903631524427854527566729843925507208921156170380241316676078047203333145097818042063695366164952250125868882199360300793348864318938743538350779520736015874513241645425213979256676823982493109630427250526950543131849623812953265194125672661660564722217583709880675198616844293991683931488262348199697465820163923974650871923890267949940031368580963834738838382045223106716399600585770193305784153142999204994212344264185603545510277282390117483700082920984635953011329815361699580130063349632704773033869225243280908569596520924798977694322277132318091865693169389910910818137796930753149498399877281880235453475339256418983891401212406155809988252657479354535872175784013808059440368582374626977844863590704640726364297744401319292782694774852043441693789987538844035071829495800277347848392945872711029439190143738835446051406882570211233732353055205031785601381001751490539891533463476060914684491865795302793124812634292938729258908548785949974381609026349427257680016784008319822904823431224402746515750618877298990789566549591167421981146525982486041286695660346918649040893890529952835320375384828169153724378204160041109679640628149360050340719362200395015558988046003444392907438562636648996672619995607099011884690679787327881837494215470994195935009191107945020127290308719121239731563844162352311262518412437733499009201665458264015815084041372907673911545500186625364412514055512709567948836632239882862499529369150873406945635957430892689287223897788917209404656390186123754643704792312526659721911710831620882926714044399797932937935874846204682834735444913029508832604600747171792330300686670068879045983191414914556440968290589354551936445290932282717284780345437528663826658911009721234328805723634742252808426175723315214034767241558579691071299808539939227912672632135448482769304015962884348742552654461754813556572068845625918388293019201590573776635466348340225490519233570427113140964091080026750991318428149521130592552801650429338683804247951667750614813969302526367422406457815563011843737461106370447413823835929427571149495806735636579636505246039196761251582998379113194960798374548881126167046083541577264690350164040695374390403760483232487426907969264701730604605917641115872186492751601401540768096893232247106816237370071431262516928009116525918031071732149607695717330287664400388449004944403498864333360834519927216481199359488483600349580811081108803258488028117205380233106944766633970369772033836667500635856303866070883281834303457907185374443436889871019188538271949884260374458219127304807439449908032641760467442676895825187712284759765538892708197843487425672698947785306797456136861074026466056025262726253521599259674374717153826626922252778432014097817849155420887280472049764295288679353452257281475683610989060632309587905680120375957627610190163630854609626389444794718618646337790455190841902049220437390756944540835564472841204458038075119485233019599800644385006444878260393031248453798817756948921281426853927876203467130843966604509890604936184239397768012564657747251009692110704436962950828733238200269704213001973708578284212609185512288364053406427420303718076236718966075921928082423103412412810073729438174264930535115279310370809436535349704372122092772808311205709694838483480566612422178866540874830727924909126015149114122361383532493824266615853045739591845281785115924981801565811135432910818553666710891431263810106402449405293846623437189678807007567580086177116082086508543729472080209244417461996105698618463632958636895512937468286886682404553092230351494222523983785368113123054100219201694508508160335783567635083767105664768942661296097468283896289743762752819459804356761526930363403745840765716926799790752853383204561001290717065254048726204539116643589665766760207503852419405772018558805297914315650481025104791231536384841908392109956913137298910477627531090150672724521128080344094934375618956437285199128164017185489864055505480273524163381538021863534274161007995170494627712376739573174171577949643459882973059466169081648635125606820015220192986268562363724238995378028616673102128718868859658319934729971451370770952241624919178579880792404688510246051074486244400907290665535504891210734791442862664527925011154938086489761748830213420041441410795441427287670967734944140175009830148176010626330199995334445025129924805020099189346881861627509479431811633412006466439570334316748863076684188151895455803823629487713358007691599760014770387051723147876917505701098914898156122133031445729257132348607973498863402998273351611396186096977683334633642642475919666944082526369731541662808000659382179410786966504805500337258129350693101053207255202279770041500327998007405564901936828562060547815868627270776451890278957005689876700179680660140928575716108494803686725737227355919718772745097589449324636885629611882714228876922922654727015549270728493342955748787958683652293011241684802436474270400250339991796631824618261137921681148269031570836386231758265876473874785409074213192879447679603339755275165096464233516262846292240987012113005142402910732427670326800972269997556931810321969623075167947349664420039190015168031606911955116810359733062178050525928264724932867089085518874155222323826592938411100883237239419184717929853250063224262081910303242946266965212686054995542914328193708056213167768755029525425228121730715134066039136166913974313475237170559641391942930559556154768506208515234225281915601010429907045194668938269933118586223266628686524560667715561982855423538455341489501453565071388554543413749648778431986954572055748058525780086179666897015651026699461670974852804355186180055286280122388273709964778105732046855525585709331418308186257861378324726572970321067236186259757164365173062037174367307490246762922896153572456886183623969935172618995367851903065774032456161997373528485650562680301728277393976085706730015645692751763089210426842212469752577387265542210891229336053451882108895436093074719896835353915251316716889023128918198142247183496249375669742767821529802640336650566896509306560107164502860459284808453346020497140593686897163253179398741826121969231913899808762316510754425254214527198383609803492073431918205384313892349547927187330484542497846422247526867514548760491877160241712023567624788494434928841060712611775246913294873725213093415321346717577035639780758614167683275903632702235317671179998350358779664152708154826805626435810369727777705898847828223156530818093922760967429057841723216560880367472838031056702612438620596147962493894376430630634116658168081135637041043896498551610069029594620049986471482218095442076018635583292167262827239525881900914642855602062909618153167647301300257865177260440887047235966117406219906959148898946796785265630682107773324332816340438606462744761386084650946327756033944718602019303703826129060200685372385470410133550988380528141702110978409620807711997699979439215477794486894243415014562775659596501840302648309615813601078200240905076464301671678264357564791487825545492125005154563158399916778472384307047774025570427119515500850043845083569416806784433720974794127733799440155379312546033451236785670015641768344045426759121074314580788072339328233175418935760151263459569043791957344628793101241465836126365790826768941084010864182013856048108214272807421492723962155717422052392349992253004762661603830133636670865974026200369994082612122983027641984627467154924303293174679552820647120298635038596422626633367131070921212257380172519157892095091006266106336238865213631462749009201939446412199279992873912379794575302535380996591374368875867370683269214009907039303435258154034127358427240703569235722463117102489618311505265338894364396016170821820757424555729645751950938013045267030484071132579919704000383695297637175849308803685050271199402133951319424587426894270817726814085078707537025481185285217124747104571388430808225434616852501972955318332785066003160125045393202099220242221786632325664086168705178937882742242277165746617028186480005318789740910675334686262814998827237874071631478811776664224908230911808824944065082991981015553822387296404044844386735156296816936867251534686678253214752937639262632738482524494801384379332337480470709169945386371509647614941509343253879599228405683359341651150369200331627869129155068673882533164331711203264432784443794776075453809372085505973211287995413910137967773765035075707572416004974965375019430059449672115197114300308341296634363994018174330297705356895856527977484502082739452667191333702984833554618443509315932958410103837594032571605948350008824847778370755659616793205222944442367310107768568426622743058753667993503486152316260847004083332330934165984957571364648033739868094656854766500386094226118684316127496335727719622159618075553247931102450101054149694376997536689230943684015239637005008436776961362604652305250764577945044856588556303130337937637584568226098090221625852840065007874359290321320280588570788290885914502093892780043884142856683543161582956314949949293426434596312557816405452813904309919340117762606091291396350276557361466960427486323083036243880609805853987508200972976388861815215602054945816834928203725847667673945028734389184344497300002237854372859747728736574566265858956786353570529323722805481645627762807379385975585544049928360987093531707819283823266536710961820867633924800590269133451145478524723280221339382378445922687713943891845750409806611868670907219748024381644678781086851605483002667174026633942147115787092007842782089215280932470301448694378940120771506628624553222556977274369136892021197129214123263594672095597217355486420574693213184565388870349400407812238002050221101397933292440154429190620445874493260329716007771129191303341536040030592428787830710953329225322053382433402794995593643743855620097211156641499198323985531338448063465927345270793522844317122045095552926565677044820428094261462968855508105089039793320121397450575464235778223558550701675483599212849144814888133652970620146615312291602056113346547334646776467996624798663764467372375580618750128640544861527721799710886350650036297025492806666030463115163910449108678407169818833956842794038931950535234731256377643639809891076870027413672509017278335449342724752031217068013036299854864486679298821254140700140508370654161486627989944339229164887984150478813186460524403077637832381364584373993133638828939106376978010829730086696447469524751600169514925248184909347552458371906402894112143342913042425119075991498804897744279855393295019487193322201900767227385856948221965134031470815752979578234072872870864061610195683636663998136823702282925492401514502031130436657684615954108211084629706091437805772721273839178639131717887443026589301934722580722282264602230721192844748786432122622694374886983998153642178727677253887329096529940391620545690681265076676045454676208253215929693285211021809327343955990867532051223585898112036475970871713426656434583507474132880978383694284993881783628246832043836734870487600118712075146229509088907333216562883425010474157959519802753737353207074615734359950917633034041867497697849394985536732586580997316744690441713867540958059446378852789930297620222604833786957027197184006698392559628539458758277975628750775171072662357262156099911422044199119776211668331641095917636420244676259499477748560348602202823573665983770426282922735568820780900244211134532936029986419370700261488011130066473681600843990864279445635536649030253558266681746134732163994916058042638442347875574571919294921314038478195707704847242887613666027599240203590166042241934340471174690849959178248913783842199708330094706059766141282204703771349261845465467303949686774733804213775764864721402325034567509568877330744461204344698138303194549623159225216894758100480008789347237834635276279450652193595454415121670770058993190908223195136491307771401008770891360107630083958316519855924342524280718239245765071497107790470268951510947850084898361951159837168287131598618856023948505123054067976955802164238423731900524591132981388533153613275526318590113074530233657968268278701964894939858312848555329420551346758763412603037648991945626571950767817366711356065267604903640125757089182806339341468885796378166403252061915963576346584214070960520321235843301919111542224330257078627857685831760336918405043623623218177322286607121028025353816376982875087437289188692242440448124529064238399893918617384521476474527290475856945769548940414733949928109239080949364363998094818608866216883201409871009567794548425101533234569090375516630089610312693060075013396845329775390573341511572845753442124574506855139857087672290632520712822836898675653699908618283594666925898009548939833508608607260599779909008815361203081003227157528415246740299200554995948799831259966967806525309956398417425352543861623538307011474134635803745731847267250875746770766982302626792659921211234941731833882053196324508227865888959093887982719859970809616249967455654558771431045850598961881187639794534438030685376039310828691341548451406951017195388733834499617507054365137344410662419697760348536748426469448604793483530932640750916469203634994632111695419146368359339833746929053805269210488100993581075171407008234382621736446155623650688385406664750263808383762293216297895345148809644306105202242490456731839143553416517872397784142627170207117616546800488510968748159534050146410010900225410460505272717611800300176174751886985947613572282512798560845822104300231710375396317277094328371470734178310033428183218610039541143092072548258959267043864464067019986182140080743256758222364998974188269708680978061703088007330850301817979954406980309944743153559891729237589541344018176990147496150015837818215855483607900022663732655686300110093239694453332639499744272024497667341832341518261996223270150217325539338388475444196708640955072180280866107249608125454281286619085805121430852989367325716034183142321846736567033177166764958622722078083381202042487964418622425320574164505509217667075489286611913040599708716195534534575866921679871342975350542397202975526974957753497844993170014618854346782804011500877397090911335389729777688425147425653707225659768549265335006445942228732041557055574363071671478315218985234976551488390132425423807503054634266265542137826213300655078857699962239752567691950051475299821394882915795308134086830649337794708684433794705369036429172880274031644626953416473124875929802116738429300846368258041108589443155064127547730578769498657997299214316929898935573100095777193327343666456136807739936208212526323179690927158138732929201188422171096903075703929226961371897912656149953213489477096201294742738385902136137967167055346799290500698397301715510874102818517964855215115172099528516768891486769291346230843087259403358807539071183504277202836323683179078265380290655140041083740719498772639494011706018523988193688596387804837137717786509367084073068391855320094340208363746054252695211873108044187555617609150757296353758504243240978194894253561488051648399185550325409817923941633018831897300169815827459443001516839520793289738300462307725198142286148951142478439440317937819911800743416221271375057013264558879247432237718340532156058990251445907985761617469374174049678441215679716738971752972094145855349507157006920996807623674653318376939138922242997007311089636286145640685321012699136080416760311519093495183273488320240136224855610240134003134626860317310814142381469445745744312988970092743783644851419704393831404193089809870336977181337096190347252542337246633577184269223080133659191757033533670445433368346875296299597712382816252387319226452809710623121348465020836521844818866184432708251643138892691346300397967516905108567723009576758783140251278160521197786504211118003803877658280629033901085979269565501357187891176745582524331542155000436234325332651773064604028627338774142790245242183923664463705762075155544467497176172763469820054986252146724511695147486423691645218403742894405229905590313564067061881281936147158516087644390217739145563590052556448005684212375509470449959832354588039994963950899048481525477275883542383419590884309029779786306296038796100137911094697557722558499278494833301800755207967534234274887248989499965603683949638931118762378569545423932834137939138021647616118285271041532031479967768967462808938358947703060275473914250749974237751018161294576026327190979017858527604259806672994861552349980466179473571652046506342195244663206688176556106240872502147025613296682721844457249268312486837310823230261360564387698331214742713878609427817727747014502988707165820279954505779956773797633115663620397397289508489929230073829872744566111631572338222471484278324491268058258977023497243998988844939067198209483010356271863466864726221166286092829190808860962867602907791265041424348316701049279913939388016706714493232090945822681407566101660625138000793051663759617024346749625055889316850459372609378181761805626424927044621708514952079284031715105093449061273621226386882727965380249642434080605888446776533493338058135061734807525410509222833360336289595102939226655200812022605140049324644218351814904241332076450281003498689306907751777566101994377544114969360082451954596671173255725992859952119981246044186943505451985484433714684204234607713930938280777325979074551646211563456576877418149487019493256147325630113073449915110046253186604961336164705987026471007687253247036526105011083795161210599213425560459092290947785338107951611009854710399684225861046708990969462210054298677268685138827493436368017381290491823802175884434858199763060018402455043639347525831184432193636078822342855272045714074737369255993115783930109736819090487924888661206532460152000335168141422972804477193676562839111651217927275006871239204489224560659499951882162445251561519251541248698539440557530254984069771032438283335078495458321119998635017531513927437392901084739392972242542692195276630589584769378343518462089531228431076626920567680291911716197358785828771504571705365988485439338455687452361582509297690532338080100239588158759601890869057946746760040728484613767290873389593701930186035809192800969562487800035954203504649282600218351160276500359007615300515757508898779709877246512623459434858447146969974708619341633908471726486305914339279858862338017846384694050699293616338270067608418255741154878091279432910863846947853495266842413245686736164003947230214150059728260677166998592152224446922722452662753747553137462434046326231320967634891045845244598715834085735563556630887023572750027903905856709684257476157704227887757124631483082575613673921608702672850353548863884440900066221903279112207312376948419523363518890952580963345764362987689019978287277952578086509868522185854654213618794096811802407819350928688707440238724062879588975043085326106396878515638060391081322698344181591025607591793497200486019243990420559792338398268709614517166098033509667819207870694670445052964510380048754656246144268720559930338804756155067939792354864468392917295248902411941414395004555151105274496092565798501994597445334832292324136115789201898749628600240683858562935279953952763525046396599512968205865885738109875833622381771863255911903200835095037665281452075692485455860174792407834667524564755230285139131803587488375127641654069323952591318391877310092234823466809945560512533544279271701158598689104477558802992722469475457343409971488630110503021626875573525751934778139174961643122972879514029762422373759765314287522934382892975362750581751132453671903657267884376036661342843964219541887566119884579693381298937901406563419516192474661306516511725267669323609419087733340690450558165213454487297074862553371635331581087738855095802330159523967268648400713750438601474834235330437085390227380449117576988953079133406811397562588492545284394178380123683157531767298914314054054266990963190681914906510208311130377896728687657942468534543011606591877413631321762198303416289445543557360297724554881458955418542210450999122832422240671256313535578227419398806196547685103176356379705213628453476087647191624882510939310918226676457010246503649076887174058871800489062109983884602249535444174934077227481562851572448302453765047321847532378940907877851143226417167207865271313548633238344810072504878677344464081608772771449481960020157980944682498260587592717763415996642278042914584234546121362414297976133124187195363825151679773423909103521409278990450682793503356406863155407032340671391506418478690860575345041992163225409754423164352434991500264140292956147699696135281539726892935453106876852742287916824480432608704463478624349069682252057662741054671106465204178936003473244014157701024500525111785668386033963806047470587868478677866005941018778147625395184562630317637358327298263546058429323574557986170934591291167804403130173996890297165284394825291332954976005579513856860519351140890707453397241952980145879886978105344437928598187338219021315887361960592742773315472002853239408397789239344686421601638980426095208234422381784439647101937884365289752765795163630751895935377213417194091471158931428412311647990508749331887496749119177625623516517274409813373547097884797343831223446489714488277146796704707528417151005177758584705360452208655868043224502154261560328310031904546602778549929217020935777114230574433742647869213136054226574013575310385064398286790589577389246677367491487536907339515858623562466719142440369524996637703770985252803613777816346232435468253332516733074960201249413720878443642861735790578481437239478915479884748129025766655262300741908124515803036992955037147164379926226167619218381593549727846720152665688420845010280046156910091842431075734179979783749230883487520580468055061820398994057860895824863813246156474145956952950257440684073664889904226040560602079193578678161126084813574082600007829756702414971176685873724094152073889241847585711465880388970146267953322313509070101452690127057210105779022277343195276782480856529188340361561348550929855796859839712262320837313667484421485838926042660191699304201533766491830909468499432157653212172381580140823486192736058717317466163847683264531184832681703369211623877310612543643962337345035839522545922383698407681015377194206583397155612108653083191645988670212720030129762880942895247190983775045851394570956574880254102538475085951906008554776417154677487089697871874700602935649391122591469261263511710087692787102960769193239654139233235563061366787913078401419567070881356320830880213526970725503189214741870398652371928414023072687812809490256436240867996383840921607586376700609603866327956945454200216914054497140193729992601076381319927344795034858657960779221356583223536408862834118876504409798505054654654340618816822304137332216455898377580961438429059850323819755090293443799336410337513679189169504960056663576720505647998532197059594358470817219206875917266453374606287085863099056469497814288864827362802618046077223206196839764684021703896226885242604920443377925672122905761457061866837202922236817090556108848373230317984179859950962146699137111763195890862038319018061032059854841643758537559118461458584528636882655994870662977243594811242593731963776359913818723798612690418725118495457562018917042825869646026822042170164938176626617811529465195189729743965577948535312848582920828318037995320941088406331146501838211945555989460999499266195976995452899102082423620367295339270261124959008335815158764211599728620891355269369880777066243495576565602414466461313951949093817390758101911627280585346834490256559339783660736784597741875456385440960717762071157152054663841375517012505847417609854817536768451158381471816080654008826680154523338651980071906453012628196539678057912794047592200584891296694888963217168962672527132555070744099176536736468323874720058609140609125633443807501075614691579295085050547070656868116338927157780046853815222838857263960105057058243307334956179789792708461912072633112251197557082335365279102007024268161463397894521512991183827518360244054304112902681963889699612182085241809012781165396831190827645273329640058674414682090257661164073139455063771453745016860874539922946234522818828837496340942470763000717491170722821267660042795470521180204638104755668948924724039745847695888633985075452182680439794593084627425060093791510138248701420978485908934470218315026316537964710422414848508953653174885833202738382864411676022315464960073515324718648310766369966940592029950073626018052003382192830878675968406343999421251846765507910757723562376860823556630936746998493392075127302143459749574953145597189522407961223123553409134909993234776071487196398726480243384457525538908352522657598897188751829310731782947814194860357498926797639375692780897942649640984709512814089650303781983675097553142351844585048052518999108785885084128715673248602784852202625103212672429865661527695246604319778947900124911930886867136656012397500815427149001629595311461521909491378190818735821252571605128316359578846573762774931071481719546509212499934584164870580273389017244188393954501649198066523773617773603148318070338133033338972591051988165809681695447229880713273435088736826826770722034381291341169095581164119393086610843233071610442261294455334123815147843960365561837877205018038913232670227465189079832876850186118464035832178304638050199921558206268148596626835738621220408323149112415323716735712682952546582245705117230412997688385500025680894367542856812391925356804836843226527830989696461401860946353979452432274274964920385141721059486526602561621700757001951723017250514112376787574823102663139662690924447844096274279748103136259643012732398383704025649960014459222375208937377135086960530601311256939481230368773686301164318462671604583327430309190082530180667483584749343753766607113653497482984301901089950970913459388149100613517153938432877737734771821280254447470438819087196192237223304078940382387097398511730500403660027910360212920875397242062759420082766066071073341577474795254519604098132952303380378722701930037663925484469314023785380625108348136087828800437117299693827825611561606438539305841566582411873588437947478804984065159864435345076088007997181939891110871504386314503554946209094365654392650941459734437752499801655609105275249481281179902173573014492328741267556064260298802557836413692016016617669748043542306072551697935735746825089695874826948731881544269818023315400606701953197215378857346583566060188867877883402696009264891214523761321850570390767193931751146569912952896078615794446670090410139420800171065178067033197994516163258550311481959276610659074044524985800229299228966543054067588746481449229311460408549457355981220577363061921476421011073334112714243475459628100874153150699878674569108206416345365903297922921012380381007569387269116011092957834426860655788441475726921085179645009860474953277920185440079838954484886707511916628030508605658217777697998220345113976466651924617025416334341044221145733295408504392807954396151307885264705378477983896727073836856837620235140207456693911087053479132411488788790158615971668352740445806936367038922357337268462210096916521348168176682743961853038638673061119918119187716359164169444571406379455424290874419543670817530677676541875022056511296774022477450002728679040664986471899711013362194181815184472591061447488424875027349454680510566851684048259975803596168445168373243003982331546478158041588277779460034850719864600409493977640398092361316514907508342421422902139051990165573319189692423186174767104600600148134265471179386165793927640354534589543137690424787165731974481919188300904505418400996882308154835099253666611841538312312998231819699109801429636853713921345260197299766841937950906406548032602340054884977654139891095815240233234467133442021495220744851782237688425688959031252711264762708767338357468592642121004081137201237521417098050822536684007206712882631152148490890523814401714196984944804679489675174776184049404631094279956737122753825775748085792754776105710867256129753274940581094794847870606374893196903901621417734653625666077403420493919792655024777067311768016577482896998471910716852097033010898010186445031926303162374116046753551168125391955617905343365937938089282722859914768508181201172867540470665654742948597222563280678451402182626324367627789943262937705557087265579856057809551086296577566990613910362180278129785662042808063521713920147250640452588776439271155252643537150490630447948841296952179190073624651786379689854808868529795126378890858504242865541942872273056884845871457476143153314718677063731935291546180195217512217731081929119956154340451468735032164383282109523299782542573539172290016513396984876017270183825894574556108791029901424155246809340828709852267349158535664375031049444588500491485483180968913365990395654771006567422899781917903880556974077808484614702490694200671838213724208851280759884631990288078363988372431080994688444143679764701359755518252438059867085825863935412502662727657199067541943193285433812175474512578521148274909532958863395251951656595291321511692041940837930800910247884453729889188341633145491480408091982281173152722432780262445509782321678235044878025855705718538907483505898554256099969620966130090965658274503055056304302205589701600825504127756601491826803917988196135982155843447379573702413895350487644347515252532802411844463140907913400762357692797913754689226884736149676856077439534956014628788995262183121832769384699326248204543358092547676462813616252866002903472891134064144250270608421664146813965398780967700813244277543465345874410359433720560138908410081960804386664051419536311000388461950017124667515147440366134559808879788950521931999172295176273037788753694443728709322519027105308073803344250662527867491541720713646960403245267328210151103865256574620291837156086589496185518608531139968035120710186676603591051690907519688103777386210264556171179825957862984636184672745364037121364433025001866944845893062929771460245708428537857217531391554082579635931071315989384210450732463188365244921677970430073450551852731279385366659239344190124417726744852219108768490083445392411318877611652510551507575859804011711680935050414745944483162589233546375855776767002031155304479918355861115050998041016086837193337357975553651024649345386759740045299465443507262891914362838579825472072300373383314140809137622653162428553463542462300076344744853432331717707644082936407500448460168077342282673654690211705120825871739934721949817495250924250726925642789857144682543911295027774569440308524614307137969039330836064040018859177956858262686679114699075516215713058458238926200549247748286076368766901533212848354177289041468683550109704090524777537298208489933703135462881564099431841848525123082824584262118062924394370484670057600731014483833794809349939449513215416659281982338744013219843698812101653169164961442714143245482547387629724500143589118257677641415351286224243126644694731445894464907012370826536309474640534463336976668148365069960714298144682556320014978368933051669087408158855984456703270505669128365644980537540195891176195932619380439852108327520574536278469874845019532470297825798400478093569804309947662567686031949573083415953921209066913357170933142936795525992559921024120101313417481679563312303503160869343508168983778370718810001468711081456752658660638884619648395491000804102621263814323434264516893555329375430827852957296723644138547682740396981624166189947325058111521969662924312118815724801397142272873868447289013964235982967010968586926180105408495917618647401412474267934889758834498858014189818668698566257552425115133889558784816299389496397417033311988726873131528027212434926334053497309720298910228004908373296479534316950778781520725900232954876062179302157414640607899306414205889014396961918180959152949138198462355194937194456512982188462378681558730644868873850415529812634340472775726538865787580204790312618484890551873888725947776814785942928251702376169625542673210477924328163129048539475711728834200324746845178811691006259463580546059295237249941449674655889780033821763324072532714591843213015032197235641764896047227129055747346130958417293148044805889632654064150538697516962493630444716415940433176064306038719972147798773892848955893028582296350937617680827682919135911466714042777926514452512292960800340786722340541320649179899342782139190630921424731548524409813721719049277450147536299714482855123942922188882872165823371928562075908049597357931836592697073626866846662967056473414696012289054649334216959657450094861720796723399048221426950965351576190183628497897472913885974861195482287233272330631073272906238657963912961558017968672419636993357507327926654753450832552123516981295456326013018790230598241273242036157017241368719980083222349838069075595238052192860532054572107246906693777913015221780039950986575108200809776528168571461898916911635158704269356305188550156111768320987228764381341870572861116475331926890642183771521971835146026562830353905646181730936806570256764236706591127446751335707108810195680022570551336875595585544273574341544072591447472845400028098970682853724683437493734410851193196097453241753890472845085958747424602856097878528545187775407997154621177303031339100172669288976201057951121885825950956918526102107090036450824200069159718001599236330078833562106398636742717199392085787672934536134885946613681541796565247637961760715070517432423497976271253568381906775894367733653120631963151801986593531388967149711435973775550871188943713859848091954630234668612328899619278198946718625627630057172226198717255668223923904890768146987080707751220177091609648770120434768279559338063610192024519833268119705454153308595651538813921780342498141963164905511260143454931265701556562158264090824648351579043435702893453635054819012476149728370681444278505199006903212896548769236882909068546671150995589760754891507625492685131792418299782542728547778448453461101792924207968158552174577602546294984095234678192840960476386210024350185606609410667690932843429705931268359659552164788030824711745176610929643714782697763464025941436376119883442043651405819785395750254618094489169401030013543819259121122854238722988776519602373221724050916405650079014770648187623734031750235491964410642041932852871687936595663020518293155034697291267571007407824355433018154958785858475434507850904892164905683726569122392614760515053956908698779269999187649883835020011034268265026969018909896424000140656288941654229991152436190033893023874485198177367035859326595056483973691102528528964240238162690169769797872053924417306882145869496570622068064152567048641672910089034466482148259576598883675676559305620962774588428084766784414116997805736320364832583212662721001886011390639353175491376666606897406774841966431435260003955902744717191497660803060479889578097868601071357264140408520715503208109783638446056461520984027952828516557607719738796731794525772221096980949945273561032910012006494033523485945355873048645021280439047580017537220142423121774893185173329466211269176408088586862489556539533649460684315877915679859150495016361992776208222457743409154600833608278358758581453060018874654806158469935209424129086588097007658952952942711111315126687583428566179129561920536410044079683799872613222554918639288601507650870472774003701806254718086876319171696486793614727732979757046379755146280328266354020758820986430077712971580486344586381703953969346321181169192104636494630154711153619666625612026906439506854218786812240993780516646058740408377608389717211889712944024277671668754396479044681943854146770948657994287785792979803623008497859770742430848349599307423855758769983547158184688235373094032850678988103388739359527893501071404914173640804862181613420873011412458842231120289553227515291208261892442680444656692441590713999797893022991343828360615540663044391445778085139945599094074239762612456772578548076328639557450793670916499825916076795474644981946658952214795605488453772955033488494865214498815920404443957690438775163101524744668822878389148182995253640866407630244850888822773889814481442580382544887918223306200047057093191744017116590681555324789182407775866665100435926469674592435181453789517497170913007733429647167891477189372321676652882834647772070310297542094397523932163345722780599675988114774549208494809224706159973495073321478676741593210626463245533420320135047805255300115734651077808653087217338440136071977085011680526600480673446362453506269853330351107802011024714941904163599640702033334178009708280027243676240239632839833190086800100058785505242035602151193311212381125806324264054598875454442839222700398014359114677186893678295446859099994129657734990682460457444371064184692311755752541422151199708105198384237430802858411911034947006709981625809080232934922144135663658449085571277501979917843893240809260006508919841301015540362593229032108072689825169873993483717822344427052288062898849905137744969579079629178617645467526962720055032628667023552336797726063643852366606175531613341317196197864392121268769055177347789594578286793751698667802479410433905992805940732000255661814631962700778143239536096104701729340494466620042894434699772502523362436113819044501776630394960920395546918993072887803159200038513497548607143872818383086380817680722559842374631006953530567999908324197175226060014824313203037348268169926095288097144322551789684890648663457922550958843785072651487101659277551662918941361681291844882428584914633290399404985318303936955530378939063462556418941415029264319234049598323408367493224900433835477731924409751183050397065819857193854143426088211957823771085106209820471610682278689620969757921676775517314616530623257688107672947682658597173652390580624930436511108825021373017722979145548745526360319873068471900353622658246145403431408136194441206504994577360905054778745696917584830341379595574153259059234508991895104113725321454131921375733178112506607565288638393093800774772362121100123864093486021508415014831723894064495994297265569568730807876269888569731031755846775128444574553397997813792654431921834421363070757915775647019542518885598183471508749639882165975381022375915486437492344074425523139962629180384112629956456129401567847766137658011123670830980985007918997025977030110831796067951569965572007575902702144061044911452833206811316731088885223390097768175624261207932093558751202518412009102502007023386813814634972054308310984171324107369665562496654937381813957760624019775704510736176400350162938954403024939727373854471651438233295189222680764895418150428010246315726137001519913632525676047478506575714031274113457537113188910649703107854178914089554130455302878654582163342569616634049525997099279447905529226719538257258587393274130154916630672048328356066972804687652587441088521105876230763044801393780365032533142790361470708396485178111545244300098858104533794718403395346580859879503012075351566479135465214976248731740221718399842254842989306171139607700220638169440749741888701799889068347341403175965274567786320642727227656038739437174585149316301185870988806202046350716742616122073255219743263265181032576138673817502982223737574646083182965575011782438275471222775799172556149461261270904660505267167223932500389201907340426107384301197825454396941178367831034191888309584133979272805382546626473199829417047335138373106220916975733273156589158399416510189572510284174693874373753133185652978668579739303451944894907199782629217544087253869509690256364913361662649103302968370399404779514747755870330411967687050772107617321483418530312001893714042946479603145311350066416700023524669310259433718669444400963997152321649187814086836681368125870117467589428150519860600640710086475174958709157959905729767405260915067140443398013208738176994367507976640722447299842158803184305897947861652814216645807199421852517436374675233515223073367877374551529844461509573192306345037036313453322168768871805379018319904446550904855025013177324986195190433459157524173696890570121205948432263283565890164054944492494351263003114712693604264490550542501889653141667181313000917724453608551190885106698104041467588804923153077182674791076853804068398921227580309702149594473809868273473312340587938036654043442190717164560665129378355602095649072482648351965488556846296156897637715040962462010579776075850857781777376501426558909658580563413806753500690392254667257452261154877591099601883907846796078591115005269420617357121701976371785105596442959618559023720438391967628002735526981355323275637931672939282477623932022778544033100210379546063147023481872886415248211452729969152894850131780271188121472084090813830635493161325791646756216819484619434213399002311094007368175499040105370285459703462333608878126345166364275991309512708416171091252888271665752450769886751300197665033144009722236940513663503005517281624212062955587593905225204836125872420287156842497966510035381857017390496082026717117234446921374861682933593570817241106919584808267765255054877674327988929228526399335672320294573301001520843029197879539804218174400897658113932684317529388849754954547596665544635912594206180442533467344212032289410055743489598571841851117728886296883795457231078767117936640524239691929950908446099602437176001623544091050434889834488714558740591334803757508108213516471546244015687292725425961643005362084352528358998024484653362422817109599601827699239352698885776941029330533541192182033534815267864184300550859195484210442525809817478579086995239359572577878359857446016518293777772864837474595440203648840299944295003769029699812826670409448793305461680584150168511183561532408798094923463652836206847759544700761192784929675948448992774264756317901512710819515240377741714381578912318556683115599448809641013883431262041387895097129237574051734778907972947159713776030845364618737701437543788226417693517009464573693269163629836955181552453496432755298484707463786288236903178335220459845956025360838502442970340189970392285865395671330968107511680246013657146012292592726485990026067413336342912103988713654170966139605163811546859346092725013904046570958813090147586439690356080526002237067236208245581181104709820327435557479421048052102582945221727461079444883918690338568109856888473513216220902224916728774326675355246632875935193968645350659198408253015704540743454421175757722114992310792258682019154490386219338234855437019047513801817401966723441526965608853765796515819930902713986177822928103138866085869256177002823453937381750059810088988044992163878606494194942003728500483586733358419306065079413977546321632519557047405447758733069812177634710857655153708861398629124189882384961710471521696214316529809386737702792483019120104057983961636647935371498532955879072997143024922657859098831534282291039354692521854358932834033079077749660374347639359192129174608455854501478303286948350836377823786093757486840385379733704303180151630575572859840539517606670680890940314761502410867637720572494875842467283500906724147538683524285131521824679772373745705655291821841553636624574535994728495285140266712799463114681763773933801244847002709448323561838029381738291966632458552074655518389534127169628384377734519284699241471083404269760700018182204794404287701819691216381554007876115119366692872982493573130991180381561849948696022256167794093781010683628532555609969925503390052027633657135364055586665400097666209196786378997827923885723733291301616727422693871941122400000852137552752735919034668718884001271277947100817035228006279688274415192053253373855168093694549786789710733924396709597311514345638326570413189498231548126537259395975675283269228288437973242922424415919423396209042686615963781323856273642608141820472118230036648391889539721693265027529331515394513993428691615334165115485101112923744798941721691321577793251660840054500252718711487093865529781654778907992517365552078125868472676816797487586252427646134096661776029377149391080559672415449995426515067850638413525415089100674005993952074787337038441672320733134525556389880446580080915750147942037139997249753619127876102451083024162313175339423890521136479018002018284869981683123004832474627600914139214330016395652367362789835704364262039618514932181766121720953319121045210670266874090641919066784531915512931161152675968995662200513952927276870774262354013616729425606192170846845084136763603683726050134796690309333172432767501077016178941879137036576410003615620374169634228827967205498547282836561829082987166479810334518370009378884652334426945447921995955901150236225598284371072480043530582240830473314363170265028896465972017758373959256362854059666662550126674583687965776797215056816760067845756991797032721491730412298066456848713671526919843460994186809763222427245889347264252765604238690439311764137594322453250858384001622021750225328190551116273623414797841749098958001', -); -test( - macro, - '-717897987691852588770249', - 5678, - '52992561458966917842048333229403244806917799627848421877881735070477262881098520765035249624964340882038688516377409835187369665592703958080735736766945912536313709777389461793817187662953548213601180992839097018162700540199444811234129652849225410276267930982552729151588039493817422762367215695837880393501083343614940195379176805915010804690716402053261575165097342342740863670719437568773682027047862479103787981449864557595411550480691451690239227939258640148661525627569354056573032574365819474479753874049318092332197860174730296445988139873008708564407683788184545625049358109338930604072043506368501486476015294370204931967091112231708457059830732539826223797283205277978138098770871113585235612923319080860928191126542635460138797782729492896291235430456696065935768220494159845006073392139110350323314505384289055017134916876163400462621881373937156047111273516233295024171469513762593244072341275620852077848874899582624269495895402815765777547424606219477655639449216632626280672365511304216574465048481409555551898153578798780997838187598030296504499299634026846370222734083675507056188173301287819190008251323703160735842279757966250463716342218905187576189745969039286653568566712245083192424309450098888181155360995569923237384829100088794333552637537227162177479701619093609870600007097257152299648831715938521942096231520452892461541884420652580871321292450318548928985510277252222535133365388202103209163165539197901552072608710284236732915850819518113234646115533291363606803403675185089565146698511010652775061073223214261491866092146057590474879116664838288380912194992229955697790523281474198511681898554287250127257584177956384808694445714111240128709963424475982531545945446204678284012510035965008794769324049843450109531060002528540713991395046933182699881232634176242677648962206607631738502280973898290005462656772264590786129579181328545465308696435762205327818322165386961509403474972525469518547542068305372202808432048462319049469153118249646785678722142597199696100956128198604501655682922926268156814400446792306656470188135722009834179368221149303323894575881803165080171867765138413350984666824885942458943042705023835971675031330773162756179573615771369921528023990741381103617964140627847781113773752668975380722356219881474606884340999916287255829002765995657643610750292167091336372823055491725335254964911991918866523018470993631691434109295300263601212125887194770564215757107756618621927605011672982388667069376436126257785256735035080395442838012293011886480858182971214107329249888540878170831338663664497081571648293369670697492303978168090750719696674347255594774732019346186950722015778265861706529434650218922964570378758677250144083322218433388621419998372158607084870550629095764769864396578302522198678754554607834625544465903300910375218946617943281021263817868702534903565965515996857490410905151194367951674404671401634726316031502775424938708095480058006939655833612970659151929020021108105677362480187576212239598103259569657352323481949129023622185672875961306339733885857708982104417776147428446169851035372923120375171782152648094932708525562623063044339202972582525453779487351603066880013958145443211731768489287736596200008852460116803737486674746320357688425959700168747470090109849460232048475582033235140686903423628462653109627172118888613705624945389644912331260448674882803772456442287538433120812454253132443354729068891796527676701606716457913622114298779919239138678095658602599035272101050540631199171079787674726148712746094500511958909309383648848324958153313684693020237870128517588375127269029825997693115614438073154312047924340357482412336581044347428383345931096734448615207346214924813291025243318597445591410601657643923497289883965796840775243249869681469920755474682727417587202159996646531840273727959008935890037688256043389201553466973472089962210203795891910446649680901883560841094031991763415446185012636385884139521383390919645656949585657311438685339885917614078799309904047978363483036838818577158746493373606130783588041171423001575976326332942068212106971788178296357879590268289870554895714998398477383074091612380803534549439364991095989289183083877933651758973534265032552397343750530201088858666516716202042806877592785968359618297523122663345711107589355569471982996246008945010788125903082708965247233856493295495884971617005159683177020951059046089360849718770603433176136962787644988761679786793574894146198596283619577589492917433648008790154607904592377489003959969338300144125428308936896784361334723137983098924994947562038207668868190447389976840741447171621269619747614678405424544476952607756858007392925674149003932269670585532289548230838340609191813200074864347826444440499651323577336653937195827618989214774650052553204749548153719625554328240930029474674929792915810450109353297164695948404332144143911830336116561122587580838323433271508758381427202886466864203006769876629040113309536126898286439306875888068434906684986109839807912211044229574073513385256008653277622489509139402265793326372569157760069106457217990235011506430988742050031863394618171218562494463476850191629255740324446363242993320648668718706796758945218459365076583628726166585648610786131608405727805072734696605117814467304269584486848714577856278821187639674139091420868276683680482402061170964129020179849417226407523345979683703744990934601753619379872634811616761518185857620947821097797023780246814812679446740501132957939033231020697754175111520932341860938863741889626558269454453009814222388294592392173794599397585978687451892813356296473121549635013676249164244665043044957101593039072361182135678926932958876432422873012810178205318591023576753916592920079031115341838800740563121977641772239560122596720253059357199257880604788460448454541912874334474110048318114397597184518307140986163690693584548192536813827180198436161154497288570678489493883807773676094581689577716104059811574599177659911227887188217401978474514757553745261264218832355099235158560242297233406180137292308698109610071281861640728221129462482399191931254988997403297870669677165754913546299432301037504530872073067858354779137558761312187986108590108671713663509463849235645441069025317032282653619885664511756487047824929057588473863132476505639554060087119089853326292527491890156165208813193528270287317866931952302862861082174087615226626147432099575255480389022327072418068332438673738233637882790315683455450464590709105784350178739780127964769969011026088597219619472341103459382289201174496483005244865985320414773065969458214373055466663167449827644842719260068316989039810368349530823214414315840300587086860582920441160086337872788129994593466901398749881456816893076117420457023093235142704769500472838381750950452685686468352355934718793080770041896266326591193598230038726258131382339638465090689033062834104050137121528398579502285618016610064410178458485780348478662846002089852720537701136965653853259363332024728436379986256649234691293765971251875100216741285408346246009343410757983483597963489740851123818712786795291798837714819930591978286010640687992692756495314962784887224591285887831740631885066445063662149099404455330521550962587381135521874864351037529468684827186997370955447481995887639571571525702373403403761671748587109161571183805369675426792116895119621582920253789699657615500011890976403807282199844302806272514657032217062946033211042074109494896045803992953473587506222506781346147810525891832442558813747914920938494195556975736956239077078403047716108873401240720217398379985768790248880164667538691286461771920136462983631359473029704858507306794650707316446091278308009089124701630706210560168792994743974642056525288870381921514176601924996181921908722977903765494032218635205563065562888264623205077967964252752702442201464476030020851153648989654374063092609825139716406169830702732441666788603492696815334157061439959989046789065423318960712201089688946540796678378497252260148940700296093007934347669870770800342086190913566676064617891161093655936605836899446861184700094847166382869925437304928565010472625277681782787551544062045311275114543518096882812611825710549053207666530027825046311534181156975603474991929909024388711945463808425263464957653237271591373069179547100808683091655216330416092310214397175383390044315163696300849781070219134615015219064302516596226701912265613020932966925428815092790344445459519486710818501491744578229686083894654498423852571127489975219254353172438337650602238280223597768220243105815348527252142824365262184240072688609964102457657199429178311502128276669149947703560777240739423309436247534508874804401314162274740915591635435183346939875420896409168143366133287003880010386186641170364265028042141513465453408101841921842528837600797310807883817569665409313593668849776576983790985321325237847569765650823790815463692017963395752927945155773792906513914253930342695948572439951274479143533256050317996678589637630517043566370062714774155238038673228364852986154012293796986173903941816772421914136811088242656279247112124439226958945034478877984596864873339798554814421219750181744221681578059062457004925780474249073437168128231790400216332672320703915847426463055894401088311795843457416623717000078714687159781995749578194250354449880164141903126715398601118555657753088212238422071158309996360998060316430904776007237664213238747361809842176066931627956726802459178808505394046664002938285314488362839317461527679372532822934704704470253690263875879702240062788026418261529389183596155698524599722228817999108140672748144745689714554812265041175714545225389990781353970530998752805250297945973556929670870774946985404265424068777800150897438843100570165412465536409965604362377295700424297999045416603027704210682281919437502308628718607989662408388051610908664802514940396058178295301888644151245892936386802507105326053427738255325180381762764389027620113283759653480743839809992357496074117200755535328327778239627950809058337055235742086687019858930046083297050726069315089882694837254737886800564117843966144822575643639731768343937069600705061564770014386059309401600994691145418984296800446891914436526504588487235668560512126375658106759961423238985938919327850368124270203404746108520903433047821070462173699752058768991623911437121303926263567247275258743101051399711951304774969904872170431870967998534905416515742768485058006433022048620528364549739197129869684349063800961670793383545725472346808561542828191153302612521938569967207547584404136442698715207952729855421979521420559878331433668100753209636435675712543276009510142074799136997641192447567079334735530723873493925022491212344710076896739154338361999719913499831623432329457641993249784570344228676317925346610689759322653659928903365020471696174639950909615303515965200146660518282411647170608800939660621685552950249611706475325198479518423077155301209371280575534360462938867984963297040183736104969929190183531952577283379234782953108926401989267488044466794228043770347285979888837421775091151607628072534183685174245345816369526145717126891495096063726823540297588186575358585981265343937095373338996442251138594460569709569806492449609367188654079820152455364920624125030761646597005088999711445807387895998396475835641806955712083403146532371590752368935420985233735695950492134965346564198873831201899225738635547303457400703163201429850285547082772143821844313238723456259228759115534200528631507109400219431734564426566942208047195491924187286616903223592310617985108600082628611087567285767001840566153820546701939593194433998024938689773662808625697973543664837705457336677737765607746286815865891347597385126417092248398027369133671804532615511954414419259304523253807140857494548560843072982788068686101289767274829556337961469578050554176149354133487258534215364379154660461310427570189912699705529950514413147328168458631103249872388038937376864265012237965847164952284836681545396080247290559401291604967701175723121502236181093388323626875423056619719092568232717945805103108385877791944344245670750247392343384296108323807858305055418400741553693700502565024106126585636797090774279356316370509236531508263353733878156923208632989404619022265962263865918260332262005803614050713268964027332085964017902372988449905870060050221522451244273428597501098201640739856281753377806262510621286335117441922221183997764738785835690806964058090618523209727153455617620262903964419882379089412045613968114570967614290250244897455062121766814873521607883867929237291112681395681208806316115052463955424369530957702703335301336133507196464013784297392355963686577412082487656646900727164897539211910515592015131790757084187802478999731058868779493827694303480414208944059771372285831516411891131036856120211199256880755033121745020506905940385581282403448035169726911436826243069847201133079363947969342361067328363441956715292529385906162072082866885762473853872136917177105248829462003088491198093528321254844293731158494353309329359943621539173472646030822664165537362617032785562181639419716789150739604369299294852110605262082459555983084488041202822751327819978152651961662242916641572040409255879415966668785223872853617095739101441693844227787889967257101619837706529517298805962370005920305999407921230127760675120172113782634335023130691310728800481538764425860624015422603351785485421993634219805565282967254634644843789616543323341653341146495092459321686531162492849751882105121323719768549112911144880654693888232614646653956763580397332567522797083319499426431434148243989859609258432804222067142397999063441042035277929314828603521084355742771233471852499158339778603981017500121847933601889420815095445410655577708991650898864592139988828909325847690688265292963327637387564935819554712076627813142907683346250203958929989323689935059457421263112380235019472983111424135581186825910973214910699149667710959563181536691099143613233601161732666745012245211307688622118221683809456064734882630698593204467656990257941572412614139802715394281994293120883156362501711873082011731962032490574884682131178885924065895059613017568119400856466320056952350332528728576467215637026738604714597593759418177681274482897193349099377791845071840865476390482509958300517175834887188010180465835340333367167368967646066303894894949259012937252758312734808329709232360933894530979086189948266744307651572635781288044544893571461370440118431167905294073527312254045244808871450613885567599305888413740007585647252065620950569327491405356998305146429471623136661921767554001049077582559141269075807726942292324962879195004849835063558899374919319497877100701211206496709025329275359077524423372451805882088092879051313263439053059246113586757853983808973560033255079821096458791208111949975520419973969738539460358523519982416915144979569986992658895580772468544281855421641228395656106360926287526507440986113241371749929933626943002948875469110027470912266294656790428857661799285796092963253692751518091473958954584426686863281912392953724819538676197544419608647219428371546066604565530829571887668487791705473466987941636508397417037367030291035726974209122929822977256282776129310660064280234827050717329256768834139633843952427070535536323343517859928713869623513480175609016408364304241592622958594443056559986989106563619631715224662514109451710877519669377700137922914878226108875076080968720985553774478319079858681651339801277697214672775772710298769965771899451131005224958432124257866462047576738776398467445567954900257927297206412032651048753538257470550748950042956467383856098326990699095531754983730997777376855850204059808381527746257418211558497066091371508074576455448794073221457106194028764995140574406949894779285509688637508122002763143590113564857465357157613251821223444359965532981305922833468097064802147367022534931051008695237039566704201353988540866088741667038552935423161581934287462404348346959712557410094417500120546248110357270320222372208679677188804508939856387875484398668973720610306440393165985553874361652311139176073072642232364301455756578533325673397255829115802632064375030488532724282480941523096056375612516691335273199076868478063949077979981834693199226789642526467313758886727034664155374708233413052241176017997770755357925454917422006910044558649830410441042783912087181440912216816911418077643846400706686847762348581058766312240711484387486718123588654129529313123730637305855816034535443508751239517641963906747738873083589048844951039924094554710311263734798500241327075231542378920749258310205825922008644493121370590192760015148501273427214461014155067372554805948839297269789248975606338557054691632614937241901458805041012227038978979812168094150773239740200926858206670986309560725257896194349092782159293694188307081347049188661030610107456715733073715420873434056971119630761658470234370438116245797515154771525887334083368102698399109278569996061959700658346646955565093203139925211068688479012109279872461395639869548120204532938913593022473786111209373901721432107297071448742770742412159279076830118439645403061943303917551223288001014702113659615663577592748103708841776873178445568235386839518530066675979433748005530615064885650866749177914061788524262808081456736332733040493983863214714692393115801670972860894965741349096171975727706157112301169070137414347667759125039407153467452265210719726714985635420293189470049637210766042254751512445609291095350283495503549502917353512206358756772848829158151755615008365723008445582823523075844725615067686956618810366284960890688672135540705475984841760373827462101875128799270857413282580082072800739904057148821354442778410810970050701431502851594089320392059591004827037030949407048303186582849254894900004175510461919883551638536839489510245449220044773071872011316439740663014720019722095387628672305811492191697738078092246616407460689410223935009608878423391167281114435298028095665936771603627090834937282850979762786426899134362341889415374040340896380252725754909908018401107333556100522040895675585460969780799009744922983914153517048037312468584877909733205649413029335540211297879068656419387807383048842494215387689331649844934805491180381285929557990551329032335758734597115389529509449814729908343459195813101027114347572133759851590325554983005153111501432758813072569701126690781490951740575825405497526335840722010023321789428374242548378889836216282253171286247053640123351326348638420215428018887341486150219038345363430704186782773219435948195386840643853198799818242098668338179745226151996534978279230096399308636037991368814207217507069935928147009785676785160027497317009001777550195024132691150567507011354412329032340603521157466518995650811670602491853174280204852628446269615787322879786482369408633164257134657023953228812362587592950746528121453810577970418765900895068401958324820738606431245080063027400254319882177028368653741793457795068935169938691425211024828792631933230877447721276360612404169065676636411366175986321744222814400246758586497722397143948714428396712767471630538898122410697568130170950184011778819880862316215372642601335542980464853249009026580690749759635033913834129498173805649521698922073038683841857811453879318495594875910979538327284780569733959417673964124812143583018523970514641401891081019284489763221082086325354879697385907787761049442665031058490028534622149846137905767487116029644971254430227080575349336243717394801443483839458265798732710051462772605466482812641037899172879970734427748668316293777647496909333662168116654868712457269032630974156741200422999141171874097340818602076458352626593605494845936264195396202806647904404677157734745652872270210704027405978135714048673747336292778720101960923698684395527092073172044177213818544969591585627238532808299570223371536372799012875224234778370905326852914976423861886454350497565400489482872955448045615907842220173649212448684979945647349079756570932865476086046458864652043811750235877344393220429343034415180297212581588145608747445493372426999318493938150343775786331056194752510426503166230913186538526760445807413799806204051029905931303093836872257279463684631738363832006044614840509662858475110814261755496445327276173263161251358809092006580985277059802629992110919876640778599238851224190806234298093499859897877945279235571464696627205637879325947667945367188005248720580469836926696939939415121732586533901411675573681854304269524168392617282088535658385037701299391440541334384518081022468387518749703363096233963804922423094068395126707285054702218861778016173542392815212283678372323848563282862826760297013819812339131493327915541965803998097384090951244169643369018641096219195430772492922432677413755019687006516340030964660067215342977430274756427296622985672207880091256161463966745535322513359262081324439248033434926360421216544044746832762555450035219016309931057323669695525075977196214861598745789848117118689974917406963326147153664733948922010644259043986576126492884735748201429479293157327397169116086340829373474447532461009810536262731597451754627874681161347317493618449699664690398390949643587566379695090443777568885944452505841199312483422475407319328641366974092114345516068535284073079980141067468263817385977308228962318323609469322490263507101669512786080642752319574742157425134152748843756299008728152305538809501024125010339213159780735824709099108882350824446352596024291069384003047531175618027373859127640704478972526885889432610483189753615050833681837753536005311543749368107499347315534545941713644730273702333948596900145557971505509367959108594407502948243020888234056853650963187076323765146652614211207546354464881645918117204811380635728429776867963381852884230518246631190131825530206787122927542913920281579736988824992521073962274953252144927376468933425658712672597384028057932228407070530265731165980966598601076506604289064934821557949717410539761505040873308406110474412692271216992858783788017692940669126619626790274625702146919817133167454141020585503777417647004018422961010432475942591656281157554753543866527442721860074055221343919493702427083052905183704806054896861313080853192781874338774353472175893928663360488609634784890485560515252214309637081204987618424027884591397424067625820413547165571090593288097729180898304860943714385424978418160835850877717027658521907629768814727424695191227358428401962885565649381238098204936255938797308193040643227676416950981533713051600283871175312807406414172316740879617172963584690587789848239482341701897688268557616992035582225306531638164023604262595670103263609695362798739463036593927714273709560324792380672245014432684528132529510597382659551239028729153767533108869546101650464606517031212471681999067256252173869702628620955732415793090541749027540473718940312552425322149119344958406002437705982398992267252296771928467559404038212669370252790729353944780711661881552113249584403769083480856475063987837244029373948596829428019040641426569984762280646821052726889241697080032561970596779105934595957656757479131467410030344286211442477923310898646446342650046369081113562118381113974544065289731235914381813526415129034466320886690781519982064571162447720218016309577515552126698701486349767343461948090842618080712299219097673966015228424172663889427342731020122066675346414052340618598182609249461329861211149036514914521730088889300616712047373574894553971526437268977130623792336839865094059220733603108966045443149552683777916379609517221061627320405151444134819286421255392382822364134687682168786843209394288411699746863444889434411414485519234492407599434325668997799101520066221602884158226756336984242409440361323534712903377984364440121709955882861088033253565408769726596294534478786779815095706073686709431442168829090896416212535563746063403950198043478906364003836786350526095004964058916984298874819382063723661497266846181942426357905013650755458667314604787157987764491101741899567408074361392569794087507924311908229702294763769391197478812554522186741135262551897352184690374471893073000220162512552332060179402611785987981834888043869118074160633762440696320006275857520907876405364367283599977809702429809327633774811777287837997929063319088643981288504577794563897734368357724456507233435413578168544122187905557510349163877892031860938380863700212457499941173051991635044055263541028899765559085615828388330183855986870987907204189354310066588413218192874980402116441641033329112521433352585269389744561428992772734752313702102338324264613628379476243754122969786509425444725576325781027140066964089023790292891876331352393285001370386695304261889280274262043056322796927733119572711356326685350484589411334123538058781520196877872573359539914258371620972518600167848136853804940166949001046871343046124149316149555200621260500187812862150026333455832936133319251080100944562462138196424435420637124060278270301200807655723626316279314677989720701526760643271100348145148124820564605091911779855169535418882307665289900355017573800822546237397396616805582194694056466899912723329771183008166619132092740342879643527581402206500436271851742975104495236263710329645094452343102310844177958838929699065716898974352408381283451421410089914102753296005962431058406067303947323833242313152680641247938380343115958860199956778403253209323348645070739497071952928327376353617380302386451510499726403590049039220125741769453186556766459550919922603305625386150812873799214104365798370292908598658060494523919882837028108696230018764525326479800889430827403509641329404504108584175416299778457550149516420306914056180810908889377149438217925739822836731498632998974190671944437651733816831832102819701452336948218481443109835371939006988086201718924066189320116586181314358289815550824203560990687366887222969587068618783822844334383574224286655847585666103020816988760101669647856537819653647348642372860462072094399934119806713804526340303858796726062832597308487962786568628209393365116177313500258916696602298504935899488231886983956122931761650910471751605728341369214793135444893690581825560582275170663803345907902656817500959962305071703161844221586272436733043463590790972533783408461905472360665984339275927320721268991984362793905235237928358401214308908599626975869024433459897721710178957512745942114341723971665941816834394308329806825884356070709685761638881841811423881417063972638317949761209293108884169157244310554120522091867059525129565074635172821024753666469843554970503238670636464476697226613787178875812109508162171406085559173637604564435642338746751084270357452547638347056148137732031656248286326291618903398185758507933313960978162364875292581607458217158798787916676003226916398811579605403809873107421485543087852003080885632791018542669430381491298441535109732809291308440227122322919323520142248717203062944396531767516101348669545805257723994808980312479264837725492136882355862941108451810186385271944727323937476421051113190387402775727960536639091788137833258176311969569961943551611853786770670960071652604792541940305956411115347733415222667549394453865233071674925052111317188727005402659672862870124353044134138940763586559553241714723475928344653659170671048092842027797901483049343811224941954463977298856433740106969036666079845988063391903825032855950193013788243789490182350376071702678007109765795706678377357340602031572982332824123773826221420577356000773691991307382149359100536109508425616929397580550980381697733400694828091467008203408893560621735626409474184799062207420684997475127497499271462600004670205579497645152495972389782480775949584706612600406180867943792941868858006175201936307008047616757589672523735789473093905193759863364945186628110590148829061593580057092925835363208545182849585868221368570360897560213869098865474255930740671657540215219483723251702391679084671148858456387364281103663462079699683913175189821329916045361853985054542513239589981629807348515391518514157410480876717317086568995965776721883816029400496479881361209069153709752129572198334892249502748191465310837081561861610032985534309285339681126580547626611304860810381677502832262489332934346926301205586228829998320869739620904253982155600321208706995102261899336727019317570934776614228279624359270351092121785581627705454815208145814747270980169200427592287264446298455337451867154675225312599671885696403119745068812877999940157697775260282173718338630223097905166067171605705202669147542203111329964484204150252769374041699642264247344682780556183768647043088086067328086717187740722470761010716276890826844033820289730485347275758989422619495961781370981845507287224106646612891699787304991489991450237892608587094959507431025121524157532996055387813931382902218941327406937104535120623519125622928074921413343511233341463048114587623180196119633871033128642353961758736942162376474650866446500486254254052378915783117942846877531394483736296707763850427149576406806692201719207270711640436539293214966734241103817572475879693972994529271225318511005262619518630808170022848370992692989178376091827819432746605823278836088860098280229785555789098175025591438486997677754831517943543494195444780421155712600231315338591816992539029327290383750279259408507030866894281949592643856951856970260492648859191372445722757560829643128598473999963495915365217562729260899176033339914368657427490270587754614627221314473523385599772728811860813438436363568535104917622395452899623639754284218650275206353695145264760567105459178562491882032831507849731082780751290549815090526014153248389638366562779197588704003763886554458980922773564631738946671358670002437792609926532640853858166371833689910006342371227521888985462256616595134913448753896321572610914451983732905554764025205460856114907835462908762361867725808829101494129427887010484807824575634192790958596192835856035642229775443466803753619433447559913956011510527564464490362903893004175699539657818550413774129471722988670400259357614877806334270973688298172787849219764510531270431348031231230366988119457069574129982095326123736732280724513806554712464556176030636815599985296475879329526942793809334154537286409720616279737748877805830625972559290659320870467177007699656878854930950374408662534796671508779289654115928497876570228294960433889385643701335793908755514074473749964759488535101951927148371376246782141759279753146527867175256859600371220723263087493647651934107824747038684956089218459994098442077055339542213286639575013424597339692639209982667429839922996745194919443742101455841754629560994904267305390310619195510596711795233359996984129886409644969307626193230100243445176341224116774838302230433293550887983785529668376917774923810049977020766265752226119147869678480128953266773825987624533026602499804124858105127910152228288680919984865137490347059505127939634012785058380116016158201512139929087364709693014634031763687342662706605079791983804043837557045973734575431521833043317763655587404678815578341748648519218701877257148921016285162472607623283323249556573753034374795565710904057626708068152251494257423269988884212986826103841847235290434753139713588793284927733100788323782464581521308771041340355123219181562733669769963813626654980259896667571531426558561083021853772568029181635433012078770849834446674149991209906653073314199262005928322117392615818629566430413616987317922057832297584265671398209566291140412705971275976266486649851786135002249020062965980087138574535447132363958635609925366757622786251073626356537120620726163351028366500669047752276806994698670175421508941444055686927449826465211114309355867990655881671257209904683585254426503206543491199687267119577128778582396178926678946290201534745035364519018795390246746811766723584255073984715970376061829082762752016704470773798620997166862372135899943680412430608608549449361762094538339329299440793971638832722944360033468293012144165093312313114839006029476318874961592758500904627465226488109581697907382066846687530136534632837946481815741937620620154295350284380932563345904144633726510177800611951790431250878298814044606538474701064227373555412349001233072133083235347487459787376279403703807888154514448002202951245397248869293062600560134295500105008538576207064629412523316530627112626565186270777090318018659291403078286535004079092813364057772695524445708298445548622123608796436695854008220295952906804796979613002284502190226292523908476214322919392774132723010892233879221455324852691358984021386299602980995708394090452538155116048679915227979809152112372669411580872195011069091512211098837265014358497390191374862378298332979828589280675262431318918898318225215446376722107524363251975033827569456312898080064881381141772242054225493451609900958323016634712370823083984626439009976816172490877077263224311036942854664827302424290250141379316709351675690520061130683735321311996496187247021962293994184343787870574057794627801215642399757391689423643087425702078241032082171429850853657783936393491748921202257137973536585938902448803265913705675751505623829853836767351048275120136814974429359820277661179090491547020218952518317240856799497902090061811729297871492235273099451994560780849999017077268810932708025581118347013333023449244901948116998051103180964193421409328454794534892399934923614215588057091032039363419930676743779898364001040849687155406279816603303339546771517073573996877517822995705129876831722490952428194724842099930819145094619254525540759400392691443317175946185255495513754986746278892496030387565394365588879946177842768690923727638413659745835806393996818031833024802300235446835796085570745553032228525815450531967652475109305456596317989530038989405999117072923810555284059845086948523349452739911967441605727895585516463617479813514316281381343200540684480647554584918667587044879862223471871709991329936110666394849738825285286263958437079344497666129723469849274424451217808101012327262154782486868475696579972204483320055712556519479118501769492253109282648803982799956007070413969057766641895108542980107519788443327966941933926975271423626274088356029953637857404994029785121788713172223066847502903458085949291823486875993171596694026412513484348659991282842807440540512919421580435830982886747148859097314781713081716943137837514388166635564093209988083853631966764152001236937201021272205337526464980001923248970935051413391014325982735295720169702781387326630373314301750994939700432204266441734849243617137063200743900861763556953331088533375662647974513214949950360582587461449318953013746171392411021921268719401083870455409243782703438717812520258803044022398736843362885510789738025682748439023460396397947226212022325837892155810227799539254487217780142395057860256227526753652355653439544898392544874518721260751136602267606533517775781758994893256983747903520154900084664232199826595227499066488170533660614570516974168882282194703476740231831764399346962406995812197194307712384356275327126581811963829857081764545583491933201665655011341750864389214260118093942175688349922926371415338795911538883608650663492494285079393689588623801351274317524162255546872032205137602055977698588526953067919577657802157230724010580762546282119676770146073279290190567417587379003247680752947289021207629278566655115192835788767007491592173561216460960732338187214850961468821550647703718319006714895171928841330718580062654702438419600965779600185378625085906358134551760230035403561105143710833508540322391028617424456041890440768192600260326521458091222064446938238524580192166531189004653013760970323476986163112729146041847368155310536930201842388100514907989986285028152232579121250243087183900990150304104081116859121286448239243348357354426439332087091013606470363706785376906184268755539296047766065167508797445567080041967876599818349026917276210630616917313061541554664359090008971749776374922888008224470479856127371383520079697079481864438879042548335953589849253380664920899400066389165030020576281747877494368823642902286149859757979430259416772186621524014692936483589683321666232231917198657382422968512537393374246432506459315712945887280161525313402564412785562279688402776014658097920177207595566191984505720566032171980817248093432499471573407422741267535537792190907867772310470192246974486242409294991646564339659296311172821487691415387361518368358002232126427175348186260983285915013630462489800994709039714768490653776139921591148425560513222581914691269099627882433950238366744049435126864696551517102338574990439051014288641107331775276925590557112123848552944123712559927798767656060604001870745831020943534367217710806627918743824819528778901432361132400874522503036881964803363227725213671319249255588338379558944373081448848288914340029381563870874199421074704225053940653263054076372331153673021564933861085136777463657122583608153245145603654759564012552343708794221112376282396672216677067893583529685387362866085958575144207549201885063634649664356022770450599025073193635589697904649689742659731140870664049705909529992131119908451169523625982480852065130458048303330783267873632661502527296193654564481985949017941867590637521370248661759842942985486580506523527905415291993129997589693562083571993824525692390012764335534053818968643292421277387911598443675823895632044862101929611888494601135784807263444029447043613253239718910969875605613576775133853633741165480175557199106843404370509722920321859723309901527892004815816154454240322704330590162893392597841258761159890728628197646144967822207646701728736399384331473403587477868423279416635027533248541770967263778198842567490190381802603584303232553124123738656775047738687142923133780711030685516297965124193566037052352262354539607323266508361484876586175823446779222126520889533051136757982925713629289751952089225590370193731715841445105382621870755409206256938181565226769507387707852521144122034388075830457994525416533663962455970297774911851804521911035459353309532169948020448427333167113803415885128164774439258952605402088109777145211067039266101515402978544740570697381766558881546774239387495303310021282368800400514079555621371851412626774730245176141487171901398964327496365698995566554278753549639947813610318041843322486236707793661756645237618569985152051174050866426218945874684052954853332216442206370490833124972712199887443585954028942543566576436008194402325554516608853398435525073932650524074286205850550540531543625550602818516054893310255606074691613285654709269754001340023163558376144694499945698271995324998769772391227717778525548481765287382012664202138451078614644891981447633443984616961062704113987629899385435093671888725031427992000013446048294556079409188916356329263861385119483041778470111323934672117382552154014552689712635622044067335585091419078549572685722517799853945139066113116557823200991839478980485148139756437276310315585052962711094520823502876017799162004452308825294752903780143322159163359216776682795639765675024359141047188281889450388835463485151185055730257857244956639772765885901407478608833348764219975332660938410968229409406088016572970425472041832771272378171279797797035736576275270098485254500981153781872753941048954786738308270916748413503252625251966120660459010356765817802826429045068657112315950170987790686087303575594630278186797170965451147353365942405760693758157024450678772714436915222715682621542648328393696771847903632197735143219253117775874065572827559278669061592703292357856712182245702829796197056320474383079124060345835424419150979181507698302000007069045583234865337926621992623375749971204642446990777626632490383499047710478578862245179305716165431024544308084192556089479503354600043311566543487429471050399741986074927517309966574629189828300270254631391989455006206141157242311958987861149970781306061082396476609746044799676946433313570016028171027821734752039087742788832856846639871795304172840764319177762201671679871703331176399614205812745806594113056822213610394374595550171039503669220580872124167464169590577829197969856928840564473147431728291951743418213909020891248139717532829309139307324676418134145138999363155157666822088563424974605011214474234561958644068385566981590500191642959522021800166068563481044756233678800379514457696678176805627254751999892080533501886765304008355851853948156310423934798610892860385518158372125742586604990037334390212148772332920836540413171820995316460503362722328438872099507648776358269375088834055987113695732969353422819649914493670628253189886707685826733188098490064699162769196462197178091601033240633742092060902726567598519786428036312494443148817711021658763571536644924743944370048324568741512735789195923635121797799038653592749525637165000255493407622344594232313502271601912269778165783446812278845417457586538145675618091493526724848167114864548061108275777820993568273138069570417876796279053044809083376787522011494624546074909061660691640637286419682093499212330107661282280374851441004473097968359669954161836104289719705649964194654369452812111646977860340985060266188051868138264924697766217093257796481229661635130361603763575209317631745373236794727193007345895568742625048392643535752017720886976385547006530147162370985119567662827452345951611661122285345274467812187128152772828198044470287829483436630828621443834283933061869973426636841662503174938088958731532564136006533111241497517080811026547277241069801619368046197038254330917315025484354794049944205979487352155731523443985515670321446995279071915493012622438463701624086676046991036641665468428667863243481438144104997475129384407937791753089800722213988580814506420181828434464111345849729424096408245260118164415180606108341818909452188841412079787980645835501934806620697807291698253154706727593807361760609508840206608172948784237440941360116633737918646533724288158512019153861656684310632599855068395383404299612799388078946939439804726113661786432879308541638420957312446608450673637732399682300434221464859925923221506390466698969039225502809581860888180763430173987356554433665298962587119505406649522644887130093859157162141940270620429317071422670076888270015287432039353142292463201458311748039953024013036300157681289307831534247803967378524151269240623018079511894898426335179627535676928729840275620799295814291986056942345428344453545269535794124327345707388409443474582974771283667398460633838739913858003572434702047552352950879994724952355013458855725485470732726133558254542140241633844025957105365419313572521406256164016462372080325523482769734126885228449084718164714605387688663314237773503394896942177771487500288657934065953470677148012467516329412866843212947650541393396631386347555804426102036080289255754843634434329602817459750576423199736486570021428392611373877893467131270574799604435726228651959220155729187266319233386485777943988660811844393451428256717646755716254300083904773522205309371240685190676214538753207966844645134821197918259003182495235479846985293701759492154378658914612708682142567444147095497018617281359110902117920725531122469148975703268958203323016883831569236133529003603833362202853118400173131984771412931859271574480640448580883928197270433178482028973090531595725903261739123015610187695736065475604480716148290769317072346477291109395091443012208320879788331725598789382708448112357055474285327626461197894056314208119696290296871946392825764203702558293596084592330063422640815063526516709219894586212199245909945107086110527318146202939164664570138496089256131319667582023030903220338472809679989900075966190134720802260549733743988009810716784814967132808315697037229066016638783617803049541403814297797063504097571959601223859618220236460435365468876273616964977582199141192717139286886479366882946601855885523540939542911001721165181303035250295757804176416487538695267810352135675174637329741832437202038317518501153696331084859275436546896784758870744418504221637131581695470043451607111498383586197039434557677809493753161844551986777183528706928317708570047213682844575429346154967850073774018951110599706445779164048664056208523721691779348621942136050587382152008824636852587867072370504325971481960878918898595254980293982721591693440821999279481942233518649498707717083882102011010920568111932250810913249902342481472764561569756057047564387676395955386968088987048250789547613391325196480282398866643140635374540815498886375692701566620478926327386180090314769809070586546850483645016414930149011180928072625396135675547919261758488905962683028189154974348858839670607559911538799594215181566419664461648293512903197378392772465968575275924040207070331647259700136865792916743805636460060225022009555911506758744722703329764833376608884035244776681807079272059851958248969103955274321981361055653095030882610383596652083951976626946931369787729556364440715932097751242497500001584071338920490837692185167860605115070019549822090122604643634410262326319800746320962802835287034390354111115865790874939042813949509988832911268012219132145696181195882383952958868481795589403551825711445660055304159790661413008365913113607195310961659663716376009165695349750905934408643499052196577976419823962941950712959992212234788580725813670158180525202141811656107580848620353789727923453309609949287741837902512599149154339176262431563817727378679677652789586189907215092360394745291315315178280769752824178866136127120364844360843686570666924377391665188451950415163418019008550860833335991205615992745172384110734413150392823334652249716284396986055940980014856009188306532585605420519999060408247632994088479770891700298117903439944095625163759805013608980060771557434355471774895250923968185127614872473437277089861855286234820208542123288985527978805250685814884921559427896393702833660533784695823628880970072319349073259978716833968468179590572694799891627034479004070759376277217793391752209577997711609243576249426419043330333248714674522314937604818018967788378992728856961524893134453753720792091904689980700491208047979392621587263636601034393317517058140153695430456108047489091988799433658727319727603208464797159018320689274278962431580710268611873345082042650017311093587316737506047072564104601699540422208265285367519250051097876841814985282642872180071842394128862870024131550427158424470800953331106953095712690997421000768047945089087663231635404628237322206056194051230418812268915485268026095537420507465353167347945777910402999486556725081524841236691353551068809229611287678981310879402131425967814033549233559647486789458759659524816156257785428046357885788728798334726449873717622126595441912361442030013584241365584775303418366701542287195829230746483209292971621640713714120962019145289378780969314257595128370406067557489678645404458053687082712789287239312499629853769537574070273969474157449684007131644293612697622540605642045541405898737405461999281923424705046372116343888909788638977762339671372562117660223660695670784812600612056762192717861277640703396725012445752647660972755926419081291679166524667260979795012933256505922882790031660146080407763031478392867425713264775858816101821915969759500481246145397674060323709892952582602767900235601067846724543572473980966420366855192885879180614548283832841466665075996354149725301338358519169323717267254062579184541615446217563552842801325876467818631048968727579042055430766829056006240108948018339677305715364169866474021158726443045415282083577876330771922441471903310208177751083536690365995902758865071635759854772834694926455251271950341529608500788151798625090215572084029028380951507817448298079939298183520695590038747651635996543349440728664825713158380373219558529466057128032322906043454271320772921500287417319365976168419625624605115776262120980985923226829065963505843252914585540909170419599634277050723038933433924966297553342377580579351310874515911272119419209407790850494402102776888845698141493104421164929231199034729805606023201679897060290278578720809957791951623105561111133441647850732477421840889254450727982538571816636875200828789909673369478549612505123453026030215697838939324904100215648041600048460039211128583146953718878628701163065895128903772760366897751078368367149449860760323482919313636639333077112532263506484449628903562140910917184883359776685061477491947729628529940226933346422619715834114167408979784271108750432262839890447106483996662801874672678069833459187503127812301867619501888954744651596042888493821496812330875953213277829557379428092928030401078060596211030759341486094758152719531736557706698181800703577011933959623488542790769609795754171725493159747905511760096118476672312212214368328427513637719899441014615290328882809796585736312071114005119700172543463579423776006423420286785176042602478265390069956838609562249314263338461011350408175605961013927967017552360420813070363697740897703263694257754856012654337464403965817533944829983303847137943128996206061949794495555772350381966455640399658960314931510072397034602157188468414498235332005390066923861865352437171408532901795023023963305004538478595986842966576827375616876814560462321033161451137536544148847560393613737181536328819284288283654494839769934062928897803037442335381073377792138665249528844845017487627988924712134129833878665284628767176241405461020337739105966169340002371434437030992017569093264600981712234552096820682678182956004241998659956895146005707847390853503811705773368682511571235504699508351848211408274201762880277944793124322084314104623005572039931534794296111644783972369615224022661119722029047041665683970708585749056976393919847203913389066146411665473936057926195115695695372679013803092665461271109469924054694941918792327473598367085225448873229547450901639248463592556312744455603370397515050475356724383915330376573631292372402745732770801947701519132781347983632063172159675682339097266427478373480515275484903594400622175573994679551026905871042323165045382475029142779227145853127831067763040180729594761438319420585431546444900131105212053283280444109163920317054623845778114784577652681377523891236283117469043861099922393013973145606449737426020400959335723260763918132824769576181564972959353534565137763089779652100094511330446364797507184259503543793453450700361208294282937345258864388186370815590043966329954654849125677177327740604000767897331162108194915690616287252972595860248117617268977717440000074061968313794506703892623292525804480259861766805425912512279877433662083855611776315705013366749522257941448775139795054547860959739810400803175328510521654357751870807142781191563107709530016678215888193691287437297082541468231278653445347712336543897189813930534546163421054102145489580924669226658179842336331091598641340097439471837720432580138626610040040257095582924562504785423881749020155620716033485839761416339278967015865325282388487004257267088252026526083144317305666263332820011765688760660248950414043569433347527093520428825842731654779513418611057685506312236998762941492403138134130278628895223957785888951153773377278219125362017598290832241727107181732628628969099360075180094934523410329138135442828417419667660450020302725791226991835309309904350519775277169896695751012666612484996123705824658061230636549341946353772353847256502559299230059708672205806258078192365971229407426411100522203370801883360978801045660422495415498395392435169201553938998447359782907217478259097827470124954127685902024144358350312650572612101443964768748398651928890056650901122614041238234484827589365452085753800901291898609505330030279920549391725529609085950104393364051410163218270357861744280293822046879547215661467548620526839159988042187655020925238897459763039384102623956395291728187832665657676191301309167658030267202643710625509623416068746532059528983901144863435882231708345398017370764455523600539902232933592756840568086521273281265548544166869155189217769253547646162274698681904982234866298619169147606728419531849753765787033118972568320216833418202898103877938830638735413399030740564216566952884545843561312568965256410100307415769201396847369236405710036800927520184308720379877462570422389272530968336374888153750668030474213183276584156135282037084306452805350387567036817741427086657772348793596448591205056211475960654991794579079509727749744145381046319701859330950696301434310162412623394533581040768155023230373375367951934091941241165048796250062129299057998101829846308428031549873308933439874652060342146147487112567741122821920746044030465493346166046949934759667809163747600240109859253313224534523318272414115305989077622667597620194386096109434183389241552231538271746064990361981994758480643400109172872094736135632452901332851948137971314553706055023957966448686966821991071157048343122334001260237583112954121317179044296283918200831396802298468845835281830105166394193289527823526663377548771320675672435904302829506965065381751997283437772160841249722003409268884062102256196782344983409233009570294135858257059097270907739258344911489341204245278111169086281184455973633769673687311268585203110806661036758146943995527693971279945008388466314779754691489727612537392064606860749506761615404385929028920080939532208104450150030102765923748624515319131703319720895752546614973524876482149732609293236236247273777247682281412717649106363575287531179493828389605764658808933368078871183171217047349880988574824325448372362610802218446169817070746575905701523040744440387553885188323723297560118413455086687428020491756241547694681510237054642664561138533959873257613324391861408301343062755145453231896143425698238618820153199341060086040582767420305271235520616347786529138839814469999702896131238637423238457679536703133536334614066610801078208632267460386521332681908693272437495162368891180048919544538231408211021882239835055241719820614932102560630354408793308986702893896750522314290296683540293827484505905300023101114992678464105412926567451101220289034894056181353733141385555104182626617264287068129416704930481819217760443171667541407462632641111979636261208100709624085412270249731273141538595684501410362538480004359104643319518414061525957275846423061937152965946901155002156142045064539496986370236697651210737114979925333838233483192299783546734471866931551536263459780264970260754449708918898646840741976940696392398098349093164620481102695289878324157316315265067700879853313949779009728011413535569426979582389581110912157244737931259265697284970217655135182755148621789122423740790275289578800695567912194172232381437001835055296422752802918477505980017007907830328996730968596231403288779932382828401789209564023214626352152557846773852252722874386407429775877571315794193926987712301114758359459503977627104506796335065315210696845619852741005843152072857586021494712277348477454941140247292113886806982524284931523693052325966127425300967746893055139725681250453767381048254515620100529385732505537575705833592952363980135107610728887764666569723973048108451266554589176904835207707227061181003264797909809603964010740136778165330131636080406736628862983444586970582772349185817537741391488455814718914037828201228379025106991928961877954472191162771803243900838963413363540922360099635689809501854005721083471139343422463302132347161478224568573755012232757654186967083217823591384926492065733104917127987001845373958949362819097899361570859947150307057739759117086549735298283819946900303841606500062502318918356952336582639401806122557399912051397857458771314546873219089182093197569434149084560114632323348457092797433851092597638983214843267901257463663134781314617308650305690845449700988250818658679957942716416638441577123155235542071894931406458086716314074927818884112642886658753625509830302008526793083053660843091515069802823880052816971852890353005110913111226709140643938928883849361969638411929899250818485685497351413304912979628343794926690672319498774771835144880126905945243021432825265901074072219675205421551379944471783809347780511228363292693403155051134265892661797569449245517472868660920599174127187787266072773703505077452795402984339284890109683702584921296131737245478223242813633895009345139605954330605487395849639794196025882962585218410041041429164367732771713486946842899444326395469338024741363056416431094423601582895344849458557569072143815600281853202226854482541926313966220609663653863085267317512426610902406967587585145668827935607177770167562516200765317627419446873064701802764040551347065283472151903752719308428159105984289801003877027690073436219093706923712506639592307178568316033439073153303229391098307418523745556949162370839618754825331714657520945252013875481051845919728709239722269244770125576684572285165138692025972298962448488064282487593614865073188125074142887636760634331369470666365999529301391916359895775328977931402715320155854718004339702657310779570651367343411980684708960460486854085813610752944735823372229719711477975083318919444329411604351499806575223073087721623022082458857799250279934773245731569510756715017313617596479814682740942606042680619141077209118785093772744481092324182153082120461148314509548822990848713228383587947163388561905319606931240687609278063872344362746752319253909833481608694446649396658474584472355022720916237042652989203977511744555535046390355716747577476430768291790028136110008828218535184055926064540415942043081374080942301716267577776825913761241698826441242707207132111082549055297779800869982368478064129006255786388275389167279944085935618049212708094398002773133828203282452806125310544290636953095062867364164973356884934487769366520655412414671998178217851002471623636416831521977100539461389358348201695611378431285352130979354332581354421771886107996693593322598686163173091956900566100319732711910014276847848482784607549460708071287982503797286563627735864685203387781411711447488662580506919074616983249559689439820043740266093359451795279470837398893812510457712164918416267341168526716387812302708234976506100956892054099586007977404466522826031043604785853756197203659574797542326864743641930696275983938639039383976918529453645314080185326049716458396631545041942484131324627562348361695524825293457752765911242135039196794110091975825747570795386505568799966389696249682246280342966618524092015699346105263218024163990791087132083482297903130763979613473913387176208922928712094682675515949616267443388284705478374658029384543881572979624256705070684391120324441805258828422852509250787864822604748651961772908816194380783959811159097025994482453404926919796944922483742026319123452985413278017571278566886309150358857124522190490885881345265863704746228263588956571919236644608937090368268874303754973376288862484085353465640115041462926017035394130089878665138771334776409467909158695157752579971217718909443837122861551887220981191484052592382920068292711250569816439601772572259768012623447983369317370268885112258821014795706180517495609583877032038048223764780202857829613900087634097949867241477820722398981112549887784310561560787017925696945478944574899189450789104776948969124427698064774021771308210774498675118083848377140246948789789200127922544042988206918987941080213229730827690255539103739275582043076502307615545309193623059515142968291118529600993950169553663464472074240224949614572614109928901068324130068211147114566598653975234575260644389185930565044366393116001108968881017090742771477265223806396303581603252017467829710954822985343413521574441176308265778385626082663160908651082450850219494390316261203030852320657614703993356424039212793921477017152023812702975090180642248767216176787186820146640075049858959179489141898945811981166766767170808958417303432764811446543595418634015844195047934691554050223561608312574096058566460662719383507164351661101386660993035073313069955716804706013822525515533056761110682353978362144060302654190404145577230935702804278403687876413224776226002198161508963623553291372473425796690649269790459891949449662734434497162619543058824618041217236890350648441493035341339677722497236966734545138008331189365802094164092973437751412787668677178386372246386901815475375282245813809318446288294605920682942075072774629822880638169371477662359989082379276962773285629649665570212988295554230364047191993415244940920604530986966933515031262488004170410349415695604383630856473825495652469190529276541843602095979249080866386859816410557433030131120597006919307418842721380676606492045017393675143982663469887726869561867405220787200566946232894314890798822098147226028444874947376198263353641501588628128443875786381112926797179439990922916825839092357124168749174656866448968685552166470253991097450460836745665776472567072345311249003579071254220431847829346190277916865241513339550320580978949242251407171309508801142462524615167545251923953553812812796260665256935971137006909979688518557390466617284338472954227671934777936276788589891063819758889652011751278052432598139972244722591673113941914651135780718062103411861458368484552768493818792461621795938862063507451763056325760717280557051015665570040719485293645791748867210332743309567807945264041911552088112683723606891810553846521465344581837340337575816983786603970147034983592476490445618714709223745252830335030049582105783537791929412139077666889615999658819848049169039429437562782426105040077835870008683383707489836861848947846519033195580928067520781916779357919581684434751406228043820330757395441949923732785636347709074020264905031104602407841853676929169108066940640934182483936811287487300187931038293402458787582994845693268663457343886526115370317989144981530950100566693608492368194385097064324657539024043053941959974602378726196174219543946708813954653192301733919067704673869912462150060977427632515602398636678171393136327767037299342951693778873671329147637095788215580934326288840911910852018852545035243020530629293621139561443932574144697089598068829122935731776730489045717358325562473156966942186455302127002114022039974608747779644709489115244797796589906384418770997189567851284837589695124739467392960938675720763779185299900011086163519213780957046726615385324925492817408567133339731588076377367093080077926628622522134161015406886491016458182682593162761762379998002418582226999896385410590275161171583552341286538648885208081413890952551752752797152221884999513693097781447598139937479799584372915499176297136232836731630374010313502043942856037083079284572855603421118286922603912225520993199838422159918448395641159089305976756705607255697017154184132277599592427392938983213868915348765539995943077594858133294717775720439621772454892132175003496794944803486399576292334316087142198570183000261767196592083498937714834808242405965785655310308867240264750725084240104837398367051824521123066238391904852929941093000718163245431136851931524669736901982562996216814232339219187517362249544143838108073634560101557169614027499080920897378574498357297870125151949273252611161270439044500436215339165600634590130638837538406159637912104127317075279667888957046588281010056971189276119613442952242095845370940420408785438221448450917300404499485015618821325815982156305406684467854915034867591295681736123801644123903472484880982695945490420745637844789016272486813545684665580677166106400066529378041174791179705123454191196373928042558220338091435619540304355802434014630796745807381153118372758265098581751614693253118459658201085261240929239816470742412216818546733542986999607169421929800394326943465975730067446356260970304813476771890576978631310520918610986809549213489461855270160970352221518582845449240776827108303819094494349973652345765519749649310958102444092065522056161957615174661219101969136249516408701120946402626071662270491861796002047372616649580878748688354792295293871534443385552049753198229230272437336753678022532393043874055184367911111756841551329365459321352608483315813334374337310568596237612671310603149703958105283852010022577250217733701047198419667300512304972779175103484703105288038490648270726239725182927861156936432252693896147533649924016941277794467332256579075124762539427709667169335313670086668318029176967310803557640237231328476703794053310311820101309395685542141383864830782211759227453232247222599993480652705495692598122075926249149059025080339063266945367639035599443590872363729278907201041022180650203892026357573097811468229412919246771523165703253446140387755383761517408100583680263192942088900969832791145099411098175243011028495152388183916902688052544899401372205613020195513891997531637831222041877674524454439472945945212254095374591974227370351556447699278732972179879420749801974327671114047748851166038416940672866245738532130035162815316105688928284265191769628703870398388478524535797061411200689742531616776934946758693566097915215363781852121921266589221146009676114370113880990427548952197197793587964394675135785553969275488255012991794910026117762758243938305646893882803367448467823194897238658298949353783762585384450212168523959099319015548041035269244644024724153384295951342588169331291340066513552922950611042664665784552557527329526991222642332215088273248516866665361603520835955238201517248244853520194287825971728930306223831381541107286874995748916814798772743186221871346550267849457341258409383121259355173215564802573398512742704407407353903309711766205739603005850572880227927179705863585546462587859618635376158672896533233699549913407067756479576671402085350179079209249233543131557488175982125732060048551988337610948620176856392229720122234214910003609592928397806655297646929652255915926843451405045566792524234905885047768125291074726237865711707059430190638416289880363751650390879052030444196453432195347346546471973595196025067314493203517091225798046431962802290239671550536465115332623149980169153056475053547607860207391885581969225821190724446164347656307844194594110576792306538361726391459536687379047485098306982872205684718711398869858317294785706246042607703321866399929168556274085551900157149582074858798858927963962886642316870029583741380775822184803732565395060022164330511870278833384757665789177983496628191962352707765946493535189857347970687549875458419045145213049730996897937959794156202605143810611598713734230136901890281412728525398320287477523443561838173293818292316049345833632539136167226924039140406480460644135895289197019166310421168967015930147894946958187321911099505281897711988711986440711206781762152755466176871831112451052660929435148527879081317378330218707839157868046840119670787750254465819236549430724723180882781380800498009997681913741209779008348640190124094824911594977145019009747796649127544460467428600868260071783252436776499503307448874271267037441639349631669659614339079901183854967640661714971402324716688608371364540073251883464247008581361272298946073942177695211713468753824764056219306029960615714963478676063271289460377364780779908789119694374694948721756119137458611220931626554435268407506342063623259853423754193831196822960510641939047408041517463239276398036147791768823711124554469403650924174273895189888261773301296597176093238168673898602284494223265973033503023529023169812999040854518427316573312766087472511745078594697118939720977713302594750217872938788577622688281692810911636801747417784941249725383961109844305428477014392159551331431076168788988569290084440324079103589355431543999281199292075106877733449820167248665228704540250235452159420892950731047234328569696921783329007157636061574786939467398213664407458777725098055171191943136064714165161316072512894042066104560945492786017799288070461971906640229475346422951137664902689538880023720233208657917884402752519306741337770701896574672161185533453422328642339907867753444909885936388031154743698567644292878171602323173273194876934667058056987393758751001171478861250884636993226549158207023070147724477550431365239144561160487466568984511452077444385275342682659058686754277070638882719331385445448903571853607535211471856374412735709013764283377436284460290231937342006032339701827707922817442089847588744750494996349517641320120671806850677834301397403339936324196914179019238540804491813927635863888947846261154343056708076375323933598767814935726758167789515936496642310804474947475865687661340840217148070121244073595708069268852618981241845239625501954372889470019480473741407998604411900951037029193441263418405020994094303361480076149295100962624745446550467217847414473500041749715164653532302920687277804823616802221784964851015064347929101622179630648327637687380603612754752974970029149053744377497534328571746960809258496336943458129317117108749110943530231269560651773367664239430832362186295189004611440592803547913033137146900023343642270506956296218655251529600728827340284662917217550133975294701804836435603468062751800831292702336291596085862177615293016738724534504884272841122349359660602202190360922370551132725799910004522848934386417702739100885687810909977641047143363695788010064393522909865656672138344979003352840989665576735791189768139643655400593235417439345892545613635058062893557581403178518529678550854034011830876857075004332710375269005275398156726238886594609684164522894656666643117415552255406921470418708233253877054918082927050214470427530282060399553781104384375329931827341236247969602131021426032878342743245861195045306133939322074780233254643933422730663181976488755094378227681335718503138551807719931614750344541719384731755237076027863556146460738410843506758494102586700860138868618715321908492007126865589707875689858105219292094170543344099565493690834388075882098724877634249396705111127634773665575252350634275462563176731500256038365869233021602990256900032352927488655490124416903452271837447299576242220639010907061858064097277856086727174377391537703531304601984931766854839949112775796533738980020917645130808081778526229854568799545636474153830960355056110667221970651174118436424704955422926114611808924206118633986104009778463930878802091271348693806759042132848977432544907839407229894124083874975784340941411789865437199229987857679079972812278866111383228117434403231935742412951943355777337320738797039792870381403337389249836994358066884293071110536418096095489031736481868834142904129262251299674149240088681775282677536767206682131494660086697105301879195912692669752737013459414707875332326832316805520209926198362044238796117915453474668621065495507685425295760656476351263333253557053579391889347869918730826586903927618911562012746134707451077209085361192437234954620077993720817707292652708920276099798204463859903235184577063288658339775658030543696920328358660586443711471963490741241704808567130613058265648429056733041283618448067490882859963365870952030401758438815166830096400653200589361857914073145024511257892789282012220366162507932778645783796644097201418760841458244803535271505188446325364600228373038329001148344983727415780410763608177474534085659766722855438779553141472201463883660140533273604776967204250729068893701780448002308249402131898895961276065230462135625138814289282424482034365894100618732231319262029630825600077324878984657127034891232398030151880850241090275223242683618285738275138652335488836850092016887233957720005123868359875312327017035129899936666445612378536864845904651190457646440643419208135324042038936473647725455300569901618785250323245030220455885019543920298770089651967385349965131986410066329735724022730291043988913669457208725464761438891007894401376051232101305572947867492280324821625860898937283773095038586551924151489767910591860630091629894310383726671100588154173294223723532094395594361641772465744163614789556332071501898580910681585287558325199372423177803751934338469445772702432876660006353837836703326676911276499512012962582693758329854966142867564873486417870035100330795449024284598485149429540972856737011140039980827119239141453802229603530372324417112527376064694011108981738030056876113314966941924915704431558708610086023561762708054622649049338521931180300209671257547211129794234628485633664404045197995878735616750046586846414924027073838323950629857186400659775611342196592070598169552997720795851864641489120086666175562439645778515180160384529046359837419156435243229978218877327828099325455308008277836672418275750435346665325739671985506750834857577562045612641496395264482426347660689847274946791804353362366051874308617906390474552359039812115785633662445482431920223051425348154020780114779718873485466160750066983756633375027947280911825376031437610838390417455312417927418478813239767795436873710212137850412494991847465160047196051375938686881233218288388039855640742456557676359641088365920800229589580739998212276979988060059286433886029676374980065493978457898258899695626513870863967195189417628051186051143850527902484536697960050092080018734068164574345216950905142467408231172362206509108459790789900935688249765506819076585037292263329658400840334443703911651918318863206224084506177979352979979285550048957452854769917110802987647100565140080883702332581718307479417361622995966993017794884062651434505397196069395116054966387078372208286495937249742717634708016775907594277259435004301089035868485896786714358190271668478971333623690298798338050336370164705382206735887598487705212548608557462124012177788808319104211003460062057906595584891542518494477419946177808481450736030647936524026490478748604770354459201268694152330901493672916895616887540284078399037382994770715721275703971619812251168155469894038647837135488907360139008313193339134501666772312541329083212102053108202297680534247758836007215220486139071741091128638505452260822036101738481918768120578834529930885032843468332338214627474749848240644896029175385104045688659856645221426062024389308831897432888911414414944316010763331281262581235973890151347909426838718615554968270002332886411059869219763135610736692850809498283104418349888858763568626218359772693675365334335478813100341812132988089348275392076257605274171608160729989915222663996382159687340262377596184844167241877430499467266696525961873922792118255327000888738216608308731076862754700201872012123299536865580913664556003609198864693989255054400782510467971752863106194886628216151529602069027034319849447481284632401402237915640524566126561377818427940870089696647162768112040175042203777960661383494935285891145967925288239477168587336692115864894200011358348022914538241180031723440081229178541616281104862485893862931314781580929099849929790025723663385256738050541378141257540675818027576504555692856993175194886865046922723986839223166952291510690890165099157192201938772180073744361395520795773414273656501934718321083650656676350516063046085473676585281605009155309372032971540546011226179858420919660100034986158006779424245268971529623483525659750103449182862259059710785618881444488273733830185781054259823531070834521256848926296318580901514461365294130225580731088689780519225535627633596308381077143519930759854675257282942009805297410267669201305522661882855813495497652520497056053749341782487262654372295554021810241157615877726221411357389852569916914983039078011639115242061369651371401013692164044884974391754028877524959096257867901994221198623002816636508756310729679857551117387731256752689642880393660681171598157168842922124970023435776343451437495070027872413143136382052730545706647770154682968890759108065134153342367104434332811695524280188861318426064822703530749854578337218868094306156272452304474994533083367209766079100311153501642596737484121665343039295709715162425462481765140610641555838017962917754230969231794114357430700387322717740738700586105183786602763547733814371035174551077017360266838442258888747614643313397379662416429156052575407391376193894937027042516265648175002807819642603937857799995239621182362330573252823250875082493043588960464387981115975753794299806069252212548430384332671093753746804835254281830285779599456875555812405004701236669125054076108557987921717995111107562970578244152387726255085686848362480641995183322918564509299994938762357299373267298403967538867641015301737963037778935533677014535475081011324338102251375453801006253492365919689556561806644926238039334003165876996374577216681658198479696434174576239983489285798119562279428430558802982138691171545290362097942755344284308392470149696692385008832170298237602126371562027732535865155136205379622116039954181782634415852155025443272581908624586124718784401841161075490255822610513885381104394407242095324645046737970945278053048720938057263899032107869608840684733339344162087061315569141541690358031957803785560435492216633041206749563324626493755605530361499281079517131761927349415342519441964635054465887408014195734522524559152447637762736882907199165483902875080669207754106332336256502832340626975864600210262400101441051902364927900090207197793645715907214990645793468082625989637516323092550321713708619296231930612607825968554907168407524424310608239531294860686660184589407429093110615079805651419178750377809588496473618838710537934025083717492051238501689615871861837795819859955137418083137190691464237122867857076941113699916940827867146546635155598183891552561999272509207582038186215300842416270615518293669136213077130202556885240270140233207568925519285405771849714349471020896876819018560735591774498811447805373682376709486718830434425059480764671062008087684322053388648762910271810955868607713741226069257158205406990492338283398598719259050095358273501618694951416638366242854951116180369522536621635584125214368967250494375705502954384661673054380970138541985618333307703413139071875739741609451613880135268595475819406443893674820007777916208203877574152238813569011666641007250697809462612754152291481878329339085734557254848138124936556185175334404245302932807118460919917012991472799316658902876636875604608849255271382448180701117467463509579827179311312155647669973918331820253398718845511467390114875450661531306595628856340586820203397692389477774363747053287232618196637648971073255115453659333031131019093837523754490397623506257940717326344758993739373009238759217149207727342988082941988655737337424383671105894614626266075399694177676862204501649525445460526198676572751698707949663525811638304723613463002135975787275725219470228977700513200757408099214966882862640139754551084791362693587493746696253240644150216789661628399342329702628214903408580361406044014865241815646434858794634740793744505042692975348467389001436204130244618877930798247365606706702153056279968717165902109591520761795948311965675398848465582109509788726131456674473360619242298493294306142893529140284629321460464139719168132403285421872814168793663610126392388471464309607701426225262223971884231211723241178528251170093721871534270061933311595498730543615131823936392577568967539517223475649003844997070368418613474674308765914208900631304862392751757847981277864004326705435717501130544568703269262181355349929067903403360424878045142937824589905520457189140714116930371407937881364516096680848055029622052790141508054303412531022029881056493817180956519513504013831135447586861323098418168321323757426239151245839501767790833857439105288430536520736402976318014980944312078301338747341912237683935233667387056271874000661136024717667617300205568593418411197402206628045098944517305843697594277739425160369909705027815638484482958311632383602361876126761221791635737974614019349604656322329612011064354929806407903660084039298666417004372296693731604322471838653582941761393122932124245459427083911147218652760745724866541400780804430839314587578113265531861843024870552342479925640847791089732550690026132077594543080636376137051201361452908792574156595525593276359496205983398608460565235736958415647552120820624337542814051703358253495253346020518449244995570377607785573434495947148424224572744751333165970865223005975038198457701646057586609251267367198979242242018515250637248688088871295146174992472816153707592002816226506493229697005533132193458466936497983217095620954670749188705355212240606036419133669480054626067267215568269605394789349499180845560667795288877079118365476136004044472585959458435736732884420822122890055697499620834968636670013561346785109748994354356515605620136568323207434115673380351968083658867696759771496500802578150156205511916453484276295580223652617612841420795331185687514955890841972539396331337316916351046072476706623699657385491293952910671198152781372078025150413035333790575059925316323076926234904691078439693919503812227253037319722474445107099146554139139585293136217432533683023927670384608882517657875687679367688826802695940687804841146418106685395001137486599604050942632173426026287127546531963762849816204839507096419762831052044956594159855004016940136789708720248178961350768270834378321868474677540495878377199733504049533538772454398417964054190556459785157395626879579992047816425017023482764979268964008018829532737403651620554211646915489164186182798316074919088977587575253262157720481892314821402725214316039005468056289053399124229893419377122172234826209868816665230233616502919564441257594581002453851979454393138900571698717665775892740867944879706667133985387529742552504368290666490233018000734096980479808073945050477005629620854568828395501105762860460748314986895073828914679474789748527513182033344638134277887902612963472901444517018438143417821376462657187420280605697389887995845254366288678659909456591066483923766921200942698991230878027491810036505479997723983042656597143100832318711397560932673606500607519587893898968006511950931308681524097327560388960449834255195599188432513217605952122193310060569405443670914525358791994638454429432326366615887989248283154920673603470580706613831867548250046983629614530832844894203115195024594470646988053908339618926329288307421635764352491973317395839783857928097959775462224577413155778815280270140280183489248197763398347358664975682943231645235787590879860390876066246240379451402426464566223188847688056924183288654691332901016380627219840395868061686735569710546245018166634138876378118656412460912988305033297231269719605327649849145386179128799275341959272146560632299549028810907091312356730423946815705261442498829696311632781749438332180642260451002539535926743011856879965684711808678271008917936930854554716587677417568858142399652272251496972961508077595477789735977166069206523904688265871486630416729839097194434388762595270762952480989071480850435073905871744681266533585665209763017293860317850306798448933509154741534217851834293717229819114541440577969862986380475729358654211570390196288226634588777383624005694618664604870482825275085166715081846966912011861668904757769629316542538464272966966702546856591634179170709790375852721660931710156886246555638054452364617443736259004578487317781662207444596091645029647595952532876958226373385749776121833977179892556808444531368422986141522654432213299872447682929801506860334099132784318954437215905328766159443181948841547946909751109178351160298054745607824597883460815700319418238597794230052904049854114762246201612608843569776717411765428764240033085327597705212634848400300748421128101784787599628399531772422652689523483453978463030948044199270373213609678688893993034604283598130447131074079839261197575844478543836718669148410596408518698649459932637590029734297837119733638416379734691214400231064602461058933789261762335312910074998462409709331485382264652492013791865251784211461623485811942971957458982269248373677379612275941200724619920657380899508626812125097502369559452314833258864413444720065537952020975396495991850901486731351518109598195687443139747651552324013557805886418933529947085566865372077889287252337948184687538937257038729540045045833436319085659052025791360048431816233635756387365413718971976625464688697596872128350645949087909756974073666125132452461233459265630928358888029908714397813123863792474307470691350937641561754523107565386801177756340991837065258690416650489911759226201293310124738536232750688214749827030955510983784128325372475161469965488404257495219056316372602483751466340010554492025083921368942015863898425791246738845851872718854832637858632363569243155707638645306391476136889149752807275946394403861412170215765362418180470323040380570108221370431503601899546230178315197685525715751551466151447719649094281690954346804349549315803597832004615651346211887077409928332658606628047657899854892509258886520396187956748336897332390926965463883841175378026821488605835558124650258632093049329910306812195104846742621837268128757419047426852922265868309214297082105469372575975176929180118434696948478735635004350260201072124473173510817529991708783527540203507444126568487182014012707333059916456897528833512138866463890054511850816447254550449860466339675370632744853836099597683423899729790361675693473167044458084656898049689383627760480335392379511841670954300312096099484678253036901110456621552286014981635335946702031364827302207937992625799382112541273652331824416795506012521275422939402357983947734074160692210440586935413034290060455485616966151091517939235565251322529005706626616399840747556161292409265342001828229214224771889207206563499360255538814431913796473292313626240757295374922151541505481486161439447708184391503375595637129668920933750343455058857906266102795051632484347517785978295775323313411556403338574996054791232512815178829995016073083615911762912807140943265709421880676954040922156791249216105364614646174270237019981464259861076961147343871418287024208577454102744157251374605807559652989668103983522331773005856798736211784358073721485893715199859942143076831892246250938439460795076346481880361828367706783175298020954885880573255887648742217293879553030687797055720059330561244848166263936991471959611810810988600032990009574880224663426077308171049142086505869148868192698897864934503622373256781630869980093411805561454357990857799965478299502781275790717707902607222618674689348285072030524157074910082856597144675664428920309135370902987523038654736312562578641361947882296467413488060279839437488088867599828236051930534701304652672217445735590772535403370902678093448222682680053593274050927198651958864999928587927875397210715075391153809797413174486913411766000980892551332294603430136868166360279931872592391424354929275993507786607438760277234827033453019219188269528949249774088459798992834262074116509659699273948423691240298934697772845831203728284342734080440582279279449385500813880860469186297615049748852512933782219769723482671459702540254235044536179822421216874614525001775749713947605392725371515410220051017826506129249370210074713215702646718970176529713529170846693381051341914295151409449535274191100251786675606588089286740192896220173361061377707404659207467549180382211210880569761422139184898779660299310669338557566288780097323071845964934545679097449303139272190049957007922314583636747895359566529361116457007403202909831940409008408006455189265916040115644007700978224902795314347419690556022233793451243422812163267353732124081552859052790805333444858580117846540174528080705596298960709801527940509275683218397940646245808634695942020582766084267011458198139134217769109493631186188584034555691133503811542411654924031597346116788156563936844605336064630810599891078683964173599911243401859150132908382095509344410768769312197988782293593537198007096111765417917288730733276028826279830984888069336133917241494472894000984748321005289428136407417143383750862604881892027565094938513244107402464312659770144751611495298642336640575468116437589335038757968609333810029938311287642384822983177956957457919821467535466615144194479940271281199097752277123252119610598482866706058077704801683207381237291016268712673697468663510162172182951210923396488561245335863030883344219370043264835426428832682045085253755391670342298510101240791652815282178053877948977154259387833692525521791097260735254755618317567726589263934090236977898070488889533001768033080964352020515624465895005372854060191248104423340744299475277063476859885100620036971367756235206040881659896008808970295379153880140188652519053561359286184993498714652572977374716481459400154748588295102164232072066728177279872344476533302549821537503226858890572258422159433131778568064332111856079614287771157174759861565675947119039965526059445784239886587228092494363643338630209966115619657624250037371779165687655095648387588685585792363772629008898474154430690326056968717544653041367105232246651558722455468732326955756053401047309862796011602372894278565100868637091089758266599361238734206663049144555150539070595637588187554293181813486405153628836709662862512993035807782770529389089919949664542622271445208193476990560947875444134292560734053337063940557698527728823901527391674988890430190248277740962123437623771908281171405783186441817996291976810993186075556557998226961899670505172503176970478318494381174105275028007164338657876084119897513726133620867213265307058021024183986849152145662738263711400764695322920097385398830140165112304853506792641405855223258965232350377597738969524234776253945915473091909670635824951733894422842441690890589660074437808252302182164094347365335981091810165325498936236852670961537328994524144662622431693237259802425553316465647703219931940096947383304113797575355299426165435216249264901202435937549720565760272838440903152626779553219325273970382404419424587985859846781540788635587515948941100411778748944502650203511973915518963080129984974652062938675447263343703802103216183312660101358702610588424035217529640766864782156402917035720017055514736724330170550520652178702579779484955594393385996288966604084534992808757887299465721086827531800822034503669206341119390769408551044063234359031185562305536043937417842317487170226200062346072656604035728764188813684832337862573503838491030861586594880626236663590941386623327835927321717242261635468987759100931389908205337030770125738718912435770089268772646148830404363784732440617363888102030072243083955413007193831439679970456749005959094031979836487634126392952125001974832070209779717836871185108707618032380023315277752035894893300486819522695218370814949896932469516548422492744407152604262917839754341539982172145176473319158732484361020100096843159572114232745239469462523284332950336060642864278383011730314933243463477469646126012777763143946081809278161847363459726085802082993954311369716895213259145683275933972210865623028510820734195492283984272237171447600320627621860145163832082725642648053305440108558000290856661858612943374585011721473586332779871910908665438633411015793112979556722608816324261617218240188630575982778748753216923065833352233711992412960663285551058869264633439446795915954686294614812267851897476985265416264653881588951986235110499785126886178087546621762307192867904079329799033213058893242834314134564638404027209296264546084794193282406062348821824423155096768904504497061310235195168378920891210746365273129740636575425724775096719685973840576077625549226389290134994901861591563708501023107317433094683524423566926509537438379112112112658879915751136317409207119917901667329649860100149711346557414843299024723560695387656137649394843018433478356786091791751305745282035536083934703526256356798287317181098199795831694546370237474853953650490965856766206827600821037559521394063663183057061934454436641882284337706578013703943005306609352594266289781854950351898955694436213541830663431623291621695983012038496943108637122750855537092780036012131708176091919272216046545333582484727067579416840034091823452982412452608419924000653635798647992947937057854184661089608239599508185063613570334829533970740227350035397393155717000491010204512679354461400115671394772335434139709506541341677872172226232919488944890308313364141651038254765895622435753193383680251800772959113895329441321721859304347096223992276458699860095587401063244938903631524427854527566729843925507208921156170380241316676078047203333145097818042063695366164952250125868882199360300793348864318938743538350779520736015874513241645425213979256676823982493109630427250526950543131849623812953265194125672661660564722217583709880675198616844293991683931488262348199697465820163923974650871923890267949940031368580963834738838382045223106716399600585770193305784153142999204994212344264185603545510277282390117483700082920984635953011329815361699580130063349632704773033869225243280908569596520924798977694322277132318091865693169389910910818137796930753149498399877281880235453475339256418983891401212406155809988252657479354535872175784013808059440368582374626977844863590704640726364297744401319292782694774852043441693789987538844035071829495800277347848392945872711029439190143738835446051406882570211233732353055205031785601381001751490539891533463476060914684491865795302793124812634292938729258908548785949974381609026349427257680016784008319822904823431224402746515750618877298990789566549591167421981146525982486041286695660346918649040893890529952835320375384828169153724378204160041109679640628149360050340719362200395015558988046003444392907438562636648996672619995607099011884690679787327881837494215470994195935009191107945020127290308719121239731563844162352311262518412437733499009201665458264015815084041372907673911545500186625364412514055512709567948836632239882862499529369150873406945635957430892689287223897788917209404656390186123754643704792312526659721911710831620882926714044399797932937935874846204682834735444913029508832604600747171792330300686670068879045983191414914556440968290589354551936445290932282717284780345437528663826658911009721234328805723634742252808426175723315214034767241558579691071299808539939227912672632135448482769304015962884348742552654461754813556572068845625918388293019201590573776635466348340225490519233570427113140964091080026750991318428149521130592552801650429338683804247951667750614813969302526367422406457815563011843737461106370447413823835929427571149495806735636579636505246039196761251582998379113194960798374548881126167046083541577264690350164040695374390403760483232487426907969264701730604605917641115872186492751601401540768096893232247106816237370071431262516928009116525918031071732149607695717330287664400388449004944403498864333360834519927216481199359488483600349580811081108803258488028117205380233106944766633970369772033836667500635856303866070883281834303457907185374443436889871019188538271949884260374458219127304807439449908032641760467442676895825187712284759765538892708197843487425672698947785306797456136861074026466056025262726253521599259674374717153826626922252778432014097817849155420887280472049764295288679353452257281475683610989060632309587905680120375957627610190163630854609626389444794718618646337790455190841902049220437390756944540835564472841204458038075119485233019599800644385006444878260393031248453798817756948921281426853927876203467130843966604509890604936184239397768012564657747251009692110704436962950828733238200269704213001973708578284212609185512288364053406427420303718076236718966075921928082423103412412810073729438174264930535115279310370809436535349704372122092772808311205709694838483480566612422178866540874830727924909126015149114122361383532493824266615853045739591845281785115924981801565811135432910818553666710891431263810106402449405293846623437189678807007567580086177116082086508543729472080209244417461996105698618463632958636895512937468286886682404553092230351494222523983785368113123054100219201694508508160335783567635083767105664768942661296097468283896289743762752819459804356761526930363403745840765716926799790752853383204561001290717065254048726204539116643589665766760207503852419405772018558805297914315650481025104791231536384841908392109956913137298910477627531090150672724521128080344094934375618956437285199128164017185489864055505480273524163381538021863534274161007995170494627712376739573174171577949643459882973059466169081648635125606820015220192986268562363724238995378028616673102128718868859658319934729971451370770952241624919178579880792404688510246051074486244400907290665535504891210734791442862664527925011154938086489761748830213420041441410795441427287670967734944140175009830148176010626330199995334445025129924805020099189346881861627509479431811633412006466439570334316748863076684188151895455803823629487713358007691599760014770387051723147876917505701098914898156122133031445729257132348607973498863402998273351611396186096977683334633642642475919666944082526369731541662808000659382179410786966504805500337258129350693101053207255202279770041500327998007405564901936828562060547815868627270776451890278957005689876700179680660140928575716108494803686725737227355919718772745097589449324636885629611882714228876922922654727015549270728493342955748787958683652293011241684802436474270400250339991796631824618261137921681148269031570836386231758265876473874785409074213192879447679603339755275165096464233516262846292240987012113005142402910732427670326800972269997556931810321969623075167947349664420039190015168031606911955116810359733062178050525928264724932867089085518874155222323826592938411100883237239419184717929853250063224262081910303242946266965212686054995542914328193708056213167768755029525425228121730715134066039136166913974313475237170559641391942930559556154768506208515234225281915601010429907045194668938269933118586223266628686524560667715561982855423538455341489501453565071388554543413749648778431986954572055748058525780086179666897015651026699461670974852804355186180055286280122388273709964778105732046855525585709331418308186257861378324726572970321067236186259757164365173062037174367307490246762922896153572456886183623969935172618995367851903065774032456161997373528485650562680301728277393976085706730015645692751763089210426842212469752577387265542210891229336053451882108895436093074719896835353915251316716889023128918198142247183496249375669742767821529802640336650566896509306560107164502860459284808453346020497140593686897163253179398741826121969231913899808762316510754425254214527198383609803492073431918205384313892349547927187330484542497846422247526867514548760491877160241712023567624788494434928841060712611775246913294873725213093415321346717577035639780758614167683275903632702235317671179998350358779664152708154826805626435810369727777705898847828223156530818093922760967429057841723216560880367472838031056702612438620596147962493894376430630634116658168081135637041043896498551610069029594620049986471482218095442076018635583292167262827239525881900914642855602062909618153167647301300257865177260440887047235966117406219906959148898946796785265630682107773324332816340438606462744761386084650946327756033944718602019303703826129060200685372385470410133550988380528141702110978409620807711997699979439215477794486894243415014562775659596501840302648309615813601078200240905076464301671678264357564791487825545492125005154563158399916778472384307047774025570427119515500850043845083569416806784433720974794127733799440155379312546033451236785670015641768344045426759121074314580788072339328233175418935760151263459569043791957344628793101241465836126365790826768941084010864182013856048108214272807421492723962155717422052392349992253004762661603830133636670865974026200369994082612122983027641984627467154924303293174679552820647120298635038596422626633367131070921212257380172519157892095091006266106336238865213631462749009201939446412199279992873912379794575302535380996591374368875867370683269214009907039303435258154034127358427240703569235722463117102489618311505265338894364396016170821820757424555729645751950938013045267030484071132579919704000383695297637175849308803685050271199402133951319424587426894270817726814085078707537025481185285217124747104571388430808225434616852501972955318332785066003160125045393202099220242221786632325664086168705178937882742242277165746617028186480005318789740910675334686262814998827237874071631478811776664224908230911808824944065082991981015553822387296404044844386735156296816936867251534686678253214752937639262632738482524494801384379332337480470709169945386371509647614941509343253879599228405683359341651150369200331627869129155068673882533164331711203264432784443794776075453809372085505973211287995413910137967773765035075707572416004974965375019430059449672115197114300308341296634363994018174330297705356895856527977484502082739452667191333702984833554618443509315932958410103837594032571605948350008824847778370755659616793205222944442367310107768568426622743058753667993503486152316260847004083332330934165984957571364648033739868094656854766500386094226118684316127496335727719622159618075553247931102450101054149694376997536689230943684015239637005008436776961362604652305250764577945044856588556303130337937637584568226098090221625852840065007874359290321320280588570788290885914502093892780043884142856683543161582956314949949293426434596312557816405452813904309919340117762606091291396350276557361466960427486323083036243880609805853987508200972976388861815215602054945816834928203725847667673945028734389184344497300002237854372859747728736574566265858956786353570529323722805481645627762807379385975585544049928360987093531707819283823266536710961820867633924800590269133451145478524723280221339382378445922687713943891845750409806611868670907219748024381644678781086851605483002667174026633942147115787092007842782089215280932470301448694378940120771506628624553222556977274369136892021197129214123263594672095597217355486420574693213184565388870349400407812238002050221101397933292440154429190620445874493260329716007771129191303341536040030592428787830710953329225322053382433402794995593643743855620097211156641499198323985531338448063465927345270793522844317122045095552926565677044820428094261462968855508105089039793320121397450575464235778223558550701675483599212849144814888133652970620146615312291602056113346547334646776467996624798663764467372375580618750128640544861527721799710886350650036297025492806666030463115163910449108678407169818833956842794038931950535234731256377643639809891076870027413672509017278335449342724752031217068013036299854864486679298821254140700140508370654161486627989944339229164887984150478813186460524403077637832381364584373993133638828939106376978010829730086696447469524751600169514925248184909347552458371906402894112143342913042425119075991498804897744279855393295019487193322201900767227385856948221965134031470815752979578234072872870864061610195683636663998136823702282925492401514502031130436657684615954108211084629706091437805772721273839178639131717887443026589301934722580722282264602230721192844748786432122622694374886983998153642178727677253887329096529940391620545690681265076676045454676208253215929693285211021809327343955990867532051223585898112036475970871713426656434583507474132880978383694284993881783628246832043836734870487600118712075146229509088907333216562883425010474157959519802753737353207074615734359950917633034041867497697849394985536732586580997316744690441713867540958059446378852789930297620222604833786957027197184006698392559628539458758277975628750775171072662357262156099911422044199119776211668331641095917636420244676259499477748560348602202823573665983770426282922735568820780900244211134532936029986419370700261488011130066473681600843990864279445635536649030253558266681746134732163994916058042638442347875574571919294921314038478195707704847242887613666027599240203590166042241934340471174690849959178248913783842199708330094706059766141282204703771349261845465467303949686774733804213775764864721402325034567509568877330744461204344698138303194549623159225216894758100480008789347237834635276279450652193595454415121670770058993190908223195136491307771401008770891360107630083958316519855924342524280718239245765071497107790470268951510947850084898361951159837168287131598618856023948505123054067976955802164238423731900524591132981388533153613275526318590113074530233657968268278701964894939858312848555329420551346758763412603037648991945626571950767817366711356065267604903640125757089182806339341468885796378166403252061915963576346584214070960520321235843301919111542224330257078627857685831760336918405043623623218177322286607121028025353816376982875087437289188692242440448124529064238399893918617384521476474527290475856945769548940414733949928109239080949364363998094818608866216883201409871009567794548425101533234569090375516630089610312693060075013396845329775390573341511572845753442124574506855139857087672290632520712822836898675653699908618283594666925898009548939833508608607260599779909008815361203081003227157528415246740299200554995948799831259966967806525309956398417425352543861623538307011474134635803745731847267250875746770766982302626792659921211234941731833882053196324508227865888959093887982719859970809616249967455654558771431045850598961881187639794534438030685376039310828691341548451406951017195388733834499617507054365137344410662419697760348536748426469448604793483530932640750916469203634994632111695419146368359339833746929053805269210488100993581075171407008234382621736446155623650688385406664750263808383762293216297895345148809644306105202242490456731839143553416517872397784142627170207117616546800488510968748159534050146410010900225410460505272717611800300176174751886985947613572282512798560845822104300231710375396317277094328371470734178310033428183218610039541143092072548258959267043864464067019986182140080743256758222364998974188269708680978061703088007330850301817979954406980309944743153559891729237589541344018176990147496150015837818215855483607900022663732655686300110093239694453332639499744272024497667341832341518261996223270150217325539338388475444196708640955072180280866107249608125454281286619085805121430852989367325716034183142321846736567033177166764958622722078083381202042487964418622425320574164505509217667075489286611913040599708716195534534575866921679871342975350542397202975526974957753497844993170014618854346782804011500877397090911335389729777688425147425653707225659768549265335006445942228732041557055574363071671478315218985234976551488390132425423807503054634266265542137826213300655078857699962239752567691950051475299821394882915795308134086830649337794708684433794705369036429172880274031644626953416473124875929802116738429300846368258041108589443155064127547730578769498657997299214316929898935573100095777193327343666456136807739936208212526323179690927158138732929201188422171096903075703929226961371897912656149953213489477096201294742738385902136137967167055346799290500698397301715510874102818517964855215115172099528516768891486769291346230843087259403358807539071183504277202836323683179078265380290655140041083740719498772639494011706018523988193688596387804837137717786509367084073068391855320094340208363746054252695211873108044187555617609150757296353758504243240978194894253561488051648399185550325409817923941633018831897300169815827459443001516839520793289738300462307725198142286148951142478439440317937819911800743416221271375057013264558879247432237718340532156058990251445907985761617469374174049678441215679716738971752972094145855349507157006920996807623674653318376939138922242997007311089636286145640685321012699136080416760311519093495183273488320240136224855610240134003134626860317310814142381469445745744312988970092743783644851419704393831404193089809870336977181337096190347252542337246633577184269223080133659191757033533670445433368346875296299597712382816252387319226452809710623121348465020836521844818866184432708251643138892691346300397967516905108567723009576758783140251278160521197786504211118003803877658280629033901085979269565501357187891176745582524331542155000436234325332651773064604028627338774142790245242183923664463705762075155544467497176172763469820054986252146724511695147486423691645218403742894405229905590313564067061881281936147158516087644390217739145563590052556448005684212375509470449959832354588039994963950899048481525477275883542383419590884309029779786306296038796100137911094697557722558499278494833301800755207967534234274887248989499965603683949638931118762378569545423932834137939138021647616118285271041532031479967768967462808938358947703060275473914250749974237751018161294576026327190979017858527604259806672994861552349980466179473571652046506342195244663206688176556106240872502147025613296682721844457249268312486837310823230261360564387698331214742713878609427817727747014502988707165820279954505779956773797633115663620397397289508489929230073829872744566111631572338222471484278324491268058258977023497243998988844939067198209483010356271863466864726221166286092829190808860962867602907791265041424348316701049279913939388016706714493232090945822681407566101660625138000793051663759617024346749625055889316850459372609378181761805626424927044621708514952079284031715105093449061273621226386882727965380249642434080605888446776533493338058135061734807525410509222833360336289595102939226655200812022605140049324644218351814904241332076450281003498689306907751777566101994377544114969360082451954596671173255725992859952119981246044186943505451985484433714684204234607713930938280777325979074551646211563456576877418149487019493256147325630113073449915110046253186604961336164705987026471007687253247036526105011083795161210599213425560459092290947785338107951611009854710399684225861046708990969462210054298677268685138827493436368017381290491823802175884434858199763060018402455043639347525831184432193636078822342855272045714074737369255993115783930109736819090487924888661206532460152000335168141422972804477193676562839111651217927275006871239204489224560659499951882162445251561519251541248698539440557530254984069771032438283335078495458321119998635017531513927437392901084739392972242542692195276630589584769378343518462089531228431076626920567680291911716197358785828771504571705365988485439338455687452361582509297690532338080100239588158759601890869057946746760040728484613767290873389593701930186035809192800969562487800035954203504649282600218351160276500359007615300515757508898779709877246512623459434858447146969974708619341633908471726486305914339279858862338017846384694050699293616338270067608418255741154878091279432910863846947853495266842413245686736164003947230214150059728260677166998592152224446922722452662753747553137462434046326231320967634891045845244598715834085735563556630887023572750027903905856709684257476157704227887757124631483082575613673921608702672850353548863884440900066221903279112207312376948419523363518890952580963345764362987689019978287277952578086509868522185854654213618794096811802407819350928688707440238724062879588975043085326106396878515638060391081322698344181591025607591793497200486019243990420559792338398268709614517166098033509667819207870694670445052964510380048754656246144268720559930338804756155067939792354864468392917295248902411941414395004555151105274496092565798501994597445334832292324136115789201898749628600240683858562935279953952763525046396599512968205865885738109875833622381771863255911903200835095037665281452075692485455860174792407834667524564755230285139131803587488375127641654069323952591318391877310092234823466809945560512533544279271701158598689104477558802992722469475457343409971488630110503021626875573525751934778139174961643122972879514029762422373759765314287522934382892975362750581751132453671903657267884376036661342843964219541887566119884579693381298937901406563419516192474661306516511725267669323609419087733340690450558165213454487297074862553371635331581087738855095802330159523967268648400713750438601474834235330437085390227380449117576988953079133406811397562588492545284394178380123683157531767298914314054054266990963190681914906510208311130377896728687657942468534543011606591877413631321762198303416289445543557360297724554881458955418542210450999122832422240671256313535578227419398806196547685103176356379705213628453476087647191624882510939310918226676457010246503649076887174058871800489062109983884602249535444174934077227481562851572448302453765047321847532378940907877851143226417167207865271313548633238344810072504878677344464081608772771449481960020157980944682498260587592717763415996642278042914584234546121362414297976133124187195363825151679773423909103521409278990450682793503356406863155407032340671391506418478690860575345041992163225409754423164352434991500264140292956147699696135281539726892935453106876852742287916824480432608704463478624349069682252057662741054671106465204178936003473244014157701024500525111785668386033963806047470587868478677866005941018778147625395184562630317637358327298263546058429323574557986170934591291167804403130173996890297165284394825291332954976005579513856860519351140890707453397241952980145879886978105344437928598187338219021315887361960592742773315472002853239408397789239344686421601638980426095208234422381784439647101937884365289752765795163630751895935377213417194091471158931428412311647990508749331887496749119177625623516517274409813373547097884797343831223446489714488277146796704707528417151005177758584705360452208655868043224502154261560328310031904546602778549929217020935777114230574433742647869213136054226574013575310385064398286790589577389246677367491487536907339515858623562466719142440369524996637703770985252803613777816346232435468253332516733074960201249413720878443642861735790578481437239478915479884748129025766655262300741908124515803036992955037147164379926226167619218381593549727846720152665688420845010280046156910091842431075734179979783749230883487520580468055061820398994057860895824863813246156474145956952950257440684073664889904226040560602079193578678161126084813574082600007829756702414971176685873724094152073889241847585711465880388970146267953322313509070101452690127057210105779022277343195276782480856529188340361561348550929855796859839712262320837313667484421485838926042660191699304201533766491830909468499432157653212172381580140823486192736058717317466163847683264531184832681703369211623877310612543643962337345035839522545922383698407681015377194206583397155612108653083191645988670212720030129762880942895247190983775045851394570956574880254102538475085951906008554776417154677487089697871874700602935649391122591469261263511710087692787102960769193239654139233235563061366787913078401419567070881356320830880213526970725503189214741870398652371928414023072687812809490256436240867996383840921607586376700609603866327956945454200216914054497140193729992601076381319927344795034858657960779221356583223536408862834118876504409798505054654654340618816822304137332216455898377580961438429059850323819755090293443799336410337513679189169504960056663576720505647998532197059594358470817219206875917266453374606287085863099056469497814288864827362802618046077223206196839764684021703896226885242604920443377925672122905761457061866837202922236817090556108848373230317984179859950962146699137111763195890862038319018061032059854841643758537559118461458584528636882655994870662977243594811242593731963776359913818723798612690418725118495457562018917042825869646026822042170164938176626617811529465195189729743965577948535312848582920828318037995320941088406331146501838211945555989460999499266195976995452899102082423620367295339270261124959008335815158764211599728620891355269369880777066243495576565602414466461313951949093817390758101911627280585346834490256559339783660736784597741875456385440960717762071157152054663841375517012505847417609854817536768451158381471816080654008826680154523338651980071906453012628196539678057912794047592200584891296694888963217168962672527132555070744099176536736468323874720058609140609125633443807501075614691579295085050547070656868116338927157780046853815222838857263960105057058243307334956179789792708461912072633112251197557082335365279102007024268161463397894521512991183827518360244054304112902681963889699612182085241809012781165396831190827645273329640058674414682090257661164073139455063771453745016860874539922946234522818828837496340942470763000717491170722821267660042795470521180204638104755668948924724039745847695888633985075452182680439794593084627425060093791510138248701420978485908934470218315026316537964710422414848508953653174885833202738382864411676022315464960073515324718648310766369966940592029950073626018052003382192830878675968406343999421251846765507910757723562376860823556630936746998493392075127302143459749574953145597189522407961223123553409134909993234776071487196398726480243384457525538908352522657598897188751829310731782947814194860357498926797639375692780897942649640984709512814089650303781983675097553142351844585048052518999108785885084128715673248602784852202625103212672429865661527695246604319778947900124911930886867136656012397500815427149001629595311461521909491378190818735821252571605128316359578846573762774931071481719546509212499934584164870580273389017244188393954501649198066523773617773603148318070338133033338972591051988165809681695447229880713273435088736826826770722034381291341169095581164119393086610843233071610442261294455334123815147843960365561837877205018038913232670227465189079832876850186118464035832178304638050199921558206268148596626835738621220408323149112415323716735712682952546582245705117230412997688385500025680894367542856812391925356804836843226527830989696461401860946353979452432274274964920385141721059486526602561621700757001951723017250514112376787574823102663139662690924447844096274279748103136259643012732398383704025649960014459222375208937377135086960530601311256939481230368773686301164318462671604583327430309190082530180667483584749343753766607113653497482984301901089950970913459388149100613517153938432877737734771821280254447470438819087196192237223304078940382387097398511730500403660027910360212920875397242062759420082766066071073341577474795254519604098132952303380378722701930037663925484469314023785380625108348136087828800437117299693827825611561606438539305841566582411873588437947478804984065159864435345076088007997181939891110871504386314503554946209094365654392650941459734437752499801655609105275249481281179902173573014492328741267556064260298802557836413692016016617669748043542306072551697935735746825089695874826948731881544269818023315400606701953197215378857346583566060188867877883402696009264891214523761321850570390767193931751146569912952896078615794446670090410139420800171065178067033197994516163258550311481959276610659074044524985800229299228966543054067588746481449229311460408549457355981220577363061921476421011073334112714243475459628100874153150699878674569108206416345365903297922921012380381007569387269116011092957834426860655788441475726921085179645009860474953277920185440079838954484886707511916628030508605658217777697998220345113976466651924617025416334341044221145733295408504392807954396151307885264705378477983896727073836856837620235140207456693911087053479132411488788790158615971668352740445806936367038922357337268462210096916521348168176682743961853038638673061119918119187716359164169444571406379455424290874419543670817530677676541875022056511296774022477450002728679040664986471899711013362194181815184472591061447488424875027349454680510566851684048259975803596168445168373243003982331546478158041588277779460034850719864600409493977640398092361316514907508342421422902139051990165573319189692423186174767104600600148134265471179386165793927640354534589543137690424787165731974481919188300904505418400996882308154835099253666611841538312312998231819699109801429636853713921345260197299766841937950906406548032602340054884977654139891095815240233234467133442021495220744851782237688425688959031252711264762708767338357468592642121004081137201237521417098050822536684007206712882631152148490890523814401714196984944804679489675174776184049404631094279956737122753825775748085792754776105710867256129753274940581094794847870606374893196903901621417734653625666077403420493919792655024777067311768016577482896998471910716852097033010898010186445031926303162374116046753551168125391955617905343365937938089282722859914768508181201172867540470665654742948597222563280678451402182626324367627789943262937705557087265579856057809551086296577566990613910362180278129785662042808063521713920147250640452588776439271155252643537150490630447948841296952179190073624651786379689854808868529795126378890858504242865541942872273056884845871457476143153314718677063731935291546180195217512217731081929119956154340451468735032164383282109523299782542573539172290016513396984876017270183825894574556108791029901424155246809340828709852267349158535664375031049444588500491485483180968913365990395654771006567422899781917903880556974077808484614702490694200671838213724208851280759884631990288078363988372431080994688444143679764701359755518252438059867085825863935412502662727657199067541943193285433812175474512578521148274909532958863395251951656595291321511692041940837930800910247884453729889188341633145491480408091982281173152722432780262445509782321678235044878025855705718538907483505898554256099969620966130090965658274503055056304302205589701600825504127756601491826803917988196135982155843447379573702413895350487644347515252532802411844463140907913400762357692797913754689226884736149676856077439534956014628788995262183121832769384699326248204543358092547676462813616252866002903472891134064144250270608421664146813965398780967700813244277543465345874410359433720560138908410081960804386664051419536311000388461950017124667515147440366134559808879788950521931999172295176273037788753694443728709322519027105308073803344250662527867491541720713646960403245267328210151103865256574620291837156086589496185518608531139968035120710186676603591051690907519688103777386210264556171179825957862984636184672745364037121364433025001866944845893062929771460245708428537857217531391554082579635931071315989384210450732463188365244921677970430073450551852731279385366659239344190124417726744852219108768490083445392411318877611652510551507575859804011711680935050414745944483162589233546375855776767002031155304479918355861115050998041016086837193337357975553651024649345386759740045299465443507262891914362838579825472072300373383314140809137622653162428553463542462300076344744853432331717707644082936407500448460168077342282673654690211705120825871739934721949817495250924250726925642789857144682543911295027774569440308524614307137969039330836064040018859177956858262686679114699075516215713058458238926200549247748286076368766901533212848354177289041468683550109704090524777537298208489933703135462881564099431841848525123082824584262118062924394370484670057600731014483833794809349939449513215416659281982338744013219843698812101653169164961442714143245482547387629724500143589118257677641415351286224243126644694731445894464907012370826536309474640534463336976668148365069960714298144682556320014978368933051669087408158855984456703270505669128365644980537540195891176195932619380439852108327520574536278469874845019532470297825798400478093569804309947662567686031949573083415953921209066913357170933142936795525992559921024120101313417481679563312303503160869343508168983778370718810001468711081456752658660638884619648395491000804102621263814323434264516893555329375430827852957296723644138547682740396981624166189947325058111521969662924312118815724801397142272873868447289013964235982967010968586926180105408495917618647401412474267934889758834498858014189818668698566257552425115133889558784816299389496397417033311988726873131528027212434926334053497309720298910228004908373296479534316950778781520725900232954876062179302157414640607899306414205889014396961918180959152949138198462355194937194456512982188462378681558730644868873850415529812634340472775726538865787580204790312618484890551873888725947776814785942928251702376169625542673210477924328163129048539475711728834200324746845178811691006259463580546059295237249941449674655889780033821763324072532714591843213015032197235641764896047227129055747346130958417293148044805889632654064150538697516962493630444716415940433176064306038719972147798773892848955893028582296350937617680827682919135911466714042777926514452512292960800340786722340541320649179899342782139190630921424731548524409813721719049277450147536299714482855123942922188882872165823371928562075908049597357931836592697073626866846662967056473414696012289054649334216959657450094861720796723399048221426950965351576190183628497897472913885974861195482287233272330631073272906238657963912961558017968672419636993357507327926654753450832552123516981295456326013018790230598241273242036157017241368719980083222349838069075595238052192860532054572107246906693777913015221780039950986575108200809776528168571461898916911635158704269356305188550156111768320987228764381341870572861116475331926890642183771521971835146026562830353905646181730936806570256764236706591127446751335707108810195680022570551336875595585544273574341544072591447472845400028098970682853724683437493734410851193196097453241753890472845085958747424602856097878528545187775407997154621177303031339100172669288976201057951121885825950956918526102107090036450824200069159718001599236330078833562106398636742717199392085787672934536134885946613681541796565247637961760715070517432423497976271253568381906775894367733653120631963151801986593531388967149711435973775550871188943713859848091954630234668612328899619278198946718625627630057172226198717255668223923904890768146987080707751220177091609648770120434768279559338063610192024519833268119705454153308595651538813921780342498141963164905511260143454931265701556562158264090824648351579043435702893453635054819012476149728370681444278505199006903212896548769236882909068546671150995589760754891507625492685131792418299782542728547778448453461101792924207968158552174577602546294984095234678192840960476386210024350185606609410667690932843429705931268359659552164788030824711745176610929643714782697763464025941436376119883442043651405819785395750254618094489169401030013543819259121122854238722988776519602373221724050916405650079014770648187623734031750235491964410642041932852871687936595663020518293155034697291267571007407824355433018154958785858475434507850904892164905683726569122392614760515053956908698779269999187649883835020011034268265026969018909896424000140656288941654229991152436190033893023874485198177367035859326595056483973691102528528964240238162690169769797872053924417306882145869496570622068064152567048641672910089034466482148259576598883675676559305620962774588428084766784414116997805736320364832583212662721001886011390639353175491376666606897406774841966431435260003955902744717191497660803060479889578097868601071357264140408520715503208109783638446056461520984027952828516557607719738796731794525772221096980949945273561032910012006494033523485945355873048645021280439047580017537220142423121774893185173329466211269176408088586862489556539533649460684315877915679859150495016361992776208222457743409154600833608278358758581453060018874654806158469935209424129086588097007658952952942711111315126687583428566179129561920536410044079683799872613222554918639288601507650870472774003701806254718086876319171696486793614727732979757046379755146280328266354020758820986430077712971580486344586381703953969346321181169192104636494630154711153619666625612026906439506854218786812240993780516646058740408377608389717211889712944024277671668754396479044681943854146770948657994287785792979803623008497859770742430848349599307423855758769983547158184688235373094032850678988103388739359527893501071404914173640804862181613420873011412458842231120289553227515291208261892442680444656692441590713999797893022991343828360615540663044391445778085139945599094074239762612456772578548076328639557450793670916499825916076795474644981946658952214795605488453772955033488494865214498815920404443957690438775163101524744668822878389148182995253640866407630244850888822773889814481442580382544887918223306200047057093191744017116590681555324789182407775866665100435926469674592435181453789517497170913007733429647167891477189372321676652882834647772070310297542094397523932163345722780599675988114774549208494809224706159973495073321478676741593210626463245533420320135047805255300115734651077808653087217338440136071977085011680526600480673446362453506269853330351107802011024714941904163599640702033334178009708280027243676240239632839833190086800100058785505242035602151193311212381125806324264054598875454442839222700398014359114677186893678295446859099994129657734990682460457444371064184692311755752541422151199708105198384237430802858411911034947006709981625809080232934922144135663658449085571277501979917843893240809260006508919841301015540362593229032108072689825169873993483717822344427052288062898849905137744969579079629178617645467526962720055032628667023552336797726063643852366606175531613341317196197864392121268769055177347789594578286793751698667802479410433905992805940732000255661814631962700778143239536096104701729340494466620042894434699772502523362436113819044501776630394960920395546918993072887803159200038513497548607143872818383086380817680722559842374631006953530567999908324197175226060014824313203037348268169926095288097144322551789684890648663457922550958843785072651487101659277551662918941361681291844882428584914633290399404985318303936955530378939063462556418941415029264319234049598323408367493224900433835477731924409751183050397065819857193854143426088211957823771085106209820471610682278689620969757921676775517314616530623257688107672947682658597173652390580624930436511108825021373017722979145548745526360319873068471900353622658246145403431408136194441206504994577360905054778745696917584830341379595574153259059234508991895104113725321454131921375733178112506607565288638393093800774772362121100123864093486021508415014831723894064495994297265569568730807876269888569731031755846775128444574553397997813792654431921834421363070757915775647019542518885598183471508749639882165975381022375915486437492344074425523139962629180384112629956456129401567847766137658011123670830980985007918997025977030110831796067951569965572007575902702144061044911452833206811316731088885223390097768175624261207932093558751202518412009102502007023386813814634972054308310984171324107369665562496654937381813957760624019775704510736176400350162938954403024939727373854471651438233295189222680764895418150428010246315726137001519913632525676047478506575714031274113457537113188910649703107854178914089554130455302878654582163342569616634049525997099279447905529226719538257258587393274130154916630672048328356066972804687652587441088521105876230763044801393780365032533142790361470708396485178111545244300098858104533794718403395346580859879503012075351566479135465214976248731740221718399842254842989306171139607700220638169440749741888701799889068347341403175965274567786320642727227656038739437174585149316301185870988806202046350716742616122073255219743263265181032576138673817502982223737574646083182965575011782438275471222775799172556149461261270904660505267167223932500389201907340426107384301197825454396941178367831034191888309584133979272805382546626473199829417047335138373106220916975733273156589158399416510189572510284174693874373753133185652978668579739303451944894907199782629217544087253869509690256364913361662649103302968370399404779514747755870330411967687050772107617321483418530312001893714042946479603145311350066416700023524669310259433718669444400963997152321649187814086836681368125870117467589428150519860600640710086475174958709157959905729767405260915067140443398013208738176994367507976640722447299842158803184305897947861652814216645807199421852517436374675233515223073367877374551529844461509573192306345037036313453322168768871805379018319904446550904855025013177324986195190433459157524173696890570121205948432263283565890164054944492494351263003114712693604264490550542501889653141667181313000917724453608551190885106698104041467588804923153077182674791076853804068398921227580309702149594473809868273473312340587938036654043442190717164560665129378355602095649072482648351965488556846296156897637715040962462010579776075850857781777376501426558909658580563413806753500690392254667257452261154877591099601883907846796078591115005269420617357121701976371785105596442959618559023720438391967628002735526981355323275637931672939282477623932022778544033100210379546063147023481872886415248211452729969152894850131780271188121472084090813830635493161325791646756216819484619434213399002311094007368175499040105370285459703462333608878126345166364275991309512708416171091252888271665752450769886751300197665033144009722236940513663503005517281624212062955587593905225204836125872420287156842497966510035381857017390496082026717117234446921374861682933593570817241106919584808267765255054877674327988929228526399335672320294573301001520843029197879539804218174400897658113932684317529388849754954547596665544635912594206180442533467344212032289410055743489598571841851117728886296883795457231078767117936640524239691929950908446099602437176001623544091050434889834488714558740591334803757508108213516471546244015687292725425961643005362084352528358998024484653362422817109599601827699239352698885776941029330533541192182033534815267864184300550859195484210442525809817478579086995239359572577878359857446016518293777772864837474595440203648840299944295003769029699812826670409448793305461680584150168511183561532408798094923463652836206847759544700761192784929675948448992774264756317901512710819515240377741714381578912318556683115599448809641013883431262041387895097129237574051734778907972947159713776030845364618737701437543788226417693517009464573693269163629836955181552453496432755298484707463786288236903178335220459845956025360838502442970340189970392285865395671330968107511680246013657146012292592726485990026067413336342912103988713654170966139605163811546859346092725013904046570958813090147586439690356080526002237067236208245581181104709820327435557479421048052102582945221727461079444883918690338568109856888473513216220902224916728774326675355246632875935193968645350659198408253015704540743454421175757722114992310792258682019154490386219338234855437019047513801817401966723441526965608853765796515819930902713986177822928103138866085869256177002823453937381750059810088988044992163878606494194942003728500483586733358419306065079413977546321632519557047405447758733069812177634710857655153708861398629124189882384961710471521696214316529809386737702792483019120104057983961636647935371498532955879072997143024922657859098831534282291039354692521854358932834033079077749660374347639359192129174608455854501478303286948350836377823786093757486840385379733704303180151630575572859840539517606670680890940314761502410867637720572494875842467283500906724147538683524285131521824679772373745705655291821841553636624574535994728495285140266712799463114681763773933801244847002709448323561838029381738291966632458552074655518389534127169628384377734519284699241471083404269760700018182204794404287701819691216381554007876115119366692872982493573130991180381561849948696022256167794093781010683628532555609969925503390052027633657135364055586665400097666209196786378997827923885723733291301616727422693871941122400000852137552752735919034668718884001271277947100817035228006279688274415192053253373855168093694549786789710733924396709597311514345638326570413189498231548126537259395975675283269228288437973242922424415919423396209042686615963781323856273642608141820472118230036648391889539721693265027529331515394513993428691615334165115485101112923744798941721691321577793251660840054500252718711487093865529781654778907992517365552078125868472676816797487586252427646134096661776029377149391080559672415449995426515067850638413525415089100674005993952074787337038441672320733134525556389880446580080915750147942037139997249753619127876102451083024162313175339423890521136479018002018284869981683123004832474627600914139214330016395652367362789835704364262039618514932181766121720953319121045210670266874090641919066784531915512931161152675968995662200513952927276870774262354013616729425606192170846845084136763603683726050134796690309333172432767501077016178941879137036576410003615620374169634228827967205498547282836561829082987166479810334518370009378884652334426945447921995955901150236225598284371072480043530582240830473314363170265028896465972017758373959256362854059666662550126674583687965776797215056816760067845756991797032721491730412298066456848713671526919843460994186809763222427245889347264252765604238690439311764137594322453250858384001622021750225328190551116273623414797841749098958001', -); diff --git a/test/src/integer/arithmetic/sub.js b/test/src/integer/arithmetic/sub.js deleted file mode 100644 index 76d7324..0000000 --- a/test/src/integer/arithmetic/sub.js +++ /dev/null @@ -1,1401 +0,0 @@ -import test from 'ava'; -import {parse, stringify, sub} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const b = parse(B); - const c = sub(a, b); - t.is(stringify(a), A); - t.is(stringify(b), B); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `sub(${fmt(A)},${fmt(B)}) = ${fmt(C)}`; - -test(macro, '0', '0', '0'); -test(macro, '0', '1', '-1'); -test(macro, '0', '-1', '1'); -test(macro, '0', '3', '-3'); -test(macro, '0', '-3', '3'); -test(macro, '0', '7', '-7'); -test(macro, '0', '-7', '7'); -test(macro, '0', '9', '-9'); -test(macro, '0', '-9', '9'); -test(macro, '0', '11', '-11'); -test(macro, '0', '-11', '11'); -test(macro, '0', '17', '-17'); -test(macro, '0', '-17', '17'); -test(macro, '0', '22', '-22'); -test(macro, '0', '-22', '22'); -test(macro, '0', '24', '-24'); -test(macro, '0', '-24', '24'); -test(macro, '0', '27', '-27'); -test(macro, '0', '-27', '27'); -test(macro, '0', '29', '-29'); -test(macro, '0', '-29', '29'); -test(macro, '0', '1234', '-1234'); -test(macro, '0', '-1234', '1234'); -test(macro, '0', '5678', '-5678'); -test(macro, '0', '-5678', '5678'); -test(macro, '0', '94906265', '-94906265'); -test(macro, '0', '-94906265', '94906265'); -test(macro, '0', '94906266', '-94906266'); -test(macro, '0', '-94906266', '94906266'); -test(macro, '0', '1073741824', '-1073741824'); -test(macro, '0', '-1073741824', '1073741824'); -test(macro, '0', '51676101935731', '-51676101935731'); -test(macro, '0', '-51676101935731', '51676101935731'); -test(macro, '0', '717897987691852588770249', '-717897987691852588770249'); -test(macro, '0', '-717897987691852588770249', '717897987691852588770249'); -test(macro, '1', '0', '1'); -test(macro, '-1', '0', '-1'); -test(macro, '1', '1', '0'); -test(macro, '-1', '1', '-2'); -test(macro, '1', '-1', '2'); -test(macro, '-1', '-1', '0'); -test(macro, '1', '3', '-2'); -test(macro, '-1', '3', '-4'); -test(macro, '1', '-3', '4'); -test(macro, '-1', '-3', '2'); -test(macro, '1', '7', '-6'); -test(macro, '-1', '7', '-8'); -test(macro, '1', '-7', '8'); -test(macro, '-1', '-7', '6'); -test(macro, '1', '9', '-8'); -test(macro, '-1', '9', '-10'); -test(macro, '1', '-9', '10'); -test(macro, '-1', '-9', '8'); -test(macro, '1', '11', '-10'); -test(macro, '-1', '11', '-12'); -test(macro, '1', '-11', '12'); -test(macro, '-1', '-11', '10'); -test(macro, '1', '17', '-16'); -test(macro, '-1', '17', '-18'); -test(macro, '1', '-17', '18'); -test(macro, '-1', '-17', '16'); -test(macro, '1', '22', '-21'); -test(macro, '-1', '22', '-23'); -test(macro, '1', '-22', '23'); -test(macro, '-1', '-22', '21'); -test(macro, '1', '24', '-23'); -test(macro, '-1', '24', '-25'); -test(macro, '1', '-24', '25'); -test(macro, '-1', '-24', '23'); -test(macro, '1', '27', '-26'); -test(macro, '-1', '27', '-28'); -test(macro, '1', '-27', '28'); -test(macro, '-1', '-27', '26'); -test(macro, '1', '29', '-28'); -test(macro, '-1', '29', '-30'); -test(macro, '1', '-29', '30'); -test(macro, '-1', '-29', '28'); -test(macro, '1', '1234', '-1233'); -test(macro, '-1', '1234', '-1235'); -test(macro, '1', '-1234', '1235'); -test(macro, '-1', '-1234', '1233'); -test(macro, '1', '5678', '-5677'); -test(macro, '-1', '5678', '-5679'); -test(macro, '1', '-5678', '5679'); -test(macro, '-1', '-5678', '5677'); -test(macro, '1', '94906265', '-94906264'); -test(macro, '-1', '94906265', '-94906266'); -test(macro, '1', '-94906265', '94906266'); -test(macro, '-1', '-94906265', '94906264'); -test(macro, '1', '94906266', '-94906265'); -test(macro, '-1', '94906266', '-94906267'); -test(macro, '1', '-94906266', '94906267'); -test(macro, '-1', '-94906266', '94906265'); -test(macro, '1', '1073741824', '-1073741823'); -test(macro, '-1', '1073741824', '-1073741825'); -test(macro, '1', '-1073741824', '1073741825'); -test(macro, '-1', '-1073741824', '1073741823'); -test(macro, '1', '51676101935731', '-51676101935730'); -test(macro, '-1', '51676101935731', '-51676101935732'); -test(macro, '1', '-51676101935731', '51676101935732'); -test(macro, '-1', '-51676101935731', '51676101935730'); -test(macro, '1', '717897987691852588770249', '-717897987691852588770248'); -test(macro, '-1', '717897987691852588770249', '-717897987691852588770250'); -test(macro, '1', '-717897987691852588770249', '717897987691852588770250'); -test(macro, '-1', '-717897987691852588770249', '717897987691852588770248'); -test(macro, '3', '0', '3'); -test(macro, '-3', '0', '-3'); -test(macro, '3', '1', '2'); -test(macro, '-3', '1', '-4'); -test(macro, '3', '-1', '4'); -test(macro, '-3', '-1', '-2'); -test(macro, '3', '3', '0'); -test(macro, '-3', '3', '-6'); -test(macro, '3', '-3', '6'); -test(macro, '-3', '-3', '0'); -test(macro, '3', '7', '-4'); -test(macro, '-3', '7', '-10'); -test(macro, '3', '-7', '10'); -test(macro, '-3', '-7', '4'); -test(macro, '3', '9', '-6'); -test(macro, '-3', '9', '-12'); -test(macro, '3', '-9', '12'); -test(macro, '-3', '-9', '6'); -test(macro, '3', '11', '-8'); -test(macro, '-3', '11', '-14'); -test(macro, '3', '-11', '14'); -test(macro, '-3', '-11', '8'); -test(macro, '3', '17', '-14'); -test(macro, '-3', '17', '-20'); -test(macro, '3', '-17', '20'); -test(macro, '-3', '-17', '14'); -test(macro, '3', '22', '-19'); -test(macro, '-3', '22', '-25'); -test(macro, '3', '-22', '25'); -test(macro, '-3', '-22', '19'); -test(macro, '3', '24', '-21'); -test(macro, '-3', '24', '-27'); -test(macro, '3', '-24', '27'); -test(macro, '-3', '-24', '21'); -test(macro, '3', '27', '-24'); -test(macro, '-3', '27', '-30'); -test(macro, '3', '-27', '30'); -test(macro, '-3', '-27', '24'); -test(macro, '3', '29', '-26'); -test(macro, '-3', '29', '-32'); -test(macro, '3', '-29', '32'); -test(macro, '-3', '-29', '26'); -test(macro, '3', '1234', '-1231'); -test(macro, '-3', '1234', '-1237'); -test(macro, '3', '-1234', '1237'); -test(macro, '-3', '-1234', '1231'); -test(macro, '3', '5678', '-5675'); -test(macro, '-3', '5678', '-5681'); -test(macro, '3', '-5678', '5681'); -test(macro, '-3', '-5678', '5675'); -test(macro, '3', '94906265', '-94906262'); -test(macro, '-3', '94906265', '-94906268'); -test(macro, '3', '-94906265', '94906268'); -test(macro, '-3', '-94906265', '94906262'); -test(macro, '3', '94906266', '-94906263'); -test(macro, '-3', '94906266', '-94906269'); -test(macro, '3', '-94906266', '94906269'); -test(macro, '-3', '-94906266', '94906263'); -test(macro, '3', '1073741824', '-1073741821'); -test(macro, '-3', '1073741824', '-1073741827'); -test(macro, '3', '-1073741824', '1073741827'); -test(macro, '-3', '-1073741824', '1073741821'); -test(macro, '3', '51676101935731', '-51676101935728'); -test(macro, '-3', '51676101935731', '-51676101935734'); -test(macro, '3', '-51676101935731', '51676101935734'); -test(macro, '-3', '-51676101935731', '51676101935728'); -test(macro, '3', '717897987691852588770249', '-717897987691852588770246'); -test(macro, '-3', '717897987691852588770249', '-717897987691852588770252'); -test(macro, '3', '-717897987691852588770249', '717897987691852588770252'); -test(macro, '-3', '-717897987691852588770249', '717897987691852588770246'); -test(macro, '7', '0', '7'); -test(macro, '-7', '0', '-7'); -test(macro, '7', '1', '6'); -test(macro, '-7', '1', '-8'); -test(macro, '7', '-1', '8'); -test(macro, '-7', '-1', '-6'); -test(macro, '7', '3', '4'); -test(macro, '-7', '3', '-10'); -test(macro, '7', '-3', '10'); -test(macro, '-7', '-3', '-4'); -test(macro, '7', '7', '0'); -test(macro, '-7', '7', '-14'); -test(macro, '7', '-7', '14'); -test(macro, '-7', '-7', '0'); -test(macro, '7', '9', '-2'); -test(macro, '-7', '9', '-16'); -test(macro, '7', '-9', '16'); -test(macro, '-7', '-9', '2'); -test(macro, '7', '11', '-4'); -test(macro, '-7', '11', '-18'); -test(macro, '7', '-11', '18'); -test(macro, '-7', '-11', '4'); -test(macro, '7', '17', '-10'); -test(macro, '-7', '17', '-24'); -test(macro, '7', '-17', '24'); -test(macro, '-7', '-17', '10'); -test(macro, '7', '22', '-15'); -test(macro, '-7', '22', '-29'); -test(macro, '7', '-22', '29'); -test(macro, '-7', '-22', '15'); -test(macro, '7', '24', '-17'); -test(macro, '-7', '24', '-31'); -test(macro, '7', '-24', '31'); -test(macro, '-7', '-24', '17'); -test(macro, '7', '27', '-20'); -test(macro, '-7', '27', '-34'); -test(macro, '7', '-27', '34'); -test(macro, '-7', '-27', '20'); -test(macro, '7', '29', '-22'); -test(macro, '-7', '29', '-36'); -test(macro, '7', '-29', '36'); -test(macro, '-7', '-29', '22'); -test(macro, '7', '1234', '-1227'); -test(macro, '-7', '1234', '-1241'); -test(macro, '7', '-1234', '1241'); -test(macro, '-7', '-1234', '1227'); -test(macro, '7', '5678', '-5671'); -test(macro, '-7', '5678', '-5685'); -test(macro, '7', '-5678', '5685'); -test(macro, '-7', '-5678', '5671'); -test(macro, '7', '94906265', '-94906258'); -test(macro, '-7', '94906265', '-94906272'); -test(macro, '7', '-94906265', '94906272'); -test(macro, '-7', '-94906265', '94906258'); -test(macro, '7', '94906266', '-94906259'); -test(macro, '-7', '94906266', '-94906273'); -test(macro, '7', '-94906266', '94906273'); -test(macro, '-7', '-94906266', '94906259'); -test(macro, '7', '1073741824', '-1073741817'); -test(macro, '-7', '1073741824', '-1073741831'); -test(macro, '7', '-1073741824', '1073741831'); -test(macro, '-7', '-1073741824', '1073741817'); -test(macro, '7', '51676101935731', '-51676101935724'); -test(macro, '-7', '51676101935731', '-51676101935738'); -test(macro, '7', '-51676101935731', '51676101935738'); -test(macro, '-7', '-51676101935731', '51676101935724'); -test(macro, '7', '717897987691852588770249', '-717897987691852588770242'); -test(macro, '-7', '717897987691852588770249', '-717897987691852588770256'); -test(macro, '7', '-717897987691852588770249', '717897987691852588770256'); -test(macro, '-7', '-717897987691852588770249', '717897987691852588770242'); -test(macro, '9', '0', '9'); -test(macro, '-9', '0', '-9'); -test(macro, '9', '1', '8'); -test(macro, '-9', '1', '-10'); -test(macro, '9', '-1', '10'); -test(macro, '-9', '-1', '-8'); -test(macro, '9', '3', '6'); -test(macro, '-9', '3', '-12'); -test(macro, '9', '-3', '12'); -test(macro, '-9', '-3', '-6'); -test(macro, '9', '7', '2'); -test(macro, '-9', '7', '-16'); -test(macro, '9', '-7', '16'); -test(macro, '-9', '-7', '-2'); -test(macro, '9', '9', '0'); -test(macro, '-9', '9', '-18'); -test(macro, '9', '-9', '18'); -test(macro, '-9', '-9', '0'); -test(macro, '9', '11', '-2'); -test(macro, '-9', '11', '-20'); -test(macro, '9', '-11', '20'); -test(macro, '-9', '-11', '2'); -test(macro, '9', '17', '-8'); -test(macro, '-9', '17', '-26'); -test(macro, '9', '-17', '26'); -test(macro, '-9', '-17', '8'); -test(macro, '9', '22', '-13'); -test(macro, '-9', '22', '-31'); -test(macro, '9', '-22', '31'); -test(macro, '-9', '-22', '13'); -test(macro, '9', '24', '-15'); -test(macro, '-9', '24', '-33'); -test(macro, '9', '-24', '33'); -test(macro, '-9', '-24', '15'); -test(macro, '9', '27', '-18'); -test(macro, '-9', '27', '-36'); -test(macro, '9', '-27', '36'); -test(macro, '-9', '-27', '18'); -test(macro, '9', '29', '-20'); -test(macro, '-9', '29', '-38'); -test(macro, '9', '-29', '38'); -test(macro, '-9', '-29', '20'); -test(macro, '9', '1234', '-1225'); -test(macro, '-9', '1234', '-1243'); -test(macro, '9', '-1234', '1243'); -test(macro, '-9', '-1234', '1225'); -test(macro, '9', '5678', '-5669'); -test(macro, '-9', '5678', '-5687'); -test(macro, '9', '-5678', '5687'); -test(macro, '-9', '-5678', '5669'); -test(macro, '9', '94906265', '-94906256'); -test(macro, '-9', '94906265', '-94906274'); -test(macro, '9', '-94906265', '94906274'); -test(macro, '-9', '-94906265', '94906256'); -test(macro, '9', '94906266', '-94906257'); -test(macro, '-9', '94906266', '-94906275'); -test(macro, '9', '-94906266', '94906275'); -test(macro, '-9', '-94906266', '94906257'); -test(macro, '9', '1073741824', '-1073741815'); -test(macro, '-9', '1073741824', '-1073741833'); -test(macro, '9', '-1073741824', '1073741833'); -test(macro, '-9', '-1073741824', '1073741815'); -test(macro, '9', '51676101935731', '-51676101935722'); -test(macro, '-9', '51676101935731', '-51676101935740'); -test(macro, '9', '-51676101935731', '51676101935740'); -test(macro, '-9', '-51676101935731', '51676101935722'); -test(macro, '9', '717897987691852588770249', '-717897987691852588770240'); -test(macro, '-9', '717897987691852588770249', '-717897987691852588770258'); -test(macro, '9', '-717897987691852588770249', '717897987691852588770258'); -test(macro, '-9', '-717897987691852588770249', '717897987691852588770240'); -test(macro, '11', '0', '11'); -test(macro, '-11', '0', '-11'); -test(macro, '11', '1', '10'); -test(macro, '-11', '1', '-12'); -test(macro, '11', '-1', '12'); -test(macro, '-11', '-1', '-10'); -test(macro, '11', '3', '8'); -test(macro, '-11', '3', '-14'); -test(macro, '11', '-3', '14'); -test(macro, '-11', '-3', '-8'); -test(macro, '11', '7', '4'); -test(macro, '-11', '7', '-18'); -test(macro, '11', '-7', '18'); -test(macro, '-11', '-7', '-4'); -test(macro, '11', '9', '2'); -test(macro, '-11', '9', '-20'); -test(macro, '11', '-9', '20'); -test(macro, '-11', '-9', '-2'); -test(macro, '11', '11', '0'); -test(macro, '-11', '11', '-22'); -test(macro, '11', '-11', '22'); -test(macro, '-11', '-11', '0'); -test(macro, '11', '17', '-6'); -test(macro, '-11', '17', '-28'); -test(macro, '11', '-17', '28'); -test(macro, '-11', '-17', '6'); -test(macro, '11', '22', '-11'); -test(macro, '-11', '22', '-33'); -test(macro, '11', '-22', '33'); -test(macro, '-11', '-22', '11'); -test(macro, '11', '24', '-13'); -test(macro, '-11', '24', '-35'); -test(macro, '11', '-24', '35'); -test(macro, '-11', '-24', '13'); -test(macro, '11', '27', '-16'); -test(macro, '-11', '27', '-38'); -test(macro, '11', '-27', '38'); -test(macro, '-11', '-27', '16'); -test(macro, '11', '29', '-18'); -test(macro, '-11', '29', '-40'); -test(macro, '11', '-29', '40'); -test(macro, '-11', '-29', '18'); -test(macro, '11', '1234', '-1223'); -test(macro, '-11', '1234', '-1245'); -test(macro, '11', '-1234', '1245'); -test(macro, '-11', '-1234', '1223'); -test(macro, '11', '5678', '-5667'); -test(macro, '-11', '5678', '-5689'); -test(macro, '11', '-5678', '5689'); -test(macro, '-11', '-5678', '5667'); -test(macro, '11', '94906265', '-94906254'); -test(macro, '-11', '94906265', '-94906276'); -test(macro, '11', '-94906265', '94906276'); -test(macro, '-11', '-94906265', '94906254'); -test(macro, '11', '94906266', '-94906255'); -test(macro, '-11', '94906266', '-94906277'); -test(macro, '11', '-94906266', '94906277'); -test(macro, '-11', '-94906266', '94906255'); -test(macro, '11', '1073741824', '-1073741813'); -test(macro, '-11', '1073741824', '-1073741835'); -test(macro, '11', '-1073741824', '1073741835'); -test(macro, '-11', '-1073741824', '1073741813'); -test(macro, '11', '51676101935731', '-51676101935720'); -test(macro, '-11', '51676101935731', '-51676101935742'); -test(macro, '11', '-51676101935731', '51676101935742'); -test(macro, '-11', '-51676101935731', '51676101935720'); -test(macro, '11', '717897987691852588770249', '-717897987691852588770238'); -test(macro, '-11', '717897987691852588770249', '-717897987691852588770260'); -test(macro, '11', '-717897987691852588770249', '717897987691852588770260'); -test(macro, '-11', '-717897987691852588770249', '717897987691852588770238'); -test(macro, '17', '0', '17'); -test(macro, '-17', '0', '-17'); -test(macro, '17', '1', '16'); -test(macro, '-17', '1', '-18'); -test(macro, '17', '-1', '18'); -test(macro, '-17', '-1', '-16'); -test(macro, '17', '3', '14'); -test(macro, '-17', '3', '-20'); -test(macro, '17', '-3', '20'); -test(macro, '-17', '-3', '-14'); -test(macro, '17', '7', '10'); -test(macro, '-17', '7', '-24'); -test(macro, '17', '-7', '24'); -test(macro, '-17', '-7', '-10'); -test(macro, '17', '9', '8'); -test(macro, '-17', '9', '-26'); -test(macro, '17', '-9', '26'); -test(macro, '-17', '-9', '-8'); -test(macro, '17', '11', '6'); -test(macro, '-17', '11', '-28'); -test(macro, '17', '-11', '28'); -test(macro, '-17', '-11', '-6'); -test(macro, '17', '17', '0'); -test(macro, '-17', '17', '-34'); -test(macro, '17', '-17', '34'); -test(macro, '-17', '-17', '0'); -test(macro, '17', '22', '-5'); -test(macro, '-17', '22', '-39'); -test(macro, '17', '-22', '39'); -test(macro, '-17', '-22', '5'); -test(macro, '17', '24', '-7'); -test(macro, '-17', '24', '-41'); -test(macro, '17', '-24', '41'); -test(macro, '-17', '-24', '7'); -test(macro, '17', '27', '-10'); -test(macro, '-17', '27', '-44'); -test(macro, '17', '-27', '44'); -test(macro, '-17', '-27', '10'); -test(macro, '17', '29', '-12'); -test(macro, '-17', '29', '-46'); -test(macro, '17', '-29', '46'); -test(macro, '-17', '-29', '12'); -test(macro, '17', '1234', '-1217'); -test(macro, '-17', '1234', '-1251'); -test(macro, '17', '-1234', '1251'); -test(macro, '-17', '-1234', '1217'); -test(macro, '17', '5678', '-5661'); -test(macro, '-17', '5678', '-5695'); -test(macro, '17', '-5678', '5695'); -test(macro, '-17', '-5678', '5661'); -test(macro, '17', '94906265', '-94906248'); -test(macro, '-17', '94906265', '-94906282'); -test(macro, '17', '-94906265', '94906282'); -test(macro, '-17', '-94906265', '94906248'); -test(macro, '17', '94906266', '-94906249'); -test(macro, '-17', '94906266', '-94906283'); -test(macro, '17', '-94906266', '94906283'); -test(macro, '-17', '-94906266', '94906249'); -test(macro, '17', '1073741824', '-1073741807'); -test(macro, '-17', '1073741824', '-1073741841'); -test(macro, '17', '-1073741824', '1073741841'); -test(macro, '-17', '-1073741824', '1073741807'); -test(macro, '17', '51676101935731', '-51676101935714'); -test(macro, '-17', '51676101935731', '-51676101935748'); -test(macro, '17', '-51676101935731', '51676101935748'); -test(macro, '-17', '-51676101935731', '51676101935714'); -test(macro, '17', '717897987691852588770249', '-717897987691852588770232'); -test(macro, '-17', '717897987691852588770249', '-717897987691852588770266'); -test(macro, '17', '-717897987691852588770249', '717897987691852588770266'); -test(macro, '-17', '-717897987691852588770249', '717897987691852588770232'); -test(macro, '22', '0', '22'); -test(macro, '-22', '0', '-22'); -test(macro, '22', '1', '21'); -test(macro, '-22', '1', '-23'); -test(macro, '22', '-1', '23'); -test(macro, '-22', '-1', '-21'); -test(macro, '22', '3', '19'); -test(macro, '-22', '3', '-25'); -test(macro, '22', '-3', '25'); -test(macro, '-22', '-3', '-19'); -test(macro, '22', '7', '15'); -test(macro, '-22', '7', '-29'); -test(macro, '22', '-7', '29'); -test(macro, '-22', '-7', '-15'); -test(macro, '22', '9', '13'); -test(macro, '-22', '9', '-31'); -test(macro, '22', '-9', '31'); -test(macro, '-22', '-9', '-13'); -test(macro, '22', '11', '11'); -test(macro, '-22', '11', '-33'); -test(macro, '22', '-11', '33'); -test(macro, '-22', '-11', '-11'); -test(macro, '22', '17', '5'); -test(macro, '-22', '17', '-39'); -test(macro, '22', '-17', '39'); -test(macro, '-22', '-17', '-5'); -test(macro, '22', '22', '0'); -test(macro, '-22', '22', '-44'); -test(macro, '22', '-22', '44'); -test(macro, '-22', '-22', '0'); -test(macro, '22', '24', '-2'); -test(macro, '-22', '24', '-46'); -test(macro, '22', '-24', '46'); -test(macro, '-22', '-24', '2'); -test(macro, '22', '27', '-5'); -test(macro, '-22', '27', '-49'); -test(macro, '22', '-27', '49'); -test(macro, '-22', '-27', '5'); -test(macro, '22', '29', '-7'); -test(macro, '-22', '29', '-51'); -test(macro, '22', '-29', '51'); -test(macro, '-22', '-29', '7'); -test(macro, '22', '1234', '-1212'); -test(macro, '-22', '1234', '-1256'); -test(macro, '22', '-1234', '1256'); -test(macro, '-22', '-1234', '1212'); -test(macro, '22', '5678', '-5656'); -test(macro, '-22', '5678', '-5700'); -test(macro, '22', '-5678', '5700'); -test(macro, '-22', '-5678', '5656'); -test(macro, '22', '94906265', '-94906243'); -test(macro, '-22', '94906265', '-94906287'); -test(macro, '22', '-94906265', '94906287'); -test(macro, '-22', '-94906265', '94906243'); -test(macro, '22', '94906266', '-94906244'); -test(macro, '-22', '94906266', '-94906288'); -test(macro, '22', '-94906266', '94906288'); -test(macro, '-22', '-94906266', '94906244'); -test(macro, '22', '1073741824', '-1073741802'); -test(macro, '-22', '1073741824', '-1073741846'); -test(macro, '22', '-1073741824', '1073741846'); -test(macro, '-22', '-1073741824', '1073741802'); -test(macro, '22', '51676101935731', '-51676101935709'); -test(macro, '-22', '51676101935731', '-51676101935753'); -test(macro, '22', '-51676101935731', '51676101935753'); -test(macro, '-22', '-51676101935731', '51676101935709'); -test(macro, '22', '717897987691852588770249', '-717897987691852588770227'); -test(macro, '-22', '717897987691852588770249', '-717897987691852588770271'); -test(macro, '22', '-717897987691852588770249', '717897987691852588770271'); -test(macro, '-22', '-717897987691852588770249', '717897987691852588770227'); -test(macro, '24', '0', '24'); -test(macro, '-24', '0', '-24'); -test(macro, '24', '1', '23'); -test(macro, '-24', '1', '-25'); -test(macro, '24', '-1', '25'); -test(macro, '-24', '-1', '-23'); -test(macro, '24', '3', '21'); -test(macro, '-24', '3', '-27'); -test(macro, '24', '-3', '27'); -test(macro, '-24', '-3', '-21'); -test(macro, '24', '7', '17'); -test(macro, '-24', '7', '-31'); -test(macro, '24', '-7', '31'); -test(macro, '-24', '-7', '-17'); -test(macro, '24', '9', '15'); -test(macro, '-24', '9', '-33'); -test(macro, '24', '-9', '33'); -test(macro, '-24', '-9', '-15'); -test(macro, '24', '11', '13'); -test(macro, '-24', '11', '-35'); -test(macro, '24', '-11', '35'); -test(macro, '-24', '-11', '-13'); -test(macro, '24', '17', '7'); -test(macro, '-24', '17', '-41'); -test(macro, '24', '-17', '41'); -test(macro, '-24', '-17', '-7'); -test(macro, '24', '22', '2'); -test(macro, '-24', '22', '-46'); -test(macro, '24', '-22', '46'); -test(macro, '-24', '-22', '-2'); -test(macro, '24', '24', '0'); -test(macro, '-24', '24', '-48'); -test(macro, '24', '-24', '48'); -test(macro, '-24', '-24', '0'); -test(macro, '24', '27', '-3'); -test(macro, '-24', '27', '-51'); -test(macro, '24', '-27', '51'); -test(macro, '-24', '-27', '3'); -test(macro, '24', '29', '-5'); -test(macro, '-24', '29', '-53'); -test(macro, '24', '-29', '53'); -test(macro, '-24', '-29', '5'); -test(macro, '24', '1234', '-1210'); -test(macro, '-24', '1234', '-1258'); -test(macro, '24', '-1234', '1258'); -test(macro, '-24', '-1234', '1210'); -test(macro, '24', '5678', '-5654'); -test(macro, '-24', '5678', '-5702'); -test(macro, '24', '-5678', '5702'); -test(macro, '-24', '-5678', '5654'); -test(macro, '24', '94906265', '-94906241'); -test(macro, '-24', '94906265', '-94906289'); -test(macro, '24', '-94906265', '94906289'); -test(macro, '-24', '-94906265', '94906241'); -test(macro, '24', '94906266', '-94906242'); -test(macro, '-24', '94906266', '-94906290'); -test(macro, '24', '-94906266', '94906290'); -test(macro, '-24', '-94906266', '94906242'); -test(macro, '24', '1073741824', '-1073741800'); -test(macro, '-24', '1073741824', '-1073741848'); -test(macro, '24', '-1073741824', '1073741848'); -test(macro, '-24', '-1073741824', '1073741800'); -test(macro, '24', '51676101935731', '-51676101935707'); -test(macro, '-24', '51676101935731', '-51676101935755'); -test(macro, '24', '-51676101935731', '51676101935755'); -test(macro, '-24', '-51676101935731', '51676101935707'); -test(macro, '24', '717897987691852588770249', '-717897987691852588770225'); -test(macro, '-24', '717897987691852588770249', '-717897987691852588770273'); -test(macro, '24', '-717897987691852588770249', '717897987691852588770273'); -test(macro, '-24', '-717897987691852588770249', '717897987691852588770225'); -test(macro, '27', '0', '27'); -test(macro, '-27', '0', '-27'); -test(macro, '27', '1', '26'); -test(macro, '-27', '1', '-28'); -test(macro, '27', '-1', '28'); -test(macro, '-27', '-1', '-26'); -test(macro, '27', '3', '24'); -test(macro, '-27', '3', '-30'); -test(macro, '27', '-3', '30'); -test(macro, '-27', '-3', '-24'); -test(macro, '27', '7', '20'); -test(macro, '-27', '7', '-34'); -test(macro, '27', '-7', '34'); -test(macro, '-27', '-7', '-20'); -test(macro, '27', '9', '18'); -test(macro, '-27', '9', '-36'); -test(macro, '27', '-9', '36'); -test(macro, '-27', '-9', '-18'); -test(macro, '27', '11', '16'); -test(macro, '-27', '11', '-38'); -test(macro, '27', '-11', '38'); -test(macro, '-27', '-11', '-16'); -test(macro, '27', '17', '10'); -test(macro, '-27', '17', '-44'); -test(macro, '27', '-17', '44'); -test(macro, '-27', '-17', '-10'); -test(macro, '27', '22', '5'); -test(macro, '-27', '22', '-49'); -test(macro, '27', '-22', '49'); -test(macro, '-27', '-22', '-5'); -test(macro, '27', '24', '3'); -test(macro, '-27', '24', '-51'); -test(macro, '27', '-24', '51'); -test(macro, '-27', '-24', '-3'); -test(macro, '27', '27', '0'); -test(macro, '-27', '27', '-54'); -test(macro, '27', '-27', '54'); -test(macro, '-27', '-27', '0'); -test(macro, '27', '29', '-2'); -test(macro, '-27', '29', '-56'); -test(macro, '27', '-29', '56'); -test(macro, '-27', '-29', '2'); -test(macro, '27', '1234', '-1207'); -test(macro, '-27', '1234', '-1261'); -test(macro, '27', '-1234', '1261'); -test(macro, '-27', '-1234', '1207'); -test(macro, '27', '5678', '-5651'); -test(macro, '-27', '5678', '-5705'); -test(macro, '27', '-5678', '5705'); -test(macro, '-27', '-5678', '5651'); -test(macro, '27', '94906265', '-94906238'); -test(macro, '-27', '94906265', '-94906292'); -test(macro, '27', '-94906265', '94906292'); -test(macro, '-27', '-94906265', '94906238'); -test(macro, '27', '94906266', '-94906239'); -test(macro, '-27', '94906266', '-94906293'); -test(macro, '27', '-94906266', '94906293'); -test(macro, '-27', '-94906266', '94906239'); -test(macro, '27', '1073741824', '-1073741797'); -test(macro, '-27', '1073741824', '-1073741851'); -test(macro, '27', '-1073741824', '1073741851'); -test(macro, '-27', '-1073741824', '1073741797'); -test(macro, '27', '51676101935731', '-51676101935704'); -test(macro, '-27', '51676101935731', '-51676101935758'); -test(macro, '27', '-51676101935731', '51676101935758'); -test(macro, '-27', '-51676101935731', '51676101935704'); -test(macro, '27', '717897987691852588770249', '-717897987691852588770222'); -test(macro, '-27', '717897987691852588770249', '-717897987691852588770276'); -test(macro, '27', '-717897987691852588770249', '717897987691852588770276'); -test(macro, '-27', '-717897987691852588770249', '717897987691852588770222'); -test(macro, '29', '0', '29'); -test(macro, '-29', '0', '-29'); -test(macro, '29', '1', '28'); -test(macro, '-29', '1', '-30'); -test(macro, '29', '-1', '30'); -test(macro, '-29', '-1', '-28'); -test(macro, '29', '3', '26'); -test(macro, '-29', '3', '-32'); -test(macro, '29', '-3', '32'); -test(macro, '-29', '-3', '-26'); -test(macro, '29', '7', '22'); -test(macro, '-29', '7', '-36'); -test(macro, '29', '-7', '36'); -test(macro, '-29', '-7', '-22'); -test(macro, '29', '9', '20'); -test(macro, '-29', '9', '-38'); -test(macro, '29', '-9', '38'); -test(macro, '-29', '-9', '-20'); -test(macro, '29', '11', '18'); -test(macro, '-29', '11', '-40'); -test(macro, '29', '-11', '40'); -test(macro, '-29', '-11', '-18'); -test(macro, '29', '17', '12'); -test(macro, '-29', '17', '-46'); -test(macro, '29', '-17', '46'); -test(macro, '-29', '-17', '-12'); -test(macro, '29', '22', '7'); -test(macro, '-29', '22', '-51'); -test(macro, '29', '-22', '51'); -test(macro, '-29', '-22', '-7'); -test(macro, '29', '24', '5'); -test(macro, '-29', '24', '-53'); -test(macro, '29', '-24', '53'); -test(macro, '-29', '-24', '-5'); -test(macro, '29', '27', '2'); -test(macro, '-29', '27', '-56'); -test(macro, '29', '-27', '56'); -test(macro, '-29', '-27', '-2'); -test(macro, '29', '29', '0'); -test(macro, '-29', '29', '-58'); -test(macro, '29', '-29', '58'); -test(macro, '-29', '-29', '0'); -test(macro, '29', '1234', '-1205'); -test(macro, '-29', '1234', '-1263'); -test(macro, '29', '-1234', '1263'); -test(macro, '-29', '-1234', '1205'); -test(macro, '29', '5678', '-5649'); -test(macro, '-29', '5678', '-5707'); -test(macro, '29', '-5678', '5707'); -test(macro, '-29', '-5678', '5649'); -test(macro, '29', '94906265', '-94906236'); -test(macro, '-29', '94906265', '-94906294'); -test(macro, '29', '-94906265', '94906294'); -test(macro, '-29', '-94906265', '94906236'); -test(macro, '29', '94906266', '-94906237'); -test(macro, '-29', '94906266', '-94906295'); -test(macro, '29', '-94906266', '94906295'); -test(macro, '-29', '-94906266', '94906237'); -test(macro, '29', '1073741824', '-1073741795'); -test(macro, '-29', '1073741824', '-1073741853'); -test(macro, '29', '-1073741824', '1073741853'); -test(macro, '-29', '-1073741824', '1073741795'); -test(macro, '29', '51676101935731', '-51676101935702'); -test(macro, '-29', '51676101935731', '-51676101935760'); -test(macro, '29', '-51676101935731', '51676101935760'); -test(macro, '-29', '-51676101935731', '51676101935702'); -test(macro, '29', '717897987691852588770249', '-717897987691852588770220'); -test(macro, '-29', '717897987691852588770249', '-717897987691852588770278'); -test(macro, '29', '-717897987691852588770249', '717897987691852588770278'); -test(macro, '-29', '-717897987691852588770249', '717897987691852588770220'); -test(macro, '1234', '0', '1234'); -test(macro, '-1234', '0', '-1234'); -test(macro, '1234', '1', '1233'); -test(macro, '-1234', '1', '-1235'); -test(macro, '1234', '-1', '1235'); -test(macro, '-1234', '-1', '-1233'); -test(macro, '1234', '3', '1231'); -test(macro, '-1234', '3', '-1237'); -test(macro, '1234', '-3', '1237'); -test(macro, '-1234', '-3', '-1231'); -test(macro, '1234', '7', '1227'); -test(macro, '-1234', '7', '-1241'); -test(macro, '1234', '-7', '1241'); -test(macro, '-1234', '-7', '-1227'); -test(macro, '1234', '9', '1225'); -test(macro, '-1234', '9', '-1243'); -test(macro, '1234', '-9', '1243'); -test(macro, '-1234', '-9', '-1225'); -test(macro, '1234', '11', '1223'); -test(macro, '-1234', '11', '-1245'); -test(macro, '1234', '-11', '1245'); -test(macro, '-1234', '-11', '-1223'); -test(macro, '1234', '17', '1217'); -test(macro, '-1234', '17', '-1251'); -test(macro, '1234', '-17', '1251'); -test(macro, '-1234', '-17', '-1217'); -test(macro, '1234', '22', '1212'); -test(macro, '-1234', '22', '-1256'); -test(macro, '1234', '-22', '1256'); -test(macro, '-1234', '-22', '-1212'); -test(macro, '1234', '24', '1210'); -test(macro, '-1234', '24', '-1258'); -test(macro, '1234', '-24', '1258'); -test(macro, '-1234', '-24', '-1210'); -test(macro, '1234', '27', '1207'); -test(macro, '-1234', '27', '-1261'); -test(macro, '1234', '-27', '1261'); -test(macro, '-1234', '-27', '-1207'); -test(macro, '1234', '29', '1205'); -test(macro, '-1234', '29', '-1263'); -test(macro, '1234', '-29', '1263'); -test(macro, '-1234', '-29', '-1205'); -test(macro, '1234', '1234', '0'); -test(macro, '-1234', '1234', '-2468'); -test(macro, '1234', '-1234', '2468'); -test(macro, '-1234', '-1234', '0'); -test(macro, '1234', '5678', '-4444'); -test(macro, '-1234', '5678', '-6912'); -test(macro, '1234', '-5678', '6912'); -test(macro, '-1234', '-5678', '4444'); -test(macro, '1234', '94906265', '-94905031'); -test(macro, '-1234', '94906265', '-94907499'); -test(macro, '1234', '-94906265', '94907499'); -test(macro, '-1234', '-94906265', '94905031'); -test(macro, '1234', '94906266', '-94905032'); -test(macro, '-1234', '94906266', '-94907500'); -test(macro, '1234', '-94906266', '94907500'); -test(macro, '-1234', '-94906266', '94905032'); -test(macro, '1234', '1073741824', '-1073740590'); -test(macro, '-1234', '1073741824', '-1073743058'); -test(macro, '1234', '-1073741824', '1073743058'); -test(macro, '-1234', '-1073741824', '1073740590'); -test(macro, '1234', '51676101935731', '-51676101934497'); -test(macro, '-1234', '51676101935731', '-51676101936965'); -test(macro, '1234', '-51676101935731', '51676101936965'); -test(macro, '-1234', '-51676101935731', '51676101934497'); -test(macro, '1234', '717897987691852588770249', '-717897987691852588769015'); -test(macro, '-1234', '717897987691852588770249', '-717897987691852588771483'); -test(macro, '1234', '-717897987691852588770249', '717897987691852588771483'); -test(macro, '-1234', '-717897987691852588770249', '717897987691852588769015'); -test(macro, '5678', '0', '5678'); -test(macro, '-5678', '0', '-5678'); -test(macro, '5678', '1', '5677'); -test(macro, '-5678', '1', '-5679'); -test(macro, '5678', '-1', '5679'); -test(macro, '-5678', '-1', '-5677'); -test(macro, '5678', '3', '5675'); -test(macro, '-5678', '3', '-5681'); -test(macro, '5678', '-3', '5681'); -test(macro, '-5678', '-3', '-5675'); -test(macro, '5678', '7', '5671'); -test(macro, '-5678', '7', '-5685'); -test(macro, '5678', '-7', '5685'); -test(macro, '-5678', '-7', '-5671'); -test(macro, '5678', '9', '5669'); -test(macro, '-5678', '9', '-5687'); -test(macro, '5678', '-9', '5687'); -test(macro, '-5678', '-9', '-5669'); -test(macro, '5678', '11', '5667'); -test(macro, '-5678', '11', '-5689'); -test(macro, '5678', '-11', '5689'); -test(macro, '-5678', '-11', '-5667'); -test(macro, '5678', '17', '5661'); -test(macro, '-5678', '17', '-5695'); -test(macro, '5678', '-17', '5695'); -test(macro, '-5678', '-17', '-5661'); -test(macro, '5678', '22', '5656'); -test(macro, '-5678', '22', '-5700'); -test(macro, '5678', '-22', '5700'); -test(macro, '-5678', '-22', '-5656'); -test(macro, '5678', '24', '5654'); -test(macro, '-5678', '24', '-5702'); -test(macro, '5678', '-24', '5702'); -test(macro, '-5678', '-24', '-5654'); -test(macro, '5678', '27', '5651'); -test(macro, '-5678', '27', '-5705'); -test(macro, '5678', '-27', '5705'); -test(macro, '-5678', '-27', '-5651'); -test(macro, '5678', '29', '5649'); -test(macro, '-5678', '29', '-5707'); -test(macro, '5678', '-29', '5707'); -test(macro, '-5678', '-29', '-5649'); -test(macro, '5678', '1234', '4444'); -test(macro, '-5678', '1234', '-6912'); -test(macro, '5678', '-1234', '6912'); -test(macro, '-5678', '-1234', '-4444'); -test(macro, '5678', '5678', '0'); -test(macro, '-5678', '5678', '-11356'); -test(macro, '5678', '-5678', '11356'); -test(macro, '-5678', '-5678', '0'); -test(macro, '5678', '94906265', '-94900587'); -test(macro, '-5678', '94906265', '-94911943'); -test(macro, '5678', '-94906265', '94911943'); -test(macro, '-5678', '-94906265', '94900587'); -test(macro, '5678', '94906266', '-94900588'); -test(macro, '-5678', '94906266', '-94911944'); -test(macro, '5678', '-94906266', '94911944'); -test(macro, '-5678', '-94906266', '94900588'); -test(macro, '5678', '1073741824', '-1073736146'); -test(macro, '-5678', '1073741824', '-1073747502'); -test(macro, '5678', '-1073741824', '1073747502'); -test(macro, '-5678', '-1073741824', '1073736146'); -test(macro, '5678', '51676101935731', '-51676101930053'); -test(macro, '-5678', '51676101935731', '-51676101941409'); -test(macro, '5678', '-51676101935731', '51676101941409'); -test(macro, '-5678', '-51676101935731', '51676101930053'); -test(macro, '5678', '717897987691852588770249', '-717897987691852588764571'); -test(macro, '-5678', '717897987691852588770249', '-717897987691852588775927'); -test(macro, '5678', '-717897987691852588770249', '717897987691852588775927'); -test(macro, '-5678', '-717897987691852588770249', '717897987691852588764571'); -test(macro, '94906265', '0', '94906265'); -test(macro, '-94906265', '0', '-94906265'); -test(macro, '94906265', '1', '94906264'); -test(macro, '-94906265', '1', '-94906266'); -test(macro, '94906265', '-1', '94906266'); -test(macro, '-94906265', '-1', '-94906264'); -test(macro, '94906265', '3', '94906262'); -test(macro, '-94906265', '3', '-94906268'); -test(macro, '94906265', '-3', '94906268'); -test(macro, '-94906265', '-3', '-94906262'); -test(macro, '94906265', '7', '94906258'); -test(macro, '-94906265', '7', '-94906272'); -test(macro, '94906265', '-7', '94906272'); -test(macro, '-94906265', '-7', '-94906258'); -test(macro, '94906265', '9', '94906256'); -test(macro, '-94906265', '9', '-94906274'); -test(macro, '94906265', '-9', '94906274'); -test(macro, '-94906265', '-9', '-94906256'); -test(macro, '94906265', '11', '94906254'); -test(macro, '-94906265', '11', '-94906276'); -test(macro, '94906265', '-11', '94906276'); -test(macro, '-94906265', '-11', '-94906254'); -test(macro, '94906265', '17', '94906248'); -test(macro, '-94906265', '17', '-94906282'); -test(macro, '94906265', '-17', '94906282'); -test(macro, '-94906265', '-17', '-94906248'); -test(macro, '94906265', '22', '94906243'); -test(macro, '-94906265', '22', '-94906287'); -test(macro, '94906265', '-22', '94906287'); -test(macro, '-94906265', '-22', '-94906243'); -test(macro, '94906265', '24', '94906241'); -test(macro, '-94906265', '24', '-94906289'); -test(macro, '94906265', '-24', '94906289'); -test(macro, '-94906265', '-24', '-94906241'); -test(macro, '94906265', '27', '94906238'); -test(macro, '-94906265', '27', '-94906292'); -test(macro, '94906265', '-27', '94906292'); -test(macro, '-94906265', '-27', '-94906238'); -test(macro, '94906265', '29', '94906236'); -test(macro, '-94906265', '29', '-94906294'); -test(macro, '94906265', '-29', '94906294'); -test(macro, '-94906265', '-29', '-94906236'); -test(macro, '94906265', '1234', '94905031'); -test(macro, '-94906265', '1234', '-94907499'); -test(macro, '94906265', '-1234', '94907499'); -test(macro, '-94906265', '-1234', '-94905031'); -test(macro, '94906265', '5678', '94900587'); -test(macro, '-94906265', '5678', '-94911943'); -test(macro, '94906265', '-5678', '94911943'); -test(macro, '-94906265', '-5678', '-94900587'); -test(macro, '94906265', '94906265', '0'); -test(macro, '-94906265', '94906265', '-189812530'); -test(macro, '94906265', '-94906265', '189812530'); -test(macro, '-94906265', '-94906265', '0'); -test(macro, '94906265', '94906266', '-1'); -test(macro, '-94906265', '94906266', '-189812531'); -test(macro, '94906265', '-94906266', '189812531'); -test(macro, '-94906265', '-94906266', '1'); -test(macro, '94906265', '1073741824', '-978835559'); -test(macro, '-94906265', '1073741824', '-1168648089'); -test(macro, '94906265', '-1073741824', '1168648089'); -test(macro, '-94906265', '-1073741824', '978835559'); -test(macro, '94906265', '51676101935731', '-51676007029466'); -test(macro, '-94906265', '51676101935731', '-51676196841996'); -test(macro, '94906265', '-51676101935731', '51676196841996'); -test(macro, '-94906265', '-51676101935731', '51676007029466'); -test( - macro, - '94906265', - '717897987691852588770249', - '-717897987691852493863984', -); -test( - macro, - '-94906265', - '717897987691852588770249', - '-717897987691852683676514', -); -test( - macro, - '94906265', - '-717897987691852588770249', - '717897987691852683676514', -); -test( - macro, - '-94906265', - '-717897987691852588770249', - '717897987691852493863984', -); -test(macro, '94906266', '0', '94906266'); -test(macro, '-94906266', '0', '-94906266'); -test(macro, '94906266', '1', '94906265'); -test(macro, '-94906266', '1', '-94906267'); -test(macro, '94906266', '-1', '94906267'); -test(macro, '-94906266', '-1', '-94906265'); -test(macro, '94906266', '3', '94906263'); -test(macro, '-94906266', '3', '-94906269'); -test(macro, '94906266', '-3', '94906269'); -test(macro, '-94906266', '-3', '-94906263'); -test(macro, '94906266', '7', '94906259'); -test(macro, '-94906266', '7', '-94906273'); -test(macro, '94906266', '-7', '94906273'); -test(macro, '-94906266', '-7', '-94906259'); -test(macro, '94906266', '9', '94906257'); -test(macro, '-94906266', '9', '-94906275'); -test(macro, '94906266', '-9', '94906275'); -test(macro, '-94906266', '-9', '-94906257'); -test(macro, '94906266', '11', '94906255'); -test(macro, '-94906266', '11', '-94906277'); -test(macro, '94906266', '-11', '94906277'); -test(macro, '-94906266', '-11', '-94906255'); -test(macro, '94906266', '17', '94906249'); -test(macro, '-94906266', '17', '-94906283'); -test(macro, '94906266', '-17', '94906283'); -test(macro, '-94906266', '-17', '-94906249'); -test(macro, '94906266', '22', '94906244'); -test(macro, '-94906266', '22', '-94906288'); -test(macro, '94906266', '-22', '94906288'); -test(macro, '-94906266', '-22', '-94906244'); -test(macro, '94906266', '24', '94906242'); -test(macro, '-94906266', '24', '-94906290'); -test(macro, '94906266', '-24', '94906290'); -test(macro, '-94906266', '-24', '-94906242'); -test(macro, '94906266', '27', '94906239'); -test(macro, '-94906266', '27', '-94906293'); -test(macro, '94906266', '-27', '94906293'); -test(macro, '-94906266', '-27', '-94906239'); -test(macro, '94906266', '29', '94906237'); -test(macro, '-94906266', '29', '-94906295'); -test(macro, '94906266', '-29', '94906295'); -test(macro, '-94906266', '-29', '-94906237'); -test(macro, '94906266', '1234', '94905032'); -test(macro, '-94906266', '1234', '-94907500'); -test(macro, '94906266', '-1234', '94907500'); -test(macro, '-94906266', '-1234', '-94905032'); -test(macro, '94906266', '5678', '94900588'); -test(macro, '-94906266', '5678', '-94911944'); -test(macro, '94906266', '-5678', '94911944'); -test(macro, '-94906266', '-5678', '-94900588'); -test(macro, '94906266', '94906265', '1'); -test(macro, '-94906266', '94906265', '-189812531'); -test(macro, '94906266', '-94906265', '189812531'); -test(macro, '-94906266', '-94906265', '-1'); -test(macro, '94906266', '94906266', '0'); -test(macro, '-94906266', '94906266', '-189812532'); -test(macro, '94906266', '-94906266', '189812532'); -test(macro, '-94906266', '-94906266', '0'); -test(macro, '94906266', '1073741824', '-978835558'); -test(macro, '-94906266', '1073741824', '-1168648090'); -test(macro, '94906266', '-1073741824', '1168648090'); -test(macro, '-94906266', '-1073741824', '978835558'); -test(macro, '94906266', '51676101935731', '-51676007029465'); -test(macro, '-94906266', '51676101935731', '-51676196841997'); -test(macro, '94906266', '-51676101935731', '51676196841997'); -test(macro, '-94906266', '-51676101935731', '51676007029465'); -test( - macro, - '94906266', - '717897987691852588770249', - '-717897987691852493863983', -); -test( - macro, - '-94906266', - '717897987691852588770249', - '-717897987691852683676515', -); -test( - macro, - '94906266', - '-717897987691852588770249', - '717897987691852683676515', -); -test( - macro, - '-94906266', - '-717897987691852588770249', - '717897987691852493863983', -); -test(macro, '1073741824', '0', '1073741824'); -test(macro, '-1073741824', '0', '-1073741824'); -test(macro, '1073741824', '1', '1073741823'); -test(macro, '-1073741824', '1', '-1073741825'); -test(macro, '1073741824', '-1', '1073741825'); -test(macro, '-1073741824', '-1', '-1073741823'); -test(macro, '1073741824', '3', '1073741821'); -test(macro, '-1073741824', '3', '-1073741827'); -test(macro, '1073741824', '-3', '1073741827'); -test(macro, '-1073741824', '-3', '-1073741821'); -test(macro, '1073741824', '7', '1073741817'); -test(macro, '-1073741824', '7', '-1073741831'); -test(macro, '1073741824', '-7', '1073741831'); -test(macro, '-1073741824', '-7', '-1073741817'); -test(macro, '1073741824', '9', '1073741815'); -test(macro, '-1073741824', '9', '-1073741833'); -test(macro, '1073741824', '-9', '1073741833'); -test(macro, '-1073741824', '-9', '-1073741815'); -test(macro, '1073741824', '11', '1073741813'); -test(macro, '-1073741824', '11', '-1073741835'); -test(macro, '1073741824', '-11', '1073741835'); -test(macro, '-1073741824', '-11', '-1073741813'); -test(macro, '1073741824', '17', '1073741807'); -test(macro, '-1073741824', '17', '-1073741841'); -test(macro, '1073741824', '-17', '1073741841'); -test(macro, '-1073741824', '-17', '-1073741807'); -test(macro, '1073741824', '22', '1073741802'); -test(macro, '-1073741824', '22', '-1073741846'); -test(macro, '1073741824', '-22', '1073741846'); -test(macro, '-1073741824', '-22', '-1073741802'); -test(macro, '1073741824', '24', '1073741800'); -test(macro, '-1073741824', '24', '-1073741848'); -test(macro, '1073741824', '-24', '1073741848'); -test(macro, '-1073741824', '-24', '-1073741800'); -test(macro, '1073741824', '27', '1073741797'); -test(macro, '-1073741824', '27', '-1073741851'); -test(macro, '1073741824', '-27', '1073741851'); -test(macro, '-1073741824', '-27', '-1073741797'); -test(macro, '1073741824', '29', '1073741795'); -test(macro, '-1073741824', '29', '-1073741853'); -test(macro, '1073741824', '-29', '1073741853'); -test(macro, '-1073741824', '-29', '-1073741795'); -test(macro, '1073741824', '1234', '1073740590'); -test(macro, '-1073741824', '1234', '-1073743058'); -test(macro, '1073741824', '-1234', '1073743058'); -test(macro, '-1073741824', '-1234', '-1073740590'); -test(macro, '1073741824', '5678', '1073736146'); -test(macro, '-1073741824', '5678', '-1073747502'); -test(macro, '1073741824', '-5678', '1073747502'); -test(macro, '-1073741824', '-5678', '-1073736146'); -test(macro, '1073741824', '94906265', '978835559'); -test(macro, '-1073741824', '94906265', '-1168648089'); -test(macro, '1073741824', '-94906265', '1168648089'); -test(macro, '-1073741824', '-94906265', '-978835559'); -test(macro, '1073741824', '94906266', '978835558'); -test(macro, '-1073741824', '94906266', '-1168648090'); -test(macro, '1073741824', '-94906266', '1168648090'); -test(macro, '-1073741824', '-94906266', '-978835558'); -test(macro, '1073741824', '1073741824', '0'); -test(macro, '-1073741824', '1073741824', '-2147483648'); -test(macro, '1073741824', '-1073741824', '2147483648'); -test(macro, '-1073741824', '-1073741824', '0'); -test(macro, '1073741824', '51676101935731', '-51675028193907'); -test(macro, '-1073741824', '51676101935731', '-51677175677555'); -test(macro, '1073741824', '-51676101935731', '51677175677555'); -test(macro, '-1073741824', '-51676101935731', '51675028193907'); -test( - macro, - '1073741824', - '717897987691852588770249', - '-717897987691851515028425', -); -test( - macro, - '-1073741824', - '717897987691852588770249', - '-717897987691853662512073', -); -test( - macro, - '1073741824', - '-717897987691852588770249', - '717897987691853662512073', -); -test( - macro, - '-1073741824', - '-717897987691852588770249', - '717897987691851515028425', -); -test(macro, '51676101935731', '0', '51676101935731'); -test(macro, '-51676101935731', '0', '-51676101935731'); -test(macro, '51676101935731', '1', '51676101935730'); -test(macro, '-51676101935731', '1', '-51676101935732'); -test(macro, '51676101935731', '-1', '51676101935732'); -test(macro, '-51676101935731', '-1', '-51676101935730'); -test(macro, '51676101935731', '3', '51676101935728'); -test(macro, '-51676101935731', '3', '-51676101935734'); -test(macro, '51676101935731', '-3', '51676101935734'); -test(macro, '-51676101935731', '-3', '-51676101935728'); -test(macro, '51676101935731', '7', '51676101935724'); -test(macro, '-51676101935731', '7', '-51676101935738'); -test(macro, '51676101935731', '-7', '51676101935738'); -test(macro, '-51676101935731', '-7', '-51676101935724'); -test(macro, '51676101935731', '9', '51676101935722'); -test(macro, '-51676101935731', '9', '-51676101935740'); -test(macro, '51676101935731', '-9', '51676101935740'); -test(macro, '-51676101935731', '-9', '-51676101935722'); -test(macro, '51676101935731', '11', '51676101935720'); -test(macro, '-51676101935731', '11', '-51676101935742'); -test(macro, '51676101935731', '-11', '51676101935742'); -test(macro, '-51676101935731', '-11', '-51676101935720'); -test(macro, '51676101935731', '17', '51676101935714'); -test(macro, '-51676101935731', '17', '-51676101935748'); -test(macro, '51676101935731', '-17', '51676101935748'); -test(macro, '-51676101935731', '-17', '-51676101935714'); -test(macro, '51676101935731', '22', '51676101935709'); -test(macro, '-51676101935731', '22', '-51676101935753'); -test(macro, '51676101935731', '-22', '51676101935753'); -test(macro, '-51676101935731', '-22', '-51676101935709'); -test(macro, '51676101935731', '24', '51676101935707'); -test(macro, '-51676101935731', '24', '-51676101935755'); -test(macro, '51676101935731', '-24', '51676101935755'); -test(macro, '-51676101935731', '-24', '-51676101935707'); -test(macro, '51676101935731', '27', '51676101935704'); -test(macro, '-51676101935731', '27', '-51676101935758'); -test(macro, '51676101935731', '-27', '51676101935758'); -test(macro, '-51676101935731', '-27', '-51676101935704'); -test(macro, '51676101935731', '29', '51676101935702'); -test(macro, '-51676101935731', '29', '-51676101935760'); -test(macro, '51676101935731', '-29', '51676101935760'); -test(macro, '-51676101935731', '-29', '-51676101935702'); -test(macro, '51676101935731', '1234', '51676101934497'); -test(macro, '-51676101935731', '1234', '-51676101936965'); -test(macro, '51676101935731', '-1234', '51676101936965'); -test(macro, '-51676101935731', '-1234', '-51676101934497'); -test(macro, '51676101935731', '5678', '51676101930053'); -test(macro, '-51676101935731', '5678', '-51676101941409'); -test(macro, '51676101935731', '-5678', '51676101941409'); -test(macro, '-51676101935731', '-5678', '-51676101930053'); -test(macro, '51676101935731', '94906265', '51676007029466'); -test(macro, '-51676101935731', '94906265', '-51676196841996'); -test(macro, '51676101935731', '-94906265', '51676196841996'); -test(macro, '-51676101935731', '-94906265', '-51676007029466'); -test(macro, '51676101935731', '94906266', '51676007029465'); -test(macro, '-51676101935731', '94906266', '-51676196841997'); -test(macro, '51676101935731', '-94906266', '51676196841997'); -test(macro, '-51676101935731', '-94906266', '-51676007029465'); -test(macro, '51676101935731', '1073741824', '51675028193907'); -test(macro, '-51676101935731', '1073741824', '-51677175677555'); -test(macro, '51676101935731', '-1073741824', '51677175677555'); -test(macro, '-51676101935731', '-1073741824', '-51675028193907'); -test(macro, '51676101935731', '51676101935731', '0'); -test(macro, '-51676101935731', '51676101935731', '-103352203871462'); -test(macro, '51676101935731', '-51676101935731', '103352203871462'); -test(macro, '-51676101935731', '-51676101935731', '0'); -test( - macro, - '51676101935731', - '717897987691852588770249', - '-717897987640176486834518', -); -test( - macro, - '-51676101935731', - '717897987691852588770249', - '-717897987743528690705980', -); -test( - macro, - '51676101935731', - '-717897987691852588770249', - '717897987743528690705980', -); -test( - macro, - '-51676101935731', - '-717897987691852588770249', - '717897987640176486834518', -); -test(macro, '717897987691852588770249', '0', '717897987691852588770249'); -test(macro, '-717897987691852588770249', '0', '-717897987691852588770249'); -test(macro, '717897987691852588770249', '1', '717897987691852588770248'); -test(macro, '-717897987691852588770249', '1', '-717897987691852588770250'); -test(macro, '717897987691852588770249', '-1', '717897987691852588770250'); -test(macro, '-717897987691852588770249', '-1', '-717897987691852588770248'); -test(macro, '717897987691852588770249', '3', '717897987691852588770246'); -test(macro, '-717897987691852588770249', '3', '-717897987691852588770252'); -test(macro, '717897987691852588770249', '-3', '717897987691852588770252'); -test(macro, '-717897987691852588770249', '-3', '-717897987691852588770246'); -test(macro, '717897987691852588770249', '7', '717897987691852588770242'); -test(macro, '-717897987691852588770249', '7', '-717897987691852588770256'); -test(macro, '717897987691852588770249', '-7', '717897987691852588770256'); -test(macro, '-717897987691852588770249', '-7', '-717897987691852588770242'); -test(macro, '717897987691852588770249', '9', '717897987691852588770240'); -test(macro, '-717897987691852588770249', '9', '-717897987691852588770258'); -test(macro, '717897987691852588770249', '-9', '717897987691852588770258'); -test(macro, '-717897987691852588770249', '-9', '-717897987691852588770240'); -test(macro, '717897987691852588770249', '11', '717897987691852588770238'); -test(macro, '-717897987691852588770249', '11', '-717897987691852588770260'); -test(macro, '717897987691852588770249', '-11', '717897987691852588770260'); -test(macro, '-717897987691852588770249', '-11', '-717897987691852588770238'); -test(macro, '717897987691852588770249', '17', '717897987691852588770232'); -test(macro, '-717897987691852588770249', '17', '-717897987691852588770266'); -test(macro, '717897987691852588770249', '-17', '717897987691852588770266'); -test(macro, '-717897987691852588770249', '-17', '-717897987691852588770232'); -test(macro, '717897987691852588770249', '22', '717897987691852588770227'); -test(macro, '-717897987691852588770249', '22', '-717897987691852588770271'); -test(macro, '717897987691852588770249', '-22', '717897987691852588770271'); -test(macro, '-717897987691852588770249', '-22', '-717897987691852588770227'); -test(macro, '717897987691852588770249', '24', '717897987691852588770225'); -test(macro, '-717897987691852588770249', '24', '-717897987691852588770273'); -test(macro, '717897987691852588770249', '-24', '717897987691852588770273'); -test(macro, '-717897987691852588770249', '-24', '-717897987691852588770225'); -test(macro, '717897987691852588770249', '27', '717897987691852588770222'); -test(macro, '-717897987691852588770249', '27', '-717897987691852588770276'); -test(macro, '717897987691852588770249', '-27', '717897987691852588770276'); -test(macro, '-717897987691852588770249', '-27', '-717897987691852588770222'); -test(macro, '717897987691852588770249', '29', '717897987691852588770220'); -test(macro, '-717897987691852588770249', '29', '-717897987691852588770278'); -test(macro, '717897987691852588770249', '-29', '717897987691852588770278'); -test(macro, '-717897987691852588770249', '-29', '-717897987691852588770220'); -test(macro, '717897987691852588770249', '1234', '717897987691852588769015'); -test(macro, '-717897987691852588770249', '1234', '-717897987691852588771483'); -test(macro, '717897987691852588770249', '-1234', '717897987691852588771483'); -test(macro, '-717897987691852588770249', '-1234', '-717897987691852588769015'); -test(macro, '717897987691852588770249', '5678', '717897987691852588764571'); -test(macro, '-717897987691852588770249', '5678', '-717897987691852588775927'); -test(macro, '717897987691852588770249', '-5678', '717897987691852588775927'); -test(macro, '-717897987691852588770249', '-5678', '-717897987691852588764571'); -test(macro, '717897987691852588770249', '94906265', '717897987691852493863984'); -test( - macro, - '-717897987691852588770249', - '94906265', - '-717897987691852683676514', -); -test( - macro, - '717897987691852588770249', - '-94906265', - '717897987691852683676514', -); -test( - macro, - '-717897987691852588770249', - '-94906265', - '-717897987691852493863984', -); -test(macro, '717897987691852588770249', '94906266', '717897987691852493863983'); -test( - macro, - '-717897987691852588770249', - '94906266', - '-717897987691852683676515', -); -test( - macro, - '717897987691852588770249', - '-94906266', - '717897987691852683676515', -); -test( - macro, - '-717897987691852588770249', - '-94906266', - '-717897987691852493863983', -); -test( - macro, - '717897987691852588770249', - '1073741824', - '717897987691851515028425', -); -test( - macro, - '-717897987691852588770249', - '1073741824', - '-717897987691853662512073', -); -test( - macro, - '717897987691852588770249', - '-1073741824', - '717897987691853662512073', -); -test( - macro, - '-717897987691852588770249', - '-1073741824', - '-717897987691851515028425', -); -test( - macro, - '717897987691852588770249', - '51676101935731', - '717897987640176486834518', -); -test( - macro, - '-717897987691852588770249', - '51676101935731', - '-717897987743528690705980', -); -test( - macro, - '717897987691852588770249', - '-51676101935731', - '717897987743528690705980', -); -test( - macro, - '-717897987691852588770249', - '-51676101935731', - '-717897987640176486834518', -); -test(macro, '717897987691852588770249', '717897987691852588770249', '0'); -test( - macro, - '-717897987691852588770249', - '717897987691852588770249', - '-1435795975383705177540498', -); -test( - macro, - '717897987691852588770249', - '-717897987691852588770249', - '1435795975383705177540498', -); -test(macro, '-717897987691852588770249', '-717897987691852588770249', '0'); diff --git a/test/src/integer/arithmetic/subn.js b/test/src/integer/arithmetic/subn.js deleted file mode 100644 index 82540af..0000000 --- a/test/src/integer/arithmetic/subn.js +++ /dev/null @@ -1,1214 +0,0 @@ -import test from 'ava'; -import {parse, stringify, subn} from '../../../../src/index.js'; - -const fmt = (x) => (x.length <= 40 ? x : x.slice(0, 19) + '..' + x.slice(-19)); - -function macro(t, A, B, C) { - const a = parse(A); - const c = subn(a, B); - t.is(stringify(a), A); - t.is(stringify(c), C); -} - -macro.title = (_, A, B, C) => `subn(${fmt(A)},${B}) = ${fmt(C)}`; - -test(macro, '0', 0, '0'); -test(macro, '0', 1, '-1'); -test(macro, '0', -1, '1'); -test(macro, '0', 3, '-3'); -test(macro, '0', -3, '3'); -test(macro, '0', 7, '-7'); -test(macro, '0', -7, '7'); -test(macro, '0', 9, '-9'); -test(macro, '0', -9, '9'); -test(macro, '0', 11, '-11'); -test(macro, '0', -11, '11'); -test(macro, '0', 17, '-17'); -test(macro, '0', -17, '17'); -test(macro, '0', 22, '-22'); -test(macro, '0', -22, '22'); -test(macro, '0', 24, '-24'); -test(macro, '0', -24, '24'); -test(macro, '0', 27, '-27'); -test(macro, '0', -27, '27'); -test(macro, '0', 29, '-29'); -test(macro, '0', -29, '29'); -test(macro, '0', 1234, '-1234'); -test(macro, '0', -1234, '1234'); -test(macro, '0', 5678, '-5678'); -test(macro, '0', -5678, '5678'); -test(macro, '0', 94906265, '-94906265'); -test(macro, '0', -94906265, '94906265'); -test(macro, '0', 94906266, '-94906266'); -test(macro, '0', -94906266, '94906266'); -test(macro, '0', 1073741824, '-1073741824'); -test(macro, '0', -1073741824, '1073741824'); -test(macro, '0', 51676101935731, '-51676101935731'); -test(macro, '0', -51676101935731, '51676101935731'); -test(macro, '1', 0, '1'); -test(macro, '-1', 0, '-1'); -test(macro, '1', 1, '0'); -test(macro, '-1', 1, '-2'); -test(macro, '1', -1, '2'); -test(macro, '-1', -1, '0'); -test(macro, '1', 3, '-2'); -test(macro, '-1', 3, '-4'); -test(macro, '1', -3, '4'); -test(macro, '-1', -3, '2'); -test(macro, '1', 7, '-6'); -test(macro, '-1', 7, '-8'); -test(macro, '1', -7, '8'); -test(macro, '-1', -7, '6'); -test(macro, '1', 9, '-8'); -test(macro, '-1', 9, '-10'); -test(macro, '1', -9, '10'); -test(macro, '-1', -9, '8'); -test(macro, '1', 11, '-10'); -test(macro, '-1', 11, '-12'); -test(macro, '1', -11, '12'); -test(macro, '-1', -11, '10'); -test(macro, '1', 17, '-16'); -test(macro, '-1', 17, '-18'); -test(macro, '1', -17, '18'); -test(macro, '-1', -17, '16'); -test(macro, '1', 22, '-21'); -test(macro, '-1', 22, '-23'); -test(macro, '1', -22, '23'); -test(macro, '-1', -22, '21'); -test(macro, '1', 24, '-23'); -test(macro, '-1', 24, '-25'); -test(macro, '1', -24, '25'); -test(macro, '-1', -24, '23'); -test(macro, '1', 27, '-26'); -test(macro, '-1', 27, '-28'); -test(macro, '1', -27, '28'); -test(macro, '-1', -27, '26'); -test(macro, '1', 29, '-28'); -test(macro, '-1', 29, '-30'); -test(macro, '1', -29, '30'); -test(macro, '-1', -29, '28'); -test(macro, '1', 1234, '-1233'); -test(macro, '-1', 1234, '-1235'); -test(macro, '1', -1234, '1235'); -test(macro, '-1', -1234, '1233'); -test(macro, '1', 5678, '-5677'); -test(macro, '-1', 5678, '-5679'); -test(macro, '1', -5678, '5679'); -test(macro, '-1', -5678, '5677'); -test(macro, '1', 94906265, '-94906264'); -test(macro, '-1', 94906265, '-94906266'); -test(macro, '1', -94906265, '94906266'); -test(macro, '-1', -94906265, '94906264'); -test(macro, '1', 94906266, '-94906265'); -test(macro, '-1', 94906266, '-94906267'); -test(macro, '1', -94906266, '94906267'); -test(macro, '-1', -94906266, '94906265'); -test(macro, '1', 1073741824, '-1073741823'); -test(macro, '-1', 1073741824, '-1073741825'); -test(macro, '1', -1073741824, '1073741825'); -test(macro, '-1', -1073741824, '1073741823'); -test(macro, '1', 51676101935731, '-51676101935730'); -test(macro, '-1', 51676101935731, '-51676101935732'); -test(macro, '1', -51676101935731, '51676101935732'); -test(macro, '-1', -51676101935731, '51676101935730'); -test(macro, '3', 0, '3'); -test(macro, '-3', 0, '-3'); -test(macro, '3', 1, '2'); -test(macro, '-3', 1, '-4'); -test(macro, '3', -1, '4'); -test(macro, '-3', -1, '-2'); -test(macro, '3', 3, '0'); -test(macro, '-3', 3, '-6'); -test(macro, '3', -3, '6'); -test(macro, '-3', -3, '0'); -test(macro, '3', 7, '-4'); -test(macro, '-3', 7, '-10'); -test(macro, '3', -7, '10'); -test(macro, '-3', -7, '4'); -test(macro, '3', 9, '-6'); -test(macro, '-3', 9, '-12'); -test(macro, '3', -9, '12'); -test(macro, '-3', -9, '6'); -test(macro, '3', 11, '-8'); -test(macro, '-3', 11, '-14'); -test(macro, '3', -11, '14'); -test(macro, '-3', -11, '8'); -test(macro, '3', 17, '-14'); -test(macro, '-3', 17, '-20'); -test(macro, '3', -17, '20'); -test(macro, '-3', -17, '14'); -test(macro, '3', 22, '-19'); -test(macro, '-3', 22, '-25'); -test(macro, '3', -22, '25'); -test(macro, '-3', -22, '19'); -test(macro, '3', 24, '-21'); -test(macro, '-3', 24, '-27'); -test(macro, '3', -24, '27'); -test(macro, '-3', -24, '21'); -test(macro, '3', 27, '-24'); -test(macro, '-3', 27, '-30'); -test(macro, '3', -27, '30'); -test(macro, '-3', -27, '24'); -test(macro, '3', 29, '-26'); -test(macro, '-3', 29, '-32'); -test(macro, '3', -29, '32'); -test(macro, '-3', -29, '26'); -test(macro, '3', 1234, '-1231'); -test(macro, '-3', 1234, '-1237'); -test(macro, '3', -1234, '1237'); -test(macro, '-3', -1234, '1231'); -test(macro, '3', 5678, '-5675'); -test(macro, '-3', 5678, '-5681'); -test(macro, '3', -5678, '5681'); -test(macro, '-3', -5678, '5675'); -test(macro, '3', 94906265, '-94906262'); -test(macro, '-3', 94906265, '-94906268'); -test(macro, '3', -94906265, '94906268'); -test(macro, '-3', -94906265, '94906262'); -test(macro, '3', 94906266, '-94906263'); -test(macro, '-3', 94906266, '-94906269'); -test(macro, '3', -94906266, '94906269'); -test(macro, '-3', -94906266, '94906263'); -test(macro, '3', 1073741824, '-1073741821'); -test(macro, '-3', 1073741824, '-1073741827'); -test(macro, '3', -1073741824, '1073741827'); -test(macro, '-3', -1073741824, '1073741821'); -test(macro, '3', 51676101935731, '-51676101935728'); -test(macro, '-3', 51676101935731, '-51676101935734'); -test(macro, '3', -51676101935731, '51676101935734'); -test(macro, '-3', -51676101935731, '51676101935728'); -test(macro, '7', 0, '7'); -test(macro, '-7', 0, '-7'); -test(macro, '7', 1, '6'); -test(macro, '-7', 1, '-8'); -test(macro, '7', -1, '8'); -test(macro, '-7', -1, '-6'); -test(macro, '7', 3, '4'); -test(macro, '-7', 3, '-10'); -test(macro, '7', -3, '10'); -test(macro, '-7', -3, '-4'); -test(macro, '7', 7, '0'); -test(macro, '-7', 7, '-14'); -test(macro, '7', -7, '14'); -test(macro, '-7', -7, '0'); -test(macro, '7', 9, '-2'); -test(macro, '-7', 9, '-16'); -test(macro, '7', -9, '16'); -test(macro, '-7', -9, '2'); -test(macro, '7', 11, '-4'); -test(macro, '-7', 11, '-18'); -test(macro, '7', -11, '18'); -test(macro, '-7', -11, '4'); -test(macro, '7', 17, '-10'); -test(macro, '-7', 17, '-24'); -test(macro, '7', -17, '24'); -test(macro, '-7', -17, '10'); -test(macro, '7', 22, '-15'); -test(macro, '-7', 22, '-29'); -test(macro, '7', -22, '29'); -test(macro, '-7', -22, '15'); -test(macro, '7', 24, '-17'); -test(macro, '-7', 24, '-31'); -test(macro, '7', -24, '31'); -test(macro, '-7', -24, '17'); -test(macro, '7', 27, '-20'); -test(macro, '-7', 27, '-34'); -test(macro, '7', -27, '34'); -test(macro, '-7', -27, '20'); -test(macro, '7', 29, '-22'); -test(macro, '-7', 29, '-36'); -test(macro, '7', -29, '36'); -test(macro, '-7', -29, '22'); -test(macro, '7', 1234, '-1227'); -test(macro, '-7', 1234, '-1241'); -test(macro, '7', -1234, '1241'); -test(macro, '-7', -1234, '1227'); -test(macro, '7', 5678, '-5671'); -test(macro, '-7', 5678, '-5685'); -test(macro, '7', -5678, '5685'); -test(macro, '-7', -5678, '5671'); -test(macro, '7', 94906265, '-94906258'); -test(macro, '-7', 94906265, '-94906272'); -test(macro, '7', -94906265, '94906272'); -test(macro, '-7', -94906265, '94906258'); -test(macro, '7', 94906266, '-94906259'); -test(macro, '-7', 94906266, '-94906273'); -test(macro, '7', -94906266, '94906273'); -test(macro, '-7', -94906266, '94906259'); -test(macro, '7', 1073741824, '-1073741817'); -test(macro, '-7', 1073741824, '-1073741831'); -test(macro, '7', -1073741824, '1073741831'); -test(macro, '-7', -1073741824, '1073741817'); -test(macro, '7', 51676101935731, '-51676101935724'); -test(macro, '-7', 51676101935731, '-51676101935738'); -test(macro, '7', -51676101935731, '51676101935738'); -test(macro, '-7', -51676101935731, '51676101935724'); -test(macro, '9', 0, '9'); -test(macro, '-9', 0, '-9'); -test(macro, '9', 1, '8'); -test(macro, '-9', 1, '-10'); -test(macro, '9', -1, '10'); -test(macro, '-9', -1, '-8'); -test(macro, '9', 3, '6'); -test(macro, '-9', 3, '-12'); -test(macro, '9', -3, '12'); -test(macro, '-9', -3, '-6'); -test(macro, '9', 7, '2'); -test(macro, '-9', 7, '-16'); -test(macro, '9', -7, '16'); -test(macro, '-9', -7, '-2'); -test(macro, '9', 9, '0'); -test(macro, '-9', 9, '-18'); -test(macro, '9', -9, '18'); -test(macro, '-9', -9, '0'); -test(macro, '9', 11, '-2'); -test(macro, '-9', 11, '-20'); -test(macro, '9', -11, '20'); -test(macro, '-9', -11, '2'); -test(macro, '9', 17, '-8'); -test(macro, '-9', 17, '-26'); -test(macro, '9', -17, '26'); -test(macro, '-9', -17, '8'); -test(macro, '9', 22, '-13'); -test(macro, '-9', 22, '-31'); -test(macro, '9', -22, '31'); -test(macro, '-9', -22, '13'); -test(macro, '9', 24, '-15'); -test(macro, '-9', 24, '-33'); -test(macro, '9', -24, '33'); -test(macro, '-9', -24, '15'); -test(macro, '9', 27, '-18'); -test(macro, '-9', 27, '-36'); -test(macro, '9', -27, '36'); -test(macro, '-9', -27, '18'); -test(macro, '9', 29, '-20'); -test(macro, '-9', 29, '-38'); -test(macro, '9', -29, '38'); -test(macro, '-9', -29, '20'); -test(macro, '9', 1234, '-1225'); -test(macro, '-9', 1234, '-1243'); -test(macro, '9', -1234, '1243'); -test(macro, '-9', -1234, '1225'); -test(macro, '9', 5678, '-5669'); -test(macro, '-9', 5678, '-5687'); -test(macro, '9', -5678, '5687'); -test(macro, '-9', -5678, '5669'); -test(macro, '9', 94906265, '-94906256'); -test(macro, '-9', 94906265, '-94906274'); -test(macro, '9', -94906265, '94906274'); -test(macro, '-9', -94906265, '94906256'); -test(macro, '9', 94906266, '-94906257'); -test(macro, '-9', 94906266, '-94906275'); -test(macro, '9', -94906266, '94906275'); -test(macro, '-9', -94906266, '94906257'); -test(macro, '9', 1073741824, '-1073741815'); -test(macro, '-9', 1073741824, '-1073741833'); -test(macro, '9', -1073741824, '1073741833'); -test(macro, '-9', -1073741824, '1073741815'); -test(macro, '9', 51676101935731, '-51676101935722'); -test(macro, '-9', 51676101935731, '-51676101935740'); -test(macro, '9', -51676101935731, '51676101935740'); -test(macro, '-9', -51676101935731, '51676101935722'); -test(macro, '11', 0, '11'); -test(macro, '-11', 0, '-11'); -test(macro, '11', 1, '10'); -test(macro, '-11', 1, '-12'); -test(macro, '11', -1, '12'); -test(macro, '-11', -1, '-10'); -test(macro, '11', 3, '8'); -test(macro, '-11', 3, '-14'); -test(macro, '11', -3, '14'); -test(macro, '-11', -3, '-8'); -test(macro, '11', 7, '4'); -test(macro, '-11', 7, '-18'); -test(macro, '11', -7, '18'); -test(macro, '-11', -7, '-4'); -test(macro, '11', 9, '2'); -test(macro, '-11', 9, '-20'); -test(macro, '11', -9, '20'); -test(macro, '-11', -9, '-2'); -test(macro, '11', 11, '0'); -test(macro, '-11', 11, '-22'); -test(macro, '11', -11, '22'); -test(macro, '-11', -11, '0'); -test(macro, '11', 17, '-6'); -test(macro, '-11', 17, '-28'); -test(macro, '11', -17, '28'); -test(macro, '-11', -17, '6'); -test(macro, '11', 22, '-11'); -test(macro, '-11', 22, '-33'); -test(macro, '11', -22, '33'); -test(macro, '-11', -22, '11'); -test(macro, '11', 24, '-13'); -test(macro, '-11', 24, '-35'); -test(macro, '11', -24, '35'); -test(macro, '-11', -24, '13'); -test(macro, '11', 27, '-16'); -test(macro, '-11', 27, '-38'); -test(macro, '11', -27, '38'); -test(macro, '-11', -27, '16'); -test(macro, '11', 29, '-18'); -test(macro, '-11', 29, '-40'); -test(macro, '11', -29, '40'); -test(macro, '-11', -29, '18'); -test(macro, '11', 1234, '-1223'); -test(macro, '-11', 1234, '-1245'); -test(macro, '11', -1234, '1245'); -test(macro, '-11', -1234, '1223'); -test(macro, '11', 5678, '-5667'); -test(macro, '-11', 5678, '-5689'); -test(macro, '11', -5678, '5689'); -test(macro, '-11', -5678, '5667'); -test(macro, '11', 94906265, '-94906254'); -test(macro, '-11', 94906265, '-94906276'); -test(macro, '11', -94906265, '94906276'); -test(macro, '-11', -94906265, '94906254'); -test(macro, '11', 94906266, '-94906255'); -test(macro, '-11', 94906266, '-94906277'); -test(macro, '11', -94906266, '94906277'); -test(macro, '-11', -94906266, '94906255'); -test(macro, '11', 1073741824, '-1073741813'); -test(macro, '-11', 1073741824, '-1073741835'); -test(macro, '11', -1073741824, '1073741835'); -test(macro, '-11', -1073741824, '1073741813'); -test(macro, '11', 51676101935731, '-51676101935720'); -test(macro, '-11', 51676101935731, '-51676101935742'); -test(macro, '11', -51676101935731, '51676101935742'); -test(macro, '-11', -51676101935731, '51676101935720'); -test(macro, '17', 0, '17'); -test(macro, '-17', 0, '-17'); -test(macro, '17', 1, '16'); -test(macro, '-17', 1, '-18'); -test(macro, '17', -1, '18'); -test(macro, '-17', -1, '-16'); -test(macro, '17', 3, '14'); -test(macro, '-17', 3, '-20'); -test(macro, '17', -3, '20'); -test(macro, '-17', -3, '-14'); -test(macro, '17', 7, '10'); -test(macro, '-17', 7, '-24'); -test(macro, '17', -7, '24'); -test(macro, '-17', -7, '-10'); -test(macro, '17', 9, '8'); -test(macro, '-17', 9, '-26'); -test(macro, '17', -9, '26'); -test(macro, '-17', -9, '-8'); -test(macro, '17', 11, '6'); -test(macro, '-17', 11, '-28'); -test(macro, '17', -11, '28'); -test(macro, '-17', -11, '-6'); -test(macro, '17', 17, '0'); -test(macro, '-17', 17, '-34'); -test(macro, '17', -17, '34'); -test(macro, '-17', -17, '0'); -test(macro, '17', 22, '-5'); -test(macro, '-17', 22, '-39'); -test(macro, '17', -22, '39'); -test(macro, '-17', -22, '5'); -test(macro, '17', 24, '-7'); -test(macro, '-17', 24, '-41'); -test(macro, '17', -24, '41'); -test(macro, '-17', -24, '7'); -test(macro, '17', 27, '-10'); -test(macro, '-17', 27, '-44'); -test(macro, '17', -27, '44'); -test(macro, '-17', -27, '10'); -test(macro, '17', 29, '-12'); -test(macro, '-17', 29, '-46'); -test(macro, '17', -29, '46'); -test(macro, '-17', -29, '12'); -test(macro, '17', 1234, '-1217'); -test(macro, '-17', 1234, '-1251'); -test(macro, '17', -1234, '1251'); -test(macro, '-17', -1234, '1217'); -test(macro, '17', 5678, '-5661'); -test(macro, '-17', 5678, '-5695'); -test(macro, '17', -5678, '5695'); -test(macro, '-17', -5678, '5661'); -test(macro, '17', 94906265, '-94906248'); -test(macro, '-17', 94906265, '-94906282'); -test(macro, '17', -94906265, '94906282'); -test(macro, '-17', -94906265, '94906248'); -test(macro, '17', 94906266, '-94906249'); -test(macro, '-17', 94906266, '-94906283'); -test(macro, '17', -94906266, '94906283'); -test(macro, '-17', -94906266, '94906249'); -test(macro, '17', 1073741824, '-1073741807'); -test(macro, '-17', 1073741824, '-1073741841'); -test(macro, '17', -1073741824, '1073741841'); -test(macro, '-17', -1073741824, '1073741807'); -test(macro, '17', 51676101935731, '-51676101935714'); -test(macro, '-17', 51676101935731, '-51676101935748'); -test(macro, '17', -51676101935731, '51676101935748'); -test(macro, '-17', -51676101935731, '51676101935714'); -test(macro, '22', 0, '22'); -test(macro, '-22', 0, '-22'); -test(macro, '22', 1, '21'); -test(macro, '-22', 1, '-23'); -test(macro, '22', -1, '23'); -test(macro, '-22', -1, '-21'); -test(macro, '22', 3, '19'); -test(macro, '-22', 3, '-25'); -test(macro, '22', -3, '25'); -test(macro, '-22', -3, '-19'); -test(macro, '22', 7, '15'); -test(macro, '-22', 7, '-29'); -test(macro, '22', -7, '29'); -test(macro, '-22', -7, '-15'); -test(macro, '22', 9, '13'); -test(macro, '-22', 9, '-31'); -test(macro, '22', -9, '31'); -test(macro, '-22', -9, '-13'); -test(macro, '22', 11, '11'); -test(macro, '-22', 11, '-33'); -test(macro, '22', -11, '33'); -test(macro, '-22', -11, '-11'); -test(macro, '22', 17, '5'); -test(macro, '-22', 17, '-39'); -test(macro, '22', -17, '39'); -test(macro, '-22', -17, '-5'); -test(macro, '22', 22, '0'); -test(macro, '-22', 22, '-44'); -test(macro, '22', -22, '44'); -test(macro, '-22', -22, '0'); -test(macro, '22', 24, '-2'); -test(macro, '-22', 24, '-46'); -test(macro, '22', -24, '46'); -test(macro, '-22', -24, '2'); -test(macro, '22', 27, '-5'); -test(macro, '-22', 27, '-49'); -test(macro, '22', -27, '49'); -test(macro, '-22', -27, '5'); -test(macro, '22', 29, '-7'); -test(macro, '-22', 29, '-51'); -test(macro, '22', -29, '51'); -test(macro, '-22', -29, '7'); -test(macro, '22', 1234, '-1212'); -test(macro, '-22', 1234, '-1256'); -test(macro, '22', -1234, '1256'); -test(macro, '-22', -1234, '1212'); -test(macro, '22', 5678, '-5656'); -test(macro, '-22', 5678, '-5700'); -test(macro, '22', -5678, '5700'); -test(macro, '-22', -5678, '5656'); -test(macro, '22', 94906265, '-94906243'); -test(macro, '-22', 94906265, '-94906287'); -test(macro, '22', -94906265, '94906287'); -test(macro, '-22', -94906265, '94906243'); -test(macro, '22', 94906266, '-94906244'); -test(macro, '-22', 94906266, '-94906288'); -test(macro, '22', -94906266, '94906288'); -test(macro, '-22', -94906266, '94906244'); -test(macro, '22', 1073741824, '-1073741802'); -test(macro, '-22', 1073741824, '-1073741846'); -test(macro, '22', -1073741824, '1073741846'); -test(macro, '-22', -1073741824, '1073741802'); -test(macro, '22', 51676101935731, '-51676101935709'); -test(macro, '-22', 51676101935731, '-51676101935753'); -test(macro, '22', -51676101935731, '51676101935753'); -test(macro, '-22', -51676101935731, '51676101935709'); -test(macro, '24', 0, '24'); -test(macro, '-24', 0, '-24'); -test(macro, '24', 1, '23'); -test(macro, '-24', 1, '-25'); -test(macro, '24', -1, '25'); -test(macro, '-24', -1, '-23'); -test(macro, '24', 3, '21'); -test(macro, '-24', 3, '-27'); -test(macro, '24', -3, '27'); -test(macro, '-24', -3, '-21'); -test(macro, '24', 7, '17'); -test(macro, '-24', 7, '-31'); -test(macro, '24', -7, '31'); -test(macro, '-24', -7, '-17'); -test(macro, '24', 9, '15'); -test(macro, '-24', 9, '-33'); -test(macro, '24', -9, '33'); -test(macro, '-24', -9, '-15'); -test(macro, '24', 11, '13'); -test(macro, '-24', 11, '-35'); -test(macro, '24', -11, '35'); -test(macro, '-24', -11, '-13'); -test(macro, '24', 17, '7'); -test(macro, '-24', 17, '-41'); -test(macro, '24', -17, '41'); -test(macro, '-24', -17, '-7'); -test(macro, '24', 22, '2'); -test(macro, '-24', 22, '-46'); -test(macro, '24', -22, '46'); -test(macro, '-24', -22, '-2'); -test(macro, '24', 24, '0'); -test(macro, '-24', 24, '-48'); -test(macro, '24', -24, '48'); -test(macro, '-24', -24, '0'); -test(macro, '24', 27, '-3'); -test(macro, '-24', 27, '-51'); -test(macro, '24', -27, '51'); -test(macro, '-24', -27, '3'); -test(macro, '24', 29, '-5'); -test(macro, '-24', 29, '-53'); -test(macro, '24', -29, '53'); -test(macro, '-24', -29, '5'); -test(macro, '24', 1234, '-1210'); -test(macro, '-24', 1234, '-1258'); -test(macro, '24', -1234, '1258'); -test(macro, '-24', -1234, '1210'); -test(macro, '24', 5678, '-5654'); -test(macro, '-24', 5678, '-5702'); -test(macro, '24', -5678, '5702'); -test(macro, '-24', -5678, '5654'); -test(macro, '24', 94906265, '-94906241'); -test(macro, '-24', 94906265, '-94906289'); -test(macro, '24', -94906265, '94906289'); -test(macro, '-24', -94906265, '94906241'); -test(macro, '24', 94906266, '-94906242'); -test(macro, '-24', 94906266, '-94906290'); -test(macro, '24', -94906266, '94906290'); -test(macro, '-24', -94906266, '94906242'); -test(macro, '24', 1073741824, '-1073741800'); -test(macro, '-24', 1073741824, '-1073741848'); -test(macro, '24', -1073741824, '1073741848'); -test(macro, '-24', -1073741824, '1073741800'); -test(macro, '24', 51676101935731, '-51676101935707'); -test(macro, '-24', 51676101935731, '-51676101935755'); -test(macro, '24', -51676101935731, '51676101935755'); -test(macro, '-24', -51676101935731, '51676101935707'); -test(macro, '27', 0, '27'); -test(macro, '-27', 0, '-27'); -test(macro, '27', 1, '26'); -test(macro, '-27', 1, '-28'); -test(macro, '27', -1, '28'); -test(macro, '-27', -1, '-26'); -test(macro, '27', 3, '24'); -test(macro, '-27', 3, '-30'); -test(macro, '27', -3, '30'); -test(macro, '-27', -3, '-24'); -test(macro, '27', 7, '20'); -test(macro, '-27', 7, '-34'); -test(macro, '27', -7, '34'); -test(macro, '-27', -7, '-20'); -test(macro, '27', 9, '18'); -test(macro, '-27', 9, '-36'); -test(macro, '27', -9, '36'); -test(macro, '-27', -9, '-18'); -test(macro, '27', 11, '16'); -test(macro, '-27', 11, '-38'); -test(macro, '27', -11, '38'); -test(macro, '-27', -11, '-16'); -test(macro, '27', 17, '10'); -test(macro, '-27', 17, '-44'); -test(macro, '27', -17, '44'); -test(macro, '-27', -17, '-10'); -test(macro, '27', 22, '5'); -test(macro, '-27', 22, '-49'); -test(macro, '27', -22, '49'); -test(macro, '-27', -22, '-5'); -test(macro, '27', 24, '3'); -test(macro, '-27', 24, '-51'); -test(macro, '27', -24, '51'); -test(macro, '-27', -24, '-3'); -test(macro, '27', 27, '0'); -test(macro, '-27', 27, '-54'); -test(macro, '27', -27, '54'); -test(macro, '-27', -27, '0'); -test(macro, '27', 29, '-2'); -test(macro, '-27', 29, '-56'); -test(macro, '27', -29, '56'); -test(macro, '-27', -29, '2'); -test(macro, '27', 1234, '-1207'); -test(macro, '-27', 1234, '-1261'); -test(macro, '27', -1234, '1261'); -test(macro, '-27', -1234, '1207'); -test(macro, '27', 5678, '-5651'); -test(macro, '-27', 5678, '-5705'); -test(macro, '27', -5678, '5705'); -test(macro, '-27', -5678, '5651'); -test(macro, '27', 94906265, '-94906238'); -test(macro, '-27', 94906265, '-94906292'); -test(macro, '27', -94906265, '94906292'); -test(macro, '-27', -94906265, '94906238'); -test(macro, '27', 94906266, '-94906239'); -test(macro, '-27', 94906266, '-94906293'); -test(macro, '27', -94906266, '94906293'); -test(macro, '-27', -94906266, '94906239'); -test(macro, '27', 1073741824, '-1073741797'); -test(macro, '-27', 1073741824, '-1073741851'); -test(macro, '27', -1073741824, '1073741851'); -test(macro, '-27', -1073741824, '1073741797'); -test(macro, '27', 51676101935731, '-51676101935704'); -test(macro, '-27', 51676101935731, '-51676101935758'); -test(macro, '27', -51676101935731, '51676101935758'); -test(macro, '-27', -51676101935731, '51676101935704'); -test(macro, '29', 0, '29'); -test(macro, '-29', 0, '-29'); -test(macro, '29', 1, '28'); -test(macro, '-29', 1, '-30'); -test(macro, '29', -1, '30'); -test(macro, '-29', -1, '-28'); -test(macro, '29', 3, '26'); -test(macro, '-29', 3, '-32'); -test(macro, '29', -3, '32'); -test(macro, '-29', -3, '-26'); -test(macro, '29', 7, '22'); -test(macro, '-29', 7, '-36'); -test(macro, '29', -7, '36'); -test(macro, '-29', -7, '-22'); -test(macro, '29', 9, '20'); -test(macro, '-29', 9, '-38'); -test(macro, '29', -9, '38'); -test(macro, '-29', -9, '-20'); -test(macro, '29', 11, '18'); -test(macro, '-29', 11, '-40'); -test(macro, '29', -11, '40'); -test(macro, '-29', -11, '-18'); -test(macro, '29', 17, '12'); -test(macro, '-29', 17, '-46'); -test(macro, '29', -17, '46'); -test(macro, '-29', -17, '-12'); -test(macro, '29', 22, '7'); -test(macro, '-29', 22, '-51'); -test(macro, '29', -22, '51'); -test(macro, '-29', -22, '-7'); -test(macro, '29', 24, '5'); -test(macro, '-29', 24, '-53'); -test(macro, '29', -24, '53'); -test(macro, '-29', -24, '-5'); -test(macro, '29', 27, '2'); -test(macro, '-29', 27, '-56'); -test(macro, '29', -27, '56'); -test(macro, '-29', -27, '-2'); -test(macro, '29', 29, '0'); -test(macro, '-29', 29, '-58'); -test(macro, '29', -29, '58'); -test(macro, '-29', -29, '0'); -test(macro, '29', 1234, '-1205'); -test(macro, '-29', 1234, '-1263'); -test(macro, '29', -1234, '1263'); -test(macro, '-29', -1234, '1205'); -test(macro, '29', 5678, '-5649'); -test(macro, '-29', 5678, '-5707'); -test(macro, '29', -5678, '5707'); -test(macro, '-29', -5678, '5649'); -test(macro, '29', 94906265, '-94906236'); -test(macro, '-29', 94906265, '-94906294'); -test(macro, '29', -94906265, '94906294'); -test(macro, '-29', -94906265, '94906236'); -test(macro, '29', 94906266, '-94906237'); -test(macro, '-29', 94906266, '-94906295'); -test(macro, '29', -94906266, '94906295'); -test(macro, '-29', -94906266, '94906237'); -test(macro, '29', 1073741824, '-1073741795'); -test(macro, '-29', 1073741824, '-1073741853'); -test(macro, '29', -1073741824, '1073741853'); -test(macro, '-29', -1073741824, '1073741795'); -test(macro, '29', 51676101935731, '-51676101935702'); -test(macro, '-29', 51676101935731, '-51676101935760'); -test(macro, '29', -51676101935731, '51676101935760'); -test(macro, '-29', -51676101935731, '51676101935702'); -test(macro, '1234', 0, '1234'); -test(macro, '-1234', 0, '-1234'); -test(macro, '1234', 1, '1233'); -test(macro, '-1234', 1, '-1235'); -test(macro, '1234', -1, '1235'); -test(macro, '-1234', -1, '-1233'); -test(macro, '1234', 3, '1231'); -test(macro, '-1234', 3, '-1237'); -test(macro, '1234', -3, '1237'); -test(macro, '-1234', -3, '-1231'); -test(macro, '1234', 7, '1227'); -test(macro, '-1234', 7, '-1241'); -test(macro, '1234', -7, '1241'); -test(macro, '-1234', -7, '-1227'); -test(macro, '1234', 9, '1225'); -test(macro, '-1234', 9, '-1243'); -test(macro, '1234', -9, '1243'); -test(macro, '-1234', -9, '-1225'); -test(macro, '1234', 11, '1223'); -test(macro, '-1234', 11, '-1245'); -test(macro, '1234', -11, '1245'); -test(macro, '-1234', -11, '-1223'); -test(macro, '1234', 17, '1217'); -test(macro, '-1234', 17, '-1251'); -test(macro, '1234', -17, '1251'); -test(macro, '-1234', -17, '-1217'); -test(macro, '1234', 22, '1212'); -test(macro, '-1234', 22, '-1256'); -test(macro, '1234', -22, '1256'); -test(macro, '-1234', -22, '-1212'); -test(macro, '1234', 24, '1210'); -test(macro, '-1234', 24, '-1258'); -test(macro, '1234', -24, '1258'); -test(macro, '-1234', -24, '-1210'); -test(macro, '1234', 27, '1207'); -test(macro, '-1234', 27, '-1261'); -test(macro, '1234', -27, '1261'); -test(macro, '-1234', -27, '-1207'); -test(macro, '1234', 29, '1205'); -test(macro, '-1234', 29, '-1263'); -test(macro, '1234', -29, '1263'); -test(macro, '-1234', -29, '-1205'); -test(macro, '1234', 1234, '0'); -test(macro, '-1234', 1234, '-2468'); -test(macro, '1234', -1234, '2468'); -test(macro, '-1234', -1234, '0'); -test(macro, '1234', 5678, '-4444'); -test(macro, '-1234', 5678, '-6912'); -test(macro, '1234', -5678, '6912'); -test(macro, '-1234', -5678, '4444'); -test(macro, '1234', 94906265, '-94905031'); -test(macro, '-1234', 94906265, '-94907499'); -test(macro, '1234', -94906265, '94907499'); -test(macro, '-1234', -94906265, '94905031'); -test(macro, '1234', 94906266, '-94905032'); -test(macro, '-1234', 94906266, '-94907500'); -test(macro, '1234', -94906266, '94907500'); -test(macro, '-1234', -94906266, '94905032'); -test(macro, '1234', 1073741824, '-1073740590'); -test(macro, '-1234', 1073741824, '-1073743058'); -test(macro, '1234', -1073741824, '1073743058'); -test(macro, '-1234', -1073741824, '1073740590'); -test(macro, '1234', 51676101935731, '-51676101934497'); -test(macro, '-1234', 51676101935731, '-51676101936965'); -test(macro, '1234', -51676101935731, '51676101936965'); -test(macro, '-1234', -51676101935731, '51676101934497'); -test(macro, '5678', 0, '5678'); -test(macro, '-5678', 0, '-5678'); -test(macro, '5678', 1, '5677'); -test(macro, '-5678', 1, '-5679'); -test(macro, '5678', -1, '5679'); -test(macro, '-5678', -1, '-5677'); -test(macro, '5678', 3, '5675'); -test(macro, '-5678', 3, '-5681'); -test(macro, '5678', -3, '5681'); -test(macro, '-5678', -3, '-5675'); -test(macro, '5678', 7, '5671'); -test(macro, '-5678', 7, '-5685'); -test(macro, '5678', -7, '5685'); -test(macro, '-5678', -7, '-5671'); -test(macro, '5678', 9, '5669'); -test(macro, '-5678', 9, '-5687'); -test(macro, '5678', -9, '5687'); -test(macro, '-5678', -9, '-5669'); -test(macro, '5678', 11, '5667'); -test(macro, '-5678', 11, '-5689'); -test(macro, '5678', -11, '5689'); -test(macro, '-5678', -11, '-5667'); -test(macro, '5678', 17, '5661'); -test(macro, '-5678', 17, '-5695'); -test(macro, '5678', -17, '5695'); -test(macro, '-5678', -17, '-5661'); -test(macro, '5678', 22, '5656'); -test(macro, '-5678', 22, '-5700'); -test(macro, '5678', -22, '5700'); -test(macro, '-5678', -22, '-5656'); -test(macro, '5678', 24, '5654'); -test(macro, '-5678', 24, '-5702'); -test(macro, '5678', -24, '5702'); -test(macro, '-5678', -24, '-5654'); -test(macro, '5678', 27, '5651'); -test(macro, '-5678', 27, '-5705'); -test(macro, '5678', -27, '5705'); -test(macro, '-5678', -27, '-5651'); -test(macro, '5678', 29, '5649'); -test(macro, '-5678', 29, '-5707'); -test(macro, '5678', -29, '5707'); -test(macro, '-5678', -29, '-5649'); -test(macro, '5678', 1234, '4444'); -test(macro, '-5678', 1234, '-6912'); -test(macro, '5678', -1234, '6912'); -test(macro, '-5678', -1234, '-4444'); -test(macro, '5678', 5678, '0'); -test(macro, '-5678', 5678, '-11356'); -test(macro, '5678', -5678, '11356'); -test(macro, '-5678', -5678, '0'); -test(macro, '5678', 94906265, '-94900587'); -test(macro, '-5678', 94906265, '-94911943'); -test(macro, '5678', -94906265, '94911943'); -test(macro, '-5678', -94906265, '94900587'); -test(macro, '5678', 94906266, '-94900588'); -test(macro, '-5678', 94906266, '-94911944'); -test(macro, '5678', -94906266, '94911944'); -test(macro, '-5678', -94906266, '94900588'); -test(macro, '5678', 1073741824, '-1073736146'); -test(macro, '-5678', 1073741824, '-1073747502'); -test(macro, '5678', -1073741824, '1073747502'); -test(macro, '-5678', -1073741824, '1073736146'); -test(macro, '5678', 51676101935731, '-51676101930053'); -test(macro, '-5678', 51676101935731, '-51676101941409'); -test(macro, '5678', -51676101935731, '51676101941409'); -test(macro, '-5678', -51676101935731, '51676101930053'); -test(macro, '94906265', 0, '94906265'); -test(macro, '-94906265', 0, '-94906265'); -test(macro, '94906265', 1, '94906264'); -test(macro, '-94906265', 1, '-94906266'); -test(macro, '94906265', -1, '94906266'); -test(macro, '-94906265', -1, '-94906264'); -test(macro, '94906265', 3, '94906262'); -test(macro, '-94906265', 3, '-94906268'); -test(macro, '94906265', -3, '94906268'); -test(macro, '-94906265', -3, '-94906262'); -test(macro, '94906265', 7, '94906258'); -test(macro, '-94906265', 7, '-94906272'); -test(macro, '94906265', -7, '94906272'); -test(macro, '-94906265', -7, '-94906258'); -test(macro, '94906265', 9, '94906256'); -test(macro, '-94906265', 9, '-94906274'); -test(macro, '94906265', -9, '94906274'); -test(macro, '-94906265', -9, '-94906256'); -test(macro, '94906265', 11, '94906254'); -test(macro, '-94906265', 11, '-94906276'); -test(macro, '94906265', -11, '94906276'); -test(macro, '-94906265', -11, '-94906254'); -test(macro, '94906265', 17, '94906248'); -test(macro, '-94906265', 17, '-94906282'); -test(macro, '94906265', -17, '94906282'); -test(macro, '-94906265', -17, '-94906248'); -test(macro, '94906265', 22, '94906243'); -test(macro, '-94906265', 22, '-94906287'); -test(macro, '94906265', -22, '94906287'); -test(macro, '-94906265', -22, '-94906243'); -test(macro, '94906265', 24, '94906241'); -test(macro, '-94906265', 24, '-94906289'); -test(macro, '94906265', -24, '94906289'); -test(macro, '-94906265', -24, '-94906241'); -test(macro, '94906265', 27, '94906238'); -test(macro, '-94906265', 27, '-94906292'); -test(macro, '94906265', -27, '94906292'); -test(macro, '-94906265', -27, '-94906238'); -test(macro, '94906265', 29, '94906236'); -test(macro, '-94906265', 29, '-94906294'); -test(macro, '94906265', -29, '94906294'); -test(macro, '-94906265', -29, '-94906236'); -test(macro, '94906265', 1234, '94905031'); -test(macro, '-94906265', 1234, '-94907499'); -test(macro, '94906265', -1234, '94907499'); -test(macro, '-94906265', -1234, '-94905031'); -test(macro, '94906265', 5678, '94900587'); -test(macro, '-94906265', 5678, '-94911943'); -test(macro, '94906265', -5678, '94911943'); -test(macro, '-94906265', -5678, '-94900587'); -test(macro, '94906265', 94906265, '0'); -test(macro, '-94906265', 94906265, '-189812530'); -test(macro, '94906265', -94906265, '189812530'); -test(macro, '-94906265', -94906265, '0'); -test(macro, '94906265', 94906266, '-1'); -test(macro, '-94906265', 94906266, '-189812531'); -test(macro, '94906265', -94906266, '189812531'); -test(macro, '-94906265', -94906266, '1'); -test(macro, '94906265', 1073741824, '-978835559'); -test(macro, '-94906265', 1073741824, '-1168648089'); -test(macro, '94906265', -1073741824, '1168648089'); -test(macro, '-94906265', -1073741824, '978835559'); -test(macro, '94906265', 51676101935731, '-51676007029466'); -test(macro, '-94906265', 51676101935731, '-51676196841996'); -test(macro, '94906265', -51676101935731, '51676196841996'); -test(macro, '-94906265', -51676101935731, '51676007029466'); -test(macro, '94906266', 0, '94906266'); -test(macro, '-94906266', 0, '-94906266'); -test(macro, '94906266', 1, '94906265'); -test(macro, '-94906266', 1, '-94906267'); -test(macro, '94906266', -1, '94906267'); -test(macro, '-94906266', -1, '-94906265'); -test(macro, '94906266', 3, '94906263'); -test(macro, '-94906266', 3, '-94906269'); -test(macro, '94906266', -3, '94906269'); -test(macro, '-94906266', -3, '-94906263'); -test(macro, '94906266', 7, '94906259'); -test(macro, '-94906266', 7, '-94906273'); -test(macro, '94906266', -7, '94906273'); -test(macro, '-94906266', -7, '-94906259'); -test(macro, '94906266', 9, '94906257'); -test(macro, '-94906266', 9, '-94906275'); -test(macro, '94906266', -9, '94906275'); -test(macro, '-94906266', -9, '-94906257'); -test(macro, '94906266', 11, '94906255'); -test(macro, '-94906266', 11, '-94906277'); -test(macro, '94906266', -11, '94906277'); -test(macro, '-94906266', -11, '-94906255'); -test(macro, '94906266', 17, '94906249'); -test(macro, '-94906266', 17, '-94906283'); -test(macro, '94906266', -17, '94906283'); -test(macro, '-94906266', -17, '-94906249'); -test(macro, '94906266', 22, '94906244'); -test(macro, '-94906266', 22, '-94906288'); -test(macro, '94906266', -22, '94906288'); -test(macro, '-94906266', -22, '-94906244'); -test(macro, '94906266', 24, '94906242'); -test(macro, '-94906266', 24, '-94906290'); -test(macro, '94906266', -24, '94906290'); -test(macro, '-94906266', -24, '-94906242'); -test(macro, '94906266', 27, '94906239'); -test(macro, '-94906266', 27, '-94906293'); -test(macro, '94906266', -27, '94906293'); -test(macro, '-94906266', -27, '-94906239'); -test(macro, '94906266', 29, '94906237'); -test(macro, '-94906266', 29, '-94906295'); -test(macro, '94906266', -29, '94906295'); -test(macro, '-94906266', -29, '-94906237'); -test(macro, '94906266', 1234, '94905032'); -test(macro, '-94906266', 1234, '-94907500'); -test(macro, '94906266', -1234, '94907500'); -test(macro, '-94906266', -1234, '-94905032'); -test(macro, '94906266', 5678, '94900588'); -test(macro, '-94906266', 5678, '-94911944'); -test(macro, '94906266', -5678, '94911944'); -test(macro, '-94906266', -5678, '-94900588'); -test(macro, '94906266', 94906265, '1'); -test(macro, '-94906266', 94906265, '-189812531'); -test(macro, '94906266', -94906265, '189812531'); -test(macro, '-94906266', -94906265, '-1'); -test(macro, '94906266', 94906266, '0'); -test(macro, '-94906266', 94906266, '-189812532'); -test(macro, '94906266', -94906266, '189812532'); -test(macro, '-94906266', -94906266, '0'); -test(macro, '94906266', 1073741824, '-978835558'); -test(macro, '-94906266', 1073741824, '-1168648090'); -test(macro, '94906266', -1073741824, '1168648090'); -test(macro, '-94906266', -1073741824, '978835558'); -test(macro, '94906266', 51676101935731, '-51676007029465'); -test(macro, '-94906266', 51676101935731, '-51676196841997'); -test(macro, '94906266', -51676101935731, '51676196841997'); -test(macro, '-94906266', -51676101935731, '51676007029465'); -test(macro, '1073741824', 0, '1073741824'); -test(macro, '-1073741824', 0, '-1073741824'); -test(macro, '1073741824', 1, '1073741823'); -test(macro, '-1073741824', 1, '-1073741825'); -test(macro, '1073741824', -1, '1073741825'); -test(macro, '-1073741824', -1, '-1073741823'); -test(macro, '1073741824', 3, '1073741821'); -test(macro, '-1073741824', 3, '-1073741827'); -test(macro, '1073741824', -3, '1073741827'); -test(macro, '-1073741824', -3, '-1073741821'); -test(macro, '1073741824', 7, '1073741817'); -test(macro, '-1073741824', 7, '-1073741831'); -test(macro, '1073741824', -7, '1073741831'); -test(macro, '-1073741824', -7, '-1073741817'); -test(macro, '1073741824', 9, '1073741815'); -test(macro, '-1073741824', 9, '-1073741833'); -test(macro, '1073741824', -9, '1073741833'); -test(macro, '-1073741824', -9, '-1073741815'); -test(macro, '1073741824', 11, '1073741813'); -test(macro, '-1073741824', 11, '-1073741835'); -test(macro, '1073741824', -11, '1073741835'); -test(macro, '-1073741824', -11, '-1073741813'); -test(macro, '1073741824', 17, '1073741807'); -test(macro, '-1073741824', 17, '-1073741841'); -test(macro, '1073741824', -17, '1073741841'); -test(macro, '-1073741824', -17, '-1073741807'); -test(macro, '1073741824', 22, '1073741802'); -test(macro, '-1073741824', 22, '-1073741846'); -test(macro, '1073741824', -22, '1073741846'); -test(macro, '-1073741824', -22, '-1073741802'); -test(macro, '1073741824', 24, '1073741800'); -test(macro, '-1073741824', 24, '-1073741848'); -test(macro, '1073741824', -24, '1073741848'); -test(macro, '-1073741824', -24, '-1073741800'); -test(macro, '1073741824', 27, '1073741797'); -test(macro, '-1073741824', 27, '-1073741851'); -test(macro, '1073741824', -27, '1073741851'); -test(macro, '-1073741824', -27, '-1073741797'); -test(macro, '1073741824', 29, '1073741795'); -test(macro, '-1073741824', 29, '-1073741853'); -test(macro, '1073741824', -29, '1073741853'); -test(macro, '-1073741824', -29, '-1073741795'); -test(macro, '1073741824', 1234, '1073740590'); -test(macro, '-1073741824', 1234, '-1073743058'); -test(macro, '1073741824', -1234, '1073743058'); -test(macro, '-1073741824', -1234, '-1073740590'); -test(macro, '1073741824', 5678, '1073736146'); -test(macro, '-1073741824', 5678, '-1073747502'); -test(macro, '1073741824', -5678, '1073747502'); -test(macro, '-1073741824', -5678, '-1073736146'); -test(macro, '1073741824', 94906265, '978835559'); -test(macro, '-1073741824', 94906265, '-1168648089'); -test(macro, '1073741824', -94906265, '1168648089'); -test(macro, '-1073741824', -94906265, '-978835559'); -test(macro, '1073741824', 94906266, '978835558'); -test(macro, '-1073741824', 94906266, '-1168648090'); -test(macro, '1073741824', -94906266, '1168648090'); -test(macro, '-1073741824', -94906266, '-978835558'); -test(macro, '1073741824', 1073741824, '0'); -test(macro, '-1073741824', 1073741824, '-2147483648'); -test(macro, '1073741824', -1073741824, '2147483648'); -test(macro, '-1073741824', -1073741824, '0'); -test(macro, '1073741824', 51676101935731, '-51675028193907'); -test(macro, '-1073741824', 51676101935731, '-51677175677555'); -test(macro, '1073741824', -51676101935731, '51677175677555'); -test(macro, '-1073741824', -51676101935731, '51675028193907'); -test(macro, '51676101935731', 0, '51676101935731'); -test(macro, '-51676101935731', 0, '-51676101935731'); -test(macro, '51676101935731', 1, '51676101935730'); -test(macro, '-51676101935731', 1, '-51676101935732'); -test(macro, '51676101935731', -1, '51676101935732'); -test(macro, '-51676101935731', -1, '-51676101935730'); -test(macro, '51676101935731', 3, '51676101935728'); -test(macro, '-51676101935731', 3, '-51676101935734'); -test(macro, '51676101935731', -3, '51676101935734'); -test(macro, '-51676101935731', -3, '-51676101935728'); -test(macro, '51676101935731', 7, '51676101935724'); -test(macro, '-51676101935731', 7, '-51676101935738'); -test(macro, '51676101935731', -7, '51676101935738'); -test(macro, '-51676101935731', -7, '-51676101935724'); -test(macro, '51676101935731', 9, '51676101935722'); -test(macro, '-51676101935731', 9, '-51676101935740'); -test(macro, '51676101935731', -9, '51676101935740'); -test(macro, '-51676101935731', -9, '-51676101935722'); -test(macro, '51676101935731', 11, '51676101935720'); -test(macro, '-51676101935731', 11, '-51676101935742'); -test(macro, '51676101935731', -11, '51676101935742'); -test(macro, '-51676101935731', -11, '-51676101935720'); -test(macro, '51676101935731', 17, '51676101935714'); -test(macro, '-51676101935731', 17, '-51676101935748'); -test(macro, '51676101935731', -17, '51676101935748'); -test(macro, '-51676101935731', -17, '-51676101935714'); -test(macro, '51676101935731', 22, '51676101935709'); -test(macro, '-51676101935731', 22, '-51676101935753'); -test(macro, '51676101935731', -22, '51676101935753'); -test(macro, '-51676101935731', -22, '-51676101935709'); -test(macro, '51676101935731', 24, '51676101935707'); -test(macro, '-51676101935731', 24, '-51676101935755'); -test(macro, '51676101935731', -24, '51676101935755'); -test(macro, '-51676101935731', -24, '-51676101935707'); -test(macro, '51676101935731', 27, '51676101935704'); -test(macro, '-51676101935731', 27, '-51676101935758'); -test(macro, '51676101935731', -27, '51676101935758'); -test(macro, '-51676101935731', -27, '-51676101935704'); -test(macro, '51676101935731', 29, '51676101935702'); -test(macro, '-51676101935731', 29, '-51676101935760'); -test(macro, '51676101935731', -29, '51676101935760'); -test(macro, '-51676101935731', -29, '-51676101935702'); -test(macro, '51676101935731', 1234, '51676101934497'); -test(macro, '-51676101935731', 1234, '-51676101936965'); -test(macro, '51676101935731', -1234, '51676101936965'); -test(macro, '-51676101935731', -1234, '-51676101934497'); -test(macro, '51676101935731', 5678, '51676101930053'); -test(macro, '-51676101935731', 5678, '-51676101941409'); -test(macro, '51676101935731', -5678, '51676101941409'); -test(macro, '-51676101935731', -5678, '-51676101930053'); -test(macro, '51676101935731', 94906265, '51676007029466'); -test(macro, '-51676101935731', 94906265, '-51676196841996'); -test(macro, '51676101935731', -94906265, '51676196841996'); -test(macro, '-51676101935731', -94906265, '-51676007029466'); -test(macro, '51676101935731', 94906266, '51676007029465'); -test(macro, '-51676101935731', 94906266, '-51676196841997'); -test(macro, '51676101935731', -94906266, '51676196841997'); -test(macro, '-51676101935731', -94906266, '-51676007029465'); -test(macro, '51676101935731', 1073741824, '51675028193907'); -test(macro, '-51676101935731', 1073741824, '-51677175677555'); -test(macro, '51676101935731', -1073741824, '51677175677555'); -test(macro, '-51676101935731', -1073741824, '-51675028193907'); -test(macro, '51676101935731', 51676101935731, '0'); -test(macro, '-51676101935731', 51676101935731, '-103352203871462'); -test(macro, '51676101935731', -51676101935731, '103352203871462'); -test(macro, '-51676101935731', -51676101935731, '0'); -test(macro, '717897987691852588770249', 0, '717897987691852588770249'); -test(macro, '-717897987691852588770249', 0, '-717897987691852588770249'); -test(macro, '717897987691852588770249', 1, '717897987691852588770248'); -test(macro, '-717897987691852588770249', 1, '-717897987691852588770250'); -test(macro, '717897987691852588770249', -1, '717897987691852588770250'); -test(macro, '-717897987691852588770249', -1, '-717897987691852588770248'); -test(macro, '717897987691852588770249', 3, '717897987691852588770246'); -test(macro, '-717897987691852588770249', 3, '-717897987691852588770252'); -test(macro, '717897987691852588770249', -3, '717897987691852588770252'); -test(macro, '-717897987691852588770249', -3, '-717897987691852588770246'); -test(macro, '717897987691852588770249', 7, '717897987691852588770242'); -test(macro, '-717897987691852588770249', 7, '-717897987691852588770256'); -test(macro, '717897987691852588770249', -7, '717897987691852588770256'); -test(macro, '-717897987691852588770249', -7, '-717897987691852588770242'); -test(macro, '717897987691852588770249', 9, '717897987691852588770240'); -test(macro, '-717897987691852588770249', 9, '-717897987691852588770258'); -test(macro, '717897987691852588770249', -9, '717897987691852588770258'); -test(macro, '-717897987691852588770249', -9, '-717897987691852588770240'); -test(macro, '717897987691852588770249', 11, '717897987691852588770238'); -test(macro, '-717897987691852588770249', 11, '-717897987691852588770260'); -test(macro, '717897987691852588770249', -11, '717897987691852588770260'); -test(macro, '-717897987691852588770249', -11, '-717897987691852588770238'); -test(macro, '717897987691852588770249', 17, '717897987691852588770232'); -test(macro, '-717897987691852588770249', 17, '-717897987691852588770266'); -test(macro, '717897987691852588770249', -17, '717897987691852588770266'); -test(macro, '-717897987691852588770249', -17, '-717897987691852588770232'); -test(macro, '717897987691852588770249', 22, '717897987691852588770227'); -test(macro, '-717897987691852588770249', 22, '-717897987691852588770271'); -test(macro, '717897987691852588770249', -22, '717897987691852588770271'); -test(macro, '-717897987691852588770249', -22, '-717897987691852588770227'); -test(macro, '717897987691852588770249', 24, '717897987691852588770225'); -test(macro, '-717897987691852588770249', 24, '-717897987691852588770273'); -test(macro, '717897987691852588770249', -24, '717897987691852588770273'); -test(macro, '-717897987691852588770249', -24, '-717897987691852588770225'); -test(macro, '717897987691852588770249', 27, '717897987691852588770222'); -test(macro, '-717897987691852588770249', 27, '-717897987691852588770276'); -test(macro, '717897987691852588770249', -27, '717897987691852588770276'); -test(macro, '-717897987691852588770249', -27, '-717897987691852588770222'); -test(macro, '717897987691852588770249', 29, '717897987691852588770220'); -test(macro, '-717897987691852588770249', 29, '-717897987691852588770278'); -test(macro, '717897987691852588770249', -29, '717897987691852588770278'); -test(macro, '-717897987691852588770249', -29, '-717897987691852588770220'); -test(macro, '717897987691852588770249', 1234, '717897987691852588769015'); -test(macro, '-717897987691852588770249', 1234, '-717897987691852588771483'); -test(macro, '717897987691852588770249', -1234, '717897987691852588771483'); -test(macro, '-717897987691852588770249', -1234, '-717897987691852588769015'); -test(macro, '717897987691852588770249', 5678, '717897987691852588764571'); -test(macro, '-717897987691852588770249', 5678, '-717897987691852588775927'); -test(macro, '717897987691852588770249', -5678, '717897987691852588775927'); -test(macro, '-717897987691852588770249', -5678, '-717897987691852588764571'); -test(macro, '717897987691852588770249', 94906265, '717897987691852493863984'); -test(macro, '-717897987691852588770249', 94906265, '-717897987691852683676514'); -test(macro, '717897987691852588770249', -94906265, '717897987691852683676514'); -test( - macro, - '-717897987691852588770249', - -94906265, - '-717897987691852493863984', -); -test(macro, '717897987691852588770249', 94906266, '717897987691852493863983'); -test(macro, '-717897987691852588770249', 94906266, '-717897987691852683676515'); -test(macro, '717897987691852588770249', -94906266, '717897987691852683676515'); -test( - macro, - '-717897987691852588770249', - -94906266, - '-717897987691852493863983', -); -test(macro, '717897987691852588770249', 1073741824, '717897987691851515028425'); -test( - macro, - '-717897987691852588770249', - 1073741824, - '-717897987691853662512073', -); -test( - macro, - '717897987691852588770249', - -1073741824, - '717897987691853662512073', -); -test( - macro, - '-717897987691852588770249', - -1073741824, - '-717897987691851515028425', -); -test( - macro, - '717897987691852588770249', - 51676101935731, - '717897987640176486834518', -); -test( - macro, - '-717897987691852588770249', - 51676101935731, - '-717897987743528690705980', -); -test( - macro, - '717897987691852588770249', - -51676101935731, - '717897987743528690705980', -); -test( - macro, - '-717897987691852588770249', - -51676101935731, - '-717897987640176486834518', -); diff --git a/test/src/integer/bugs/mul.js b/test/src/integer/bugs/mul.js deleted file mode 100644 index 63dab56..0000000 --- a/test/src/integer/bugs/mul.js +++ /dev/null @@ -1,13 +0,0 @@ -import test from 'ava'; - -import {parse, stringify, mul} from '../../../../src/index.js'; - -test('mul handles overflow', (t) => { - const X = '81129639699425365877808850315535'; - const expected = - '6582018437758576371414942707515558118625242782831331069062336225'; - const x = parse(X); - const r = mul(x, x); - t.is(X, stringify(x)); - t.is(expected, stringify(r)); -}); diff --git a/test/src/integer/constants.js b/test/src/integer/constants.js deleted file mode 100644 index c309267..0000000 --- a/test/src/integer/constants.js +++ /dev/null @@ -1,13 +0,0 @@ -import test from 'ava'; - -import {ZZ, $0, $1, $_1} from '../../../src/index.js'; - -test('$0 == ZZ.$0', (t) => { - t.true($0().eq(ZZ.$0())); -}); -test('$1 == ZZ.$1', (t) => { - t.true($1().eq(ZZ.$1())); -}); -test('$_1 == ZZ.$_1', (t) => { - t.true($_1().eq(ZZ.$_1())); -}); diff --git a/test/src/integer/examples.js b/test/src/integer/examples.js deleted file mode 100644 index bd09bad..0000000 --- a/test/src/integer/examples.js +++ /dev/null @@ -1,15 +0,0 @@ -import test from 'ava'; -import {parse, stringify, add} from '../../../src/index.js'; - -function macro(t, A, x, B, y, C, z) { - const a = parse(A, x); - const b = parse(B, y); - const c = add(a, b); - t.is(stringify(a, x), A); - t.is(stringify(b, y), B); - t.is(stringify(c, z), C); -} - -macro.title = (_, A, x, B, y, C, z) => `${A}_${x} + ${B}_${y} = ${C}_${z}`; - -test(macro, 'dead', 16, '101010', 2, '57047', 10); diff --git a/test/src/integer/parse_stringify_base_10.js b/test/src/integer/parse_stringify_base_10.js deleted file mode 100644 index e5bdd4f..0000000 --- a/test/src/integer/parse_stringify_base_10.js +++ /dev/null @@ -1,25 +0,0 @@ -import test from 'ava'; - -import {parse, stringify} from '../../../src/index.js'; - -const numbers = [ - '0', - '1', - '209802830232092830823', - '8237893478979874398743987489372039820947309874890209382098407', - '9023803289238028329081829018039820380283092380298039283092803928039820', - '-1', - '-209802830232092830823', - '-8237893478979874398743987489372039820947309874890209382098407', - '-9023803289238028329081829018039820380283092380298039283092803928039820', -]; - -function macro(t, number) { - const parsed = parse(number); - const unparsed = stringify(parsed); - t.is(unparsed, number); -} - -macro.title = (_, number) => `stringify(parse(${number})) == ${number}`; - -for (const number of numbers) test(macro, number); diff --git a/test/src/integer/parse_stringify_negative_base_10.js b/test/src/integer/parse_stringify_negative_base_10.js deleted file mode 100644 index f52d990..0000000 --- a/test/src/integer/parse_stringify_negative_base_10.js +++ /dev/null @@ -1,25 +0,0 @@ -import test from 'ava'; - -import {parse, stringify} from '../../../src/index.js'; - -const numbers = [ - '0', - '1', - '209802830232092830823', - '8237893478979874398743987489372039820947309874890209382098407', - '9023803289238028329081829018039820380283092380298039283092803928039820', - '-1', - '-209802830232092830823', - '-8237893478979874398743987489372039820947309874890209382098407', - '-9023803289238028329081829018039820380283092380298039283092803928039820', -]; - -function macro(t, number) { - const parsed = parse(number, 10, -1); - const unparsed = stringify(parsed.opposite()); - t.is(unparsed, number); -} - -macro.title = (_, number) => `stringify(parse(${number})) == ${number}`; - -for (const number of numbers) test(macro, number); diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 8e3ca20..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "compilerOptions": { - "allowJs": true, - "emitDeclarationOnly": true, - "declaration": true, - "outDir": "types", - "checkJs": true, - "target": "es2020", - "module": "es2020", - "moduleResolution": "node", - "allowSyntheticDefaultImports": true - }, - "include": [ - "src/**/*" - ] -} diff --git a/variable/index.html b/variable/index.html new file mode 100644 index 0000000..b889b24 --- /dev/null +++ b/variable/index.html @@ -0,0 +1,602 @@ + + + + + + Variable | @aureooms/js-integer + + + + + + + +
    + Home + Manual + Reference + Source + + +
    + + + +

    Variable

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Static Public Summary
    + public + + + + + +
    +

    + + + + DEFAULT_DISPLAY_BASE: number +

    +
    +
    + + + +
    +
    + + +
    + public + + + + + +
    +

    + + + + DEFAULT_REPRESENTATION_BASE: * +

    +
    +
    + + + +
    +
    + + +
    + public + + + + + +
    +

    + + + + MAX_BASE: * +

    +
    +
    + + + +
    +
    + + +
    + public + + + + + +
    +

    + + + + MAX_NUMBER: * +

    +
    +
    + + + +
    +
    + + +
    + public + + + + + +
    +

    + + + + MIN_BASE: number +

    +
    +
    + + + +
    +
    + + +
    + public + + + + + +
    +

    + + + + MIN_NUMBER: * +

    +
    +
    + + + +
    +
    + + +
    + public + + + + + +
    +

    + + + + ZZ: IntegerRing +

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

    Static Public

    + +
    +

    + public + + + + + + DEFAULT_DISPLAY_BASE: number + + + + source + +

    + +
    import {DEFAULT_DISPLAY_BASE} from '@aureooms/js-integer/src/DEFAULT_DISPLAY_BASE.js'
    + + + + + + +
    +
    + + + + + + + + + + + + + + + + + +
    +
    +

    + public + + + + + + DEFAULT_REPRESENTATION_BASE: * + + + + source + +

    + +
    import {DEFAULT_REPRESENTATION_BASE} from '@aureooms/js-integer/src/DEFAULT_REPRESENTATION_BASE.js'
    + + + + + + +
    +
    + + + + + + + + + + + + + + + + + +
    +
    +

    + public + + + + + + MAX_BASE: * + + + + source + +

    + +
    import {MAX_BASE} from '@aureooms/js-integer/src/_limits.js'
    + + + + + + +
    +
    + + + + + + + + + + + + + + + + + +
    +
    +

    + public + + + + + + MAX_NUMBER: * + + + + source + +

    + +
    import {MAX_NUMBER} from '@aureooms/js-integer/src/_limits.js'
    + + + + + + +
    +
    + + + + + + + + + + + + + + + + + +
    +
    +

    + public + + + + + + MIN_BASE: number + + + + source + +

    + +
    import {MIN_BASE} from '@aureooms/js-integer/src/_limits.js'
    + + + + + + +
    +
    + + + + + + + + + + + + + + + + + +
    +
    +

    + public + + + + + + MIN_NUMBER: * + + + + source + +

    + +
    import {MIN_NUMBER} from '@aureooms/js-integer/src/_limits.js'
    + + + + + + +
    +
    + + + + + + + + + + + + + + + + + +
    +
    +

    + public + + + + + + ZZ: IntegerRing + + + + source + +

    + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + +
    +
    +
    + + + + + + + + + + + + diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 738470d..0000000 --- a/yarn.lock +++ /dev/null @@ -1,10453 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@aureooms/js-collections-deque@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@aureooms/js-collections-deque/-/js-collections-deque-6.0.1.tgz#ba89379ac826539047f768e1fb84ed4d2c1f829e" - integrity sha512-GUhEIF6tmnxsGvUaPSR/7HbZETn04yHOcrt7swo5ftKRz+Pb/N9iuvGimBwmCTLDkJ60OZG2TWfoYPVNA2lutQ== - dependencies: - "@aureooms/js-error" "^5.0.2" - -"@aureooms/js-error@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@aureooms/js-error/-/js-error-5.0.2.tgz#dc2ad2fc2b10365581c32c28222daccc5c3c9600" - integrity sha512-HLO95kmZ1nJV5qo8Xq7czHVskFGPkM3l60JFgdTnpvCH6P6lkyWDBplaDB9gI5cPvcRIZDs1HeAHhAlHR/jBxw== - -"@aureooms/js-integer-big-endian@^11.0.1": - version "11.0.1" - resolved "https://registry.yarnpkg.com/@aureooms/js-integer-big-endian/-/js-integer-big-endian-11.0.1.tgz#fcc74d976a1f3ddedc259040f621b5b535f99eea" - integrity sha512-tV8cZXSGZkbISgJpt/+lv7fjf2rqZOoqlWSn0uYV5as9tdrlRGT9NIZNZtsSSEGq8Uu1zbPEoNFpBqxX4kuYCQ== - -"@aureooms/js-itertools@5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@aureooms/js-itertools/-/js-itertools-5.0.2.tgz#d3da95e219e069aed4483cc9dcd7e73970ce83db" - integrity sha512-FXCeJh0qRUdo2pJyEruN5rOQcelTZpfoC0e0dZPu+kziyhnkeG+LuTYMRBDJnH/XJ4zTGPmKKtahtVeTFG17mA== - dependencies: - "@aureooms/js-collections-deque" "^6.0.1" - "@aureooms/js-error" "^5.0.2" - -"@aureooms/js-random@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@aureooms/js-random/-/js-random-2.0.0.tgz#f62c6954ed79bd9a520197125ee3cfbe14b00d72" - integrity sha1-9ixpVO15vZpSAZcSXuPPvhSwDXI= - -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@^7.0.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" - integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== - dependencies: - "@babel/highlight" "^7.12.13" - -"@babel/compat-data@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.0.tgz#7889eb7ee6518e2afa5d312b15fd7fd1fe9f3744" - integrity sha512-mKgFbYQ+23pjwNGBNPNWrBfa3g/EcmrPnwQpjWoNxq9xYf+M8wcLhMlz/wkWimLjzNzGnl3D+C2186gMzk0VuA== - -"@babel/compat-data@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.12.tgz#a8a5ccac19c200f9dd49624cac6e19d7be1236a1" - integrity sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ== - -"@babel/compat-data@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.8.tgz#5b783b9808f15cef71547f1b691f34f8ff6003a6" - integrity sha512-EaI33z19T4qN3xLXsGf48M2cDqa6ei9tPZlfLdb2HC+e/cFtREiRd8hdSqDbwdLB0/+gLwqJmCYASH0z2bUdog== - -"@babel/core@7.13.10", "@babel/core@^7.12.10", "@babel/core@^7.12.16": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.10.tgz#07de050bbd8193fcd8a3c27918c0890613a94559" - integrity sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.9" - "@babel/helper-compilation-targets" "^7.13.10" - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helpers" "^7.13.10" - "@babel/parser" "^7.13.10" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - lodash "^4.17.19" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/eslint-parser@^7.12.16": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.13.10.tgz#e272979914f36bb6cea144c14c32bb51632696dd" - integrity sha512-/I1HQ3jGPhIpeBFeI3wO9WwWOnBYpuR0pX0KlkdGcRQAVX9prB/FCS2HBpL7BiFbzhny1YCiBH8MTZD2jJa7Hg== - dependencies: - eslint-scope "5.1.0" - eslint-visitor-keys "^1.3.0" - semver "^6.3.0" - -"@babel/generator@^7.0.0": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.5.tgz#a2c50de5c8b6d708ab95be5e6053936c1884a4de" - integrity sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A== - dependencies: - "@babel/types" "^7.12.5" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.13.tgz#5f6ebe6c85db99886db2d7b044409196f872a503" - integrity sha512-9qQ8Fgo8HaSvHEt6A5+BATP7XktD/AdAnObUeTRz5/e2y3kbrxZgz32qUJJsdmwUvBJzF4AeV21nGTNwv05Mpw== - dependencies: - "@babel/types" "^7.12.13" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.0.tgz#bd00d4394ca22f220390c56a0b5b85568ec1ec0c" - integrity sha512-zBZfgvBB/ywjx0Rgc2+BwoH/3H+lDtlgD4hBOpEv5LxRnYsm/753iRuLepqnYlynpjC3AdQxtxsoeHJoEEwOAw== - dependencies: - "@babel/types" "^7.13.0" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.13.9": - version "7.13.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39" - integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw== - dependencies: - "@babel/types" "^7.13.0" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" - integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-annotate-as-pure@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" - integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc" - integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helper-compilation-targets@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.0.tgz#c9cf29b82a76fd637f0faa35544c4ace60a155a1" - integrity sha512-SOWD0JK9+MMIhTQiUVd4ng8f3NXhPVQvTv7D3UN4wbp/6cAHnB2EmMaU1zZA2Hh1gwme+THBrVSqTFxHczTh0Q== - dependencies: - "@babel/compat-data" "^7.13.0" - "@babel/helper-validator-option" "^7.12.17" - browserslist "^4.14.5" - semver "7.0.0" - -"@babel/helper-compilation-targets@^7.13.10": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz#1310a1678cb8427c07a753750da4f8ce442bdd0c" - integrity sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA== - dependencies: - "@babel/compat-data" "^7.13.8" - "@babel/helper-validator-option" "^7.12.17" - browserslist "^4.14.5" - semver "^6.3.0" - -"@babel/helper-compilation-targets@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.8.tgz#02bdb22783439afb11b2f009814bdd88384bd468" - integrity sha512-pBljUGC1y3xKLn1nrx2eAhurLMA8OqBtBP/JwG4U8skN7kf8/aqwwxpV1N6T0e7r6+7uNitIa/fUxPFagSXp3A== - dependencies: - "@babel/compat-data" "^7.13.8" - "@babel/helper-validator-option" "^7.12.17" - browserslist "^4.14.5" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.12.1": - version "7.13.11" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz#30d30a005bca2c953f5653fc25091a492177f4f6" - integrity sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-member-expression-to-functions" "^7.13.0" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-replace-supers" "^7.13.0" - "@babel/helper-split-export-declaration" "^7.12.13" - -"@babel/helper-create-class-features-plugin@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.0.tgz#28d04ad9cfbd1ed1d8b988c9ea7b945263365846" - integrity sha512-twwzhthM4/+6o9766AW2ZBHpIHPSGrPGk1+WfHiu13u/lBnggXGNYCpeAyVfNwGDKfkhEDp+WOD/xafoJ2iLjA== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-member-expression-to-functions" "^7.13.0" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-replace-supers" "^7.13.0" - "@babel/helper-split-export-declaration" "^7.12.13" - -"@babel/helper-create-regexp-features-plugin@^7.12.1": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz#2084172e95443fa0a09214ba1bb328f9aea1278f" - integrity sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - regexpu-core "^4.7.1" - -"@babel/helper-create-regexp-features-plugin@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.13.tgz#0996d370a92896c612ae41a4215544bd152579c0" - integrity sha512-XC+kiA0J3at6E85dL5UnCYfVOcIZ834QcAY0TIpgUVnz0zDzg+0TtvZTnJ4g9L1dPRGe30Qi03XCIS4tYCLtqw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - regexpu-core "^4.7.1" - -"@babel/helper-define-polyfill-provider@^0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.2.tgz#619f01afe1deda460676c25c463b42eaefdb71a2" - integrity sha512-hWeolZJivTNGHXHzJjQz/NwDaG4mGXf22ZroOP8bQYgvHNzaQ5tylsVbAcAS2oDjXBwpu8qH2I/654QFS2rDpw== - dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-explode-assignable-expression@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.13.tgz#0e46990da9e271502f77507efa4c9918d3d8634a" - integrity sha512-5loeRNvMo9mx1dA/d6yNi+YiKziJZFylZnCo1nmFF4qPU4yJ14abhWESuSMQSlQxWdxdOFzxXjk/PpfudTtYyw== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-function-name@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" - integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== - dependencies: - "@babel/helper-get-function-arity" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helper-get-function-arity@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" - integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-hoist-variables@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz#5d5882e855b5c5eda91e0cadc26c6e7a2c8593d8" - integrity sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g== - dependencies: - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helper-member-expression-to-functions@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.13.tgz#c5715695b4f8bab32660dbdcdc2341dec7e3df40" - integrity sha512-B+7nN0gIL8FZ8SvMcF+EPyB21KnCcZHQZFczCxbiNGV/O0rsrSBlWGLzmtBJ3GMjSVMIm4lpFhR+VdVBuIsUcQ== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-member-expression-to-functions@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz#6aa4bb678e0f8c22f58cdb79451d30494461b091" - integrity sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ== - dependencies: - "@babel/types" "^7.13.0" - -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977" - integrity sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA== - dependencies: - "@babel/types" "^7.13.12" - -"@babel/helper-module-imports@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0" - integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-module-transforms@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz#42eb4bd8eea68bab46751212c357bfed8b40f6f1" - integrity sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw== - dependencies: - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-replace-supers" "^7.13.0" - "@babel/helper-simple-access" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/helper-validator-identifier" "^7.12.11" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - lodash "^4.17.19" - -"@babel/helper-optimise-call-expression@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" - integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" - integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== - -"@babel/helper-plugin-utils@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.12.13.tgz#174254d0f2424d8aefb4dd48057511247b0a9eeb" - integrity sha512-C+10MXCXJLiR6IeG9+Wiejt9jmtFpxUc3MQqCmPY8hfCjyUGl9kT+B2okzEZrtykiwrc4dbCPdDoz0A/HQbDaA== - -"@babel/helper-plugin-utils@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" - integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== - -"@babel/helper-remap-async-to-generator@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209" - integrity sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-wrap-function" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helper-replace-supers@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.13.tgz#00ec4fb6862546bd3d0aff9aac56074277173121" - integrity sha512-pctAOIAMVStI2TMLhozPKbf5yTEXc0OJa0eENheb4w09SrgOWEs+P4nTOZYJQCqs8JlErGLDPDJTiGIp3ygbLg== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.12.13" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/traverse" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helper-replace-supers@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz#6034b7b51943094cb41627848cb219cb02be1d24" - integrity sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.13.0" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helper-simple-access@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz#8478bcc5cacf6aa1672b251c1d2dde5ccd61a6c4" - integrity sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" - integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== - dependencies: - "@babel/types" "^7.12.1" - -"@babel/helper-split-export-declaration@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" - integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-validator-identifier@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" - integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== - -"@babel/helper-validator-identifier@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" - integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== - -"@babel/helper-validator-option@^7.12.17": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" - integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== - -"@babel/helper-wrap-function@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz#bdb5c66fda8526ec235ab894ad53a1235c79fcc4" - integrity sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helpers@^7.13.10": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.10.tgz#fd8e2ba7488533cdeac45cc158e9ebca5e3c7df8" - integrity sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ== - dependencies: - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/highlight@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" - integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.12.13.tgz#8ab538393e00370b26271b01fa08f7f27f2e795c" - integrity sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.0.0": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.7.tgz#fee7b39fe809d0e73e5b25eecaf5780ef3d73056" - integrity sha512-oWR02Ubp4xTLCAqPRiNIuMVgNO5Aif/xpXtabhzW2HWUD47XJsAB4Zd/Rg30+XeQA3juXigV7hlquOTmwqLiwg== - -"@babel/parser@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.13.tgz#3ee7be4131fe657ba9143d5c5b3a9f253fdb75e9" - integrity sha512-z7n7ybOUzaRc3wwqLpAX8UFIXsrVXUJhtNGBwAnLz6d1KUapqyq7ad2La8gZ6CXhHmGAIL32cop8Tst4/PNWLw== - -"@babel/parser@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.0.tgz#49b9b6ee213e5634fa80361dae139effef893f78" - integrity sha512-w80kxEMFhE3wjMOQkfdTvv0CSdRSJZptIlLhU4eU/coNJeWjduspUFz+IRnBbAq6m5XYBFMoT1TNkk9K9yf10g== - -"@babel/parser@^7.13.10": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.10.tgz#8f8f9bf7b3afa3eabd061f7a5bcdf4fec3c48409" - integrity sha512-0s7Mlrw9uTWkYua7xWr99Wpk2bnGa0ANleKfksYAES8LpWH4gW1OUr42vqKNf0us5UQNfru2wPqMqRITzq/SIQ== - -"@babel/parser@^7.3.3": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.12.tgz#ba320059420774394d3b0c0233ba40e4250b81d1" - integrity sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw== - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz#a3484d84d0b549f3fc916b99ee4783f26fabad2a" - integrity sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - "@babel/plugin-proposal-optional-chaining" "^7.13.12" - -"@babel/plugin-proposal-async-generator-functions@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz#87aacb574b3bc4b5603f6fe41458d72a5a2ec4b1" - integrity sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-remap-async-to-generator" "^7.13.0" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" - integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-proposal-class-properties@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37" - integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-proposal-dynamic-import@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz#876a1f6966e1dec332e8c9451afda3bebcdf2e1d" - integrity sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz#393be47a4acd03fa2af6e3cde9b06e33de1b446d" - integrity sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz#bf1fb362547075afda3634ed31571c5901afef7b" - integrity sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz#93fa78d63857c40ce3c8c3315220fd00bfbb4e1a" - integrity sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz#3730a31dafd3c10d8ccd10648ed80a2ac5472ef3" - integrity sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz#bd9da3188e787b5120b4f9d465a8261ce67ed1db" - integrity sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz#5d210a4d727d6ce3b18f9de82cc99a3964eed60a" - integrity sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g== - dependencies: - "@babel/compat-data" "^7.13.8" - "@babel/helper-compilation-targets" "^7.13.8" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.13.0" - -"@babel/plugin-proposal-optional-catch-binding@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz#3ad6bd5901506ea996fc31bdcf3ccfa2bed71107" - integrity sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz#ba9feb601d422e0adea6760c2bd6bbb7bfec4866" - integrity sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz#04bd4c6d40f6e6bbfa2f57e2d8094bad900ef787" - integrity sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-proposal-unicode-property-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba" - integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072" - integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-flow@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz#5df9962503c0a9c918381c929d51d4d6949e7e86" - integrity sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-import-meta@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.12.1", "@babel/plugin-syntax-jsx@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz#044fb81ebad6698fe62c478875575bcbb9b70f15" - integrity sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" - integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-arrow-functions@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae" - integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-async-to-generator@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f" - integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg== - dependencies: - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-remap-async-to-generator" "^7.13.0" - -"@babel/plugin-transform-block-scoped-functions@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4" - integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-block-scoping@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz#f36e55076d06f41dfd78557ea039c1b581642e61" - integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-classes@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz#0265155075c42918bf4d3a4053134176ad9b533b" - integrity sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-replace-supers" "^7.13.0" - "@babel/helper-split-export-declaration" "^7.12.13" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed" - integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-destructuring@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz#c5dce270014d4e1ebb1d806116694c12b7028963" - integrity sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-dotall-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad" - integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975" - integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-duplicate-keys@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de" - integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-exponentiation-operator@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1" - integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-flow-strip-types@^7.12.10", "@babel/plugin-transform-flow-strip-types@^7.12.13": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.13.0.tgz#58177a48c209971e8234e99906cb6bd1122addd3" - integrity sha512-EXAGFMJgSX8gxWD7PZtW/P6M+z74jpx3wm/+9pn+c2dOawPpBkUX7BrfyPvo6ZpXbgRIEuwgwDb/MGlKvu2pOg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-flow" "^7.12.13" - -"@babel/plugin-transform-for-of@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062" - integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-function-name@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051" - integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-literals@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9" - integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-member-expression-literals@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40" - integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-modules-amd@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz#19f511d60e3d8753cc5a6d4e775d3a5184866cc3" - integrity sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ== - dependencies: - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz#7b01ad7c2dcf2275b06fa1781e00d13d420b3e1b" - integrity sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw== - dependencies: - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-simple-access" "^7.12.13" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3" - integrity sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A== - dependencies: - "@babel/helper-hoist-variables" "^7.13.0" - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-validator-identifier" "^7.12.11" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz#8a3d96a97d199705b9fd021580082af81c06e70b" - integrity sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw== - dependencies: - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9" - integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - -"@babel/plugin-transform-new-target@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c" - integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-object-super@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" - integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/helper-replace-supers" "^7.12.13" - -"@babel/plugin-transform-parameters@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz#8fa7603e3097f9c0b7ca1a4821bc2fb52e9e5007" - integrity sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-property-literals@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" - integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-react-display-name@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz#c28effd771b276f4647411c9733dbb2d2da954bd" - integrity sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-react-jsx-development@^7.12.12": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.17.tgz#f510c0fa7cd7234153539f9a362ced41a5ca1447" - integrity sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.12.17" - -"@babel/plugin-transform-react-jsx@^7.12.11", "@babel/plugin-transform-react-jsx@^7.12.13", "@babel/plugin-transform-react-jsx@^7.12.17": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.13.12.tgz#1df5dfaf0f4b784b43e96da6f28d630e775f68b3" - integrity sha512-jcEI2UqIcpCqB5U5DRxIl0tQEProI2gcu+g8VTIqxLO5Iidojb4d77q+fwGseCvd8af/lJ9masp4QWzBXFE2xA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-module-imports" "^7.13.12" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-jsx" "^7.12.13" - "@babel/types" "^7.13.12" - -"@babel/plugin-transform-react-pure-annotations@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz#05d46f0ab4d1339ac59adf20a1462c91b37a1a42" - integrity sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-regenerator@^7.12.1", "@babel/plugin-transform-regenerator@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz#b628bcc9c85260ac1aeb05b45bde25210194a2f5" - integrity sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA== - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-reserved-words@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695" - integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-shorthand-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad" - integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-spread@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd" - integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - -"@babel/plugin-transform-sticky-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f" - integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-template-literals@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d" - integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-typeof-symbol@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f" - integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-unicode-escapes@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74" - integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-unicode-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac" - integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/preset-env@7.13.12", "@babel/preset-env@^7.12.11": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.13.12.tgz#6dff470478290582ac282fb77780eadf32480237" - integrity sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA== - dependencies: - "@babel/compat-data" "^7.13.12" - "@babel/helper-compilation-targets" "^7.13.10" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-validator-option" "^7.12.17" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.13.12" - "@babel/plugin-proposal-async-generator-functions" "^7.13.8" - "@babel/plugin-proposal-class-properties" "^7.13.0" - "@babel/plugin-proposal-dynamic-import" "^7.13.8" - "@babel/plugin-proposal-export-namespace-from" "^7.12.13" - "@babel/plugin-proposal-json-strings" "^7.13.8" - "@babel/plugin-proposal-logical-assignment-operators" "^7.13.8" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" - "@babel/plugin-proposal-numeric-separator" "^7.12.13" - "@babel/plugin-proposal-object-rest-spread" "^7.13.8" - "@babel/plugin-proposal-optional-catch-binding" "^7.13.8" - "@babel/plugin-proposal-optional-chaining" "^7.13.12" - "@babel/plugin-proposal-private-methods" "^7.13.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.12.13" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.12.13" - "@babel/plugin-transform-arrow-functions" "^7.13.0" - "@babel/plugin-transform-async-to-generator" "^7.13.0" - "@babel/plugin-transform-block-scoped-functions" "^7.12.13" - "@babel/plugin-transform-block-scoping" "^7.12.13" - "@babel/plugin-transform-classes" "^7.13.0" - "@babel/plugin-transform-computed-properties" "^7.13.0" - "@babel/plugin-transform-destructuring" "^7.13.0" - "@babel/plugin-transform-dotall-regex" "^7.12.13" - "@babel/plugin-transform-duplicate-keys" "^7.12.13" - "@babel/plugin-transform-exponentiation-operator" "^7.12.13" - "@babel/plugin-transform-for-of" "^7.13.0" - "@babel/plugin-transform-function-name" "^7.12.13" - "@babel/plugin-transform-literals" "^7.12.13" - "@babel/plugin-transform-member-expression-literals" "^7.12.13" - "@babel/plugin-transform-modules-amd" "^7.13.0" - "@babel/plugin-transform-modules-commonjs" "^7.13.8" - "@babel/plugin-transform-modules-systemjs" "^7.13.8" - "@babel/plugin-transform-modules-umd" "^7.13.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13" - "@babel/plugin-transform-new-target" "^7.12.13" - "@babel/plugin-transform-object-super" "^7.12.13" - "@babel/plugin-transform-parameters" "^7.13.0" - "@babel/plugin-transform-property-literals" "^7.12.13" - "@babel/plugin-transform-regenerator" "^7.12.13" - "@babel/plugin-transform-reserved-words" "^7.12.13" - "@babel/plugin-transform-shorthand-properties" "^7.12.13" - "@babel/plugin-transform-spread" "^7.13.0" - "@babel/plugin-transform-sticky-regex" "^7.12.13" - "@babel/plugin-transform-template-literals" "^7.13.0" - "@babel/plugin-transform-typeof-symbol" "^7.12.13" - "@babel/plugin-transform-unicode-escapes" "^7.12.13" - "@babel/plugin-transform-unicode-regex" "^7.12.13" - "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.13.12" - babel-plugin-polyfill-corejs2 "^0.1.4" - babel-plugin-polyfill-corejs3 "^0.1.3" - babel-plugin-polyfill-regenerator "^0.1.2" - core-js-compat "^3.9.0" - semver "^6.3.0" - -"@babel/preset-flow@^7.12.1": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.12.13.tgz#71ee7fe65a95b507ac12bcad65a4ced27d8dfc3e" - integrity sha512-gcEjiwcGHa3bo9idURBp5fmJPcyFPOszPQjztXrOjUE2wWVqc6fIVJPgWPIQksaQ5XZ2HWiRsf2s1fRGVjUtVw== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-transform-flow-strip-types" "^7.12.13" - -"@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/preset-react@^7.12.10": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.13.tgz#5f911b2eb24277fa686820d5bd81cad9a0602a0a" - integrity sha512-TYM0V9z6Abb6dj1K7i5NrEhA13oS5ujUYQYDfqIBXYHOc2c2VkFgc+q9kyssIyUfy4/hEwqrgSlJ/Qgv8zJLsA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-transform-react-display-name" "^7.12.13" - "@babel/plugin-transform-react-jsx" "^7.12.13" - "@babel/plugin-transform-react-jsx-development" "^7.12.12" - "@babel/plugin-transform-react-pure-annotations" "^7.12.1" - -"@babel/register@7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.13.8.tgz#d9051dc6820cb4e86375cc0e2d55a4862b31184f" - integrity sha512-yCVtABcmvQjRsX2elcZFUV5Q5kDDpHdtXKKku22hNDma60lYuhKmtp1ykZ/okRCPLT2bR5S+cA1kvtBdAFlDTQ== - dependencies: - find-cache-dir "^2.0.0" - lodash "^4.17.19" - make-dir "^2.1.0" - pirates "^4.0.0" - source-map-support "^0.5.16" - -"@babel/runtime@^7.12.5": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.10.tgz#47d42a57b6095f4468da440388fdbad8bebf0d7d" - integrity sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.8.4": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" - integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" - integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/traverse@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.13.tgz#689f0e4b4c08587ad26622832632735fb8c4e0c0" - integrity sha512-3Zb4w7eE/OslI0fTp8c7b286/cQps3+vdLW3UcwC8VSJC6GbKn55aeVVu2QJNuCDoeKyptLOFrPq8WqZZBodyA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.12.13" - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/traverse@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc" - integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.0" - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.13.0" - "@babel/types" "^7.13.0" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/types@^7.10.4", "@babel/types@^7.12.1", "@babel/types@^7.12.5", "@babel/types@^7.4.4": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.7.tgz#6039ff1e242640a29452c9ae572162ec9a8f5d13" - integrity sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@babel/types@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.13.tgz#8be1aa8f2c876da11a9cf650c0ecf656913ad611" - integrity sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@babel/types@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80" - integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@babel/types@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.12.tgz#edbf99208ef48852acdff1c8a681a1e4ade580cd" - integrity sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@commitlint/cli@12.0.1": - version "12.0.1" - resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-12.0.1.tgz#8960e34e8f1aed8b2ea50f223ee817fdf2264ffb" - integrity sha512-V+cMYNHJOr40XT9Kvz3Vrz1Eh7QE1rjQrUbifawDAqcOrBJFuoXwU2SAcRtYFCSqFy9EhbreQGhZFs8dYb90KA== - dependencies: - "@commitlint/format" "^12.0.1" - "@commitlint/lint" "^12.0.1" - "@commitlint/load" "^12.0.1" - "@commitlint/read" "^12.0.1" - "@commitlint/types" "^12.0.1" - get-stdin "8.0.0" - lodash "^4.17.19" - resolve-from "5.0.0" - resolve-global "1.0.0" - yargs "^16.2.0" - -"@commitlint/ensure@^12.0.1": - version "12.0.1" - resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-12.0.1.tgz#0ed5e997026db25eb080559b6e67f55a21eea080" - integrity sha512-XdBq+q1YBBDxWIAEjE3Y1YMbzhUnUuSLAEWD8SU1xsvEpQXWRYwDlMBRkjO7funNWTdL0ZQSkZDzme70imYjbw== - dependencies: - "@commitlint/types" "^12.0.1" - lodash "^4.17.19" - -"@commitlint/execute-rule@^12.0.1": - version "12.0.1" - resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-12.0.1.tgz#5bb2eba929270cafb2bd8191799d8b451de7fb7e" - integrity sha512-JzyweYfZlFLtXpgP+btzSY3YAkGPg61TqUSYQqBr4+5IaVf1FruMm5v4D5eLu9dAJuNKUfHbM3AEfuEPiZ79pg== - -"@commitlint/format@^12.0.1": - version "12.0.1" - resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-12.0.1.tgz#5164e5a9e8592c1983482cbd71e7ea86a645ff1b" - integrity sha512-rF79ipAxR8yFzPzG5tRoEZ//MRkyxCXj4JhpEjtdaCMBAXMssI8uazn3e5D8z4UFgSDe9qOnL0OmQvql7HTMoA== - dependencies: - "@commitlint/types" "^12.0.1" - chalk "^4.0.0" - -"@commitlint/is-ignored@^12.0.1": - version "12.0.1" - resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-12.0.1.tgz#0e59b0524e16300b1d9d62f8c138f083f22ebf9a" - integrity sha512-AplfLn5mX/kWTIiSolcOhTYcgphuGLX8FUr+HmyHBEqUkO36jt0z9caysH47fqU71ePtH63v1DWm+RYQ5RPDjg== - dependencies: - "@commitlint/types" "^12.0.1" - semver "7.3.4" - -"@commitlint/lint@^12.0.1": - version "12.0.1" - resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-12.0.1.tgz#a88b01c81cb6ca1867bd3d8fd288ba30017c2b7d" - integrity sha512-1lKyRCq4ahJrY+Xxo8LsqCbALeJkodtEfpmYHeA5HpPMnK7lRSplLqOLcTCjoPfd4vO+gl6aDEZN+ow3YGQBOg== - dependencies: - "@commitlint/is-ignored" "^12.0.1" - "@commitlint/parse" "^12.0.1" - "@commitlint/rules" "^12.0.1" - "@commitlint/types" "^12.0.1" - -"@commitlint/load@^12.0.1": - version "12.0.1" - resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-12.0.1.tgz#4d180fc88e5b4cfcb476a245d899f85154137502" - integrity sha512-dX8KdCWn7w0bTkkk3zKQpe9X8vsTRa5EM+1ffF313wCX9b6tGa9vujhEHCkSzKAbbE2tFV64CHZygE7rtlHdIA== - dependencies: - "@commitlint/execute-rule" "^12.0.1" - "@commitlint/resolve-extends" "^12.0.1" - "@commitlint/types" "^12.0.1" - chalk "^4.0.0" - cosmiconfig "^7.0.0" - lodash "^4.17.19" - resolve-from "^5.0.0" - -"@commitlint/message@^12.0.1": - version "12.0.1" - resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-12.0.1.tgz#caff6743db78c30a063809501cf4b835c3ce7fa6" - integrity sha512-fXuoxRC+NT1wEQi6p8oHfT7wvWIRgTk+udlRJnWTjmMpiYzVnMmmZfasdShirWr4TtxQtMyL+5DVgh7Y98kURw== - -"@commitlint/parse@^12.0.1": - version "12.0.1" - resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-12.0.1.tgz#ba8641f53e15b523808ba2eaa48c1bf0129c91c4" - integrity sha512-7oEGASmzBnHir5jSIR7KephXrKh7rIi9a6RpH1tOT+CIENYvhe8EDtIy29qMt+RLa2LlaPF7YrAgaJRfzG0YDQ== - dependencies: - "@commitlint/types" "^12.0.1" - conventional-changelog-angular "^5.0.11" - conventional-commits-parser "^3.0.0" - -"@commitlint/read@^12.0.1": - version "12.0.1" - resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-12.0.1.tgz#41f3295ed9f451d4c65223cd37ddd59ef714bddb" - integrity sha512-baa0YeD4QOctEuthLpExQSi9xPiw0kDPfUVHqp8I88iuIXJECeS8S1+1GBiz89e8dLN9zmEE+sN9vtJHdAp9YA== - dependencies: - "@commitlint/top-level" "^12.0.1" - "@commitlint/types" "^12.0.1" - fs-extra "^9.0.0" - git-raw-commits "^2.0.0" - -"@commitlint/resolve-extends@^12.0.1": - version "12.0.1" - resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-12.0.1.tgz#77509f386e08bd30262ec9a75c783d8f4f028fd2" - integrity sha512-Mvg0GDi/68Cqw893ha8uhxE8myHfPmiSSSi7d1x4VJNR4hoS37lBdX89kyx4i9NPmLfviY2cUJKTyK8ZrFznZw== - dependencies: - import-fresh "^3.0.0" - lodash "^4.17.19" - resolve-from "^5.0.0" - resolve-global "^1.0.0" - -"@commitlint/rules@^12.0.1": - version "12.0.1" - resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-12.0.1.tgz#1c81345f468597656141338a493d5e426e44dab9" - integrity sha512-A5O0ubNGugZR9WWxk5IVOLo07lpdUwhG5WkAW2lYpgZ7Z/2U4PLob9b4Ih1eHbQu+gnVeFr91k7F0DrpM7B8EQ== - dependencies: - "@commitlint/ensure" "^12.0.1" - "@commitlint/message" "^12.0.1" - "@commitlint/to-lines" "^12.0.1" - "@commitlint/types" "^12.0.1" - -"@commitlint/to-lines@^12.0.1": - version "12.0.1" - resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-12.0.1.tgz#586d89b9f9ff99ef93b3c8aa3d77faffbe3ffedc" - integrity sha512-XwcJ1jY7x2fhudzbGMpNQkTSMVrxWrI8bRMbVe3Abuu7RfYpFf7VXAlhtnLfxBoagaK7RxjC2+eRidp/3txQBg== - -"@commitlint/top-level@^12.0.1": - version "12.0.1" - resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-12.0.1.tgz#9c7efd319a4f8d29001f011ba8b0e21fad6044f6" - integrity sha512-rHdgt7U24GEau2/9i2vEAbksxkBRiVjHj5ECFL5dd0AJOIvaK++vMg4EF/ME0X/1yd9qVTHTNOl2Q4tTFK7VBQ== - dependencies: - find-up "^5.0.0" - -"@commitlint/types@^12.0.1": - version "12.0.1" - resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-12.0.1.tgz#04a0cbb8aa56b7c004f8939c2d1ef8892ec68327" - integrity sha512-FsNDMV0W7D19/ZbR412klpqAilXASx75Neqh7jPtK278IEwdukOg3vth1r5kTm+BjDScM7wMUEOwIW3NNfAtwg== - dependencies: - chalk "^4.0.0" - -"@concordance/react@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@concordance/react/-/react-2.0.0.tgz#aef913f27474c53731f4fd79cc2f54897de90fde" - integrity sha512-huLSkUuM2/P+U0uy2WwlKuixMsTODD8p4JVQBI4VKeopkiN0C7M3N9XYVawb4M+4spN5RrO/eLhk7KoQX6nsfA== - dependencies: - arrify "^1.0.1" - -"@eslint/eslintrc@^0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.0.tgz#99cc0a0584d72f1df38b900fb062ba995f395547" - integrity sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog== - dependencies: - ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@istanbuljs/schema@^0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" - integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== - -"@js-library/commitlint-config@0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@js-library/commitlint-config/-/commitlint-config-0.0.4.tgz#5243a58b0d4ad36999d4b944c7770c50658c68f5" - integrity sha512-l6un9f0HmIJZswqGe5H/HGBkENpqBQv1b36bdLZLXhZEZBTlm2Chbv3J1hJ2kNG8ogh+EFV5nUYQnL3MefLSDQ== - -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - -"@nodelib/fs.scandir@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" - integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== - dependencies: - "@nodelib/fs.stat" "2.0.3" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" - integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== - -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" - integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== - dependencies: - "@nodelib/fs.scandir" "2.1.3" - fastq "^1.6.0" - -"@rollup/plugin-alias@^3.1.1": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-3.1.2.tgz#c585b05be4a7782d269c69d13def56f44e417772" - integrity sha512-wzDnQ6v7CcoRzS0qVwFPrFdYA4Qlr+ookA217Y2Z3DPZE1R8jrFNM3jvGgOf6o6DMjbnQIn5lCIJgHPe1Bt3uw== - dependencies: - slash "^3.0.0" - -"@rollup/plugin-babel@^5.2.2": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz#9cb1c5146ddd6a4968ad96f209c50c62f92f9879" - integrity sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@rollup/pluginutils" "^3.1.0" - -"@rollup/plugin-commonjs@^17.0.0": - version "17.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz#757ec88737dffa8aa913eb392fade2e45aef2a2d" - integrity sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew== - dependencies: - "@rollup/pluginutils" "^3.1.0" - commondir "^1.0.1" - estree-walker "^2.0.1" - glob "^7.1.6" - is-reference "^1.2.1" - magic-string "^0.25.7" - resolve "^1.17.0" - -"@rollup/plugin-json@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" - integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== - dependencies: - "@rollup/pluginutils" "^3.0.8" - -"@rollup/plugin-node-resolve@^11.0.1": - version "11.2.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.0.tgz#a5ab88c35bb7622d115f44984dee305112b6f714" - integrity sha512-qHjNIKYt5pCcn+5RUBQxK8krhRvf1HnyVgUCcFFcweDS7fhkOLZeYh0mhHK6Ery8/bb9tvN/ubPzmfF0qjDCTA== - dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" - deepmerge "^4.2.2" - is-module "^1.0.0" - resolve "^1.19.0" - -"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - -"@samverschueren/stream-to-observable@^0.3.0", "@samverschueren/stream-to-observable@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301" - integrity sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ== - dependencies: - any-observable "^0.3.0" - -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== - -"@sindresorhus/is@^2.0.0": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-2.1.1.tgz#ceff6a28a5b4867c2dd4a1ba513de278ccbe8bb1" - integrity sha512-/aPsuoj/1Dw/kzhkgz+ES6TxG0zfTMGLwuK2ZG00k/iJzYHTLCE8mVU8EPqEOp/lmxPoq1C1C9RYToRKb2KEfg== - -"@sindresorhus/is@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.0.0.tgz#2ff674e9611b45b528896d820d3d7a812de2f0e4" - integrity sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ== - -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" - -"@szmarczak/http-timer@^4.0.0": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" - integrity sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ== - dependencies: - defer-to-connect "^2.0.0" - -"@types/cacheable-request@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.1.tgz#5d22f3dded1fd3a84c0bbeb5039a7419c2c91976" - integrity sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ== - dependencies: - "@types/http-cache-semantics" "*" - "@types/keyv" "*" - "@types/node" "*" - "@types/responselike" "*" - -"@types/estree@*": - version "0.0.46" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe" - integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg== - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - -"@types/glob@^7.1.1": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" - integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/http-cache-semantics@*": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz#9140779736aa2655635ee756e2467d787cfe8a2a" - integrity sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A== - -"@types/is-windows@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/is-windows/-/is-windows-1.0.0.tgz#1011fa129d87091e2f6faf9042d6704cdf2e7be0" - integrity sha512-tJ1rq04tGKuIJoWIH0Gyuwv4RQ3+tIu7wQrC0MV47raQ44kIzXSSFKfrxFUOWVRvesoF7mrTqigXmqoZJsXwTg== - -"@types/istanbul-lib-coverage@^2.0.1": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" - integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== - -"@types/json-schema@^7.0.3": - version "7.0.7" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" - integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= - -"@types/keyv@*", "@types/keyv@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.1.tgz#e45a45324fca9dab716ab1230ee249c9fb52cfa7" - integrity sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw== - dependencies: - "@types/node" "*" - -"@types/minimatch@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - -"@types/minimist@^1.2.0": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256" - integrity sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg== - -"@types/node@*": - version "14.14.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.10.tgz#5958a82e41863cfc71f2307b3748e3491ba03785" - integrity sha512-J32dgx2hw8vXrSbu4ZlVhn1Nm3GbeCFNw2FWL8S5QKucHGY0cyNwjdQdO+KMBZ4wpmC7KhLCiNsdk1RFRIYUQQ== - -"@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/q@^1.5.1": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" - integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== - -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== - dependencies: - "@types/node" "*" - -"@types/responselike@*": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" - integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== - dependencies: - "@types/node" "*" - -"@typescript-eslint/eslint-plugin@^4.15.1": - version "4.19.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.19.0.tgz#56f8da9ee118fe9763af34d6a526967234f6a7f0" - integrity sha512-CRQNQ0mC2Pa7VLwKFbrGVTArfdVDdefS+gTw0oC98vSI98IX5A8EVH4BzJ2FOB0YlCmm8Im36Elad/Jgtvveaw== - dependencies: - "@typescript-eslint/experimental-utils" "4.19.0" - "@typescript-eslint/scope-manager" "4.19.0" - debug "^4.1.1" - functional-red-black-tree "^1.0.1" - lodash "^4.17.15" - regexpp "^3.0.0" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/experimental-utils@4.19.0": - version "4.19.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.19.0.tgz#9ca379919906dc72cb0fcd817d6cb5aa2d2054c6" - integrity sha512-9/23F1nnyzbHKuoTqFN1iXwN3bvOm/PRIXSBR3qFAYotK/0LveEOHr5JT1WZSzcD6BESl8kPOG3OoDRKO84bHA== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.19.0" - "@typescript-eslint/types" "4.19.0" - "@typescript-eslint/typescript-estree" "4.19.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/parser@^4.15.1": - version "4.19.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.19.0.tgz#4ae77513b39f164f1751f21f348d2e6cb2d11128" - integrity sha512-/uabZjo2ZZhm66rdAu21HA8nQebl3lAIDcybUoOxoI7VbZBYavLIwtOOmykKCJy+Xq6Vw6ugkiwn8Js7D6wieA== - dependencies: - "@typescript-eslint/scope-manager" "4.19.0" - "@typescript-eslint/types" "4.19.0" - "@typescript-eslint/typescript-estree" "4.19.0" - debug "^4.1.1" - -"@typescript-eslint/scope-manager@4.19.0": - version "4.19.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.19.0.tgz#5e0b49eca4df7684205d957c9856f4e720717a4f" - integrity sha512-GGy4Ba/hLXwJXygkXqMzduqOMc+Na6LrJTZXJWVhRrSuZeXmu8TAnniQVKgj8uTRKe4igO2ysYzH+Np879G75g== - dependencies: - "@typescript-eslint/types" "4.19.0" - "@typescript-eslint/visitor-keys" "4.19.0" - -"@typescript-eslint/types@4.19.0": - version "4.19.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.19.0.tgz#5181d5d2afd02e5b8f149ebb37ffc8bd7b07a568" - integrity sha512-A4iAlexVvd4IBsSTNxdvdepW0D4uR/fwxDrKUa+iEY9UWvGREu2ZyB8ylTENM1SH8F7bVC9ac9+si3LWNxcBuA== - -"@typescript-eslint/typescript-estree@4.19.0": - version "4.19.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.19.0.tgz#8a709ffa400284ab72df33376df085e2e2f61147" - integrity sha512-3xqArJ/A62smaQYRv2ZFyTA+XxGGWmlDYrsfZG68zJeNbeqRScnhf81rUVa6QG4UgzHnXw5VnMT5cg75dQGDkA== - dependencies: - "@typescript-eslint/types" "4.19.0" - "@typescript-eslint/visitor-keys" "4.19.0" - debug "^4.1.1" - globby "^11.0.1" - is-glob "^4.0.1" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/visitor-keys@4.19.0": - version "4.19.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.19.0.tgz#cbea35109cbd9b26e597644556be4546465d8f7f" - integrity sha512-aGPS6kz//j7XLSlgpzU2SeTqHPsmRYxFztj2vPuMMFJXZudpRSehE3WCV+BaxwZFvfAqMoSd86TEuM0PQ59E/A== - dependencies: - "@typescript-eslint/types" "4.19.0" - eslint-visitor-keys "^2.0.0" - -JSONStream@^1.0.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -abab@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" - integrity sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4= - -acorn-es7-plugin@^1.0.12: - version "1.1.7" - resolved "https://registry.yarnpkg.com/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz#f2ee1f3228a90eead1245f9ab1922eb2e71d336b" - integrity sha1-8u4fMiipDurRJF+asZIusucdM2s= - -acorn-globals@^1.0.4: - version "1.0.9" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf" - integrity sha1-VbtemGkVB7dFedBRNBMhfDgMVM8= - dependencies: - acorn "^2.1.0" - -acorn-jsx@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== - -acorn-walk@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.0.0.tgz#56ae4c0f434a45fff4a125e7ea95fa9c98f67a16" - integrity sha512-oZRad/3SMOI/pxbbmqyurIx7jHw1wZDcR9G44L8pUVFEomX/0dH89SrM1KaDXuv1NpzAXz6Op/Xu/Qd5XXzdEA== - -acorn@^2.1.0, acorn@^2.4.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" - integrity sha1-q259nYhqrKiwhbwzEreaGYQz8Oc= - -acorn@^5.0.0: - version "5.7.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" - integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== - -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.0.4: - version "8.0.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.0.4.tgz#7a3ae4191466a6984eee0fe3407a4f3aa9db8354" - integrity sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ== - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^7.0.2: - version "7.2.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.2.3.tgz#ca78d1cf458d7d36d1c3fa0794dd143406db5772" - integrity sha512-idv5WZvKVXDqKralOImQgPM9v6WOdLNa0IY3B3doOjw/YxRGT8I+allIJ6kd7Uaj+SF1xZUSU+nPM5aDNBVtnw== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -alce@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/alce/-/alce-1.2.0.tgz#a8be2dacaac42494612f18dc09db691f3dea4aab" - integrity sha1-qL4trKrEJJRhLxjcCdtpHz3qSqs= - dependencies: - esprima "^1.2.0" - estraverse "^1.5.0" - -alphanum-sort@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - -ansi-align@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" - integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== - dependencies: - string-width "^3.0.0" - -ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - -ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== - dependencies: - type-fest "^0.11.0" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.0.0.tgz#675dbbb5ca1908fa90abe4e5b1c2e9b1f4080d99" - integrity sha512-6564t0m0fuQMnockqBv7wJxo9T5C2V9JpYXyNScfRDPVLusOQQhkpMGrFC17QbiolraQ1sMXX+Y5nJpjqozL4g== - -any-observable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" - integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== - -any-observable@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.5.1.tgz#ab7d49ff64ebe6dd3ae26760a3f5a881e8db791e" - integrity sha512-8zv01bgDOp9PTmRTNCAHTw64TFP2rvlX4LvtNJLachaXY+AjmIvLT47fABNPCiIe89hKiSCo2n5zmPqI9CElPA== - -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-filter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" - integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= - -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= - -array-find@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-find/-/array-find-1.0.0.tgz#6c8e286d11ed768327f8e62ecee87353ca3e78b8" - integrity sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg= - -array-ify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" - integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= - -array-includes@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" - integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - get-intrinsic "^1.1.1" - is-string "^1.0.5" - -array-union@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -array.prototype.flat@^1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" - integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - -arrgv@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/arrgv/-/arrgv-1.0.2.tgz#025ed55a6a433cad9b604f8112fc4292715a6ec0" - integrity sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw== - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - -arrify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async-exit-hook@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz#8bd8b024b0ec9b1c01cccb9af9db29bd717dfaf3" - integrity sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -asyncro@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/asyncro/-/asyncro-3.0.0.tgz#3c7a732e263bc4a42499042f48d7d858e9c0134e" - integrity sha512-nEnWYfrBmA3taTiuiOoZYmgJ/CNrSoQLeLs29SeLcPu60yaw/mHDBHV0iOZ051fTvsTHxpCY+gXibqT9wbQYfg== - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autoprefixer@^10.1.0: - version "10.2.5" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.2.5.tgz#096a0337dbc96c0873526d7fef5de4428d05382d" - integrity sha512-7H4AJZXvSsn62SqZyJCP+1AWwOuoYpUfK6ot9vm0e87XD6mT8lDywc9D9OTJPMULyGcvmIxzTAMeG2Cc+YX+fA== - dependencies: - browserslist "^4.16.3" - caniuse-lite "^1.0.30001196" - colorette "^1.2.2" - fraction.js "^4.0.13" - normalize-range "^0.1.2" - postcss-value-parser "^4.1.0" - -ava@3.15.0: - version "3.15.0" - resolved "https://registry.yarnpkg.com/ava/-/ava-3.15.0.tgz#a239658ab1de8a29a243cc902e6b42e4574de2f0" - integrity sha512-HGAnk1SHPk4Sx6plFAUkzV/XC1j9+iQhOzt4vBly18/yo0AV8Oytx7mtJd/CR8igCJ5p160N/Oo/cNJi2uSeWA== - dependencies: - "@concordance/react" "^2.0.0" - acorn "^8.0.4" - acorn-walk "^8.0.0" - ansi-styles "^5.0.0" - arrgv "^1.0.2" - arrify "^2.0.1" - callsites "^3.1.0" - chalk "^4.1.0" - chokidar "^3.4.3" - chunkd "^2.0.1" - ci-info "^2.0.0" - ci-parallel-vars "^1.0.1" - clean-yaml-object "^0.1.0" - cli-cursor "^3.1.0" - cli-truncate "^2.1.0" - code-excerpt "^3.0.0" - common-path-prefix "^3.0.0" - concordance "^5.0.1" - convert-source-map "^1.7.0" - currently-unhandled "^0.4.1" - debug "^4.3.1" - del "^6.0.0" - emittery "^0.8.0" - equal-length "^1.0.0" - figures "^3.2.0" - globby "^11.0.1" - ignore-by-default "^2.0.0" - import-local "^3.0.2" - indent-string "^4.0.0" - is-error "^2.2.2" - is-plain-object "^5.0.0" - is-promise "^4.0.0" - lodash "^4.17.20" - matcher "^3.0.0" - md5-hex "^3.0.1" - mem "^8.0.0" - ms "^2.1.3" - ora "^5.2.0" - p-event "^4.2.0" - p-map "^4.0.0" - picomatch "^2.2.2" - pkg-conf "^3.1.0" - plur "^4.0.0" - pretty-ms "^7.0.1" - read-pkg "^5.2.0" - resolve-cwd "^3.0.0" - slash "^3.0.0" - source-map-support "^0.5.19" - stack-utils "^2.0.3" - strip-ansi "^6.0.0" - supertap "^2.0.0" - temp-dir "^2.0.0" - trim-off-newlines "^1.0.1" - update-notifier "^5.0.1" - write-file-atomic "^3.0.3" - yargs "^16.2.0" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-generator@6.11.4: - version "6.11.4" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.11.4.tgz#14f6933abb20c62666d27e3b7b9f5b9dc0712a9a" - integrity sha1-FPaTOrsgxiZm0n47e59bncBxKpo= - dependencies: - babel-messages "^6.8.0" - babel-runtime "^6.9.0" - babel-types "^6.10.2" - detect-indent "^3.0.1" - lodash "^4.2.0" - source-map "^0.5.0" - -babel-generator@6.26.1: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-messages@^6.23.0, babel-messages@^6.8.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -babel-plugin-empower-assert@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-empower-assert/-/babel-plugin-empower-assert-2.0.0.tgz#41087d602b5debea7a6b28654d5a458394c879d7" - integrity sha512-xAzOOTEYIp8BnbHNmU7xKj7mePlPP3/bvFqcjBTeJBDzl+pne4ZjNcpOnaV6WUYnux3fcOOgRW622CsWlU4SGg== - -babel-plugin-espower@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/babel-plugin-espower/-/babel-plugin-espower-3.0.1.tgz#180db17126f88e754105b8b5216d21e520a6bd4e" - integrity sha512-Ms49U7VIAtQ/TtcqRbD6UBmJBUCSxiC3+zPc+eGqxKUIFO1lTshyEDRUjhoAbd2rWfwYf3cZ62oXozrd8W6J0A== - dependencies: - "@babel/generator" "^7.0.0" - "@babel/parser" "^7.0.0" - call-matcher "^1.0.0" - core-js "^2.0.0" - espower-location-detector "^1.0.0" - espurify "^1.6.0" - estraverse "^4.1.1" - -babel-plugin-macros@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.0.1.tgz#0d412d68f5b3d1b64358f24ab099bd148724e2a9" - integrity sha512-CKt4+Oy9k2wiN+hT1uZzOw7d8zb1anbQpf7KLwaaXRCi/4pzKdFKHf7v5mvoPmjkmxshh7eKZQuRop06r5WP4w== - dependencies: - "@babel/runtime" "^7.12.5" - cosmiconfig "^7.0.0" - resolve "^1.19.0" - -babel-plugin-polyfill-corejs2@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.5.tgz#8fc4779965311393594a1b9ad3adefab3860c8fe" - integrity sha512-5IzdFIjYWqlOFVr/hMYUpc+5fbfuvJTAISwIY58jhH++ZtawtNlcJnxAixlk8ahVwHCz1ipW/kpXYliEBp66wg== - dependencies: - "@babel/compat-data" "^7.13.0" - "@babel/helper-define-polyfill-provider" "^0.1.2" - semver "^6.1.1" - -babel-plugin-polyfill-corejs3@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.4.tgz#2ae290200e953bade30907b7a3bebcb696e6c59d" - integrity sha512-ysSzFn/qM8bvcDAn4mC7pKk85Y5dVaoa9h4u0mHxOEpDzabsseONhUpR7kHxpUinfj1bjU7mUZqD23rMZBoeSg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.1.2" - core-js-compat "^3.8.1" - -babel-plugin-polyfill-regenerator@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.3.tgz#350f857225fc640ae1ec78d1536afcbb457db841" - integrity sha512-hRjTJQiOYt/wBKEc+8V8p9OJ9799blAJcuKzn1JXh3pApHoWl1Emxh2BHc6MC7Qt6bbr3uDpNxaYQnATLIudEg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.1.2" - -babel-plugin-transform-async-to-promises@^0.8.15: - version "0.8.15" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-promises/-/babel-plugin-transform-async-to-promises-0.8.15.tgz#13b6d8ef13676b4e3c576d3600b85344bb1ba346" - integrity sha512-fDXP68ZqcinZO2WCiimCL9zhGjGXOnn3D33zvbh+yheZ/qOrNVVDDIBtAaM3Faz8TRvQzHiRKsu3hfrBAhEncQ== - -babel-plugin-transform-remove-console@6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz#b980360c067384e24b357a588d807d3c83527780" - integrity sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A= - -babel-plugin-transform-replace-expressions@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-replace-expressions/-/babel-plugin-transform-replace-expressions-0.2.0.tgz#59cba8df4b4a675e7c78cd21548f8e7685bbc30d" - integrity sha512-Eh1rRd9hWEYgkgoA3D0kGp7xJ/wgVshgsqmq60iC4HVWD+Lux+fNHSHBa2v1Hsv+dHflShC71qKhiH40OiPtDA== - dependencies: - "@babel/parser" "^7.3.3" - -babel-plugin-unassert@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/babel-plugin-unassert/-/babel-plugin-unassert-3.0.1.tgz#cba17c38249a0bb26a72eb3793e0b24e29fcb7cd" - integrity sha512-dJvXKECYExv+GGieSm6jNe1H+HRa6hH/qPZWOoUfAN+cO6GbnC9fCbwHeJs0XZ2UqcEtJLpJCMs8q0pUEMI0fw== - -babel-preset-power-assert@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/babel-preset-power-assert/-/babel-preset-power-assert-3.0.0.tgz#3ceba576d57eb3f1b2e5e1865277539d9dc6570d" - integrity sha512-StkhBJsKdLemlsujCWjuHjjd/h+u7L2bgb/9/YsgBj1FBnE0BUthyaY8Xdpiqthf3NUudhd8BJMZFjGtXVKE6A== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - babel-plugin-empower-assert "^2.0.0" - babel-plugin-espower "^3.0.0" - -babel-runtime@^6.22.0, babel-runtime@^6.26.0, babel-runtime@^6.9.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-traverse@6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.10.2, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@6.18.0, babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base64-js@^1.0.2, base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" - integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== - -bl@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489" - integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -blueimp-md5@^2.10.0: - version "2.18.0" - resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.18.0.tgz#1152be1335f0c6b3911ed9e36db54f3e6ac52935" - integrity sha512-vE52okJvzsVWhcgUHOv+69OG3Mdg151xyn41aVQN/5W5S+S43qZhxECtYLAEHMSFWX6Mv5IZrzj3T5+JqXfj5Q== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -boxen@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" - integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== - dependencies: - ansi-align "^3.0.0" - camelcase "^5.3.1" - chalk "^3.0.0" - cli-boxes "^2.2.0" - string-width "^4.1.0" - term-size "^2.1.0" - type-fest "^0.8.1" - widest-line "^3.1.0" - -boxen@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.0.0.tgz#64fe9b16066af815f51057adcc800c3730120854" - integrity sha512-5bvsqw+hhgUi3oYGK0Vf4WpIkyemp60WBInn7+WNfoISzAqk/HX4L7WNROq38E6UR/y3YADpv6pEm4BfkeEAdA== - dependencies: - ansi-align "^3.0.0" - camelcase "^6.2.0" - chalk "^4.1.0" - cli-boxes "^2.2.1" - string-width "^4.2.0" - type-fest "^0.20.2" - widest-line "^3.1.0" - wrap-ansi "^7.0.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -brotli-size@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/brotli-size/-/brotli-size-4.0.0.tgz#a05ee3faad3c0e700a2f2da826ba6b4d76e69e5e" - integrity sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA== - dependencies: - duplexer "0.1.1" - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@^4.0.0, browserslist@^4.16.3: - version "4.16.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" - integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== - dependencies: - caniuse-lite "^1.0.30001181" - colorette "^1.2.1" - electron-to-chromium "^1.3.649" - escalade "^3.1.1" - node-releases "^1.1.70" - -browserslist@^4.14.5: - version "4.14.7" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.7.tgz#c071c1b3622c1c2e790799a37bb09473a4351cb6" - integrity sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ== - dependencies: - caniuse-lite "^1.0.30001157" - colorette "^1.2.1" - electron-to-chromium "^1.3.591" - escalade "^3.1.1" - node-releases "^1.1.66" - -buf-compare@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buf-compare/-/buf-compare-1.0.1.tgz#fef28da8b8113a0a0db4430b0b6467b69730b34a" - integrity sha1-/vKNqLgROgoNtEMLC2Rntpcws0o= - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -builtin-modules@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= - -c8@7.6.0: - version "7.6.0" - resolved "https://registry.yarnpkg.com/c8/-/c8-7.6.0.tgz#0d3b1d01b662beea51a40be33db830a48edd5d3d" - integrity sha512-cQYCSepX54npWqOKAmRWwOnmN2XPyShpP3Hnw2VoaB/8fdiIke72tKClHLim4U5kSTFc1vjit0771oe+BL7qHw== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@istanbuljs/schema" "^0.1.2" - find-up "^5.0.0" - foreground-child "^2.0.0" - furi "^2.0.0" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-report "^3.0.0" - istanbul-reports "^3.0.2" - rimraf "^3.0.0" - test-exclude "^6.0.0" - v8-to-istanbul "^7.1.0" - yargs "^16.0.0" - yargs-parser "^20.0.0" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cacheable-lookup@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-2.0.1.tgz#87be64a18b925234875e10a9bb1ebca4adce6b38" - integrity sha512-EMMbsiOTcdngM/K6gV/OxF2x0t07+vMOWxZNSCRQMjO2MY2nhZQ6OYhOOpyQrbhqsgtvKGI7hcq6xjnA92USjg== - dependencies: - "@types/keyv" "^3.1.1" - keyv "^4.0.0" - -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - -cacheable-request@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.1.tgz#062031c2856232782ed694a257fa35da93942a58" - integrity sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^4.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^2.0.0" - -call-bind@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" - integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.0" - -call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -call-matcher@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/call-matcher/-/call-matcher-1.1.0.tgz#23b2c1bc7a8394c8be28609d77ddbd5786680432" - integrity sha512-IoQLeNwwf9KTNbtSA7aEBb1yfDbdnzwjCetjkC8io5oGeOmK2CBNdg0xr+tadRYKO0p7uQyZzvon0kXlZbvGrw== - dependencies: - core-js "^2.0.0" - deep-equal "^1.0.0" - espurify "^1.6.0" - estraverse "^4.0.0" - -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= - -call-signature@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/call-signature/-/call-signature-0.0.2.tgz#a84abc825a55ef4cb2b028bd74e205a65b9a4996" - integrity sha1-qEq8glpV70yysCi9dOIFpluaSZY= - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - -callsites@^3.0.0, callsites@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase-keys@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" - integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== - dependencies: - camelcase "^5.3.1" - map-obj "^4.0.0" - quick-lru "^4.0.1" - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001196: - version "1.0.30001204" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001204.tgz#256c85709a348ec4d175e847a3b515c66e79f2aa" - integrity sha512-JUdjWpcxfJ9IPamy2f5JaRDCaqJOxDzOSKtbdx4rH9VivMd1vIzoPumsJa9LoMIi4Fx2BV2KZOxWhNkBjaYivQ== - -caniuse-lite@^1.0.30001157: - version "1.0.30001161" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001161.tgz#64f7ffe79ee780b8c92843ff34feb36cea4651e0" - integrity sha512-JharrCDxOqPLBULF9/SPa6yMcBRTjZARJ6sc3cuKrPfyIk64JN6kuMINWqA99Xc8uElMFcROliwtz0n9pYej+g== - -caniuse-lite@^1.0.30001181: - version "1.0.30001191" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001191.tgz#bacb432b6701f690c8c5f7c680166b9a9f0843d9" - integrity sha512-xJJqzyd+7GCJXkcoBiQ1GuxEiOBCLQ0aVW9HMekifZsAVGdj5eJ4mFB9fEhSHipq9IOk/QXFJUiIr9lZT+EsGw== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chalk@^1.0.0, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -cheerio@0.20.0: - version "0.20.0" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.20.0.tgz#5c710f2bab95653272842ba01c6ea61b3545ec35" - integrity sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU= - dependencies: - css-select "~1.2.0" - dom-serializer "~0.1.0" - entities "~1.1.1" - htmlparser2 "~3.8.1" - lodash "^4.1.0" - optionalDependencies: - jsdom "^7.0.2" - -cheerio@0.22.0: - version "0.22.0" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e" - integrity sha1-qbqoYKP5tZWmuBsahocxIe06Jp4= - dependencies: - css-select "~1.2.0" - dom-serializer "~0.1.0" - entities "~1.1.1" - htmlparser2 "^3.9.1" - lodash.assignin "^4.0.9" - lodash.bind "^4.1.4" - lodash.defaults "^4.0.1" - lodash.filter "^4.4.0" - lodash.flatten "^4.2.0" - lodash.foreach "^4.3.0" - lodash.map "^4.4.0" - lodash.merge "^4.4.0" - lodash.pick "^4.2.1" - lodash.reduce "^4.4.0" - lodash.reject "^4.4.0" - lodash.some "^4.4.0" - -cheerio@1.0.0-rc.2: - version "1.0.0-rc.2" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db" - integrity sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs= - dependencies: - css-select "~1.2.0" - dom-serializer "~0.1.0" - entities "~1.1.1" - htmlparser2 "^3.9.1" - lodash "^4.15.0" - parse5 "^3.0.1" - -chokidar@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" - integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.5.0" - optionalDependencies: - fsevents "~2.1.2" - -chunkd@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/chunkd/-/chunkd-2.0.1.tgz#49cd1d7b06992dc4f7fccd962fe2a101ee7da920" - integrity sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -ci-parallel-vars@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ci-parallel-vars/-/ci-parallel-vars-1.0.1.tgz#e87ff0625ccf9d286985b29b4ada8485ca9ffbc2" - integrity sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clean-regexp/-/clean-regexp-1.0.0.tgz#8df7c7aae51fd36874e8f8d05b9180bc11a3fed7" - integrity sha1-jffHquUf02h06PjQW5GAvBGj/tc= - dependencies: - escape-string-regexp "^1.0.5" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -clean-yaml-object@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz#63fb110dc2ce1a84dc21f6d9334876d010ae8b68" - integrity sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g= - -cli-boxes@^2.2.0, cli-boxes@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== - -cli-cursor@^2.0.0, cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.5.0.tgz#12763e47251bf951cb75c201dfa58ff1bcb2d047" - integrity sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ== - -cli-truncate@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" - integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= - dependencies: - slice-ansi "0.0.4" - string-width "^1.0.1" - -cli-truncate@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== - dependencies: - slice-ansi "^3.0.0" - string-width "^4.2.0" - -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -clone-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= - dependencies: - mimic-response "^1.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - -code-excerpt@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/code-excerpt/-/code-excerpt-3.0.0.tgz#fcfb6748c03dba8431c19f5474747fad3f250f10" - integrity sha512-VHNTVhd7KsLGOqfX3SyeO8RyYPMp1GJOg194VITk04WMYCv4plV68YWe6TJZxd9MhobjtpMRnVky01gqZsalaw== - dependencies: - convert-to-spaces "^1.0.1" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0, color-convert@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-logger@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/color-logger/-/color-logger-0.0.3.tgz#d9b22dd1d973e166b18bf313f9f481bba4df2018" - integrity sha1-2bIt0dlz4Waxi/MT+fSBu6TfIBg= - -color-logger@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/color-logger/-/color-logger-0.0.6.tgz#e56245ef29822657110c7cb75a9cd786cb69ed1b" - integrity sha1-5WJF7ymCJlcRDHy3WpzXhstp7Rs= - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.5.4: - version "1.5.5" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.5.tgz#65474a8f0e7439625f3d27a6a19d89fc45223014" - integrity sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" - integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== - dependencies: - color-convert "^1.9.1" - color-string "^1.5.4" - -colorette@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" - integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== - -colorette@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" - integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== - -common-path-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" - integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -compare-func@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" - integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== - dependencies: - array-ify "^1.0.0" - dot-prop "^5.1.0" - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-with-sourcemaps@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e" - integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== - dependencies: - source-map "^0.6.1" - -concordance@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/concordance/-/concordance-5.0.1.tgz#7a248aca8b286125d1d76f77b03320acf3f4ac63" - integrity sha512-TbNtInKVElgEBnJ1v2Xg+MFX2lvFLbmlv3EuSC5wTfCwpB8kC3w3mffF6cKuUhkn475Ym1f1I4qmuXzx2+uXpw== - dependencies: - date-time "^3.1.0" - esutils "^2.0.3" - fast-diff "^1.2.0" - js-string-escape "^1.0.1" - lodash "^4.17.15" - md5-hex "^3.0.1" - semver "^7.3.2" - well-known-symbols "^2.0.0" - -configstore@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" - integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== - dependencies: - dot-prop "^5.2.0" - graceful-fs "^4.1.2" - make-dir "^3.0.0" - unique-string "^2.0.0" - write-file-atomic "^3.0.0" - xdg-basedir "^4.0.0" - -confusing-browser-globals@1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" - integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -contains-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" - integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= - -conventional-changelog-angular@^5.0.11: - version "5.0.12" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9" - integrity sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw== - dependencies: - compare-func "^2.0.0" - q "^1.5.1" - -conventional-commits-parser@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz#ba44f0b3b6588da2ee9fd8da508ebff50d116ce2" - integrity sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA== - dependencies: - JSONStream "^1.0.4" - is-text-path "^1.0.1" - lodash "^4.17.15" - meow "^8.0.0" - split2 "^3.0.0" - through2 "^4.0.0" - trim-off-newlines "^1.0.0" - -convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -convert-to-spaces@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz#7e3e48bbe6d997b1417ddca2868204b4d3d85715" - integrity sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU= - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-assert@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/core-assert/-/core-assert-0.2.1.tgz#f85e2cf9bfed28f773cc8b3fa5c5b69bdc02fe3f" - integrity sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8= - dependencies: - buf-compare "^1.0.0" - is-error "^2.2.0" - -core-js-compat@^3.8.1, core-js-compat@^3.9.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.9.0.tgz#29da39385f16b71e1915565aa0385c4e0963ad56" - integrity sha512-YK6fwFjCOKWwGnjFUR3c544YsnA/7DoLL0ysncuOJ4pwbriAtOpvM2bygdlcXbvQCQZ7bBU9CL4t7tGl7ETRpQ== - dependencies: - browserslist "^4.16.3" - semver "7.0.0" - -core-js@^2.0.0, core-js@^2.4.0: - version "2.6.11" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" - integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cosmiconfig@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -cosmiconfig@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" - integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -coveralls@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.1.0.tgz#13c754d5e7a2dd8b44fe5269e21ca394fb4d615b" - integrity sha512-sHxOu2ELzW8/NC1UP5XVLbZDzO4S3VxfFye3XYCznopHy02YjNkHcj5bKaVw2O7hVaBdBjEdQGpie4II1mWhuQ== - dependencies: - js-yaml "^3.13.1" - lcov-parse "^1.0.0" - log-driver "^1.2.7" - minimist "^1.2.5" - request "^2.88.2" - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - -css-color-names@0.0.4, css-color-names@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= - -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== - dependencies: - postcss "^7.0.1" - timsort "^0.3.0" - -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - -css-select@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5" - integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@2.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" - integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== - -css-what@^3.2.1: - version "3.4.2" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" - integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" - integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.2" - postcss-unique-selectors "^4.0.1" - -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= - -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== - dependencies: - postcss "^7.0.0" - -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - -cssnano@^4.1.10: - version "4.1.10" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" - integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== - dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.7" - is-resolvable "^1.0.0" - postcss "^7.0.0" - -csso@^4.0.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0": - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -"cssstyle@>= 0.2.29 < 0.3.0": - version "0.2.37" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" - integrity sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ= - dependencies: - cssom "0.3.x" - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= - dependencies: - array-find-index "^1.0.1" - -dargs@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" - integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -date-fns@^1.27.2: - version "1.30.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" - integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== - -date-time@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/date-time/-/date-time-3.1.0.tgz#0d1e934d170579f481ed8df1e2b8ff70ee845e1e" - integrity sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg== - dependencies: - time-zone "^1.0.0" - -debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - -decamelize-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" - integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= - dependencies: - mimic-response "^1.0.0" - -decompress-response@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-5.0.0.tgz#7849396e80e3d1eba8cb2f75ef4930f76461cb0f" - integrity sha512-TLZWWybuxWgoW7Lykv+gq9xvzOsUjQ9tF09Tj6NSTYGMTCHNXzrPnD6Hi+TgZq19PyTAGH4Ll/NIM/eTGglnMw== - dependencies: - mimic-response "^2.0.0" - -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= - -deep-equal@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -deep-strict-equal@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/deep-strict-equal/-/deep-strict-equal-0.2.0.tgz#4a078147a8ab57f6a0d4f5547243cd22f44eb4e4" - integrity sha1-SgeBR6irV/ag1PVUckPNIvROtOQ= - dependencies: - core-assert "^0.2.0" - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -defer-to-connect@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.0.tgz#83d6b199db041593ac84d781b5222308ccf4c2c1" - integrity sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg== - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952" - integrity sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ== - dependencies: - globby "^11.0.1" - graceful-fs "^4.2.4" - is-glob "^4.0.1" - is-path-cwd "^2.2.0" - is-path-inside "^3.0.2" - p-map "^4.0.0" - rimraf "^3.0.2" - slash "^3.0.0" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -detect-indent@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-3.0.1.tgz#9dc5e5ddbceef8325764b9451b02bc6d54084f75" - integrity sha1-ncXl3bzu+DJXZLlFGwK8bVQIT3U= - dependencies: - get-stdin "^4.0.1" - minimist "^1.1.0" - repeating "^1.1.0" - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= - dependencies: - repeating "^2.0.0" - -detect-indent@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" - integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== - -detect-newline@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -diff-match-patch@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" - integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== - dependencies: - path-type "^3.0.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" - integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -dom-serializer@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" - integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== - dependencies: - domelementtype "^1.3.0" - entities "^1.1.1" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.2.tgz#f3b6e549201e46f588b59463dd77187131fe6971" - integrity sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA== - -domhandler@2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" - integrity sha1-LeWaCCLVAn+r/28DLCsloqir5zg= - dependencies: - domelementtype "1" - -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== - dependencies: - domelementtype "1" - -domutils@1.5, domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^1.5.1, domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -dot-prop@^5.1.0, dot-prop@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -dot-prop@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" - integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== - dependencies: - is-obj "^2.0.0" - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - -duplexer@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= - -duplexer@^0.1.1, duplexer@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -electron-to-chromium@^1.3.591: - version "1.3.607" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.607.tgz#1bff13f1cf89f2fee0d244b8c64a7138f80f3a3b" - integrity sha512-h2SYNaBnlplGS0YyXl8oJWokfcNxVjJANQfMCsQefG6OSuAuNIeW+A8yGT/ci+xRoBb3k2zq1FrOvkgoKBol8g== - -electron-to-chromium@^1.3.649: - version "1.3.672" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.672.tgz#3a6e335016dab4bc584d5292adc4f98f54541f6a" - integrity sha512-gFQe7HBb0lbOMqK2GAS5/1F+B0IMdYiAgB9OT/w1F4M7lgJK2aNOMNOM622aEax+nS1cTMytkiT0uMOkbtFmHw== - -elegant-spinner@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" - integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= - -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emittery@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.0.tgz#28e3f2f450bebb969df42b00fd3d6b3de6087905" - integrity sha512-XMGToId3CejfmZg/0qOzdTT3WFuAN8fQYtcKXccabRfCzGiWMSTydMshHGLyx9C/ejMl4nw9tvqrn12QVFPIUg== - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -empower-core@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/empower-core/-/empower-core-1.2.0.tgz#ce3fb2484d5187fa29c23fba8344b0b2fdf5601c" - integrity sha512-g6+K6Geyc1o6FdXs9HwrXleCFan7d66G5xSCfSF7x1mJDCes6t0om9lFQG3zOrzh3Bkb/45N0cZ5Gqsf7YrzGQ== - dependencies: - call-signature "0.0.2" - core-js "^2.0.0" - -empower@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/empower/-/empower-1.3.1.tgz#768979cbbb36d71d8f5edaab663deacb9dab916c" - integrity sha512-uB6/ViBaawOO/uujFADTK3SqdYlxYNn+N4usK9MRKZ4Hbn/1QSy8k2PezxCA2/+JGbF8vd/eOfghZ90oOSDZCA== - dependencies: - core-js "^2.0.0" - empower-core "^1.2.0" - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhance-visitors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/enhance-visitors/-/enhance-visitors-1.0.0.tgz#aa945d05da465672a1ebd38fee2ed3da8518e95a" - integrity sha1-qpRdBdpGVnKh69OP7i7T2oUY6Vo= - dependencies: - lodash "^4.13.1" - -enhanced-resolve@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" - integrity sha1-TW5omzcl+GCQknzMhs2fFjW4ni4= - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.2.0" - tapable "^0.1.8" - -enquirer@^2.3.5, enquirer@^2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -entities@1.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" - integrity sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY= - -entities@^1.1.1, entities@~1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - -entities@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" - integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== - -env-editor@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/env-editor/-/env-editor-0.4.2.tgz#4e76568d0bd8f5c2b6d314a9412c8fe9aa3ae861" - integrity sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA== - -equal-length@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/equal-length/-/equal-length-1.0.1.tgz#21ca112d48ab24b4e1e7ffc0e5339d31fdfc274c" - integrity sha1-IcoRLUirJLTh5//A5TOdMf38J0w= - -error-ex@^1.2.0, error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.17.0-next.1: - version "1.17.7" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" - integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.2" - is-regex "^1.1.1" - object-inspect "^1.8.0" - object-keys "^1.1.1" - object.assign "^4.1.1" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" - -es-abstract@^1.17.2, es-abstract@^1.18.0-next.2: - version "1.18.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" - integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.2" - is-callable "^1.2.3" - is-negative-zero "^2.0.1" - is-regex "^1.1.2" - is-string "^1.0.5" - object-inspect "^1.9.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.0" - -es-abstract@^1.18.0-next.1: - version "1.18.0-next.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" - integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.2" - is-negative-zero "^2.0.0" - is-regex "^1.1.1" - object-inspect "^1.8.0" - object-keys "^1.1.1" - object.assign "^4.1.1" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-goat@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" - integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== - -escape-goat@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-3.0.0.tgz#e8b5fb658553fe8a3c4959c316c6ebb8c842b19c" - integrity sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw== - -escape-html@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escodegen@^1.6.1: - version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -esdoc-accessor-plugin@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/esdoc-accessor-plugin/-/esdoc-accessor-plugin-1.0.0.tgz#791ba4872e6c403515ce749b1348d6f0293ad9eb" - integrity sha1-eRukhy5sQDUVznSbE0jW8Ck62es= - -esdoc-brand-plugin@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/esdoc-brand-plugin/-/esdoc-brand-plugin-1.0.1.tgz#7c0e1ae90e84c30b2d3369d3a6449f9dc9f8d511" - integrity sha512-Yv9j3M7qk5PSLmSeD6MbPsfIsEf8K43EdH8qZpE/GZwnJCRVmDPrZJ1cLDj/fPu6P35YqgcEaJK4E2NL/CKA7g== - dependencies: - cheerio "0.22.0" - -esdoc-coverage-plugin@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/esdoc-coverage-plugin/-/esdoc-coverage-plugin-1.1.0.tgz#3869869cd7f87891f972625787695a299aece45c" - integrity sha1-OGmGnNf4eJH5cmJXh2laKZrs5Fw= - -esdoc-external-ecmascript-plugin@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/esdoc-external-ecmascript-plugin/-/esdoc-external-ecmascript-plugin-1.0.0.tgz#78f565d4a0c5185ac63152614dce1fe1a86688db" - integrity sha1-ePVl1KDFGFrGMVJhTc4f4ahmiNs= - dependencies: - fs-extra "1.0.0" - -esdoc-inject-script-plugin@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/esdoc-inject-script-plugin/-/esdoc-inject-script-plugin-1.0.0.tgz#1d6d6e9cd74e863acbe9eec7bc8ed135b8742e2f" - integrity sha1-HW1unNdOhjrL6e7HvI7RNbh0Li8= - dependencies: - cheerio "0.22.0" - fs-extra "1.0.0" - -esdoc-inject-style-plugin@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/esdoc-inject-style-plugin/-/esdoc-inject-style-plugin-1.0.0.tgz#a13597368bb9fb89c365e066495caf97a4decbb1" - integrity sha1-oTWXNou5+4nDZeBmSVyvl6Tey7E= - dependencies: - cheerio "0.22.0" - fs-extra "1.0.0" - -esdoc-integrate-manual-plugin@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/esdoc-integrate-manual-plugin/-/esdoc-integrate-manual-plugin-1.0.0.tgz#1854a6aa1c081035d7c8c51e3bdd4fb65aa4711c" - integrity sha1-GFSmqhwIEDXXyMUeO91PtlqkcRw= - -esdoc-integrate-test-plugin@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/esdoc-integrate-test-plugin/-/esdoc-integrate-test-plugin-1.0.0.tgz#e2d0d00090f7f0c35e5d2f2c033327a79e53e409" - integrity sha1-4tDQAJD38MNeXS8sAzMnp55T5Ak= - -esdoc-lint-plugin@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/esdoc-lint-plugin/-/esdoc-lint-plugin-1.0.2.tgz#4962930c6dc5b25d80cf6eff1b0f3c24609077f7" - integrity sha512-24AYqD2WbZI9We02I7/6dzAa7yUliRTFUaJCZAcYJMQicJT5gUrNFVaI8XmWEN/mhF3szIn1uZBNWeLul4CmNw== - -esdoc-publish-html-plugin@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/esdoc-publish-html-plugin/-/esdoc-publish-html-plugin-1.1.2.tgz#bdece7bc7a0a3e419933503252db7a6772879dab" - integrity sha512-hG1fZmTcEp3P/Hv/qKiMdG1qSp8MjnVZMMkxL5P5ry7I2sX0HQ4P9lt2lms+90Lt0r340HHhSuVx107UL7dphg== - dependencies: - babel-generator "6.11.4" - cheerio "0.22.0" - escape-html "1.0.3" - fs-extra "1.0.0" - ice-cap "0.0.4" - marked "0.3.19" - taffydb "2.7.2" - -esdoc-standard-plugin@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/esdoc-standard-plugin/-/esdoc-standard-plugin-1.0.0.tgz#661201cac7ef868924902446fdac1527253c5d4d" - integrity sha1-ZhIBysfvhokkkCRG/awVJyU8XU0= - dependencies: - esdoc-accessor-plugin "^1.0.0" - esdoc-brand-plugin "^1.0.0" - esdoc-coverage-plugin "^1.0.0" - esdoc-external-ecmascript-plugin "^1.0.0" - esdoc-integrate-manual-plugin "^1.0.0" - esdoc-integrate-test-plugin "^1.0.0" - esdoc-lint-plugin "^1.0.0" - esdoc-publish-html-plugin "^1.0.0" - esdoc-type-inference-plugin "^1.0.0" - esdoc-undocumented-identifier-plugin "^1.0.0" - esdoc-unexported-identifier-plugin "^1.0.0" - -esdoc-type-inference-plugin@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/esdoc-type-inference-plugin/-/esdoc-type-inference-plugin-1.0.2.tgz#916e3f756de1d81d9c0dbe1c008e8dafd322cfaf" - integrity sha512-tMIcEHNe1uhUGA7lT1UTWc9hs2dzthnTgmqXpmeUhurk7fL2tinvoH+IVvG/sLROzwOGZQS9zW/F9KWnpMzLIQ== - -esdoc-undocumented-identifier-plugin@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/esdoc-undocumented-identifier-plugin/-/esdoc-undocumented-identifier-plugin-1.0.0.tgz#82e05d371c32d12871140f1d5c81ec99fd9cc2c8" - integrity sha1-guBdNxwy0ShxFA8dXIHsmf2cwsg= - -esdoc-unexported-identifier-plugin@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/esdoc-unexported-identifier-plugin/-/esdoc-unexported-identifier-plugin-1.0.0.tgz#1f9874c6a7c2bebf9ad397c3ceb75c9c69dabab1" - integrity sha1-H5h0xqfCvr+a05fDzrdcnGnaurE= - -esdoc@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/esdoc/-/esdoc-1.1.0.tgz#07d40ebf791764cd537929c29111e20a857624f3" - integrity sha512-vsUcp52XJkOWg9m1vDYplGZN2iDzvmjDL5M/Mp8qkoDG3p2s0yIQCIjKR5wfPBaM3eV14a6zhQNYiNTCVzPnxA== - dependencies: - babel-generator "6.26.1" - babel-traverse "6.26.0" - babylon "6.18.0" - cheerio "1.0.0-rc.2" - color-logger "0.0.6" - escape-html "1.0.3" - fs-extra "5.0.0" - ice-cap "0.0.4" - marked "0.3.19" - minimist "1.2.0" - taffydb "2.7.3" - -eslint-config-prettier@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz#f4a4bd2832e810e8cc7c1411ec85b3e85c0c53f9" - integrity sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg== - -eslint-config-xo-typescript@^0.38.0: - version "0.38.0" - resolved "https://registry.yarnpkg.com/eslint-config-xo-typescript/-/eslint-config-xo-typescript-0.38.0.tgz#2aef017ce9a4b68855b246771557a7eab545b589" - integrity sha512-f5z0gN1r9X84PK1qav6T6YT1zW6KcAqtsMPtmqoKBLt4ACRr6tbAddtFwqkluAEH9JvHjWxuB8vu4KJFcjuzdQ== - -eslint-config-xo@^0.35.0: - version "0.35.0" - resolved "https://registry.yarnpkg.com/eslint-config-xo/-/eslint-config-xo-0.35.0.tgz#8b5afca244c44129c32386c28602f973ad5cb762" - integrity sha512-+WyZTLWUJlvExFrBU/Ldw8AB/S0d3x+26JQdBWbcqig2ZaWh0zinYcHok+ET4IoPaEcRRf3FE9kjItNVjBwnAg== - dependencies: - confusing-browser-globals "1.0.10" - -eslint-formatter-pretty@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-formatter-pretty/-/eslint-formatter-pretty-4.0.0.tgz#dc15f3bf4fb51b7ba5fbedb77f57ba8841140ce2" - integrity sha512-QgdeZxQwWcN0TcXXNZJiS6BizhAANFhCzkE7Yl9HKB7WjElzwED6+FbbZB2gji8ofgJTGPqKm6VRCNT3OGCeEw== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.0" - eslint-rule-docs "^1.1.5" - log-symbols "^4.0.0" - plur "^4.0.0" - string-width "^4.2.0" - supports-hyperlinks "^2.0.0" - -eslint-import-resolver-node@^0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" - integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== - dependencies: - debug "^2.6.9" - resolve "^1.13.1" - -eslint-import-resolver-webpack@^0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.0.tgz#5cb19cf4b6996c8a2514aeb10f909e2c70488dc3" - integrity sha512-hZWGcmjaJZK/WSCYGI/y4+FMGQZT+cwW/1E/P4rDwFj2PbanlQHISViw4ccDJ+2wxAqjgwBfxwy3seABbVKDEw== - dependencies: - array-find "^1.0.0" - debug "^2.6.9" - enhanced-resolve "^0.9.1" - find-root "^1.1.0" - has "^1.0.3" - interpret "^1.2.0" - lodash "^4.17.15" - node-libs-browser "^1.0.0 || ^2.0.0" - resolve "^1.13.1" - semver "^5.7.1" - -eslint-module-utils@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" - integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== - dependencies: - debug "^2.6.9" - pkg-dir "^2.0.0" - -eslint-plugin-ava@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-ava/-/eslint-plugin-ava-11.0.0.tgz#92d98694b4af6d6f2353613af06301d44d6b13a6" - integrity sha512-UMGedfl/gIKx1tzjGtAsTSJgowyAEZU2VWmpoWXYcuuV4B2H4Cu90yuMgMPEVt1mQlIZ21L7YM2CSpHUFJo/LQ== - dependencies: - deep-strict-equal "^0.2.0" - enhance-visitors "^1.0.0" - eslint-utils "^2.1.0" - espree "^7.2.0" - espurify "^2.0.1" - import-modules "^2.0.0" - micro-spelling-correcter "^1.1.1" - pkg-dir "^4.2.0" - resolve-from "^5.0.0" - -eslint-plugin-es@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" - integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== - dependencies: - eslint-utils "^2.0.0" - regexpp "^3.0.0" - -eslint-plugin-eslint-comments@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz#9e1cd7b4413526abb313933071d7aba05ca12ffa" - integrity sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ== - dependencies: - escape-string-regexp "^1.0.5" - ignore "^5.0.5" - -eslint-plugin-import@^2.22.1: - version "2.22.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" - integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== - dependencies: - array-includes "^3.1.1" - array.prototype.flat "^1.2.3" - contains-path "^0.1.0" - debug "^2.6.9" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.4" - eslint-module-utils "^2.6.0" - has "^1.0.3" - minimatch "^3.0.4" - object.values "^1.1.1" - read-pkg-up "^2.0.0" - resolve "^1.17.0" - tsconfig-paths "^3.9.0" - -eslint-plugin-no-use-extend-native@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-no-use-extend-native/-/eslint-plugin-no-use-extend-native-0.5.0.tgz#d6855e3a823a819b467cf7df56adca57de741bf9" - integrity sha512-dBNjs8hor8rJgeXLH4HTut5eD3RGWf9JUsadIfuL7UosVQ/dnvOKwxEcRrXrFxrMZ8llUVWT+hOimxJABsAUzQ== - dependencies: - is-get-set-prop "^1.0.0" - is-js-type "^2.0.0" - is-obj-prop "^1.0.0" - is-proto-prop "^2.0.0" - -eslint-plugin-node@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" - integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== - dependencies: - eslint-plugin-es "^3.0.0" - eslint-utils "^2.0.0" - ignore "^5.1.1" - minimatch "^3.0.4" - resolve "^1.10.1" - semver "^6.1.0" - -eslint-plugin-prettier@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz#7079cfa2497078905011e6f82e8dd8453d1371b7" - integrity sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-plugin-promise@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.3.1.tgz#61485df2a359e03149fdafc0a68b0e030ad2ac45" - integrity sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ== - -eslint-plugin-unicorn@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-28.0.2.tgz#ab9884ebae04590ecd9c1c294330d889a74b7c37" - integrity sha512-k4AoFP7n8/oq6lBXkdc9Flid6vw2B8j7aXFCxgzJCyKvmaKrCUFb1TFPhG9eSJQFZowqmymMPRtl8oo9NKLUbw== - dependencies: - ci-info "^2.0.0" - clean-regexp "^1.0.0" - eslint-template-visitor "^2.2.2" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - import-modules "^2.1.0" - lodash "^4.17.20" - pluralize "^8.0.0" - read-pkg-up "^7.0.1" - regexp-tree "^0.1.22" - reserved-words "^0.1.2" - safe-regex "^2.1.1" - semver "^7.3.4" - -eslint-rule-docs@^1.1.5: - version "1.1.223" - resolved "https://registry.yarnpkg.com/eslint-rule-docs/-/eslint-rule-docs-1.1.223.tgz#0e69fb7dd38b0622670e7b9e9ef8819fd656ef73" - integrity sha512-6HU1vH6b3QBI2RiFyNE1cQWr2pQ+op1zqZRsVXBZsLngF5ePBGDbkwFtr1Ye4Yq1DBKc499TMEkIzx25xVetuw== - -eslint-scope@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" - integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^5.0.0, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-template-visitor@^2.2.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/eslint-template-visitor/-/eslint-template-visitor-2.3.2.tgz#b52f96ff311e773a345d79053ccc78275bbc463d" - integrity sha512-3ydhqFpuV7x1M9EK52BPNj6V0Kwu0KKkcIAfpUhwHbR8ocRln/oUHgfxQupY8O1h4Qv/POHDumb/BwwNfxbtnA== - dependencies: - "@babel/core" "^7.12.16" - "@babel/eslint-parser" "^7.12.16" - eslint-visitor-keys "^2.0.0" - esquery "^1.3.1" - multimap "^1.1.0" - -eslint-utils@^2.0.0, eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" - integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== - -eslint@^7.20.0: - version "7.22.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.22.0.tgz#07ecc61052fec63661a2cab6bd507127c07adc6f" - integrity sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.0" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash "^4.17.21" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.4" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espower-location-detector@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/espower-location-detector/-/espower-location-detector-1.0.0.tgz#a17b7ecc59d30e179e2bef73fb4137704cb331b5" - integrity sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU= - dependencies: - is-url "^1.2.1" - path-is-absolute "^1.0.0" - source-map "^0.5.0" - xtend "^4.0.0" - -espree@^7.2.0, espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -esprima@^1.2.0: - version "1.2.5" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.2.5.tgz#0993502feaf668138325756f30f9a51feeec11e9" - integrity sha1-CZNQL+r2aBODJXVvMPmlH+7sEek= - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -espurify@^1.6.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/espurify/-/espurify-1.8.1.tgz#5746c6c1ab42d302de10bd1d5bf7f0e8c0515056" - integrity sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg== - dependencies: - core-js "^2.0.0" - -espurify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/espurify/-/espurify-2.0.1.tgz#c25b3bb613863daa142edcca052370a1a459f41d" - integrity sha512-7w/dUrReI/QbJFHRwfomTlkQOXaB1NuCrBRn5Y26HXn5gvh18/19AgLbayVrNxXQfkckvgrJloWyvZDuJ7dhEA== - -esquery@^1.3.1, esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.1.0, esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^1.5.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" - integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q= - -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -estree-walker@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - -esutils@^2.0.2, esutils@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -eventemitter3@^4.0.4: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -execa@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" - integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extend-object@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/extend-object/-/extend-object-1.0.0.tgz#42514f84015d1356caf5187969dfb2bc1bda0823" - integrity sha1-QlFPhAFdE1bK9Rh5ad+yvBvaCCM= - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2, fast-diff@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== - -fast-glob@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - -fast-glob@^3.1.1: - version "3.2.4" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" - integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" - merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fastq@^1.6.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.9.0.tgz#e16a72f338eaca48e91b5c23593bcc2ef66b7947" - integrity sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w== - dependencies: - reusify "^1.0.4" - -figures@^1.0.1, figures@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - -figures@^3.0.0, figures@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -filesize@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.1.0.tgz#e81bdaa780e2451d714d71c0d7a4f3238d37ad00" - integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-cache-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-root@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" - integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -fixpack@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fixpack/-/fixpack-4.0.0.tgz#28b9fb8ca04f89aab382021cfa826b36dc381dfd" - integrity sha512-5SM1+H2CcuJ3gGEwTiVo/+nd/hYpNj9Ch3iMDOQ58ndY+VGQ2QdvaUTkd3otjZvYnd/8LF/HkJ5cx7PBq0orCQ== - dependencies: - alce "1.2.0" - chalk "^3.0.0" - detect-indent "^6.0.0" - detect-newline "^3.1.0" - extend-object "^1.0.0" - rc "^1.2.8" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" - integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -foreground-child@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" - integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^3.0.2" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -fraction.js@^4.0.13: - version "4.0.13" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.0.13.tgz#3c1c315fa16b35c85fffa95725a36fa729c69dfe" - integrity sha512-E1fz2Xs9ltlUp+qbiyx9wmt2n9dRzPsS11Jtdb8D2o+cC7wr9xkkKsVKJuBX0ST+LVS+LhLO+SbLJNtfWcJvXA== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fromentries@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" - integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== - -fs-extra@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" - integrity sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - -fs-extra@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" - integrity sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^9.0.0, fs-extra@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - -fsevents@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -furi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/furi/-/furi-2.0.0.tgz#13d85826a1af21acc691da6254b3888fc39f0b4a" - integrity sha512-uKuNsaU0WVaK/vmvj23wW1bicOFfyqSsAIH71bRZx8kA4Xj+YCHin7CJKJJjkIsmxYaPFLk9ljmjEyB7xF7WvQ== - dependencies: - "@types/is-windows" "^1.0.0" - is-windows "^1.0.2" - -generic-names@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872" - integrity sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ== - dependencies: - loader-utils "^1.1.0" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be" - integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - -get-set-props@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-set-props/-/get-set-props-0.1.0.tgz#998475c178445686d0b32246da5df8dbcfbe8ea3" - integrity sha1-mYR1wXhEVobQsyJG2l3428++jqM= - -get-stdin@8.0.0, get-stdin@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" - integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= - -get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.0.0, get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-stream@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" - integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -git-raw-commits@^2.0.0: - version "2.0.10" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.10.tgz#e2255ed9563b1c9c3ea6bd05806410290297bbc1" - integrity sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ== - dependencies: - dargs "^7.0.0" - lodash "^4.17.15" - meow "^8.0.0" - split2 "^3.0.0" - through2 "^4.0.0" - -github-url-from-git@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/github-url-from-git/-/github-url-from-git-1.5.0.tgz#f985fedcc0a9aa579dc88d7aff068d55cc6251a0" - integrity sha1-+YX+3MCpqledyI16/waNVcxiUaA= - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^5.1.0, glob-parent@~5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== - dependencies: - is-glob "^4.0.1" - -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= - -glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-dirs@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" - integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= - dependencies: - ini "^1.3.4" - -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== - dependencies: - ini "^1.3.5" - -global-dirs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" - integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== - dependencies: - ini "2.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== - dependencies: - type-fest "^0.8.1" - -globals@^13.6.0: - version "13.7.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.7.0.tgz#aed3bcefd80ad3ec0f0be2cf0c895110c0591795" - integrity sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA== - dependencies: - type-fest "^0.20.2" - -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - -globalyzer@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" - integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== - -globby@^11.0.1: - version "11.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" - integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globby@^9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" - integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== - dependencies: - "@types/glob" "^7.1.1" - array-union "^1.0.2" - dir-glob "^2.2.2" - fast-glob "^2.2.6" - glob "^7.1.3" - ignore "^4.0.3" - pify "^4.0.1" - slash "^2.0.0" - -globrex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" - integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== - -got@^10.6.0: - version "10.7.0" - resolved "https://registry.yarnpkg.com/got/-/got-10.7.0.tgz#62889dbcd6cca32cd6a154cc2d0c6895121d091f" - integrity sha512-aWTDeNw9g+XqEZNcTjMMZSy7B7yE9toWOFYip7ofFTLleJhvZwUxxTxkTpKvF+p1SAA4VHmuEy7PiHTHyq8tJg== - dependencies: - "@sindresorhus/is" "^2.0.0" - "@szmarczak/http-timer" "^4.0.0" - "@types/cacheable-request" "^6.0.1" - cacheable-lookup "^2.0.0" - cacheable-request "^7.0.1" - decompress-response "^5.0.0" - duplexer3 "^0.1.4" - get-stream "^5.0.0" - lowercase-keys "^2.0.0" - mimic-response "^2.1.0" - p-cancelable "^2.0.0" - p-event "^4.0.0" - responselike "^2.0.0" - to-readable-stream "^2.0.0" - type-fest "^0.10.0" - -got@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - -graceful-fs@^4.2.0: - version "4.2.6" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" - integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== - -gzip-size@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" - integrity sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA= - dependencies: - duplexer "^0.1.1" - -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -hard-rejection@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" - integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-bigints@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.0, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== - -has@^1.0.0, has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hex-color-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" - integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== - -hosted-git-info@^3.0.6, hosted-git-info@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.7.tgz#a30727385ea85acfcee94e0aad9e368c792e036c" - integrity sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ== - dependencies: - lru-cache "^6.0.0" - -hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= - -hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= - -html-comment-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" - integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -htmlparser2@^3.9.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" - integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== - dependencies: - domelementtype "^1.3.1" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.1.1" - -htmlparser2@~3.8.1: - version "3.8.3" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068" - integrity sha1-mWwosZFRaovoZQGn15dX5ccMEGg= - dependencies: - domelementtype "1" - domhandler "2.3" - domutils "1.5" - entities "1.0" - readable-stream "1.1" - -http-cache-semantics@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -husky@5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/husky/-/husky-5.2.0.tgz#fc5e1c2300d34855d47de4753607d00943fc0802" - integrity sha512-AM8T/auHXRBxlrfPVLKP6jt49GCM2Zz47m8G3FOMsLmTv8Dj/fKVWE0Rh2d4Qrvmy131xEsdQnb3OXRib67PGg== - -ice-cap@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/ice-cap/-/ice-cap-0.0.4.tgz#8a6d31ab4cac8d4b56de4fa946df3352561b6e18" - integrity sha1-im0xq0ysjUtW3k+pRt8zUlYbbhg= - dependencies: - cheerio "0.20.0" - color-logger "0.0.3" - -iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= - -icss-utils@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - -ieee754@^1.1.13, ieee754@^1.1.4: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore-by-default@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-2.0.0.tgz#537092018540640459569fe7c8c7a408af581146" - integrity sha512-+mQSgMRiFD3L3AOxLYOCxjIq4OnAmo5CIuC+lj5ehCJcPtV++QacEV7FdpzvYxH6DaOySWzQU6RR0lPLy37ckA== - -ignore-walk@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - -ignore@^4.0.3, ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.0.5, ignore@^5.1.1, ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== - -import-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92" - integrity sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== - dependencies: - import-from "^3.0.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-fresh@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-fresh@^3.2.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.2.tgz#fc129c160c5d68235507f4331a6baad186bdbc3e" - integrity sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" - integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== - dependencies: - resolve-from "^5.0.0" - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= - -import-local@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" - integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -import-modules@^2.0.0, import-modules@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-modules/-/import-modules-2.1.0.tgz#abe7df297cb6c1f19b57246eb8b8bd9664b6d8c2" - integrity sha512-8HEWcnkbGpovH9yInoisxaSoIg9Brbul+Ju3Kqe2UsYDUBJD/iQjSgEj0zPcTDPKfPp2fs5xlv1i+JSye/m1/A== - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indent-string@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" - integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== - -ini@^1.3.4: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -ini@^1.3.5, ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -inquirer-autosubmit-prompt@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/inquirer-autosubmit-prompt/-/inquirer-autosubmit-prompt-0.2.0.tgz#a10f952af4f7bac9c43010e3e9e0891d7e8d15a1" - integrity sha512-mzNrusCk5L6kSzlN0Ioddn8yzrhYNLli+Sn2ZxMuLechMYAzakiFCIULxsxlQb5YKzthLGfrFACcWoAvM7p04Q== - dependencies: - chalk "^2.4.1" - inquirer "^6.2.1" - rxjs "^6.3.3" - -inquirer@^6.2.1: - version "6.5.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - -inquirer@^7.0.0, inquirer@^7.3.3: - version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.19" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.6.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - -interpret@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -invariant@^2.2.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -irregular-plurals@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-3.2.0.tgz#b19c490a0723798db51b235d7e39add44dab0822" - integrity sha512-YqTdPLfwP7YFN0SsD3QUVCkm9ZG2VzOXv3DOrw5G5mkMbVwptTwVcFv7/C0vOpBmgTxAeTG19XpUs1E522LW9Q== - -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - -is-absolute@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" - integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== - dependencies: - is-relative "^1.0.0" - is-windows "^1.0.1" - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-bigint@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" - integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" - integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== - dependencies: - call-bind "^1.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.4, is-callable@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" - integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== - -is-callable@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-color-stop@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" - integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= - dependencies: - css-color-names "^0.0.4" - hex-color-regex "^1.1.0" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^1.0.0" - -is-core-module@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.1.0.tgz#a4cc031d9b1aca63eecbd18a650e13cb4eeab946" - integrity sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA== - dependencies: - has "^1.0.3" - -is-core-module@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" - integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - -is-docker@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" - integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== - -is-error@^2.2.0, is-error@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-error/-/is-error-2.2.2.tgz#c10ade187b3c93510c5470a5567833ee25649843" - integrity sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-get-set-prop@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-get-set-prop/-/is-get-set-prop-1.0.0.tgz#2731877e4d78a6a69edcce6bb9d68b0779e76312" - integrity sha1-JzGHfk14pqae3M5rudaLB3nnYxI= - dependencies: - get-set-props "^0.1.0" - lowercase-keys "^1.0.0" - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-installed-globally@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== - dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" - -is-installed-globally@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" - integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== - dependencies: - global-dirs "^3.0.0" - is-path-inside "^3.0.2" - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-js-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-js-type/-/is-js-type-2.0.0.tgz#73617006d659b4eb4729bba747d28782df0f7e22" - integrity sha1-c2FwBtZZtOtHKbunR9KHgt8PfiI= - dependencies: - js-types "^1.0.0" - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= - -is-negated-glob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" - integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= - -is-negative-zero@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" - integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-npm@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" - integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== - -is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj-prop@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-obj-prop/-/is-obj-prop-1.0.0.tgz#b34de79c450b8d7c73ab2cdf67dc875adb85f80e" - integrity sha1-s03nnEULjXxzqyzfZ9yHWtuF+A4= - dependencies: - lowercase-keys "^1.0.0" - obj-props "^1.0.0" - -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-observable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" - integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== - dependencies: - symbol-observable "^1.1.0" - -is-path-cwd@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-inside@^3.0.1, is-path-inside@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== - -is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - -is-promise@^2.1.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" - integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== - -is-promise@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" - integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== - -is-proto-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-proto-prop/-/is-proto-prop-2.0.0.tgz#99ab2863462e44090fd083efd1929058f9d935e1" - integrity sha512-jl3NbQ/fGLv5Jhan4uX+Ge9ohnemqyblWVVCpAvtTQzNFvV2xhJq+esnkIbYQ9F1nITXoLfDDQLp7LBw/zzncg== - dependencies: - lowercase-keys "^1.0.0" - proto-props "^2.0.0" - -is-reference@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" - integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== - dependencies: - "@types/estree" "*" - -is-regex@^1.0.4, is-regex@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" - integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== - dependencies: - has-symbols "^1.0.1" - -is-regex@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" - integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== - dependencies: - call-bind "^1.0.2" - has-symbols "^1.0.1" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= - -is-relative@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" - integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== - dependencies: - is-unc-path "^1.0.0" - -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - -is-scoped@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-scoped/-/is-scoped-2.1.0.tgz#fef0713772658bdf5bee418608267ddae6d3566d" - integrity sha512-Cv4OpPTHAK9kHYzkzCrof3VJh7H/PrG2MBUMvvJebaaUMbqhm0YAtXnvh0I3Hnj2tMZWwrRROWLSgfJrKqWmlQ== - dependencies: - scoped-regex "^2.0.0" - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== - -is-svg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" - integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== - dependencies: - html-comment-regex "^1.1.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-text-path@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" - integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4= - dependencies: - text-extensions "^1.0.0" - -is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-unc-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" - integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== - dependencies: - unc-path-regex "^0.1.2" - -is-url-superb@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-url-superb/-/is-url-superb-4.0.0.tgz#b54d1d2499bb16792748ac967aa3ecb41a33a8c2" - integrity sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA== - -is-url@^1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" - integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== - -is-windows@^1.0.1, is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -is-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -issue-regex@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/issue-regex/-/issue-regex-3.1.0.tgz#0671f094d6449c5b712fac3c9562aecb727d709e" - integrity sha512-0RHjbtw9QXeSYnIEY5Yrp2QZrdtz21xBDV9C/GIlY2POmgoS6a7qjkYS5siRKXScnuAj5/SPv1C3YForNCHTJA== - -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jest-worker@^26.2.1: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -js-string-escape@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" - integrity sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8= - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - -js-types@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/js-types/-/js-types-1.0.0.tgz#d242e6494ed572ad3c92809fc8bed7f7687cbf03" - integrity sha1-0kLmSU7Vcq08koCfyL7X92h8vwM= - -js-yaml@^3.13.1: - version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" - integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^3.14.0: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdom@^7.0.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-7.2.2.tgz#40b402770c2bda23469096bee91ab675e3b1fc6e" - integrity sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4= - dependencies: - abab "^1.0.0" - acorn "^2.4.0" - acorn-globals "^1.0.4" - cssom ">= 0.3.0 < 0.4.0" - cssstyle ">= 0.2.29 < 0.3.0" - escodegen "^1.6.1" - nwmatcher ">= 1.3.7 < 2.0.0" - parse5 "^1.5.1" - request "^2.55.0" - sax "^1.1.4" - symbol-tree ">= 3.1.0 < 4.0.0" - tough-cookie "^2.2.0" - webidl-conversions "^2.0.0" - whatwg-url-compat "~0.6.5" - xml-name-validator ">= 2.0.1 < 3.0.0" - -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== - dependencies: - minimist "^1.2.5" - -json5@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - -keyv@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.3.tgz#4f3aa98de254803cafcd2896734108daa35e4254" - integrity sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA== - dependencies: - json-buffer "3.0.1" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= - optionalDependencies: - graceful-fs "^4.1.9" - -kleur@^4.1.3: - version "4.1.4" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d" - integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== - -latest-version@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== - dependencies: - package-json "^6.3.0" - -lcov-parse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-1.0.0.tgz#eb0d46b54111ebc561acb4c408ef9363bdc8f7e0" - integrity sha1-6w1GtUER68VhrLTECO+TY73I9+A= - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -line-column-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/line-column-path/-/line-column-path-2.0.0.tgz#439aff48ef80d74c475801a25b560d021acf1288" - integrity sha512-nz3A+vi4bElhwd62E9+Qk/f9BDYLSzD/4Hy1rir0I4GnMxSTezSymzANyph5N1PgRZ3sSbA+yR5hOuXxc71a0Q== - dependencies: - type-fest "^0.4.1" - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -lint-staged@10.5.4: - version "10.5.4" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.5.4.tgz#cd153b5f0987d2371fc1d2847a409a2fe705b665" - integrity sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg== - dependencies: - chalk "^4.1.0" - cli-truncate "^2.1.0" - commander "^6.2.0" - cosmiconfig "^7.0.0" - debug "^4.2.0" - dedent "^0.7.0" - enquirer "^2.3.6" - execa "^4.1.0" - listr2 "^3.2.2" - log-symbols "^4.0.0" - micromatch "^4.0.2" - normalize-path "^3.0.0" - please-upgrade-node "^3.2.0" - string-argv "0.3.1" - stringify-object "^3.3.0" - -listr-input@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/listr-input/-/listr-input-0.2.1.tgz#ce735c34530683580388fdf9462ecfebd3b66126" - integrity sha512-oa8iVG870qJq+OuuMK3DjGqFcwsK1SDu+kULp9kEq09TY231aideIZenr3lFOQdASpAr6asuyJBbX62/a3IIhg== - dependencies: - inquirer "^7.0.0" - inquirer-autosubmit-prompt "^0.2.0" - rxjs "^6.5.3" - through "^2.3.8" - -listr-silent-renderer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" - integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= - -listr-update-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" - integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== - dependencies: - chalk "^1.1.3" - cli-truncate "^0.2.1" - elegant-spinner "^1.0.1" - figures "^1.7.0" - indent-string "^3.0.0" - log-symbols "^1.0.2" - log-update "^2.3.0" - strip-ansi "^3.0.1" - -listr-verbose-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" - integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== - dependencies: - chalk "^2.4.1" - cli-cursor "^2.1.0" - date-fns "^1.27.2" - figures "^2.0.0" - -listr2@^3.2.2: - version "3.4.3" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.4.3.tgz#543bcf849d5ffc70602708b69d2daac73f751699" - integrity sha512-wZmkzNiuinOfwrGqAwTCcPw6aKQGTAMGXwG5xeU1WpDjJNeBA35jGBeWxR3OF+R6Yl5Y3dRG+3vE8t6PDcSNHA== - dependencies: - chalk "^4.1.0" - cli-truncate "^2.1.0" - figures "^3.2.0" - indent-string "^4.0.0" - log-update "^4.0.0" - p-map "^4.0.0" - rxjs "^6.6.6" - through "^2.3.8" - wrap-ansi "^7.0.0" - -listr@^0.14.3: - version "0.14.3" - resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" - integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== - dependencies: - "@samverschueren/stream-to-observable" "^0.3.0" - is-observable "^1.1.0" - is-promise "^2.1.0" - is-stream "^1.1.0" - listr-silent-renderer "^1.1.1" - listr-update-renderer "^0.5.0" - listr-verbose-renderer "^0.5.0" - p-map "^2.0.0" - rxjs "^6.3.3" - -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -load-json-file@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3" - integrity sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw== - dependencies: - graceful-fs "^4.1.15" - parse-json "^4.0.0" - pify "^4.0.1" - strip-bom "^3.0.0" - type-fest "^0.3.0" - -loader-utils@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.assignin@^4.0.9: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" - integrity sha1-uo31+4QesKPoBEIysOJjqNxqKKI= - -lodash.bind@^4.1.4: - version "4.2.1" - resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" - integrity sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU= - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - -lodash.defaults@^4.0.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= - -lodash.filter@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace" - integrity sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4= - -lodash.flatten@^4.2.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= - -lodash.foreach@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" - integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM= - -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= - -lodash.map@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" - integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash.merge@^4.4.0, lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.pick@^4.2.1: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" - integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= - -lodash.reduce@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b" - integrity sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs= - -lodash.reject@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415" - integrity sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU= - -lodash.some@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" - integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - -lodash.zip@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.zip/-/lodash.zip-4.2.0.tgz#ec6662e4896408ed4ab6c542a3990b72cc080020" - integrity sha1-7GZi5IlkCO1KtsVCo5kLcswIACA= - -lodash@^4.1.0, lodash@^4.15.0, lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4, lodash@^4.2.0: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== - -lodash@^4.13.1, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-driver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" - integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg== - -log-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" - integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= - dependencies: - chalk "^1.0.0" - -log-symbols@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" - integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== - dependencies: - chalk "^4.0.0" - -log-update@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" - integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= - dependencies: - ansi-escapes "^3.0.0" - cli-cursor "^2.0.0" - wrap-ansi "^3.0.1" - -log-update@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== - dependencies: - ansi-escapes "^4.3.0" - cli-cursor "^3.1.0" - slice-ansi "^4.0.0" - wrap-ansi "^6.2.0" - -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -magic-string@^0.25.7: - version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== - dependencies: - sourcemap-codec "^1.4.4" - -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.0, make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -map-age-cleaner@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= - -map-obj@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.1.0.tgz#b91221b542734b9f14256c0132c897c5d7256fd5" - integrity sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g== - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -marked@0.3.19: - version "0.3.19" - resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790" - integrity sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg== - -matcher@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca" - integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng== - dependencies: - escape-string-regexp "^4.0.0" - -maxmin@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/maxmin/-/maxmin-2.1.0.tgz#4d3b220903d95eee7eb7ac7fa864e72dc09a3166" - integrity sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY= - dependencies: - chalk "^1.0.0" - figures "^1.0.1" - gzip-size "^3.0.0" - pretty-bytes "^3.0.0" - -md5-hex@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-3.0.1.tgz#be3741b510591434b2784d79e556eefc2c9a8e5c" - integrity sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw== - dependencies: - blueimp-md5 "^2.10.0" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - -mem@^6.0.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/mem/-/mem-6.1.1.tgz#ea110c2ebc079eca3022e6b08c85a795e77f6318" - integrity sha512-Ci6bIfq/UgcxPTYa8dQQ5FY3BzKkT894bwXWXxC/zqs0XgMO2cT20CGkOqda7gZNkmK5VP4x89IGZ6K7hfbn3Q== - dependencies: - map-age-cleaner "^0.1.3" - mimic-fn "^3.0.0" - -mem@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-8.0.0.tgz#b5e4b6d2d241c6296da05436173b4d0c7ae1f9ac" - integrity sha512-qrcJOe6uD+EW8Wrci1Vdiua/15Xw3n/QnaNXE7varnB6InxSk7nu3/i5jfy3S6kWxr8WYJ6R1o0afMUtvorTsA== - dependencies: - map-age-cleaner "^0.1.3" - mimic-fn "^3.1.0" - -memory-fs@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290" - integrity sha1-8rslNovBIeORwlIN6Slpyu4KApA= - -meow@^8.0.0: - version "8.1.2" - resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" - integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== - dependencies: - "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.18.0" - yargs-parser "^20.2.3" - -meow@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.0.tgz#0fcaa267e35e4d58584b8205923df6021ddcc7ba" - integrity sha512-fNWkgM1UVMey2kf24yLiccxLihc5W+6zVus3/N0b+VfnJgxV99E9u04X6NAiKdg6ED7DAQBX5sy36NM0QJZkWA== - dependencies: - "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.18.0" - yargs-parser "^20.2.3" - -meow@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" - integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== - dependencies: - "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize "^1.2.0" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.18.0" - yargs-parser "^20.2.3" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.2.3, merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micro-spelling-correcter@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/micro-spelling-correcter/-/micro-spelling-correcter-1.1.1.tgz#805a06a26ccfcad8f3e5c6a1ac5ff29d4530166e" - integrity sha512-lkJ3Rj/mtjlRcHk6YyCbvZhyWTOzdBvTHsxMmZSk5jxN1YyVSQ+JETAom55mdzfcyDrY/49Z7UCW760BK30crg== - -microbundle@0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/microbundle/-/microbundle-0.13.0.tgz#e715a7492c6d2b42c292281f381e550dc0e014ee" - integrity sha512-d5glQP8nWoaZhgNF7pxmBpSI/zYMn0NfjH5tOjLudfgoceWiiq+5crwIHGqWKFDbaTcyMjD9HKowy3hNWJCHow== - dependencies: - "@babel/core" "^7.12.10" - "@babel/plugin-proposal-class-properties" "7.12.1" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.12.1" - "@babel/plugin-transform-flow-strip-types" "^7.12.10" - "@babel/plugin-transform-react-jsx" "^7.12.11" - "@babel/plugin-transform-regenerator" "^7.12.1" - "@babel/preset-env" "^7.12.11" - "@babel/preset-flow" "^7.12.1" - "@babel/preset-react" "^7.12.10" - "@rollup/plugin-alias" "^3.1.1" - "@rollup/plugin-babel" "^5.2.2" - "@rollup/plugin-commonjs" "^17.0.0" - "@rollup/plugin-json" "^4.1.0" - "@rollup/plugin-node-resolve" "^11.0.1" - asyncro "^3.0.0" - autoprefixer "^10.1.0" - babel-plugin-macros "^3.0.1" - babel-plugin-transform-async-to-promises "^0.8.15" - babel-plugin-transform-replace-expressions "^0.2.0" - brotli-size "^4.0.0" - builtin-modules "^3.1.0" - camelcase "^6.2.0" - escape-string-regexp "^4.0.0" - filesize "^6.1.0" - gzip-size "^6.0.0" - kleur "^4.1.3" - lodash.merge "^4.6.2" - postcss "^8.2.1" - pretty-bytes "^5.4.1" - rollup "^2.35.1" - rollup-plugin-bundle-size "^1.0.3" - rollup-plugin-postcss "^4.0.0" - rollup-plugin-terser "^7.0.2" - rollup-plugin-typescript2 "^0.29.0" - sade "^1.7.4" - tiny-glob "^0.2.8" - tslib "^2.0.3" - typescript "^4.1.3" - -micromatch@^3.1.10: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.44.0: - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== - -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== - dependencies: - mime-db "1.44.0" - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-fn@^3.0.0, mimic-fn@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" - integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== - -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -mimic-response@^2.0.0, mimic-response@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" - integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist-options@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" - integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - kind-of "^6.0.3" - -minimist@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@~0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mri@^1.1.0: - version "1.1.6" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.6.tgz#49952e1044db21dbf90f6cd92bc9c9a777d415a6" - integrity sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multimap@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multimap/-/multimap-1.1.0.tgz#5263febc085a1791c33b59bb3afc6a76a2a10ca8" - integrity sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw== - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -nanoid@^3.1.20: - version "3.1.22" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.22.tgz#b35f8fb7d151990a8aebd5aa5015c03cf726f844" - integrity sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -new-github-release-url@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/new-github-release-url/-/new-github-release-url-1.0.0.tgz#493847e6fecce39c247e9d89929be773d2e7f777" - integrity sha512-dle7yf655IMjyFUqn6Nxkb18r4AOAkzRcgcZv6WZ0IqrOH4QCEZ8Sm6I7XX21zvHdBeeMeTkhR9qT2Z0EJDx6A== - dependencies: - type-fest "^0.4.1" - -"node-libs-browser@^1.0.0 || ^2.0.0": - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - -node-releases@^1.1.66: - version "1.1.67" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.67.tgz#28ebfcccd0baa6aad8e8d4d8fe4cbc49ae239c12" - integrity sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg== - -node-releases@^1.1.70: - version "1.1.70" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.70.tgz#66e0ed0273aa65666d7fe78febe7634875426a08" - integrity sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw== - -normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-package-data@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.0.tgz#1f8a7c423b3d2e85eb36985eaf81de381d01301a" - integrity sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw== - dependencies: - hosted-git-info "^3.0.6" - resolve "^1.17.0" - semver "^7.3.2" - validate-npm-package-license "^3.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - -normalize-url@^4.1.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" - integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== - -np@7.4.0: - version "7.4.0" - resolved "https://registry.yarnpkg.com/np/-/np-7.4.0.tgz#de33e07159c8d4065f42c280a7605deb88fcaf6a" - integrity sha512-woJn5Bodg0/VDyUWx5EHIsi+8QlKSows0AVRBt47PG++cJAVE6jQFXcXDFDBMqY5PueFc4w0SA3gxqPklk6oGg== - dependencies: - "@samverschueren/stream-to-observable" "^0.3.1" - any-observable "^0.5.1" - async-exit-hook "^2.0.1" - chalk "^4.1.0" - cosmiconfig "^7.0.0" - del "^6.0.0" - escape-goat "^3.0.0" - escape-string-regexp "^4.0.0" - execa "^5.0.0" - github-url-from-git "^1.5.0" - has-yarn "^2.1.0" - hosted-git-info "^3.0.7" - ignore-walk "^3.0.3" - import-local "^3.0.2" - inquirer "^7.3.3" - is-installed-globally "^0.3.2" - is-interactive "^1.0.0" - is-scoped "^2.1.0" - issue-regex "^3.1.0" - listr "^0.14.3" - listr-input "^0.2.1" - log-symbols "^4.0.0" - meow "^8.1.0" - minimatch "^3.0.4" - new-github-release-url "^1.0.0" - npm-name "^6.0.1" - onetime "^5.1.2" - open "^7.3.0" - ow "^0.21.0" - p-memoize "^4.0.1" - p-timeout "^4.1.0" - pkg-dir "^5.0.0" - read-pkg-up "^7.0.1" - rxjs "^6.6.3" - semver "^7.3.4" - split "^1.0.1" - symbol-observable "^3.0.0" - terminal-link "^2.1.1" - update-notifier "^5.0.1" - -npm-name@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/npm-name/-/npm-name-6.0.1.tgz#73e05b4cb6332766a6727b2635e247bb4107255b" - integrity sha512-fhKRvUAxaYzMEUZim4mXWyfFbVS+M1CbrCLdAo3txWzrctxKka/h+KaBW0O9Cz5uOM00Nldn2JLWhuwnyW3SUw== - dependencies: - got "^10.6.0" - is-scoped "^2.1.0" - is-url-superb "^4.0.0" - lodash.zip "^4.2.0" - org-regex "^1.0.0" - p-map "^3.0.0" - registry-auth-token "^4.0.0" - registry-url "^5.1.0" - validate-npm-package-name "^3.0.0" - -npm-run-path@^4.0.0, npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nth-check@^1.0.2, nth-check@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -"nwmatcher@>= 1.3.7 < 2.0.0": - version "1.4.4" - resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e" - integrity sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -obj-props@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/obj-props/-/obj-props-1.3.0.tgz#8884ab21c8d8496c4a7f696c78bf82289c51680b" - integrity sha512-k2Xkjx5wn6eC3537SWAXHzB6lkI81kS+icMKMkh4nG3w7shWG6MaWOBrNvhWVOszrtL5uxdfymQQfPUxwY+2eg== - -object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" - integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== - -object-inspect@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" - integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== - -object-is@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.3.tgz#2e3b9e65560137455ee3bd62aec4d90a2ea1cc81" - integrity sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - -object-keys@^1.0.0, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.getownpropertydescriptors@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" - integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -object.values@^1.1.0, object.values@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.3.tgz#eaa8b1e17589f02f698db093f7c62ee1699742ee" - integrity sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - has "^1.0.3" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open-editor@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/open-editor/-/open-editor-3.0.0.tgz#2c9bfa013c0518601f0c321d89b68ff2bb6851ab" - integrity sha512-00Nqoa7k8F4AK1oSFMIIhYku+essXiCljR2L2kV+bl5j90ANgbQgzEeTdZu23LsikDoz+KfhyRHpGLAwpQhugA== - dependencies: - env-editor "^0.4.1" - execa "^5.0.0" - line-column-path "^2.0.0" - open "^7.3.0" - -open@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/open/-/open-7.3.0.tgz#45461fdee46444f3645b6e14eb3ca94b82e1be69" - integrity sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -ora@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.2.0.tgz#de10bfd2d15514384af45f3fa9d9b1aaf344fda1" - integrity sha512-+wG2v8TUU8EgzPHun1k/n45pXquQ9fHnbXVetl9rRgO6kjZszGGbraF3XPTIdgeA+s1lbRjSEftAnyT0w8ZMvQ== - dependencies: - bl "^4.0.3" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - log-symbols "^4.0.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -org-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/org-regex/-/org-regex-1.0.0.tgz#67ebb9ab3cb124fea5841289d60b59434f041a59" - integrity sha512-7bqkxkEJwzJQUAlyYniqEZ3Ilzjh0yoa62c7gL6Ijxj5bEpPL+8IE1Z0PFj0ywjjXQcdrwR51g9MIcLezR0hKQ== - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -ow@^0.21.0: - version "0.21.0" - resolved "https://registry.yarnpkg.com/ow/-/ow-0.21.0.tgz#c2df2ad78d1bfc2ea9cdca311b7a6275258df621" - integrity sha512-dlsoDe39g7mhdsdrC1R/YwjT7yjVqE3svWwOlMGvN690waBkgEZBmKBdkmKvSt5/wZ6E0Jn/nIesPqMZOpPKqw== - dependencies: - "@sindresorhus/is" "^4.0.0" - callsites "^3.1.0" - dot-prop "^6.0.1" - lodash.isequal "^4.5.0" - type-fest "^0.20.2" - vali-date "^1.0.0" - -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -p-cancelable@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" - integrity sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg== - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - -p-event@^4.0.0, p-event@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5" - integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== - dependencies: - p-timeout "^3.1.0" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== - dependencies: - aggregate-error "^3.0.0" - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-memoize@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/p-memoize/-/p-memoize-4.0.1.tgz#6f4231857fec10de2504611fe820c808fa8c5f8b" - integrity sha512-km0sP12uE0dOZ5qP+s7kGVf07QngxyG0gS8sYFvFWhqlgzOsSy+m71aUejf/0akxj5W7gE//2G74qTv6b4iMog== - dependencies: - mem "^6.0.1" - mimic-fn "^3.0.0" - -p-queue@^6.6.2: - version "6.6.2" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" - integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== - dependencies: - eventemitter3 "^4.0.4" - p-timeout "^3.2.0" - -p-reduce@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" - integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== - -p-timeout@^3.1.0, p-timeout@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== - dependencies: - p-finally "^1.0.0" - -p-timeout@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-4.1.0.tgz#788253c0452ab0ffecf18a62dff94ff1bd09ca0a" - integrity sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw== - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -package-json@^6.3.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" - integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== - dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" - -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" - integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse-ms@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d" - integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== - -parse5@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" - integrity sha1-m387DeMr543CQBsXVzzK8Pb1nZQ= - -parse5@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" - integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA== - dependencies: - "@types/node" "*" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= - dependencies: - pify "^2.0.0" - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbkdf2@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" - integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" - integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== - -pinst@2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/pinst/-/pinst-2.1.6.tgz#8d968b8ec1dac5dddcfc976c735592dbec58b42c" - integrity sha512-B4dYmf6nEXg1NpDSB+orYWvKa5Kfmz5KzWC29U59dpVM4S/+xp0ak/JMEsw04UQTNNKps7klu0BUalr343Gt9g== - dependencies: - fromentries "^1.3.2" - -pirates@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" - -pkg-conf@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-3.1.0.tgz#d9f9c75ea1bae0e77938cde045b276dac7cc69ae" - integrity sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ== - dependencies: - find-up "^3.0.0" - load-json-file "^5.2.0" - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.1.0, pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pkg-dir@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" - integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== - dependencies: - find-up "^5.0.0" - -please-upgrade-node@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" - integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== - dependencies: - semver-compare "^1.0.0" - -plur@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/plur/-/plur-4.0.0.tgz#729aedb08f452645fe8c58ef115bf16b0a73ef84" - integrity sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg== - dependencies: - irregular-plurals "^3.2.0" - -pluralize@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" - integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-calc@^7.0.1: - version "7.0.5" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" - integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== - dependencies: - postcss "^7.0.27" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" - -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== - dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" - -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" - -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" - -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== - dependencies: - postcss "^7.0.0" - -postcss-load-config@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.0.1.tgz#d214bf9cfec1608ffaf0f4161b3ba20664ab64b9" - integrity sha512-/pDHe30UYZUD11IeG8GWx9lNtu1ToyTsZHnyy45B4Mrwr/Kb6NgYl7k753+05CJNKnjbwh4975amoPJ+TEjHNQ== - dependencies: - cosmiconfig "^7.0.0" - import-cwd "^3.0.0" - -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== - dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" - -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" - -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== - dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" - -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== - dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -postcss-modules-extract-imports@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" - integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== - -postcss-modules-local-by-default@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" - integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" - integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - dependencies: - icss-utils "^5.0.0" - -postcss-modules@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-4.0.0.tgz#2bc7f276ab88f3f1b0fadf6cbd7772d43b5f3b9b" - integrity sha512-ghS/ovDzDqARm4Zj6L2ntadjyQMoyJmi0JkLlYtH2QFLrvNlxH5OAVRPWPeKilB0pY7SbuhO173KOWkPAxRJcw== - dependencies: - generic-names "^2.0.1" - icss-replace-symbols "^1.1.0" - lodash.camelcase "^4.3.0" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.0" - postcss-modules-scope "^3.0.0" - postcss-modules-values "^4.0.0" - string-hash "^1.1.1" - -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== - dependencies: - postcss "^7.0.0" - -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== - dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== - dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== - dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== - dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-selector-parser@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== - dependencies: - dot-prop "^5.2.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" - integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== - dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - util-deprecate "^1.0.2" - -postcss-svgo@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" - integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== - dependencies: - is-svg "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== - dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== - -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.27: - version "7.0.35" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" - integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@^8.2.1: - version "8.2.8" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.8.tgz#0b90f9382efda424c4f0f69a2ead6f6830d08ece" - integrity sha512-1F0Xb2T21xET7oQV9eKuctbM9S7BC0fetoHCc4H13z0PT6haiRLP4T0ZY4XWh7iLP0usgqykT6p9B2RtOf4FPw== - dependencies: - colorette "^1.2.2" - nanoid "^3.1.20" - source-map "^0.6.1" - -power-assert-context-formatter@^1.0.7: - version "1.2.0" - resolved "https://registry.yarnpkg.com/power-assert-context-formatter/-/power-assert-context-formatter-1.2.0.tgz#8fbe72692288ec5a7203cdf215c8b838a6061d2a" - integrity sha512-HLNEW8Bin+BFCpk/zbyKwkEu9W8/zThIStxGo7weYcFkKgMuGCHUJhvJeBGXDZf0Qm2xis4pbnnciGZiX0EpSg== - dependencies: - core-js "^2.0.0" - power-assert-context-traversal "^1.2.0" - -power-assert-context-reducer-ast@^1.0.7: - version "1.2.0" - resolved "https://registry.yarnpkg.com/power-assert-context-reducer-ast/-/power-assert-context-reducer-ast-1.2.0.tgz#c7ca1c9e39a6fb717f7ac5fe9e76e192bf525df3" - integrity sha512-EgOxmZ/Lb7tw4EwSKX7ZnfC0P/qRZFEG28dx/690qvhmOJ6hgThYFm5TUWANDLK5NiNKlPBi5WekVGd2+5wPrw== - dependencies: - acorn "^5.0.0" - acorn-es7-plugin "^1.0.12" - core-js "^2.0.0" - espurify "^1.6.0" - estraverse "^4.2.0" - -power-assert-context-traversal@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/power-assert-context-traversal/-/power-assert-context-traversal-1.2.0.tgz#f6e71454baf640de5c1c9c270349f5c9ab0b2e94" - integrity sha512-NFoHU6g2umNajiP2l4qb0BRWD773Aw9uWdWYH9EQsVwIZnog5bd2YYLFCVvaxWpwNzWeEfZIon2xtyc63026pQ== - dependencies: - core-js "^2.0.0" - estraverse "^4.1.0" - -power-assert-formatter@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/power-assert-formatter/-/power-assert-formatter-1.4.1.tgz#5dc125ed50a3dfb1dda26c19347f3bf58ec2884a" - integrity sha1-XcEl7VCj37HdomwZNH879Y7CiEo= - dependencies: - core-js "^2.0.0" - power-assert-context-formatter "^1.0.7" - power-assert-context-reducer-ast "^1.0.7" - power-assert-renderer-assertion "^1.0.7" - power-assert-renderer-comparison "^1.0.7" - power-assert-renderer-diagram "^1.0.7" - power-assert-renderer-file "^1.0.7" - -power-assert-renderer-assertion@^1.0.7: - version "1.2.0" - resolved "https://registry.yarnpkg.com/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.2.0.tgz#3db6ffcda106b37bc1e06432ad0d748a682b147a" - integrity sha512-3F7Q1ZLmV2ZCQv7aV7NJLNK9G7QsostrhOU7U0RhEQS/0vhEqrRg2jEJl1jtUL4ZyL2dXUlaaqrmPv5r9kRvIg== - dependencies: - power-assert-renderer-base "^1.1.1" - power-assert-util-string-width "^1.2.0" - -power-assert-renderer-base@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/power-assert-renderer-base/-/power-assert-renderer-base-1.1.1.tgz#96a650c6fd05ee1bc1f66b54ad61442c8b3f63eb" - integrity sha1-lqZQxv0F7hvB9mtUrWFELIs/Y+s= - -power-assert-renderer-comparison@^1.0.7: - version "1.2.0" - resolved "https://registry.yarnpkg.com/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.2.0.tgz#e4f88113225a69be8aa586ead05aef99462c0495" - integrity sha512-7c3RKPDBKK4E3JqdPtYRE9cM8AyX4LC4yfTvvTYyx8zSqmT5kJnXwzR0yWQLOavACllZfwrAGQzFiXPc5sWa+g== - dependencies: - core-js "^2.0.0" - diff-match-patch "^1.0.0" - power-assert-renderer-base "^1.1.1" - stringifier "^1.3.0" - type-name "^2.0.1" - -power-assert-renderer-diagram@^1.0.7: - version "1.2.0" - resolved "https://registry.yarnpkg.com/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.2.0.tgz#37f66e8542e5677c5b58e6d72b01c0d9a30e2219" - integrity sha512-JZ6PC+DJPQqfU6dwSmpcoD7gNnb/5U77bU5KgNwPPa+i1Pxiz6UuDeM3EUBlhZ1HvH9tMjI60anqVyi5l2oNdg== - dependencies: - core-js "^2.0.0" - power-assert-renderer-base "^1.1.1" - power-assert-util-string-width "^1.2.0" - stringifier "^1.3.0" - -power-assert-renderer-file@^1.0.7: - version "1.2.0" - resolved "https://registry.yarnpkg.com/power-assert-renderer-file/-/power-assert-renderer-file-1.2.0.tgz#3f4bebd9e1455d75cf2ac541e7bb515a87d4ce4b" - integrity sha512-/oaVrRbeOtGoyyd7e4IdLP/jIIUFJdqJtsYzP9/88R39CMnfF/S/rUc8ZQalENfUfQ/wQHu+XZYRMaCEZmEesg== - dependencies: - power-assert-renderer-base "^1.1.1" - -power-assert-util-string-width@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/power-assert-util-string-width/-/power-assert-util-string-width-1.2.0.tgz#6e06d5e3581bb876c5d377c53109fffa95bd91a0" - integrity sha512-lX90G0igAW0iyORTILZ/QjZWsa1MZ6VVY3L0K86e2eKun3S4LKPH4xZIl8fdeMYLfOjkaszbNSzf1uugLeAm2A== - dependencies: - eastasianwidth "^0.2.0" - -power-assert@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/power-assert/-/power-assert-1.6.1.tgz#b28cbc02ae808afd1431d0cd5093a39ac5a5b1fe" - integrity sha512-VWkkZV6Y+W8qLX/PtJu2Ur2jDPIs0a5vbP0TpKeybNcIXmT4vcKoVkyTp5lnQvTpY/DxacAZ4RZisHRHLJcAZQ== - dependencies: - define-properties "^1.1.2" - empower "^1.3.1" - power-assert-formatter "^1.4.1" - universal-deep-strict-equal "^1.2.1" - xtend "^4.0.0" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" - integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== - -pretty-bytes@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-3.0.1.tgz#27d0008d778063a0b4811bb35c79f1bd5d5fbccf" - integrity sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8= - dependencies: - number-is-nan "^1.0.0" - -pretty-bytes@^5.4.1: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - -pretty-ms@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-7.0.1.tgz#7d903eaab281f7d8e03c66f867e239dc32fb73e8" - integrity sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q== - dependencies: - parse-ms "^2.1.0" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -promise.series@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/promise.series/-/promise.series-0.2.0.tgz#2cc7ebe959fc3a6619c04ab4dbdc9e452d864bbd" - integrity sha1-LMfr6Vn8OmYZwEq029yeRS2GS70= - -proto-props@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/proto-props/-/proto-props-2.0.0.tgz#8ac6e6dec658545815c623a3bc81580deda9a181" - integrity sha512-2yma2tog9VaRZY2mn3Wq51uiSW4NcPYT1cQdBagwyrznrilKSZwIZ0UG3ZPL/mx+axEns0hE35T5ufOYZXEnBQ== - -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -pupa@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" - integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== - dependencies: - escape-goat "^2.0.0" - -q@^1.1.2, q@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -quick-lru@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" - integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -rc@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -readable-stream@1.1: - version "1.1.13" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" - integrity sha1-9u73ZPUUyJ4rniMUanW6EGdW0j4= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@^2.0.2, readable-stream@^2.3.3, readable-stream@^2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== - dependencies: - picomatch "^2.2.1" - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== - dependencies: - regenerate "^1.4.0" - -regenerate@^1.4.0: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@0.13.7, regenerator-runtime@^0.13.4: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== - dependencies: - "@babel/runtime" "^7.8.4" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp-tree@^0.1.22, regexp-tree@~0.1.1: - version "0.1.23" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.23.tgz#8a8ce1cc5e971acef62213a7ecdb1f6e18a1f1b2" - integrity sha512-+7HWfb4Bvu8Rs2eQTUIpX9I/PlQkYOuTNbRpKLJlQpSgwSkzFYh+pUj0gtvglnOZLKB6YgnIgRuJ2/IlpL48qw== - -regexp.prototype.flags@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -regexpp@^3.0.0, regexpp@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== - -regexpu-core@^4.7.1: - version "4.7.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" - integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - -registry-auth-token@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" - integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== - dependencies: - rc "^1.2.8" - -registry-url@^5.0.0, registry-url@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== - dependencies: - rc "^1.2.8" - -regjsgen@^0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== - -regjsparser@^0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" - integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== - dependencies: - jsesc "~0.5.0" - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -repeating@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-1.1.3.tgz#3d4114218877537494f97f77f9785fab810fa4ac" - integrity sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw= - dependencies: - is-finite "^1.0.0" - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - dependencies: - is-finite "^1.0.0" - -request@^2.55.0, request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -reserved-words@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.2.tgz#00a0940f98cd501aeaaac316411d9adc52b31ab1" - integrity sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE= - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@5.0.0, resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-global@1.0.0, resolve-global@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/resolve-global/-/resolve-global-1.0.0.tgz#a2a79df4af2ca3f49bf77ef9ddacd322dad19255" - integrity sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw== - dependencies: - global-dirs "^0.1.1" - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@1.17.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== - dependencies: - path-parse "^1.0.6" - -resolve@^1.10.0, resolve@^1.17.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" - integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== - dependencies: - is-core-module "^2.1.0" - path-parse "^1.0.6" - -resolve@^1.10.1, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.19.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= - dependencies: - lowercase-keys "^1.0.0" - -responselike@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.0.tgz#26391bcc3174f750f9a79eacc40a12a5c42d7723" - integrity sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw== - dependencies: - lowercase-keys "^2.0.0" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= - -rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= - -rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rollup-plugin-bundle-size@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/rollup-plugin-bundle-size/-/rollup-plugin-bundle-size-1.0.3.tgz#d245cd988486b4040279f9fd33f357f61673e90f" - integrity sha512-aWj0Pvzq90fqbI5vN1IvUrlf4utOqy+AERYxwWjegH1G8PzheMnrRIgQ5tkwKVtQMDP0bHZEACW/zLDF+XgfXQ== - dependencies: - chalk "^1.1.3" - maxmin "^2.1.0" - -rollup-plugin-postcss@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.0.tgz#2131fb6db0d5dce01a37235e4f6ad4523c681cea" - integrity sha512-OQzT+YspV01/6dxfyEw8lBO2px3hyL8Xn+k2QGctL7V/Yx2Z1QaMKdYVslP1mqv7RsKt6DROIlnbpmgJ3yxf6g== - dependencies: - chalk "^4.1.0" - concat-with-sourcemaps "^1.1.0" - cssnano "^4.1.10" - import-cwd "^3.0.0" - p-queue "^6.6.2" - pify "^5.0.0" - postcss-load-config "^3.0.0" - postcss-modules "^4.0.0" - promise.series "^0.2.0" - resolve "^1.19.0" - rollup-pluginutils "^2.8.2" - safe-identifier "^0.4.2" - style-inject "^0.3.0" - -rollup-plugin-terser@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" - integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== - dependencies: - "@babel/code-frame" "^7.10.4" - jest-worker "^26.2.1" - serialize-javascript "^4.0.0" - terser "^5.0.0" - -rollup-plugin-typescript2@^0.29.0: - version "0.29.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.29.0.tgz#b7ad83f5241dbc5bdf1e98d9c3fca005ffe39e1a" - integrity sha512-YytahBSZCIjn/elFugEGQR5qTsVhxhUwGZIsA9TmrSsC88qroGo65O5HZP/TTArH2dm0vUmYWhKchhwi2wL9bw== - dependencies: - "@rollup/pluginutils" "^3.1.0" - find-cache-dir "^3.3.1" - fs-extra "8.1.0" - resolve "1.17.0" - tslib "2.0.1" - -rollup-pluginutils@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@^2.35.1: - version "2.42.3" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.42.3.tgz#7935d7bc8687faa5743432e207d761aa31fe6fee" - integrity sha512-JjaT9WaUS5vmjy6xUrnPOskjkQg2cN4WSACNCwbOvBz8VDmbiKVdmTFUoMPRqTud0tsex8Xy9/boLbDW9HKD1w== - optionalDependencies: - fsevents "~2.3.1" - -run-async@^2.2.0, run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-parallel@^1.1.9: - version "1.1.10" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef" - integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw== - -rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.3, rxjs@^6.6.0, rxjs@^6.6.3: - version "6.6.3" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" - integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== - dependencies: - tslib "^1.9.0" - -rxjs@^6.6.6: - version "6.6.6" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.6.tgz#14d8417aa5a07c5e633995b525e1e3c0dec03b70" - integrity sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg== - dependencies: - tslib "^1.9.0" - -sade@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/sade/-/sade-1.7.4.tgz#ea681e0c65d248d2095c90578c03ca0bb1b54691" - integrity sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA== - dependencies: - mri "^1.1.0" - -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-identifier@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/safe-identifier/-/safe-identifier-0.4.2.tgz#cf6bfca31c2897c588092d1750d30ef501d59fcb" - integrity sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -safe-regex@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-2.1.1.tgz#f7128f00d056e2fe5c11e81a1324dd974aadced2" - integrity sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A== - dependencies: - regexp-tree "~0.1.1" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@^1.1.4, sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -scoped-regex@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/scoped-regex/-/scoped-regex-2.1.0.tgz#7b9be845d81fd9d21d1ec97c61a0b7cf86d2015f" - integrity sha512-g3WxHrqSWCZHGHlSrF51VXFdjImhwvH8ZO/pryFH56Qi0cDsZfylQa/t0jCzVQFNbNvM00HfHjkDPEuarKDSWQ== - -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= - -semver-diff@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" - integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== - dependencies: - semver "^6.3.0" - -"semver@2 || 3 || 4 || 5", semver@^5.6.0, semver@^5.7.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@7.3.4, semver@^7.3.4: - version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" - integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== - dependencies: - lru-cache "^6.0.0" - -semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.2.1: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== - -serialize-error@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18" - integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw== - dependencies: - type-fest "^0.13.1" - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -signal-exit@^3.0.2, signal-exit@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= - dependencies: - is-arrayish "^0.3.1" - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= - -slice-ansi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.16, source-map-support@^0.5.19, source-map-support@~0.5.19: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3, source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -sourcemap-codec@^1.4.4: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.6" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce" - integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -split2@^3.0.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" - integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== - dependencies: - readable-stream "^3.0.0" - -split@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" - integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== - dependencies: - through "2" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stack-utils@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" - integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== - dependencies: - escape-string-regexp "^2.0.0" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -string-argv@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" - integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== - -string-hash@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" - integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.1.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string.prototype.trimend@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" - integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" - integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -stringifier@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/stringifier/-/stringifier-1.4.0.tgz#d704581567f4526265d00ed8ecb354a02c3fec28" - integrity sha512-cNsMOqqrcbLcHTXEVmkw9y0fwDwkdgtZwlfyolzpQDoAE1xdNGhQhxBUfiDvvZIKl1hnUEgMv66nHwtMz3OjPw== - dependencies: - core-js "^2.0.0" - traverse "^0.6.6" - type-name "^2.0.1" - -stringify-object@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -style-inject@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/style-inject/-/style-inject-0.3.0.tgz#d21c477affec91811cc82355832a700d22bf8dd3" - integrity sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw== - -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -supertap@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supertap/-/supertap-2.0.0.tgz#8b587d6e14b8e885fa5183a9c45abf429feb9f7f" - integrity sha512-jRzcXlCeDYvKoZGA5oRhYyR3jUIYu0enkSxtmAgHRlD7HwrovTpH4bDSi0py9FtuA8si9cW/fKommJHuaoDHJA== - dependencies: - arrify "^2.0.1" - indent-string "^4.0.0" - js-yaml "^3.14.0" - serialize-error "^7.0.1" - strip-ansi "^6.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" - integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -svgo@^1.0.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -symbol-observable@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== - -symbol-observable@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-3.0.0.tgz#eea8f6478c651018e059044268375c408c15c533" - integrity sha512-6tDOXSHiVjuCaasQSWTmHUWn4PuG7qa3+1WT031yTc/swT7+rLiw3GOrFxaH1E3lLP09dH3bVuVDf2gK5rxG3Q== - -"symbol-tree@>= 3.1.0 < 4.0.0": - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -table@^6.0.4: - version "6.0.7" - resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" - integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== - dependencies: - ajv "^7.0.2" - lodash "^4.17.20" - slice-ansi "^4.0.0" - string-width "^4.2.0" - -taffydb@2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.7.2.tgz#7bf8106a5c1a48251b3e3bc0a0e1732489fd0dc8" - integrity sha1-e/gQalwaSCUbPjvAoOFzJIn9Dcg= - -taffydb@2.7.3: - version "2.7.3" - resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.7.3.tgz#2ad37169629498fca5bc84243096d3cde0ec3a34" - integrity sha1-KtNxaWKUmPylvIQkMJbTzeDsOjQ= - -tapable@^0.1.8: - version "0.1.10" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4" - integrity sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q= - -temp-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" - integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== - -term-size@^2.1.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" - integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== - -terminal-link@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -terser@^5.0.0: - version "5.6.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.6.1.tgz#a48eeac5300c0a09b36854bf90d9c26fb201973c" - integrity sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw== - dependencies: - commander "^2.20.0" - source-map "~0.7.2" - source-map-support "~0.5.19" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-extensions@^1.0.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" - integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -through2@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" - integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== - dependencies: - readable-stream "3" - -through@2, "through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -time-zone@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/time-zone/-/time-zone-1.0.0.tgz#99c5bf55958966af6d06d83bdf3800dc82faec5d" - integrity sha1-mcW/VZWJZq9tBtg73zgA3IL67F0= - -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - -tiny-glob@^0.2.8: - version "0.2.8" - resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.8.tgz#b2792c396cc62db891ffa161fe8b33e76123e531" - integrity sha512-vkQP7qOslq63XRX9kMswlby99kyO5OvKptw7AMwBVMjXEI7Tb61eoI5DydyEMOseyGS5anDN1VPoVxEvH01q8w== - dependencies: - globalyzer "0.1.0" - globrex "^0.1.2" - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -to-absolute-glob@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" - integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= - dependencies: - is-absolute "^1.0.0" - is-negated-glob "^1.0.0" - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - -to-readable-stream@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-2.1.0.tgz#82880316121bea662cdc226adb30addb50cb06e8" - integrity sha512-o3Qa6DGg1CEXshSdvWNX2sN4QHqg03SPq7U6jPXRahlQdl5dK8oXjkU/2/sGrnOZKeGV1zLSO8qPwyKklPPE7w== - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -tough-cookie@^2.2.0, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tr46@~0.0.1: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= - -traverse@^0.6.6: - version "0.6.6" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" - integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc= - -trim-newlines@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30" - integrity sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA== - -trim-off-newlines@^1.0.0, trim-off-newlines@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" - integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= - -tsconfig-paths@^3.9.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" - integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.0" - strip-bom "^3.0.0" - -tslib@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e" - integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ== - -tslib@^1.8.1, tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" - integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== - -tsutils@^3.17.1: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-fest@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.10.0.tgz#7f06b2b9fbfc581068d1341ffabd0349ceafc642" - integrity sha512-EUV9jo4sffrwlg8s0zDhP0T2WD3pru5Xi0+HTE3zTUmBaZNhfkite9PdSJwdXLwPVW0jnAHT56pZHIOYckPEiw== - -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== - -type-fest@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" - integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== - -type-fest@^0.18.0: - version "0.18.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" - integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" - integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== - -type-fest@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" - integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-name@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/type-name/-/type-name-2.0.2.tgz#efe7d4123d8ac52afff7f40c7e4dec5266008fb4" - integrity sha1-7+fUEj2KxSr/9/QMfk3sUmYAj7Q= - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typescript@^4.1.3, typescript@^4.1.5: - version "4.2.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.3.tgz#39062d8019912d43726298f09493d598048c1ce3" - integrity sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw== - -unbox-primitive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.0.tgz#eeacbc4affa28e9b3d36b5eaeccc50b3251b1d3f" - integrity sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.0" - has-symbols "^1.0.0" - which-boxed-primitive "^1.0.1" - -unc-path-regex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" - integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= - -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== - -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - -universal-deep-strict-equal@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/universal-deep-strict-equal/-/universal-deep-strict-equal-1.2.2.tgz#0da4ac2f73cff7924c81fa4de018ca562ca2b0a7" - integrity sha1-DaSsL3PP95JMgfpN4BjKViyisKc= - dependencies: - array-filter "^1.0.0" - indexof "0.0.1" - object-keys "^1.0.0" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -update-notifier@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.0.1.tgz#1f92d45fb1f70b9e33880a72dd262bc12d22c20d" - integrity sha512-BuVpRdlwxeIOvmc32AGYvO1KVdPlsmqSh8KDDBxS6kDE5VR7R8OMP1d8MdhaVBvxl4H3551k9akXr0Y1iIB2Wg== - dependencies: - boxen "^4.2.0" - chalk "^4.1.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.3.2" - is-npm "^5.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.1.0" - pupa "^2.1.1" - semver "^7.3.2" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" - -update-notifier@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" - integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== - dependencies: - boxen "^5.0.0" - chalk "^4.1.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.4.0" - is-npm "^5.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.1.0" - pupa "^2.1.1" - semver "^7.3.4" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" - -uri-js@^4.2.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" - integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= - dependencies: - prepend-http "^2.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -v8-to-istanbul@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz#5b95cef45c0f83217ec79f8fc7ee1c8b486aee07" - integrity sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -vali-date@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6" - integrity sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY= - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -validate-npm-package-name@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= - dependencies: - builtins "^1.0.3" - -vendors@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" - integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" - -webidl-conversions@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-2.0.1.tgz#3bf8258f7d318c7443c36f2e169402a1a6703506" - integrity sha1-O/glj30xjHRDw28uFpQCoaZwNQY= - -well-known-symbols@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/well-known-symbols/-/well-known-symbols-2.0.0.tgz#e9c7c07dbd132b7b84212c8174391ec1f9871ba5" - integrity sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q== - -whatwg-url-compat@~0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz#00898111af689bb097541cd5a45ca6c8798445bf" - integrity sha1-AImBEa9om7CXVBzVpFymyHmERb8= - dependencies: - tr46 "~0.0.1" - -which-boxed-primitive@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - -word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrap-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" - integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -xdg-basedir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" - integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== - -"xml-name-validator@>= 2.0.1 < 3.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" - integrity sha1-TYuPHszTQZqjYgYb7O9RXh5VljU= - -xo@0.38.2: - version "0.38.2" - resolved "https://registry.yarnpkg.com/xo/-/xo-0.38.2.tgz#a9e44f85e0655dad64bf08d177c096dd35c0008b" - integrity sha512-bGDGXgyPQyiVYIiqrkbFm4S1IIwlKDrNxgWnz9xWrdT4jdbfDU9fHkW6Mwab7jGms7ymoul+aRZVa3uMhcQlTw== - dependencies: - "@typescript-eslint/eslint-plugin" "^4.15.1" - "@typescript-eslint/parser" "^4.15.1" - arrify "^2.0.1" - cosmiconfig "^7.0.0" - debug "^4.3.1" - eslint "^7.20.0" - eslint-config-prettier "^7.2.0" - eslint-config-xo "^0.35.0" - eslint-config-xo-typescript "^0.38.0" - eslint-formatter-pretty "^4.0.0" - eslint-import-resolver-webpack "^0.13.0" - eslint-plugin-ava "^11.0.0" - eslint-plugin-eslint-comments "^3.2.0" - eslint-plugin-import "^2.22.1" - eslint-plugin-no-use-extend-native "^0.5.0" - eslint-plugin-node "^11.1.0" - eslint-plugin-prettier "^3.3.1" - eslint-plugin-promise "^4.3.1" - eslint-plugin-unicorn "^28.0.2" - find-cache-dir "^3.3.1" - find-up "^5.0.0" - fs-extra "^9.1.0" - get-stdin "^8.0.0" - globby "^9.2.0" - has-flag "^4.0.0" - imurmurhash "^0.1.4" - is-path-inside "^3.0.2" - json-stable-stringify-without-jsonify "^1.0.1" - json5 "^2.2.0" - lodash "^4.17.20" - meow "^9.0.0" - micromatch "^4.0.2" - open-editor "^3.0.0" - p-reduce "^2.1.0" - path-exists "^4.0.0" - prettier "^2.2.1" - resolve-cwd "^3.0.0" - resolve-from "^5.0.0" - semver "^7.3.4" - slash "^3.0.0" - to-absolute-glob "^2.0.2" - typescript "^4.1.5" - update-notifier "^5.1.0" - -xtend@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" - integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" - integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== - -yargs-parser@^20.0.0: - version "20.2.7" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" - integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== - -yargs-parser@^20.2.2, yargs-parser@^20.2.3: - version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - -yargs@^16.0.0, yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==